@joohw/boss-cli 0.1.4 → 0.1.5

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 (77) 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 +27 -14
  9. package/dist/browser/browser_session.js.map +1 -1
  10. package/dist/browser/cdp_browser.d.ts +10 -0
  11. package/dist/browser/cdp_browser.d.ts.map +1 -1
  12. package/dist/browser/cdp_browser.js +219 -11
  13. package/dist/browser/cdp_browser.js.map +1 -1
  14. package/dist/browser/chat.d.ts.map +1 -1
  15. package/dist/browser/chat.js +5 -3
  16. package/dist/browser/chat.js.map +1 -1
  17. package/dist/browser/human_delay.d.ts +88 -0
  18. package/dist/browser/human_delay.d.ts.map +1 -0
  19. package/dist/browser/human_delay.js +52 -0
  20. package/dist/browser/human_delay.js.map +1 -0
  21. package/dist/browser/index.d.ts +3 -1
  22. package/dist/browser/index.d.ts.map +1 -1
  23. package/dist/browser/index.js +3 -1
  24. package/dist/browser/index.js.map +1 -1
  25. package/dist/browser/timing.d.ts +7 -0
  26. package/dist/browser/timing.d.ts.map +1 -0
  27. package/dist/browser/timing.js +34 -0
  28. package/dist/browser/timing.js.map +1 -0
  29. package/dist/cli/banner.d.ts.map +1 -1
  30. package/dist/cli/banner.js +43 -9
  31. package/dist/cli/banner.js.map +1 -1
  32. package/dist/cli/cliRouter.d.ts.map +1 -1
  33. package/dist/cli/cliRouter.js +81 -63
  34. package/dist/cli/cliRouter.js.map +1 -1
  35. package/dist/cli/index.js +14 -1
  36. package/dist/cli/index.js.map +1 -1
  37. package/dist/config.d.ts +9 -0
  38. package/dist/config.d.ts.map +1 -1
  39. package/dist/config.js +25 -0
  40. package/dist/config.js.map +1 -1
  41. package/dist/ocr/baidu_ocr.d.ts +11 -0
  42. package/dist/ocr/baidu_ocr.d.ts.map +1 -0
  43. package/dist/ocr/baidu_ocr.js +76 -0
  44. package/dist/ocr/baidu_ocr.js.map +1 -0
  45. package/dist/ocr/index.d.ts +3 -0
  46. package/dist/ocr/index.d.ts.map +1 -0
  47. package/dist/ocr/index.js +3 -0
  48. package/dist/ocr/index.js.map +1 -0
  49. package/dist/ocr/resume_ocr.d.ts +13 -0
  50. package/dist/ocr/resume_ocr.d.ts.map +1 -0
  51. package/dist/ocr/resume_ocr.js +35 -0
  52. package/dist/ocr/resume_ocr.js.map +1 -0
  53. package/dist/toolset/index.d.ts +12 -2
  54. package/dist/toolset/index.d.ts.map +1 -1
  55. package/dist/toolset/index.js +11 -4
  56. package/dist/toolset/index.js.map +1 -1
  57. package/dist/toolset/list_candidates.d.ts.map +1 -1
  58. package/dist/toolset/list_candidates.js +12 -19
  59. package/dist/toolset/list_candidates.js.map +1 -1
  60. package/dist/toolset/login.d.ts.map +1 -1
  61. package/dist/toolset/login.js +7 -4
  62. package/dist/toolset/login.js.map +1 -1
  63. package/dist/toolset/open_chat.d.ts +4 -1
  64. package/dist/toolset/open_chat.d.ts.map +1 -1
  65. package/dist/toolset/open_chat.js +365 -25
  66. package/dist/toolset/open_chat.js.map +1 -1
  67. package/dist/toolset/send_message.d.ts +11 -1
  68. package/dist/toolset/send_message.d.ts.map +1 -1
  69. package/dist/toolset/send_message.js +120 -21
  70. package/dist/toolset/send_message.js.map +1 -1
  71. package/dist/toolset/skill.d.ts +13 -0
  72. package/dist/toolset/skill.d.ts.map +1 -0
  73. package/dist/toolset/skill.js +85 -0
  74. package/dist/toolset/skill.js.map +1 -0
  75. package/package.json +5 -2
  76. package/skills/README.md +11 -0
  77. package/skills/boss-cli/SKILL.md +58 -0
