@viyzhu/boss-cli-fork 0.6.8

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.
Files changed (159) hide show
  1. package/AGENTS.md +30 -0
  2. package/LICENSE +674 -0
  3. package/README.md +223 -0
  4. package/dist/browser/browser_session.d.ts +27 -0
  5. package/dist/browser/browser_session.d.ts.map +1 -0
  6. package/dist/browser/browser_session.js +246 -0
  7. package/dist/browser/browser_session.js.map +1 -0
  8. package/dist/browser/cdp_browser.d.ts +50 -0
  9. package/dist/browser/cdp_browser.d.ts.map +1 -0
  10. package/dist/browser/cdp_browser.js +315 -0
  11. package/dist/browser/cdp_browser.js.map +1 -0
  12. package/dist/browser/human_delay.d.ts +117 -0
  13. package/dist/browser/human_delay.d.ts.map +1 -0
  14. package/dist/browser/human_delay.js +71 -0
  15. package/dist/browser/human_delay.js.map +1 -0
  16. package/dist/browser/index.d.ts +9 -0
  17. package/dist/browser/index.d.ts.map +1 -0
  18. package/dist/browser/index.js +9 -0
  19. package/dist/browser/index.js.map +1 -0
  20. package/dist/browser/timing.d.ts +7 -0
  21. package/dist/browser/timing.d.ts.map +1 -0
  22. package/dist/browser/timing.js +34 -0
  23. package/dist/browser/timing.js.map +1 -0
  24. package/dist/browser/viewport_temp.d.ts +15 -0
  25. package/dist/browser/viewport_temp.d.ts.map +1 -0
  26. package/dist/browser/viewport_temp.js +78 -0
  27. package/dist/browser/viewport_temp.js.map +1 -0
  28. package/dist/cli/banner.d.ts +2 -0
  29. package/dist/cli/banner.d.ts.map +1 -0
  30. package/dist/cli/banner.js +69 -0
  31. package/dist/cli/banner.js.map +1 -0
  32. package/dist/cli/cliRouter.d.ts +9 -0
  33. package/dist/cli/cliRouter.d.ts.map +1 -0
  34. package/dist/cli/cliRouter.js +604 -0
  35. package/dist/cli/cliRouter.js.map +1 -0
  36. package/dist/cli/index.d.ts +3 -0
  37. package/dist/cli/index.d.ts.map +1 -0
  38. package/dist/cli/index.js +34 -0
  39. package/dist/cli/index.js.map +1 -0
  40. package/dist/cli/version.d.ts +29 -0
  41. package/dist/cli/version.d.ts.map +1 -0
  42. package/dist/cli/version.js +180 -0
  43. package/dist/cli/version.js.map +1 -0
  44. package/dist/common/auth.d.ts +44 -0
  45. package/dist/common/auth.d.ts.map +1 -0
  46. package/dist/common/auth.js +168 -0
  47. package/dist/common/auth.js.map +1 -0
  48. package/dist/common/baidu_user_env.d.ts +7 -0
  49. package/dist/common/baidu_user_env.d.ts.map +1 -0
  50. package/dist/common/baidu_user_env.js +56 -0
  51. package/dist/common/baidu_user_env.js.map +1 -0
  52. package/dist/common/boss_availability.d.ts +5 -0
  53. package/dist/common/boss_availability.d.ts.map +1 -0
  54. package/dist/common/boss_availability.js +245 -0
  55. package/dist/common/boss_availability.js.map +1 -0
  56. package/dist/common/boss_modal.d.ts +14 -0
  57. package/dist/common/boss_modal.d.ts.map +1 -0
  58. package/dist/common/boss_modal.js +81 -0
  59. package/dist/common/boss_modal.js.map +1 -0
  60. package/dist/common/boss_page_guards.d.ts +14 -0
  61. package/dist/common/boss_page_guards.d.ts.map +1 -0
  62. package/dist/common/boss_page_guards.js +596 -0
  63. package/dist/common/boss_page_guards.js.map +1 -0
  64. package/dist/common/boss_paywall_popup.d.ts +28 -0
  65. package/dist/common/boss_paywall_popup.d.ts.map +1 -0
  66. package/dist/common/boss_paywall_popup.js +158 -0
  67. package/dist/common/boss_paywall_popup.js.map +1 -0
  68. package/dist/common/boss_session_lock.d.ts +2 -0
  69. package/dist/common/boss_session_lock.d.ts.map +1 -0
  70. package/dist/common/boss_session_lock.js +127 -0
  71. package/dist/common/boss_session_lock.js.map +1 -0
  72. package/dist/common/boss_session_page.d.ts +27 -0
  73. package/dist/common/boss_session_page.d.ts.map +1 -0
  74. package/dist/common/boss_session_page.js +173 -0
  75. package/dist/common/boss_session_page.js.map +1 -0
  76. package/dist/common/boss_sidebar_nav.d.ts +7 -0
  77. package/dist/common/boss_sidebar_nav.d.ts.map +1 -0
  78. package/dist/common/boss_sidebar_nav.js +53 -0
  79. package/dist/common/boss_sidebar_nav.js.map +1 -0
  80. package/dist/common/c_resume_capture.d.ts +19 -0
  81. package/dist/common/c_resume_capture.d.ts.map +1 -0
  82. package/dist/common/c_resume_capture.js +185 -0
  83. package/dist/common/c_resume_capture.js.map +1 -0
  84. package/dist/common/ensure_page.d.ts +9 -0
  85. package/dist/common/ensure_page.d.ts.map +1 -0
  86. package/dist/common/ensure_page.js +14 -0
  87. package/dist/common/ensure_page.js.map +1 -0
  88. package/dist/config.d.ts +22 -0
  89. package/dist/config.d.ts.map +1 -0
  90. package/dist/config.js +57 -0
  91. package/dist/config.js.map +1 -0
  92. package/dist/ocr/baidu_ocr.d.ts +13 -0
  93. package/dist/ocr/baidu_ocr.d.ts.map +1 -0
  94. package/dist/ocr/baidu_ocr.js +80 -0
  95. package/dist/ocr/baidu_ocr.js.map +1 -0
  96. package/dist/ocr/index.d.ts +3 -0
  97. package/dist/ocr/index.d.ts.map +1 -0
  98. package/dist/ocr/index.js +3 -0
  99. package/dist/ocr/index.js.map +1 -0
  100. package/dist/ocr/resume_ocr.d.ts +13 -0
  101. package/dist/ocr/resume_ocr.d.ts.map +1 -0
  102. package/dist/ocr/resume_ocr.js +38 -0
  103. package/dist/ocr/resume_ocr.js.map +1 -0
  104. package/dist/toolset/action.d.ts +12 -0
  105. package/dist/toolset/action.d.ts.map +1 -0
  106. package/dist/toolset/action.js +521 -0
  107. package/dist/toolset/action.js.map +1 -0
  108. package/dist/toolset/baidu_credentials.d.ts +5 -0
  109. package/dist/toolset/baidu_credentials.d.ts.map +1 -0
  110. package/dist/toolset/baidu_credentials.js +24 -0
  111. package/dist/toolset/baidu_credentials.js.map +1 -0
  112. package/dist/toolset/chat.d.ts +10 -0
  113. package/dist/toolset/chat.d.ts.map +1 -0
  114. package/dist/toolset/chat.js +763 -0
  115. package/dist/toolset/chat.js.map +1 -0
  116. package/dist/toolset/deep-search.d.ts +35 -0
  117. package/dist/toolset/deep-search.d.ts.map +1 -0
  118. package/dist/toolset/deep-search.js +1505 -0
  119. package/dist/toolset/deep-search.js.map +1 -0
  120. package/dist/toolset/greet.d.ts +6 -0
  121. package/dist/toolset/greet.d.ts.map +1 -0
  122. package/dist/toolset/greet.js +81 -0
  123. package/dist/toolset/greet.js.map +1 -0
  124. package/dist/toolset/index.d.ts +48 -0
  125. package/dist/toolset/index.d.ts.map +1 -0
  126. package/dist/toolset/index.js +71 -0
  127. package/dist/toolset/index.js.map +1 -0
  128. package/dist/toolset/jd.d.ts +10 -0
  129. package/dist/toolset/jd.d.ts.map +1 -0
  130. package/dist/toolset/jd.js +406 -0
  131. package/dist/toolset/jd.js.map +1 -0
  132. package/dist/toolset/list.d.ts +6 -0
  133. package/dist/toolset/list.d.ts.map +1 -0
  134. package/dist/toolset/list.js +146 -0
  135. package/dist/toolset/list.js.map +1 -0
  136. package/dist/toolset/login.d.ts +6 -0
  137. package/dist/toolset/login.d.ts.map +1 -0
  138. package/dist/toolset/login.js +76 -0
  139. package/dist/toolset/login.js.map +1 -0
  140. package/dist/toolset/normal-search.d.ts +12 -0
  141. package/dist/toolset/normal-search.d.ts.map +1 -0
  142. package/dist/toolset/normal-search.js +301 -0
  143. package/dist/toolset/normal-search.js.map +1 -0
  144. package/dist/toolset/preview.d.ts +5 -0
  145. package/dist/toolset/preview.d.ts.map +1 -0
  146. package/dist/toolset/preview.js +100 -0
  147. package/dist/toolset/preview.js.map +1 -0
  148. package/dist/toolset/recommend.d.ts +36 -0
  149. package/dist/toolset/recommend.d.ts.map +1 -0
  150. package/dist/toolset/recommend.js +428 -0
  151. package/dist/toolset/recommend.js.map +1 -0
  152. package/dist/toolset/send.d.ts +7 -0
  153. package/dist/toolset/send.d.ts.map +1 -0
  154. package/dist/toolset/send.js +52 -0
  155. package/dist/toolset/send.js.map +1 -0
  156. package/package.json +69 -0
  157. package/skills/boss-frontend-analysis/SKILL.md +58 -0
  158. package/skills/boss-frontend-analysis/agents/openai.yaml +4 -0
  159. package/skills/boss-frontend-analysis/scripts/capture_boss_frontend.mjs +604 -0
