job-pro 1.0.75 → 1.0.77
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/index.js +21 -13
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -198,6 +198,8 @@ USAGE
|
|
|
198
198
|
job-pro recon [--companies a,b,c] probe every adapter's submit_endpoint
|
|
199
199
|
(classifies as verified-real / 404 /
|
|
200
200
|
html-fallthrough / external)
|
|
201
|
+
[--summary] for tally only
|
|
202
|
+
[--compact] for JSON
|
|
201
203
|
job-pro profile init [--interactive] [--force]
|
|
202
204
|
write ~/.jobpro/profile.json
|
|
203
205
|
--interactive fills it via prompts.
|
|
@@ -1278,6 +1280,7 @@ async function main() {
|
|
|
1278
1280
|
// upstream renamed it) and is the same probe routine I used by hand
|
|
1279
1281
|
// to populate endpoint_verified for the 15 verified adapters.
|
|
1280
1282
|
const compact = args.includes("--compact");
|
|
1283
|
+
const summary = args.includes("--summary");
|
|
1281
1284
|
const { args: aCompanies, value: companiesStr } = popFlagValue(args, "--companies");
|
|
1282
1285
|
void aCompanies;
|
|
1283
1286
|
const scope = companiesStr
|
|
@@ -1313,7 +1316,10 @@ async function main() {
|
|
|
1313
1316
|
// the process never exits. Skip it explicitly; users who want to
|
|
1314
1317
|
// recon lilith can scope --companies=lilith and accept the hang.
|
|
1315
1318
|
if (company === "lilith") {
|
|
1316
|
-
|
|
1319
|
+
// lilith is in ENDPOINT_VERIFIED but we skip the probe (would
|
|
1320
|
+
// hang puppeteer). Surface the already_verified status so the
|
|
1321
|
+
// icon shows ⚠ ("schema verified, probe skipped") not "?".
|
|
1322
|
+
return { company, classification: "probe-error", detail: "skipped — CDP adapter (puppeteer); pass --companies=lilith explicitly to probe", already_verified: true };
|
|
1317
1323
|
}
|
|
1318
1324
|
const adapter = ADAPTERS[company];
|
|
1319
1325
|
if (!adapter)
|
|
@@ -1365,7 +1371,7 @@ async function main() {
|
|
|
1365
1371
|
};
|
|
1366
1372
|
}
|
|
1367
1373
|
catch (err) {
|
|
1368
|
-
return { company, submit_kind: schema.submit_kind, submit_endpoint: url, classification: "probe-error", detail: err instanceof Error ? err.message : String(err) };
|
|
1374
|
+
return { company, submit_kind: schema.submit_kind, submit_endpoint: url, classification: "probe-error", detail: err instanceof Error ? err.message : String(err), already_verified: schema.endpoint_verified === true };
|
|
1369
1375
|
}
|
|
1370
1376
|
}));
|
|
1371
1377
|
if (compact) {
|
|
@@ -1385,17 +1391,19 @@ async function main() {
|
|
|
1385
1391
|
"probe-error": "?",
|
|
1386
1392
|
};
|
|
1387
1393
|
console.log(`\njob-pro recon — endpoint probe across ${results.length} adapters`);
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
const
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1394
|
+
if (!summary) {
|
|
1395
|
+
console.log(` (anon POST with {} body; schema-verified adapters tagged 🟢)\n`);
|
|
1396
|
+
for (const r of results) {
|
|
1397
|
+
const tag = r.status ? `${r.status}` : "—";
|
|
1398
|
+
const vTag = r.already_verified ? " 🟢" : "";
|
|
1399
|
+
// If the schema asserts endpoint_verified: true but the anon probe
|
|
1400
|
+
// sees 404/HTML, the framework's response is misleading — schema's
|
|
1401
|
+
// probe round was deeper. Surface a ⚠ icon instead of ✗ to signal
|
|
1402
|
+
// "schema says verified, probe disagrees".
|
|
1403
|
+
const probeOK = r.classification === "verified-real" || r.classification === "external";
|
|
1404
|
+
const icon = r.already_verified && !probeOK ? "⚠" : ICON[r.classification];
|
|
1405
|
+
console.log(` ${icon} ${r.company.padEnd(width)} ${tag.padEnd(4)} ${r.classification.padEnd(17)}${vTag} ${r.detail}`);
|
|
1406
|
+
}
|
|
1399
1407
|
}
|
|
1400
1408
|
console.log(`\n Tally:`);
|
|
1401
1409
|
for (const [k, v] of [...tally.entries()].sort()) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "job-pro",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.77",
|
|
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",
|