@joohw/boss-cli 0.4.0 → 0.4.1

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 (109) hide show
  1. package/README.md +169 -172
  2. package/dist/browser/agent_operating_indicator.js +51 -51
  3. package/dist/browser/human_delay.d.ts +2 -0
  4. package/dist/browser/human_delay.d.ts.map +1 -1
  5. package/dist/browser/human_delay.js +4 -0
  6. package/dist/browser/human_delay.js.map +1 -1
  7. package/dist/cli/cliRouter.js +42 -42
  8. package/dist/common/auth.js +49 -49
  9. package/dist/common/boss_paywall_popup.js +87 -87
  10. package/dist/common/boss_session_lock.d.ts.map +1 -1
  11. package/dist/common/boss_session_lock.js +7 -1
  12. package/dist/common/boss_session_lock.js.map +1 -1
  13. package/dist/common/boss_session_page.d.ts +2 -2
  14. package/dist/common/boss_session_page.d.ts.map +1 -1
  15. package/dist/common/boss_session_page.js +18 -29
  16. package/dist/common/boss_session_page.js.map +1 -1
  17. package/dist/common/boss_sidebar_nav.js +25 -26
  18. package/dist/common/boss_sidebar_nav.js.map +1 -1
  19. package/dist/common/c_resume_capture.d.ts +1 -0
  20. package/dist/common/c_resume_capture.d.ts.map +1 -1
  21. package/dist/common/c_resume_capture.js +69 -32
  22. package/dist/common/c_resume_capture.js.map +1 -1
  23. package/dist/ocr/resume_ocr.d.ts.map +1 -1
  24. package/dist/ocr/resume_ocr.js +4 -1
  25. package/dist/ocr/resume_ocr.js.map +1 -1
  26. package/dist/toolset/action.d.ts.map +1 -1
  27. package/dist/toolset/action.js +11 -7
  28. package/dist/toolset/action.js.map +1 -1
  29. package/dist/toolset/chat.d.ts.map +1 -1
  30. package/dist/toolset/chat.js +246 -230
  31. package/dist/toolset/chat.js.map +1 -1
  32. package/dist/toolset/deep-search.d.ts.map +1 -1
  33. package/dist/toolset/deep-search.js +289 -265
  34. package/dist/toolset/deep-search.js.map +1 -1
  35. package/dist/toolset/greet.d.ts.map +1 -1
  36. package/dist/toolset/greet.js +1 -6
  37. package/dist/toolset/greet.js.map +1 -1
  38. package/dist/toolset/jd.d.ts.map +1 -1
  39. package/dist/toolset/jd.js +132 -136
  40. package/dist/toolset/jd.js.map +1 -1
  41. package/dist/toolset/list.d.ts.map +1 -1
  42. package/dist/toolset/list.js +52 -45
  43. package/dist/toolset/list.js.map +1 -1
  44. package/dist/toolset/preview.d.ts.map +1 -1
  45. package/dist/toolset/preview.js +6 -8
  46. package/dist/toolset/preview.js.map +1 -1
  47. package/dist/toolset/recommend.d.ts.map +1 -1
  48. package/dist/toolset/recommend.js +222 -196
  49. package/dist/toolset/recommend.js.map +1 -1
  50. package/dist/toolset/send.d.ts.map +1 -1
  51. package/dist/toolset/send.js +6 -9
  52. package/dist/toolset/send.js.map +1 -1
  53. package/package.json +65 -65
  54. package/dist/browser/auth.d.ts +0 -33
  55. package/dist/browser/auth.d.ts.map +0 -1
  56. package/dist/browser/auth.js +0 -137
  57. package/dist/browser/auth.js.map +0 -1
  58. package/dist/browser/c_resume_capture.d.ts +0 -11
  59. package/dist/browser/c_resume_capture.d.ts.map +0 -1
  60. package/dist/browser/c_resume_capture.js +0 -76
  61. package/dist/browser/c_resume_capture.js.map +0 -1
  62. package/dist/browser/chat.d.ts +0 -7
  63. package/dist/browser/chat.d.ts.map +0 -1
  64. package/dist/browser/chat.js +0 -155
  65. package/dist/browser/chat.js.map +0 -1
  66. package/dist/browser/withLoggedInPage.d.ts +0 -7
  67. package/dist/browser/withLoggedInPage.d.ts.map +0 -1
  68. package/dist/browser/withLoggedInPage.js +0 -19
  69. package/dist/browser/withLoggedInPage.js.map +0 -1
  70. package/dist/facebook-cli/index.d.ts +0 -2
  71. package/dist/facebook-cli/index.d.ts.map +0 -1
  72. package/dist/facebook-cli/index.js +0 -2
  73. package/dist/facebook-cli/index.js.map +0 -1
  74. package/dist/toolset/c_resume_capture.d.ts +0 -11
  75. package/dist/toolset/c_resume_capture.d.ts.map +0 -1
  76. package/dist/toolset/c_resume_capture.js +0 -76
  77. package/dist/toolset/c_resume_capture.js.map +0 -1
  78. package/dist/toolset/chat_action.d.ts +0 -7
  79. package/dist/toolset/chat_action.d.ts.map +0 -1
  80. package/dist/toolset/chat_action.js +0 -355
  81. package/dist/toolset/chat_action.js.map +0 -1
  82. package/dist/toolset/list_candidates.d.ts +0 -4
  83. package/dist/toolset/list_candidates.d.ts.map +0 -1
  84. package/dist/toolset/list_candidates.js +0 -120
  85. package/dist/toolset/list_candidates.js.map +0 -1
  86. package/dist/toolset/list_positions.d.ts +0 -9
  87. package/dist/toolset/list_positions.d.ts.map +0 -1
  88. package/dist/toolset/list_positions.js +0 -41
  89. package/dist/toolset/list_positions.js.map +0 -1
  90. package/dist/toolset/open_chat.d.ts +0 -3
  91. package/dist/toolset/open_chat.d.ts.map +0 -1
  92. package/dist/toolset/open_chat.js +0 -423
  93. package/dist/toolset/open_chat.js.map +0 -1
  94. package/dist/toolset/recommend_greet.d.ts +0 -2
  95. package/dist/toolset/recommend_greet.d.ts.map +0 -1
  96. package/dist/toolset/recommend_greet.js +0 -27
  97. package/dist/toolset/recommend_greet.js.map +0 -1
  98. package/dist/toolset/search.d.ts +0 -24
  99. package/dist/toolset/search.d.ts.map +0 -1
  100. package/dist/toolset/search.js +0 -682
  101. package/dist/toolset/search.js.map +0 -1
  102. package/dist/toolset/send_message.d.ts +0 -12
  103. package/dist/toolset/send_message.d.ts.map +0 -1
  104. package/dist/toolset/send_message.js +0 -214
  105. package/dist/toolset/send_message.js.map +0 -1
  106. package/dist/toolset/skill.d.ts +0 -13
  107. package/dist/toolset/skill.d.ts.map +0 -1
  108. package/dist/toolset/skill.js +0 -85
  109. package/dist/toolset/skill.js.map +0 -1
