claude-chrome-parallel 3.0.3 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +398 -464
- package/assets/demo.svg +278 -173
- package/dist/cdp/client.d.ts +60 -2
- package/dist/cdp/client.d.ts.map +1 -1
- package/dist/cdp/client.js +344 -5
- package/dist/cdp/client.js.map +1 -1
- package/dist/cdp/connection-pool.d.ts.map +1 -1
- package/dist/cdp/connection-pool.js +20 -4
- package/dist/cdp/connection-pool.js.map +1 -1
- package/dist/chrome/launcher.d.ts +11 -0
- package/dist/chrome/launcher.d.ts.map +1 -1
- package/dist/chrome/launcher.js +124 -10
- package/dist/chrome/launcher.js.map +1 -1
- package/dist/chrome/pool.d.ts +54 -0
- package/dist/chrome/pool.d.ts.map +1 -0
- package/dist/chrome/pool.js +301 -0
- package/dist/chrome/pool.js.map +1 -0
- package/dist/chrome/profile-detector.d.ts +52 -0
- package/dist/chrome/profile-detector.d.ts.map +1 -0
- package/dist/chrome/profile-detector.js +246 -0
- package/dist/chrome/profile-detector.js.map +1 -0
- package/dist/cli/claude-session.js +15 -15
- package/dist/cli/index.js +162 -37
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/update-check.d.ts +9 -0
- package/dist/cli/update-check.js +141 -0
- package/dist/cli/update-check.js.map +1 -0
- package/dist/config/global.d.ts +31 -0
- package/dist/config/global.d.ts.map +1 -1
- package/dist/config/global.js.map +1 -1
- package/dist/dashboard/activity-tracker.d.ts +60 -0
- package/dist/dashboard/activity-tracker.d.ts.map +1 -0
- package/dist/dashboard/activity-tracker.js +178 -0
- package/dist/dashboard/activity-tracker.js.map +1 -0
- package/dist/dashboard/ansi.d.ts +117 -0
- package/dist/dashboard/ansi.d.ts.map +1 -0
- package/dist/dashboard/ansi.js +199 -0
- package/dist/dashboard/ansi.js.map +1 -0
- package/dist/dashboard/index.d.ts +110 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +412 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/keyboard-handler.d.ts +43 -0
- package/dist/dashboard/keyboard-handler.d.ts.map +1 -0
- package/dist/dashboard/keyboard-handler.js +215 -0
- package/dist/dashboard/keyboard-handler.js.map +1 -0
- package/dist/dashboard/operation-controller.d.ts +76 -0
- package/dist/dashboard/operation-controller.d.ts.map +1 -0
- package/dist/dashboard/operation-controller.js +167 -0
- package/dist/dashboard/operation-controller.js.map +1 -0
- package/dist/dashboard/renderer.d.ts +76 -0
- package/dist/dashboard/renderer.d.ts.map +1 -0
- package/dist/dashboard/renderer.js +193 -0
- package/dist/dashboard/renderer.js.map +1 -0
- package/dist/dashboard/types.d.ts +56 -0
- package/dist/dashboard/types.d.ts.map +1 -0
- package/dist/dashboard/types.js +12 -0
- package/dist/dashboard/types.js.map +1 -0
- package/dist/dashboard/views/main-view.d.ts +23 -0
- package/dist/dashboard/views/main-view.d.ts.map +1 -0
- package/dist/dashboard/views/main-view.js +143 -0
- package/dist/dashboard/views/main-view.js.map +1 -0
- package/dist/dashboard/views/sessions-view.d.ts +22 -0
- package/dist/dashboard/views/sessions-view.d.ts.map +1 -0
- package/dist/dashboard/views/sessions-view.js +104 -0
- package/dist/dashboard/views/sessions-view.js.map +1 -0
- package/dist/dashboard/views/tabs-view.d.ts +21 -0
- package/dist/dashboard/views/tabs-view.d.ts.map +1 -0
- package/dist/dashboard/views/tabs-view.js +92 -0
- package/dist/dashboard/views/tabs-view.js.map +1 -0
- package/dist/hints/hint-engine.d.ts +65 -0
- package/dist/hints/hint-engine.d.ts.map +1 -0
- package/dist/hints/hint-engine.js +156 -0
- package/dist/hints/hint-engine.js.map +1 -0
- package/dist/hints/index.d.ts +8 -0
- package/dist/hints/index.d.ts.map +1 -0
- package/dist/hints/index.js +11 -0
- package/dist/hints/index.js.map +1 -0
- package/dist/hints/pattern-learner.d.ts +76 -0
- package/dist/hints/pattern-learner.d.ts.map +1 -0
- package/dist/hints/pattern-learner.js +254 -0
- package/dist/hints/pattern-learner.js.map +1 -0
- package/dist/hints/rules/composite-suggestions.d.ts +6 -0
- package/dist/hints/rules/composite-suggestions.d.ts.map +1 -0
- package/dist/hints/rules/composite-suggestions.js +66 -0
- package/dist/hints/rules/composite-suggestions.js.map +1 -0
- package/dist/hints/rules/error-recovery.d.ts +7 -0
- package/dist/hints/rules/error-recovery.d.ts.map +1 -0
- package/dist/hints/rules/error-recovery.js +47 -0
- package/dist/hints/rules/error-recovery.js.map +1 -0
- package/dist/hints/rules/learned-rules.d.ts +13 -0
- package/dist/hints/rules/learned-rules.d.ts.map +1 -0
- package/dist/hints/rules/learned-rules.js +27 -0
- package/dist/hints/rules/learned-rules.js.map +1 -0
- package/dist/hints/rules/repetition-detection.d.ts +7 -0
- package/dist/hints/rules/repetition-detection.d.ts.map +1 -0
- package/dist/hints/rules/repetition-detection.js +82 -0
- package/dist/hints/rules/repetition-detection.js.map +1 -0
- package/dist/hints/rules/sequence-detection.d.ts +6 -0
- package/dist/hints/rules/sequence-detection.d.ts.map +1 -0
- package/dist/hints/rules/sequence-detection.js +61 -0
- package/dist/hints/rules/sequence-detection.js.map +1 -0
- package/dist/hints/rules/success-hints.d.ts +6 -0
- package/dist/hints/rules/success-hints.d.ts.map +1 -0
- package/dist/hints/rules/success-hints.js +62 -0
- package/dist/hints/rules/success-hints.js.map +1 -0
- package/dist/index.js +190 -55
- package/dist/index.js.map +1 -1
- package/dist/lightpanda/launcher.d.ts +58 -0
- package/dist/lightpanda/launcher.d.ts.map +1 -0
- package/dist/lightpanda/launcher.js +199 -0
- package/dist/lightpanda/launcher.js.map +1 -0
- package/dist/mcp-server.d.ts +38 -1
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +220 -6
- package/dist/mcp-server.js.map +1 -1
- package/dist/orchestration/state-manager.js +46 -46
- package/dist/orchestration/workflow-engine.d.ts +1 -0
- package/dist/orchestration/workflow-engine.d.ts.map +1 -1
- package/dist/orchestration/workflow-engine.js +112 -114
- package/dist/orchestration/workflow-engine.js.map +1 -1
- package/dist/resources/usage-guide.d.ts +13 -0
- package/dist/resources/usage-guide.d.ts.map +1 -0
- package/dist/resources/usage-guide.js +101 -0
- package/dist/resources/usage-guide.js.map +1 -0
- package/dist/router/browser-router.d.ts +51 -0
- package/dist/router/browser-router.d.ts.map +1 -0
- package/dist/router/browser-router.js +178 -0
- package/dist/router/browser-router.js.map +1 -0
- package/dist/router/cookie-sync.d.ts +48 -0
- package/dist/router/cookie-sync.d.ts.map +1 -0
- package/dist/router/cookie-sync.js +106 -0
- package/dist/router/cookie-sync.js.map +1 -0
- package/dist/router/index.d.ts +5 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +10 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/tool-routing-registry.d.ts +21 -0
- package/dist/router/tool-routing-registry.d.ts.map +1 -0
- package/dist/router/tool-routing-registry.js +90 -0
- package/dist/router/tool-routing-registry.js.map +1 -0
- package/dist/session-manager.d.ts +41 -1
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +216 -21
- package/dist/session-manager.js.map +1 -1
- package/dist/tools/click-element.d.ts +8 -0
- package/dist/tools/click-element.d.ts.map +1 -0
- package/dist/tools/click-element.js +383 -0
- package/dist/tools/click-element.js.map +1 -0
- package/dist/tools/computer.d.ts.map +1 -1
- package/dist/tools/computer.js +198 -34
- package/dist/tools/computer.js.map +1 -1
- package/dist/tools/console-capture.d.ts +6 -0
- package/dist/tools/console-capture.d.ts.map +1 -0
- package/dist/tools/console-capture.js +320 -0
- package/dist/tools/console-capture.js.map +1 -0
- package/dist/tools/cookies.d.ts +6 -0
- package/dist/tools/cookies.d.ts.map +1 -0
- package/dist/tools/cookies.js +263 -0
- package/dist/tools/cookies.js.map +1 -0
- package/dist/tools/drag-drop.d.ts +6 -0
- package/dist/tools/drag-drop.d.ts.map +1 -0
- package/dist/tools/drag-drop.js +252 -0
- package/dist/tools/drag-drop.js.map +1 -0
- package/dist/tools/emulate-device.d.ts +6 -0
- package/dist/tools/emulate-device.d.ts.map +1 -0
- package/dist/tools/emulate-device.js +221 -0
- package/dist/tools/emulate-device.js.map +1 -0
- package/dist/tools/file-upload.d.ts +6 -0
- package/dist/tools/file-upload.d.ts.map +1 -0
- package/dist/tools/file-upload.js +208 -0
- package/dist/tools/file-upload.js.map +1 -0
- package/dist/tools/fill-form.d.ts +8 -0
- package/dist/tools/fill-form.d.ts.map +1 -0
- package/dist/tools/fill-form.js +342 -0
- package/dist/tools/fill-form.js.map +1 -0
- package/dist/tools/find.d.ts.map +1 -1
- package/dist/tools/find.js +153 -65
- package/dist/tools/find.js.map +1 -1
- package/dist/tools/form-input.js +52 -52
- package/dist/tools/form-input.js.map +1 -1
- package/dist/tools/geolocation.d.ts +6 -0
- package/dist/tools/geolocation.d.ts.map +1 -0
- package/dist/tools/geolocation.js +172 -0
- package/dist/tools/geolocation.js.map +1 -0
- package/dist/tools/http-auth.d.ts +6 -0
- package/dist/tools/http-auth.d.ts.map +1 -0
- package/dist/tools/http-auth.js +136 -0
- package/dist/tools/http-auth.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +50 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/javascript.js +1 -1
- package/dist/tools/javascript.js.map +1 -1
- package/dist/tools/navigate.d.ts.map +1 -1
- package/dist/tools/navigate.js +5 -2
- package/dist/tools/navigate.js.map +1 -1
- package/dist/tools/network.js +4 -4
- package/dist/tools/network.js.map +1 -1
- package/dist/tools/orchestration.d.ts.map +1 -1
- package/dist/tools/orchestration.js +13 -8
- package/dist/tools/orchestration.js.map +1 -1
- package/dist/tools/page-content.d.ts +6 -0
- package/dist/tools/page-content.d.ts.map +1 -0
- package/dist/tools/page-content.js +120 -0
- package/dist/tools/page-content.js.map +1 -0
- package/dist/tools/page-pdf.d.ts +6 -0
- package/dist/tools/page-pdf.d.ts.map +1 -0
- package/dist/tools/page-pdf.js +245 -0
- package/dist/tools/page-pdf.js.map +1 -0
- package/dist/tools/page-reload.d.ts +6 -0
- package/dist/tools/page-reload.d.ts.map +1 -0
- package/dist/tools/page-reload.js +89 -0
- package/dist/tools/page-reload.js.map +1 -0
- package/dist/tools/performance-metrics.d.ts +6 -0
- package/dist/tools/performance-metrics.d.ts.map +1 -0
- package/dist/tools/performance-metrics.js +158 -0
- package/dist/tools/performance-metrics.js.map +1 -0
- package/dist/tools/read-page.d.ts.map +1 -1
- package/dist/tools/read-page.js +4 -2
- package/dist/tools/read-page.js.map +1 -1
- package/dist/tools/request-intercept.d.ts +6 -0
- package/dist/tools/request-intercept.d.ts.map +1 -0
- package/dist/tools/request-intercept.js +439 -0
- package/dist/tools/request-intercept.js.map +1 -0
- package/dist/tools/selector-query.d.ts +6 -0
- package/dist/tools/selector-query.d.ts.map +1 -0
- package/dist/tools/selector-query.js +206 -0
- package/dist/tools/selector-query.js.map +1 -0
- package/dist/tools/storage.d.ts +6 -0
- package/dist/tools/storage.d.ts.map +1 -0
- package/dist/tools/storage.js +264 -0
- package/dist/tools/storage.js.map +1 -0
- package/dist/tools/tabs-close.d.ts +6 -0
- package/dist/tools/tabs-close.d.ts.map +1 -0
- package/dist/tools/tabs-close.js +124 -0
- package/dist/tools/tabs-close.js.map +1 -0
- package/dist/tools/tabs-context.js +1 -1
- package/dist/tools/tabs-context.js.map +1 -1
- package/dist/tools/user-agent.d.ts +6 -0
- package/dist/tools/user-agent.d.ts.map +1 -0
- package/dist/tools/user-agent.js +128 -0
- package/dist/tools/user-agent.js.map +1 -0
- package/dist/tools/wait-and-click.d.ts +8 -0
- package/dist/tools/wait-and-click.d.ts.map +1 -0
- package/dist/tools/wait-and-click.js +290 -0
- package/dist/tools/wait-and-click.js.map +1 -0
- package/dist/tools/wait-for.d.ts +6 -0
- package/dist/tools/wait-for.d.ts.map +1 -0
- package/dist/tools/wait-for.js +248 -0
- package/dist/tools/wait-for.js.map +1 -0
- package/dist/tools/xpath-query.d.ts +6 -0
- package/dist/tools/xpath-query.d.ts.map +1 -0
- package/dist/tools/xpath-query.js +230 -0
- package/dist/tools/xpath-query.js.map +1 -0
- package/dist/types/browser-backend.d.ts +30 -0
- package/dist/types/browser-backend.d.ts.map +1 -0
- package/dist/types/browser-backend.js +9 -0
- package/dist/types/browser-backend.js.map +1 -0
- package/dist/types/profile.d.ts +76 -0
- package/dist/types/profile.d.ts.map +1 -0
- package/dist/types/profile.js +35 -0
- package/dist/types/profile.js.map +1 -0
- package/dist/types/session.d.ts +7 -3
- package/dist/types/session.d.ts.map +1 -1
- package/package.json +78 -75
- package/dist/master/index.d.ts +0 -18
- package/dist/master/index.d.ts.map +0 -1
- package/dist/master/index.js +0 -75
- package/dist/master/index.js.map +0 -1
- package/dist/master/ipc-server.d.ts +0 -21
- package/dist/master/ipc-server.d.ts.map +0 -1
- package/dist/master/ipc-server.js +0 -175
- package/dist/master/ipc-server.js.map +0 -1
- package/dist/master/request-handler.d.ts +0 -17
- package/dist/master/request-handler.d.ts.map +0 -1
- package/dist/master/request-handler.js +0 -134
- package/dist/master/request-handler.js.map +0 -1
- package/dist/master/session-registry.d.ts +0 -120
- package/dist/master/session-registry.d.ts.map +0 -1
- package/dist/master/session-registry.js +0 -247
- package/dist/master/session-registry.js.map +0 -1
- package/dist/shared/ipc-constants.d.ts +0 -16
- package/dist/shared/ipc-constants.d.ts.map +0 -1
- package/dist/shared/ipc-constants.js +0 -66
- package/dist/shared/ipc-constants.js.map +0 -1
- package/dist/shared/ipc-protocol.d.ts +0 -33
- package/dist/shared/ipc-protocol.d.ts.map +0 -1
- package/dist/shared/ipc-protocol.js +0 -20
- package/dist/shared/ipc-protocol.js.map +0 -1
- package/dist/worker/auto-master.d.ts +0 -24
- package/dist/worker/auto-master.d.ts.map +0 -1
- package/dist/worker/auto-master.js +0 -135
- package/dist/worker/auto-master.js.map +0 -1
- package/dist/worker/index.d.ts +0 -25
- package/dist/worker/index.d.ts.map +0 -1
- package/dist/worker/index.js +0 -93
- package/dist/worker/index.js.map +0 -1
- package/dist/worker/ipc-client.d.ts +0 -26
- package/dist/worker/ipc-client.d.ts.map +0 -1
- package/dist/worker/ipc-client.js +0 -211
- package/dist/worker/ipc-client.js.map +0 -1
- package/dist/worker/remote-session-manager.d.ts +0 -114
- package/dist/worker/remote-session-manager.d.ts.map +0 -1
- package/dist/worker/remote-session-manager.js +0 -151
- package/dist/worker/remote-session-manager.js.map +0 -1
- package/dist/worker/tools.d.ts +0 -7
- package/dist/worker/tools.d.ts.map +0 -1
- package/dist/worker/tools.js +0 -340
- package/dist/worker/tools.js.map +0 -1
- package/dist/worker/worker-mcp-server.d.ts +0 -70
- package/dist/worker/worker-mcp-server.d.ts.map +0 -1
- package/dist/worker/worker-mcp-server.js +0 -295
- package/dist/worker/worker-mcp-server.js.map +0 -1
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* IPC Protocol - Message types for Master-Worker communication
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.IPCErrorCodes = void 0;
|
|
7
|
-
// Error codes
|
|
8
|
-
exports.IPCErrorCodes = {
|
|
9
|
-
PARSE_ERROR: -32700,
|
|
10
|
-
INVALID_REQUEST: -32600,
|
|
11
|
-
METHOD_NOT_FOUND: -32601,
|
|
12
|
-
INVALID_PARAMS: -32602,
|
|
13
|
-
INTERNAL_ERROR: -32603,
|
|
14
|
-
SESSION_NOT_FOUND: -40001,
|
|
15
|
-
TARGET_NOT_FOUND: -40002,
|
|
16
|
-
OWNERSHIP_VIOLATION: -40003,
|
|
17
|
-
CHROME_NOT_CONNECTED: -40004,
|
|
18
|
-
TIMEOUT: -40005,
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=ipc-protocol.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipc-protocol.js","sourceRoot":"","sources":["../../src/shared/ipc-protocol.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAuDH,cAAc;AACD,QAAA,aAAa,GAAG;IAC3B,WAAW,EAAE,CAAC,KAAK;IACnB,eAAe,EAAE,CAAC,KAAK;IACvB,gBAAgB,EAAE,CAAC,KAAK;IACxB,cAAc,EAAE,CAAC,KAAK;IACtB,cAAc,EAAE,CAAC,KAAK;IACtB,iBAAiB,EAAE,CAAC,KAAK;IACzB,gBAAgB,EAAE,CAAC,KAAK;IACxB,mBAAmB,EAAE,CAAC,KAAK;IAC3B,oBAAoB,EAAE,CAAC,KAAK;IAC5B,OAAO,EAAE,CAAC,KAAK;CACP,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Auto Master - Automatically starts Master process if not running
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Check if Master is running by attempting to connect
|
|
6
|
-
*/
|
|
7
|
-
export declare function isMasterRunning(): Promise<boolean>;
|
|
8
|
-
/**
|
|
9
|
-
* Start Master process in background
|
|
10
|
-
*/
|
|
11
|
-
export declare function startMasterProcess(): Promise<void>;
|
|
12
|
-
/**
|
|
13
|
-
* Wait for Master to become available
|
|
14
|
-
*/
|
|
15
|
-
export declare function waitForMaster(timeout?: number): Promise<void>;
|
|
16
|
-
/**
|
|
17
|
-
* Ensure Master is running, start if not
|
|
18
|
-
*/
|
|
19
|
-
export declare function ensureMaster(): Promise<void>;
|
|
20
|
-
/**
|
|
21
|
-
* Stop the Master process if we started it
|
|
22
|
-
*/
|
|
23
|
-
export declare function stopMasterProcess(): void;
|
|
24
|
-
//# sourceMappingURL=auto-master.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-master.d.ts","sourceRoot":"","sources":["../../src/worker/auto-master.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,OAAO,CAAC,CAqBxD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAmCxD;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,OAAO,GAAE,MAA6B,GAAG,OAAO,CAAC,IAAI,CAAC,CAYzF;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAOlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC"}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Auto Master - Automatically starts Master process if not running
|
|
4
|
-
*/
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
-
}) : function(o, v) {
|
|
19
|
-
o["default"] = v;
|
|
20
|
-
});
|
|
21
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
-
var ownKeys = function(o) {
|
|
23
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
-
var ar = [];
|
|
25
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
-
return ar;
|
|
27
|
-
};
|
|
28
|
-
return ownKeys(o);
|
|
29
|
-
};
|
|
30
|
-
return function (mod) {
|
|
31
|
-
if (mod && mod.__esModule) return mod;
|
|
32
|
-
var result = {};
|
|
33
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
-
__setModuleDefault(result, mod);
|
|
35
|
-
return result;
|
|
36
|
-
};
|
|
37
|
-
})();
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.isMasterRunning = isMasterRunning;
|
|
40
|
-
exports.startMasterProcess = startMasterProcess;
|
|
41
|
-
exports.waitForMaster = waitForMaster;
|
|
42
|
-
exports.ensureMaster = ensureMaster;
|
|
43
|
-
exports.stopMasterProcess = stopMasterProcess;
|
|
44
|
-
const net = __importStar(require("net"));
|
|
45
|
-
const child_process_1 = require("child_process");
|
|
46
|
-
const path = __importStar(require("path"));
|
|
47
|
-
const ipc_constants_1 = require("../shared/ipc-constants");
|
|
48
|
-
let masterProcess = null;
|
|
49
|
-
/**
|
|
50
|
-
* Check if Master is running by attempting to connect
|
|
51
|
-
*/
|
|
52
|
-
async function isMasterRunning() {
|
|
53
|
-
return new Promise((resolve) => {
|
|
54
|
-
const socket = net.createConnection((0, ipc_constants_1.getIPCPath)());
|
|
55
|
-
const timeout = setTimeout(() => {
|
|
56
|
-
socket.destroy();
|
|
57
|
-
resolve(false);
|
|
58
|
-
}, 1000);
|
|
59
|
-
socket.on('connect', () => {
|
|
60
|
-
clearTimeout(timeout);
|
|
61
|
-
socket.destroy();
|
|
62
|
-
resolve(true);
|
|
63
|
-
});
|
|
64
|
-
socket.on('error', () => {
|
|
65
|
-
clearTimeout(timeout);
|
|
66
|
-
socket.destroy();
|
|
67
|
-
resolve(false);
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Start Master process in background
|
|
73
|
-
*/
|
|
74
|
-
async function startMasterProcess() {
|
|
75
|
-
console.error('[AutoMaster] Starting Master process...');
|
|
76
|
-
// Path to the compiled master module - use the main entry with --master flag
|
|
77
|
-
const entryPath = path.join(__dirname, '..', 'index.js');
|
|
78
|
-
masterProcess = (0, child_process_1.spawn)(process.execPath, [entryPath, 'serve', '--master'], {
|
|
79
|
-
detached: true,
|
|
80
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
81
|
-
env: process.env,
|
|
82
|
-
});
|
|
83
|
-
// Don't keep parent process alive
|
|
84
|
-
masterProcess.unref();
|
|
85
|
-
// Log master output for debugging
|
|
86
|
-
masterProcess.stdout?.on('data', (data) => {
|
|
87
|
-
console.error(`[Master stdout] ${data.toString().trim()}`);
|
|
88
|
-
});
|
|
89
|
-
masterProcess.stderr?.on('data', (data) => {
|
|
90
|
-
console.error(`[Master stderr] ${data.toString().trim()}`);
|
|
91
|
-
});
|
|
92
|
-
masterProcess.on('error', (error) => {
|
|
93
|
-
console.error('[AutoMaster] Failed to start Master:', error);
|
|
94
|
-
});
|
|
95
|
-
masterProcess.on('exit', (code) => {
|
|
96
|
-
console.error(`[AutoMaster] Master exited with code ${code}`);
|
|
97
|
-
masterProcess = null;
|
|
98
|
-
});
|
|
99
|
-
// Wait for Master to be ready
|
|
100
|
-
await waitForMaster();
|
|
101
|
-
}
|
|
102
|
-
/**
|
|
103
|
-
* Wait for Master to become available
|
|
104
|
-
*/
|
|
105
|
-
async function waitForMaster(timeout = ipc_constants_1.MASTER_START_TIMEOUT) {
|
|
106
|
-
const startTime = Date.now();
|
|
107
|
-
while (Date.now() - startTime < timeout) {
|
|
108
|
-
if (await isMasterRunning()) {
|
|
109
|
-
console.error('[AutoMaster] Master is ready');
|
|
110
|
-
return;
|
|
111
|
-
}
|
|
112
|
-
await new Promise(resolve => setTimeout(resolve, 200));
|
|
113
|
-
}
|
|
114
|
-
throw new Error(`Master did not start within ${timeout}ms`);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Ensure Master is running, start if not
|
|
118
|
-
*/
|
|
119
|
-
async function ensureMaster() {
|
|
120
|
-
if (await isMasterRunning()) {
|
|
121
|
-
console.error('[AutoMaster] Master already running');
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
await startMasterProcess();
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Stop the Master process if we started it
|
|
128
|
-
*/
|
|
129
|
-
function stopMasterProcess() {
|
|
130
|
-
if (masterProcess) {
|
|
131
|
-
masterProcess.kill();
|
|
132
|
-
masterProcess = null;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
//# sourceMappingURL=auto-master.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auto-master.js","sourceRoot":"","sources":["../../src/worker/auto-master.ts"],"names":[],"mappings":"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"}
|
package/dist/worker/index.d.ts
DELETED
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Worker Process - MCP server that connects to Master for Chrome operations
|
|
3
|
-
*/
|
|
4
|
-
import { IPCClient } from './ipc-client';
|
|
5
|
-
import { RemoteSessionManager } from './remote-session-manager';
|
|
6
|
-
export interface WorkerOptions {
|
|
7
|
-
autoStartMaster?: boolean;
|
|
8
|
-
}
|
|
9
|
-
export declare class Worker {
|
|
10
|
-
private ipcClient;
|
|
11
|
-
private sessionManager;
|
|
12
|
-
private running;
|
|
13
|
-
start(options?: WorkerOptions): Promise<{
|
|
14
|
-
sessionManager: RemoteSessionManager;
|
|
15
|
-
}>;
|
|
16
|
-
stop(): Promise<void>;
|
|
17
|
-
isRunning(): boolean;
|
|
18
|
-
getSessionManager(): RemoteSessionManager | null;
|
|
19
|
-
getIPCClient(): IPCClient | null;
|
|
20
|
-
}
|
|
21
|
-
export declare function getWorker(): Worker;
|
|
22
|
-
export declare function getRemoteSessionManager(): RemoteSessionManager | null;
|
|
23
|
-
export declare function setRemoteSessionManager(manager: RemoteSessionManager): void;
|
|
24
|
-
export declare function startWorker(): Promise<RemoteSessionManager>;
|
|
25
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/worker/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAGhE,MAAM,WAAW,aAAa;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,SAAS,CAA0B;IAC3C,OAAO,CAAC,cAAc,CAAqC;IAC3D,OAAO,CAAC,OAAO,CAAS;IAElB,KAAK,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC;QAAE,cAAc,EAAE,oBAAoB,CAAA;KAAE,CAAC;IA0CrF,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,SAAS,IAAI,OAAO;IAIpB,iBAAiB,IAAI,oBAAoB,GAAG,IAAI;IAIhD,YAAY,IAAI,SAAS,GAAG,IAAI;CAGjC;AAMD,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,GAAG,IAAI,CAErE;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,oBAAoB,GAAG,IAAI,CAE3E;AAED,wBAAsB,WAAW,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAKjE"}
|
package/dist/worker/index.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Worker Process - MCP server that connects to Master for Chrome operations
|
|
4
|
-
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.Worker = void 0;
|
|
7
|
-
exports.getWorker = getWorker;
|
|
8
|
-
exports.getRemoteSessionManager = getRemoteSessionManager;
|
|
9
|
-
exports.setRemoteSessionManager = setRemoteSessionManager;
|
|
10
|
-
exports.startWorker = startWorker;
|
|
11
|
-
const ipc_client_1 = require("./ipc-client");
|
|
12
|
-
const remote_session_manager_1 = require("./remote-session-manager");
|
|
13
|
-
const auto_master_1 = require("./auto-master");
|
|
14
|
-
class Worker {
|
|
15
|
-
ipcClient = null;
|
|
16
|
-
sessionManager = null;
|
|
17
|
-
running = false;
|
|
18
|
-
async start(options = {}) {
|
|
19
|
-
console.error('[Worker] Starting...');
|
|
20
|
-
try {
|
|
21
|
-
// Ensure Master is running
|
|
22
|
-
if (options.autoStartMaster !== false) {
|
|
23
|
-
await (0, auto_master_1.ensureMaster)();
|
|
24
|
-
}
|
|
25
|
-
// Connect to Master
|
|
26
|
-
this.ipcClient = new ipc_client_1.IPCClient();
|
|
27
|
-
await this.ipcClient.connect();
|
|
28
|
-
// Set up reconnection handling
|
|
29
|
-
this.ipcClient.on('disconnect', () => {
|
|
30
|
-
console.error('[Worker] Disconnected from Master');
|
|
31
|
-
});
|
|
32
|
-
this.ipcClient.on('reconnect', () => {
|
|
33
|
-
console.error('[Worker] Reconnected to Master');
|
|
34
|
-
});
|
|
35
|
-
this.ipcClient.on('reconnect_failed', () => {
|
|
36
|
-
console.error('[Worker] Failed to reconnect to Master');
|
|
37
|
-
this.stop();
|
|
38
|
-
});
|
|
39
|
-
// Create remote session manager
|
|
40
|
-
this.sessionManager = new remote_session_manager_1.RemoteSessionManager(this.ipcClient);
|
|
41
|
-
this.running = true;
|
|
42
|
-
console.error('[Worker] Connected to Master');
|
|
43
|
-
return { sessionManager: this.sessionManager };
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
console.error('[Worker] Startup failed:', error);
|
|
47
|
-
await this.stop();
|
|
48
|
-
throw error;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
async stop() {
|
|
52
|
-
console.error('[Worker] Shutting down...');
|
|
53
|
-
this.running = false;
|
|
54
|
-
if (this.ipcClient) {
|
|
55
|
-
await this.ipcClient.disconnect();
|
|
56
|
-
this.ipcClient = null;
|
|
57
|
-
}
|
|
58
|
-
this.sessionManager = null;
|
|
59
|
-
console.error('[Worker] Stopped');
|
|
60
|
-
}
|
|
61
|
-
isRunning() {
|
|
62
|
-
return this.running;
|
|
63
|
-
}
|
|
64
|
-
getSessionManager() {
|
|
65
|
-
return this.sessionManager;
|
|
66
|
-
}
|
|
67
|
-
getIPCClient() {
|
|
68
|
-
return this.ipcClient;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
exports.Worker = Worker;
|
|
72
|
-
// Singleton instance for use by tools
|
|
73
|
-
let workerInstance = null;
|
|
74
|
-
let remoteSessionManager = null;
|
|
75
|
-
function getWorker() {
|
|
76
|
-
if (!workerInstance) {
|
|
77
|
-
workerInstance = new Worker();
|
|
78
|
-
}
|
|
79
|
-
return workerInstance;
|
|
80
|
-
}
|
|
81
|
-
function getRemoteSessionManager() {
|
|
82
|
-
return remoteSessionManager;
|
|
83
|
-
}
|
|
84
|
-
function setRemoteSessionManager(manager) {
|
|
85
|
-
remoteSessionManager = manager;
|
|
86
|
-
}
|
|
87
|
-
async function startWorker() {
|
|
88
|
-
const worker = getWorker();
|
|
89
|
-
const { sessionManager } = await worker.start();
|
|
90
|
-
setRemoteSessionManager(sessionManager);
|
|
91
|
-
return sessionManager;
|
|
92
|
-
}
|
|
93
|
-
//# sourceMappingURL=index.js.map
|
package/dist/worker/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/worker/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* IPC Client - Connects Worker to Master via Named Pipe / Unix Socket
|
|
3
|
-
*/
|
|
4
|
-
import { EventEmitter } from 'events';
|
|
5
|
-
import { IPCMethod } from '../shared/ipc-protocol';
|
|
6
|
-
export declare class IPCClient extends EventEmitter {
|
|
7
|
-
private socket;
|
|
8
|
-
private workerId;
|
|
9
|
-
private buffer;
|
|
10
|
-
private pendingRequests;
|
|
11
|
-
private connected;
|
|
12
|
-
private reconnecting;
|
|
13
|
-
private reconnectAttempts;
|
|
14
|
-
private requestCounter;
|
|
15
|
-
private ipcPath;
|
|
16
|
-
constructor();
|
|
17
|
-
connect(): Promise<void>;
|
|
18
|
-
private handleData;
|
|
19
|
-
private handleResponse;
|
|
20
|
-
call<T>(method: IPCMethod, params: Record<string, unknown>): Promise<T>;
|
|
21
|
-
private attemptReconnect;
|
|
22
|
-
disconnect(): Promise<void>;
|
|
23
|
-
isConnected(): boolean;
|
|
24
|
-
getWorkerId(): string | null;
|
|
25
|
-
}
|
|
26
|
-
//# sourceMappingURL=ipc-client.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipc-client.d.ts","sourceRoot":"","sources":["../../src/worker/ipc-client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAA2B,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAe5E,qBAAa,SAAU,SAAQ,YAAY;IACzC,OAAO,CAAC,MAAM,CAA2B;IACzC,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,eAAe,CAA0C;IACjE,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,OAAO,CAAS;;IAOlB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAmE9B,OAAO,CAAC,UAAU;IAmBlB,OAAO,CAAC,cAAc;IAiBhB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;YA+B/D,gBAAgB;IAuBxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBjC,WAAW,IAAI,OAAO;IAItB,WAAW,IAAI,MAAM,GAAG,IAAI;CAG7B"}
|
|
@@ -1,211 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* IPC Client - Connects Worker to Master via Named Pipe / Unix Socket
|
|
4
|
-
*/
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
-
}) : function(o, v) {
|
|
19
|
-
o["default"] = v;
|
|
20
|
-
});
|
|
21
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
-
var ownKeys = function(o) {
|
|
23
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
-
var ar = [];
|
|
25
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
-
return ar;
|
|
27
|
-
};
|
|
28
|
-
return ownKeys(o);
|
|
29
|
-
};
|
|
30
|
-
return function (mod) {
|
|
31
|
-
if (mod && mod.__esModule) return mod;
|
|
32
|
-
var result = {};
|
|
33
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
-
__setModuleDefault(result, mod);
|
|
35
|
-
return result;
|
|
36
|
-
};
|
|
37
|
-
})();
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.IPCClient = void 0;
|
|
40
|
-
const net = __importStar(require("net"));
|
|
41
|
-
const events_1 = require("events");
|
|
42
|
-
const ipc_constants_1 = require("../shared/ipc-constants");
|
|
43
|
-
class IPCClient extends events_1.EventEmitter {
|
|
44
|
-
socket = null;
|
|
45
|
-
workerId = null;
|
|
46
|
-
buffer = '';
|
|
47
|
-
pendingRequests = new Map();
|
|
48
|
-
connected = false;
|
|
49
|
-
reconnecting = false;
|
|
50
|
-
reconnectAttempts = 0;
|
|
51
|
-
requestCounter = 0;
|
|
52
|
-
ipcPath;
|
|
53
|
-
constructor() {
|
|
54
|
-
super();
|
|
55
|
-
this.ipcPath = (0, ipc_constants_1.getIPCPath)();
|
|
56
|
-
}
|
|
57
|
-
async connect() {
|
|
58
|
-
return new Promise((resolve, reject) => {
|
|
59
|
-
const timeout = setTimeout(() => {
|
|
60
|
-
if (this.socket) {
|
|
61
|
-
this.socket.destroy();
|
|
62
|
-
}
|
|
63
|
-
reject(new Error('Connection timeout'));
|
|
64
|
-
}, ipc_constants_1.IPC_CONNECT_TIMEOUT);
|
|
65
|
-
this.socket = net.createConnection(this.ipcPath, () => {
|
|
66
|
-
console.error(`[IPCClient] Connected to Master at ${this.ipcPath}`);
|
|
67
|
-
});
|
|
68
|
-
// Wait for worker ID from Master
|
|
69
|
-
const initHandler = (data) => {
|
|
70
|
-
this.buffer += data.toString();
|
|
71
|
-
const newlineIndex = this.buffer.indexOf('\n');
|
|
72
|
-
if (newlineIndex !== -1) {
|
|
73
|
-
const messageStr = this.buffer.slice(0, newlineIndex);
|
|
74
|
-
this.buffer = this.buffer.slice(newlineIndex + 1);
|
|
75
|
-
try {
|
|
76
|
-
const message = JSON.parse(messageStr);
|
|
77
|
-
if (message.id === 'init' && message.result) {
|
|
78
|
-
const result = message.result;
|
|
79
|
-
this.workerId = result.workerId;
|
|
80
|
-
this.connected = true;
|
|
81
|
-
this.reconnectAttempts = 0;
|
|
82
|
-
clearTimeout(timeout);
|
|
83
|
-
console.error(`[IPCClient] Registered as worker: ${this.workerId}`);
|
|
84
|
-
// Switch to normal data handler
|
|
85
|
-
this.socket.off('data', initHandler);
|
|
86
|
-
this.socket.on('data', (d) => this.handleData(d));
|
|
87
|
-
resolve();
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
catch (error) {
|
|
91
|
-
// Not the init message yet
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
|
-
this.socket.on('data', initHandler);
|
|
96
|
-
this.socket.on('close', () => {
|
|
97
|
-
console.error('[IPCClient] Connection closed');
|
|
98
|
-
this.connected = false;
|
|
99
|
-
this.emit('disconnect');
|
|
100
|
-
if (!this.reconnecting) {
|
|
101
|
-
this.attemptReconnect();
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
this.socket.on('error', (error) => {
|
|
105
|
-
console.error('[IPCClient] Socket error:', error);
|
|
106
|
-
if (!this.connected) {
|
|
107
|
-
clearTimeout(timeout);
|
|
108
|
-
reject(error);
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
});
|
|
112
|
-
}
|
|
113
|
-
handleData(data) {
|
|
114
|
-
this.buffer += data.toString();
|
|
115
|
-
let newlineIndex;
|
|
116
|
-
while ((newlineIndex = this.buffer.indexOf('\n')) !== -1) {
|
|
117
|
-
const messageStr = this.buffer.slice(0, newlineIndex);
|
|
118
|
-
this.buffer = this.buffer.slice(newlineIndex + 1);
|
|
119
|
-
if (messageStr.trim()) {
|
|
120
|
-
try {
|
|
121
|
-
const response = JSON.parse(messageStr);
|
|
122
|
-
this.handleResponse(response);
|
|
123
|
-
}
|
|
124
|
-
catch (error) {
|
|
125
|
-
console.error('[IPCClient] Failed to parse message:', error);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
handleResponse(response) {
|
|
131
|
-
const pending = this.pendingRequests.get(response.id);
|
|
132
|
-
if (!pending) {
|
|
133
|
-
console.error(`[IPCClient] No pending request for ID: ${response.id}`);
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
clearTimeout(pending.timeout);
|
|
137
|
-
this.pendingRequests.delete(response.id);
|
|
138
|
-
if (response.error) {
|
|
139
|
-
pending.reject(new Error(response.error.message));
|
|
140
|
-
}
|
|
141
|
-
else {
|
|
142
|
-
pending.resolve(response.result);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
async call(method, params) {
|
|
146
|
-
if (!this.connected || !this.socket || !this.workerId) {
|
|
147
|
-
throw new Error('Not connected to Master');
|
|
148
|
-
}
|
|
149
|
-
const id = `req-${++this.requestCounter}`;
|
|
150
|
-
return new Promise((resolve, reject) => {
|
|
151
|
-
const timeout = setTimeout(() => {
|
|
152
|
-
this.pendingRequests.delete(id);
|
|
153
|
-
reject(new Error(`Request timeout for ${method}`));
|
|
154
|
-
}, ipc_constants_1.IPC_REQUEST_TIMEOUT);
|
|
155
|
-
this.pendingRequests.set(id, {
|
|
156
|
-
resolve: resolve,
|
|
157
|
-
reject,
|
|
158
|
-
timeout,
|
|
159
|
-
});
|
|
160
|
-
const request = {
|
|
161
|
-
id,
|
|
162
|
-
method,
|
|
163
|
-
params,
|
|
164
|
-
workerId: this.workerId,
|
|
165
|
-
};
|
|
166
|
-
const message = JSON.stringify(request) + '\n';
|
|
167
|
-
this.socket.write(message);
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
async attemptReconnect() {
|
|
171
|
-
this.reconnecting = true;
|
|
172
|
-
while (this.reconnectAttempts < ipc_constants_1.WORKER_RECONNECT_ATTEMPTS) {
|
|
173
|
-
this.reconnectAttempts++;
|
|
174
|
-
console.error(`[IPCClient] Reconnection attempt ${this.reconnectAttempts}/${ipc_constants_1.WORKER_RECONNECT_ATTEMPTS}`);
|
|
175
|
-
try {
|
|
176
|
-
await new Promise(resolve => setTimeout(resolve, ipc_constants_1.WORKER_RECONNECT_DELAY));
|
|
177
|
-
await this.connect();
|
|
178
|
-
this.reconnecting = false;
|
|
179
|
-
this.emit('reconnect');
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
catch (error) {
|
|
183
|
-
console.error('[IPCClient] Reconnection failed:', error);
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
this.reconnecting = false;
|
|
187
|
-
console.error('[IPCClient] All reconnection attempts failed');
|
|
188
|
-
this.emit('reconnect_failed');
|
|
189
|
-
}
|
|
190
|
-
async disconnect() {
|
|
191
|
-
this.connected = false;
|
|
192
|
-
for (const [id, pending] of this.pendingRequests) {
|
|
193
|
-
clearTimeout(pending.timeout);
|
|
194
|
-
pending.reject(new Error('Disconnected'));
|
|
195
|
-
}
|
|
196
|
-
this.pendingRequests.clear();
|
|
197
|
-
if (this.socket) {
|
|
198
|
-
this.socket.destroy();
|
|
199
|
-
this.socket = null;
|
|
200
|
-
}
|
|
201
|
-
this.workerId = null;
|
|
202
|
-
}
|
|
203
|
-
isConnected() {
|
|
204
|
-
return this.connected;
|
|
205
|
-
}
|
|
206
|
-
getWorkerId() {
|
|
207
|
-
return this.workerId;
|
|
208
|
-
}
|
|
209
|
-
}
|
|
210
|
-
exports.IPCClient = IPCClient;
|
|
211
|
-
//# sourceMappingURL=ipc-client.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ipc-client.js","sourceRoot":"","sources":["../../src/worker/ipc-client.ts"],"names":[],"mappings":"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"}
|