browser-debugger-cli 0.6.2 → 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/README.md +9 -3
- package/dist/cdp/protocol.d.ts.map +1 -1
- package/dist/cdp/protocol.js +0 -6
- package/dist/cdp/protocol.js.map +1 -1
- package/dist/cdp/schema.d.ts.map +1 -1
- package/dist/cdp/schema.js +0 -2
- package/dist/cdp/schema.js.map +1 -1
- 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.d.ts.map +1 -1
- package/dist/commands/cdp.js +9 -24
- package/dist/commands/cdp.js.map +1 -1
- package/dist/commands/cleanup.d.ts.map +1 -1
- package/dist/commands/cleanup.js +0 -13
- package/dist/commands/cleanup.js.map +1 -1
- package/dist/commands/console.d.ts.map +1 -1
- package/dist/commands/console.js +22 -7
- package/dist/commands/console.js.map +1 -1
- package/dist/commands/details.d.ts.map +1 -1
- package/dist/commands/details.js +0 -5
- package/dist/commands/details.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 -7
- 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 -11
- package/dist/commands/dom/formFillHelpers.js.map +1 -1
- package/dist/commands/dom/formInteraction.d.ts.map +1 -1
- package/dist/commands/dom/formInteraction.js +0 -5
- package/dist/commands/dom/formInteraction.js.map +1 -1
- package/dist/commands/dom/formSubmitHelpers.d.ts.map +1 -1
- package/dist/commands/dom/formSubmitHelpers.js +0 -13
- package/dist/commands/dom/formSubmitHelpers.js.map +1 -1
- package/dist/commands/dom/helpers.d.ts.map +1 -1
- package/dist/commands/dom/helpers.js +0 -22
- package/dist/commands/dom/helpers.js.map +1 -1
- package/dist/commands/dom/index.d.ts.map +1 -1
- package/dist/commands/dom/index.js +85 -19
- package/dist/commands/dom/index.js.map +1 -1
- package/dist/commands/dom/reactEventHelpers.d.ts +3 -3
- package/dist/commands/dom/reactEventHelpers.d.ts.map +1 -1
- package/dist/commands/dom/reactEventHelpers.js +3 -31
- package/dist/commands/dom/reactEventHelpers.js.map +1 -1
- 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 +185 -10
- package/dist/commands/network.js.map +1 -1
- package/dist/commands/peek.d.ts.map +1 -1
- package/dist/commands/peek.js +17 -14
- 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 -8
- package/dist/commands/shared/CommandRunner.js.map +1 -1
- package/dist/commands/shared/__tests__/validation.unit.test.d.ts +7 -0
- package/dist/commands/shared/__tests__/validation.unit.test.d.ts.map +1 -0
- package/dist/commands/shared/__tests__/validation.unit.test.js +141 -0
- package/dist/commands/shared/__tests__/validation.unit.test.js.map +1 -0
- package/dist/commands/shared/startHelpers.d.ts.map +1 -1
- package/dist/commands/shared/startHelpers.js +0 -10
- package/dist/commands/shared/startHelpers.js.map +1 -1
- package/dist/commands/shared/validation.d.ts +19 -0
- package/dist/commands/shared/validation.d.ts.map +1 -1
- package/dist/commands/shared/validation.js +110 -7
- package/dist/commands/shared/validation.js.map +1 -1
- package/dist/commands/start.d.ts.map +1 -1
- package/dist/commands/start.js +0 -6
- package/dist/commands/start.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +0 -2
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/stop.d.ts.map +1 -1
- package/dist/commands/stop.js +2 -11
- package/dist/commands/stop.js.map +1 -1
- package/dist/commands/tail.js +6 -7
- package/dist/commands/tail.js.map +1 -1
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +0 -5
- package/dist/commands.js.map +1 -1
- package/dist/connection/cdp.d.ts.map +1 -1
- package/dist/connection/cdp.js +9 -12
- package/dist/connection/cdp.js.map +1 -1
- package/dist/connection/diagnostics.d.ts.map +1 -1
- package/dist/connection/diagnostics.js +7 -4
- package/dist/connection/diagnostics.js.map +1 -1
- package/dist/connection/pageReadiness.d.ts.map +1 -1
- package/dist/connection/pageReadiness.js +0 -1
- package/dist/connection/pageReadiness.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +3 -1
- package/dist/constants.js.map +1 -1
- package/dist/daemon/__tests__/commandRegistry.contract.test.js +259 -0
- package/dist/daemon/__tests__/commandRegistry.contract.test.js.map +1 -1
- package/dist/daemon/handlers/BaseHandler.d.ts +75 -0
- package/dist/daemon/handlers/BaseHandler.d.ts.map +1 -0
- package/dist/daemon/handlers/BaseHandler.js +103 -0
- package/dist/daemon/handlers/BaseHandler.js.map +1 -0
- package/dist/daemon/handlers/CommandHandlers.d.ts +3 -4
- package/dist/daemon/handlers/CommandHandlers.d.ts.map +1 -1
- package/dist/daemon/handlers/CommandHandlers.js +14 -52
- package/dist/daemon/handlers/CommandHandlers.js.map +1 -1
- package/dist/daemon/handlers/QueryHandlers.d.ts +8 -6
- package/dist/daemon/handlers/QueryHandlers.d.ts.map +1 -1
- package/dist/daemon/handlers/QueryHandlers.js +42 -94
- package/dist/daemon/handlers/QueryHandlers.js.map +1 -1
- package/dist/daemon/handlers/SessionHandlers.d.ts.map +1 -1
- package/dist/daemon/handlers/SessionHandlers.js +0 -15
- package/dist/daemon/handlers/SessionHandlers.js.map +1 -1
- package/dist/daemon/handlers/requestHandlers.d.ts +5 -1
- package/dist/daemon/handlers/requestHandlers.d.ts.map +1 -1
- package/dist/daemon/handlers/requestHandlers.js +7 -2
- package/dist/daemon/handlers/requestHandlers.js.map +1 -1
- package/dist/daemon/handlers/responseHandler.d.ts.map +1 -1
- package/dist/daemon/handlers/responseHandler.js +19 -8
- package/dist/daemon/handlers/responseHandler.js.map +1 -1
- package/dist/daemon/ipcServer.d.ts.map +1 -1
- package/dist/daemon/ipcServer.js +4 -11
- package/dist/daemon/ipcServer.js.map +1 -1
- package/dist/daemon/launcher.d.ts.map +1 -1
- package/dist/daemon/launcher.js +0 -18
- package/dist/daemon/launcher.js.map +1 -1
- package/dist/daemon/lifecycle/cdpSetup.d.ts.map +1 -1
- package/dist/daemon/lifecycle/cdpSetup.js +0 -4
- package/dist/daemon/lifecycle/cdpSetup.js.map +1 -1
- package/dist/daemon/lifecycle/chromeConnection.js +0 -1
- package/dist/daemon/lifecycle/chromeConnection.js.map +1 -1
- package/dist/daemon/lifecycle/signalHandlers.d.ts.map +1 -1
- package/dist/daemon/lifecycle/signalHandlers.js +0 -3
- package/dist/daemon/lifecycle/signalHandlers.js.map +1 -1
- package/dist/daemon/lifecycle/workerCleanup.d.ts.map +1 -1
- package/dist/daemon/lifecycle/workerCleanup.js +0 -7
- package/dist/daemon/lifecycle/workerCleanup.js.map +1 -1
- package/dist/daemon/lifecycle/workerIpc.d.ts.map +1 -1
- package/dist/daemon/lifecycle/workerIpc.js +0 -1
- package/dist/daemon/lifecycle/workerIpc.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/server/JsonlParser.d.ts.map +1 -1
- package/dist/daemon/server/JsonlParser.js +0 -2
- package/dist/daemon/server/JsonlParser.js.map +1 -1
- package/dist/daemon/startSession.d.ts.map +1 -1
- package/dist/daemon/startSession.js +0 -15
- package/dist/daemon/startSession.js.map +1 -1
- 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 +46 -2
- package/dist/daemon/worker/commandRegistry.js.map +1 -1
- package/dist/daemon/worker/plugins.d.ts.map +1 -1
- package/dist/daemon/worker/plugins.js +0 -3
- package/dist/daemon/worker/plugins.js.map +1 -1
- package/dist/daemon/worker.js +0 -9
- package/dist/daemon/worker.js.map +1 -1
- package/dist/daemon.js +0 -2
- package/dist/daemon.js.map +1 -1
- package/dist/index.js +0 -14
- package/dist/index.js.map +1 -1
- package/dist/ipc/client.d.ts +47 -1
- package/dist/ipc/client.d.ts.map +1 -1
- package/dist/ipc/client.js +51 -0
- package/dist/ipc/client.js.map +1 -1
- package/dist/ipc/index.d.ts.map +1 -1
- package/dist/ipc/index.js +0 -6
- package/dist/ipc/index.js.map +1 -1
- package/dist/ipc/protocol/commands.d.ts +46 -0
- package/dist/ipc/protocol/commands.d.ts.map +1 -1
- package/dist/ipc/protocol/commands.js +8 -0
- package/dist/ipc/protocol/commands.js.map +1 -1
- package/dist/ipc/session/queries.d.ts +26 -2
- package/dist/ipc/session/queries.d.ts.map +1 -1
- package/dist/ipc/transport/index.d.ts.map +1 -1
- package/dist/ipc/transport/index.js +0 -1
- package/dist/ipc/transport/index.js.map +1 -1
- package/dist/ipc/transport/jsonl.d.ts.map +1 -1
- package/dist/ipc/transport/jsonl.js +0 -1
- package/dist/ipc/transport/jsonl.js.map +1 -1
- package/dist/session/cleanup.d.ts.map +1 -1
- package/dist/session/cleanup.js +2 -20
- 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/__tests__/filters.unit.test.js +119 -1
- package/dist/telemetry/__tests__/filters.unit.test.js.map +1 -1
- package/dist/telemetry/__tests__/network.contract.test.js +114 -0
- package/dist/telemetry/__tests__/network.contract.test.js.map +1 -1
- 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/telemetry/dom.js +4 -4
- package/dist/telemetry/dom.js.map +1 -1
- package/dist/telemetry/filters.d.ts +17 -0
- package/dist/telemetry/filters.d.ts.map +1 -1
- package/dist/telemetry/filters.js +25 -0
- package/dist/telemetry/filters.js.map +1 -1
- package/dist/telemetry/har/__tests__/builder.unit.test.d.ts +8 -0
- package/dist/telemetry/har/__tests__/builder.unit.test.d.ts.map +1 -0
- package/dist/telemetry/har/__tests__/builder.unit.test.js +694 -0
- package/dist/telemetry/har/__tests__/builder.unit.test.js.map +1 -0
- package/dist/telemetry/har/builder.d.ts +43 -0
- package/dist/telemetry/har/builder.d.ts.map +1 -0
- package/dist/telemetry/har/builder.js +440 -0
- package/dist/telemetry/har/builder.js.map +1 -0
- package/dist/telemetry/har/types.d.ts +290 -0
- package/dist/telemetry/har/types.d.ts.map +1 -0
- package/dist/telemetry/har/types.js +7 -0
- package/dist/telemetry/har/types.js.map +1 -0
- package/dist/telemetry/network.d.ts.map +1 -1
- package/dist/telemetry/network.js +37 -4
- package/dist/telemetry/network.js.map +1 -1
- package/dist/types.d.ts +31 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/ui/OutputBuilder.d.ts.map +1 -1
- package/dist/ui/OutputBuilder.js +0 -8
- package/dist/ui/OutputBuilder.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 +0 -1
- package/dist/ui/errors/CommandError.js.map +1 -1
- package/dist/ui/errors/index.d.ts.map +1 -1
- package/dist/ui/errors/index.js +0 -2
- package/dist/ui/errors/index.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/details.d.ts.map +1 -1
- package/dist/ui/formatters/details.js +1 -0
- package/dist/ui/formatters/details.js.map +1 -1
- package/dist/ui/formatters/dom.d.ts.map +1 -1
- package/dist/ui/formatters/dom.js +5 -5
- 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/index.d.ts +1 -0
- package/dist/ui/formatters/index.d.ts.map +1 -1
- package/dist/ui/formatters/index.js +1 -0
- package/dist/ui/formatters/index.js.map +1 -1
- package/dist/ui/formatters/networkHeaders.d.ts +14 -0
- package/dist/ui/formatters/networkHeaders.d.ts.map +1 -0
- package/dist/ui/formatters/networkHeaders.js +47 -0
- package/dist/ui/formatters/networkHeaders.js.map +1 -0
- package/dist/ui/formatters/preview.d.ts.map +1 -1
- package/dist/ui/formatters/preview.js +102 -33
- 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/formatters/status.d.ts.map +1 -1
- package/dist/ui/formatters/status.js +0 -11
- package/dist/ui/formatters/status.js.map +1 -1
- package/dist/ui/formatting.d.ts.map +1 -1
- package/dist/ui/formatting.js +0 -6
- package/dist/ui/formatting.js.map +1 -1
- package/dist/ui/logging/logger.d.ts +1 -1
- package/dist/ui/logging/logger.d.ts.map +1 -1
- package/dist/ui/logging/logger.js.map +1 -1
- package/dist/ui/messages/chrome.d.ts.map +1 -1
- package/dist/ui/messages/chrome.js +0 -6
- package/dist/ui/messages/chrome.js.map +1 -1
- 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 -13
- package/dist/ui/messages/commands.js.map +1 -1
- package/dist/ui/messages/debug.d.ts.map +1 -1
- package/dist/ui/messages/debug.js +0 -6
- package/dist/ui/messages/debug.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/internal.d.ts.map +1 -1
- package/dist/ui/messages/internal.js +0 -3
- package/dist/ui/messages/internal.js.map +1 -1
- package/dist/ui/messages/preview.d.ts.map +1 -1
- package/dist/ui/messages/preview.js +0 -12
- package/dist/ui/messages/preview.js.map +1 -1
- 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 -24
- package/dist/ui/messages/session.js.map +1 -1
- package/dist/utils/atomicFile.d.ts.map +1 -1
- package/dist/utils/atomicFile.js +9 -6
- package/dist/utils/atomicFile.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/exitCodes.d.ts.map +1 -1
- package/dist/utils/exitCodes.js +0 -2
- package/dist/utils/exitCodes.js.map +1 -1
- 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/dist/utils/validation.d.ts.map +1 -1
- package/dist/utils/validation.js +0 -3
- package/dist/utils/validation.js.map +1 -1
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +0 -1
- package/dist/utils/version.js.map +1 -1
- package/package.json +3 -3
|
@@ -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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonlParser.d.ts","sourceRoot":"","sources":["../../../src/daemon/server/JsonlParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;GAEG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,MAAM,CAAM;gBAES,GAAG,EAAE,MAAM;IAExC;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"JsonlParser.d.ts","sourceRoot":"","sources":["../../../src/daemon/server/JsonlParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;GAEG;AACH,qBAAa,WAAW;IAGV,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFhC,OAAO,CAAC,MAAM,CAAM;gBAES,GAAG,EAAE,MAAM;IAExC;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,EAAE;IAwB/B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,SAAS,IAAI,MAAM;CAGpB"}
|
|
@@ -22,9 +22,7 @@ export class JsonlParser {
|
|
|
22
22
|
*/
|
|
23
23
|
parse(chunk) {
|
|
24
24
|
this.buffer += chunk.toString('utf-8');
|
|
25
|
-
// Split on newlines to find complete messages
|
|
26
25
|
const lines = this.buffer.split('\n');
|
|
27
|
-
// Keep incomplete line in buffer for next chunk
|
|
28
26
|
this.buffer = lines.pop() ?? '';
|
|
29
27
|
const messages = [];
|
|
30
28
|
for (const line of lines) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JsonlParser.js","sourceRoot":"","sources":["../../../src/daemon/server/JsonlParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;GAEG;AACH,MAAM,OAAO,WAAW;IAGO;IAFrB,MAAM,GAAG,EAAE,CAAC;IAEpB,YAA6B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAE5C;;;;;OAKG;IACH,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvC,
|
|
1
|
+
{"version":3,"file":"JsonlParser.js","sourceRoot":"","sources":["../../../src/daemon/server/JsonlParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD;;GAEG;AACH,MAAM,OAAO,WAAW;IAGO;IAFrB,MAAM,GAAG,EAAE,CAAC;IAEpB,YAA6B,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAE5C;;;;;OAKG;IACH,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAEvC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAEhC,MAAM,QAAQ,GAAc,EAAE,CAAC;QAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBACjB,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACzC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,+BAA+B,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startSession.d.ts","sourceRoot":"","sources":["../../src/daemon/startSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAKzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA2ChD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;aAGvB,IAAI,EAChB,cAAc,GACd,eAAe,GACf,cAAc,GACd,uBAAuB;aACX,OAAO,CAAC,EAAE,MAAM;gBANhC,OAAO,EAAE,MAAM,EACC,IAAI,EAChB,cAAc,GACd,eAAe,GACf,cAAc,GACd,uBAAuB,EACX,OAAO,CAAC,EAAE,MAAM,YAAA;CAKnC;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,cAAc,CAAC,
|
|
1
|
+
{"version":3,"file":"startSession.d.ts","sourceRoot":"","sources":["../../src/daemon/startSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAS,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;AAKzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AA2ChD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,YAAY,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;aAGvB,IAAI,EAChB,cAAc,GACd,eAAe,GACf,cAAc,GACd,uBAAuB;aACX,OAAO,CAAC,EAAE,MAAM;gBANhC,OAAO,EAAE,MAAM,EACC,IAAI,EAChB,cAAc,GACd,eAAe,GACf,cAAc,GACd,uBAAuB,EACX,OAAO,CAAC,EAAE,MAAM,YAAA;CAKnC;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,cAAc,CAAC,CAwIzB"}
|
|
@@ -59,12 +59,10 @@ export class WorkerStartError extends Error {
|
|
|
59
59
|
* @throws WorkerStartError if worker fails to start
|
|
60
60
|
*/
|
|
61
61
|
export async function launchSessionInWorker(url, options = {}) {
|
|
62
|
-
// Validate URL (P1 Fix #3)
|
|
63
62
|
const validation = validateUrl(url);
|
|
64
63
|
if (!validation.valid) {
|
|
65
64
|
throw new WorkerStartError(validation.error ?? 'Invalid URL', 'SPAWN_FAILED', validation.suggestion);
|
|
66
65
|
}
|
|
67
|
-
// Use filterDefined to build config, automatically omitting undefined values
|
|
68
66
|
const config = filterDefined({
|
|
69
67
|
url,
|
|
70
68
|
port: options.port ?? 9222,
|
|
@@ -76,11 +74,9 @@ export async function launchSessionInWorker(url, options = {}) {
|
|
|
76
74
|
headless: options.headless,
|
|
77
75
|
chromeWsUrl: options.chromeWsUrl,
|
|
78
76
|
});
|
|
79
|
-
// Resolve worker script path
|
|
80
77
|
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
81
78
|
const workerPath = join(currentDir, 'worker.js');
|
|
82
79
|
log.debug(daemonSpawningWorker(workerPath, config));
|
|
83
|
-
// Spawn worker process
|
|
84
80
|
let worker;
|
|
85
81
|
try {
|
|
86
82
|
worker = spawn('node', [workerPath, JSON.stringify(config)], {
|
|
@@ -95,13 +91,10 @@ export async function launchSessionInWorker(url, options = {}) {
|
|
|
95
91
|
if (worker.pid) {
|
|
96
92
|
log.debug(daemonWorkerSpawned(worker.pid));
|
|
97
93
|
}
|
|
98
|
-
// Wait for worker_ready signal
|
|
99
94
|
return new Promise((resolve, reject) => {
|
|
100
95
|
let stdoutBuffer = '';
|
|
101
96
|
let stderrBuffer = '';
|
|
102
97
|
let resolved = false;
|
|
103
|
-
// Timeout for ready signal (40 seconds)
|
|
104
|
-
// Must exceed DEFAULT_PAGE_READINESS_TIMEOUT_MS (30s) + Chrome launch time (~2s) + buffer
|
|
105
98
|
const readyTimeout = setTimeout(() => {
|
|
106
99
|
if (!resolved) {
|
|
107
100
|
resolved = true;
|
|
@@ -109,11 +102,9 @@ export async function launchSessionInWorker(url, options = {}) {
|
|
|
109
102
|
reject(new WorkerStartError('Worker did not send ready signal within 40 seconds', 'READY_TIMEOUT', `stderr: ${stderrBuffer}`));
|
|
110
103
|
}
|
|
111
104
|
}, 40000);
|
|
112
|
-
// Handle stdout (ready signal)
|
|
113
105
|
if (worker.stdout) {
|
|
114
106
|
worker.stdout.on('data', (chunk) => {
|
|
115
107
|
stdoutBuffer += chunk.toString('utf-8');
|
|
116
|
-
// Look for complete JSONL message (ends with newline)
|
|
117
108
|
const lines = stdoutBuffer.split('\n');
|
|
118
109
|
stdoutBuffer = lines.pop() ?? ''; // Keep incomplete line in buffer
|
|
119
110
|
for (const line of lines) {
|
|
@@ -122,7 +113,6 @@ export async function launchSessionInWorker(url, options = {}) {
|
|
|
122
113
|
try {
|
|
123
114
|
const parsed = JSON.parse(line);
|
|
124
115
|
if (!isWorkerReadyMessage(parsed)) {
|
|
125
|
-
// Not a worker_ready message, might be a log line
|
|
126
116
|
continue;
|
|
127
117
|
}
|
|
128
118
|
if (!resolved) {
|
|
@@ -130,7 +120,6 @@ export async function launchSessionInWorker(url, options = {}) {
|
|
|
130
120
|
clearTimeout(readyTimeout);
|
|
131
121
|
log.debug(daemonWorkerReady(parsed.workerPid, parsed.chromePid));
|
|
132
122
|
// NOTE: Don't unref() - we need to keep the worker reference for IPC
|
|
133
|
-
// Worker continues running as detached process
|
|
134
123
|
resolve({
|
|
135
124
|
workerPid: parsed.workerPid,
|
|
136
125
|
chromePid: parsed.chromePid,
|
|
@@ -148,15 +137,12 @@ export async function launchSessionInWorker(url, options = {}) {
|
|
|
148
137
|
}
|
|
149
138
|
});
|
|
150
139
|
}
|
|
151
|
-
// Handle stderr (log messages)
|
|
152
140
|
if (worker.stderr) {
|
|
153
141
|
worker.stderr.on('data', (chunk) => {
|
|
154
142
|
stderrBuffer += chunk.toString('utf-8');
|
|
155
|
-
// Forward worker stderr to daemon stderr
|
|
156
143
|
process.stderr.write(chunk);
|
|
157
144
|
});
|
|
158
145
|
}
|
|
159
|
-
// Handle worker exit
|
|
160
146
|
worker.on('exit', (code, signal) => {
|
|
161
147
|
if (!resolved) {
|
|
162
148
|
resolved = true;
|
|
@@ -164,7 +150,6 @@ export async function launchSessionInWorker(url, options = {}) {
|
|
|
164
150
|
reject(new WorkerStartError(`Worker process exited before sending ready signal (code: ${code}, signal: ${signal})`, 'WORKER_CRASH', `stderr: ${stderrBuffer}`));
|
|
165
151
|
}
|
|
166
152
|
});
|
|
167
|
-
// Handle spawn errors
|
|
168
153
|
worker.on('error', (error) => {
|
|
169
154
|
if (!resolved) {
|
|
170
155
|
resolved = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startSession.js","sourceRoot":"","sources":["../../src/daemon/startSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAEnC;;GAEG;AACH,SAAS,oBAAoB,CAAC,GAAY;IAOxC,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,cAAc,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CACL,WAAW,IAAI,GAAG;QAClB,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;QACjC,WAAW,IAAI,GAAG;QAClB,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ;QACjC,MAAM,IAAI,GAAG;QACb,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;QAC5B,QAAQ,IAAI,GAAG;QACf,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ;QAC9B,GAAG,CAAC,MAAM,KAAK,IAAI;QACnB,KAAK,IAAI,GAAG,CAAC,MAAM,CACpB,CAAC;AACJ,CAAC;AA4BD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGvB;IAKA;IAPlB,YACE,OAAe,EACC,IAIW,EACX,OAAgB;QAEhC,KAAK,CAAC,OAAO,CAAC,CAAC;QAPC,SAAI,GAAJ,IAAI,CAIO;QACX,YAAO,GAAP,OAAO,CAAS;QAGhC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,UAA+B,EAAE;IAEjC,
|
|
1
|
+
{"version":3,"file":"startSession.js","sourceRoot":"","sources":["../../src/daemon/startSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -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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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandRegistry.d.ts","sourceRoot":"","sources":["../../../src/daemon/worker/commandRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"commandRegistry.d.ts","sourceRoot":"","sources":["../../../src/daemon/worker/commandRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAoB,MAAM,gBAAgB,CAAC;AAKpF,KAAK,OAAO,CAAC,CAAC,SAAS,WAAW,IAAI,CACpC,GAAG,EAAE,aAAa,EAClB,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,KACvC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAElD,MAAM,MAAM,eAAe,GAAG;KAC3B,CAAC,IAAI,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CAC/B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAmL5E"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
import { PatternDetector } from '../../daemon/patternDetector.js';
|
|
2
|
+
import { generatePatternHint } from '../../ui/messages/hints.js';
|
|
1
3
|
import { filterDefined } from '../../utils/objects.js';
|
|
2
4
|
import { VERSION } from '../../utils/version.js';
|
|
3
5
|
export function createCommandRegistry(store) {
|
|
6
|
+
const patternDetector = new PatternDetector();
|
|
4
7
|
return {
|
|
5
8
|
worker_peek: async (_cdp, params) => {
|
|
6
9
|
const lastN = Math.min(params.lastN ?? 10, 100);
|
|
7
10
|
const offset = params.offset ?? 0;
|
|
8
11
|
const duration = Date.now() - store.sessionStartTime;
|
|
9
|
-
// Calculate slice positions from the end, accounting for offset
|
|
10
12
|
const totalNetwork = store.networkRequests.length;
|
|
11
13
|
const totalConsole = store.consoleMessages.length;
|
|
12
14
|
const networkStart = Math.max(0, totalNetwork - lastN - offset);
|
|
@@ -20,6 +22,7 @@ export function createCommandRegistry(store) {
|
|
|
20
22
|
url: req.url,
|
|
21
23
|
status: req.status,
|
|
22
24
|
mimeType: req.mimeType,
|
|
25
|
+
resourceType: req.resourceType,
|
|
23
26
|
}));
|
|
24
27
|
const recentConsole = store.consoleMessages.slice(consoleStart, consoleEnd).map((msg) => ({
|
|
25
28
|
timestamp: msg.timestamp,
|
|
@@ -85,9 +88,50 @@ export function createCommandRegistry(store) {
|
|
|
85
88
|
};
|
|
86
89
|
return Promise.resolve(result);
|
|
87
90
|
},
|
|
91
|
+
worker_har_data: async (_cdp, _params) => {
|
|
92
|
+
return Promise.resolve({
|
|
93
|
+
requests: store.networkRequests,
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
worker_network_headers: async (_cdp, params) => {
|
|
97
|
+
let targetRequest;
|
|
98
|
+
if (!params.id) {
|
|
99
|
+
const currentNavId = store.getCurrentNavigationId?.() ?? 0;
|
|
100
|
+
targetRequest = store.networkRequests.findLast((r) => r.navigationId === currentNavId && r.resourceType === 'Document');
|
|
101
|
+
targetRequest ??= store.networkRequests.findLast((r) => r.mimeType?.includes('html'));
|
|
102
|
+
targetRequest ??= store.networkRequests.findLast((r) => r.responseHeaders && Object.keys(r.responseHeaders).length > 0);
|
|
103
|
+
if (!targetRequest) {
|
|
104
|
+
return Promise.reject(new Error('No network requests with headers found'));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
targetRequest = store.networkRequests.find((r) => r.requestId === params.id);
|
|
109
|
+
if (!targetRequest) {
|
|
110
|
+
return Promise.reject(new Error(`Network request not found: ${params.id}`));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
let requestHeaders = targetRequest.requestHeaders ?? {};
|
|
114
|
+
let responseHeaders = targetRequest.responseHeaders ?? {};
|
|
115
|
+
if (params.headerName) {
|
|
116
|
+
const name = params.headerName.toLowerCase();
|
|
117
|
+
requestHeaders = Object.fromEntries(Object.entries(requestHeaders).filter(([k]) => k.toLowerCase() === name));
|
|
118
|
+
responseHeaders = Object.fromEntries(Object.entries(responseHeaders).filter(([k]) => k.toLowerCase() === name));
|
|
119
|
+
}
|
|
120
|
+
return Promise.resolve({
|
|
121
|
+
url: targetRequest.url,
|
|
122
|
+
requestId: targetRequest.requestId,
|
|
123
|
+
requestHeaders,
|
|
124
|
+
responseHeaders,
|
|
125
|
+
});
|
|
126
|
+
},
|
|
88
127
|
cdp_call: async (cdp, params) => {
|
|
89
128
|
const result = await cdp.send(params.method, params.params ?? {});
|
|
90
|
-
|
|
129
|
+
const detectionResult = patternDetector.trackCommand(params.method);
|
|
130
|
+
let hint;
|
|
131
|
+
if (detectionResult.shouldShow && detectionResult.pattern) {
|
|
132
|
+
hint = generatePatternHint(detectionResult.pattern);
|
|
133
|
+
}
|
|
134
|
+
return { result, hint };
|
|
91
135
|
},
|
|
92
136
|
};
|
|
93
137
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commandRegistry.js","sourceRoot":"","sources":["../../../src/daemon/worker/commandRegistry.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"commandRegistry.js","sourceRoot":"","sources":["../../../src/daemon/worker/commandRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/daemon/worker/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,6BAA6B,IAAI,eAAe,EAAE,CAuDjE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAQ5F;
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../../src/daemon/worker/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAGpD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,KAAK,EAAE,CAAC,GAAG,EAAE,sBAAsB,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,aAAa,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAgB,6BAA6B,IAAI,eAAe,EAAE,CAuDjE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAQ5F;AAID,wBAAgB,6BAA6B,IAAI,eAAe,EAAE,CAEjE"}
|
|
@@ -61,9 +61,6 @@ export function shouldActivatePlugin(plugin, store) {
|
|
|
61
61
|
}
|
|
62
62
|
return false;
|
|
63
63
|
}
|
|
64
|
-
// ---------------------------------------------------------------------------
|
|
65
|
-
// Registry helpers - allow other modules/tests to register custom plugins
|
|
66
|
-
// ---------------------------------------------------------------------------
|
|
67
64
|
const pluginRegistry = createDefaultTelemetryPlugins();
|
|
68
65
|
export function getRegisteredTelemetryPlugins() {
|
|
69
66
|
return [...pluginRegistry];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/daemon/worker/plugins.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAgBnD,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI;YACf,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE;gBACjB,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,IAAI;YACf,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;gBACxB,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAG,MAAM,uBAAuB,CACvE,GAAG,EACH,KAAK,CAAC,gBAAgB,CACvB,CAAC;gBACF,KAAK,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;gBACpD,OAAO,OAAO,CAAC;YACjB,CAAC;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS;YACpB,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;gBAChC,MAAM,cAAc,GAAG;oBACrB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;oBACtC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,IAAI,SAAS;oBACjE,GAAG,aAAa,CAAC;wBACf,WAAW,EAAE,MAAM,CAAC,WAAW;qBAChC,CAAC;iBACH,CAAC;gBACF,OAAO,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;YAC5E,CAAC;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS;YACpB,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;gBAChC,OAAO,sBAAsB,CAC3B,GAAG,EACH,KAAK,CAAC,eAAe,EACrB,MAAM,CAAC,UAAU,IAAI,KAAK,EAC1B,KAAK,CAAC,sBAAsB,IAAI,SAAS,CAC1C,CAAC;YACJ,CAAC;SACF;QACD;YACE,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,KAAK;YAChB,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE;gBACjB,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAuB,EAAE,KAAqB;IACjF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/daemon/worker/plugins.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAgBnD,MAAM,UAAU,6BAA6B;IAC3C,OAAO;QACL;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,IAAI;YACf,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE;gBACjB,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,IAAI;YACf,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE;gBACxB,MAAM,EAAE,OAAO,EAAE,sBAAsB,EAAE,GAAG,MAAM,uBAAuB,CACvE,GAAG,EACH,KAAK,CAAC,gBAAgB,CACvB,CAAC;gBACF,KAAK,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,CAAC;gBACpD,OAAO,OAAO,CAAC;YACjB,CAAC;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS;YACpB,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;gBAChC,MAAM,cAAc,GAAG;oBACrB,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,KAAK;oBACtC,sBAAsB,EAAE,KAAK,CAAC,sBAAsB,IAAI,SAAS;oBACjE,GAAG,aAAa,CAAC;wBACf,WAAW,EAAE,MAAM,CAAC,WAAW;qBAChC,CAAC;iBACH,CAAC;gBACF,OAAO,sBAAsB,CAAC,GAAG,EAAE,KAAK,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;YAC5E,CAAC;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,SAAS;YACpB,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE;gBAChC,OAAO,sBAAsB,CAC3B,GAAG,EACH,KAAK,CAAC,eAAe,EACrB,MAAM,CAAC,UAAU,IAAI,KAAK,EAC1B,KAAK,CAAC,sBAAsB,IAAI,SAAS,CAC1C,CAAC;YACJ,CAAC;SACF;QACD;YACE,IAAI,EAAE,KAAK;YACX,SAAS,EAAE,KAAK;YAChB,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE;gBACjB,OAAO,oBAAoB,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAuB,EAAE,KAAqB;IACjF,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,cAAc,GAAsB,6BAA6B,EAAE,CAAC;AAE1E,MAAM,UAAU,6BAA6B;IAC3C,OAAO,CAAC,GAAG,cAAc,CAAC,CAAC;AAC7B,CAAC"}
|
package/dist/daemon/worker.js
CHANGED
|
@@ -63,22 +63,16 @@ function initializeTelemetryStore() {
|
|
|
63
63
|
async function main() {
|
|
64
64
|
console.error(`[worker] Starting (PID ${process.pid})`);
|
|
65
65
|
try {
|
|
66
|
-
// Parse configuration
|
|
67
66
|
const config = parseWorkerConfig();
|
|
68
67
|
console.error(`[worker] Config: ${JSON.stringify(config)}`);
|
|
69
|
-
// Initialize state
|
|
70
68
|
initializeTelemetryStore();
|
|
71
69
|
writePid(process.pid);
|
|
72
|
-
// Setup Chrome connection (launch or connect to external)
|
|
73
70
|
chrome = await setupChromeConnection(config, telemetryStore, log);
|
|
74
|
-
// Setup CDP connection, telemetry, and navigate
|
|
75
71
|
const result = await setupCDPAndNavigate(config, telemetryStore, chrome, log, () => {
|
|
76
|
-
// CDP disconnect callback
|
|
77
72
|
void cleanupWorker('crash', { chrome, cdp, cleanupFunctions, telemetryStore, log }).then(() => process.exit(1));
|
|
78
73
|
});
|
|
79
74
|
cdp = result.cdp;
|
|
80
75
|
cleanupFunctions = result.cleanupFunctions;
|
|
81
|
-
// Write session metadata
|
|
82
76
|
writeSessionMetadata({
|
|
83
77
|
bdgPid: process.pid,
|
|
84
78
|
chromePid: chrome?.pid ?? 0,
|
|
@@ -89,11 +83,8 @@ async function main() {
|
|
|
89
83
|
activeTelemetry: telemetryStore.activeTelemetry,
|
|
90
84
|
});
|
|
91
85
|
console.error(`[worker] Session metadata written`);
|
|
92
|
-
// Setup IPC listener BEFORE sending ready signal
|
|
93
86
|
setupStdinListener(cdp, commandRegistry, log);
|
|
94
|
-
// Send ready signal to daemon
|
|
95
87
|
sendReadySignal(process.pid, chrome?.pid ?? 0, config.port);
|
|
96
|
-
// Setup signal handlers (SIGTERM, SIGINT, timeout)
|
|
97
88
|
setupSignalHandlers({ chrome, cdp, cleanupFunctions, telemetryStore, log }, config.timeout);
|
|
98
89
|
log.debug(workerSessionActive());
|
|
99
90
|
}
|