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
|
@@ -3,19 +3,15 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles generic CDP command forwarding and handshake.
|
|
5
5
|
*/
|
|
6
|
-
import { getErrorMessage } from '../../connection/errors.js';
|
|
7
6
|
import { generateRequestId } from '../../ipc/utils/requestId.js';
|
|
7
|
+
import { BaseHandler } from './BaseHandler.js';
|
|
8
8
|
/**
|
|
9
9
|
* Handles handshake and generic command forwarding.
|
|
10
10
|
*/
|
|
11
|
-
export class CommandHandlers {
|
|
12
|
-
|
|
13
|
-
pendingRequests;
|
|
14
|
-
sendResponse;
|
|
11
|
+
export class CommandHandlers extends BaseHandler {
|
|
12
|
+
static COMMAND_TIMEOUT = 10000;
|
|
15
13
|
constructor(workerManager, pendingRequests, sendResponse) {
|
|
16
|
-
|
|
17
|
-
this.pendingRequests = pendingRequests;
|
|
18
|
-
this.sendResponse = sendResponse;
|
|
14
|
+
super(workerManager, pendingRequests, sendResponse);
|
|
19
15
|
}
|
|
20
16
|
/**
|
|
21
17
|
* Handle handshake request.
|
|
@@ -37,57 +33,23 @@ export class CommandHandlers {
|
|
|
37
33
|
handleCommand(socket, request) {
|
|
38
34
|
const commandName = request.type.replace('_request', '');
|
|
39
35
|
console.error(`[daemon] ${commandName} request received (sessionId: ${request.sessionId})`);
|
|
40
|
-
if (!this.
|
|
41
|
-
|
|
42
|
-
type: `${commandName}_response`,
|
|
43
|
-
sessionId: request.sessionId,
|
|
44
|
-
status: 'error',
|
|
45
|
-
error: 'No active worker process',
|
|
46
|
-
};
|
|
47
|
-
this.sendResponse(socket, response);
|
|
48
|
-
console.error(`[daemon] ${commandName} error response sent (no worker)`);
|
|
36
|
+
if (!this.hasActiveWorker()) {
|
|
37
|
+
this.sendNoWorkerResponse(socket, request.sessionId, commandName);
|
|
49
38
|
return;
|
|
50
39
|
}
|
|
51
|
-
const requestId = generateRequestId(commandName);
|
|
52
|
-
const timeout = setTimeout(() => {
|
|
53
|
-
this.pendingRequests.remove(requestId);
|
|
54
|
-
const response = {
|
|
55
|
-
type: `${commandName}_response`,
|
|
56
|
-
sessionId: request.sessionId,
|
|
57
|
-
status: 'error',
|
|
58
|
-
error: 'Worker response timeout (10s)',
|
|
59
|
-
};
|
|
60
|
-
this.sendResponse(socket, response);
|
|
61
|
-
console.error(`[daemon] ${commandName} timeout response sent`);
|
|
62
|
-
}, 10000);
|
|
63
|
-
this.pendingRequests.add(requestId, {
|
|
64
|
-
socket,
|
|
65
|
-
sessionId: request.sessionId,
|
|
66
|
-
timeout,
|
|
67
|
-
commandName,
|
|
68
|
-
});
|
|
69
|
-
// Extract only sessionId, keep all other fields including 'type' param if it exists
|
|
70
40
|
const { sessionId: _sessionId, type: _ipcType, ...params } = request;
|
|
71
41
|
const workerRequest = {
|
|
72
42
|
type: `${commandName}_request`,
|
|
73
|
-
requestId,
|
|
43
|
+
requestId: generateRequestId(commandName),
|
|
74
44
|
...params,
|
|
75
45
|
};
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
type: `${commandName}_response`,
|
|
84
|
-
sessionId: request.sessionId,
|
|
85
|
-
status: 'error',
|
|
86
|
-
error: getErrorMessage(error),
|
|
87
|
-
};
|
|
88
|
-
this.sendResponse(socket, response);
|
|
89
|
-
console.error(`[daemon] Failed to forward ${commandName}_request to worker: ${getErrorMessage(error)}`);
|
|
90
|
-
}
|
|
46
|
+
this.forwardToWorker({
|
|
47
|
+
socket,
|
|
48
|
+
sessionId: request.sessionId,
|
|
49
|
+
commandName,
|
|
50
|
+
workerRequest: workerRequest,
|
|
51
|
+
timeoutMs: CommandHandlers.COMMAND_TIMEOUT,
|
|
52
|
+
});
|
|
91
53
|
}
|
|
92
54
|
}
|
|
93
55
|
//# sourceMappingURL=CommandHandlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CommandHandlers.js","sourceRoot":"","sources":["../../../src/daemon/handlers/CommandHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"CommandHandlers.js","sourceRoot":"","sources":["../../../src/daemon/handlers/CommandHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C;;GAEG;AACH,MAAM,OAAO,eAAgB,SAAQ,WAAW;IACtC,MAAM,CAAU,eAAe,GAAG,KAAK,CAAC;IAEhD,YACE,aAA4B,EAC5B,eAAsC,EACtC,YAA4B;QAE5B,KAAK,CAAC,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAAc,EAAE,OAAyB;QACvD,OAAO,CAAC,KAAK,CAAC,mDAAmD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAEvF,MAAM,QAAQ,GAAsB;YAClC,IAAI,EAAE,oBAAoB;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,MAAM,EAAE,IAAI;YACZ,OAAO,EAAE,sBAAsB;SAChC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACpC,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAc,EAAE,OAA2B;QACvD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAgB,CAAC;QAExE,OAAO,CAAC,KAAK,CAAC,YAAY,WAAW,iCAAiC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAE5F,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QAED,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;QACrE,MAAM,aAAa,GAAsC;YACvD,IAAI,EAAE,GAAG,WAAW,UAAmB;YACvC,SAAS,EAAE,iBAAiB,CAAC,WAAW,CAAC;YACzC,GAAG,MAAM;SAC2B,CAAC;QAEvC,IAAI,CAAC,eAAe,CAAC;YACnB,MAAM;YACN,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW;YACX,aAAa,EAAE,aAAmC;YAClD,SAAS,EAAE,eAAe,CAAC,eAAe;SAC3C,CAAC,CAAC;IACL,CAAC"}
|
|
@@ -7,7 +7,8 @@ import type { PendingRequestManager } from './pendingRequests.js';
|
|
|
7
7
|
import type { Socket } from 'net';
|
|
8
8
|
import type { WorkerManager } from '../../daemon/server/WorkerManager.js';
|
|
9
9
|
import type { ISessionService } from '../../daemon/services/SessionService.js';
|
|
10
|
-
import { type PeekRequest, type StatusRequest } from '../../ipc/index.js';
|
|
10
|
+
import { type HARDataRequest, type PeekRequest, type StatusRequest } from '../../ipc/index.js';
|
|
11
|
+
import { BaseHandler } from './BaseHandler.js';
|
|
11
12
|
/**
|
|
12
13
|
* Response sender function type.
|
|
13
14
|
*/
|
|
@@ -15,17 +16,18 @@ type SendResponseFn = (socket: Socket, response: unknown) => void;
|
|
|
15
16
|
/**
|
|
16
17
|
* Handles status and peek queries.
|
|
17
18
|
*/
|
|
18
|
-
export declare class QueryHandlers {
|
|
19
|
-
private readonly workerManager;
|
|
20
|
-
private readonly pendingRequests;
|
|
19
|
+
export declare class QueryHandlers extends BaseHandler {
|
|
21
20
|
private readonly sessionService;
|
|
22
|
-
private readonly sendResponse;
|
|
23
21
|
private readonly daemonStartTime;
|
|
24
|
-
constructor(workerManager: WorkerManager, pendingRequests: PendingRequestManager,
|
|
22
|
+
constructor(workerManager: WorkerManager, pendingRequests: PendingRequestManager, sendResponse: SendResponseFn, sessionService: ISessionService, daemonStartTime: number);
|
|
25
23
|
/**
|
|
26
24
|
* Handle status request.
|
|
27
25
|
*/
|
|
28
26
|
handleStatus(socket: Socket, request: StatusRequest): void;
|
|
27
|
+
/**
|
|
28
|
+
* Handle HAR data request - forward to worker via IPC.
|
|
29
|
+
*/
|
|
30
|
+
handleHARData(socket: Socket, request: HARDataRequest): void;
|
|
29
31
|
/**
|
|
30
32
|
* Handle peek request - forward to worker via IPC.
|
|
31
33
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryHandlers.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/QueryHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAGlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EACL,KAAK,WAAW,
|
|
1
|
+
{"version":3,"file":"QueryHandlers.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/QueryHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAGlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,aAAa,EAKnB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C;;GAEG;AACH,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAElE;;GAEG;AACH,qBAAa,aAAc,SAAQ,WAAW;IAK1C,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAJhC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,qBAAqB,EACtC,YAAY,EAAE,cAAc,EACX,cAAc,EAAE,eAAe,EAC/B,eAAe,EAAE,MAAM;IAK1C;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAkE1D;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAqB5D;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;CAqBvD"}
|
|
@@ -6,20 +6,16 @@
|
|
|
6
6
|
import { getErrorMessage } from '../../connection/errors.js';
|
|
7
7
|
import { generateRequestId } from '../../ipc/utils/requestId.js';
|
|
8
8
|
import { filterDefined } from '../../utils/objects.js';
|
|
9
|
+
import { BaseHandler } from './BaseHandler.js';
|
|
9
10
|
/**
|
|
10
11
|
* Handles status and peek queries.
|
|
11
12
|
*/
|
|
12
|
-
export class QueryHandlers {
|
|
13
|
-
workerManager;
|
|
14
|
-
pendingRequests;
|
|
13
|
+
export class QueryHandlers extends BaseHandler {
|
|
15
14
|
sessionService;
|
|
16
|
-
sendResponse;
|
|
17
15
|
daemonStartTime;
|
|
18
|
-
constructor(workerManager, pendingRequests,
|
|
19
|
-
|
|
20
|
-
this.pendingRequests = pendingRequests;
|
|
16
|
+
constructor(workerManager, pendingRequests, sendResponse, sessionService, daemonStartTime) {
|
|
17
|
+
super(workerManager, pendingRequests, sendResponse);
|
|
21
18
|
this.sessionService = sessionService;
|
|
22
|
-
this.sendResponse = sendResponse;
|
|
23
19
|
this.daemonStartTime = daemonStartTime;
|
|
24
20
|
}
|
|
25
21
|
/**
|
|
@@ -28,17 +24,14 @@ export class QueryHandlers {
|
|
|
28
24
|
handleStatus(socket, request) {
|
|
29
25
|
console.error(`[daemon] Status request received (sessionId: ${request.sessionId})`);
|
|
30
26
|
try {
|
|
31
|
-
// Gather daemon metadata
|
|
32
27
|
const data = {
|
|
33
28
|
daemonPid: process.pid,
|
|
34
29
|
daemonStartTime: this.daemonStartTime,
|
|
35
30
|
socketPath: this.sessionService.getFilePath('DAEMON_SOCKET'),
|
|
36
31
|
};
|
|
37
|
-
// Check for active session
|
|
38
32
|
const sessionPid = this.sessionService.readPid();
|
|
39
33
|
if (sessionPid && this.sessionService.isProcessAlive(sessionPid)) {
|
|
40
34
|
data.sessionPid = sessionPid;
|
|
41
|
-
// Try to read session metadata
|
|
42
35
|
const metadata = this.sessionService.readMetadata({ warnOnCorruption: true });
|
|
43
36
|
if (metadata) {
|
|
44
37
|
data.sessionMetadata = filterDefined({
|
|
@@ -51,47 +44,21 @@ export class QueryHandlers {
|
|
|
51
44
|
activeTelemetry: metadata.activeTelemetry,
|
|
52
45
|
});
|
|
53
46
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
// Send response without activity data if worker times out
|
|
61
|
-
const response = {
|
|
62
|
-
type: 'status_response',
|
|
63
|
-
sessionId: request.sessionId,
|
|
64
|
-
status: 'ok',
|
|
65
|
-
data,
|
|
66
|
-
};
|
|
67
|
-
this.sendResponse(socket, response);
|
|
68
|
-
console.error('[daemon] Status response sent (worker timeout)');
|
|
69
|
-
}, 5000);
|
|
70
|
-
// Track pending request with special handling for status
|
|
71
|
-
this.pendingRequests.add(requestId, {
|
|
47
|
+
if (this.hasActiveWorker()) {
|
|
48
|
+
const workerRequest = {
|
|
49
|
+
type: 'worker_status_request',
|
|
50
|
+
requestId: generateRequestId('worker_status'),
|
|
51
|
+
};
|
|
52
|
+
this.forwardToWorker({
|
|
72
53
|
socket,
|
|
73
54
|
sessionId: request.sessionId,
|
|
74
|
-
timeout,
|
|
75
|
-
statusData: data, // Store base status data
|
|
76
55
|
commandName: 'worker_status',
|
|
56
|
+
workerRequest: workerRequest,
|
|
57
|
+
statusData: data,
|
|
77
58
|
});
|
|
78
|
-
//
|
|
79
|
-
const workerRequest = {
|
|
80
|
-
type: 'worker_status_request',
|
|
81
|
-
requestId,
|
|
82
|
-
};
|
|
83
|
-
try {
|
|
84
|
-
this.workerManager.send(workerRequest);
|
|
85
|
-
console.error(`[daemon] Forwarded worker_status_request to worker (requestId: ${requestId})`);
|
|
86
|
-
return; // Will send response when worker responds
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
this.pendingRequests.remove(requestId);
|
|
90
|
-
console.error(`[daemon] Failed to forward worker_status_request: ${getErrorMessage(error)}`);
|
|
91
|
-
}
|
|
59
|
+
return; // Will send response when worker responds
|
|
92
60
|
}
|
|
93
61
|
}
|
|
94
|
-
// Send response immediately if no worker
|
|
95
62
|
const response = {
|
|
96
63
|
type: 'status_response',
|
|
97
64
|
sessionId: request.sessionId,
|
|
@@ -113,64 +80,45 @@ export class QueryHandlers {
|
|
|
113
80
|
}
|
|
114
81
|
}
|
|
115
82
|
/**
|
|
116
|
-
* Handle
|
|
83
|
+
* Handle HAR data request - forward to worker via IPC.
|
|
117
84
|
*/
|
|
118
|
-
|
|
119
|
-
console.error(`[daemon]
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
const response = {
|
|
123
|
-
type: 'peek_response',
|
|
124
|
-
sessionId: request.sessionId,
|
|
125
|
-
status: 'error',
|
|
126
|
-
error: 'No active session',
|
|
127
|
-
};
|
|
128
|
-
this.sendResponse(socket, response);
|
|
129
|
-
console.error('[daemon] Peek error response sent (no worker)');
|
|
85
|
+
handleHARData(socket, request) {
|
|
86
|
+
console.error(`[daemon] HAR data request received (sessionId: ${request.sessionId})`);
|
|
87
|
+
if (!this.hasActiveWorker()) {
|
|
88
|
+
this.sendNoWorkerResponse(socket, request.sessionId, 'har_data', 'No active session');
|
|
130
89
|
return;
|
|
131
90
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
const response = {
|
|
138
|
-
type: 'peek_response',
|
|
139
|
-
sessionId: request.sessionId,
|
|
140
|
-
status: 'error',
|
|
141
|
-
error: 'Worker response timeout (5s)',
|
|
142
|
-
};
|
|
143
|
-
this.sendResponse(socket, response);
|
|
144
|
-
console.error('[daemon] Peek timeout response sent');
|
|
145
|
-
}, 5000);
|
|
146
|
-
// Track pending request
|
|
147
|
-
this.pendingRequests.add(requestId, {
|
|
91
|
+
const workerRequest = {
|
|
92
|
+
type: 'worker_har_data_request',
|
|
93
|
+
requestId: generateRequestId('worker_har_data'),
|
|
94
|
+
};
|
|
95
|
+
this.forwardToWorker({
|
|
148
96
|
socket,
|
|
149
97
|
sessionId: request.sessionId,
|
|
150
|
-
|
|
151
|
-
|
|
98
|
+
commandName: 'worker_har_data',
|
|
99
|
+
workerRequest: workerRequest,
|
|
152
100
|
});
|
|
153
|
-
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Handle peek request - forward to worker via IPC.
|
|
104
|
+
*/
|
|
105
|
+
handlePeek(socket, request) {
|
|
106
|
+
console.error(`[daemon] Peek request received (sessionId: ${request.sessionId})`);
|
|
107
|
+
if (!this.hasActiveWorker()) {
|
|
108
|
+
this.sendNoWorkerResponse(socket, request.sessionId, 'peek', 'No active session');
|
|
109
|
+
return;
|
|
110
|
+
}
|
|
154
111
|
const workerRequest = {
|
|
155
112
|
type: 'worker_peek_request',
|
|
156
|
-
requestId,
|
|
113
|
+
requestId: generateRequestId('worker_peek'),
|
|
157
114
|
lastN: 10, // Default limit for preview items (PeekRequest doesn't include lastN)
|
|
158
115
|
};
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
const response = {
|
|
166
|
-
type: 'peek_response',
|
|
167
|
-
sessionId: request.sessionId,
|
|
168
|
-
status: 'error',
|
|
169
|
-
error: getErrorMessage(error),
|
|
170
|
-
};
|
|
171
|
-
this.sendResponse(socket, response);
|
|
172
|
-
console.error(`[daemon] Failed to forward worker_peek_request: ${getErrorMessage(error)}`);
|
|
173
|
-
}
|
|
116
|
+
this.forwardToWorker({
|
|
117
|
+
socket,
|
|
118
|
+
sessionId: request.sessionId,
|
|
119
|
+
commandName: 'worker_peek',
|
|
120
|
+
workerRequest: workerRequest,
|
|
121
|
+
});
|
|
174
122
|
}
|
|
175
123
|
}
|
|
176
124
|
//# sourceMappingURL=QueryHandlers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryHandlers.js","sourceRoot":"","sources":["../../../src/daemon/handlers/QueryHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAYzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"QueryHandlers.js","sourceRoot":"","sources":["../../../src/daemon/handlers/QueryHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAYzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAO/C;;GAEG;AACH,MAAM,OAAO,aAAc,SAAQ,WAAW;IAKzB;IACA;IALnB,YACE,aAA4B,EAC5B,eAAsC,EACtC,YAA4B,EACX,cAA+B,EAC/B,eAAuB;QAExC,KAAK,CAAC,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;QAHnC,mBAAc,GAAd,cAAc,CAAiB;QAC/B,oBAAe,GAAf,eAAe,CAAQ;IAG1C,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,MAAc,EAAE,OAAsB;QACjD,OAAO,CAAC,KAAK,CAAC,gDAAgD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAEpF,IAAI,CAAC;YACH,MAAM,IAAI,GAAuB;gBAC/B,SAAS,EAAE,OAAO,CAAC,GAAG;gBACtB,eAAe,EAAE,IAAI,CAAC,eAAe;gBACrC,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC;aAC7D,CAAC;YAEF,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YACjD,IAAI,UAAU,IAAI,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;gBAE7B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9E,IAAI,QAAQ,EAAE,CAAC;oBACb,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC;wBACnC,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,IAAI,EAAE,QAAQ,CAAC,IAAI;wBACnB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;wBACnD,eAAe,EAAE,QAAQ,CAAC,eAAe;qBAC1C,CAAiE,CAAC;gBACrE,CAAC;gBAED,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;oBAC3B,MAAM,aAAa,GAAmC;wBACpD,IAAI,EAAE,uBAAuB;wBAC7B,SAAS,EAAE,iBAAiB,CAAC,eAAe,CAAC;qBAC9C,CAAC;oBAEF,IAAI,CAAC,eAAe,CAAC;wBACnB,MAAM;wBACN,SAAS,EAAE,OAAO,CAAC,SAAS;wBAC5B,WAAW,EAAE,eAAe;wBAC5B,aAAa,EAAE,aAAmC;wBAClD,UAAU,EAAE,IAAI;qBACjB,CAAC,CAAC;oBACH,OAAO,CAAC,0CAA0C;gBACpD,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAmB;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,IAAI;gBACZ,IAAI;aACL,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAmB;gBAC/B,IAAI,EAAE,iBAAiB;gBACvB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO;gBACf,KAAK,EAAE,4BAA4B,eAAe,CAAC,KAAK,CAAC,EAAE;aAC5D,CAAC;YAEF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACpC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,MAAc,EAAE,OAAuB;QACnD,OAAO,CAAC,KAAK,CAAC,kDAAkD,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAEtF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,mBAAmB,CAAC,CAAC;YACtF,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAqC;YACtD,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,iBAAiB,CAAC,iBAAiB,CAAC;SAChD,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC;YACnB,MAAM;YACN,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW,EAAE,iBAAiB;YAC9B,aAAa,EAAE,aAAmC;SACnD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,MAAc,EAAE,OAAoB;QAC7C,OAAO,CAAC,KAAK,CAAC,8CAA8C,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;QAElF,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,CAAC;YAC5B,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;YAClF,OAAO;QACT,CAAC;QAED,MAAM,aAAa,GAAiC;YAClD,IAAI,EAAE,qBAAqB;YAC3B,SAAS,EAAE,iBAAiB,CAAC,aAAa,CAAC;YAC3C,KAAK,EAAE,EAAE,EAAE,sEAAsE;SAClF,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC;YACnB,MAAM;YACN,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW,EAAE,aAAa;YAC1B,aAAa,EAAE,aAAmC;SACnD,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionHandlers.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/SessionHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAGlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EACL,KAAK,mBAAmB,EAGxB,KAAK,kBAAkB,EAGxB,MAAM,gBAAgB,CAAC;AAQxB;;GAEG;AACH,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAElE;;GAEG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,cAAc;IAG/C;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"SessionHandlers.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/SessionHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAGlC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,EACL,KAAK,mBAAmB,EAGxB,KAAK,kBAAkB,EAGxB,MAAM,gBAAgB,CAAC;AAQxB;;GAEG;AACH,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAElE;;GAEG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,cAAc;IAG/C;;OAEG;IACG,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+HrF;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;CAgFrE"}
|
|
@@ -28,14 +28,11 @@ export class SessionHandlers {
|
|
|
28
28
|
async handleStartSession(socket, request) {
|
|
29
29
|
console.error(`[daemon] Start session request received (sessionId: ${request.sessionId}, url: ${request.url})`);
|
|
30
30
|
try {
|
|
31
|
-
// Check for existing session (concurrency guard)
|
|
32
31
|
const sessionPid = this.sessionService.readPid();
|
|
33
32
|
if (sessionPid && this.sessionService.isProcessAlive(sessionPid)) {
|
|
34
|
-
// Read session metadata to provide helpful error context
|
|
35
33
|
const metadata = this.sessionService.readMetadata({ warnOnCorruption: false });
|
|
36
34
|
const startTime = metadata?.startTime;
|
|
37
35
|
const duration = startTime ? Math.floor((Date.now() - startTime) / 1000) : undefined;
|
|
38
|
-
// Try to get target URL from CDP
|
|
39
36
|
let targetUrl;
|
|
40
37
|
if (metadata?.port && metadata?.targetId) {
|
|
41
38
|
try {
|
|
@@ -66,7 +63,6 @@ export class SessionHandlers {
|
|
|
66
63
|
console.error('[daemon] Start session error response sent (session already running)');
|
|
67
64
|
return;
|
|
68
65
|
}
|
|
69
|
-
// Launch worker
|
|
70
66
|
console.error('[daemon] Launching worker...');
|
|
71
67
|
try {
|
|
72
68
|
const metadata = await this.workerManager.launch(request.url, filterDefined({
|
|
@@ -80,7 +76,6 @@ export class SessionHandlers {
|
|
|
80
76
|
chromeWsUrl: request.chromeWsUrl,
|
|
81
77
|
}));
|
|
82
78
|
console.error('[daemon] Worker launched successfully');
|
|
83
|
-
// Build response data
|
|
84
79
|
const data = {
|
|
85
80
|
workerPid: metadata.workerPid,
|
|
86
81
|
chromePid: metadata.chromePid,
|
|
@@ -99,11 +94,9 @@ export class SessionHandlers {
|
|
|
99
94
|
console.error('[daemon] Start session response sent');
|
|
100
95
|
}
|
|
101
96
|
catch (error) {
|
|
102
|
-
// Map worker errors to IPC error codes
|
|
103
97
|
let errorCode = IPCErrorCode.WORKER_START_FAILED;
|
|
104
98
|
let errorMessage = 'Failed to start worker';
|
|
105
99
|
if (error instanceof WorkerStartError) {
|
|
106
|
-
// Include error details (contains worker stderr) for debugging
|
|
107
100
|
errorMessage = error.details ? `${error.message}\n${error.details}` : error.message;
|
|
108
101
|
switch (error.code) {
|
|
109
102
|
case 'SPAWN_FAILED':
|
|
@@ -148,7 +141,6 @@ export class SessionHandlers {
|
|
|
148
141
|
handleStopSession(socket, request) {
|
|
149
142
|
console.error(`[daemon] Stop session request received (sessionId: ${request.sessionId})`);
|
|
150
143
|
try {
|
|
151
|
-
// Check for active session
|
|
152
144
|
const sessionPid = this.sessionService.readPid();
|
|
153
145
|
if (!sessionPid || !this.sessionService.isProcessAlive(sessionPid)) {
|
|
154
146
|
const response = {
|
|
@@ -162,13 +154,11 @@ export class SessionHandlers {
|
|
|
162
154
|
console.error('[daemon] Stop session error response sent (no session)');
|
|
163
155
|
return;
|
|
164
156
|
}
|
|
165
|
-
// Capture Chrome PID BEFORE cleanup (so CLI can kill Chrome if needed)
|
|
166
157
|
const metadata = this.sessionService.readMetadata({ warnOnCorruption: true });
|
|
167
158
|
const chromePid = metadata?.chromePid;
|
|
168
159
|
if (chromePid) {
|
|
169
160
|
console.error(`[daemon] Captured Chrome PID ${chromePid} before cleanup`);
|
|
170
161
|
}
|
|
171
|
-
// Kill the session process (use SIGTERM for graceful shutdown)
|
|
172
162
|
try {
|
|
173
163
|
process.kill(sessionPid, 'SIGTERM');
|
|
174
164
|
console.error(`[daemon] Sent SIGTERM to session process (PID ${sessionPid})`);
|
|
@@ -186,10 +176,8 @@ export class SessionHandlers {
|
|
|
186
176
|
console.error('[daemon] Stop session error response sent (kill failed)');
|
|
187
177
|
return;
|
|
188
178
|
}
|
|
189
|
-
// Clean up session files
|
|
190
179
|
this.sessionService.cleanup();
|
|
191
180
|
console.error('[daemon] Cleaned up session files');
|
|
192
|
-
// Clear worker process reference
|
|
193
181
|
this.workerManager.dispose();
|
|
194
182
|
console.error('[daemon] Cleared worker process reference');
|
|
195
183
|
const response = {
|
|
@@ -201,11 +189,8 @@ export class SessionHandlers {
|
|
|
201
189
|
};
|
|
202
190
|
this.sendResponse(socket, response);
|
|
203
191
|
console.error('[daemon] Stop session response sent');
|
|
204
|
-
// Release lock immediately so new sessions can start
|
|
205
192
|
this.sessionService.releaseLock();
|
|
206
193
|
console.error('[daemon] Daemon lock released');
|
|
207
|
-
// Shutdown daemon after successful stop
|
|
208
|
-
// Give socket time to flush response, then exit gracefully
|
|
209
194
|
setTimeout(() => {
|
|
210
195
|
console.error('[daemon] Shutting down daemon after successful stop');
|
|
211
196
|
process.exit(0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SessionHandlers.js","sourceRoot":"","sources":["../../../src/daemon/handlers/SessionHandlers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAML,YAAY,GACb,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;AAOnC;;GAEG;AACH,MAAM,OAAO,eAAe;IAEP;IACA;IACA;IAHnB,YACmB,aAA4B,EAC5B,cAA+B,EAC/B,YAA4B;QAF5B,kBAAa,GAAb,aAAa,CAAe;QAC5B,mBAAc,GAAd,cAAc,CAAiB;QAC/B,iBAAY,GAAZ,YAAY,CAAgB;IAC5C,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,OAA4B;QACnE,OAAO,CAAC,KAAK,CACX,uDAAuD,OAAO,CAAC,SAAS,UAAU,OAAO,CAAC,GAAG,GAAG,CACjG,CAAC;QAEF,IAAI,CAAC;YACH,
|
|
1
|
+
{"version":3,"file":"SessionHandlers.js","sourceRoot":"","sources":["../../../src/daemon/handlers/SessionHandlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import type { PendingRequestManager } from './pendingRequests.js';
|
|
|
8
8
|
import type { Socket } from 'net';
|
|
9
9
|
import type { WorkerManager } from '../../daemon/server/WorkerManager.js';
|
|
10
10
|
import type { ISessionService } from '../../daemon/services/SessionService.js';
|
|
11
|
-
import { type ClientRequestUnion, type HandshakeRequest, type PeekRequest, type StartSessionRequest, type StatusRequest, type StopSessionRequest } from '../../ipc/index.js';
|
|
11
|
+
import { type ClientRequestUnion, type HandshakeRequest, type HARDataRequest, type PeekRequest, type StartSessionRequest, type StatusRequest, type StopSessionRequest } from '../../ipc/index.js';
|
|
12
12
|
/**
|
|
13
13
|
* Response sender function type.
|
|
14
14
|
*/
|
|
@@ -34,6 +34,10 @@ export declare class RequestHandlers {
|
|
|
34
34
|
* Handle peek request.
|
|
35
35
|
*/
|
|
36
36
|
handlePeekRequest(socket: Socket, request: PeekRequest): void;
|
|
37
|
+
/**
|
|
38
|
+
* Handle HAR data request.
|
|
39
|
+
*/
|
|
40
|
+
handleHARDataRequest(socket: Socket, request: HARDataRequest): void;
|
|
37
41
|
/**
|
|
38
42
|
* Handle start session request.
|
|
39
43
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestHandlers.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/requestHandlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAElE;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAGhD,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,qBAAqB,EACtC,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,cAAc,EAC5B,eAAe,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"requestHandlers.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/requestHandlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACtE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EACL,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACxB,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAElE;;;GAGG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAkB;gBAGhD,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,qBAAqB,EACtC,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,cAAc,EAC5B,eAAe,EAAE,MAAM;IAezB;;OAEG;IACH,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,IAAI;IAIhE;;OAEG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,IAAI;IAIjE;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAI7D;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,IAAI;IAInE;;OAEG;IACG,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5F;;OAEG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAI3E;;OAEG;IACH,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;CAGxE"}
|
|
@@ -16,9 +16,8 @@ export class RequestHandlers {
|
|
|
16
16
|
queryHandlers;
|
|
17
17
|
commandHandlers;
|
|
18
18
|
constructor(workerManager, pendingRequests, sessionService, sendResponse, daemonStartTime) {
|
|
19
|
-
// Initialize specialized handlers
|
|
20
19
|
this.sessionHandlers = new SessionHandlers(workerManager, sessionService, sendResponse);
|
|
21
|
-
this.queryHandlers = new QueryHandlers(workerManager, pendingRequests,
|
|
20
|
+
this.queryHandlers = new QueryHandlers(workerManager, pendingRequests, sendResponse, sessionService, daemonStartTime);
|
|
22
21
|
this.commandHandlers = new CommandHandlers(workerManager, pendingRequests, sendResponse);
|
|
23
22
|
}
|
|
24
23
|
/**
|
|
@@ -39,6 +38,12 @@ export class RequestHandlers {
|
|
|
39
38
|
handlePeekRequest(socket, request) {
|
|
40
39
|
this.queryHandlers.handlePeek(socket, request);
|
|
41
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Handle HAR data request.
|
|
43
|
+
*/
|
|
44
|
+
handleHARDataRequest(socket, request) {
|
|
45
|
+
this.queryHandlers.handleHARData(socket, request);
|
|
46
|
+
}
|
|
42
47
|
/**
|
|
43
48
|
* Handle start session request.
|
|
44
49
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requestHandlers.js","sourceRoot":"","sources":["../../../src/daemon/handlers/requestHandlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"requestHandlers.js","sourceRoot":"","sources":["../../../src/daemon/handlers/requestHandlers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAiBH,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAOvD;;;GAGG;AACH,MAAM,OAAO,eAAe;IACT,eAAe,CAAkB;IACjC,aAAa,CAAgB;IAC7B,eAAe,CAAkB;IAElD,YACE,aAA4B,EAC5B,eAAsC,EACtC,cAA+B,EAC/B,YAA4B,EAC5B,eAAuB;QAEvB,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;QAExF,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CACpC,aAAa,EACb,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,CAChB,CAAC;QAEF,IAAI,CAAC,eAAe,GAAG,IAAI,eAAe,CAAC,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;IAC3F,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,MAAc,EAAE,OAAyB;QACvD,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,mBAAmB,CAAC,MAAc,EAAE,OAAsB;QACxD,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,MAAc,EAAE,OAAoB;QACpD,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAc,EAAE,OAAuB;QAC1D,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,yBAAyB,CAAC,MAAc,EAAE,OAA4B;QAC1E,MAAM,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjE,CAAC;IAED;;OAEG;IACH,wBAAwB,CAAC,MAAc,EAAE,OAA2B;QAClE,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,oBAAoB,CAAC,MAAc,EAAE,OAA2B;QAC9D,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseHandler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/responseHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAOL,KAAK,mBAAmB,EAGzB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAElE;;GAEG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,eAAe,EAAE,qBAAqB,EACtC,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,cAAc;IAG/C;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"responseHandler.d.ts","sourceRoot":"","sources":["../../../src/daemon/handlers/responseHandler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAElC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAOL,KAAK,mBAAmB,EAGzB,MAAM,gBAAgB,CAAC;AAExB;;GAEG;AACH,KAAK,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;AAElE;;GAEG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,eAAe,EAAE,qBAAqB,EACtC,cAAc,EAAE,eAAe,EAC/B,YAAY,EAAE,cAAc;IAG/C;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,IAAI;IAuB5E;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI;IA0D1E;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAoG9B;;OAEG;IACH,OAAO,CAAC,2BAA2B;CAwDpC"}
|
|
@@ -22,22 +22,17 @@ export class ResponseHandler {
|
|
|
22
22
|
*/
|
|
23
23
|
handleWorkerResponse(message) {
|
|
24
24
|
console.error(`[daemon] Received worker response: ${message.type} (requestId: ${message.requestId})`);
|
|
25
|
-
// Check for ready signal (not a command response)
|
|
26
25
|
if (message.type === 'worker_ready') {
|
|
27
26
|
console.error('[daemon] Worker ready signal (already processed during launch)');
|
|
28
27
|
return;
|
|
29
28
|
}
|
|
30
|
-
// Check if this is a command response
|
|
31
29
|
if (isCommandResponse(message.type)) {
|
|
32
|
-
// Look up pending request
|
|
33
30
|
const pending = this.pendingRequests.get(message.requestId);
|
|
34
31
|
if (!pending) {
|
|
35
32
|
console.error(`[daemon] No pending request found for requestId: ${message.requestId}`);
|
|
36
33
|
return;
|
|
37
34
|
}
|
|
38
|
-
// Remove from pending (includes clearing timeout)
|
|
39
35
|
this.pendingRequests.remove(message.requestId);
|
|
40
|
-
// Forward response to client
|
|
41
36
|
this.forwardCommandResponse(pending.socket, pending.sessionId, message, pending);
|
|
42
37
|
}
|
|
43
38
|
}
|
|
@@ -101,12 +96,10 @@ export class ResponseHandler {
|
|
|
101
96
|
console.error(`[daemon] Invalid worker response type: ${workerResponse.type}`);
|
|
102
97
|
return;
|
|
103
98
|
}
|
|
104
|
-
// Special handling for worker_status - merge with base status data
|
|
105
99
|
if (commandName === 'worker_status') {
|
|
106
100
|
this.forwardWorkerStatusResponse(socket, sessionId, workerResponse, pendingRequest);
|
|
107
101
|
return;
|
|
108
102
|
}
|
|
109
|
-
// Special handling for worker_peek - transform to PeekResponse format
|
|
110
103
|
if (commandName === 'worker_peek') {
|
|
111
104
|
const { requestId: _requestId, success, data, error, } = workerResponse;
|
|
112
105
|
const peekResponse = {
|
|
@@ -137,7 +130,25 @@ export class ResponseHandler {
|
|
|
137
130
|
console.error('[daemon] Forwarded worker_peek_response to client (transformed to PeekResponse)');
|
|
138
131
|
return;
|
|
139
132
|
}
|
|
140
|
-
|
|
133
|
+
if (commandName === 'worker_har_data') {
|
|
134
|
+
const { requestId: _requestId, success, data, error, } = workerResponse;
|
|
135
|
+
const harDataResponse = {
|
|
136
|
+
type: 'har_data_response',
|
|
137
|
+
sessionId,
|
|
138
|
+
status: success ? 'ok' : 'error',
|
|
139
|
+
...(success &&
|
|
140
|
+
data && {
|
|
141
|
+
data: {
|
|
142
|
+
sessionPid: this.sessionService.readPid() ?? 0,
|
|
143
|
+
requests: data.requests,
|
|
144
|
+
},
|
|
145
|
+
}),
|
|
146
|
+
...(error && { error }),
|
|
147
|
+
};
|
|
148
|
+
this.sendResponse(socket, harDataResponse);
|
|
149
|
+
console.error('[daemon] Forwarded worker_har_data_response to client (transformed to HARDataResponse)');
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
141
152
|
const { requestId: _requestId, success, ...rest } = workerResponse;
|
|
142
153
|
const response = {
|
|
143
154
|
...rest,
|