browser-debugger-cli 0.6.4 → 0.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/__tests__/machineReadableHelp.contract.test.d.ts +12 -0
- package/dist/commands/__tests__/machineReadableHelp.contract.test.d.ts.map +1 -0
- package/dist/commands/__tests__/machineReadableHelp.contract.test.js +102 -0
- package/dist/commands/__tests__/machineReadableHelp.contract.test.js.map +1 -0
- package/dist/commands/cdp.js +8 -4
- package/dist/commands/cdp.js.map +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +22 -2
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/dom/a11y.d.ts.map +1 -1
- package/dist/commands/dom/a11y.js +51 -15
- package/dist/commands/dom/a11y.js.map +1 -1
- package/dist/commands/dom/evalHelpers.d.ts +1 -1
- package/dist/commands/dom/evalHelpers.d.ts.map +1 -1
- package/dist/commands/dom/evalHelpers.js +3 -2
- package/dist/commands/dom/evalHelpers.js.map +1 -1
- package/dist/commands/dom/formFillHelpers.d.ts.map +1 -1
- package/dist/commands/dom/formFillHelpers.js +30 -2
- package/dist/commands/dom/formFillHelpers.js.map +1 -1
- package/dist/commands/dom/index.d.ts.map +1 -1
- package/dist/commands/dom/index.js +85 -13
- package/dist/commands/dom/index.js.map +1 -1
- package/dist/commands/dom/reactEventHelpers.d.ts +1 -1
- package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -1
- package/dist/commands/dom/reactEventHelpers.js +3 -3
- package/dist/commands/machineReadableHelp.d.ts +48 -0
- package/dist/commands/machineReadableHelp.d.ts.map +1 -1
- package/dist/commands/machineReadableHelp.js +80 -0
- package/dist/commands/machineReadableHelp.js.map +1 -1
- package/dist/commands/network.d.ts.map +1 -1
- package/dist/commands/network.js +28 -2
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/peek.js +2 -2
- package/dist/commands/peek.js.map +1 -1
- package/dist/commands/shared/CommandRunner.d.ts +2 -0
- package/dist/commands/shared/CommandRunner.d.ts.map +1 -1
- package/dist/commands/shared/CommandRunner.js +3 -0
- package/dist/commands/shared/CommandRunner.js.map +1 -1
- package/dist/commands/shared/validation.d.ts +2 -0
- package/dist/commands/shared/validation.d.ts.map +1 -1
- package/dist/commands/shared/validation.js +5 -2
- package/dist/commands/shared/validation.js.map +1 -1
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +2 -1
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.d.ts.map +1 -1
- package/dist/commands/tail.js +6 -0
- package/dist/commands/tail.js.map +1 -1
- package/dist/connection/cdp.js +9 -9
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/daemon/patternDefinitions.d.ts +47 -0
- package/dist/daemon/patternDefinitions.d.ts.map +1 -0
- package/dist/daemon/patternDefinitions.js +71 -0
- package/dist/daemon/patternDefinitions.js.map +1 -0
- package/dist/daemon/patternDetector.d.ts +60 -0
- package/dist/daemon/patternDetector.d.ts.map +1 -0
- package/dist/daemon/patternDetector.js +74 -0
- package/dist/daemon/patternDetector.js.map +1 -0
- package/dist/daemon/worker/__tests__/PatternDetector.unit.test.d.ts +11 -0
- package/dist/daemon/worker/__tests__/PatternDetector.unit.test.d.ts.map +1 -0
- package/dist/daemon/worker/__tests__/PatternDetector.unit.test.js +136 -0
- package/dist/daemon/worker/__tests__/PatternDetector.unit.test.js.map +1 -0
- package/dist/daemon/worker/commandRegistry.d.ts.map +1 -1
- package/dist/daemon/worker/commandRegistry.js +13 -2
- package/dist/daemon/worker/commandRegistry.js.map +1 -1
- package/dist/ipc/protocol/commands.d.ts +2 -0
- package/dist/ipc/protocol/commands.d.ts.map +1 -1
- package/dist/ipc/protocol/commands.js.map +1 -1
- package/dist/session/cleanup.d.ts.map +1 -1
- package/dist/session/cleanup.js +2 -0
- package/dist/session/cleanup.js.map +1 -1
- package/dist/session/queryCache.d.ts +35 -0
- package/dist/session/queryCache.d.ts.map +1 -0
- package/dist/session/queryCache.js +83 -0
- package/dist/session/queryCache.js.map +1 -0
- package/dist/telemetry/a11y.d.ts +8 -5
- package/dist/telemetry/a11y.d.ts.map +1 -1
- package/dist/telemetry/a11y.js +34 -19
- package/dist/telemetry/a11y.js.map +1 -1
- package/dist/ui/errors/CommandError.d.ts +5 -1
- package/dist/ui/errors/CommandError.d.ts.map +1 -1
- package/dist/ui/errors/CommandError.js.map +1 -1
- package/dist/ui/formatters/__tests__/preview.unit.test.d.ts +13 -0
- package/dist/ui/formatters/__tests__/preview.unit.test.d.ts.map +1 -0
- package/dist/ui/formatters/__tests__/preview.unit.test.js +180 -0
- package/dist/ui/formatters/__tests__/preview.unit.test.js.map +1 -0
- package/dist/ui/formatters/dom.d.ts.map +1 -1
- package/dist/ui/formatters/dom.js +5 -2
- package/dist/ui/formatters/dom.js.map +1 -1
- package/dist/ui/formatters/helpFormatters.d.ts +41 -0
- package/dist/ui/formatters/helpFormatters.d.ts.map +1 -0
- package/dist/ui/formatters/helpFormatters.js +80 -0
- package/dist/ui/formatters/helpFormatters.js.map +1 -0
- package/dist/ui/formatters/preview.d.ts.map +1 -1
- package/dist/ui/formatters/preview.js +67 -19
- package/dist/ui/formatters/preview.js.map +1 -1
- package/dist/ui/formatters/sessionFormatters.d.ts +58 -0
- package/dist/ui/formatters/sessionFormatters.d.ts.map +1 -0
- package/dist/ui/formatters/sessionFormatters.js +116 -0
- package/dist/ui/formatters/sessionFormatters.js.map +1 -0
- package/dist/ui/messages/commands.d.ts +9 -0
- package/dist/ui/messages/commands.d.ts.map +1 -1
- package/dist/ui/messages/commands.js +11 -1
- package/dist/ui/messages/commands.js.map +1 -1
- package/dist/ui/messages/errors.d.ts +53 -0
- package/dist/ui/messages/errors.d.ts.map +1 -1
- package/dist/ui/messages/errors.js +59 -0
- package/dist/ui/messages/errors.js.map +1 -1
- package/dist/ui/messages/hints.d.ts +33 -0
- package/dist/ui/messages/hints.d.ts.map +1 -0
- package/dist/ui/messages/hints.js +37 -0
- package/dist/ui/messages/hints.js.map +1 -0
- package/dist/ui/messages/session.d.ts +11 -1
- package/dist/ui/messages/session.d.ts.map +1 -1
- package/dist/ui/messages/session.js +14 -21
- package/dist/ui/messages/session.js.map +1 -1
- package/dist/utils/decisionTrees.d.ts +54 -0
- package/dist/utils/decisionTrees.d.ts.map +1 -0
- package/dist/utils/decisionTrees.js +171 -0
- package/dist/utils/decisionTrees.js.map +1 -0
- package/dist/utils/taskMappings.d.ts +47 -0
- package/dist/utils/taskMappings.d.ts.map +1 -0
- package/dist/utils/taskMappings.js +118 -0
- package/dist/utils/taskMappings.js.map +1 -0
- package/package.json +3 -3
|
@@ -22,7 +22,7 @@ import { EXIT_CODES } from '../../utils/exitCodes.js';
|
|
|
22
22
|
* ```
|
|
23
23
|
*/
|
|
24
24
|
export function positiveIntRule(options = {}) {
|
|
25
|
-
const { min, max, default: defaultValue, required = true } = options;
|
|
25
|
+
const { min, max, default: defaultValue, required = true, allowZeroForAll = false } = options;
|
|
26
26
|
return {
|
|
27
27
|
validate: (value) => {
|
|
28
28
|
if (value === undefined || value === null) {
|
|
@@ -30,7 +30,7 @@ export function positiveIntRule(options = {}) {
|
|
|
30
30
|
return defaultValue;
|
|
31
31
|
}
|
|
32
32
|
if (!required) {
|
|
33
|
-
return 0;
|
|
33
|
+
return 0;
|
|
34
34
|
}
|
|
35
35
|
throw new CommandError('Value is required', {}, EXIT_CODES.INVALID_ARGUMENTS);
|
|
36
36
|
}
|
|
@@ -48,6 +48,9 @@ export function positiveIntRule(options = {}) {
|
|
|
48
48
|
const message = invalidIntegerError('value', strValue, errorOptions);
|
|
49
49
|
throw new CommandError(message, {}, EXIT_CODES.INVALID_ARGUMENTS);
|
|
50
50
|
}
|
|
51
|
+
if (parsed === 0 && allowZeroForAll) {
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
51
54
|
if (min !== undefined && parsed < min) {
|
|
52
55
|
const message = invalidIntegerError('value', strValue, errorOptions);
|
|
53
56
|
throw new CommandError(message, {}, EXIT_CODES.INVALID_ARGUMENTS);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/commands/shared/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../src/commands/shared/validation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiEzC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiEzC;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2F1D"}
|
package/dist/commands/stop.js
CHANGED
|
@@ -45,9 +45,10 @@ function getExitCodeForDaemonError(errorCode) {
|
|
|
45
45
|
export function registerStopCommand(program) {
|
|
46
46
|
program
|
|
47
47
|
.command('stop')
|
|
48
|
-
.description('Stop daemon and write collected telemetry to session.json')
|
|
48
|
+
.description('Stop daemon and write collected telemetry to ~/.bdg/session.json')
|
|
49
49
|
.option('--kill-chrome', 'Also kill Chrome browser process', false)
|
|
50
50
|
.addOption(jsonOption)
|
|
51
|
+
.addHelpText('after', '\nOutput Location:\n Default: ~/.bdg/session.json\n Tip: Copy to custom location with: cp ~/.bdg/session.json /path/to/output.json')
|
|
51
52
|
.action(async (options) => {
|
|
52
53
|
await runCommand(async (opts) => {
|
|
53
54
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAEhE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,mBAAmB,EACnB,6BAA6B,EAC7B,cAAc,GACf,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC1F,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAUvD;;;;GAIG;AACH,SAAS,UAAU,CAAC,IAAgB;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,cAAc,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/F,MAAM,WAAW,GACf,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,oBAAoB;QAC/C,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,oBAAoB,CAAC;QAC1D,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,SAAS,CACd,UAAU,EACV,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,mBAAmB,EAAE,EAC5C,WAAW,EACX,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CACnE,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,yBAAyB,CAAC,SAAwB;IACzD,OAAO,SAAS,KAAK,YAAY,CAAC,UAAU;QAC1C,CAAC,CAAC,UAAU,CAAC,kBAAkB;QAC/B,CAAC,CAAC,UAAU,CAAC,mBAAmB,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/commands/stop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBzC;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"tail.d.ts","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBzC;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+G1D"}
|
package/dist/commands/tail.js
CHANGED
|
@@ -110,6 +110,12 @@ export function registerTailCommand(program) {
|
|
|
110
110
|
console.error(stoppedFollowingPreviewMessage());
|
|
111
111
|
process.exit(EXIT_CODES.SUCCESS);
|
|
112
112
|
});
|
|
113
|
+
process.stdout.on('error', (err) => {
|
|
114
|
+
if (err.code === 'EPIPE') {
|
|
115
|
+
clearInterval(followInterval);
|
|
116
|
+
process.exit(EXIT_CODES.SUCCESS);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
113
119
|
});
|
|
114
120
|
}
|
|
115
121
|
//# sourceMappingURL=tail.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tail.js","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tail.js","sourceRoot":"","sources":["../../src/commands/tail.ts"],"names":[],"mappings":"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"}
|
package/dist/connection/cdp.js
CHANGED
|
@@ -476,16 +476,16 @@ export class CDPConnection {
|
|
|
476
476
|
const errorMessage = `Command timeout: ${method}\n\n` +
|
|
477
477
|
`The browser did not respond within ${timeoutSeconds}s.\n\n` +
|
|
478
478
|
`Possible causes:\n` +
|
|
479
|
-
`
|
|
480
|
-
`
|
|
481
|
-
`
|
|
482
|
-
`
|
|
479
|
+
` - Browser became unresponsive or frozen\n` +
|
|
480
|
+
` - Heavy page load or JavaScript execution\n` +
|
|
481
|
+
` - Network issues or slow connection\n` +
|
|
482
|
+
` - Method requires user interaction\n\n` +
|
|
483
483
|
`Try:\n` +
|
|
484
|
-
`
|
|
485
|
-
`
|
|
486
|
-
`
|
|
487
|
-
`
|
|
488
|
-
`
|
|
484
|
+
` - Check if page is still loading (look for spinner)\n` +
|
|
485
|
+
` - Open Chrome DevTools to check for JavaScript errors\n` +
|
|
486
|
+
` - Reload page and retry: bdg stop && bdg <url>\n` +
|
|
487
|
+
` - Use simpler CDP method or reduce data size\n` +
|
|
488
|
+
` - Check Chrome console: chrome://inspect`;
|
|
489
489
|
reject(new CDPTimeoutError(errorMessage));
|
|
490
490
|
}, this.config.commandTimeout);
|
|
491
491
|
this.pendingMessages.set(id, {
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,gBAAgB,OAAO,CAAC;AAErC;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA2B,CAAC;AAE3D;;GAEG;AACH,eAAO,MAAM,wBAAwB,WAAW,CAAC;AAEjD;;GAEG;AACH,eAAO,MAAM,4BAA4B,QAAQ,CAAC;AAElD;;GAEG;AACH,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,eAAO,MAAM,cAAc,cAAc,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,aAAa,mBAAmB,CAAC;AAE9C;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,UAU5B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAKpD,CAAC;AAMF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;GAGG;AACH,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AAMjD;;;GAGG;AACH,eAAO,MAAM,2BAA2B,QAAmB,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,kCAAkC,QAAmB,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AAMtD;;;GAGG;AACH,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAE3C;;;GAGG;AACH,eAAO,MAAM,8BAA8B,QAAQ,CAAC;AAEpD;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,OAAO,CAAC;AAMtD;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AAEtD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAMD;;GAEG;AACH,eAAO,MAAM,uBAAuB,0BAA0B,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -51,9 +51,10 @@ export const BDG_CHROME_FLAGS = [
|
|
|
51
51
|
'--no-default-browser-check',
|
|
52
52
|
'--disable-search-engine-choice-screen',
|
|
53
53
|
'--disable-session-crashed-bubble', // Suppress "Restore Pages?" popup after unclean shutdown
|
|
54
|
+
'--hide-crash-restore-bubble', // New flag to hide crash restore bubble
|
|
54
55
|
'--disable-infobars', // Disable all info bars including restore prompt
|
|
55
56
|
'--disable-notifications', // Suppress notification permission prompts
|
|
56
|
-
'--disable-features=Translate', // Suppress Google Translate popup
|
|
57
|
+
'--disable-features=Translate,SessionCrashedBubble', // Suppress Google Translate popup and SessionCrashedBubble
|
|
57
58
|
'--disable-background-mode', // Attempt to prevent focus stealing (doesn't work reliably on macOS)
|
|
58
59
|
];
|
|
59
60
|
/**
|
|
@@ -78,6 +79,7 @@ export const BDG_CHROME_PREFS = {
|
|
|
78
79
|
'browser.show_quit_confirmation_dialog': false, // Disable quit confirmation for automation
|
|
79
80
|
'translate.enabled': false, // Disable Google Translate popup
|
|
80
81
|
translate_site_blacklist: ['*'], // Block translate for all sites
|
|
82
|
+
'profile.exit_type': 'Normal', // Trick Chrome into thinking it shut down correctly
|
|
81
83
|
};
|
|
82
84
|
// ============================================================================
|
|
83
85
|
// DATA COLLECTION LIMITS
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB;IAChB,4BAA4B;IAC5B,uCAAuC;IACvC,kCAAkC,EAAE,yDAAyD;IAC7F,oBAAoB,EAAE,iDAAiD;IACvE,yBAAyB,EAAE,2CAA2C;IACtE,
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,CAAC;AAErC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,gBAAgB,CAAC,CAAC;AAE3D;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAQ,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,KAAK,CAAC;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAEnD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,gBAAgB,CAAC;AAE9C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB;IAChB,4BAA4B;IAC5B,uCAAuC;IACvC,kCAAkC,EAAE,yDAAyD;IAC7F,6BAA6B,EAAE,wCAAwC;IACvE,oBAAoB,EAAE,iDAAiD;IACvE,yBAAyB,EAAE,2CAA2C;IACtE,mDAAmD,EAAE,2DAA2D;IAChH,2BAA2B,EAAE,qEAAqE;CACnG,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,eAAe,EAAE,oCAAoC;IACrD,yBAAyB,EAAE,+CAA+C;IAC1E,+BAA+B,EAAE,wCAAwC;IACzE,kBAAkB,EAAE,0DAA0D;CAC/E,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA4B;IACvD,uCAAuC,EAAE,KAAK,EAAE,2CAA2C;IAC3F,mBAAmB,EAAE,KAAK,EAAE,iCAAiC;IAC7D,wBAAwB,EAAE,CAAC,GAAG,CAAC,EAAE,gCAAgC;IACjE,mBAAmB,EAAE,QAAQ,EAAE,oDAAoD;CACpF,CAAC;AAEF,+EAA+E;AAC/E,yBAAyB;AACzB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAExD,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAEpE;;;GAGG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE3E;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM;AAE7D,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,KAAK,CAAC;AAEpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iCAAiC,GAAG,IAAI,CAAC;AAEtD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO;AAE9D;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,SAAS;QACpD,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,EAAE,CAAC;QACjD,CAAC,CAAC,KAAK,CAAC;AACZ,CAAC;AAED,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern definitions for detecting verbose CDP usage.
|
|
3
|
+
*
|
|
4
|
+
* Defines patterns that indicate agents are using verbose CDP commands
|
|
5
|
+
* when more efficient high-level wrapper commands are available.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Pattern definition for detecting verbose CDP usage.
|
|
9
|
+
*/
|
|
10
|
+
export interface PatternDefinition {
|
|
11
|
+
/** Pattern identifier */
|
|
12
|
+
name: string;
|
|
13
|
+
/** CDP methods that trigger this pattern */
|
|
14
|
+
cdpMethods: string[];
|
|
15
|
+
/** Number of occurrences before showing hint */
|
|
16
|
+
threshold: number;
|
|
17
|
+
/** Suggested high-level alternative command */
|
|
18
|
+
alternative: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Registry of all detectable patterns.
|
|
22
|
+
*
|
|
23
|
+
* Each pattern tracks specific CDP method usage and suggests
|
|
24
|
+
* efficient alternatives when threshold is reached.
|
|
25
|
+
*/
|
|
26
|
+
export declare const PATTERNS: PatternDefinition[];
|
|
27
|
+
/**
|
|
28
|
+
* Get pattern by name.
|
|
29
|
+
*
|
|
30
|
+
* @param name - Pattern identifier
|
|
31
|
+
* @returns Pattern definition if found, undefined otherwise
|
|
32
|
+
*/
|
|
33
|
+
export declare function getPattern(name: string): PatternDefinition | undefined;
|
|
34
|
+
/**
|
|
35
|
+
* Get all patterns.
|
|
36
|
+
*
|
|
37
|
+
* @returns Complete pattern registry
|
|
38
|
+
*/
|
|
39
|
+
export declare function getAllPatterns(): PatternDefinition[];
|
|
40
|
+
/**
|
|
41
|
+
* Find patterns matching a CDP method.
|
|
42
|
+
*
|
|
43
|
+
* @param method - CDP method name (e.g., "Runtime.evaluate")
|
|
44
|
+
* @returns Matching pattern definitions
|
|
45
|
+
*/
|
|
46
|
+
export declare function findPatternsForMethod(method: string): PatternDefinition[];
|
|
47
|
+
//# sourceMappingURL=patternDefinitions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patternDefinitions.d.ts","sourceRoot":"","sources":["../../src/daemon/patternDefinitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gDAAgD;IAChD,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,EAAE,iBAAiB,EA+BvC,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAEtE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,IAAI,iBAAiB,EAAE,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAEzE"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern definitions for detecting verbose CDP usage.
|
|
3
|
+
*
|
|
4
|
+
* Defines patterns that indicate agents are using verbose CDP commands
|
|
5
|
+
* when more efficient high-level wrapper commands are available.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Registry of all detectable patterns.
|
|
9
|
+
*
|
|
10
|
+
* Each pattern tracks specific CDP method usage and suggests
|
|
11
|
+
* efficient alternatives when threshold is reached.
|
|
12
|
+
*/
|
|
13
|
+
export const PATTERNS = [
|
|
14
|
+
{
|
|
15
|
+
name: 'dom_query_with_evaluate',
|
|
16
|
+
cdpMethods: ['Runtime.evaluate'],
|
|
17
|
+
threshold: 2,
|
|
18
|
+
alternative: 'bdg dom query <selector>',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
name: 'screenshot_with_cdp',
|
|
22
|
+
cdpMethods: ['Page.captureScreenshot'],
|
|
23
|
+
threshold: 1,
|
|
24
|
+
alternative: 'bdg dom screenshot [path]',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'cookies_with_cdp',
|
|
28
|
+
cdpMethods: ['Network.getAllCookies', 'Network.getCookies'],
|
|
29
|
+
threshold: 1,
|
|
30
|
+
alternative: 'bdg network getCookies',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'multiple_runtime_evaluations',
|
|
34
|
+
cdpMethods: ['Runtime.evaluate'],
|
|
35
|
+
threshold: 4,
|
|
36
|
+
alternative: 'bdg dom eval <javascript>',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'network_body_fetching',
|
|
40
|
+
cdpMethods: ['Network.getResponseBody'],
|
|
41
|
+
threshold: 3,
|
|
42
|
+
alternative: 'bdg details network <id>',
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
/**
|
|
46
|
+
* Get pattern by name.
|
|
47
|
+
*
|
|
48
|
+
* @param name - Pattern identifier
|
|
49
|
+
* @returns Pattern definition if found, undefined otherwise
|
|
50
|
+
*/
|
|
51
|
+
export function getPattern(name) {
|
|
52
|
+
return PATTERNS.find((p) => p.name === name);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get all patterns.
|
|
56
|
+
*
|
|
57
|
+
* @returns Complete pattern registry
|
|
58
|
+
*/
|
|
59
|
+
export function getAllPatterns() {
|
|
60
|
+
return PATTERNS;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Find patterns matching a CDP method.
|
|
64
|
+
*
|
|
65
|
+
* @param method - CDP method name (e.g., "Runtime.evaluate")
|
|
66
|
+
* @returns Matching pattern definitions
|
|
67
|
+
*/
|
|
68
|
+
export function findPatternsForMethod(method) {
|
|
69
|
+
return PATTERNS.filter((p) => p.cdpMethods.includes(method));
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=patternDefinitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patternDefinitions.js","sourceRoot":"","sources":["../../src/daemon/patternDefinitions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAwB;IAC3C;QACE,IAAI,EAAE,yBAAyB;QAC/B,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,0BAA0B;KACxC;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,CAAC,wBAAwB,CAAC;QACtC,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,2BAA2B;KACzC;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,UAAU,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;QAC3D,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,wBAAwB;KACtC;IACD;QACE,IAAI,EAAE,8BAA8B;QACpC,UAAU,EAAE,CAAC,kBAAkB,CAAC;QAChC,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,2BAA2B;KACzC;IACD;QACE,IAAI,EAAE,uBAAuB;QAC7B,UAAU,EAAE,CAAC,yBAAyB,CAAC;QACvC,SAAS,EAAE,CAAC;QACZ,WAAW,EAAE,0BAA0B;KACxC;CACF,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern detector for identifying verbose CDP usage.
|
|
3
|
+
*
|
|
4
|
+
* Tracks CDP command execution and detects patterns that indicate
|
|
5
|
+
* agents are using verbose approaches when high-level alternatives exist.
|
|
6
|
+
*/
|
|
7
|
+
import { type PatternDefinition } from './patternDefinitions.js';
|
|
8
|
+
/**
|
|
9
|
+
* Pattern detection result with hint information.
|
|
10
|
+
*/
|
|
11
|
+
export interface PatternDetectionResult {
|
|
12
|
+
/** Whether a hint should be shown */
|
|
13
|
+
shouldShow: boolean;
|
|
14
|
+
/** Pattern that was detected */
|
|
15
|
+
pattern?: PatternDefinition;
|
|
16
|
+
/** How many times this hint has been shown */
|
|
17
|
+
shownCount?: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Pattern detector for tracking CDP usage and suggesting alternatives.
|
|
21
|
+
*
|
|
22
|
+
* Maintains state for pattern occurrence counts and hint display limits.
|
|
23
|
+
* Designed to provide helpful guidance without overwhelming users.
|
|
24
|
+
*/
|
|
25
|
+
export declare class PatternDetector {
|
|
26
|
+
private readonly methodCounts;
|
|
27
|
+
private readonly hintShownCounts;
|
|
28
|
+
private readonly maxHintsPerPattern;
|
|
29
|
+
/**
|
|
30
|
+
* Track a CDP command execution.
|
|
31
|
+
*
|
|
32
|
+
* Records the command and checks if any patterns are triggered.
|
|
33
|
+
* Returns detection result indicating if a hint should be shown.
|
|
34
|
+
*
|
|
35
|
+
* @param method - CDP method that was executed (e.g., "Runtime.evaluate")
|
|
36
|
+
* @returns Detection result with hint information
|
|
37
|
+
*/
|
|
38
|
+
trackCommand(method: string): PatternDetectionResult;
|
|
39
|
+
/**
|
|
40
|
+
* Reset all pattern tracking state.
|
|
41
|
+
*
|
|
42
|
+
* Useful for testing or when starting a fresh analysis.
|
|
43
|
+
*/
|
|
44
|
+
reset(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Get current method count for a specific CDP method.
|
|
47
|
+
*
|
|
48
|
+
* @param method - CDP method name
|
|
49
|
+
* @returns Number of times method has been called
|
|
50
|
+
*/
|
|
51
|
+
getMethodCount(method: string): number;
|
|
52
|
+
/**
|
|
53
|
+
* Get hint shown count for a specific pattern.
|
|
54
|
+
*
|
|
55
|
+
* @param patternName - Pattern identifier
|
|
56
|
+
* @returns Number of times hint has been shown for this pattern
|
|
57
|
+
*/
|
|
58
|
+
getHintShownCount(patternName: string): number;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=patternDetector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patternDetector.d.ts","sourceRoot":"","sources":["../../src/daemon/patternDetector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAyB,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,qCAAqC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,gCAAgC;IAChC,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAC5B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAkC;IAC/D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkC;IAClE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAK;IAExC;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB;IAwBpD;;;;OAIG;IACH,KAAK,IAAI,IAAI;IAKb;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAItC;;;;;OAKG;IACH,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM;CAG/C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pattern detector for identifying verbose CDP usage.
|
|
3
|
+
*
|
|
4
|
+
* Tracks CDP command execution and detects patterns that indicate
|
|
5
|
+
* agents are using verbose approaches when high-level alternatives exist.
|
|
6
|
+
*/
|
|
7
|
+
import { findPatternsForMethod } from './patternDefinitions.js';
|
|
8
|
+
/**
|
|
9
|
+
* Pattern detector for tracking CDP usage and suggesting alternatives.
|
|
10
|
+
*
|
|
11
|
+
* Maintains state for pattern occurrence counts and hint display limits.
|
|
12
|
+
* Designed to provide helpful guidance without overwhelming users.
|
|
13
|
+
*/
|
|
14
|
+
export class PatternDetector {
|
|
15
|
+
methodCounts = new Map();
|
|
16
|
+
hintShownCounts = new Map();
|
|
17
|
+
maxHintsPerPattern = 3;
|
|
18
|
+
/**
|
|
19
|
+
* Track a CDP command execution.
|
|
20
|
+
*
|
|
21
|
+
* Records the command and checks if any patterns are triggered.
|
|
22
|
+
* Returns detection result indicating if a hint should be shown.
|
|
23
|
+
*
|
|
24
|
+
* @param method - CDP method that was executed (e.g., "Runtime.evaluate")
|
|
25
|
+
* @returns Detection result with hint information
|
|
26
|
+
*/
|
|
27
|
+
trackCommand(method) {
|
|
28
|
+
const currentCount = (this.methodCounts.get(method) ?? 0) + 1;
|
|
29
|
+
this.methodCounts.set(method, currentCount);
|
|
30
|
+
const matchingPatterns = findPatternsForMethod(method);
|
|
31
|
+
for (const pattern of matchingPatterns) {
|
|
32
|
+
if (currentCount >= pattern.threshold) {
|
|
33
|
+
const shownCount = this.hintShownCounts.get(pattern.name) ?? 0;
|
|
34
|
+
if (shownCount < this.maxHintsPerPattern) {
|
|
35
|
+
this.hintShownCounts.set(pattern.name, shownCount + 1);
|
|
36
|
+
return {
|
|
37
|
+
shouldShow: true,
|
|
38
|
+
pattern,
|
|
39
|
+
shownCount: shownCount + 1,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
return { shouldShow: false };
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Reset all pattern tracking state.
|
|
48
|
+
*
|
|
49
|
+
* Useful for testing or when starting a fresh analysis.
|
|
50
|
+
*/
|
|
51
|
+
reset() {
|
|
52
|
+
this.methodCounts.clear();
|
|
53
|
+
this.hintShownCounts.clear();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get current method count for a specific CDP method.
|
|
57
|
+
*
|
|
58
|
+
* @param method - CDP method name
|
|
59
|
+
* @returns Number of times method has been called
|
|
60
|
+
*/
|
|
61
|
+
getMethodCount(method) {
|
|
62
|
+
return this.methodCounts.get(method) ?? 0;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Get hint shown count for a specific pattern.
|
|
66
|
+
*
|
|
67
|
+
* @param patternName - Pattern identifier
|
|
68
|
+
* @returns Number of times hint has been shown for this pattern
|
|
69
|
+
*/
|
|
70
|
+
getHintShownCount(patternName) {
|
|
71
|
+
return this.hintShownCounts.get(patternName) ?? 0;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=patternDetector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patternDetector.js","sourceRoot":"","sources":["../../src/daemon/patternDetector.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,qBAAqB,EAA0B,MAAM,yBAAyB,CAAC;AAcxF;;;;;GAKG;AACH,MAAM,OAAO,eAAe;IACT,YAAY,GAAwB,IAAI,GAAG,EAAE,CAAC;IAC9C,eAAe,GAAwB,IAAI,GAAG,EAAE,CAAC;IACjD,kBAAkB,GAAG,CAAC,CAAC;IAExC;;;;;;;;OAQG;IACH,YAAY,CAAC,MAAc;QACzB,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAE5C,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAEvD,KAAK,MAAM,OAAO,IAAI,gBAAgB,EAAE,CAAC;YACvC,IAAI,YAAY,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAE/D,IAAI,UAAU,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;oBACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;oBACvD,OAAO;wBACL,UAAU,EAAE,IAAI;wBAChB,OAAO;wBACP,UAAU,EAAE,UAAU,GAAG,CAAC;qBAC3B,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK;QACH,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,cAAc,CAAC,MAAc;QAC3B,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,iBAAiB,CAAC,WAAmB;QACnC,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for PatternDetector.
|
|
3
|
+
*
|
|
4
|
+
* Tests the contract of pattern detection behavior:
|
|
5
|
+
* - Hint display after threshold
|
|
6
|
+
* - Per-pattern threshold respect
|
|
7
|
+
* - Max shows limit
|
|
8
|
+
* - Pattern matching logic
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=PatternDetector.unit.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternDetector.unit.test.d.ts","sourceRoot":"","sources":["../../../../src/daemon/worker/__tests__/PatternDetector.unit.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for PatternDetector.
|
|
3
|
+
*
|
|
4
|
+
* Tests the contract of pattern detection behavior:
|
|
5
|
+
* - Hint display after threshold
|
|
6
|
+
* - Per-pattern threshold respect
|
|
7
|
+
* - Max shows limit
|
|
8
|
+
* - Pattern matching logic
|
|
9
|
+
*/
|
|
10
|
+
import assert from 'node:assert';
|
|
11
|
+
import { describe, test } from 'node:test';
|
|
12
|
+
import { PatternDetector } from '../../../daemon/patternDetector.js';
|
|
13
|
+
describe('PatternDetector', () => {
|
|
14
|
+
describe('threshold-based hint display', () => {
|
|
15
|
+
test('does not show hint below threshold', () => {
|
|
16
|
+
const detector = new PatternDetector();
|
|
17
|
+
const result1 = detector.trackCommand('Runtime.evaluate');
|
|
18
|
+
assert.strictEqual(result1.shouldShow, false);
|
|
19
|
+
assert.strictEqual(result1.pattern, undefined);
|
|
20
|
+
});
|
|
21
|
+
test('shows hint when threshold is reached', () => {
|
|
22
|
+
const detector = new PatternDetector();
|
|
23
|
+
detector.trackCommand('Runtime.evaluate');
|
|
24
|
+
const result2 = detector.trackCommand('Runtime.evaluate');
|
|
25
|
+
assert.strictEqual(result2.shouldShow, true);
|
|
26
|
+
assert.ok(result2.pattern);
|
|
27
|
+
assert.ok(result2.pattern.alternative.includes('bdg dom query'));
|
|
28
|
+
});
|
|
29
|
+
test('continues showing hint after threshold until max shows', () => {
|
|
30
|
+
const detector = new PatternDetector();
|
|
31
|
+
detector.trackCommand('Runtime.evaluate');
|
|
32
|
+
detector.trackCommand('Runtime.evaluate');
|
|
33
|
+
const result3 = detector.trackCommand('Runtime.evaluate');
|
|
34
|
+
assert.strictEqual(result3.shouldShow, true);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
describe('per-pattern threshold configuration', () => {
|
|
38
|
+
test('respects threshold of 1 for screenshot pattern', () => {
|
|
39
|
+
const detector = new PatternDetector();
|
|
40
|
+
const result = detector.trackCommand('Page.captureScreenshot');
|
|
41
|
+
assert.strictEqual(result.shouldShow, true);
|
|
42
|
+
assert.ok(result.pattern?.alternative.includes('bdg dom screenshot'));
|
|
43
|
+
});
|
|
44
|
+
test('respects threshold of 1 for cookies pattern', () => {
|
|
45
|
+
const detector = new PatternDetector();
|
|
46
|
+
const result1 = detector.trackCommand('Network.getCookies');
|
|
47
|
+
assert.strictEqual(result1.shouldShow, true);
|
|
48
|
+
assert.ok(result1.pattern?.alternative.includes('bdg network getCookies'));
|
|
49
|
+
});
|
|
50
|
+
test('respects threshold of 3 for network body pattern', () => {
|
|
51
|
+
const detector = new PatternDetector();
|
|
52
|
+
const result1 = detector.trackCommand('Network.getResponseBody');
|
|
53
|
+
const result2 = detector.trackCommand('Network.getResponseBody');
|
|
54
|
+
assert.strictEqual(result1.shouldShow, false);
|
|
55
|
+
assert.strictEqual(result2.shouldShow, false);
|
|
56
|
+
const result3 = detector.trackCommand('Network.getResponseBody');
|
|
57
|
+
assert.strictEqual(result3.shouldShow, true);
|
|
58
|
+
assert.ok(result3.pattern?.alternative.includes('bdg details network'));
|
|
59
|
+
});
|
|
60
|
+
test('respects threshold of 4 for multiple runtime evaluations', () => {
|
|
61
|
+
const detector = new PatternDetector();
|
|
62
|
+
detector.trackCommand('Runtime.evaluate');
|
|
63
|
+
detector.trackCommand('Runtime.evaluate');
|
|
64
|
+
detector.trackCommand('Runtime.evaluate');
|
|
65
|
+
const result4 = detector.trackCommand('Runtime.evaluate');
|
|
66
|
+
assert.strictEqual(result4.shouldShow, true);
|
|
67
|
+
assert.ok(result4.pattern?.alternative.includes('bdg dom eval'));
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
describe('max shows limit', () => {
|
|
71
|
+
test('stops showing hint after max shows limit reached', () => {
|
|
72
|
+
const detector = new PatternDetector();
|
|
73
|
+
detector.trackCommand('Runtime.evaluate');
|
|
74
|
+
detector.trackCommand('Runtime.evaluate');
|
|
75
|
+
let lastResult;
|
|
76
|
+
for (let i = 0; i < 10; i++) {
|
|
77
|
+
lastResult = detector.trackCommand('Runtime.evaluate');
|
|
78
|
+
}
|
|
79
|
+
assert.strictEqual(lastResult?.shouldShow, false);
|
|
80
|
+
});
|
|
81
|
+
test('tracks hint count per pattern independently', () => {
|
|
82
|
+
const detector = new PatternDetector();
|
|
83
|
+
detector.trackCommand('Runtime.evaluate');
|
|
84
|
+
detector.trackCommand('Runtime.evaluate');
|
|
85
|
+
for (let i = 0; i < 10; i++) {
|
|
86
|
+
detector.trackCommand('Runtime.evaluate');
|
|
87
|
+
}
|
|
88
|
+
const screenshotResult = detector.trackCommand('Page.captureScreenshot');
|
|
89
|
+
assert.strictEqual(screenshotResult.shouldShow, true);
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
describe('pattern matching', () => {
|
|
93
|
+
test('matches multiple CDP methods to same pattern', () => {
|
|
94
|
+
const detector = new PatternDetector();
|
|
95
|
+
const result1 = detector.trackCommand('Network.getCookies');
|
|
96
|
+
const result2 = detector.trackCommand('Network.getAllCookies');
|
|
97
|
+
assert.strictEqual(result1.shouldShow, true);
|
|
98
|
+
assert.strictEqual(result2.shouldShow, false);
|
|
99
|
+
assert.strictEqual(result1.pattern?.name, result2.pattern?.name);
|
|
100
|
+
});
|
|
101
|
+
test('returns undefined pattern for unmatched commands', () => {
|
|
102
|
+
const detector = new PatternDetector();
|
|
103
|
+
const result = detector.trackCommand('DOM.getDocument');
|
|
104
|
+
assert.strictEqual(result.shouldShow, false);
|
|
105
|
+
assert.strictEqual(result.pattern, undefined);
|
|
106
|
+
});
|
|
107
|
+
test('handles case-insensitive method names', () => {
|
|
108
|
+
const detector = new PatternDetector();
|
|
109
|
+
detector.trackCommand('runtime.evaluate');
|
|
110
|
+
const result = detector.trackCommand('RUNTIME.EVALUATE');
|
|
111
|
+
assert.strictEqual(result.shouldShow, true);
|
|
112
|
+
assert.ok(result.pattern?.alternative.includes('bdg dom query'));
|
|
113
|
+
});
|
|
114
|
+
});
|
|
115
|
+
describe('state persistence', () => {
|
|
116
|
+
test('maintains count across multiple method calls', () => {
|
|
117
|
+
const detector = new PatternDetector();
|
|
118
|
+
detector.trackCommand('Runtime.evaluate');
|
|
119
|
+
detector.trackCommand('Page.captureScreenshot');
|
|
120
|
+
const result = detector.trackCommand('Runtime.evaluate');
|
|
121
|
+
assert.strictEqual(result.shouldShow, true);
|
|
122
|
+
});
|
|
123
|
+
test('tracks separate counts for different patterns', () => {
|
|
124
|
+
const detector = new PatternDetector();
|
|
125
|
+
detector.trackCommand('Runtime.evaluate');
|
|
126
|
+
detector.trackCommand('Network.getResponseBody');
|
|
127
|
+
detector.trackCommand('Runtime.evaluate');
|
|
128
|
+
const evalResult = detector.trackCommand('Runtime.evaluate');
|
|
129
|
+
assert.strictEqual(evalResult.shouldShow, false);
|
|
130
|
+
detector.trackCommand('Network.getResponseBody');
|
|
131
|
+
const bodyResult = detector.trackCommand('Network.getResponseBody');
|
|
132
|
+
assert.strictEqual(bodyResult.shouldShow, true);
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=PatternDetector.unit.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PatternDetector.unit.test.js","sourceRoot":"","sources":["../../../../src/daemon/worker/__tests__/PatternDetector.unit.test.ts"],"names":[],"mappings":"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"}
|