@@ -0,0 +1,604 @@
1
+ /**
2
+ * CLI:子命令直接调用 toolset 中的 impl*。
3
+ * 无参数时进入交互模式,逐行解析与 `boss <argv...>` 相同的命令。
4
+ */
5
+ import { createInterface } from 'node:readline/promises';
6
+ import { stdin as input, stdout as output } from 'node:process';
7
+ import { detachBrowserSession } from '../browser/index.js';
8
+ import { implChatAction, implLogin, implListCandidates, implListUnreadCandidates, implOpenChatByIndex, implListPositions, implListPositionsWithOptions, implNormalSearch, implOpenChat, implRecommend, implPreview, implRecommendGreet, implSetBaiduCredentials, implBossSearch, implSendMessage, } from '../toolset/index.js';
9
+ import { printBossInteractiveBanner } from './banner.js';
10
+ import { printPackageUpdateNoticeIfDue, printVersionInfo, runPackageUpdate, } from './version.js';
11
+ class CliError extends Error {
12
+ constructor(message) {
13
+ super(message);
14
+ this.name = 'CliError';
15
+ }
16
+ }
17
+ function envTruthy(name) {
18
+ const v = (process.env[name] ?? '').trim().toLowerCase();
19
+ return v === '1' || v === 'true' || v === 'yes' || v === 'y';
20
+ }
21
+ /** 默认有头;仅当环境变量为真时启用无头(与 `connectBrowser` 读取的 `BOSS_BROWSER_HEADLESS` 一致)。 */
22
+ function shouldRunHeadless() {
23
+ return envTruthy('BOSS_BROWSER_HEADLESS');
24
+ }
25
+ function configureHeadlessForCommand(cmd) {
26
+ if (cmd === 'login') {
27
+ process.env.BOSS_BROWSER_HEADLESS = 'false';
28
+ return;
29
+ }
30
+ process.env.BOSS_BROWSER_HEADLESS = shouldRunHeadless() ? 'true' : 'false';
31
+ }
32
+ /**
33
+ * 一次性命令结束后:detach CDP,不关浏览器窗口。
34
+ * 交互模式在循环内不调用;退出 REPL 时在 `runInteractiveLoop` 的 finally 里单独 detach(避免 Node 退出时拖死 Chrome)。
35
+ */
36
+ async function cleanupAfterCommand(_cmd, nonInteractive) {
37
+ if (!nonInteractive) {
38
+ return;
39
+ }
40
+ await detachBrowserSession().catch(() => { });
41
+ }
42
+ function die(msg) {
43
+ throw new CliError(msg);
44
+ }
45
+ /** `readline.question` 在 Ctrl+C 时会抛出 AbortError,视为正常结束而非业务错误 */
46
+ export function isReadlineAbortError(e) {
47
+ if (e === null || typeof e !== 'object') {
48
+ return false;
49
+ }
50
+ const err = e;
51
+ return err.name === 'AbortError' || err.code === 'ABORT_ERR';
52
+ }
53
+ /** 类 shell 分词:支持双引号、单引号包裹含空格的参数 */
54
+ function splitShellLine(line) {
55
+ const out = [];
56
+ let cur = '';
57
+ let quote = null;
58
+ for (let i = 0; i < line.length; i++) {
59
+ const c = line[i];
60
+ if (quote) {
61
+ if (c === quote) {
62
+ quote = null;
63
+ }
64
+ else {
65
+ cur += c;
66
+ }
67
+ continue;
68
+ }
69
+ if (c === '"' || c === "'") {
70
+ quote = c;
71
+ continue;
72
+ }
73
+ if (/\s/.test(c)) {
74
+ if (cur.length > 0) {
75
+ out.push(cur);
76
+ cur = '';
77
+ }
78
+ continue;
79
+ }
80
+ cur += c;
81
+ }
82
+ if (cur.length > 0) {
83
+ out.push(cur);
84
+ }
85
+ return out;
86
+ }
87
+ /** 短命令为主;保留旧长名作为别名,避免已有脚本失效 */
88
+ function normalizeSubcommand(cmd) {
89
+ switch (cmd) {
90
+ case 'list-candidates':
91
+ return 'list';
92
+ case 'open-chat':
93
+ return 'chat';
94
+ case 'send-message':
95
+ return 'send';
96
+ case 'list-positions':
97
+ return 'positions';
98
+ default:
99
+ return cmd;
100
+ }
101
+ }
102
+ function printHelp() {
103
+ console.error(`boss-cli — Boss 直聘浏览器自动化(纯 CLI,无 Agent 运行时)
104
+
105
+ 用法与说明:
106
+ boss
107
+ 进入交互模式;提示符 boss> ,exit / quit 退出;Ctrl+C 正常结束
108
+ boss help
109
+ 显示本帮助
110
+ boss version | ver(或 -v / --version)
111
+ 显示当前版本并检查 npm 是否有更新
112
+ boss update
113
+ 使用 npm 安装最新版 boss-cli
114
+ boss login
115
+ 打开登录页(需要用户在浏览器中自行完成登录,这个命令会直接返回)
116
+ boss list [--unread]
117
+ 读取「全部」聊天列表候选人;--unread 仅显示未读(角标>0)
118
+ boss chat <姓名> [--strict]
119
+ 打开指定联系人会话;默认包含匹配,--strict 为精确匹配
120
+ boss chat [姓名] --index <序号> [--unread] [--strict]
121
+ 按 boss list 输出的 1-based 序号打开会话;--unread 表示序号对应 boss list --unread
122
+ 同时提供姓名时会校验该序号候选人姓名,--strict 表示精确校验
123
+ 仅用于已建立联系的候选人(即在 list 里可见的会话对象)
124
+ boss action <操作> [--remark <备注>]
125
+ 仅在当前聊天页已打开候选人详情时执行操作,并只返回 action 执行结果
126
+ 操作: resume | not-fit | remark | agree-resume | request-attachment-resume | history | wechat
127
+ request-attachment-resume:工具栏「求简历」,确认后向对方发送默认话术索要附件简历(需双方各至少发过一条消息)
128
+ 操作为 remark 时必须提供 --remark
129
+ boss send [--text <内容>] [-t <内容>] [--request-resume]
130
+ 仅发送文本消息(等价于在当前会话输入框发送后回车)
131
+ --request-resume:发送后延迟片刻自动执行「求简历」操作
132
+ boss positions
133
+ 读取当前职位列表(含开放/待开放/已关闭状态)
134
+ boss jd <name>
135
+ 抓取指定职位详情并缓存到项目目录同名 .md
136
+ boss recommend [岗位关键字]
137
+ 进入推荐页并读取推荐列表;带岗位关键字时先在岗位下拉中模糊匹配并切换
138
+ boss search [关键词] [--job <岗位关键字>]
139
+ 进入「搜索」页并读取 Boss 默认常规搜索结果;带关键词时填入搜索框并回车搜索;
140
+ 带 --job 时先在岗位下拉中模糊匹配并切换到该岗位再搜索
141
+ boss preview <姓名>
142
+ 在线简历预览:须当前已在「推荐」(/web/chat/recommend)、「深度搜索」(/web/chat/aiform) 或「常规搜索」(/web/chat/search) 且列表已加载;不会自动跳转
143
+ 注意:平台对在线简历每日可查看次数有限,请按需使用、谨慎查看
144
+ boss greet <姓名> [--job <岗位关键字>]
145
+ 须当前已在「推荐」(/web/chat/recommend) 或「深度搜索」(/web/chat/aiform) 且列表已加载;不会自动跳转
146
+ 对当前列表中的候选人点击“打招呼”
147
+ 可选 --job 先在岗位下拉中模糊匹配并切换(与 recommend 共用同一套选择逻辑)
148
+ 会消耗打招呼次数且单次成本较高,请谨慎使用
149
+ boss deep-search [岗位关键字] [--job <岗位关键字>] [--core <核心要求>] [--bonus <加分项>] [--clear-core] [--clear-bonus] [--match]
150
+ 进入「深度搜索」页并输出当前表单、剩余匹配次数和按钮状态;--core/--bonus 可重复,并按传入列表同步对应分组;--clear-* 清空对应分组
151
+ 只有显式提供 --match 时才会点击「立即匹配」并消耗今日匹配次数;--match 输出列表顶部最新 20 条
152
+
153
+ !!鉴于boss的风控机制存在更新,且本cli的功能在逐步完善中,若遇到部分操作问题,请先检查版本更新
154
+ `);
155
+ }
156
+ /** 解析 `--key value` / `--key=value` / 布尔 `--flag` */
157
+ function parseOpts(argv) {
158
+ const rest = [];
159
+ const flags = new Set();
160
+ const opts = {};
161
+ for (let i = 0; i < argv.length; i++) {
162
+ const a = argv[i];
163
+ if (a === '--') {
164
+ rest.push(...argv.slice(i + 1));
165
+ break;
166
+ }
167
+ if (a.startsWith('--')) {
168
+ const eq = a.indexOf('=');
169
+ if (eq !== -1) {
170
+ const k = a.slice(2, eq);
171
+ opts[k] = a.slice(eq + 1);
172
+ continue;
173
+ }
174
+ const key = a.slice(2);
175
+ const next = argv[i + 1];
176
+ if (next !== undefined && !next.startsWith('-')) {
177
+ opts[key] = next;
178
+ i += 1;
179
+ }
180
+ else {
181
+ flags.add(key);
182
+ }
183
+ continue;
184
+ }
185
+ if (a.startsWith('-') && a.length > 1 && !a.startsWith('--')) {
186
+ const short = a.slice(1);
187
+ const next = argv[i + 1];
188
+ if (short === 't' && next !== undefined && !next.startsWith('-')) {
189
+ opts.t = next;
190
+ i += 1;
191
+ continue;
192
+ }
193
+ if (!/^\d/.test(short)) {
194
+ flags.add(short);
195
+ continue;
196
+ }
197
+ }
198
+ rest.push(a);
199
+ }
200
+ return { rest, flags, opts };
201
+ }
202
+ function splitRequirementArg(value) {
203
+ return value
204
+ .split(/\r?\n|[;;]/)
205
+ .map((x) => x.trim())
206
+ .filter(Boolean);
207
+ }
208
+ function parseDeepSearchArgs(argv) {
209
+ const positional = [];
210
+ const coreRequirements = [];
211
+ const bonusRequirements = [];
212
+ let jobKeyword = '';
213
+ let match = false;
214
+ let coreSpecified = false;
215
+ let bonusSpecified = false;
216
+ function readValue(i, key) {
217
+ const next = argv[i + 1];
218
+ if (next === undefined || next.startsWith('-')) {
219
+ die(`❌ deep-search 参数 ${key} 需要提供值`);
220
+ }
221
+ return { value: next, nextIndex: i + 1 };
222
+ }
223
+ for (let i = 0; i < argv.length; i++) {
224
+ const arg = argv[i];
225
+ if (arg === '--match') {
226
+ match = true;
227
+ continue;
228
+ }
229
+ if (arg === '--clear-core') {
230
+ coreSpecified = true;
231
+ coreRequirements.length = 0;
232
+ continue;
233
+ }
234
+ if (arg === '--clear-bonus') {
235
+ bonusSpecified = true;
236
+ bonusRequirements.length = 0;
237
+ continue;
238
+ }
239
+ if (arg === '--job' || arg === '-j') {
240
+ const read = readValue(i, arg);
241
+ jobKeyword = read.value.trim();
242
+ i = read.nextIndex;
243
+ continue;
244
+ }
245
+ if (arg.startsWith('--job=')) {
246
+ jobKeyword = arg.slice('--job='.length).trim();
247
+ continue;
248
+ }
249
+ if (arg === '--core' || arg === '-c') {
250
+ const read = readValue(i, arg);
251
+ coreSpecified = true;
252
+ coreRequirements.push(...splitRequirementArg(read.value));
253
+ i = read.nextIndex;
254
+ continue;
255
+ }
256
+ if (arg.startsWith('--core=')) {
257
+ coreSpecified = true;
258
+ coreRequirements.push(...splitRequirementArg(arg.slice('--core='.length)));
259
+ continue;
260
+ }
261
+ if (arg === '--bonus' || arg === '-b') {
262
+ const read = readValue(i, arg);
263
+ bonusSpecified = true;
264
+ bonusRequirements.push(...splitRequirementArg(read.value));
265
+ i = read.nextIndex;
266
+ continue;
267
+ }
268
+ if (arg.startsWith('--bonus=')) {
269
+ bonusSpecified = true;
270
+ bonusRequirements.push(...splitRequirementArg(arg.slice('--bonus='.length)));
271
+ continue;
272
+ }
273
+ if (arg.startsWith('-')) {
274
+ die(`❌ deep-search 不支持参数: ${arg}`);
275
+ }
276
+ positional.push(arg);
277
+ }
278
+ if (!jobKeyword && positional.length > 0) {
279
+ jobKeyword = positional.join(' ').trim();
280
+ }
281
+ else if (jobKeyword && positional.length > 0) {
282
+ die('❌ deep-search 已提供 --job 时,不再支持额外的位置参数');
283
+ }
284
+ return {
285
+ jobKeyword: jobKeyword || undefined,
286
+ coreRequirements: coreSpecified ? coreRequirements : undefined,
287
+ bonusRequirements: bonusSpecified ? bonusRequirements : undefined,
288
+ match,
289
+ };
290
+ }
291
+ function printStdout(text) {
292
+ const t = text.trimEnd();
293
+ if (t.length > 0) {
294
+ console.log(t);
295
+ }
296
+ }
297
+ function startProcessingSpinner() {
298
+ if (!output.isTTY) {
299
+ return () => { };
300
+ }
301
+ const frames = ['|', '/', '-', '\\'];
302
+ let idx = 0;
303
+ output.write(`${frames[idx]}\r`);
304
+ const timer = setInterval(() => {
305
+ idx = (idx + 1) % frames.length;
306
+ output.write(`${frames[idx]}\r`);
307
+ }, 90);
308
+ timer.unref();
309
+ return () => {
310
+ clearInterval(timer);
311
+ output.write(' \r');
312
+ };
313
+ }
314
+ /**
315
+ * 执行一条子命令并返回结果(与传入 `process.argv` 切片语义一致,不含 `boss` 本身)。
316
+ */
317
+ export async function executeCommand(argv) {
318
+ if (argv.length === 0) {
319
+ die('❌ 空命令');
320
+ }
321
+ const cmd = normalizeSubcommand(argv[0]);
322
+ const tail = argv.slice(1);
323
+ configureHeadlessForCommand(cmd);
324
+ if (cmd === '_baidu-keys') {
325
+ const { rest, opts } = parseOpts(tail);
326
+ let apiKey = (opts['api-key'] ?? opts.apikey ?? '').trim();
327
+ let secretKey = (opts['secret-key'] ?? opts.secretkey ?? '').trim();
328
+ if (!apiKey && rest.length >= 2) {
329
+ apiKey = rest[0].trim();
330
+ secretKey = rest.slice(1).join(' ').trim();
331
+ }
332
+ if (!apiKey || !secretKey) {
333
+ die('❌ 用法: _baidu-keys --api-key <KEY> --secret-key <SECRET>\n 或: _baidu-keys <KEY> <SECRET>(本命令不在 help 中列出)');
334
+ }
335
+ return implSetBaiduCredentials(apiKey, secretKey);
336
+ }
337
+ if (cmd === 'login') {
338
+ return implLogin();
339
+ }
340
+ if (cmd === 'update') {
341
+ const { rest, opts, flags } = parseOpts(tail);
342
+ if (rest.length > 0 || Object.keys(opts).length > 0 || flags.size > 0) {
343
+ die('❌ 用法: update');
344
+ }
345
+ return runPackageUpdate();
346
+ }
347
+ if (cmd === 'list') {
348
+ const { flags } = parseOpts(tail);
349
+ if (flags.has('unread')) {
350
+ return implListUnreadCandidates();
351
+ }
352
+ return implListCandidates();
353
+ }
354
+ if (cmd === 'chat') {
355
+ const { rest, flags, opts } = parseOpts(tail);
356
+ const nameArg = rest.join(' ').trim();
357
+ if ((opts.action ?? '').trim().length > 0 || (opts.remark ?? '').trim().length > 0) {
358
+ die('❌ chat 不再支持 --action/--remark。请改用: action <操作> [--remark <备注>]');
359
+ }
360
+ const allowedOpts = new Set(['index', 'i', 'action', 'remark']);
361
+ const unsupportedOpts = Object.keys(opts).filter((key) => !allowedOpts.has(key));
362
+ if (unsupportedOpts.length > 0) {
363
+ die(`❌ chat 不支持参数: --${unsupportedOpts.join(', --')}`);
364
+ }
365
+ // 默认模糊匹配(包含);仅在指定 --strict 时做精确匹配
366
+ const exact = flags.has('strict');
367
+ const indexRaw = (opts.index ?? opts.i ?? '').trim();
368
+ if (indexRaw) {
369
+ const index = Number(indexRaw);
370
+ if (!Number.isInteger(index) || index < 1) {
371
+ die(`❌ chat --index 必须是从 1 开始的整数,当前值: ${indexRaw}`);
372
+ }
373
+ return implOpenChatByIndex({
374
+ index,
375
+ unreadOnly: flags.has('unread'),
376
+ expectedName: nameArg || undefined,
377
+ exact,
378
+ });
379
+ }
380
+ if (flags.has('unread')) {
381
+ die('❌ chat 只有配合 --index 时才支持 --unread。用法: chat --index <序号> --unread');
382
+ }
383
+ if (!nameArg) {
384
+ die('❌ 用法: chat <姓名> [--strict];或 chat [姓名] --index <序号> [--unread]');
385
+ }
386
+ return implOpenChat(nameArg, exact);
387
+ }
388
+ if (cmd === 'action') {
389
+ const { rest, opts } = parseOpts(tail);
390
+ const raw = (rest[0] ?? opts.type ?? opts.action ?? '').trim().toLowerCase();
391
+ const actionMap = {
392
+ resume: 'resume',
393
+ 'not-fit': 'not-fit',
394
+ remark: 'remark',
395
+ 'agree-resume': 'agree-resume',
396
+ 'request-attachment-resume': 'request-attachment-resume',
397
+ 'ask-attachment-resume': 'request-attachment-resume',
398
+ 'ask-resume': 'request-attachment-resume',
399
+ history: 'history',
400
+ 'chat-history': 'history',
401
+ wechat: 'exchange-wechat',
402
+ 'exchange-wechat': 'exchange-wechat',
403
+ };
404
+ const action = actionMap[raw];
405
+ if (!action) {
406
+ die('❌ 用法: action <resume|not-fit|remark|agree-resume|request-attachment-resume|history|wechat> [--remark <备注>]');
407
+ }
408
+ const remark = (opts.remark ?? '').trim();
409
+ if (action === 'remark' && !remark) {
410
+ die('❌ 当操作为 remark 时,必须提供 --remark <备注内容>。');
411
+ }
412
+ return implChatAction({ action, remark });
413
+ }
414
+ if (cmd === 'send') {
415
+ const { flags, opts } = parseOpts(tail);
416
+ const text = opts.text?.trim() || opts.t?.trim() || '';
417
+ if (!text) {
418
+ die('❌ 用法: send [--text <消息>] [-t <消息>] [--request-resume]');
419
+ }
420
+ const requestResume = flags.has('request-resume');
421
+ return implSendMessage({ text, requestResume });
422
+ }
423
+ if (cmd === 'positions') {
424
+ const { rest, opts, flags } = parseOpts(tail);
425
+ if (rest.length > 0 || Object.keys(opts).length > 0 || flags.size > 0) {
426
+ die('❌ 用法: positions');
427
+ }
428
+ return implListPositions();
429
+ }
430
+ if (cmd === 'jd') {
431
+ const { flags, opts, rest } = parseOpts(tail);
432
+ if (flags.has('detail')) {
433
+ die('❌ jd 不再支持 --detail。请使用: jd <name>');
434
+ }
435
+ if (flags.size > 0) {
436
+ const unsupportedFlags = Array.from(flags).join(', --');
437
+ die(`❌ jd 不支持参数: --${unsupportedFlags}`);
438
+ }
439
+ const detailName = rest.join(' ').trim();
440
+ if (!detailName) {
441
+ die('❌ 用法: jd <name>');
442
+ }
443
+ const unknownOpts = Object.keys(opts);
444
+ if (unknownOpts.length > 0) {
445
+ die(`❌ jd 不支持参数: --${unknownOpts.join(', --')}`);
446
+ }
447
+ return implListPositionsWithOptions({ detail: true, name: detailName });
448
+ }
449
+ if (cmd === 'deep-search' || cmd === 'deepsearch') {
450
+ return implBossSearch(parseDeepSearchArgs(tail));
451
+ }
452
+ if (cmd === 'search') {
453
+ const { rest, opts, flags } = parseOpts(tail);
454
+ if (flags.size > 0) {
455
+ die('❌ 用法: search [关键词] [--job <岗位关键字>]');
456
+ }
457
+ const jobKeyword = opts.job?.trim();
458
+ const extraOpts = Object.keys(opts).filter((k) => k !== 'job');
459
+ if (extraOpts.length > 0) {
460
+ die('❌ 用法: search [关键词] [--job <岗位关键字>]');
461
+ }
462
+ const keyword = rest.join(' ').trim();
463
+ return implNormalSearch(keyword || undefined, jobKeyword || undefined);
464
+ }
465
+ if (cmd === 'preview') {
466
+ const { rest, opts, flags } = parseOpts(tail);
467
+ if (flags.size > 0) {
468
+ die('❌ preview 不支持该 flag');
469
+ }
470
+ const unsupportedOpts = Object.keys(opts);
471
+ if (unsupportedOpts.length > 0) {
472
+ die(`❌ preview 不支持: --${unsupportedOpts[0]}`);
473
+ }
474
+ const candidateTarget = rest.join(' ').trim();
475
+ if (!candidateTarget) {
476
+ die('❌ 用法: preview <姓名>');
477
+ }
478
+ return implPreview({ candidateTarget });
479
+ }
480
+ if (cmd === 'recommend') {
481
+ const { rest, opts, flags } = parseOpts(tail);
482
+ if (rest[0] === 'preview') {
483
+ die('❌ 请改用: boss preview <姓名>(已不再使用 recommend preview)');
484
+ }
485
+ if (Object.keys(opts).length > 0 || flags.size > 0) {
486
+ die('❌ 用法: recommend [岗位关键字]');
487
+ }
488
+ const jobKeyword = rest.join(' ').trim();
489
+ return implRecommend(jobKeyword || undefined);
490
+ }
491
+ if (cmd === 'greet') {
492
+ const { rest, opts, flags } = parseOpts(tail);
493
+ if (flags.size > 0) {
494
+ die('❌ 用法: greet <姓名> [--job <岗位关键字>]');
495
+ }
496
+ const jobKeyword = opts.job?.trim();
497
+ const extraOpts = Object.keys(opts).filter((k) => k !== 'job');
498
+ if (extraOpts.length > 0) {
499
+ die('❌ 用法: greet <姓名> [--job <岗位关键字>]');
500
+ }
501
+ const target = rest.join(' ').trim();
502
+ if (!target) {
503
+ die('❌ 用法: greet <姓名> [--job <岗位关键字>]');
504
+ }
505
+ return implRecommendGreet({ candidateTarget: target, jobKeyword: jobKeyword || undefined });
506
+ }
507
+ die(`❌ 未知命令 “${argv[0]}”。输入 help 查看用法。`);
508
+ }
509
+ export async function runOneCommand(argv) {
510
+ if (argv.length === 0) {
511
+ return;
512
+ }
513
+ try {
514
+ const text = await executeCommand(argv);
515
+ printStdout(text);
516
+ }
517
+ catch (e) {
518
+ console.error(e instanceof Error ? e.message : String(e));
519
+ process.exitCode = 1;
520
+ }
521
+ }
522
+ async function runInteractiveLoop() {
523
+ const rl = createInterface({ input, output, terminal: true });
524
+ await printPackageUpdateNoticeIfDue();
525
+ printBossInteractiveBanner();
526
+ try {
527
+ for (;;) {
528
+ let line;
529
+ try {
530
+ line = await rl.question('boss> ');
531
+ }
532
+ catch (e) {
533
+ if (isReadlineAbortError(e)) {
534
+ break;
535
+ }
536
+ throw e;
537
+ }
538
+ const trimmed = line.trim();
539
+ if (!trimmed) {
540
+ continue;
541
+ }
542
+ if (/^(exit|quit)$/i.test(trimmed)) {
543
+ break;
544
+ }
545
+ if (/^help$/i.test(trimmed)) {
546
+ printHelp();
547
+ continue;
548
+ }
549
+ if (/^(version|ver)$/i.test(trimmed) || /^(-v|--version)$/.test(trimmed)) {
550
+ await printVersionInfo();
551
+ continue;
552
+ }
553
+ const argv = splitShellLine(trimmed);
554
+ try {
555
+ const stopSpinner = startProcessingSpinner();
556
+ const text = await executeCommand(argv).finally(() => {
557
+ stopSpinner();
558
+ });
559
+ printStdout(text);
560
+ }
561
+ catch (e) {
562
+ console.error(e instanceof Error ? e.message : e);
563
+ }
564
+ }
565
+ }
566
+ finally {
567
+ rl.close();
568
+ // 退出交互时进程即将结束,必须 detach + unref 子进程,否则 Chrome 常随 Node 一起退出
569
+ await detachBrowserSession().catch(() => { });
570
+ }
571
+ }
572
+ export async function runCli(argv) {
573
+ if (argv.length === 0) {
574
+ if (process.env.npm_lifecycle_event === 'dev') {
575
+ await runInteractiveLoop();
576
+ }
577
+ else {
578
+ console.error('❌ 生产环境不支持交互模式。请使用 boss --help 查看可用命令。');
579
+ process.exit(1);
580
+ }
581
+ return;
582
+ }
583
+ if (argv[0] === 'version' ||
584
+ argv[0] === 'ver' ||
585
+ argv[0] === '-v' ||
586
+ argv[0] === '--version') {
587
+ await printVersionInfo();
588
+ return;
589
+ }
590
+ if (normalizeSubcommand(argv[0] ?? '') !== 'update') {
591
+ await printPackageUpdateNoticeIfDue();
592
+ }
593
+ if (argv[0] === 'help' || argv[0] === '--help' || argv[0] === '-h') {
594
+ printHelp();
595
+ return;
596
+ }
597
+ try {
598
+ await runOneCommand(argv);
599
+ }
600
+ finally {
601
+ await cleanupAfterCommand(argv[0] ?? '', true);
602
+ }
603
+ }
604
+ //# sourceMappingURL=cliRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cliRouter.js","sourceRoot":"","sources":["../../src/cli/cliRouter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}