@@ -0,0 +1,88 @@
1
+ import type { Page } from 'puppeteer-core';
2
+ /** 导航到沟通页并 load 后,等待 SPA/接口渲染 */
3
+ export declare const CHAT_GOTO_SETTLE_MS: {
4
+ readonly min: 2800;
5
+ readonly max: 5200;
6
+ };
7
+ /** 页面执行上下文被销毁后重试前 */
8
+ export declare const CONTEXT_DESTROY_RETRY_MS: {
9
+ readonly min: 900;
10
+ readonly max: 1800;
11
+ };
12
+ /** 列表滚动查找候选人时,每轮之间的间隔 */
13
+ export declare const OPEN_CHAT_SCROLL_GAP_MS: {
14
+ readonly min: 200;
15
+ readonly max: 580;
16
+ };
17
+ /** 点击会话行后,等待右侧面板出现的短停顿 */
18
+ export declare const OPEN_CHAT_AFTER_ROW_CLICK_MS: {
19
+ readonly min: 420;
20
+ readonly max: 1200;
21
+ };
22
+ /** mouse.click 的按下/抬起间隔(Puppeteer delay 选项) */
23
+ export declare const MOUSE_CLICK_PRESS_MS: {
24
+ readonly min: 55;
25
+ readonly max: 180;
26
+ };
27
+ /** 筛选「全部」等操作之间的停顿 */
28
+ export declare const LIST_FILTER_GAP_MS: {
29
+ readonly min: 780;
30
+ readonly max: 1400;
31
+ };
32
+ /** 列表稳定轮询间隔(随机) */
33
+ export declare const LIST_POLL_MS: {
34
+ readonly min: 340;
35
+ readonly max: 620;
36
+ };
37
+ /** 列表为空时至少等待多久才认为稳定 */
38
+ export declare const LIST_MIN_BEFORE_EMPTY_OK_MS = 3600;
39
+ /** 登录态探测轮询间隔 */
40
+ export declare const PROBE_LOGIN_POLL_MS: {
41
+ readonly min: 520;
42
+ readonly max: 980;
43
+ };
44
+ /** 点击聊天输入框 */
45
+ export declare const SEND_INPUT_CLICK_MS: {
46
+ readonly min: 45;
47
+ readonly max: 160;
48
+ };
49
+ /** 逐字输入:字符间隔(随机) */
50
+ export declare const SEND_TYPING_GAP_MS: {
51
+ readonly min: 38;
52
+ readonly max: 125;
53
+ };
54
+ /** 按下 Enter 后、流程结束前短停顿 */
55
+ export declare const SEND_AFTER_ENTER_MS: {
56
+ readonly min: 260;
57
+ readonly max: 920;
58
+ };
59
+ /** `send` 中先发完文字后、再执行 `--action` 前的默认随机间隔(求简历 / 同意或拒绝附件等) */
60
+ export declare const SEND_BEFORE_RESUME_MS: {
61
+ readonly min: 2800;
62
+ readonly max: 5600;
63
+ };
64
+ /** 点击「沟通记录」后等待弹窗与列表渲染 */
65
+ export declare const CHAT_HISTORY_DIALOG_WAIT_MS: {
66
+ readonly min: 500;
67
+ readonly max: 1400;
68
+ };
69
+ /** 「同事沟通」/「我的沟通」切换后等待列表刷新 */
70
+ export declare const CHAT_HISTORY_TAB_SWITCH_MS: {
71
+ readonly min: 350;
72
+ readonly max: 900;
73
+ };
74
+ /** 点击「在线简历」后等待 iframe 出现 */
75
+ export declare const ONLINE_RESUME_IFRAME_APPEAR_MS: {
76
+ readonly min: 600;
77
+ readonly max: 1600;
78
+ };
79
+ /** iframe 出现后等待简历区域渲染 */
80
+ export declare const ONLINE_RESUME_IFRAME_SETTLE_MS: {
81
+ readonly min: 1800;
82
+ readonly max: 4200;
83
+ };
84
+ /**
85
+ * 逐字符输入,字符之间为随机间隔(末尾字符后不再额外等待)。
86
+ */
87
+ export declare function typeTextWithRandomKeyDelay(page: Page, text: string, minGapMs: number, maxGapMs: number, signal?: AbortSignal): Promise<void>;
88
+ //# sourceMappingURL=human_delay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"human_delay.d.ts","sourceRoot":"","sources":["../../src/browser/human_delay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,iCAAiC;AACjC,eAAO,MAAM,mBAAmB;;;CAAoC,CAAC;AAErE,qBAAqB;AACrB,eAAO,MAAM,wBAAwB;;;CAAmC,CAAC;AAEzE,yBAAyB;AACzB,eAAO,MAAM,uBAAuB;;;CAAkC,CAAC;AAEvE,0BAA0B;AAC1B,eAAO,MAAM,4BAA4B;;;CAAmC,CAAC;AAE7E,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB;;;CAAiC,CAAC;AAEnE,qBAAqB;AACrB,eAAO,MAAM,kBAAkB;;;CAAmC,CAAC;AAEnE,mBAAmB;AACnB,eAAO,MAAM,YAAY;;;CAAkC,CAAC;AAE5D,uBAAuB;AACvB,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,gBAAgB;AAChB,eAAO,MAAM,mBAAmB;;;CAAkC,CAAC;AAEnE,cAAc;AACd,eAAO,MAAM,mBAAmB;;;CAAiC,CAAC;AAElE,oBAAoB;AACpB,eAAO,MAAM,kBAAkB;;;CAAiC,CAAC;AAEjE,0BAA0B;AAC1B,eAAO,MAAM,mBAAmB;;;CAAkC,CAAC;AAEnE,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB;;;CAAoC,CAAC;AAEvE,yBAAyB;AACzB,eAAO,MAAM,2BAA2B;;;CAAmC,CAAC;AAE5E,6BAA6B;AAC7B,eAAO,MAAM,0BAA0B;;;CAAkC,CAAC;AAE1E,4BAA4B;AAC5B,eAAO,MAAM,8BAA8B;;;CAAmC,CAAC;AAE/E,yBAAyB;AACzB,eAAO,MAAM,8BAA8B;;;CAAoC,CAAC;AAEhF;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAYf"}
@@ -0,0 +1,52 @@
1
+ import { randomIntInclusive, sleep } from './timing.js';
2
+ /** 导航到沟通页并 load 后,等待 SPA/接口渲染 */
3
+ export const CHAT_GOTO_SETTLE_MS = { min: 2800, max: 5200 };
4
+ /** 页面执行上下文被销毁后重试前 */
5
+ export const CONTEXT_DESTROY_RETRY_MS = { min: 900, max: 1800 };
6
+ /** 列表滚动查找候选人时,每轮之间的间隔 */
7
+ export const OPEN_CHAT_SCROLL_GAP_MS = { min: 200, max: 580 };
8
+ /** 点击会话行后,等待右侧面板出现的短停顿 */
9
+ export const OPEN_CHAT_AFTER_ROW_CLICK_MS = { min: 420, max: 1200 };
10
+ /** mouse.click 的按下/抬起间隔(Puppeteer delay 选项) */
11
+ export const MOUSE_CLICK_PRESS_MS = { min: 55, max: 180 };
12
+ /** 筛选「全部」等操作之间的停顿 */
13
+ export const LIST_FILTER_GAP_MS = { min: 780, max: 1400 };
14
+ /** 列表稳定轮询间隔(随机) */
15
+ export const LIST_POLL_MS = { min: 340, max: 620 };
16
+ /** 列表为空时至少等待多久才认为稳定 */
17
+ export const LIST_MIN_BEFORE_EMPTY_OK_MS = 3600;
18
+ /** 登录态探测轮询间隔 */
19
+ export const PROBE_LOGIN_POLL_MS = { min: 520, max: 980 };
20
+ /** 点击聊天输入框 */
21
+ export const SEND_INPUT_CLICK_MS = { min: 45, max: 160 };
22
+ /** 逐字输入:字符间隔(随机) */
23
+ export const SEND_TYPING_GAP_MS = { min: 38, max: 125 };
24
+ /** 按下 Enter 后、流程结束前短停顿 */
25
+ export const SEND_AFTER_ENTER_MS = { min: 260, max: 920 };
26
+ /** `send` 中先发完文字后、再执行 `--action` 前的默认随机间隔(求简历 / 同意或拒绝附件等) */
27
+ export const SEND_BEFORE_RESUME_MS = { min: 2800, max: 5600 };
28
+ /** 点击「沟通记录」后等待弹窗与列表渲染 */
29
+ export const CHAT_HISTORY_DIALOG_WAIT_MS = { min: 500, max: 1400 };
30
+ /** 「同事沟通」/「我的沟通」切换后等待列表刷新 */
31
+ export const CHAT_HISTORY_TAB_SWITCH_MS = { min: 350, max: 900 };
32
+ /** 点击「在线简历」后等待 iframe 出现 */
33
+ export const ONLINE_RESUME_IFRAME_APPEAR_MS = { min: 600, max: 1600 };
34
+ /** iframe 出现后等待简历区域渲染 */
35
+ export const ONLINE_RESUME_IFRAME_SETTLE_MS = { min: 1800, max: 4200 };
36
+ /**
37
+ * 逐字符输入,字符之间为随机间隔(末尾字符后不再额外等待)。
38
+ */
39
+ export async function typeTextWithRandomKeyDelay(page, text, minGapMs, maxGapMs, signal) {
40
+ const codepoints = Array.from(text);
41
+ for (let i = 0; i < codepoints.length; i++) {
42
+ if (signal?.aborted) {
43
+ throw new Error('Aborted');
44
+ }
45
+ const ch = codepoints[i];
46
+ await page.keyboard.type(ch, { delay: 0 });
47
+ if (i < codepoints.length - 1) {
48
+ await sleep(randomIntInclusive(minGapMs, maxGapMs), signal);
49
+ }
50
+ }
51
+ }
52
+ //# sourceMappingURL=human_delay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"human_delay.js","sourceRoot":"","sources":["../../src/browser/human_delay.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * 浏览器:CDP 连接与会话(统一出口)。
3
3
  */
