@joohw/boss-cli 0.1.4 → 0.1.7

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 (105) hide show
  1. package/README.md +13 -20
  2. package/dist/browser/auth.d.ts +0 -1
  3. package/dist/browser/auth.d.ts.map +1 -1
  4. package/dist/browser/auth.js +3 -19
  5. package/dist/browser/auth.js.map +1 -1
  6. package/dist/browser/browser_session.d.ts +4 -0
  7. package/dist/browser/browser_session.d.ts.map +1 -1
  8. package/dist/browser/browser_session.js +65 -14
  9. package/dist/browser/browser_session.js.map +1 -1
  10. package/dist/browser/cdp_browser.d.ts +9 -0
  11. package/dist/browser/cdp_browser.d.ts.map +1 -1
  12. package/dist/browser/cdp_browser.js +243 -11
  13. package/dist/browser/cdp_browser.js.map +1 -1
  14. package/dist/browser/chat.d.ts +2 -2
  15. package/dist/browser/chat.d.ts.map +1 -1
  16. package/dist/browser/chat.js +50 -18
  17. package/dist/browser/chat.js.map +1 -1
  18. package/dist/browser/human_delay.d.ts +88 -0
  19. package/dist/browser/human_delay.d.ts.map +1 -0
  20. package/dist/browser/human_delay.js +52 -0
  21. package/dist/browser/human_delay.js.map +1 -0
  22. package/dist/browser/index.d.ts +3 -2
  23. package/dist/browser/index.d.ts.map +1 -1
  24. package/dist/browser/index.js +3 -2
  25. package/dist/browser/index.js.map +1 -1
  26. package/dist/browser/timing.d.ts +7 -0
  27. package/dist/browser/timing.d.ts.map +1 -0
  28. package/dist/browser/timing.js +34 -0
  29. package/dist/browser/timing.js.map +1 -0
  30. package/dist/cli/banner.d.ts.map +1 -1
  31. package/dist/cli/banner.js +43 -9
  32. package/dist/cli/banner.js.map +1 -1
  33. package/dist/cli/cliRouter.d.ts.map +1 -1
  34. package/dist/cli/cliRouter.js +130 -62
  35. package/dist/cli/cliRouter.js.map +1 -1
  36. package/dist/cli/index.js +14 -1
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/config.d.ts +9 -0
  39. package/dist/config.d.ts.map +1 -1
  40. package/dist/config.js +25 -0
  41. package/dist/config.js.map +1 -1
  42. package/dist/ocr/baidu_ocr.d.ts +11 -0
  43. package/dist/ocr/baidu_ocr.d.ts.map +1 -0
  44. package/dist/ocr/baidu_ocr.js +76 -0
  45. package/dist/ocr/baidu_ocr.js.map +1 -0
  46. package/dist/ocr/index.d.ts +3 -0
  47. package/dist/ocr/index.d.ts.map +1 -0
  48. package/dist/ocr/index.js +3 -0
  49. package/dist/ocr/index.js.map +1 -0
  50. package/dist/ocr/resume_ocr.d.ts +13 -0
  51. package/dist/ocr/resume_ocr.d.ts.map +1 -0
  52. package/dist/ocr/resume_ocr.js +35 -0
  53. package/dist/ocr/resume_ocr.js.map +1 -0
  54. package/dist/toolset/action.d.ts +7 -0
  55. package/dist/toolset/action.d.ts.map +1 -0
  56. package/dist/toolset/action.js +433 -0
  57. package/dist/toolset/action.js.map +1 -0
  58. package/dist/toolset/chat.d.ts +4 -0
  59. package/dist/toolset/chat.d.ts.map +1 -0
  60. package/dist/toolset/chat.js +434 -0
  61. package/dist/toolset/chat.js.map +1 -0
  62. package/dist/toolset/chat_action.d.ts +7 -0
  63. package/dist/toolset/chat_action.d.ts.map +1 -0
  64. package/dist/toolset/chat_action.js +355 -0
  65. package/dist/toolset/chat_action.js.map +1 -0
  66. package/dist/toolset/index.d.ts +18 -1
  67. package/dist/toolset/index.d.ts.map +1 -1
  68. package/dist/toolset/index.js +27 -6
  69. package/dist/toolset/index.js.map +1 -1
  70. package/dist/toolset/jd.d.ts +10 -0
  71. package/dist/toolset/jd.d.ts.map +1 -0
  72. package/dist/toolset/jd.js +418 -0
  73. package/dist/toolset/jd.js.map +1 -0
  74. package/dist/toolset/list.d.ts +4 -0
  75. package/dist/toolset/list.d.ts.map +1 -0
  76. package/dist/toolset/list.js +156 -0
  77. package/dist/toolset/list.js.map +1 -0
  78. package/dist/toolset/list_candidates.d.ts.map +1 -1
  79. package/dist/toolset/list_candidates.js +12 -19
  80. package/dist/toolset/list_candidates.js.map +1 -1
  81. package/dist/toolset/login.d.ts.map +1 -1
  82. package/dist/toolset/login.js +7 -4
  83. package/dist/toolset/login.js.map +1 -1
  84. package/dist/toolset/open_chat.d.ts.map +1 -1
  85. package/dist/toolset/open_chat.js +266 -24
  86. package/dist/toolset/open_chat.js.map +1 -1
  87. package/dist/toolset/search.d.ts +2 -0
  88. package/dist/toolset/search.d.ts.map +1 -0
  89. package/dist/toolset/search.js +174 -0
  90. package/dist/toolset/search.js.map +1 -0
  91. package/dist/toolset/send.d.ts +12 -0
  92. package/dist/toolset/send.d.ts.map +1 -0
  93. package/dist/toolset/send.js +214 -0
  94. package/dist/toolset/send.js.map +1 -0
  95. package/dist/toolset/send_message.d.ts +11 -1
  96. package/dist/toolset/send_message.d.ts.map +1 -1
  97. package/dist/toolset/send_message.js +120 -21
  98. package/dist/toolset/send_message.js.map +1 -1
  99. package/dist/toolset/skill.d.ts +13 -0
  100. package/dist/toolset/skill.d.ts.map +1 -0
  101. package/dist/toolset/skill.js +85 -0
  102. package/dist/toolset/skill.js.map +1 -0
  103. package/package.json +5 -2
  104. package/skills/README.md +11 -0
  105. package/skills/boss-cli/SKILL.md +58 -0
