- lib/apply/index.mjs: add STATUS_MAP to normalize platform-specific statuses to generic ones (no_button/no_submit/no_modal → skipped_no_apply). Documented all generic statuses for AI/developer reference. - job_applier.mjs: handleResult now handles skipped_no_apply, default case logs + saves instead of silently dropping - lib/linkedin.mjs: remove dead applyLinkedIn() and detectAts(), clean imports (~110 lines removed). Search-only module now. - lib/wellfound.mjs: remove dead applyWellfound(), clean imports. Search-only module now. - lib/lock.mjs: fix async signal handler — shutdown handlers now actually complete before process.exit() - test_linkedin_login.mjs: add try/catch/finally with proper browser cleanup - README: update status table with all current statuses Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
25 lines
839 B
JavaScript
25 lines
839 B
JavaScript
import { createBrowser } from './lib/browser.mjs';
|
|
import { verifyLogin } from './lib/linkedin.mjs';
|
|
import { loadConfig } from './lib/queue.mjs';
|
|
import { dirname, resolve } from 'path';
|
|
import { fileURLToPath } from 'url';
|
|
|
|
const __dir = dirname(fileURLToPath(import.meta.url));
|
|
const settings = loadConfig(resolve(__dir, 'config/settings.json'));
|
|
|
|
let browser;
|
|
try {
|
|
console.log('Creating Kernel browser with LinkedIn profile...');
|
|
browser = await createBrowser(settings, 'linkedin');
|
|
console.log('Browser created, checking login...');
|
|
const loggedIn = await verifyLogin(browser.page);
|
|
console.log('Logged in:', loggedIn);
|
|
console.log('URL:', browser.page.url());
|
|
} catch (e) {
|
|
console.error('Error:', e.message);
|
|
process.exit(1);
|
|
} finally {
|
|
await browser?.browser?.close().catch(() => {});
|
|
console.log('Done.');
|
|
}
|