4
- export { connectBrowser, createPageCDPSession, LAUNCH_ARGS_ALLOW_ALL_CORS, LAUNCH_ARGS_LESS_AUTOMATION, type ConnectBrowserOptions, } from './cdp_browser.js';
4
+ export * from './timing.js';
5
+ export * from './human_delay.js';
6
+ export { connectBrowser, createPageCDPSession, defaultViewportFromEnv, LAUNCH_ARGS_ALLOW_ALL_CORS, LAUNCH_ARGS_LESS_AUTOMATION, type ConnectBrowserOptions, wasLastChromeLaunchHeadless, } from './cdp_browser.js';
5
7
  export { detachBrowserSession, disconnectBrowserSession, ensureAndGetBrowser, ensureBrowserSession, getBrowserRef, getPageRef, setSessionPage, } from './browser_session.js';
6
8
  export * from './auth.js';
7
9
  export { withLoggedInPage } from './withLoggedInPage.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,KAAK,qBAAqB,EAC1B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
@@ -1,7 +1,9 @@
1
1
  /**
2
2
  * 浏览器:CDP 连接与会话(统一出口)。
3
3
  */
4
- export { connectBrowser, createPageCDPSession, LAUNCH_ARGS_ALLOW_ALL_CORS, LAUNCH_ARGS_LESS_AUTOMATION, } from './cdp_browser.js';
4
+ export * from './timing.js';
5
+ export * from './human_delay.js';
6
+ export { connectBrowser, createPageCDPSession, defaultViewportFromEnv, LAUNCH_ARGS_ALLOW_ALL_CORS, LAUNCH_ARGS_LESS_AUTOMATION, wasLastChromeLaunchHeadless, } from './cdp_browser.js';
5
7
  export { detachBrowserSession, disconnectBrowserSession, ensureAndGetBrowser, ensureBrowserSession, getBrowserRef, getPageRef, setSessionPage, } from './browser_session.js';
