job-pro 1.0.81 → 1.0.83

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/apply.js CHANGED
@@ -554,9 +554,10 @@ async function buildMultipartForm(staged) {
554
554
  * → { code:0, data:{ upload_url, attachment_id, fields:{…} } }
555
555
  * 2. POST/PUT to data.upload_url (lf-package-cn.feishucdn.com or similar)
556
556
  * multipart/form-data with fields[…] + file bytes
557
- * 3. POST {host}/api/v1/resume/apply
558
- * body: { post_id, attachment_id, applicant_info:{ name, email, phone } }
559
- * { code:0, data:{ application_id } }
557
+ * 3. POST {host}/api/v1/user/applications (was /api/v1/resume/apply
558
+ * pre-1.0.62; the real route discovered via atsx-throne SPA chunk
559
+ * dump). Body: { post_id, attachment_id, applicant_info:{ name,
560
+ * email, phone } } → { code:0, data:{ application_id } }
560
561
  *
561
562
  * Session.json must contain valid Feishu cookies (typically `_csrf_token`,
562
563
  * `lark_oapi_session`, `passport_csrf_token`) for the host.
package/dist/index.js CHANGED
@@ -833,6 +833,11 @@ async function runCompany(adapter, company, rawArgs) {
833
833
  return emit({ mode: "really-submit", staged, submit_kind: kind, session_used: true, result }, compact);
834
834
  }
835
835
  if (!isGenericMultipart) {
836
+ // Reachable only if a schema returns a SubmitKind that isn't in the
837
+ // current taxonomy (multipart-anon/session/feishu-3-step/moka-aes/
838
+ // beisen-wecruit/beisen-italent/cdp-real-browser/external). The
839
+ // SubmitKind type permits `(string & {})` extensibility, so a future
840
+ // contributor adding a new family without wiring it would land here.
836
841
  return emit({
837
842
  ok: false,
838
843
  source: company,
@@ -841,12 +846,12 @@ async function runCompany(adapter, company, rawArgs) {
841
846
  staged,
842
847
  submit_kind: kind,
843
848
  submit_notes: sr.schema.submit_notes,
844
- message: `submit_kind="${kind}" this adapter family doesn't yet have an ` +
845
- `executor wired. The application schema + submit endpoint are ` +
846
- `documented (see submit_notes), but firing the submission needs a ` +
847
- `family-specific multi-step flow (token exchange / AES envelope / ` +
848
- `CDP / etc.). Landing per-family executors is the next iteration of ` +
849
- `Phase 2. Use --debug-submit-to <url> to inspect what we have today.`,
849
+ message: `submit_kind="${kind}" is unknown no wired executor. The 7 ` +
850
+ `current families are: multipart-anon, multipart-session, ` +
851
+ `feishu-3-step, moka-aes, beisen-wecruit, beisen-italent, ` +
852
+ `cdp-real-browser. To add a new family, wire an executor in ` +
853
+ `cli/src/apply.ts. Use --debug-submit-to <url> in the meantime ` +
854
+ `to verify the wire format you'd want.`,
850
855
  }, compact);
851
856
  }
852
857
  // Non-anon multipart families need session.json.
@@ -1288,13 +1293,16 @@ async function main() {
1288
1293
  const results = await Promise.all(scope.map(async (company) => {
1289
1294
  // lilith uses CDP (puppeteer launches Chrome) — its withTimeout
1290
1295
  // returns but the browser handle keeps the event loop alive, so
1291
- // the process never exits. Skip it explicitly; users who want to
1292
- // recon lilith can scope --companies=lilith and accept the hang.
1293
- if (company === "lilith") {
1296
+ // the process never exits during a 50-company sweep. Skip when
1297
+ // we're running a default/broad sweep; only probe lilith if the
1298
+ // user explicitly scoped --companies and lilith is the ONLY one
1299
+ // (so they're knowingly waiting for a CDP launch).
1300
+ const lilithScopedExplicit = scope.length === 1 && scope[0] === "lilith";
1301
+ if (company === "lilith" && !lilithScopedExplicit) {
1294
1302
  // lilith is in ENDPOINT_VERIFIED but we skip the probe (would
1295
1303
  // hang puppeteer). Surface the already_verified status so the
1296
1304
  // icon shows ⚠ ("schema verified, probe skipped") not "?".
1297
- return { company, classification: "probe-error", detail: "skipped — CDP adapter (puppeteer); pass --companies=lilith explicitly to probe", already_verified: true };
1305
+ return { company, classification: "probe-error", detail: "skipped — CDP adapter (puppeteer); pass --companies=lilith alone to probe", already_verified: true };
1298
1306
  }
1299
1307
  const adapter = ADAPTERS[company];
1300
1308
  if (!adapter)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "job-pro",
3
- "version": "1.0.81",
3
+ "version": "1.0.83",
4
4
  "description": "Query Chinese big-tech campus recruiting + auto-apply from your terminal. 50 companies, all 50 live (46 via official APIs, 4 via Liepin third-party fallback). 45/50 with end-to-end verified apply endpoints; 5 structurally-external (Liepin IM × 4 + Unitree WeChat). No signup, no token, no server.",
5
5
  "homepage": "https://job.ha7ch.com",
6
6
  "repository": "https://github.com/HA7CH/job-pro",