job-pro 1.0.79 → 1.0.81

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 (2) hide show
  1. package/dist/index.js +30 -7
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -61,7 +61,28 @@ import { createRequire as require_createRequire } from "node:module";
61
61
  function require_module() {
62
62
  return { createRequire: require_createRequire };
63
63
  }
64
- const VERSION = "1.0.7";
64
+ // Read version from package.json at module load so it can never drift
65
+ // from the publish. Tries the bundled package.json (cli/package.json
66
+ // next to dist/) first, then falls back to a hardcoded sentinel.
67
+ const VERSION = (() => {
68
+ try {
69
+ const here = dirname(fileURLToPath(import.meta.url));
70
+ // cli/dist/index.js → cli/package.json is two levels up
71
+ const candidates = [
72
+ join(here, "..", "package.json"),
73
+ join(here, "..", "..", "package.json"),
74
+ ];
75
+ for (const p of candidates) {
76
+ if (existsSync(p)) {
77
+ const pkg = JSON.parse(readFileSync(p, "utf8"));
78
+ if (pkg.name === "job-pro" && typeof pkg.version === "string")
79
+ return pkg.version;
80
+ }
81
+ }
82
+ }
83
+ catch { /* fall through */ }
84
+ return "unknown";
85
+ })();
65
86
  const COMPANIES = [
66
87
  { key: "tencent", family: "Bespoke", source: "join.qq.com", label: "Tencent / 腾讯" },
67
88
  { key: "bytedance", family: "Bespoke", source: "jobs.bytedance.com", label: "ByteDance / 字节跳动" },
@@ -1346,17 +1367,19 @@ async function main() {
1346
1367
  };
1347
1368
  console.log(`\njob-pro recon — endpoint probe across ${results.length} adapters`);
1348
1369
  if (!summary) {
1349
- console.log(` (anon POST with {} body; schema-verified adapters tagged 🟢)\n`);
1370
+ console.log(` (anon POST with {} body; schema-verified 🟢, session captured 🔐)\n`);
1350
1371
  for (const r of results) {
1351
1372
  const tag = r.status ? `${r.status}` : "—";
1352
1373
  const vTag = r.already_verified ? " 🟢" : "";
1353
- // If the schema asserts endpoint_verified: true but the anon probe
1354
- // sees 404/HTML, the framework's response is misleading schema's
1355
- // probe round was deeper. Surface a icon instead of ✗ to signal
1356
- // "schema says verified, probe disagrees".
1374
+ // Session presence (~/.jobpro/<co>.session.json). 🔐 means user
1375
+ // already captured; 🚫 means they need to run `job-pro extension`.
1376
+ // multipart-anon adapters don't need a session so no tag.
1377
+ const isAnon = r.submit_kind === "multipart-anon";
1378
+ const isExternal = r.classification === "external";
1379
+ const sessTag = isAnon || isExternal ? " " : (loadSession(r.company) ? "🔐" : "🚫");
1357
1380
  const probeOK = r.classification === "verified-real" || r.classification === "external";
1358
1381
  const icon = r.already_verified && !probeOK ? "⚠" : ICON[r.classification];
1359
- console.log(` ${icon} ${r.company.padEnd(width)} ${tag.padEnd(4)} ${r.classification.padEnd(17)}${vTag} ${r.detail}`);
1382
+ console.log(` ${icon} ${r.company.padEnd(width)} ${sessTag} ${tag.padEnd(4)} ${r.classification.padEnd(17)}${vTag} ${r.detail}`);
1360
1383
  }
1361
1384
  }
1362
1385
  console.log(`\n Tally:`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "job-pro",
3
- "version": "1.0.79",
3
+ "version": "1.0.81",
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",