@@ -4,9 +4,8 @@
4
4
  */
5
5
  import { createInterface } from 'node:readline/promises';
6
6
  import { stdin as input, stdout as output } from 'node:process';
7
- import { detachBrowserSession, disconnectBrowserSession } from '../browser/index.js';
8
- import { CACHE_DIR } from '../config.js';
9
- import { implLogin, implListCandidates, implListUnreadCandidates, implListPositions, implOpenChat, implSendMessage, } from '../toolset/index.js';
7
+ import { detachBrowserSession } from '../browser/index.js';
8
+ import { implBossSearch, implChatAction, implLogin, implListCandidates, implListUnreadCandidates, implListPositions, implListPositionsWithOptions, implOpenChat, implSendMessage, implSkill, } from '../toolset/index.js';
10
9
  import { printBossInteractiveBanner } from './banner.js';
11
10
  class CliError extends Error {
12
11
  constructor(message) {
@@ -18,45 +17,23 @@ function envTruthy(name) {
18
17
  const v = (process.env[name] ?? '').trim().toLowerCase();
19
18
  return v === '1' || v === 'true' || v === 'yes' || v === 'y';
20
19
  }
21
- function shouldRunHeadful() {
22
- return (envTruthy('bosscliheadful') ||
23
- envTruthy('BOSSCLIHEADFUL') ||
24
- envTruthy('BOSSCLI_HEADFUL') ||
25
- envTruthy('BOSS_CLI_HEADFUL'));
20
+ /** 默认有头;仅当环境变量为真时启用无头(与 `connectBrowser` 读取的 `BOSS_BROWSER_HEADLESS` 一致)。 */
21
+ function shouldRunHeadless() {
22
+ return envTruthy('BOSS_BROWSER_HEADLESS');
26
23
  }
27
24
  function configureHeadlessForCommand(cmd) {
28
25
  if (cmd === 'login') {
29
- // 登录必须可见:方便扫码/人机验证/手动操作
30
26
  process.env.BOSS_BROWSER_HEADLESS = 'false';
31
27
  return;
32
28
  }
33
- process.env.BOSS_BROWSER_HEADLESS = shouldRunHeadful() ? 'false' : 'true';
29
+ process.env.BOSS_BROWSER_HEADLESS = shouldRunHeadless() ? 'true' : 'false';
34
30
  }
35
- /** 设为 `1` / `true` 等时,结束 CLI 后关闭由本工具启动的浏览器进程(默认不关)。 */
36
- function shouldKillBrowserProcess() {
37
- return envTruthy('BOSS_BROWSER_AUTO_CLOSE');
38
- }
39
- async function cleanupAfterCommand(cmd, nonInteractive) {
40
- const kill = shouldKillBrowserProcess();
41
- // 交互模式:默认不断开;仅当显式要求关闭浏览器时处理(便于长时间复用同一会话)。
31
+ /**
32
+ * 一次性命令结束后:detach CDP,不关浏览器窗口。
33
+ * 交互模式在循环内不调用;退出 REPL 时在 `runInteractiveLoop` 的 finally 里单独 detach(避免 Node 退出时拖死 Chrome)。
34
+ */
35
+ async function cleanupAfterCommand(_cmd, nonInteractive) {
42
36
  if (!nonInteractive) {
43
- if (!kill)
44
- return;
45
- if (cmd === 'login') {
46
- await detachBrowserSession().catch(() => { });
47
- return;
48
- }
49
- await disconnectBrowserSession().catch(() => { });
50
- return;
51
- }
52
- // 一次性命令:login 始终只 detach,便于用户继续在窗口内操作。
53
- if (cmd === 'login') {
54
- await detachBrowserSession().catch(() => { });
55
- return;
56
- }
57
- // 其它命令:默认仅断开 CDP(进程可退出、浏览器窗口保留);BOSS_BROWSER_AUTO_CLOSE=1 时才 close。
58
- if (kill) {
59
- await disconnectBrowserSession().catch(() => { });
60
37
  return;
61
38
  }
62
39
  await detachBrowserSession().catch(() => { });
@@ -106,6 +83,21 @@ function splitShellLine(line) {
106
83
  }
107
84
  return out;
108
85
  }
86
+ /** 短命令为主;保留旧长名作为别名,避免已有脚本失效 */
87
+ function normalizeSubcommand(cmd) {
88
+ switch (cmd) {
89
+ case 'list-candidates':
90
+ return 'list';
91
+ case 'open-chat':
92
+ return 'chat';
93
+ case 'send-message':
94
+ return 'send';
95
+ case 'list-positions':
96
+ return 'positions';
97
+ default:
98
+ return cmd;
99
+ }
100
+ }
109
101
  function printHelp() {
110
102
  console.error(`boss-cli — Boss 直聘浏览器自动化(纯 CLI,无 Agent 运行时)
111
103
 
@@ -116,19 +108,27 @@ function printHelp() {
116
108
  显示本帮助
117
109
  boss login
118
110
  打开登录页(需要在浏览器中自行完成登录)
119
- boss list-candidates
120
- 读取「全部」聊天列表候选人
121
- --unread 仅显示未读(角标>0)
122
- boss open-chat <姓名> [--strict]
111
+ boss list [--unread]
112
+ 读取「全部」聊天列表候选人;--unread 仅显示未读(角标>0)
113
+ boss chat <姓名> [--strict]
123
114
  打开指定联系人会话;默认包含匹配,--strict 为精确匹配
124
- boss send-message --text <内容> [--also-request-resume]
125
- 在聊天输入框发送消息;-t --text
126
- boss list-positions
127
- 读取本地 ~/.boss-cli/jd 目录下的岗位 Markdown(Windows 为 %USERPROFILE%\.boss-cli\jd)
128
-
129
- 成功时 stdout 为纯文本;业务失败时进程退出码为 1。
130
-
131
- 数据目录默认:${CACHE_DIR}(浏览器用户数据见环境变量 BOSS_BROWSER_USER_DATA_DIR,未设置时使用其下 browser-data)。
115
+ boss action <操作> [--remark <备注>]
116
+ 仅在当前聊天页已打开候选人详情时执行操作,并只返回 action 执行结果
117
+ 操作: resume | not-fit | remark | agree-resume | history
118
+ 操作为 remark 时必须提供 --remark
119
+ boss send [--text <内容>] [-t <内容>] [--action <操作>]
120
+ --text --action 可同时使用;先发消息再执行 action,中间有默认随机间隔
121
+ --action: request-resume | agree-resume | confuse-resume(confuse-resume=拒绝附件);须至少 text 或 action 其一
122
+ boss positions
123
+ 读取当前职位列表(含开放/待开放/已关闭状态)
124
+ boss jd <name>
125
+ 抓取指定职位详情并缓存到项目目录同名 .md
126
+ boss search
127
+ 从侧边栏进入「深度搜索」并触发一次“立即匹配”
128
+ boss skill
129
+ 输出本包 Agent Skill 的说明
130
+ boss skill install | boss skill uninstall
131
+ 安装或移除唯一 Skill(boss-cli)到 ~/.agents/skills/(可用 BOSS_AGENT_SKILLS_DIR 覆盖根目录)
132
132
  `);
133
133
  }
134
134
  /** 解析 `--key value` / `--key=value` / 布尔 `--flag` */
@@ -190,44 +190,111 @@ export async function executeCommand(argv) {
190
190
  if (argv.length === 0) {
191
191
  die('❌ 空命令');
192
192
  }
193
- const cmd = argv[0];
193
+ const cmd = normalizeSubcommand(argv[0]);
194
194
  const tail = argv.slice(1);
195
195
  configureHeadlessForCommand(cmd);
196
196
  if (cmd === 'login') {
197
197
  return implLogin();
198
198
  }
199
- if (cmd === 'list-candidates') {
199
+ if (cmd === 'list') {
200
200
  const { flags } = parseOpts(tail);
201
201
  if (flags.has('unread')) {
202
202
  return implListUnreadCandidates();
203
203
  }
204
204
  return implListCandidates();
205
205
  }
206
- if (cmd === 'open-chat') {
207
- const { rest, flags } = parseOpts(tail);
206
+ if (cmd === 'chat') {
207
+ const { rest, flags, opts } = parseOpts(tail);
208
208
  const nameArg = rest[0]?.trim();
209
209
  if (!nameArg) {
210
- die('❌ 用法: open-chat <姓名> [--strict]');
210
+ die('❌ 用法: chat <姓名> [--strict]');
211
+ }
212
+ if ((opts.action ?? '').trim().length > 0 || (opts.remark ?? '').trim().length > 0) {
213
+ die('❌ chat 不再支持 --action/--remark。请改用: action <操作> [--remark <备注>]');
211
214
  }
212
215
  // 默认模糊匹配(包含);仅在指定 --strict 时做精确匹配
213
216
  const exact = flags.has('strict');
214
217
  return implOpenChat(nameArg, exact);
215
218
  }
216
- if (cmd === 'send-message') {
217
- const { opts, flags } = parseOpts(tail);
219
+ if (cmd === 'action') {
220
+ const { rest, opts } = parseOpts(tail);
221
+ const raw = (rest[0] ?? opts.type ?? opts.action ?? '').trim().toLowerCase();
222
+ const actionMap = {
223
+ resume: 'resume',
224
+ 'not-fit': 'not-fit',
225
+ remark: 'remark',
226
+ 'agree-resume': 'agree-resume',
227
+ history: 'history',
228
+ 'chat-history': 'history',
229
+ };
230
+ const action = actionMap[raw];
231
+ if (!action) {
232
+ die('❌ 用法: action <resume|not-fit|remark|agree-resume|history> [--remark <备注>]');
233
+ }
234
+ const remark = (opts.remark ?? '').trim();
235
+ if (action === 'remark' && !remark) {
236
+ die('❌ 当操作为 remark 时,必须提供 --remark <备注内容>。');
237
+ }
238
+ return implChatAction({ action, remark });
239
+ }
240
+ if (cmd === 'send') {
241
+ const { opts } = parseOpts(tail);
218
242
  const text = opts.text?.trim() || opts.t?.trim() || '';
219
- const alsoRequestResume = flags.has('also-request-resume') ||
220
- opts['also-request-resume'] === 'true' ||
221
- opts.alsoRequestResume === 'true';
222
- if (!text) {
223
- die('❌ 用法: send-message --text <消息内容> [--also-request-resume]');
243
+ const raw = (opts.action ?? '').trim().toLowerCase();
244
+ const actionMap = {
245
+ 'request-resume': 'request-resume',
246
+ 'agree-resume': 'agree-resume',
247
+ 'confuse-resume': 'confuse-resume',
248
+ };
249
+ let action;
250
+ if (raw) {
251
+ action = actionMap[raw];
252
+ if (!action) {
253
+ die(`❌ 未知 --action “${raw}”,可选:request-resume | agree-resume | confuse-resume`);
254
+ }
224
255
  }
225
- return implSendMessage(text, alsoRequestResume);
256
+ if (!text && !action) {
257
+ die('❌ 用法: send [--text <消息>] [-t <消息>] [--action request-resume|agree-resume|confuse-resume](至少其一)');
258
+ }
259
+ return implSendMessage({ text, action });
226
260
  }
227
- if (cmd === 'list-positions') {
261
+ if (cmd === 'positions') {
262
+ const { rest, opts, flags } = parseOpts(tail);
263
+ if (rest.length > 0 || Object.keys(opts).length > 0 || flags.size > 0) {
264
+ die('❌ 用法: positions');
265
+ }
228
266
  return implListPositions();
229
267
  }
230
- die(`❌ 未知命令 “${cmd}”。输入 help 查看用法。`);
268
+ if (cmd === 'jd') {
269
+ const { flags, opts, rest } = parseOpts(tail);
270
+ if (flags.has('detail')) {
271
+ die('❌ jd 不再支持 --detail。请使用: jd <name>');
272
+ }
273
+ if (flags.size > 0) {
274
+ const unsupportedFlags = Array.from(flags).join(', --');
275
+ die(`❌ jd 不支持参数: --${unsupportedFlags}`);
276
+ }
277
+ const detailName = rest.join(' ').trim();
278
+ if (!detailName) {
279
+ die('❌ 用法: jd <name>');
280
+ }
281
+ const unknownOpts = Object.keys(opts);
282
+ if (unknownOpts.length > 0) {
283
+ die(`❌ jd 不支持参数: --${unknownOpts.join(', --')}`);
284
+ }
285
+ return implListPositionsWithOptions({ detail: true, name: detailName });
286
+ }
287
+ if (cmd === 'search') {
288
+ const { rest, opts, flags } = parseOpts(tail);
289
+ if (rest.length > 0 || Object.keys(opts).length > 0 || flags.size > 0) {
290
+ die('❌ 用法: search');
291
+ }
292
+ return implBossSearch();
293
+ }
294
+ if (cmd === 'skill') {
295
+ return implSkill(tail);
296
+ }
297
+ die(`❌ 未知命令 “${argv[0]}”。输入 help 查看用法。`);
231
298
  }
232
299
  export async function runOneCommand(argv) {
233
300
  if (argv.length === 0) {
@@ -281,7 +348,8 @@ async function runInteractiveLoop() {
281
348
  }
282
349
  finally {
283
350
  rl.close();
284
- await cleanupAfterCommand('interactive', false);
351
+ // 退出交互时进程即将结束,必须 detach + unref 子进程,否则 Chrome 常随 Node 一起退出
352
+ await detachBrowserSession().catch(() => { });
285
353
  }
286
354
  }
287
355
  export async function runCli(argv) {
@@ -1 +1 @@
1
- {"version":3,"file":"cliRouter.js","sourceRoot":"","sources":["../../src/cli/cliRouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cliRouter.js","sourceRoot":"","sources":["../../src/cli/cliRouter.ts"],"names":[],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -1,6 +1,16 @@
1
1
  #!/usr/bin/env node
2
2
  // boss-cli 入口:子命令见 cliRouter;业务能力见 toolset(impl*)
3
+ // 环境变量:先读 ~/.boss-cli/.env,再读当前工作目录下的 .env(后者覆盖前者)。
4
+ import { existsSync } from 'node:fs';
5
+ import { join } from 'node:path';
6
+ import { config as loadEnv } from 'dotenv';
7
+ import { APP_HOME } from '../config.js';
3
8
  import { runCli, isReadlineAbortError } from './cliRouter.js';
9
+ const userEnvPath = join(APP_HOME, '.env');
10
+ if (existsSync(userEnvPath)) {
11
+ loadEnv({ path: userEnvPath });
12
+ }
13
+ loadEnv();
4
14
  async function main() {
5
15
  const args = process.argv.slice(2);
6
16
  try {
@@ -17,5 +27,8 @@ async function main() {
17
27
  process.exit(1);
18
28
  }
19
29
  }
20
- main();
30
+ main().catch((err) => {
31
+ console.error('❌ 未捕获错误:', err);
32
+ process.exit(1);
33
+ });
21
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,kDAAkD;AAElD,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE9D,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,kDAAkD;AAClD,oDAAoD;AAEpD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC3C,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;AACjC,CAAC;AACD,OAAO,EAAE,CAAC;AAEV,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/config.d.ts CHANGED
@@ -1,3 +1,8 @@
1
+ /**
2
+ * 多数 Agent 客户端约定的 skills 根目录(如 `~/.agents/skills`)。
3
+ * 可用 `BOSS_AGENT_SKILLS_DIR` 设为绝对路径以覆盖。
4
+ */
5
+ export declare function getAgentSkillsDir(): string;
1
6
  /** 应用主目录(业务数据在 .cache 下) */
2
7
  export declare const APP_HOME: string;
3
8
  /** 存放岗位 JD 的目录(每个岗位一个 .md 文件) */
@@ -8,6 +13,10 @@ export declare const JD_DIR: string;
8
13
  export declare const CACHE_DIR: string;
9
14
  /** Puppeteer 用户数据目录(与 CDP 启动默认目录一致) */
10
15
  export declare const BROWSER_USER_DATA_DIR: string;
16
+ /** `chat` 抓取在线简历时对 iframe 区域截图保存目录 */
17
+ export declare const RESUME_SCREENSHOTS_DIR: string;
18
+ /** 在线简历截图经 OCR 后的纯文本保存目录(与截图同名 `.txt`) */
19
+ export declare const RESUME_OCR_DIR: string;
11
20
  /** 确保 `~/.boss-cli/.cache` 目录存在(幂等) */
12
21
  export declare function ensureAppDataLayout(): void;
13
22
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,4BAA4B;AAC5B,eAAO,MAAM,QAAQ,QAA+B,CAAC;AAErD,iCAAiC;AACjC,eAAO,MAAM,MAAM,QAAuB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,SAAS,QAA2B,CAAC;AAElD,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,QAAkC,CAAC;AAIrE,uCAAuC;AACvC,wBAAgB,mBAAmB,IAAI,IAAI,CAc1C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C;AAED,4BAA4B;AAC5B,eAAO,MAAM,QAAQ,QAA+B,CAAC;AAErD,iCAAiC;AACjC,eAAO,MAAM,MAAM,QAAuB,CAAC;AAE3C;;GAEG;AACH,eAAO,MAAM,SAAS,QAA2B,CAAC;AAElD,uCAAuC;AACvC,eAAO,MAAM,qBAAqB,QAAkC,CAAC;AAErE,sCAAsC;AACtC,eAAO,MAAM,sBAAsB,QAAwC,CAAC;AAE5E,0CAA0C;AAC1C,eAAO,MAAM,cAAc,QAAyB,CAAC;AAIrD,uCAAuC;AACvC,wBAAgB,mBAAmB,IAAI,IAAI,CAwB1C"}
package/dist/config.js CHANGED
@@ -2,6 +2,17 @@
2
2
  import { existsSync, mkdirSync } from 'fs';
3
3
  import { join } from 'path';
4
4
  import { homedir } from 'os';
5
+ /**
6
+ * 多数 Agent 客户端约定的 skills 根目录(如 `~/.agents/skills`)。
7
+ * 可用 `BOSS_AGENT_SKILLS_DIR` 设为绝对路径以覆盖。
8
+ */
9
+ export function getAgentSkillsDir() {
10
+ const raw = process.env.BOSS_AGENT_SKILLS_DIR?.trim();
11
+ if (raw && raw.length > 0) {
12
+ return raw;
13
+ }
14
+ return join(homedir(), '.agents', 'skills');
15
+ }
5
16
  /** 应用主目录(业务数据在 .cache 下) */
6
17
  export const APP_HOME = join(homedir(), '.boss-cli');
7
18
  /** 存放岗位 JD 的目录(每个岗位一个 .md 文件) */
@@ -12,6 +23,10 @@ export const JD_DIR = join(APP_HOME, 'jd');
12
23
  export const CACHE_DIR = join(APP_HOME, '.cache');
13
24
  /** Puppeteer 用户数据目录(与 CDP 启动默认目录一致) */
14
25
  export const BROWSER_USER_DATA_DIR = join(CACHE_DIR, 'browser-data');
26
+ /** `chat` 抓取在线简历时对 iframe 区域截图保存目录 */
27
+ export const RESUME_SCREENSHOTS_DIR = join(CACHE_DIR, 'resume-screenshots');
28
+ /** 在线简历截图经 OCR 后的纯文本保存目录(与截图同名 `.txt`) */
29
+ export const RESUME_OCR_DIR = join(CACHE_DIR, 'ocr');
15
30
  let appDataLayoutReady = false;
16
31
  /** 确保 `~/.boss-cli/.cache` 目录存在(幂等) */
17
32
  export function ensureAppDataLayout() {
@@ -28,5 +43,15 @@ export function ensureAppDataLayout() {
28
43
  if (!existsSync(JD_DIR)) {
29
44
  mkdirSync(JD_DIR, { recursive: true });
30
45
  }
46
+ if (!existsSync(RESUME_SCREENSHOTS_DIR)) {
47
+ mkdirSync(RESUME_SCREENSHOTS_DIR, { recursive: true });
48
+ }
49
+ if (!existsSync(RESUME_OCR_DIR)) {
50
+ mkdirSync(RESUME_OCR_DIR, { recursive: true });
51
+ }
52
+ const agentSkills = getAgentSkillsDir();
53
+ if (!existsSync(agentSkills)) {
54
+ mkdirSync(agentSkills, { recursive: true });
55
+ }
31
56
  }
32
57
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B,4BAA4B;AAC5B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAErD,iCAAiC;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAElD,uCAAuC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAErE,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,uCAAuC;AACvC,MAAM,UAAU,mBAAmB;IACjC,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IACD,kBAAkB,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACvC,SAAS,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAEpC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAE7B;;;GAGG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,EAAE,CAAC;IACtD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,4BAA4B;AAC5B,MAAM,CAAC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAErD,iCAAiC;AACjC,MAAM,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AAE3C;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAElD,uCAAuC;AACvC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;AAErE,sCAAsC;AACtC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;AAE5E,0CAA0C;AAC1C,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;AAErD,IAAI,kBAAkB,GAAG,KAAK,CAAC;AAE/B,uCAAuC;AACvC,MAAM,UAAU,mBAAmB;IACjC,IAAI,kBAAkB,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IACD,kBAAkB,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC3B,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACvC,SAAS,CAAC,qBAAqB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxB,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACxC,SAAS,CAAC,sBAAsB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;QAChC,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;IACxC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * 百度 AI 开放平台:OAuth + 通用文字识别(高精度含位置版 accurate_basic)。
3
+ * 需在环境变量中配置 `API_KEY`、`SECRET_KEY`(与百度控制台一致)。
4
+ * @see https://ai.baidu.com/ai-doc/OCR/zk3h7xz52
5
+ */
6
+ export declare function isBaiduOcrConfigured(): boolean;
7
+ /** 获取 access_token(带简单内存缓存,过期前 1 分钟刷新)。 */
8
+ export declare function getBaiduAccessToken(): Promise<string>;
9
+ /** 对整张 PNG/JPG 做高精度识别,返回合并文本(按行拼接)。 */
10
+ export declare function baiduOcrImageBase64(imageBase64: string): Promise<string>;
11
+ //# sourceMappingURL=baidu_ocr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baidu_ocr.d.ts","sourceRoot":"","sources":["../../src/ocr/baidu_ocr.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAID,2CAA2C;AAC3C,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,CAAC,CA4C3D;AAID,uCAAuC;AACvC,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgC9E"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * 百度 AI 开放平台:OAuth + 通用文字识别(高精度含位置版 accurate_basic)。
3
+ * 需在环境变量中配置 `API_KEY`、`SECRET_KEY`(与百度控制台一致)。
4
+ * @see https://ai.baidu.com/ai-doc/OCR/zk3h7xz52
5
+ */
6
+ const BAIDU_TOKEN_URL = 'https://aip.baidubce.com/oauth/2.0/token';
7
+ const BAIDU_OCR_ACCURATE_BASIC = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic';
8
+ function apiKey() {
9
+ return process.env.API_KEY?.trim() || process.env.BOSS_BAIDU_API_KEY?.trim();
10
+ }
11
+ function secretKey() {
12
+ return process.env.SECRET_KEY?.trim() || process.env.BOSS_BAIDU_SECRET_KEY?.trim();
13
+ }
14
+ export function isBaiduOcrConfigured() {
15
+ return !!(apiKey() && secretKey());
16
+ }
17
+ let cachedToken = null;
18
+ /** 获取 access_token(带简单内存缓存,过期前 1 分钟刷新)。 */
19
+ export async function getBaiduAccessToken() {
20
+ const client_id = apiKey();
21
+ const client_secret = secretKey();
22
+ if (!client_id || !client_secret) {
23
+ throw new Error('缺少百度 OCR 凭证:请设置 API_KEY 与 SECRET_KEY(或 BOSS_BAIDU_API_KEY / BOSS_BAIDU_SECRET_KEY)');
24
+ }
25
+ const now = Date.now();
26
+ if (cachedToken && now < cachedToken.expiresAtMs - 60_000) {
27
+ return cachedToken.token;
28
+ }
29
+ const u = new URL(BAIDU_TOKEN_URL);
30
+ u.searchParams.set('grant_type', 'client_credentials');
31
+ u.searchParams.set('client_id', client_id);
32
+ u.searchParams.set('client_secret', client_secret);
33
+ const res = await fetch(u.toString(), {
34
+ method: 'POST',
35
+ headers: {
36
+ 'Content-Type': 'application/json',
37
+ Accept: 'application/json',
38
+ },
39
+ });
40
+ const data = (await res.json());
41
+ if (!res.ok || !data.access_token) {
42
+ throw new Error(`百度 OAuth 失败: ${res.status} ${data.error ?? ''} ${data.error_description ?? JSON.stringify(data)}`);
43
+ }
44
+ const expiresInSec = typeof data.expires_in === 'number' ? data.expires_in : 2592000;
45
+ cachedToken = {
46
+ token: data.access_token,
47
+ expiresAtMs: now + expiresInSec * 1000,
48
+ };
49
+ return data.access_token;
50
+ }
51
+ /** 对整张 PNG/JPG 做高精度识别,返回合并文本(按行拼接)。 */
52
+ export async function baiduOcrImageBase64(imageBase64) {
53
+ const token = await getBaiduAccessToken();
54
+ const url = new URL(BAIDU_OCR_ACCURATE_BASIC);
55
+ url.searchParams.set('access_token', token);
56
+ const body = new URLSearchParams();
57
+ body.set('image', imageBase64);
58
+ body.set('language_type', 'CHN_ENG');
59
+ const res = await fetch(url.toString(), {
60
+ method: 'POST',
61
+ headers: {
62
+ 'Content-Type': 'application/x-www-form-urlencoded',
63
+ Accept: 'application/json',
64
+ },
65
+ body: body.toString(),
66
+ });
67
+ const data = (await res.json());
68
+ if (!res.ok || (data.error_code !== undefined && data.error_code !== 0)) {
69
+ throw new Error(`百度 OCR 失败: ${res.status} ${data.error_msg ?? JSON.stringify(data)}`);
70
+ }
71
+ const lines = (data.words_result ?? [])
72
+ .map((r) => (r.words ?? '').trim())
73
+ .filter((s) => s.length > 0);
74
+ return lines.join('\n').trim();
75
+ }
76
+ //# sourceMappingURL=baidu_ocr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baidu_ocr.js","sourceRoot":"","sources":["../../src/ocr/baidu_ocr.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { getBaiduAccessToken, isBaiduOcrConfigured } from './baidu_ocr.js';
2
+ export { isResumeOcrEnabled, ocrResumePngToTextFile } from './resume_ocr.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ocr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { getBaiduAccessToken, isBaiduOcrConfigured } from './baidu_ocr.js';
2
+ export { isResumeOcrEnabled, ocrResumePngToTextFile } from './resume_ocr.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ocr/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * 是否对在线简历截图做 OCR。关闭:`BOSS_RESUME_OCR=0`。
3
+ * 开启时需配置百度 `API_KEY` + `SECRET_KEY`(在线识别,无本地引擎)。
4
+ */
5
+ export declare function isResumeOcrEnabled(): boolean;
6
+ /**
7
+ * 对简历区域 PNG 调用百度 OCR,将结果写入 `~/.boss-cli/.cache/ocr/`(与截图同名 `.txt`)。
8
+ */
9
+ export declare function ocrResumePngToTextFile(pngAbsPath: string): Promise<{
10
+ textPath: string;
11
+ text: string;
12
+ }>;
13
+ //# sourceMappingURL=resume_ocr.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume_ocr.d.ts","sourceRoot":"","sources":["../../src/ocr/resume_ocr.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,OAAO,CAG5C;AAKD;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB5G"}
@@ -0,0 +1,35 @@
1
+ import { basename, join } from 'node:path';
2
+ import { readFile, writeFile } from 'node:fs/promises';
3
+ import { ensureAppDataLayout, RESUME_OCR_DIR } from '../config.js';
4
+ import { baiduOcrImageBase64, isBaiduOcrConfigured } from './baidu_ocr.js';
5
+ /**
6
+ * 是否对在线简历截图做 OCR。关闭:`BOSS_RESUME_OCR=0`。
7
+ * 开启时需配置百度 `API_KEY` + `SECRET_KEY`(在线识别,无本地引擎)。
8
+ */
9
+ export function isResumeOcrEnabled() {
10
+ const v = process.env.BOSS_RESUME_OCR?.trim().toLowerCase();
11
+ return v !== '0' && v !== 'false' && v !== 'no';
12
+ }
13
+ /** 串行执行 OCR,避免并发请求交错 */
14
+ let ocrChain = Promise.resolve();
15
+ /**
16
+ * 对简历区域 PNG 调用百度 OCR,将结果写入 `~/.boss-cli/.cache/ocr/`(与截图同名 `.txt`)。
17
+ */
18
+ export async function ocrResumePngToTextFile(pngAbsPath) {
19
+ ensureAppDataLayout();
20
+ if (!isBaiduOcrConfigured()) {
21
+ throw new Error('已开启简历 OCR(BOSS_RESUME_OCR),但未配置百度密钥:请设置 API_KEY 与 SECRET_KEY(或 BOSS_BAIDU_API_KEY / BOSS_BAIDU_SECRET_KEY)。');
22
+ }
23
+ const base = basename(pngAbsPath).replace(/\.png$/i, '.txt');
24
+ const textPath = join(RESUME_OCR_DIR, base);
25
+ const run = async () => {
26
+ const buf = await readFile(pngAbsPath);
27
+ const text = await baiduOcrImageBase64(buf.toString('base64'));
28
+ await writeFile(textPath, text.endsWith('\n') ? text : `${text}\n`, 'utf8');
29
+ return { textPath, text };
30
+ };
31
+ const p = ocrChain.then(run);
32
+ ocrChain = p.catch(() => { });
33
+ return p;
34
+ }
35
+ //# sourceMappingURL=resume_ocr.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resume_ocr.js","sourceRoot":"","sources":["../../src/ocr/resume_ocr.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3E;;;GAGG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5D,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,IAAI,CAAC;AAClD,CAAC;AAED,wBAAwB;AACxB,IAAI,QAAQ,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;AAEnD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,UAAkB;IAC7D,mBAAmB,EAAE,CAAC;IACtB,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAE5C,MAAM,GAAG,GAAG,KAAK,IAAiD,EAAE;QAClE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5E,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC,CAAC;IAEF,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC7B,OAAO,CAAgD,CAAC;AAC1D,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { Page } from 'puppeteer-core';
2
+ export type ChatPageAction = 'resume' | 'not-fit' | 'remark' | 'agree-resume' | 'history';
3
+ export declare function runChatActionOnCurrentConversation(page: Page, options: {
4
+ action: ChatPageAction;
5
+ remark?: string;
6
+ }): Promise<string>;
7
+ //# sourceMappingURL=action.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/toolset/action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAgc3C,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,GAAG,SAAS,CAAC;AAE1F,wBAAsB,kCAAkC,CACtD,IAAI,EAAE,IAAI,EACV,OAAO,EAAE;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GACnD,OAAO,CAAC,MAAM,CAAC,CAkCjB"}