@reconcrap/boss-recommend-mcp 2.1.13 → 2.1.15
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 +17 -6
- package/config/screening-config.example.json +5 -0
- package/package.json +1 -1
- package/skills/boss-chat/README.md +2 -2
- package/skills/boss-chat/SKILL.md +7 -7
- package/skills/boss-recruit-pipeline/SKILL.md +23 -1
- package/src/chat-mcp.js +70 -73
- package/src/chat-runtime-config.js +26 -0
- package/src/core/reporting/legacy-csv.js +9 -1
- package/src/core/screening/index.js +351 -20
- package/src/domains/chat/detail.js +79 -47
- package/src/domains/chat/run-service.js +456 -185
- package/src/domains/recommend/run-service.js +11 -3
- package/src/domains/recruit/constants.js +65 -0
- package/src/domains/recruit/instruction-parser.js +362 -86
- package/src/domains/recruit/run-service.js +289 -10
- package/src/domains/recruit/search.js +2076 -298
- package/src/index.js +18 -12
- package/src/recommend-mcp.js +77 -8
- package/src/recruit-mcp.js +228 -3
|
@@ -41,7 +41,9 @@ import { createViewportRunGuard } from "../../core/self-heal/index.js";
|
|
|
41
41
|
import {
|
|
42
42
|
callScreeningLlm,
|
|
43
43
|
compactScreeningLlmResult,
|
|
44
|
+
createFatalLlmRunError,
|
|
44
45
|
createFailedLlmScreeningResult,
|
|
46
|
+
isFatalLlmProviderError,
|
|
45
47
|
llmResultToScreening,
|
|
46
48
|
screenCandidate
|
|
47
49
|
} from "../../core/screening/index.js";
|
|
@@ -1343,9 +1345,15 @@ export async function runRecommendWorkflow({
|
|
|
1343
1345
|
maxImages: llmImageLimit,
|
|
1344
1346
|
imageDetail: llmImageDetail
|
|
1345
1347
|
}));
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1348
|
+
} catch (error) {
|
|
1349
|
+
if (isFatalLlmProviderError(error)) {
|
|
1350
|
+
throw createFatalLlmRunError(error, {
|
|
1351
|
+
domain: "recommend",
|
|
1352
|
+
candidate: screeningCandidate
|
|
1353
|
+
});
|
|
1354
|
+
}
|
|
1355
|
+
llmResult = createFailedLlmScreeningResult(error);
|
|
1356
|
+
}
|
|
1349
1357
|
}
|
|
1350
1358
|
if (detailResult) detailResult.llm_result = llmResult;
|
|
1351
1359
|
}
|
|
@@ -75,6 +75,12 @@ export const RECRUIT_SEARCH_SELECTORS = Object.freeze({
|
|
|
75
75
|
'button[ka*="search"]',
|
|
76
76
|
'[class*="search"][class*="btn"]'
|
|
77
77
|
],
|
|
78
|
+
jobTitleTrigger: [
|
|
79
|
+
".search-job-list-C .ui-dropmenu",
|
|
80
|
+
".search-job-list-C .ui-dropmenu-label",
|
|
81
|
+
".search-job-list-C .search-current-job",
|
|
82
|
+
".search-job-list-C"
|
|
83
|
+
],
|
|
78
84
|
jobTitleOption: [
|
|
79
85
|
'.search-job-list-C li[ka="search_select_job"]',
|
|
80
86
|
".search-job-list-C li",
|
|
@@ -104,6 +110,65 @@ export const RECRUIT_SEARCH_SELECTORS = Object.freeze({
|
|
|
104
110
|
"label.checkbox",
|
|
105
111
|
'[ka="search_change_view_resume"]'
|
|
106
112
|
],
|
|
113
|
+
experienceOption: [
|
|
114
|
+
".experience-select .exp-item",
|
|
115
|
+
".experience-select li",
|
|
116
|
+
".exp-list-ui .exp-item",
|
|
117
|
+
'[class*="experience"] [class*="exp-item"]'
|
|
118
|
+
],
|
|
119
|
+
experienceCustom: [
|
|
120
|
+
".experience-select .custom",
|
|
121
|
+
".experience-select .custom-wrap",
|
|
122
|
+
".experience-select-custom-slider",
|
|
123
|
+
'[class*="experience"] [class*="custom"]'
|
|
124
|
+
],
|
|
125
|
+
experienceCustomSlider: [
|
|
126
|
+
".experience-select .experience-select-custom-slider .ui-slider-wrap",
|
|
127
|
+
".experience-select .ui-slider-wrap",
|
|
128
|
+
".experience-select-custom-slider .ui-slider-wrap"
|
|
129
|
+
],
|
|
130
|
+
experienceCustomSliderHandle: [
|
|
131
|
+
".experience-select .experience-select-custom-slider .ui-slider-button-wrap",
|
|
132
|
+
".experience-select .ui-slider-button-wrap",
|
|
133
|
+
".experience-select-custom-slider .ui-slider-button-wrap"
|
|
134
|
+
],
|
|
135
|
+
experienceCustomHiddenInput: [
|
|
136
|
+
".experience-select .experience-select-custom-slider input[type='hidden']",
|
|
137
|
+
".experience-select input[type='hidden']",
|
|
138
|
+
".experience-select-custom-slider input[type='hidden']"
|
|
139
|
+
],
|
|
140
|
+
ageOption: [
|
|
141
|
+
".age-select .age-item",
|
|
142
|
+
".age-list-ui .age-item",
|
|
143
|
+
'[class*="age"] [class*="age-item"]'
|
|
144
|
+
],
|
|
145
|
+
ageCustom: [
|
|
146
|
+
".age-select .custom",
|
|
147
|
+
".age-select .age-custom",
|
|
148
|
+
'[class*="age"] [class*="custom"]'
|
|
149
|
+
],
|
|
150
|
+
ageCustomDropdown: [
|
|
151
|
+
".age-select .age-custom .dropdown-wrap.select"
|
|
152
|
+
],
|
|
153
|
+
ageCustomOption: [
|
|
154
|
+
".age-select .age-custom li",
|
|
155
|
+
".age-select .age-custom .dropdown-menu li"
|
|
156
|
+
],
|
|
157
|
+
ageCustomInput: [
|
|
158
|
+
".age-select .age-custom input"
|
|
159
|
+
],
|
|
160
|
+
genderDropdown: [
|
|
161
|
+
".gender-select"
|
|
162
|
+
],
|
|
163
|
+
genderOption: [
|
|
164
|
+
".gender-select.dropdown-menu-open li",
|
|
165
|
+
".gender-select .dropdown-menu li"
|
|
166
|
+
],
|
|
167
|
+
cityTrigger: [
|
|
168
|
+
".city-wrap .city",
|
|
169
|
+
".city-wrap",
|
|
170
|
+
".search-wrap .city-wrap"
|
|
171
|
+
],
|
|
107
172
|
cityInput: [
|
|
108
173
|
".city-wrap .search-city-kw input",
|
|
109
174
|
".search-city-kw input",
|