@reconcrap/boss-recommend-mcp 2.0.11 → 2.0.13
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/package.json +1 -1
- package/src/chat-mcp.js +256 -23
- package/src/cli.js +2 -8
- package/src/core/browser/index.js +35 -8
- package/src/core/capture/index.js +323 -20
- package/src/core/cv-acquisition/index.js +3 -0
- package/src/core/infinite-list/index.js +354 -1
- package/src/domains/chat/constants.js +11 -0
- package/src/domains/chat/run-service.js +21 -5
- package/src/domains/recommend/constants.js +11 -0
- package/src/domains/recommend/run-service.js +57 -16
- package/src/domains/recruit/constants.js +23 -0
- package/src/domains/recruit/run-service.js +19 -4
|
@@ -24,6 +24,29 @@ export const RECRUIT_NO_DATA_SELECTORS = Object.freeze([
|
|
|
24
24
|
'[class*="empty"]'
|
|
25
25
|
]);
|
|
26
26
|
|
|
27
|
+
export const RECRUIT_BOTTOM_MARKER_SELECTORS = Object.freeze([
|
|
28
|
+
".finished-wrap",
|
|
29
|
+
".load-tips",
|
|
30
|
+
".tip-nodata",
|
|
31
|
+
".empty-tip",
|
|
32
|
+
".empty-text",
|
|
33
|
+
".no-data",
|
|
34
|
+
"[class*=\"finished\"]",
|
|
35
|
+
"[class*=\"load-tips\"]",
|
|
36
|
+
"[class*=\"empty\"]"
|
|
37
|
+
]);
|
|
38
|
+
|
|
39
|
+
export const RECRUIT_BOTTOM_REFRESH_SELECTORS = Object.freeze([
|
|
40
|
+
".finished-wrap .btn-refresh",
|
|
41
|
+
".finished-wrap .btn",
|
|
42
|
+
".no-data-refresh .btn-refresh",
|
|
43
|
+
".no-data-refresh .btn",
|
|
44
|
+
"[class*=\"refresh\"]",
|
|
45
|
+
"[ka*=\"refresh\"]",
|
|
46
|
+
"button",
|
|
47
|
+
"a"
|
|
48
|
+
]);
|
|
49
|
+
|
|
27
50
|
export const RECRUIT_SEARCH_SELECTORS = Object.freeze({
|
|
28
51
|
keywordInput: [
|
|
29
52
|
"input.search-input",
|
|
@@ -19,6 +19,7 @@ import {
|
|
|
19
19
|
import {
|
|
20
20
|
compactInfiniteListState,
|
|
21
21
|
createInfiniteListState,
|
|
22
|
+
detectInfiniteListBottomMarker,
|
|
22
23
|
getNextInfiniteListCandidate,
|
|
23
24
|
markInfiniteListCandidateProcessed,
|
|
24
25
|
resetInfiniteListForRefreshRound
|
|
@@ -49,6 +50,10 @@ import {
|
|
|
49
50
|
} from "./search.js";
|
|
50
51
|
import { refreshRecruitSearchAtEnd } from "./refresh.js";
|
|
51
52
|
import { getRecruitRoots } from "./roots.js";
|
|
53
|
+
import {
|
|
54
|
+
RECRUIT_BOTTOM_MARKER_SELECTORS,
|
|
55
|
+
RECRUIT_BOTTOM_REFRESH_SELECTORS
|
|
56
|
+
} from "./constants.js";
|
|
52
57
|
|
|
53
58
|
function compactScreening(screening) {
|
|
54
59
|
return {
|
|
@@ -144,9 +149,9 @@ export async function runRecruitWorkflow({
|
|
|
144
149
|
imageWheelDeltaY = 650,
|
|
145
150
|
cvAcquisitionMode = "unknown",
|
|
146
151
|
listMaxScrolls = 20,
|
|
147
|
-
listStableSignatureLimit =
|
|
152
|
+
listStableSignatureLimit = 5,
|
|
148
153
|
listWheelDeltaY = 850,
|
|
149
|
-
listSettleMs =
|
|
154
|
+
listSettleMs = 2200,
|
|
150
155
|
listFallbackPoint = null,
|
|
151
156
|
refreshOnEnd = true,
|
|
152
157
|
maxRefreshRounds = 2,
|
|
@@ -298,6 +303,13 @@ export async function runRecruitWorkflow({
|
|
|
298
303
|
visible_index: visibleIndex,
|
|
299
304
|
search_params: normalizedSearchParams
|
|
300
305
|
}
|
|
306
|
+
}),
|
|
307
|
+
detectBottomMarker: async ({ scrollAttempt = 0, signature = {} } = {}) => detectInfiniteListBottomMarker(client, {
|
|
308
|
+
rootNodeId: rootState?.iframe?.documentNodeId,
|
|
309
|
+
markerSelectors: RECRUIT_BOTTOM_MARKER_SELECTORS,
|
|
310
|
+
refreshSelectors: RECRUIT_BOTTOM_REFRESH_SELECTORS,
|
|
311
|
+
textScanSelectors: scrollAttempt > 0 || (signature?.stable_signature_count || 0) >= 2 ? undefined : [],
|
|
312
|
+
maxTextScanNodes: 500
|
|
301
313
|
})
|
|
302
314
|
}));
|
|
303
315
|
if (!nextCandidateResult.ok) {
|
|
@@ -438,6 +450,9 @@ export async function runRecruitWorkflow({
|
|
|
438
450
|
maxScreenshots: maxImagePages,
|
|
439
451
|
wheelDeltaY: imageWheelDeltaY,
|
|
440
452
|
settleMs: 350,
|
|
453
|
+
scrollMethod: "dom-anchor-fallback-input",
|
|
454
|
+
stepTimeoutMs: 45000,
|
|
455
|
+
totalTimeoutMs: 90000,
|
|
441
456
|
duplicateStopCount: 1,
|
|
442
457
|
skipDuplicateScreenshots: true,
|
|
443
458
|
composeForLlm: true,
|
|
@@ -625,9 +640,9 @@ export function createRecruitRunService({
|
|
|
625
640
|
imageWheelDeltaY = 650,
|
|
626
641
|
cvAcquisitionMode = "unknown",
|
|
627
642
|
listMaxScrolls = 20,
|
|
628
|
-
listStableSignatureLimit =
|
|
643
|
+
listStableSignatureLimit = 5,
|
|
629
644
|
listWheelDeltaY = 850,
|
|
630
|
-
listSettleMs =
|
|
645
|
+
listSettleMs = 2200,
|
|
631
646
|
listFallbackPoint = null,
|
|
632
647
|
refreshOnEnd = true,
|
|
633
648
|
maxRefreshRounds = 2,
|