@descryy/runtime-browser 0.5.1 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser-action-collector.d.ts +11 -3
- package/dist/browser-action-collector.d.ts.map +1 -1
- package/dist/browser-action-collector.js +102 -11
- package/dist/browser-action-collector.js.map +1 -1
- package/dist/browser-console-collector.d.ts +2 -0
- package/dist/browser-console-collector.d.ts.map +1 -1
- package/dist/browser-console-collector.js +60 -6
- package/dist/browser-console-collector.js.map +1 -1
- package/dist/browser-network-collector.d.ts +31 -1
- package/dist/browser-network-collector.d.ts.map +1 -1
- package/dist/browser-network-collector.js +231 -11
- package/dist/browser-network-collector.js.map +1 -1
- package/dist/browser-recording-collector.d.ts +8 -1
- package/dist/browser-recording-collector.d.ts.map +1 -1
- package/dist/browser-recording-collector.js +141 -17
- package/dist/browser-recording-collector.js.map +1 -1
- package/dist/browser-session.d.ts +131 -5
- package/dist/browser-session.d.ts.map +1 -1
- package/dist/browser-session.js +547 -95
- package/dist/browser-session.js.map +1 -1
- package/dist/dom-evidence.d.ts +6 -0
- package/dist/dom-evidence.d.ts.map +1 -1
- package/dist/dom-evidence.js +40 -11
- package/dist/dom-evidence.js.map +1 -1
- package/dist/frontend-initiator-capture.d.ts +5 -1
- package/dist/frontend-initiator-capture.d.ts.map +1 -1
- package/dist/frontend-initiator-capture.js +72 -10
- package/dist/frontend-initiator-capture.js.map +1 -1
- package/dist/index.d.ts +9 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/network-correlation.d.ts +2 -11
- package/dist/network-correlation.d.ts.map +1 -1
- package/dist/network-correlation.js +1 -25
- package/dist/network-correlation.js.map +1 -1
- package/dist/script-url-mapping.d.ts +1 -0
- package/dist/script-url-mapping.d.ts.map +1 -1
- package/dist/script-url-mapping.js +7 -0
- package/dist/script-url-mapping.js.map +1 -1
- package/dist/secret-fields.d.ts +37 -0
- package/dist/secret-fields.d.ts.map +1 -0
- package/dist/secret-fields.js +121 -0
- package/dist/secret-fields.js.map +1 -0
- package/package.json +6 -6
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
*
|
|
70
70
|
* - The mask is applied at CAPTURE time, via Playwright's real
|
|
71
71
|
* pixel-level `page.screenshot({ mask, maskColor })` — every
|
|
72
|
-
* `input[type="password"]` on the page by default, plus any
|
|
72
|
+
* `input[type="password" i]` on the page by default, plus any
|
|
73
73
|
* caller-supplied `maskSelectors`. **Coverage is caller-declared, not
|
|
74
74
|
* detected** (§20): this collector has no way to recognize a sensitive
|
|
75
75
|
* value that isn't in a password field — a token in a URL bar, a name
|
|
@@ -121,21 +121,29 @@
|
|
|
121
121
|
* disclosed, not solved, by this change (see this repo's decision record for
|
|
122
122
|
* this feature).
|
|
123
123
|
*/
|
|
124
|
-
import type { Collector } from "@descryy/runtime-contracts";
|
|
124
|
+
import type { Collector, ObservedElementIdentity } from "@descryy/runtime-contracts";
|
|
125
125
|
import type { BrowserSession } from "./browser-session.ts";
|
|
126
126
|
import { type DomElementSnapshot } from "./dom-evidence.ts";
|
|
127
127
|
export interface BrowserActionCollectorOptions {
|
|
128
128
|
readonly session: BrowserSession;
|
|
129
129
|
/** Which owned system this collector's evidence should be attributed to (plan §16.7). Null when not applicable. */
|
|
130
130
|
readonly service?: string;
|
|
131
|
+
readonly identify?: (selector: string) => Promise<ObservedElementIdentity>;
|
|
132
|
+
readonly identifyTimeoutMs?: number;
|
|
133
|
+
readonly extraNavigationSchemes?: readonly string[];
|
|
131
134
|
}
|
|
135
|
+
export declare class NavigationSchemeRefusedError extends Error {
|
|
136
|
+
readonly url: string;
|
|
137
|
+
constructor(url: string, scheme: string);
|
|
138
|
+
}
|
|
139
|
+
export declare const DEFAULT_IDENTIFY_TIMEOUT_MS = 2000;
|
|
132
140
|
export interface WaitForOptions {
|
|
133
141
|
readonly timeoutMs?: number;
|
|
134
142
|
}
|
|
135
143
|
export interface ScreenshotOptions {
|
|
136
144
|
/**
|
|
137
145
|
* Extra selectors to mask, beyond the automatic default of every
|
|
138
|
-
* `input[type="password"]` on the page. See this module's own header:
|
|
146
|
+
* `input[type="password" i]` on the page. See this module's own header:
|
|
139
147
|
* coverage is caller-declared, not detected.
|
|
140
148
|
*/
|
|
141
149
|
readonly maskSelectors?: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-action-collector.d.ts","sourceRoot":"","sources":["../src/browser-action-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0HG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAyE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-action-collector.d.ts","sourceRoot":"","sources":["../src/browser-action-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0HG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAyE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAG5J,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAKpF,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,mHAAmH;IACnH,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAC;IAC3E,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrD;AAKD,qBAAa,4BAA6B,SAAQ,KAAK;IACrD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;gBACT,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAKxC;AAED,eAAO,MAAM,2BAA2B,OAAQ,CAAC;AAEjD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAuB,SAAQ,SAAS;IACvD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC;;;;;;;;;;;;OAYG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,0MAA0M;IAC1M,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvD,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,UAAU,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD;;;;;;;;OAQG;IACH,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAiGD,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,6BAA6B,GAAG,sBAAsB,CA8U3G"}
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
*
|
|
70
70
|
* - The mask is applied at CAPTURE time, via Playwright's real
|
|
71
71
|
* pixel-level `page.screenshot({ mask, maskColor })` — every
|
|
72
|
-
* `input[type="password"]` on the page by default, plus any
|
|
72
|
+
* `input[type="password" i]` on the page by default, plus any
|
|
73
73
|
* caller-supplied `maskSelectors`. **Coverage is caller-declared, not
|
|
74
74
|
* detected** (§20): this collector has no way to recognize a sensitive
|
|
75
75
|
* value that isn't in a password field — a token in a URL bar, a name
|
|
@@ -121,8 +121,22 @@
|
|
|
121
121
|
* disclosed, not solved, by this change (see this repo's decision record for
|
|
122
122
|
* this feature).
|
|
123
123
|
*/
|
|
124
|
+
import { readObservedElementIdentity } from "@descryy/runtime-contracts";
|
|
124
125
|
import { captureElementSnapshot } from "./dom-evidence.js";
|
|
125
126
|
import { COLLECTOR_VERSION } from "./collector-version.js";
|
|
127
|
+
import { SECRET_INPUT_MASK_SELECTORS, SECRET_SCAN_CONFIG, scanForSecretInput } from "./secret-fields.js";
|
|
128
|
+
import { MAX_VIDEO_BYTES, VideoTooLargeError } from "./browser-session.js";
|
|
129
|
+
const WEB_NAVIGATION_SCHEMES = ["http:", "https:"];
|
|
130
|
+
const SECRET_CHECK_TIMEOUT_MS = 1_000;
|
|
131
|
+
export class NavigationSchemeRefusedError extends Error {
|
|
132
|
+
url;
|
|
133
|
+
constructor(url, scheme) {
|
|
134
|
+
super(`navigate() refused ${url}: the "${scheme}" scheme is not http, https or about:blank. Pass extraNavigationSchemes to allow it deliberately.`);
|
|
135
|
+
this.name = "NavigationSchemeRefusedError";
|
|
136
|
+
this.url = url;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
export const DEFAULT_IDENTIFY_TIMEOUT_MS = 2_000;
|
|
126
140
|
function notThisCollectorsJob(what) {
|
|
127
141
|
return { availability: "unavailable", reason: `BrowserActionCollector handles DOM actions only, not ${what} -- see the dedicated collector.` };
|
|
128
142
|
}
|
|
@@ -138,9 +152,23 @@ const CAPABILITIES = {
|
|
|
138
152
|
databaseObservation: notThisCollectorsJob("database query observation"),
|
|
139
153
|
externalServiceObservation: notThisCollectorsJob("external service observation"),
|
|
140
154
|
};
|
|
141
|
-
async function
|
|
142
|
-
const
|
|
143
|
-
|
|
155
|
+
async function readSecretVerdict(page, selector) {
|
|
156
|
+
const locator = page.locator(selector).first();
|
|
157
|
+
if ((await locator.count().catch(() => 0)) === 0)
|
|
158
|
+
return "absent";
|
|
159
|
+
return locator.evaluate(scanForSecretInput, { config: SECRET_SCAN_CONFIG, filledOnly: false }, { timeout: SECRET_CHECK_TIMEOUT_MS }).then((verdict) => (verdict === true ? "secret" : "plain"), () => "secret");
|
|
160
|
+
}
|
|
161
|
+
function textMustBeWithheld(before, after) {
|
|
162
|
+
const known = [before, after].filter((verdict) => verdict !== "absent");
|
|
163
|
+
return known.length === 0 || known.includes("secret");
|
|
164
|
+
}
|
|
165
|
+
function schemeOf(url) {
|
|
166
|
+
try {
|
|
167
|
+
return new URL(url).protocol;
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
144
172
|
}
|
|
145
173
|
/** Capped so a page with continuous background traffic (polling, a websocket) degrades to "waited as long as reasonable" rather than hanging `screenshot()`. See this module's header for the full rationale (RT-221). */
|
|
146
174
|
const SETTLE_NETWORK_IDLE_TIMEOUT_MS = 2000;
|
|
@@ -166,10 +194,40 @@ async function waitForSettle(page) {
|
|
|
166
194
|
});
|
|
167
195
|
return settled;
|
|
168
196
|
}
|
|
197
|
+
function refusedIdentity(reason) {
|
|
198
|
+
return { outcome: "refused", component: null, file: null, line: null, authoredSource: false, reason };
|
|
199
|
+
}
|
|
200
|
+
function describeError(error) {
|
|
201
|
+
return error instanceof Error ? `${error.name}: ${error.message}` : String(error);
|
|
202
|
+
}
|
|
203
|
+
async function identifyWithin(identify, selector, timeoutMs) {
|
|
204
|
+
let timer;
|
|
205
|
+
const timedOut = new Promise((resolve) => {
|
|
206
|
+
timer = setTimeout(() => resolve("timed-out"), timeoutMs);
|
|
207
|
+
});
|
|
208
|
+
try {
|
|
209
|
+
const answer = await Promise.race([identify(selector), timedOut]);
|
|
210
|
+
if (answer === "timed-out")
|
|
211
|
+
return refusedIdentity(`identity grounding did not answer within ${String(timeoutMs)} ms`);
|
|
212
|
+
return readObservedElementIdentity(answer) ?? refusedIdentity("identity grounding returned a value that is not a readable element identity");
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
return refusedIdentity(`identity grounding failed: ${describeError(error)}`);
|
|
216
|
+
}
|
|
217
|
+
finally {
|
|
218
|
+
clearTimeout(timer);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
169
221
|
export function createBrowserActionCollector(options) {
|
|
170
222
|
const { session } = options;
|
|
171
223
|
const { page } = session;
|
|
172
224
|
let emit;
|
|
225
|
+
const identifyTimeoutMs = options.identifyTimeoutMs ?? DEFAULT_IDENTIFY_TIMEOUT_MS;
|
|
226
|
+
async function identityPayload(selector) {
|
|
227
|
+
if (options.identify === undefined)
|
|
228
|
+
return {};
|
|
229
|
+
return { identity: await identifyWithin(options.identify, selector, identifyTimeoutMs) };
|
|
230
|
+
}
|
|
173
231
|
function emitEvidence(partial) {
|
|
174
232
|
// A collector not yet start()-ed (or already stop()-ed) has nowhere to
|
|
175
233
|
// push evidence -- silently doing nothing here would look identical to
|
|
@@ -178,6 +236,10 @@ export function createBrowserActionCollector(options) {
|
|
|
178
236
|
emit?.({ ...partial, collectorVersion: COLLECTOR_VERSION });
|
|
179
237
|
}
|
|
180
238
|
async function navigate(url) {
|
|
239
|
+
const scheme = schemeOf(url);
|
|
240
|
+
const permitted = url === "about:blank" || (scheme !== null && (WEB_NAVIGATION_SCHEMES.includes(scheme) || (options.extraNavigationSchemes ?? []).includes(scheme)));
|
|
241
|
+
if (!permitted)
|
|
242
|
+
throw new NavigationSchemeRefusedError(url, scheme ?? "unparseable");
|
|
181
243
|
const response = await page.goto(url);
|
|
182
244
|
// B3: `page.goto()`'s default `waitUntil: "load"` fires once the
|
|
183
245
|
// document and its subresources have loaded and says nothing about XHR
|
|
@@ -208,6 +270,7 @@ export function createBrowserActionCollector(options) {
|
|
|
208
270
|
}
|
|
209
271
|
async function click(selector) {
|
|
210
272
|
const element = await captureElementSnapshot(page, selector);
|
|
273
|
+
const identity = await identityPayload(selector);
|
|
211
274
|
await page.click(selector);
|
|
212
275
|
emitEvidence({
|
|
213
276
|
timestamp: new Date().toISOString(),
|
|
@@ -215,7 +278,7 @@ export function createBrowserActionCollector(options) {
|
|
|
215
278
|
service: options.service ?? null,
|
|
216
279
|
process: null,
|
|
217
280
|
eventType: "CLICK",
|
|
218
|
-
payload: { selector, element, browserSessionId: session.sessionId },
|
|
281
|
+
payload: { selector, element, ...identity, browserSessionId: session.sessionId },
|
|
219
282
|
traceId: null,
|
|
220
283
|
requestId: null,
|
|
221
284
|
correlationId: null,
|
|
@@ -234,8 +297,9 @@ export function createBrowserActionCollector(options) {
|
|
|
234
297
|
* later edit ends up redacting in one of them and not the other.
|
|
235
298
|
*/
|
|
236
299
|
async function enterText(selector, text, mode) {
|
|
237
|
-
const
|
|
300
|
+
const secretBefore = await readSecretVerdict(page, selector);
|
|
238
301
|
const element = await captureElementSnapshot(page, selector);
|
|
302
|
+
const identity = await identityPayload(selector);
|
|
239
303
|
if (mode === "replace") {
|
|
240
304
|
await page.fill(selector, text);
|
|
241
305
|
}
|
|
@@ -243,8 +307,10 @@ export function createBrowserActionCollector(options) {
|
|
|
243
307
|
// Real key events, one per character, on top of the existing value --
|
|
244
308
|
// `page.type()` is deprecated in favour of this, and `fill()` is not a
|
|
245
309
|
// substitute for it (see the interface comment).
|
|
246
|
-
await page.locator(selector).pressSequentially(text);
|
|
310
|
+
await page.locator(selector).first().pressSequentially(text);
|
|
247
311
|
}
|
|
312
|
+
const secretAfter = await readSecretVerdict(page, selector);
|
|
313
|
+
const textWithheld = textMustBeWithheld(secretBefore, secretAfter);
|
|
248
314
|
emitEvidence({
|
|
249
315
|
timestamp: new Date().toISOString(),
|
|
250
316
|
source: "browser-dom",
|
|
@@ -260,7 +326,7 @@ export function createBrowserActionCollector(options) {
|
|
|
260
326
|
// `mode` is recorded because the payload otherwise reads identically
|
|
261
327
|
// for the two verbs, and "the field now contains X" and "X was added to
|
|
262
328
|
// whatever the field contained" are different facts about the run.
|
|
263
|
-
payload: { selector, text:
|
|
329
|
+
payload: { selector, text: textWithheld ? null : text, ...(textWithheld ? { textWithheld: true } : {}), mode, element, ...identity, browserSessionId: session.sessionId },
|
|
264
330
|
traceId: null,
|
|
265
331
|
requestId: null,
|
|
266
332
|
correlationId: null,
|
|
@@ -279,6 +345,7 @@ export function createBrowserActionCollector(options) {
|
|
|
279
345
|
}
|
|
280
346
|
async function select(selector, value) {
|
|
281
347
|
const element = await captureElementSnapshot(page, selector);
|
|
348
|
+
const identity = await identityPayload(selector);
|
|
282
349
|
await page.selectOption(selector, value);
|
|
283
350
|
emitEvidence({
|
|
284
351
|
timestamp: new Date().toISOString(),
|
|
@@ -286,7 +353,7 @@ export function createBrowserActionCollector(options) {
|
|
|
286
353
|
service: options.service ?? null,
|
|
287
354
|
process: null,
|
|
288
355
|
eventType: "INPUT",
|
|
289
|
-
payload: { selector, value, element, browserSessionId: session.sessionId },
|
|
356
|
+
payload: { selector, value, element, ...identity, browserSessionId: session.sessionId },
|
|
290
357
|
traceId: null,
|
|
291
358
|
requestId: null,
|
|
292
359
|
correlationId: null,
|
|
@@ -333,7 +400,7 @@ export function createBrowserActionCollector(options) {
|
|
|
333
400
|
}
|
|
334
401
|
}
|
|
335
402
|
async function screenshot(screenshotOptions = {}) {
|
|
336
|
-
const maskSelectors = [
|
|
403
|
+
const maskSelectors = [...SECRET_INPUT_MASK_SELECTORS, ...(screenshotOptions.maskSelectors ?? [])];
|
|
337
404
|
await waitForSettle(page);
|
|
338
405
|
const buffer = await page.screenshot({
|
|
339
406
|
mask: maskSelectors.map((selector) => page.locator(selector)),
|
|
@@ -368,7 +435,31 @@ export function createBrowserActionCollector(options) {
|
|
|
368
435
|
});
|
|
369
436
|
}
|
|
370
437
|
async function captureVideo() {
|
|
371
|
-
|
|
438
|
+
let bytes;
|
|
439
|
+
try {
|
|
440
|
+
bytes = await session.finishedVideo();
|
|
441
|
+
}
|
|
442
|
+
catch (error) {
|
|
443
|
+
if (!(error instanceof VideoTooLargeError))
|
|
444
|
+
throw error;
|
|
445
|
+
emitEvidence({
|
|
446
|
+
timestamp: new Date().toISOString(),
|
|
447
|
+
source: "browser-dom",
|
|
448
|
+
service: options.service ?? null,
|
|
449
|
+
process: null,
|
|
450
|
+
eventType: "VIDEO",
|
|
451
|
+
payload: { videoBase64: null, videoOmitted: error.message, videoBytes: error.sizeBytes, videoMaxBytes: MAX_VIDEO_BYTES, browserSessionId: session.sessionId },
|
|
452
|
+
traceId: null,
|
|
453
|
+
requestId: null,
|
|
454
|
+
correlationId: null,
|
|
455
|
+
graphNodeId: null,
|
|
456
|
+
sourceLocation: null,
|
|
457
|
+
stackTrace: null,
|
|
458
|
+
confidence: 1,
|
|
459
|
+
redactionStatus: "pending-redaction",
|
|
460
|
+
});
|
|
461
|
+
return;
|
|
462
|
+
}
|
|
372
463
|
if (bytes === null)
|
|
373
464
|
return; // recordVideo was never enabled for this session -- nothing to report, not an error.
|
|
374
465
|
emitEvidence({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-action-collector.js","sourceRoot":"","sources":["../src/browser-action-collector.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"browser-action-collector.js","sourceRoot":"","sources":["../src/browser-action-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,5 +21,7 @@ export interface BrowserConsoleCollectorOptions {
|
|
|
21
21
|
*/
|
|
22
22
|
readonly stackTraceParser?: StackTraceParser;
|
|
23
23
|
}
|
|
24
|
+
export declare const MAX_CONSOLE_MESSAGES = 5000;
|
|
25
|
+
export declare const MAX_CONSOLE_TEXT_CHARS = 8000;
|
|
24
26
|
export declare function createBrowserConsoleCollector(options: BrowserConsoleCollectorOptions): Collector;
|
|
25
27
|
//# sourceMappingURL=browser-console-collector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-console-collector.d.ts","sourceRoot":"","sources":["../src/browser-console-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAqF,MAAM,4BAA4B,CAAC;AAG/I,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C;
|
|
1
|
+
{"version":3,"file":"browser-console-collector.d.ts","sourceRoot":"","sources":["../src/browser-console-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAqF,MAAM,4BAA4B,CAAC;AAG/I,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C;AAED,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAC1C,eAAO,MAAM,sBAAsB,OAAQ,CAAC;AAgD5C,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,8BAA8B,GAAG,SAAS,CAoKhG"}
|
|
@@ -12,6 +12,8 @@ import { primaryFrameLocation } from "@descryy/runtime-contracts";
|
|
|
12
12
|
import { extractCorrelationIds } from "@descryy/runtime-backend-observation";
|
|
13
13
|
import { rewriteScriptUrls } from "./script-url-mapping.js";
|
|
14
14
|
import { COLLECTOR_VERSION } from "./collector-version.js";
|
|
15
|
+
export const MAX_CONSOLE_MESSAGES = 5_000;
|
|
16
|
+
export const MAX_CONSOLE_TEXT_CHARS = 8_000;
|
|
15
17
|
function notThisCollectorsJob(what) {
|
|
16
18
|
return { availability: "unavailable", reason: `BrowserConsoleCollector handles console/page-error observation only, not ${what} -- see the dedicated collector.` };
|
|
17
19
|
}
|
|
@@ -71,8 +73,42 @@ export function createBrowserConsoleCollector(options) {
|
|
|
71
73
|
* drains this set first.
|
|
72
74
|
*/
|
|
73
75
|
const inFlight = new Set();
|
|
76
|
+
let consoleMessagesSeen = 0;
|
|
77
|
+
function emitBudgetNotice(message) {
|
|
78
|
+
emit?.({
|
|
79
|
+
timestamp: new Date().toISOString(),
|
|
80
|
+
source: "browser-console",
|
|
81
|
+
service: options.service ?? null,
|
|
82
|
+
process: null,
|
|
83
|
+
eventType: "COLLECTOR_ERROR",
|
|
84
|
+
payload: {
|
|
85
|
+
raw: `browser console collector for session "${session.sessionId}": ${message}`,
|
|
86
|
+
collectorId: `browser-console:${session.sessionId}`,
|
|
87
|
+
error: message,
|
|
88
|
+
browserSessionId: session.sessionId,
|
|
89
|
+
},
|
|
90
|
+
traceId: null,
|
|
91
|
+
requestId: null,
|
|
92
|
+
correlationId: null,
|
|
93
|
+
graphNodeId: null,
|
|
94
|
+
sourceLocation: null,
|
|
95
|
+
stackTrace: null,
|
|
96
|
+
confidence: 1,
|
|
97
|
+
redactionStatus: "pending-redaction",
|
|
98
|
+
collectorVersion: COLLECTOR_VERSION,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
74
101
|
function onConsole(msg) {
|
|
75
|
-
|
|
102
|
+
consoleMessagesSeen += 1;
|
|
103
|
+
if (consoleMessagesSeen > MAX_CONSOLE_MESSAGES) {
|
|
104
|
+
if (consoleMessagesSeen === MAX_CONSOLE_MESSAGES + 1) {
|
|
105
|
+
emitBudgetNotice(`more than ${String(MAX_CONSOLE_MESSAGES)} console messages were logged; the rest are counted and not recorded.`);
|
|
106
|
+
}
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const fullText = msg.text();
|
|
110
|
+
const textTruncated = fullText.length > MAX_CONSOLE_TEXT_CHARS;
|
|
111
|
+
const text = textTruncated ? fullText.slice(0, MAX_CONSOLE_TEXT_CHARS) : fullText;
|
|
76
112
|
const { traceId, requestId } = extractCorrelationIds(text);
|
|
77
113
|
emit?.({
|
|
78
114
|
timestamp: new Date().toISOString(),
|
|
@@ -80,7 +116,13 @@ export function createBrowserConsoleCollector(options) {
|
|
|
80
116
|
service: options.service ?? null,
|
|
81
117
|
process: null,
|
|
82
118
|
eventType: "CONSOLE_MESSAGE",
|
|
83
|
-
payload: {
|
|
119
|
+
payload: {
|
|
120
|
+
level: msg.type(),
|
|
121
|
+
text,
|
|
122
|
+
...(textTruncated ? { textTruncated: true, textLength: fullText.length } : {}),
|
|
123
|
+
location: msg.location(),
|
|
124
|
+
browserSessionId: session.sessionId,
|
|
125
|
+
},
|
|
84
126
|
traceId,
|
|
85
127
|
requestId,
|
|
86
128
|
correlationId: null,
|
|
@@ -94,15 +136,23 @@ export function createBrowserConsoleCollector(options) {
|
|
|
94
136
|
}
|
|
95
137
|
function onPageError(error) {
|
|
96
138
|
const rawStack = error.stack ?? null;
|
|
139
|
+
const observedAt = new Date().toISOString();
|
|
97
140
|
const handled = (async () => {
|
|
98
141
|
let stackTrace = null;
|
|
99
142
|
let mapping = null;
|
|
143
|
+
let stackParseError = null;
|
|
100
144
|
if (stacksParsed && rawStack !== null && options.stackTraceParser !== undefined) {
|
|
101
|
-
|
|
102
|
-
|
|
145
|
+
try {
|
|
146
|
+
mapping = rewriteScriptUrls(rawStack, resolveSourceRoot);
|
|
147
|
+
stackTrace = await options.stackTraceParser.parse(mapping.text);
|
|
148
|
+
}
|
|
149
|
+
catch (parseFailure) {
|
|
150
|
+
stackTrace = null;
|
|
151
|
+
stackParseError = parseFailure instanceof Error ? parseFailure.message : String(parseFailure);
|
|
152
|
+
}
|
|
103
153
|
}
|
|
104
154
|
emit?.({
|
|
105
|
-
timestamp:
|
|
155
|
+
timestamp: observedAt,
|
|
106
156
|
source: "browser-console",
|
|
107
157
|
service: options.service ?? null,
|
|
108
158
|
process: null,
|
|
@@ -114,6 +164,7 @@ export function createBrowserConsoleCollector(options) {
|
|
|
114
164
|
browserSessionId: session.sessionId,
|
|
115
165
|
// per-URL outcomes, not a boolean -- collapsing would hide the partially-mapped case.
|
|
116
166
|
...(mapping !== null ? { scriptUrlMapping: mapping.outcomes } : {}),
|
|
167
|
+
...(stackParseError !== null ? { stackParseError } : {}),
|
|
117
168
|
},
|
|
118
169
|
traceId: null,
|
|
119
170
|
requestId: null,
|
|
@@ -129,7 +180,7 @@ export function createBrowserConsoleCollector(options) {
|
|
|
129
180
|
});
|
|
130
181
|
})();
|
|
131
182
|
inFlight.add(handled);
|
|
132
|
-
void handled.finally(() => inFlight.delete(handled));
|
|
183
|
+
void handled.catch(() => undefined).finally(() => inFlight.delete(handled));
|
|
133
184
|
}
|
|
134
185
|
return {
|
|
135
186
|
collectorId: `browser-console:${session.sessionId}`,
|
|
@@ -152,6 +203,9 @@ export function createBrowserConsoleCollector(options) {
|
|
|
152
203
|
// drain then clear emit -- clearing first silently dropped the last page error.
|
|
153
204
|
// allSettled: a handler that threw already failed on its own terms and shouldn't block the rest.
|
|
154
205
|
await Promise.allSettled([...inFlight]);
|
|
206
|
+
if (consoleMessagesSeen > MAX_CONSOLE_MESSAGES) {
|
|
207
|
+
emitBudgetNotice(`${String(consoleMessagesSeen - MAX_CONSOLE_MESSAGES)} console messages beyond the first ${String(MAX_CONSOLE_MESSAGES)} were not recorded.`);
|
|
208
|
+
}
|
|
155
209
|
emit = undefined;
|
|
156
210
|
},
|
|
157
211
|
capabilities() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-console-collector.js","sourceRoot":"","sources":["../src/browser-console-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAI7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAa3D,SAAS,oBAAoB,CAAC,IAAY;IACxC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,4EAA4E,IAAI,kCAAkC,EAAE,CAAC;AACrK,CAAC;AAED,MAAM,YAAY,GAA0B;IAC1C,cAAc,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;IACtD,kBAAkB,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;IAC/D,kBAAkB,EAAE,oBAAoB,CAAC,qBAAqB,CAAC;IAC/D,gBAAgB,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,gEAAgE,EAAE;IAC3H,gBAAgB,EAAE;QAChB,YAAY,EAAE,UAAU;QACxB,MAAM,EAAE,kHAAkH;KAC3H;IACD,aAAa,EAAE;QACb,YAAY,EAAE,aAAa;QAC3B,MAAM,EAAE,oGAAoG;KAC7G;IACD,YAAY,EAAE;QACZ,YAAY,EAAE,aAAa;QAC3B,MAAM,EAAE,6GAA6G;KACtH;IACD,gBAAgB,EAAE,oBAAoB,CAAC,+BAA+B,CAAC;IACvE,mBAAmB,EAAE,oBAAoB,CAAC,4BAA4B,CAAC;IACvE,0BAA0B,EAAE,oBAAoB,CAAC,8BAA8B,CAAC;CACjF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,wBAAwB,GAA0B;IACtD,GAAG,YAAY;IACf,aAAa,EAAE;QACb,YAAY,EAAE,UAAU;QACxB,MAAM,EACJ,4HAA4H;YAC5H,2HAA2H;YAC3H,6DAA6D;KAChE;IACD,YAAY,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE;CAC1D,CAAC;AAEF,MAAM,UAAU,6BAA6B,CAAC,OAAuC;IACnF,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzB,IAAI,IAAwB,CAAC;IAC7B,IAAI,iBAAwD,CAAC;IAC7D,qGAAqG;IACrG,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB;;;;;;;;OAQG;IACH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-console-collector.js","sourceRoot":"","sources":["../src/browser-console-collector.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,7 +28,9 @@
|
|
|
28
28
|
* forever, not evidence.
|
|
29
29
|
*
|
|
30
30
|
* **B3: every `NETWORK_RESPONSE`/`HTTP_ERROR` payload above also carries an
|
|
31
|
-
* `outcome`** — `"answered"` (a real response arrived, any status)
|
|
31
|
+
* `outcome`** — `"answered"` (a real response arrived, any status),
|
|
32
|
+
* `"aborted"` with an `abortedBy` of `navigation`, `page` or `origin-guard`
|
|
33
|
+
* (cancelled on the client side, not a server failure), or
|
|
32
34
|
* `"unanswered"` (a real Playwright `requestfailed`, this collector's own
|
|
33
35
|
* timeout, a WebSocket `socketerror`, or the session closing while the
|
|
34
36
|
* request was still open — see `stop()`). A `NETWORK_REQUEST` with neither
|
|
@@ -44,6 +46,25 @@
|
|
|
44
46
|
* open when the collector stops, instead of the silent drop that used to
|
|
45
47
|
* happen there.
|
|
46
48
|
*
|
|
49
|
+
* **Every payload above also carries `exchangeId`** — a transport-level id
|
|
50
|
+
* for one HTTP exchange, assigned to the underlying Playwright `Request`
|
|
51
|
+
* object the moment `onRequest` sees it and carried into every terminal
|
|
52
|
+
* event for that same request (`NETWORK_RESPONSE`, its paired `HTTP_ERROR`,
|
|
53
|
+
* a `requestfailed` `HTTP_ERROR`, this collector's own timeout, and
|
|
54
|
+
* `stop()`'s drain). It is deliberately not `Evidence.requestId` — that
|
|
55
|
+
* field is documented as an application-supplied correlation header
|
|
56
|
+
* (`x-request-id`/`request-id`, absent unless the app propagates one) and
|
|
57
|
+
* `correlationOrigin` above already distinguishes which side of the wire it
|
|
58
|
+
* came from; overloading it with a transport identity that exists
|
|
59
|
+
* unconditionally would make that existing, tested claim false.
|
|
60
|
+
* `descry-core`'s browser driver prefers `exchangeId` when pairing a
|
|
61
|
+
* request to its response, ahead of `requestId` and a per-URL FIFO fallback
|
|
62
|
+
* — see `documents/decisions-inbox/DEC-NEXT-transport-level-exchange-id-for-browser-requests.md`
|
|
63
|
+
* in that repo. WebSocket events do not carry one: Playwright's `WebSocket`
|
|
64
|
+
* object is a different identity, not a `Request`, and this field's whole
|
|
65
|
+
* point is pairing terminal HTTP events back to the `Request` that started
|
|
66
|
+
* them.
|
|
67
|
+
*
|
|
47
68
|
* **"initiator where available" above is no longer only `resourceType`.**
|
|
48
69
|
* With a `stackTraceParser` injected, `NETWORK_REQUEST.stackTrace` carries
|
|
49
70
|
* a real, resolved call-site stack for `fetch()` requests (Chromium only —
|
|
@@ -139,8 +160,17 @@ export interface CapturedResponseBody {
|
|
|
139
160
|
readonly bodyTruncated: boolean;
|
|
140
161
|
/** The real size in bytes, when known -- from `content-length` (never-read case) or measured after reading; null when neither is available. */
|
|
141
162
|
readonly bodyByteLength: number | null;
|
|
163
|
+
readonly bodySkippedReason?: string;
|
|
142
164
|
}
|
|
143
165
|
/** Exported for direct unit testing (RT-261) -- exercising the cap does not need a real browser response, just something shaped like one. */
|
|
144
166
|
export declare function captureResponseBody(response: Response, headers: Readonly<Record<string, string>>): Promise<CapturedResponseBody>;
|
|
167
|
+
export declare const MAX_REQUEST_BODY_BYTES: number;
|
|
168
|
+
export interface CapturedRequestBody {
|
|
169
|
+
readonly postData: string | null;
|
|
170
|
+
readonly postDataTruncated: boolean;
|
|
171
|
+
readonly postDataByteLength: number | null;
|
|
172
|
+
readonly postDataBinary: boolean;
|
|
173
|
+
}
|
|
174
|
+
export declare function captureRequestBody(body: Buffer | null): CapturedRequestBody;
|
|
145
175
|
export declare function createBrowserNetworkCollector(options: BrowserNetworkCollectorOptions): Collector;
|
|
146
176
|
//# sourceMappingURL=browser-network-collector.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-network-collector.d.ts","sourceRoot":"","sources":["../src/browser-network-collector.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"browser-network-collector.d.ts","sourceRoot":"","sources":["../src/browser-network-collector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsHG;AAEH,OAAO,KAAK,EAAW,QAAQ,EAAoC,MAAM,iBAAiB,CAAC;AAC3F,OAAO,KAAK,EAAE,SAAS,EAAqG,MAAM,4BAA4B,CAAC;AAE/J,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM3D,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C;AAoFD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAa,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,sLAAsL;IACtL,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,yIAAyI;IACzI,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAChC,+IAA+I;IAC/I,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC;AAaD,6IAA6I;AAC7I,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0BtI;AAED,eAAO,MAAM,sBAAsB,QAAa,CAAC;AAEjD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;CAClC;AAYD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,mBAAmB,CAc3E;AAUD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,8BAA8B,GAAG,SAAS,CAixBhG"}
|