@lhremote/core 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/db/repositories/campaign.js +2 -2
- package/dist/db/repositories/campaign.js.map +1 -1
- package/dist/db/repositories/campaign.test.js +4 -4
- package/dist/db/repositories/campaign.test.js.map +1 -1
- package/dist/db/testing/create-fixture.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/operations/campaign-create.js +1 -1
- package/dist/operations/campaign-create.js.map +1 -1
- package/dist/operations/campaign-create.test.js +8 -0
- package/dist/operations/campaign-create.test.js.map +1 -1
- package/dist/operations/campaign-start.js +1 -1
- package/dist/operations/campaign-start.js.map +1 -1
- package/dist/operations/campaign-start.test.js +9 -0
- package/dist/operations/campaign-start.test.js.map +1 -1
- package/dist/operations/get-errors.d.ts +21 -0
- package/dist/operations/get-errors.d.ts.map +1 -0
- package/dist/operations/get-errors.js +30 -0
- package/dist/operations/get-errors.js.map +1 -0
- package/dist/operations/get-errors.test.d.ts +2 -0
- package/dist/operations/get-errors.test.d.ts.map +1 -0
- package/dist/operations/get-errors.test.js +135 -0
- package/dist/operations/get-errors.test.js.map +1 -0
- package/dist/operations/index.d.ts +1 -0
- package/dist/operations/index.d.ts.map +1 -1
- package/dist/operations/index.js +2 -0
- package/dist/operations/index.js.map +1 -1
- package/dist/services/errors.d.ts +12 -0
- package/dist/services/errors.d.ts.map +1 -1
- package/dist/services/errors.js +27 -0
- package/dist/services/errors.js.map +1 -1
- package/dist/services/index.d.ts +2 -2
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/index.js.map +1 -1
- package/dist/services/instance-context.d.ts +9 -0
- package/dist/services/instance-context.d.ts.map +1 -1
- package/dist/services/instance-context.js +27 -1
- package/dist/services/instance-context.js.map +1 -1
- package/dist/services/instance-context.test.js +22 -0
- package/dist/services/instance-context.test.js.map +1 -1
- package/dist/services/instance.d.ts +25 -17
- package/dist/services/instance.d.ts.map +1 -1
- package/dist/services/instance.js +48 -38
- package/dist/services/instance.js.map +1 -1
- package/dist/services/instance.test.js +33 -89
- package/dist/services/instance.test.js.map +1 -1
- package/dist/services/launcher.d.ts +24 -1
- package/dist/services/launcher.d.ts.map +1 -1
- package/dist/services/launcher.js +61 -0
- package/dist/services/launcher.js.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/ui-health.d.ts +60 -0
- package/dist/types/ui-health.d.ts.map +1 -0
- package/dist/types/ui-health.js +4 -0
- package/dist/types/ui-health.js.map +1 -0
- package/package.json +1 -1
package/dist/operations/index.js
CHANGED
|
@@ -22,6 +22,8 @@ export { campaignExport, } from "./campaign-export.js";
|
|
|
22
22
|
export { campaignExcludeAdd, } from "./campaign-exclude-add.js";
|
|
23
23
|
export { campaignExcludeRemove, } from "./campaign-exclude-remove.js";
|
|
24
24
|
export { campaignExcludeList, } from "./campaign-exclude-list.js";
|
|
25
|
+
// Error detection
|
|
26
|
+
export { getErrors, } from "./get-errors.js";
|
|
25
27
|
// Messaging
|
|
26
28
|
export { queryMessages, } from "./query-messages.js";
|
|
27
29
|
export { checkReplies, } from "./check-replies.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/operations/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAIpC,gBAAgB;AAChB,OAAO,EACL,WAAW,GAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,qBAAqB;AACrB,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,GAGjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,GAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,yBAAyB;AACzB,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,GAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,eAAe;AACf,OAAO,EACL,kBAAkB,GAGnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,mBAAmB,GAGpB,MAAM,4BAA4B,CAAC;AAEpC,YAAY;AACZ,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,GAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,oBAAoB,GAGrB,MAAM,8BAA8B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/operations/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAIpC,gBAAgB;AAChB,OAAO,EACL,WAAW,GAGZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,qBAAqB;AACrB,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,gBAAgB,GAGjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,kBAAkB,GAGnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,yBAAyB;AACzB,OAAO,EACL,iBAAiB,GAGlB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,oBAAoB,GAGrB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,sBAAsB,GAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,cAAc,GAGf,MAAM,sBAAsB,CAAC;AAE9B,eAAe;AACf,OAAO,EACL,kBAAkB,GAGnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,qBAAqB,GAGtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,mBAAmB,GAGpB,MAAM,4BAA4B,CAAC;AAEpC,kBAAkB;AAClB,OAAO,EACL,SAAS,GAGV,MAAM,iBAAiB,CAAC;AAEzB,YAAY;AACZ,OAAO,EACL,aAAa,GAGd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,YAAY,GAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,sBAAsB,GAGvB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACL,oBAAoB,GAGrB,MAAM,8BAA8B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { UIHealthStatus } from "../types/index.js";
|
|
1
2
|
/**
|
|
2
3
|
* Base class for all service-layer errors.
|
|
3
4
|
*/
|
|
@@ -80,4 +81,15 @@ export declare class CampaignTimeoutError extends ServiceError {
|
|
|
80
81
|
readonly campaignId: number | undefined;
|
|
81
82
|
constructor(message: string, campaignId?: number, options?: ErrorOptions);
|
|
82
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Thrown when the LinkedHelper UI is in a blocked state due to
|
|
86
|
+
* a dialog, critical error, or blocking popup.
|
|
87
|
+
*
|
|
88
|
+
* The {@link health} property contains the full UI health status
|
|
89
|
+
* including active issues and popup state.
|
|
90
|
+
*/
|
|
91
|
+
export declare class UIBlockedError extends ServiceError {
|
|
92
|
+
readonly health: UIHealthStatus;
|
|
93
|
+
constructor(health: UIHealthStatus, options?: ErrorOptions);
|
|
94
|
+
}
|
|
83
95
|
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/services/errors.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/services/errors.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;gBACzB,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;gBACpC,OAAO,CAAC,EAAE,MAAM;CAM7B;AAED;;GAEG;AACH,qBAAa,cAAe,SAAQ,YAAY;gBAClC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIpD;AAED;;GAEG;AACH,qBAAa,2BAA4B,SAAQ,YAAY;gBAC/C,IAAI,EAAE,MAAM;CAMzB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;gBACtC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAM/C;AAED;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;gBAC3C,OAAO,CAAC,EAAE,MAAM;CAI7B;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,YAAY;gBAClC,IAAI,EAAE,MAAM;CAOzB;AAED;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAQzE;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,YAAY;gBAC1C,GAAG,EAAE,MAAM;CAMxB;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,YAAY;gBAC1C,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAMlD;AAED;;;GAGG;AACH,qBAAa,sBAAuB,SAAQ,YAAY;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE5B,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAKzE;AAED;;;GAGG;AACH,qBAAa,oBAAqB,SAAQ,YAAY;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;gBAE5B,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAKzE;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,YAAY;IAC9C,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAEpB,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,EAAE,YAAY;CAsB3D"}
|
package/dist/services/errors.js
CHANGED
|
@@ -123,4 +123,31 @@ export class CampaignTimeoutError extends ServiceError {
|
|
|
123
123
|
this.campaignId = campaignId;
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Thrown when the LinkedHelper UI is in a blocked state due to
|
|
128
|
+
* a dialog, critical error, or blocking popup.
|
|
129
|
+
*
|
|
130
|
+
* The {@link health} property contains the full UI health status
|
|
131
|
+
* including active issues and popup state.
|
|
132
|
+
*/
|
|
133
|
+
export class UIBlockedError extends ServiceError {
|
|
134
|
+
health;
|
|
135
|
+
constructor(health, options) {
|
|
136
|
+
const reasons = [];
|
|
137
|
+
for (const issue of health.issues) {
|
|
138
|
+
if (issue.type === "dialog") {
|
|
139
|
+
reasons.push(`Dialog: ${issue.data.options.message}`);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
reasons.push(`Critical error: ${issue.data.message}`);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (health.popup?.blocked) {
|
|
146
|
+
reasons.push(`Popup: ${health.popup.message ?? "blocking overlay active"}`);
|
|
147
|
+
}
|
|
148
|
+
super(`LinkedHelper UI is blocked — ${reasons.join("; ")}`, options);
|
|
149
|
+
this.name = "UIBlockedError";
|
|
150
|
+
this.health = health;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
126
153
|
//# sourceMappingURL=errors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/services/errors.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/services/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/services/index.d.ts
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { AppService, type AppServiceOptions } from "./app.js";
|
|
2
|
-
export { InstanceService, type ActionResult } from "./instance.js";
|
|
2
|
+
export { InstanceService, type ActionResult, type HealthChecker } from "./instance.js";
|
|
3
3
|
export { startInstanceWithRecovery, waitForInstancePort, waitForInstanceShutdown, type StartInstanceOutcome, } from "./instance-lifecycle.js";
|
|
4
4
|
export { LauncherService } from "./launcher.js";
|
|
5
5
|
export { checkStatus, type AccountInstanceStatus, type DatabaseStatus, type LauncherStatus, type StatusReport, } from "./status.js";
|
|
6
6
|
export { CampaignService } from "./campaign.js";
|
|
7
7
|
export { AccountResolutionError, resolveAccount, } from "./account-resolution.js";
|
|
8
8
|
export { withDatabase, withInstanceDatabase, type DatabaseContext, type InstanceDatabaseContext, } from "./instance-context.js";
|
|
9
|
-
export { ActionExecutionError, AppLaunchError, AppNotFoundError, CampaignExecutionError, CampaignTimeoutError, ExtractionTimeoutError, InstanceNotRunningError, InvalidProfileUrlError, LinkedHelperNotRunningError, ServiceError, StartInstanceError, WrongPortError, } from "./errors.js";
|
|
9
|
+
export { ActionExecutionError, AppLaunchError, AppNotFoundError, CampaignExecutionError, CampaignTimeoutError, ExtractionTimeoutError, InstanceNotRunningError, InvalidProfileUrlError, LinkedHelperNotRunningError, ServiceError, StartInstanceError, UIBlockedError, WrongPortError, } from "./errors.js";
|
|
10
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,WAAW,EACX,KAAK,qBAAqB,EAC1B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,uBAAuB,GAC7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC"}
|
package/dist/services/index.js
CHANGED
|
@@ -8,5 +8,5 @@ export { checkStatus, } from "./status.js";
|
|
|
8
8
|
export { CampaignService } from "./campaign.js";
|
|
9
9
|
export { AccountResolutionError, resolveAccount, } from "./account-resolution.js";
|
|
10
10
|
export { withDatabase, withInstanceDatabase, } from "./instance-context.js";
|
|
11
|
-
export { ActionExecutionError, AppLaunchError, AppNotFoundError, CampaignExecutionError, CampaignTimeoutError, ExtractionTimeoutError, InstanceNotRunningError, InvalidProfileUrlError, LinkedHelperNotRunningError, ServiceError, StartInstanceError, WrongPortError, } from "./errors.js";
|
|
11
|
+
export { ActionExecutionError, AppLaunchError, AppNotFoundError, CampaignExecutionError, CampaignTimeoutError, ExtractionTimeoutError, InstanceNotRunningError, InvalidProfileUrlError, LinkedHelperNotRunningError, ServiceError, StartInstanceError, UIBlockedError, WrongPortError, } from "./errors.js";
|
|
12
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,UAAU,EAA0B,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/services/index.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,UAAU,EAA0B,MAAM,UAAU,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAyC,MAAM,eAAe,CAAC;AACvF,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,uBAAuB,GAExB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,WAAW,GAKZ,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EACL,sBAAsB,EACtB,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,YAAY,EACZ,oBAAoB,GAGrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,YAAY,EACZ,kBAAkB,EAClB,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC"}
|
|
@@ -28,10 +28,19 @@ export declare function withDatabase<T>(accountId: number, callback: (ctx: Datab
|
|
|
28
28
|
*
|
|
29
29
|
* All resources are cleaned up automatically when the callback finishes.
|
|
30
30
|
*
|
|
31
|
+
* A launcher connection is opened alongside the instance so that
|
|
32
|
+
* post-evaluation UI health checks can detect blocking dialogs and
|
|
33
|
+
* popups. If the launcher connection fails the operation proceeds
|
|
34
|
+
* without health checking.
|
|
35
|
+
*
|
|
31
36
|
* @throws {InstanceNotRunningError} if no instance port can be discovered.
|
|
32
37
|
*/
|
|
33
38
|
export declare function withInstanceDatabase<T>(cdpPort: number, accountId: number, callback: (ctx: InstanceDatabaseContext) => T | Promise<T>, options?: {
|
|
34
39
|
instanceTimeout?: number;
|
|
35
40
|
db?: DatabaseClientOptions;
|
|
41
|
+
launcher?: {
|
|
42
|
+
host?: string;
|
|
43
|
+
allowRemote?: boolean;
|
|
44
|
+
};
|
|
36
45
|
}): Promise<T>;
|
|
37
46
|
//# sourceMappingURL=instance-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-context.d.ts","sourceRoot":"","sources":["../../src/services/instance-context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAoB,MAAM,gBAAgB,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"instance-context.d.ts","sourceRoot":"","sources":["../../src/services/instance-context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAoB,MAAM,gBAAgB,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIhD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAClD,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,CAAC,CAAC,CAQZ;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,GAAG,EAAE,uBAAuB,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,EAC1D,OAAO,CAAC,EAAE;IACR,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,EAAE,CAAC,EAAE,qBAAqB,CAAC;IAC3B,QAAQ,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACrD,GACA,OAAO,CAAC,CAAC,CAAC,CA4CZ"}
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
import { DatabaseClient, discoverDatabase } from "../db/index.js";
|
|
4
4
|
import { discoverInstancePort } from "../cdp/index.js";
|
|
5
5
|
import { InstanceService } from "./instance.js";
|
|
6
|
-
import {
|
|
6
|
+
import { LauncherService } from "./launcher.js";
|
|
7
|
+
import { InstanceNotRunningError, UIBlockedError } from "./errors.js";
|
|
7
8
|
/**
|
|
8
9
|
* Open the account's database inside a managed scope.
|
|
9
10
|
*
|
|
@@ -26,6 +27,11 @@ export async function withDatabase(accountId, callback, options) {
|
|
|
26
27
|
*
|
|
27
28
|
* All resources are cleaned up automatically when the callback finishes.
|
|
28
29
|
*
|
|
30
|
+
* A launcher connection is opened alongside the instance so that
|
|
31
|
+
* post-evaluation UI health checks can detect blocking dialogs and
|
|
32
|
+
* popups. If the launcher connection fails the operation proceeds
|
|
33
|
+
* without health checking.
|
|
34
|
+
*
|
|
29
35
|
* @throws {InstanceNotRunningError} if no instance port can be discovered.
|
|
30
36
|
*/
|
|
31
37
|
export async function withInstanceDatabase(cdpPort, accountId, callback, options) {
|
|
@@ -34,15 +40,35 @@ export async function withInstanceDatabase(cdpPort, accountId, callback, options
|
|
|
34
40
|
throw new InstanceNotRunningError("No LinkedHelper instance is running. Use start-instance first.");
|
|
35
41
|
}
|
|
36
42
|
const instance = new InstanceService(instancePort, options?.instanceTimeout != null ? { timeout: options.instanceTimeout } : undefined);
|
|
43
|
+
let launcher = null;
|
|
37
44
|
let db = null;
|
|
38
45
|
try {
|
|
39
46
|
await instance.connect();
|
|
47
|
+
// Open a launcher connection for health checking.
|
|
48
|
+
try {
|
|
49
|
+
launcher = new LauncherService(cdpPort, options?.launcher);
|
|
50
|
+
await launcher.connect();
|
|
51
|
+
const connectedLauncher = launcher;
|
|
52
|
+
instance.setHealthChecker(async () => {
|
|
53
|
+
const health = await connectedLauncher.checkUIHealth(accountId);
|
|
54
|
+
if (!health.healthy) {
|
|
55
|
+
throw new UIBlockedError(health);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
// Launcher connection failed — proceed without health checking.
|
|
61
|
+
launcher?.disconnect();
|
|
62
|
+
launcher = null;
|
|
63
|
+
}
|
|
40
64
|
const dbPath = discoverDatabase(accountId);
|
|
41
65
|
db = new DatabaseClient(dbPath, options?.db);
|
|
42
66
|
return await callback({ accountId, instance, db });
|
|
43
67
|
}
|
|
44
68
|
finally {
|
|
69
|
+
instance.setHealthChecker(null);
|
|
45
70
|
instance.disconnect();
|
|
71
|
+
launcher?.disconnect();
|
|
46
72
|
db?.close();
|
|
47
73
|
}
|
|
48
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-context.js","sourceRoot":"","sources":["../../src/services/instance-context.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,cAAc,EAA8B,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"instance-context.js","sourceRoot":"","sources":["../../src/services/instance-context.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,cAAc,EAA8B,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAmBtE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,QAAkD,EAClD,OAA+B;IAE/B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,CAAC;QACH,OAAO,MAAM,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3C,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,OAAe,EACf,SAAiB,EACjB,QAA0D,EAC1D,OAIC;IAED,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACzD,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,MAAM,IAAI,uBAAuB,CAC/B,gEAAgE,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,eAAe,CAClC,YAAY,EACZ,OAAO,EAAE,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CACpF,CAAC;IACF,IAAI,QAAQ,GAA2B,IAAI,CAAC;IAC5C,IAAI,EAAE,GAA0B,IAAI,CAAC;IAErC,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEzB,kDAAkD;QAClD,IAAI,CAAC;YACH,QAAQ,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3D,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;YACzB,MAAM,iBAAiB,GAAG,QAAQ,CAAC;YACnC,QAAQ,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;gBACnC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;gBAChE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACpB,MAAM,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,gEAAgE;YAChE,QAAQ,EAAE,UAAU,EAAE,CAAC;YACvB,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;QAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAC3C,EAAE,GAAG,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,MAAM,QAAQ,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;YAAS,CAAC;QACT,QAAQ,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAChC,QAAQ,CAAC,UAAU,EAAE,CAAC;QACtB,QAAQ,EAAE,UAAU,EAAE,CAAC;QACvB,EAAE,EAAE,KAAK,EAAE,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -11,15 +11,20 @@ vi.mock("../db/index.js", () => ({
|
|
|
11
11
|
vi.mock("./instance.js", () => ({
|
|
12
12
|
InstanceService: vi.fn(),
|
|
13
13
|
}));
|
|
14
|
+
vi.mock("./launcher.js", () => ({
|
|
15
|
+
LauncherService: vi.fn(),
|
|
16
|
+
}));
|
|
14
17
|
import { discoverInstancePort } from "../cdp/index.js";
|
|
15
18
|
import { DatabaseClient, discoverDatabase } from "../db/index.js";
|
|
16
19
|
import { InstanceService } from "./instance.js";
|
|
20
|
+
import { LauncherService } from "./launcher.js";
|
|
17
21
|
import { InstanceNotRunningError } from "./errors.js";
|
|
18
22
|
import { withDatabase, withInstanceDatabase } from "./instance-context.js";
|
|
19
23
|
const mockedDiscoverInstancePort = vi.mocked(discoverInstancePort);
|
|
20
24
|
const mockedDiscoverDatabase = vi.mocked(discoverDatabase);
|
|
21
25
|
const mockedDatabaseClient = vi.mocked(DatabaseClient);
|
|
22
26
|
const mockedInstanceService = vi.mocked(InstanceService);
|
|
27
|
+
const mockedLauncherService = vi.mocked(LauncherService);
|
|
23
28
|
function createMockDb(overrides = {}) {
|
|
24
29
|
const db = {
|
|
25
30
|
close: vi.fn(),
|
|
@@ -34,6 +39,7 @@ function createMockInstance(overrides = {}) {
|
|
|
34
39
|
const instance = {
|
|
35
40
|
connect: vi.fn().mockResolvedValue(undefined),
|
|
36
41
|
disconnect: vi.fn(),
|
|
42
|
+
setHealthChecker: vi.fn(),
|
|
37
43
|
...overrides,
|
|
38
44
|
};
|
|
39
45
|
mockedInstanceService.mockImplementation(function () {
|
|
@@ -41,6 +47,21 @@ function createMockInstance(overrides = {}) {
|
|
|
41
47
|
});
|
|
42
48
|
return instance;
|
|
43
49
|
}
|
|
50
|
+
function createMockLauncher() {
|
|
51
|
+
const launcher = {
|
|
52
|
+
connect: vi.fn().mockResolvedValue(undefined),
|
|
53
|
+
disconnect: vi.fn(),
|
|
54
|
+
checkUIHealth: vi.fn().mockResolvedValue({
|
|
55
|
+
healthy: true,
|
|
56
|
+
issues: [],
|
|
57
|
+
popup: null,
|
|
58
|
+
}),
|
|
59
|
+
};
|
|
60
|
+
mockedLauncherService.mockImplementation(function () {
|
|
61
|
+
return launcher;
|
|
62
|
+
});
|
|
63
|
+
return launcher;
|
|
64
|
+
}
|
|
44
65
|
describe("withDatabase", () => {
|
|
45
66
|
beforeEach(() => {
|
|
46
67
|
vi.clearAllMocks();
|
|
@@ -101,6 +122,7 @@ describe("withDatabase", () => {
|
|
|
101
122
|
describe("withInstanceDatabase", () => {
|
|
102
123
|
beforeEach(() => {
|
|
103
124
|
vi.clearAllMocks();
|
|
125
|
+
createMockLauncher();
|
|
104
126
|
});
|
|
105
127
|
afterEach(() => {
|
|
106
128
|
vi.restoreAllMocks();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-context.test.js","sourceRoot":"","sources":["../../src/services/instance-context.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"instance-context.test.js","sourceRoot":"","sources":["../../src/services/instance-context.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,12 @@ export interface ActionResult {
|
|
|
9
9
|
/** Error message if the action failed. */
|
|
10
10
|
error?: string;
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* A callback that checks UI health after a CDP evaluation.
|
|
14
|
+
*
|
|
15
|
+
* Should throw {@link UIBlockedError} if the UI is in a blocked state.
|
|
16
|
+
*/
|
|
17
|
+
export type HealthChecker = () => Promise<void>;
|
|
12
18
|
/**
|
|
13
19
|
* Controls a running LinkedHelper instance via CDP.
|
|
14
20
|
*
|
|
@@ -17,7 +23,7 @@ export interface ActionResult {
|
|
|
17
23
|
* - **Instance UI**: The Electron page hosting the LinkedHelper UI
|
|
18
24
|
*
|
|
19
25
|
* This service connects to both targets and provides methods for
|
|
20
|
-
*
|
|
26
|
+
* data extraction and action execution.
|
|
21
27
|
*/
|
|
22
28
|
export declare class InstanceService {
|
|
23
29
|
private readonly port;
|
|
@@ -26,11 +32,21 @@ export declare class InstanceService {
|
|
|
26
32
|
private readonly allowRemote;
|
|
27
33
|
private linkedInClient;
|
|
28
34
|
private uiClient;
|
|
35
|
+
private healthChecker;
|
|
29
36
|
constructor(port: number, options?: {
|
|
30
37
|
host?: string;
|
|
31
38
|
timeout?: number;
|
|
32
39
|
allowRemote?: boolean;
|
|
33
40
|
});
|
|
41
|
+
/**
|
|
42
|
+
* Set a post-evaluation health check callback.
|
|
43
|
+
*
|
|
44
|
+
* When set, every {@link evaluateUI} and {@link executeAction} call
|
|
45
|
+
* will invoke the checker after the CDP evaluation completes.
|
|
46
|
+
* On {@link CDPTimeoutError}, the checker is also invoked to diagnose
|
|
47
|
+
* the cause of the timeout.
|
|
48
|
+
*/
|
|
49
|
+
setHealthChecker(checker: HealthChecker | null): void;
|
|
34
50
|
/**
|
|
35
51
|
* Connect to both instance CDP targets (LinkedIn page and UI).
|
|
36
52
|
*
|
|
@@ -44,14 +60,6 @@ export declare class InstanceService {
|
|
|
44
60
|
* Disconnect from both targets.
|
|
45
61
|
*/
|
|
46
62
|
disconnect(): void;
|
|
47
|
-
/**
|
|
48
|
-
* Navigate the LinkedIn webview to a profile URL.
|
|
49
|
-
*
|
|
50
|
-
* Enables the Page domain, navigates, and waits for the load event.
|
|
51
|
-
*
|
|
52
|
-
* @throws {InvalidProfileUrlError} if the URL is not a valid LinkedIn profile path.
|
|
53
|
-
*/
|
|
54
|
-
navigateToProfile(url: string): Promise<void>;
|
|
55
63
|
/**
|
|
56
64
|
* Execute a LinkedHelper action via the instance UI.
|
|
57
65
|
*
|
|
@@ -64,13 +72,6 @@ export declare class InstanceService {
|
|
|
64
72
|
* @param config Action configuration object (default: `{}`).
|
|
65
73
|
*/
|
|
66
74
|
executeAction(actionName: string, config?: Record<string, unknown>): Promise<ActionResult>;
|
|
67
|
-
/**
|
|
68
|
-
* Trigger the SaveCurrentProfile action via the instance UI.
|
|
69
|
-
*
|
|
70
|
-
* This tells LinkedHelper to extract data from the currently
|
|
71
|
-
* displayed LinkedIn profile and save it to the database.
|
|
72
|
-
*/
|
|
73
|
-
triggerExtraction(): Promise<void>;
|
|
74
75
|
/**
|
|
75
76
|
* Evaluate a JavaScript expression in the LinkedHelper UI context.
|
|
76
77
|
*
|
|
@@ -84,7 +85,14 @@ export declare class InstanceService {
|
|
|
84
85
|
evaluateUI<T = unknown>(expression: string, awaitPromise?: boolean): Promise<T>;
|
|
85
86
|
/** Whether both clients are currently connected. */
|
|
86
87
|
get isConnected(): boolean;
|
|
87
|
-
private ensureLinkedInClient;
|
|
88
88
|
private ensureUiClient;
|
|
89
|
+
/**
|
|
90
|
+
* Run the health checker if one is configured.
|
|
91
|
+
*
|
|
92
|
+
* Non-UIBlockedError failures (e.g. launcher connection lost) are
|
|
93
|
+
* silently ignored so that health check infrastructure issues do
|
|
94
|
+
* not mask the original operation result.
|
|
95
|
+
*/
|
|
96
|
+
private runHealthCheck;
|
|
89
97
|
}
|
|
90
98
|
//# sourceMappingURL=instance.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/services/instance.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAA0B;
|
|
1
|
+
{"version":3,"file":"instance.d.ts","sourceRoot":"","sources":["../../src/services/instance.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD;;;;GAIG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEhD;;;;;;;;;GASG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAU;IACtC,OAAO,CAAC,cAAc,CAA0B;IAChD,OAAO,CAAC,QAAQ,CAA0B;IAC1C,OAAO,CAAC,aAAa,CAA8B;gBAEvC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE;IAO9F;;;;;;;OAOG;IACH,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI;IAIrD;;;;;;;OAOG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IA+C9B;;OAEG;IACH,UAAU,IAAI,IAAI;IAOlB;;;;;;;;;;OAUG;IACG,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACnC,OAAO,CAAC,YAAY,CAAC;IAwBxB;;;;;;;;;OASG;IACG,UAAU,CAAC,CAAC,GAAG,OAAO,EAC1B,UAAU,EAAE,MAAM,EAClB,YAAY,UAAO,GAClB,OAAO,CAAC,CAAC,CAAC;IAcb,oDAAoD;IACpD,IAAI,WAAW,IAAI,OAAO,CAOzB;IAED,OAAO,CAAC,cAAc;IAOtB;;;;;;OAMG;YACW,cAAc;CAS7B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
2
2
|
// Copyright (C) 2026 Oleksii PELYKH
|
|
3
|
-
import { CDPClient, discoverTargets } from "../cdp/index.js";
|
|
3
|
+
import { CDPClient, CDPTimeoutError, discoverTargets } from "../cdp/index.js";
|
|
4
4
|
import { delay } from "../utils/delay.js";
|
|
5
5
|
import { errorMessage } from "../utils/error-message.js";
|
|
6
|
-
import { ActionExecutionError, InstanceNotRunningError,
|
|
6
|
+
import { ActionExecutionError, InstanceNotRunningError, ServiceError, UIBlockedError } from "./errors.js";
|
|
7
7
|
/** Maximum time to wait for both CDP targets to appear (ms). */
|
|
8
8
|
const CONNECT_TIMEOUT = 30_000;
|
|
9
9
|
/** Interval between target discovery polls (ms). */
|
|
@@ -16,7 +16,7 @@ const CONNECT_POLL_INTERVAL = 1_000;
|
|
|
16
16
|
* - **Instance UI**: The Electron page hosting the LinkedHelper UI
|
|
17
17
|
*
|
|
18
18
|
* This service connects to both targets and provides methods for
|
|
19
|
-
*
|
|
19
|
+
* data extraction and action execution.
|
|
20
20
|
*/
|
|
21
21
|
export class InstanceService {
|
|
22
22
|
port;
|
|
@@ -25,12 +25,24 @@ export class InstanceService {
|
|
|
25
25
|
allowRemote;
|
|
26
26
|
linkedInClient = null;
|
|
27
27
|
uiClient = null;
|
|
28
|
+
healthChecker = null;
|
|
28
29
|
constructor(port, options) {
|
|
29
30
|
this.port = port;
|
|
30
31
|
this.host = options?.host ?? "127.0.0.1";
|
|
31
32
|
this.timeout = options?.timeout;
|
|
32
33
|
this.allowRemote = options?.allowRemote ?? false;
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Set a post-evaluation health check callback.
|
|
37
|
+
*
|
|
38
|
+
* When set, every {@link evaluateUI} and {@link executeAction} call
|
|
39
|
+
* will invoke the checker after the CDP evaluation completes.
|
|
40
|
+
* On {@link CDPTimeoutError}, the checker is also invoked to diagnose
|
|
41
|
+
* the cause of the timeout.
|
|
42
|
+
*/
|
|
43
|
+
setHealthChecker(checker) {
|
|
44
|
+
this.healthChecker = checker;
|
|
45
|
+
}
|
|
34
46
|
/**
|
|
35
47
|
* Connect to both instance CDP targets (LinkedIn page and UI).
|
|
36
48
|
*
|
|
@@ -80,20 +92,6 @@ export class InstanceService {
|
|
|
80
92
|
this.uiClient?.disconnect();
|
|
81
93
|
this.uiClient = null;
|
|
82
94
|
}
|
|
83
|
-
/**
|
|
84
|
-
* Navigate the LinkedIn webview to a profile URL.
|
|
85
|
-
*
|
|
86
|
-
* Enables the Page domain, navigates, and waits for the load event.
|
|
87
|
-
*
|
|
88
|
-
* @throws {InvalidProfileUrlError} if the URL is not a valid LinkedIn profile path.
|
|
89
|
-
*/
|
|
90
|
-
async navigateToProfile(url) {
|
|
91
|
-
assertLinkedInProfileUrl(url);
|
|
92
|
-
const client = this.ensureLinkedInClient();
|
|
93
|
-
await client.send("Page.enable");
|
|
94
|
-
await client.navigate(url);
|
|
95
|
-
await client.waitForEvent("Page.loadEventFired");
|
|
96
|
-
}
|
|
97
95
|
/**
|
|
98
96
|
* Execute a LinkedHelper action via the instance UI.
|
|
99
97
|
*
|
|
@@ -115,20 +113,15 @@ export class InstanceService {
|
|
|
115
113
|
})()`, true);
|
|
116
114
|
}
|
|
117
115
|
catch (error) {
|
|
116
|
+
if (error instanceof CDPTimeoutError) {
|
|
117
|
+
await this.runHealthCheck();
|
|
118
|
+
}
|
|
118
119
|
const message = errorMessage(error);
|
|
119
120
|
throw new ActionExecutionError(actionName, `Action '${actionName}' failed: ${message}`, { cause: error });
|
|
120
121
|
}
|
|
122
|
+
await this.runHealthCheck();
|
|
121
123
|
return { success: true, actionType: actionName };
|
|
122
124
|
}
|
|
123
|
-
/**
|
|
124
|
-
* Trigger the SaveCurrentProfile action via the instance UI.
|
|
125
|
-
*
|
|
126
|
-
* This tells LinkedHelper to extract data from the currently
|
|
127
|
-
* displayed LinkedIn profile and save it to the database.
|
|
128
|
-
*/
|
|
129
|
-
async triggerExtraction() {
|
|
130
|
-
await this.executeAction("SaveCurrentProfile");
|
|
131
|
-
}
|
|
132
125
|
/**
|
|
133
126
|
* Evaluate a JavaScript expression in the LinkedHelper UI context.
|
|
134
127
|
*
|
|
@@ -141,7 +134,17 @@ export class InstanceService {
|
|
|
141
134
|
*/
|
|
142
135
|
async evaluateUI(expression, awaitPromise = true) {
|
|
143
136
|
const client = this.ensureUiClient();
|
|
144
|
-
|
|
137
|
+
try {
|
|
138
|
+
const result = await client.evaluate(expression, awaitPromise);
|
|
139
|
+
await this.runHealthCheck();
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
if (error instanceof CDPTimeoutError) {
|
|
144
|
+
await this.runHealthCheck();
|
|
145
|
+
}
|
|
146
|
+
throw error;
|
|
147
|
+
}
|
|
145
148
|
}
|
|
146
149
|
/** Whether both clients are currently connected. */
|
|
147
150
|
get isConnected() {
|
|
@@ -150,23 +153,30 @@ export class InstanceService {
|
|
|
150
153
|
this.uiClient !== null &&
|
|
151
154
|
this.uiClient.isConnected);
|
|
152
155
|
}
|
|
153
|
-
ensureLinkedInClient() {
|
|
154
|
-
if (!this.linkedInClient) {
|
|
155
|
-
throw new ServiceError("InstanceService is not connected (LinkedIn target)");
|
|
156
|
-
}
|
|
157
|
-
return this.linkedInClient;
|
|
158
|
-
}
|
|
159
156
|
ensureUiClient() {
|
|
160
157
|
if (!this.uiClient) {
|
|
161
158
|
throw new ServiceError("InstanceService is not connected (UI target)");
|
|
162
159
|
}
|
|
163
160
|
return this.uiClient;
|
|
164
161
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
162
|
+
/**
|
|
163
|
+
* Run the health checker if one is configured.
|
|
164
|
+
*
|
|
165
|
+
* Non-UIBlockedError failures (e.g. launcher connection lost) are
|
|
166
|
+
* silently ignored so that health check infrastructure issues do
|
|
167
|
+
* not mask the original operation result.
|
|
168
|
+
*/
|
|
169
|
+
async runHealthCheck() {
|
|
170
|
+
if (!this.healthChecker)
|
|
171
|
+
return;
|
|
172
|
+
try {
|
|
173
|
+
await this.healthChecker();
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
if (error instanceof UIBlockedError)
|
|
177
|
+
throw error;
|
|
178
|
+
// Health check infrastructure failure — do not mask the original result.
|
|
179
|
+
}
|
|
170
180
|
}
|
|
171
181
|
}
|
|
172
182
|
function isLinkedInTarget(target) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/services/instance.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,oCAAoC;AAEpC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"instance.js","sourceRoot":"","sources":["../../src/services/instance.ts"],"names":[],"mappings":"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"}
|