6
8
  export * from './auth.js';
7
9
  export { withLoggedInPage } from './withLoggedInPage.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,0BAA0B,EAC1B,2BAA2B,GAE5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,cAAc,aAAa,CAAC;AAC5B,cAAc,kBAAkB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAE3B,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,UAAU,EACV,cAAc,GACf,MAAM,sBAAsB,CAAC;AAE9B,cAAc,WAAW,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,7 @@
1
+ /** 固定休眠(支持 AbortSignal,与原先 auth.sleep 行为一致) */
2
+ export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
3
+ /** 含两端在内的随机整数(使用 crypto.randomInt) */
4
+ export declare function randomIntInclusive(min: number, max: number): number;
5
+ /** 在 [minMs, maxMs] 内随机等待 */
6
+ export declare function sleepRandom(minMs: number, maxMs: number, signal?: AbortSignal): Promise<void>;
7
+ //# sourceMappingURL=timing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.d.ts","sourceRoot":"","sources":["../../src/browser/timing.ts"],"names":[],"mappings":"AAEA,+CAA+C;AAC/C,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBrE;AAED,sCAAsC;AACtC,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAOnE;AAED,6BAA6B;AAC7B,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAGf"}
@@ -0,0 +1,34 @@
1
+ import { randomInt } from 'node:crypto';
2
+ /** 固定休眠(支持 AbortSignal,与原先 auth.sleep 行为一致) */
3
+ export function sleep(ms, signal) {
4
+ return new Promise((resolve, reject) => {
5
+ if (signal?.aborted) {
6
+ reject(new Error('Aborted'));
7
+ return;
8
+ }
9
+ const id = setTimeout(() => {
10
+ signal?.removeEventListener('abort', onAbort);
11
+ resolve();
12
+ }, ms);
13
+ const onAbort = () => {
14
+ clearTimeout(id);
15
+ reject(new Error('Aborted'));
16
+ };
17
+ signal?.addEventListener('abort', onAbort, { once: true });
18
+ });
19
+ }
20
+ /** 含两端在内的随机整数(使用 crypto.randomInt) */
21
+ export function randomIntInclusive(min, max) {
22
+ if (max < min) {
23
+ const t = min;
24
+ min = max;
25
+ max = t;
26
+ }
27
+ return randomInt(min, max + 1);
28
+ }
29
+ /** 在 [minMs, maxMs] 内随机等待 */
30
+ export async function sleepRandom(minMs, maxMs, signal) {
31
+ const ms = randomIntInclusive(minMs, maxMs);
32
+ return sleep(ms, signal);
33
+ }
34
+ //# sourceMappingURL=timing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timing.js","sourceRoot":"","sources":["../../src/browser/timing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,+CAA+C;AAC/C,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,MAAoB;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QACD,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE;YACzB,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC;QACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,sCAAsC;AACtC,MAAM,UAAU,kBAAkB,CAAC,GAAW,EAAE,GAAW;IACzD,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,GAAG,CAAC;QACd,GAAG,GAAG,GAAG,CAAC;QACV,GAAG,GAAG,CAAC,CAAC;IACV,CAAC;IACD,OAAO,SAAS,CAAC,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC;AACjC,CAAC;AAED,6BAA6B;AAC7B,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,KAAa,EACb,MAAoB;IAEpB,MAAM,EAAE,GAAG,kBAAkB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/cli/banner.ts"],"names":[],"mappings":"AASA,wBAAgB,0BAA0B,IAAI,IAAI,CAmBjD"}
1
+ {"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../src/cli/banner.ts"],"names":[],"mappings":"AA+CA,wBAAgB,0BAA0B,IAAI,IAAI,CAmBjD"}
@@ -1,26 +1,60 @@
1
1
  /**
2
- * 进入交互模式(无参 `boss`)时在终端打印品牌条(红底白字)与作者信息。
3
- * NO_COLOR 且 stderr 为 TTY 时使用 ANSI;否则纯文本仍输出,避免「看不到」。
2
+ * 进入交互模式(无参 `boss`)时在终端打印大号 ASCII 品牌条。
3
+ * figlet -f big BOSS-CLI(全大写,斜线/竖线/下划线拼字);无 NO_COLOR 且 stderr 为 TTY 时黑底白字。
4
4
  */