@@ -1,9 +1,6 @@
1
- import { sleepRandom } from '../browser/index.js';
2
- import { createWaitManualLoginRequiredText } from '../common/auth.js';
3
1
  import { withBossSessionPage } from '../common/boss_session_page.js';
4
2
  import { clickBossSidebarMenuToPath } from '../common/boss_sidebar_nav.js';
5
3
  const BOSS_CHAT_RECOMMEND_URL = 'https://www.zhipin.com/web/chat/recommend';
6
- const RECOMMEND_SETTLE_MS = { min: 1400, max: 2400 };
7
4
  /** 会话内记录:通过 greet 新出现的推荐卡片(以 geekId 识别) */
8
5
  const sessionGreetProducedGeekIds = new Set();
9
6
  /**
@@ -44,77 +41,109 @@ async function getRecommendFrame(page) {
44
41
  throw new Error('已检测到推荐 iframe,但无法获取其页面上下文(recommendFrame)。');
45
42
  }
46
43
  async function ensureRecommendFrameReady(frame) {
47
- await frame.waitForFunction(`(() => {
48
- const sel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
49
- if (document.querySelector(sel)) return true;
50
- const root = document.querySelector(".card-list, .geek-list-wrap .geek-list");
51
- return !!root;
44
+ await frame.waitForFunction(`(() => {
45
+ const sel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
46
+ if (document.querySelector(sel)) return true;
47
+ const root = document.querySelector(".card-list, .geek-list-wrap .geek-list");
48
+ return !!root;
52
49
  })()`, { timeout: 15_000 });
53
50
  }
54
51
  async function readCurrentRecommendJobLabel(frame) {
55
- return (await frame.evaluate(`(() => {
56
- const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
57
- return norm(document.querySelector(".job-selecter-wrap .ui-dropmenu-label")?.textContent);
52
+ return (await frame.evaluate(`(() => {
53
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
54
+ return norm(document.querySelector(".job-selecter-wrap .ui-dropmenu-label")?.textContent);
58
55
  })()`));
59
56
  }
57
+ async function waitForRecommendJobDropdownReady(frame) {
58
+ await frame.waitForFunction(`(() => {
59
+ const options = document.querySelector(".job-selecter-options");
60
+ if (!(options instanceof HTMLElement)) return false;
61
+ const rect = options.getBoundingClientRect();
62
+ const style = window.getComputedStyle(options);
63
+ if (rect.width <= 0 || rect.height <= 0 || style.display === "none" || style.visibility === "hidden") {
64
+ return false;
65
+ }
66
+ return !!options.querySelector(".top-chat-search .chat-job-search");
67
+ })()`, { timeout: 6_000 });
68
+ }
69
+ async function waitForRecommendJobSearchResults(frame, keyword) {
70
+ await frame.waitForFunction(`((kw) => {
71
+ const norm = (v) => (v ?? "").replace(/\\s+/g, "").trim().toLowerCase();
72
+ const rows = Array.from(document.querySelectorAll(".job-selecter-options .job-list .job-item"));
73
+ if (rows.length === 0) return false;
74
+ if (!kw) return true;
75
+ return rows.some((el) => {
76
+ const label = norm(el.querySelector(".label")?.textContent || el.textContent || "");
77
+ return label.includes(norm(kw));
78
+ });
79
+ })`, { timeout: 8_000 }, keyword);
80
+ }
81
+ async function waitForRecommendJobSelected(frame, expectedLabel) {
82
+ await frame.waitForFunction(`((label) => {
83
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
84
+ const current = norm(document.querySelector(".job-selecter-wrap .ui-dropmenu-label")?.textContent);
85
+ return !!current && current === label;
86
+ })`, { timeout: 8_000 }, expectedLabel);
87
+ await ensureRecommendFrameReady(frame);
88
+ }
60
89
  export async function selectRecommendJob(frame, keyword) {
61
90
  const kw = keyword.trim();
62
91
  if (!kw) {
63
92
  return readCurrentRecommendJobLabel(frame);
64
93
  }
65
94
  const kwLiteral = JSON.stringify(kw);
66
- const opened = (await frame.evaluate(`(() => {
67
- const host = document.querySelector(".job-selecter-wrap .ui-dropmenu-label");
68
- if (!(host instanceof HTMLElement)) return false;
69
- host.scrollIntoView({ block: "center", inline: "nearest" });
70
- host.click();
71
- return true;
95
+ const opened = (await frame.evaluate(`(() => {
96
+ const host = document.querySelector(".job-selecter-wrap .ui-dropmenu-label");
97
+ if (!(host instanceof HTMLElement)) return false;
98
+ host.scrollIntoView({ block: "center", inline: "nearest" });
99
+ host.click();
100
+ return true;
72
101
  })()`));
73
102
  if (!opened) {
74
103
  throw new Error('未找到岗位下拉入口(.job-selecter-wrap .ui-dropmenu-label)。');
75
104
  }
76
- await sleepRandom(380, 820);
77
- const searched = (await frame.evaluate(`(() => {
78
- const kw = ${kwLiteral};
79
- const input = document.querySelector(".job-selecter-options .top-chat-search .chat-job-search");
80
- if (!(input instanceof HTMLInputElement)) return false;
81
- input.focus();
82
- input.value = kw;
83
- input.dispatchEvent(new Event("input", { bubbles: true }));
84
- input.dispatchEvent(new Event("change", { bubbles: true }));
85
- return true;
105
+ await waitForRecommendJobDropdownReady(frame);
106
+ const searched = (await frame.evaluate(`(() => {
107
+ const kw = ${kwLiteral};
108
+ const input = document.querySelector(".job-selecter-options .top-chat-search .chat-job-search");
109
+ if (!(input instanceof HTMLInputElement)) return false;
110
+ input.focus();
111
+ input.value = kw;
112
+ input.dispatchEvent(new Event("input", { bubbles: true }));
113
+ input.dispatchEvent(new Event("change", { bubbles: true }));
114
+ return true;
86
115
  })()`));
87
116
  if (!searched) {
88
117
  throw new Error('已打开岗位下拉,但未找到职位搜索框(.chat-job-search)。');
89
118
  }
90
- await sleepRandom(520, 1080);
91
- const picked = (await frame.evaluate(`(() => {
92
- const kw = ${kwLiteral};
93
- const norm = (v) => (v ?? "").replace(/\\s+/g, "").trim().toLowerCase();
94
- const rows = Array.from(document.querySelectorAll(".job-selecter-options .job-list .job-item"));
95
- if (rows.length === 0) return { ok: false, reason: "empty" };
96
- const target = rows.find((el) => {
97
- const label = norm(el.querySelector(".label")?.textContent || el.textContent || "");
98
- return label.includes(norm(kw));
99
- });
100
- if (!(target instanceof HTMLElement)) return { ok: false, reason: "not_found" };
101
- const label = (target.querySelector(".label")?.textContent ?? target.textContent ?? "")
102
- .replace(/\\s+/g, " ")
103
- .trim();
104
- target.scrollIntoView({ block: "center", inline: "nearest" });
105
- target.click();
106
- return { ok: true, label };
119
+ await waitForRecommendJobSearchResults(frame, kw);
120
+ const picked = (await frame.evaluate(`(() => {
121
+ const kw = ${kwLiteral};
122
+ const norm = (v) => (v ?? "").replace(/\\s+/g, "").trim().toLowerCase();
123
+ const rows = Array.from(document.querySelectorAll(".job-selecter-options .job-list .job-item"));
124
+ if (rows.length === 0) return { ok: false, reason: "empty" };
125
+ const target = rows.find((el) => {
126
+ const label = norm(el.querySelector(".label")?.textContent || el.textContent || "");
127
+ return label.includes(norm(kw));
128
+ });
129
+ if (!(target instanceof HTMLElement)) return { ok: false, reason: "not_found" };
130
+ const label = (target.querySelector(".label")?.textContent ?? target.textContent ?? "")
131
+ .replace(/\\s+/g, " ")
132
+ .trim();
133
+ target.scrollIntoView({ block: "center", inline: "nearest" });
134
+ target.click();
135
+ return { ok: true, label };
107
136
  })()`));
108
137
  if (!picked.ok) {
109
138
  throw new Error(`未找到匹配岗位“${kw}”。`);
110
139
  }
111
- await sleepRandom(900, 1500);
112
- return picked.label ?? kw;
140
+ const label = picked.label ?? kw;
141
+ await waitForRecommendJobSelected(frame, label);
142
+ return label;
113
143
  }
114
144
  export async function ensureInRecommendPage(page) {
115
145
  if (!isBossChatRecommendUrl(page.url())) {
116
146
  await clickBossSidebarMenuToPath(page, '推荐', '/web/chat/recommend');
117
- await sleepRandom(RECOMMEND_SETTLE_MS.min, RECOMMEND_SETTLE_MS.max);
118
147
  }
119
148
  if (!isBossChatRecommendUrl(page.url())) {
120
149
  throw new Error('通过侧边栏“推荐”进入页面失败,请确认已登录并可访问 /web/chat/recommend。');
@@ -135,71 +164,71 @@ export async function assertRecommendPageReadyForPreview(page) {
135
164
  return frame;
136
165
  }
137
166
  export async function readRecommendList(frame) {
138
- return (await frame.evaluate(`(() => {
139
- const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
140
- const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
141
- const cards = Array.from(document.querySelectorAll(cardSel));
142
- return cards.map((item) => {
143
- const inner = item.querySelector(".card-inner") || item;
144
- const wrap = item.matches(".candidate-card-wrap")
145
- ? item
146
- : item.querySelector(".candidate-card-wrap");
147
- const hasViewed = Boolean(
148
- (wrap && wrap.classList.contains("has-viewed")) ||
149
- (inner && inner.classList.contains("has-viewed")),
150
- );
151
- const geekId =
152
- inner?.getAttribute("data-geekid") ??
153
- inner?.getAttribute("data-geek") ??
154
- "";
155
- const name =
156
- norm(item.querySelector(".name-wrap .name")?.textContent) ||
157
- norm(item.querySelector(".name")?.textContent);
158
- const salary = norm(item.querySelector(".salary-wrap span")?.textContent);
159
- const baseInfo = Array.from(item.querySelectorAll(".base-info span"))
160
- .map((el) => norm(el.textContent))
161
- .filter(Boolean)
162
- .join(" / ");
163
- const expect =
164
- norm(item.querySelector(".expect-wrap .content")?.textContent) ||
165
- norm(item.querySelector(".expect-wrap .join-text-wrap")?.textContent);
166
- const experience = norm(item.querySelector(".experience-wrap .join-text-wrap")?.textContent);
167
- const advantage = norm(item.querySelector(".geek-desc .content")?.textContent);
168
- const highlightLabels = [
169
- ...Array.from(item.querySelectorAll(".operate .labels .label")),
170
- ...Array.from(item.querySelectorAll(".tags-wrap .tag-item")),
171
- ]
172
- .map((el) => norm(el.textContent))
173
- .filter(Boolean);
174
- const highlights = [...new Set(highlightLabels)];
175
- const greetBtn = item.querySelector(".button-chat-wrap .btn.btn-greet");
176
- const btnCls = greetBtn?.className ?? "";
177
- const disabled =
178
- !greetBtn ||
179
- /disabled|forbid|ban/i.test(btnCls) ||
180
- greetBtn.getAttribute("disabled") !== null;
181
- const hasHistoryChat = (() => {
182
- if (item.querySelector(".tooltip-wrap.chat-history .icon-chat-history")) return true;
183
- const uses = Array.from(item.querySelectorAll("use"));
184
- return uses.some((u) => {
185
- const href = u.getAttribute("href") ?? u.getAttributeNS("http://www.w3.org/1999/xlink", "href") ?? "";
186
- return href.includes("icon-chat-history");
187
- });
188
- })();
189
- return {
190
- geekId,
191
- name,
192
- salary,
193
- baseInfo,
194
- expect,
195
- experience,
196
- advantage,
197
- highlights,
198
- canGreet: !disabled,
199
- hasHistoryChat,
200
- hasViewed,
201
- };
202
- }).filter((x) => x.name);
167
+ return (await frame.evaluate(`(() => {
168
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
169
+ const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
170
+ const cards = Array.from(document.querySelectorAll(cardSel));
171
+ return cards.map((item) => {
172
+ const inner = item.querySelector(".card-inner") || item;
173
+ const wrap = item.matches(".candidate-card-wrap")
174
+ ? item
175
+ : item.querySelector(".candidate-card-wrap");
176
+ const hasViewed = Boolean(
177
+ (wrap && wrap.classList.contains("has-viewed")) ||
178
+ (inner && inner.classList.contains("has-viewed")),
179
+ );
180
+ const geekId =
181
+ inner?.getAttribute("data-geekid") ??
182
+ inner?.getAttribute("data-geek") ??
183
+ "";
184
+ const name =
185
+ norm(item.querySelector(".name-wrap .name")?.textContent) ||
186
+ norm(item.querySelector(".name")?.textContent);
187
+ const salary = norm(item.querySelector(".salary-wrap span")?.textContent);
188
+ const baseInfo = Array.from(item.querySelectorAll(".base-info span"))
189
+ .map((el) => norm(el.textContent))
190
+ .filter(Boolean)
191
+ .join(" / ");
192
+ const expect =
193
+ norm(item.querySelector(".expect-wrap .content")?.textContent) ||
194
+ norm(item.querySelector(".expect-wrap .join-text-wrap")?.textContent);
195
+ const experience = norm(item.querySelector(".experience-wrap .join-text-wrap")?.textContent);
196
+ const advantage = norm(item.querySelector(".geek-desc .content")?.textContent);
197
+ const highlightLabels = [
198
+ ...Array.from(item.querySelectorAll(".operate .labels .label")),
199
+ ...Array.from(item.querySelectorAll(".tags-wrap .tag-item")),
200
+ ]
201
+ .map((el) => norm(el.textContent))
202
+ .filter(Boolean);
203
+ const highlights = [...new Set(highlightLabels)];
204
+ const greetBtn = item.querySelector(".button-chat-wrap .btn.btn-greet");
205
+ const btnCls = greetBtn?.className ?? "";
206
+ const disabled =
207
+ !greetBtn ||
208
+ /disabled|forbid|ban/i.test(btnCls) ||
209
+ greetBtn.getAttribute("disabled") !== null;
210
+ const hasHistoryChat = (() => {
211
+ if (item.querySelector(".tooltip-wrap.chat-history .icon-chat-history")) return true;
212
+ const uses = Array.from(item.querySelectorAll("use"));
213
+ return uses.some((u) => {
214
+ const href = u.getAttribute("href") ?? u.getAttributeNS("http://www.w3.org/1999/xlink", "href") ?? "";
215
+ return href.includes("icon-chat-history");
216
+ });
217
+ })();
218
+ return {
219
+ geekId,
220
+ name,
221
+ salary,
222
+ baseInfo,
223
+ expect,
224
+ experience,
225
+ advantage,
226
+ highlights,
227
+ canGreet: !disabled,
228
+ hasHistoryChat,
229
+ hasViewed,
230
+ };
231
+ }).filter((x) => x.name);
203
232
  })()`));
204
233
  }
205
234
  export function renderRecommendList(candidates) {
@@ -252,44 +281,44 @@ export function renderRecommendList(candidates) {
252
281
  }
253
282
  export async function clickGreet(frame, target) {
254
283
  const targetLiteral = JSON.stringify(target.trim());
255
- const result = (await frame.evaluate(`(() => {
256
- const raw = ${targetLiteral};
257
- const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
258
- const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
259
- const cards = Array.from(document.querySelectorAll(cardSel));
260
- if (cards.length === 0) {
261
- return { kind: "empty" };
262
- }
263
- const targetCard = cards.find((item) => {
264
- const name =
265
- norm(item.querySelector(".name-wrap .name")?.textContent) ||
266
- norm(item.querySelector(".name")?.textContent);
267
- return name === raw || name.includes(raw);
268
- }) ?? null;
269
- if (!targetCard) {
270
- return { kind: "not_found", target: raw };
271
- }
272
-
273
- const name =
274
- norm(targetCard.querySelector(".name-wrap .name")?.textContent) ||
275
- norm(targetCard.querySelector(".name")?.textContent);
276
- const inner = targetCard.querySelector(".card-inner") || targetCard;
277
- const geekId =
278
- inner?.getAttribute("data-geekid") ??
279
- inner?.getAttribute("data-geek") ??
280
- "";
281
- const btn = targetCard.querySelector(".button-chat-wrap .btn.btn-greet");
282
- if (!(btn instanceof HTMLElement)) {
283
- return { kind: "no_btn", name };
284
- }
285
- const cls = btn.className ?? "";
286
- const disabled = /disabled|forbid|ban/i.test(cls) || btn.getAttribute("disabled") !== null;
287
- if (disabled) {
288
- return { kind: "disabled", name };
289
- }
290
- btn.scrollIntoView({ block: "center", inline: "nearest" });
291
- btn.click();
292
- return { kind: "clicked", name, geekId };
284
+ const result = (await frame.evaluate(`(() => {
285
+ const raw = ${targetLiteral};
286
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
287
+ const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
288
+ const cards = Array.from(document.querySelectorAll(cardSel));
289
+ if (cards.length === 0) {
290
+ return { kind: "empty" };
291
+ }
292
+ const targetCard = cards.find((item) => {
293
+ const name =
294
+ norm(item.querySelector(".name-wrap .name")?.textContent) ||
295
+ norm(item.querySelector(".name")?.textContent);
296
+ return name === raw || name.includes(raw);
297
+ }) ?? null;
298
+ if (!targetCard) {
299
+ return { kind: "not_found", target: raw };
300
+ }
301
+
302
+ const name =
303
+ norm(targetCard.querySelector(".name-wrap .name")?.textContent) ||
304
+ norm(targetCard.querySelector(".name")?.textContent);
305
+ const inner = targetCard.querySelector(".card-inner") || targetCard;
306
+ const geekId =
307
+ inner?.getAttribute("data-geekid") ??
308
+ inner?.getAttribute("data-geek") ??
309
+ "";
310
+ const btn = targetCard.querySelector(".button-chat-wrap .btn.btn-greet");
311
+ if (!(btn instanceof HTMLElement)) {
312
+ return { kind: "no_btn", name };
313
+ }
314
+ const cls = btn.className ?? "";
315
+ const disabled = /disabled|forbid|ban/i.test(cls) || btn.getAttribute("disabled") !== null;
316
+ if (disabled) {
317
+ return { kind: "disabled", name };
318
+ }
319
+ btn.scrollIntoView({ block: "center", inline: "nearest" });
320
+ btn.click();
321
+ return { kind: "clicked", name, geekId };
293
322
  })()`));
294
323
  switch (result.kind) {
295
324
  case 'empty':
@@ -325,49 +354,49 @@ export function markGreetProduced(before, after) {
325
354
  export async function openRecommendResumePreview(frame, target) {
326
355
  const raw = target.trim();
327
356
  const targetLiteral = JSON.stringify(raw);
328
- return (await frame.evaluate(`(() => {
329
- const raw = ${targetLiteral};
330
- const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
331
- const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
332
- const cards = Array.from(document.querySelectorAll(cardSel));
333
- if (cards.length === 0) return false;
334
- const targetCard = cards.find((item) => {
335
- const name =
336
- norm(item.querySelector(".name-wrap .name")?.textContent) ||
337
- norm(item.querySelector(".name")?.textContent);
338
- return name === raw || name.includes(raw);
339
- }) ?? null;
340
- if (!targetCard) return false;
341
-
342
- function tryOpen(el) {
343
- if (!(el instanceof HTMLElement)) return false;
344
- if (el.classList.contains("disabled")) return false;
345
- const st = window.getComputedStyle(el);
346
- if (st.pointerEvents === "none" || Number(st.opacity) < 0.3) return false;
347
- el.scrollIntoView({ block: "center", inline: "nearest" });
348
- el.click();
349
- return true;
350
- }
351
-
352
- const inner = targetCard.querySelector(".card-inner");
353
- if (inner instanceof HTMLElement) {
354
- inner.scrollIntoView({ block: "center", inline: "nearest" });
355
- inner.click();
356
- return true;
357
- }
358
-
359
- const resumeOnline = targetCard.querySelector("a.resume-btn-online");
360
- if (tryOpen(resumeOnline)) return true;
361
- const hrefResume = targetCard.querySelector('a[href*="c-resume"], a[href*="frame/c-resume"]');
362
- if (tryOpen(hrefResume)) return true;
363
-
364
- const links = Array.from(targetCard.querySelectorAll("a, button, .btn")).filter((node) => {
365
- const t = norm(node.textContent);
366
- return /在线简历|查看简历|简历预览|预览/.test(t);
367
- });
368
- if (links.length > 0 && tryOpen(links[0])) return true;
369
-
370
- return false;
357
+ return (await frame.evaluate(`(() => {
358
+ const raw = ${targetLiteral};
359
+ const norm = (v) => (v ?? "").replace(/\\s+/g, " ").trim();
360
+ const cardSel = ${JSON.stringify(RECOMMEND_CARD_ROOT_SELECTOR)};
361
+ const cards = Array.from(document.querySelectorAll(cardSel));
362
+ if (cards.length === 0) return false;
363
+ const targetCard = cards.find((item) => {
364
+ const name =
365
+ norm(item.querySelector(".name-wrap .name")?.textContent) ||
366
+ norm(item.querySelector(".name")?.textContent);
367
+ return name === raw || name.includes(raw);
368
+ }) ?? null;
369
+ if (!targetCard) return false;
370
+
371
+ function tryOpen(el) {
372
+ if (!(el instanceof HTMLElement)) return false;
373
+ if (el.classList.contains("disabled")) return false;
374
+ const st = window.getComputedStyle(el);
375
+ if (st.pointerEvents === "none" || Number(st.opacity) < 0.3) return false;
376
+ el.scrollIntoView({ block: "center", inline: "nearest" });
377
+ el.click();
378
+ return true;
379
+ }
380
+
381
+ const inner = targetCard.querySelector(".card-inner");
382
+ if (inner instanceof HTMLElement) {
383
+ inner.scrollIntoView({ block: "center", inline: "nearest" });
384
+ inner.click();
385
+ return true;
386
+ }
387
+
388
+ const resumeOnline = targetCard.querySelector("a.resume-btn-online");
389
+ if (tryOpen(resumeOnline)) return true;
390
+ const hrefResume = targetCard.querySelector('a[href*="c-resume"], a[href*="frame/c-resume"]');
391
+ if (tryOpen(hrefResume)) return true;
392
+
393
+ const links = Array.from(targetCard.querySelectorAll("a, button, .btn")).filter((node) => {
394
+ const t = norm(node.textContent);
395
+ return /在线简历|查看简历|简历预览|预览/.test(t);
396
+ });
397
+ if (links.length > 0 && tryOpen(links[0])) return true;
398
+
399
+ return false;
371
400
  })()`));
372
401
  }
373
402
  export async function runRecommend(jobKeyword) {
@@ -382,9 +411,6 @@ export async function runRecommend(jobKeyword) {
382
411
  }
383
412
  catch (e) {
384
413
  const message = e instanceof Error ? e.message : String(e);
385
- if (e instanceof Error && e.message.includes('浏览器会话尚未初始化')) {
386
- throw new Error(createWaitManualLoginRequiredText('查看推荐列表'));
387
- }
388
414
  throw new Error(`读取推荐列表失败:${message}`);
389
415
  }
390
416
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../../src/toolset/recommend.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE3E,MAAM,uBAAuB,GAAG,2CAA2C,CAAC;AAC5E,MAAM,mBAAmB,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAW,CAAC;AAgB9D,2CAA2C;AAC3C,MAAM,2BAA2B,GAAG,IAAI,GAAG,EAAU,CAAC;AAEtD;;;GAGG;AACH,MAAM,4BAA4B,GAChC,oEAAoE,CAAC;AAEvE,MAAM,UAAU,sBAAsB,CAAC,GAAW;IAChD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC;QAChD,OAAO,CAAC,KAAK,qBAAqB,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,IAAU;IACzC,MAAM,IAAI,CAAC,eAAe,CAAC,+BAA+B,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACjF,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,gBAAgB,CAAC,IAAI,IAAI,CAAC;IACrF,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,CAAC;YACH,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,IAAI,IAAI,CAAC;IACb,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAChE,CAAC;AAED,KAAK,UAAU,yBAAyB,CAAC,KAAY;IACnD,MAAM,KAAK,CAAC,eAAe,CACzB;oBACgB,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC;;;;SAIvD,EACL,EAAE,OAAO,EAAE,MAAM,EAAE,CACpB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,4BAA4B,CAAC,KAAY;IACtD,OAAO,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC;;;OAGxB,CAAC,CAAW,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,KAAY,EAAE,OAAe;IACpE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAErC,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC;;;;;;OAMhC,CAAC,CAAY,CAAC;IACnB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,MAAM,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE5B,MAAM,QAAQ,GAAG,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC;iBACxB,SAAS;;;;;;;;OAQnB,CAAC,CAAY,CAAC;IACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE7B,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC;iBACtB,SAAS;;;;;;;;;;;;;;;OAenB,CAAC,CAAqD,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAAU;IACpD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACxC,MAAM,0BAA0B,CAAC,IAAI,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC;QACpE,MAAM,WAAW,CAAC,mBAAmB,CAAC,GAAG,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,kCAAkC,CAAC,IAAU;IACjE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC9C,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,yBAAyB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,KAAY;IAClD,OAAO,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC;;sBAET,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+D3D,CAAC,CAAyB,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,UAAgC;IAClE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,aAAa,GAAyB,EAAE,CAAC;IAC/C,MAAM,MAAM,GAAyB,EAAE,CAAC;IACxC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,MAAM,IAAI,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,CAAC,KAAa,EAAE,KAA2B,EAAY,EAAE;QAC3E,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACrB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACvB,MAAM,aAAa,GACjB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC3E,MAAM,MAAM,GAAG;gBACb,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;gBAChC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;gBACpC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;gBAChC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE;gBACxC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBAC/B,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;aAC7B;iBACE,MAAM,CAAC,OAAO,CAAC;iBACf,IAAI,CAAC,GAAG,CAAC,CAAC;YACb,MAAM,cAAc,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/D,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,KAAK,cAAc,IAAI,MAAM,EAAE,CAAC,CAAC;YAC1D,KAAK,CAAC,IAAI,CAAC,WAAW,aAAa,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,GAAG,CAAC,IAAI,CAAC,iBAAiB,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;IAClD,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACb,GAAG,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC;IAEpD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,KAAY,EACZ,MAAc;IAEd,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,QAAQ,CAClC;oBACgB,aAAa;;wBAET,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SAmC3D,CACN,CAKoD,CAAC;IAEtD,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,OAAO;YACV,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrC,KAAK,WAAW;YACd,MAAM,IAAI,KAAK,CAAC,eAAe,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAClD,KAAK,QAAQ;YACX,MAAM,IAAI,KAAK,CAAC,OAAO,MAAM,CAAC,IAAI,kBAAkB,CAAC,CAAC;QACxD,KAAK,UAAU;YACb,MAAM,IAAI,KAAK,CAAC,OAAO,MAAM,CAAC,IAAI,QAAQ,CAAC,CAAC;QAC9C,KAAK,SAAS;YACZ,OAAO;gBACL,OAAO,EAAE,MAAM,MAAM,CAAC,IAAI,WAAW;aACtC,CAAC;QACJ,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,EAAE,GAAU,MAAM,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,QAAQ,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,MAA4B,EAC5B,KAA2B;IAE3B,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IACvE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAClB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,2BAA2B,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,KAAY,EAAE,MAAc;IAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,CAAC,MAAM,KAAK,CAAC,QAAQ,CAAC;kBACb,aAAa;;sBAET,IAAI,CAAC,SAAS,CAAC,4BAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwC3D,CAAC,CAAY,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAmB;IACpD,IAAI,CAAC;QACH,OAAO,MAAM,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YAC9C,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/E,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC9D,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACzC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"recommend.js","sourceRoot":"","sources":["../../src/toolset/recommend.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/toolset/send.ts"],"names":[],"mappings":"AAYA,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CA4DzF"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../src/toolset/send.ts"],"names":[],"mappings":"AAaA,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,CAyDzF"}
@@ -1,5 +1,5 @@
1
- import { randomIntInclusive, SEND_AFTER_ENTER_MS, SEND_INPUT_CLICK_MS, SEND_TYPING_GAP_MS, sleepRandom, typeTextWithRandomKeyDelay, } from '../browser/index.js';
2
- import { createWaitManualLoginRequiredText, isBossChatIndexUrl } from '../common/auth.js';
1
+ import { randomIntInclusive, selectAllModifierKey, SEND_AFTER_ENTER_MS, SEND_INPUT_CLICK_MS, SEND_TYPING_GAP_MS, sleepRandom, typeTextWithRandomKeyDelay, } from '../browser/index.js';
2
+ import { isBossChatIndexUrl } from '../common/auth.js';
3
3
  import { withBossSessionPage } from '../common/boss_session_page.js';
4
4
  import { runRequestAttachmentResume } from './action.js';
5
5
  export async function runSendChatMessage(options) {
@@ -23,9 +23,10 @@ export async function runSendChatMessage(options) {
23
23
  delay: randomIntInclusive(SEND_INPUT_CLICK_MS.min, SEND_INPUT_CLICK_MS.max),
24
24
  });
25
25
  await sleepRandom(60, 220, signal);
26
- await page.keyboard.down('Control');
26
+ const selectAllMod = selectAllModifierKey();
27
+ await page.keyboard.down(selectAllMod);
27
28
  await page.keyboard.press('KeyA');
28
- await page.keyboard.up('Control');
29
+ await page.keyboard.up(selectAllMod);
29
30
  await sleepRandom(45, 180, signal);
30
31
  await page.keyboard.press('Backspace');
31
32
  await sleepRandom(80, 260, signal);
@@ -42,14 +43,10 @@ export async function runSendChatMessage(options) {
42
43
  });
43
44
  }
44
45
  catch (e) {
45
- const message = e instanceof Error ? e.message : String(e);
46
46
  if (e instanceof Error) {
47
- if (e.message.includes('浏览器会话尚未初始化')) {
48
- throw new Error(createWaitManualLoginRequiredText('发送消息'));
49
- }
50
47
  throw e;
51
48
  }
52
- throw new Error(`发送消息失败:${message}`);
49
+ throw new Error(`发送消息失败:${String(e)}`);
53
50
  }
54
51
  }
55
52
  //# sourceMappingURL=send.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/toolset/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../src/toolset/send.ts"],"names":[],"mappings":"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"}