5
5
  import process from 'node:process';
6
- /** 主标题 + 作者(两行均着色,保证在交互入口足够显眼) */
7
- const BANNER_LINES = [' boss-cli · by @joo '];
6
+ /** 比字形略宽,左右留白(字形本身 54 列) */
7
+ const BANNER_WIDTH = 60;
8
+ /** figlet -f big BOSS-CLI(每行 54 字符) */
9
+ const BANNER_ART = [
10
+ ' ____ ____ _____ _____ _____ _ _____ ',
11
+ ' | _ \\ / __ \\ / ____/ ____| / ____| | |_ _|',
12
+ ' | |_) | | | | (___| (___ ______| | | | | | ',
13
+ ' | _ <| | | |\\___ \\\\___ \\______| | | | | | ',
14
+ ' | |_) | |__| |____) |___) | | |____| |____ _| |_ ',
15
+ ' |____/ \\____/|_____/_____/ \\_____|______|_____|',
16
+ ];
17
+ function padCenter(line, width) {
18
+ const t = line.length > width ? line.slice(0, width) : line;
19
+ if (t.length >= width)
20
+ return t;
21
+ return t
22
+ .padStart(Math.floor((width + t.length) / 2), ' ')
23
+ .padEnd(width, ' ');
24
+ }
25
+ const BANNER_LINES = BANNER_ART.map((line) => padCenter(line, BANNER_WIDTH));
26
+ /** 黑底(40)+ 亮白字(97)+ 粗体,与空白行一致,保证整条色带对比度一致 */
27
+ const BG = '\x1b[40m';
28
+ const FG = '\x1b[97m';
29
+ const BD = '\x1b[1m';
30
+ const Z = '\x1b[0m';
31
+ function styleBannerLine(content) {
32
+ return `${BG}${FG}${BD}${content}${Z}`;
33
+ }
34
+ function blankBannerLine(useAnsi) {
35
+ if (useAnsi) {
36
+ console.error(styleBannerLine(' '.repeat(BANNER_WIDTH)));
37
+ }
38
+ else {
39
+ console.error('');
40
+ }
41
+ }
8
42
  export function printBossInteractiveBanner() {
9
43
  const useAnsi = !process.env.NO_COLOR && process.env.TERM !== 'dumb' && (process.stderr.isTTY ?? false);
10
44
  console.error('');
11
45
  if (useAnsi) {
12
- const R = '\x1b[41m';
13
- const W = '\x1b[97m';
14
- const B = '\x1b[1m';
15
- const Z = '\x1b[0m';
46
+ blankBannerLine(true);
16
47
  for (const line of BANNER_LINES) {
17
- console.error(`${R}${W}${B}${line}${Z}`);
48
+ console.error(styleBannerLine(line));
18
49
  }
50
+ blankBannerLine(true);
19
51
  }
20
52
  else {
53
+ blankBannerLine(false);
21
54
  for (const line of BANNER_LINES) {
22
55
  console.error(line);
23
56
  }
57
+ blankBannerLine(false);
24
58
  }
25
59
  console.error('');
26
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/cli/banner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,kCAAkC;AAClC,MAAM,YAAY,GAAG,CAAC,yBAAyB,CAAC,CAAC;AAEjD,MAAM,UAAU,0BAA0B;IACxC,MAAM,OAAO,GACX,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;IAE1F,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,CAAC,GAAG,UAAU,CAAC;QACrB,MAAM,CAAC,GAAG,UAAU,CAAC;QACrB,MAAM,CAAC,GAAG,SAAS,CAAC;QACpB,MAAM,CAAC,GAAG,SAAS,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"banner.js","sourceRoot":"","sources":["../../src/cli/banner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,4BAA4B;AAC5B,MAAM,YAAY,GAAG,EAAE,CAAC;AAExB,uCAAuC;AACvC,MAAM,UAAU,GAAG;IACjB,wDAAwD;IACxD,0DAA0D;IAC1D,wDAAwD;IACxD,4DAA4D;IAC5D,wDAAwD;IACxD,0DAA0D;CAC3D,CAAC;AAEF,SAAS,SAAS,CAAC,IAAY,EAAE,KAAa;IAC5C,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC;SACL,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC;SACjD,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,YAAY,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;AAE7E,6CAA6C;AAC7C,MAAM,EAAE,GAAG,UAAU,CAAC;AACtB,MAAM,EAAE,GAAG,UAAU,CAAC;AACtB,MAAM,EAAE,GAAG,SAAS,CAAC;AACrB,MAAM,CAAC,GAAG,SAAS,CAAC;AAEpB,SAAS,eAAe,CAAC,OAAe;IACtC,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,GAAG,CAAC,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,eAAe,CAAC,OAAgB;IACvC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,MAAM,OAAO,GACX,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;IAE1F,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClB,IAAI,OAAO,EAAE,CAAC;QACZ,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QACvC,CAAC;QACD,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,eAAe,CAAC,KAAK,CAAC,CAAC;QACvB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QACD,eAAe,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cliRouter.d.ts","sourceRoot":"","sources":["../../src/cli/cliRouter.ts"],"names":[],"mappings":"AAqFA,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAMxD;AAuHD;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkDpE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjE;AA0CD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB1D"}
1
+ {"version":3,"file":"cliRouter.d.ts","sourceRoot":"","sources":["../../src/cli/cliRouter.ts"],"names":[],"mappings":"AA4DA,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAMxD;AAwID;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4EpE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjE;AA2CD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB1D"}
@@ -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 { implLogin, implListCandidates, implListUnreadCandidates, implListPositions, 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 'jd';
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,20 @@ 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] [--action online-resume]
123
114
  打开指定联系人会话;默认包含匹配,--strict 为精确匹配
124
- boss send-message --text <内容> [--also-request-resume]
125
- 在聊天输入框发送消息;-t --text
126
- boss list-positions
127
- 读取本地 ~/.boss-cli/jd 目录下的岗位 MarkdownWindows %USERPROFILE%\.boss-cli\jd)
128
-
129
- 成功时 stdout 为纯文本;业务失败时进程退出码为 1。
130
-
131
- 数据目录默认:${CACHE_DIR}(浏览器用户数据见环境变量 BOSS_BROWSER_USER_DATA_DIR,未设置时使用其下 browser-data)。
115
+ --action online-resume:额外点击「在线简历」并截图(可选 OCR,见环境变量说明)
116
+ boss send [--text <内容>] [-t <内容>] [--action <操作>]
117
+ --text 与 --action 可同时使用;先发消息再执行 action,中间有默认随机间隔
118
+ --action: request-resume | agree-resume | confuse-resumeconfuse-resume=拒绝附件);须至少 text 或 action 其一
119
+ boss jd
120
+ 读取本地 ~/.boss-cli/jd 目录下的岗位 Markdown(Windows 为 %USERPROFILE%\\.boss-cli\\jd)
121
+ boss skill
122
+ 仅输出本包 Agent Skill 的说明(不安装)
123
+ boss skill install | boss skill uninstall
124
+ 安装或移除唯一 Skill(boss-cli)到 ~/.agents/skills/(可用 BOSS_AGENT_SKILLS_DIR 覆盖根目录)
132
125
  `);
133
126
  }
134
127
  /** 解析 `--key value` / `--key=value` / 布尔 `--flag` */
@@ -190,44 +183,68 @@ export async function executeCommand(argv) {
190
183
  if (argv.length === 0) {
191
184
  die('❌ 空命令');
192
185
  }
193
- const cmd = argv[0];
186
+ const cmd = normalizeSubcommand(argv[0]);
194
187
  const tail = argv.slice(1);
195
188
  configureHeadlessForCommand(cmd);
196
189
  if (cmd === 'login') {
197
190
  return implLogin();
198
191
  }
199
- if (cmd === 'list-candidates') {
192
+ if (cmd === 'list') {
200
193
  const { flags } = parseOpts(tail);
201
194
  if (flags.has('unread')) {
202
195
  return implListUnreadCandidates();
203
196
  }
204
197
  return implListCandidates();
205
198
  }
206
- if (cmd === 'open-chat') {
207
- const { rest, flags } = parseOpts(tail);
199
+ if (cmd === 'chat') {
200
+ const { rest, flags, opts } = parseOpts(tail);
208
201
  const nameArg = rest[0]?.trim();
209
202
  if (!nameArg) {
210
- die('❌ 用法: open-chat <姓名> [--strict]');
203
+ die('❌ 用法: chat <姓名> [--strict] [--action online-resume]');
211
204
  }
212
205
  // 默认模糊匹配(包含);仅在指定 --strict 时做精确匹配
213
206
  const exact = flags.has('strict');
214
- return implOpenChat(nameArg, exact);
207
+ const rawChatAction = (opts.action ?? '').trim().toLowerCase();
208
+ const chatActionMap = {
209
+ 'online-resume': 'online-resume',
210
+ };
211
+ let chatAction;
212
+ if (rawChatAction) {
213
+ chatAction = chatActionMap[rawChatAction];
214
+ if (!chatAction) {
215
+ die(`❌ 未知 --action “${rawChatAction}”,可选:online-resume`);
216
+ }
217
+ }
218
+ return implOpenChat(nameArg, exact, chatAction ? { action: chatAction } : undefined);
215
219
  }
216
- if (cmd === 'send-message') {
217
- const { opts, flags } = parseOpts(tail);
220
+ if (cmd === 'send') {
221
+ const { opts } = parseOpts(tail);
218
222
  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]');
223
+ const raw = (opts.action ?? '').trim().toLowerCase();
224
+ const actionMap = {
225
+ 'request-resume': 'request-resume',
226
+ 'agree-resume': 'agree-resume',
227
+ 'confuse-resume': 'confuse-resume',
228
+ };
229
+ let action;
230
+ if (raw) {
231
+ action = actionMap[raw];
232
+ if (!action) {
233
+ die(`❌ 未知 --action “${raw}”,可选:request-resume | agree-resume | confuse-resume`);
234
+ }
235
+ }
236
+ if (!text && !action) {
237
+ die('❌ 用法: send [--text <消息>] [-t <消息>] [--action request-resume|agree-resume|confuse-resume](至少其一)');
224
238
  }
225
- return implSendMessage(text, alsoRequestResume);
239
+ return implSendMessage({ text, action });
226
240
  }
227
- if (cmd === 'list-positions') {
241
+ if (cmd === 'jd') {
228
242
  return implListPositions();
229
243
  }
230
- die(`❌ 未知命令 “${cmd}”。输入 help 查看用法。`);
244
+ if (cmd === 'skill') {
245
+ return implSkill(tail);
246
+ }
247
+ die(`❌ 未知命令 “${argv[0]}”。输入 help 查看用法。`);
231
248
  }
232
249
  export async function runOneCommand(argv) {
233
250
  if (argv.length === 0) {
@@ -281,7 +298,8 @@ async function runInteractiveLoop() {
281
298
  }
282
299
  finally {
283
300
  rl.close();
284
- await cleanupAfterCommand('interactive', false);
301
+ // 退出交互时进程即将结束,必须 detach + unref 子进程,否则 Chrome 常随 Node 一起退出
302
+ await detachBrowserSession().catch(() => { });
285
303
  }
286
304
  }
287
305
  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"}