careervivid 1.12.21 → 1.12.22

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.
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAmtBlC,eAAO,MAAM,iBAAiB,EAAE,IAAI,EAanC,CAAC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AA4tBlC,eAAO,MAAM,iBAAiB,EAAE,IAAI,EAanC,CAAC"}
@@ -18,7 +18,7 @@
18
18
  * The dedicated profile avoids this entirely and is always available.
19
19
  */
20
20
  import { Type } from "@google/genai";
21
- import { chromium } from "playwright";
21
+ import { chromium } from "playwright-core";
22
22
  import { homedir } from "os";
23
23
  import { join, resolve, dirname } from "path";
24
24
  import { existsSync, mkdirSync } from "fs";
@@ -76,6 +76,14 @@ async function ensureBrowser() {
76
76
  const profileDir = getAutomationProfileDir();
77
77
  const executablePath = getChromeBinaryPath();
78
78
  console.log(chalk.dim(" 🌐 Launching automation browser..."));
79
+ if (!executablePath) {
80
+ console.log("");
81
+ console.log(chalk.red("❌ Error: Missing local browser"));
82
+ console.log(chalk.dim("The CareerVivid CLI uses playwright-core to launch your existing browser installation to save hundreds of megabytes of setup time."));
83
+ console.log(chalk.dim("However, Google Chrome or Microsoft Edge could not be found in the standard system locations."));
84
+ console.log(chalk.yellow("\nPlease install Google Chrome to use AI Browser automation: https://www.google.com/chrome/"));
85
+ process.exit(1);
86
+ }
79
87
  activeContext = await chromium.launchPersistentContext(profileDir, {
80
88
  headless: false,
81
89
  executablePath, // real Chrome binary if available, otherwise bundled Chromium
@@ -122,7 +122,7 @@ export async function loadGeneratedAdapter(adapterPath) {
122
122
  // ── HTML scraper (headless) ───────────────────────────────────────────────────
123
123
  async function scrapeFormHtml(url) {
124
124
  // Lazy import Playwright so it's only required when actually generating
125
- const { chromium } = await import("playwright");
125
+ const { chromium } = await import("playwright-core");
126
126
  const browser = await chromium.launch({ headless: true });
127
127
  try {
128
128
  const page = await browser.newPage();
@@ -178,7 +178,7 @@ Requirements:
178
178
  - Use Playwright locators: page.getByLabel(), page.getByPlaceholder(), page.locator()
179
179
  - Add humanType delays: await new Promise(r => setTimeout(r, 200 + Math.random() * 300))
180
180
  - The platform property should be: "${hostname}"
181
- - Import Page from "playwright" using: /** @type {import('playwright').Page} */
181
+ - Import Page from "playwright-core" using: /** @type {import('playwright').Page} */
182
182
  - Use JSDoc type annotations instead of TypeScript syntax (this is plain JavaScript)
183
183
  - Do NOT use TypeScript syntax (no interface, no type annotations with :, no import type)
184
184
  - The output must be a complete, standalone .mjs file
@@ -4,7 +4,7 @@
4
4
  * Handles job application forms on jobs.ashbyhq.com
5
5
  * Ashby uses a React SPA with dynamically rendered form fields.
6
6
  */
7
- import type { Page } from "playwright";
7
+ import type { Page } from "playwright-core";
8
8
  import type { ATSAdapter, FormField } from "../index.js";
9
9
  import type { ApplyProfile } from "../gemini-agent.js";
10
10
  export declare class AshbyAdapter implements ATSAdapter {
@@ -1 +1 @@
1
- {"version":3,"file":"ashby.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/ashby.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsDvD,qBAAa,YAAa,YAAW,UAAU;IAC7C,QAAQ,EAAG,OAAO,CAAU;IAEtB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBzD,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAChE,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IAwDI,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA+D/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CASxC"}
1
+ {"version":3,"file":"ashby.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/ashby.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsDvD,qBAAa,YAAa,YAAW,UAAU;IAC7C,QAAQ,EAAG,OAAO,CAAU;IAEtB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwBzD,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAChE,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IAwDI,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA+D/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAyBtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CASxC"}
@@ -7,7 +7,7 @@
7
7
  * Works reasonably well for: SmartRecruiters, iCIMS, JazzHR, BambooHR,
8
8
  * Breezy, Pinpoint, and company-hosted career sites.
9
9
  */
10
- import type { Page } from "playwright";
10
+ import type { Page } from "playwright-core";
11
11
  import type { ATSAdapter, FormField } from "../index.js";
12
12
  import type { ApplyProfile } from "../gemini-agent.js";
13
13
  export declare class GenericAdapter implements ATSAdapter {
@@ -1 +1 @@
1
- {"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/generic.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAoDvD,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,EAAG,SAAS,CAAU;IAExB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BzD,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAChE,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IAsDI,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0E/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBxC"}
1
+ {"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/generic.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAoDvD,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,EAAG,SAAS,CAAU;IAExB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA2BzD,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAChE,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;IAsDI,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0E/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBxC"}
@@ -10,7 +10,7 @@
10
10
  * 2. extractFields() — CSS fallback for passing field list to Gemini agent.
11
11
  * 3. fillField() — fills a single field by selector (used by Gemini agent actions).
12
12
  */
13
- import type { Page } from "playwright";
13
+ import type { Page } from "playwright-core";
14
14
  import type { ATSAdapter, FormField } from "../index.js";
15
15
  import type { ApplyProfile } from "../gemini-agent.js";
16
16
  export declare class GreenhouseAdapter implements ATSAdapter {
@@ -1 +1 @@
1
- {"version":3,"file":"greenhouse.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/greenhouse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA4CvD,qBAAa,iBAAkB,YAAW,UAAU;IAClD,QAAQ,EAAG,YAAY,CAAU;IAI3B,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,OAAO,CAAC,qBAAqB;IAyBvB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAChE,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;YA6DY,WAAW;YAeX,YAAY;YAgBZ,aAAa;IAkCrB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAgD/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CASxC"}
1
+ {"version":3,"file":"greenhouse.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/greenhouse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AA4CvD,qBAAa,iBAAkB,YAAW,UAAU;IAClD,QAAQ,EAAG,YAAY,CAAU;IAI3B,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,OAAO,CAAC,qBAAqB;IAyBvB,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAChE,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;YA6DY,WAAW;YAeX,YAAY;YAgBZ,aAAa;IAkCrB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAgD/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+BtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CASxC"}
@@ -4,7 +4,7 @@
4
4
  * Handles job application forms on icims.com platforms.
5
5
  * iCIMS forms are often embedded inside an iframe (#icims_content_iframe).
6
6
  */
7
- import type { Page, FrameLocator } from "playwright";
7
+ import type { Page, FrameLocator } from "playwright-core";
8
8
  import type { ATSAdapter, FormField } from "../index.js";
9
9
  import type { ApplyProfile } from "../gemini-agent.js";
10
10
  export declare class IcimsAdapter implements ATSAdapter {
@@ -1 +1 @@
1
- {"version":3,"file":"icims.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/icims.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAW,MAAM,YAAY,CAAC;AAC9D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsBvD,qBAAa,YAAa,YAAW,UAAU;IAC7C,QAAQ,EAAG,OAAO,CAAU;IAE5B;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;IASpD,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAezD,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAiDpG,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwE/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAcxC"}
1
+ {"version":3,"file":"icims.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/icims.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,YAAY,EAAW,MAAM,iBAAiB,CAAC;AACnE,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAsBvD,qBAAa,YAAa,YAAW,UAAU;IAC7C,QAAQ,EAAG,OAAO,CAAU;IAE5B;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;IASpD,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAezD,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAiDpG,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAwE/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAcxC"}
@@ -4,7 +4,7 @@
4
4
  * Handles job application forms on jobs.lever.co
5
5
  * Lever has a clean, consistent form structure.
6
6
  */
7
- import type { Page } from "playwright";
7
+ import type { Page } from "playwright-core";
8
8
  import type { ATSAdapter, FormField } from "../index.js";
9
9
  export declare class LeverAdapter implements ATSAdapter {
10
10
  platform: "lever";
@@ -1 +1 @@
1
- {"version":3,"file":"lever.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/lever.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGzD,qBAAa,YAAa,YAAW,UAAU;IAC7C,QAAQ,EAAG,OAAO,CAAU;IAEtB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA6C/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CASxC"}
1
+ {"version":3,"file":"lever.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/lever.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGzD,qBAAa,YAAa,YAAW,UAAU;IAC7C,QAAQ,EAAG,OAAO,CAAU;IAEtB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAazD,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA6C/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBtE,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CASxC"}
@@ -7,7 +7,7 @@
7
7
  * This adapter requires explicit opt-in via `--enable-linkedin` flag.
8
8
  * Use sparingly (max 10-15 applications/day) for roles with score â‰Ĩ 80%.
9
9
  */
10
- import type { Page } from "playwright";
10
+ import type { Page } from "playwright-core";
11
11
  import type { ATSAdapter, FormField } from "../index.js";
12
12
  export declare class LinkedInAdapter implements ATSAdapter {
13
13
  platform: "linkedin";
@@ -1 +1 @@
1
- {"version":3,"file":"linkedin.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/linkedin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGzD,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,EAAG,UAAU,CAAU;IAEzB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzD,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqE/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB5E;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBxC"}
1
+ {"version":3,"file":"linkedin.d.ts","sourceRoot":"","sources":["../../../src/apply/adapters/linkedin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGzD,qBAAa,eAAgB,YAAW,UAAU;IAChD,QAAQ,EAAG,UAAU,CAAU;IAEzB,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBzD,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAqE/C,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB5E;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;CAsBxC"}
@@ -19,7 +19,7 @@
19
19
  * After launch, the caller is responsible for navigating to the target URL
20
20
  * via page.goto(). The browser starts at about:blank.
21
21
  */
22
- import { type BrowserContext, type Page } from "playwright";
22
+ import { type BrowserContext, type Page } from "playwright-core";
23
23
  /** Type text into a field with random per-character delay (30–120ms) */
24
24
  export declare function humanType(page: Page, selector: string, text: string): Promise<void>;
25
25
  /** Random delay between actions (simulates reading / thinking) */
@@ -1 +1 @@
1
- {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/apply/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAsEtE,wEAAwE;AACxE,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzF;AAED,kEAAkE;AAClE,wBAAsB,UAAU,CAAC,KAAK,SAAM,EAAE,KAAK,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,wEAAwE;IACxE,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,GAAE,oBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,CA0DhG;AAKD,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/apply/browser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAY,KAAK,cAAc,EAAE,KAAK,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAsE3E,wEAAwE;AACxE,wBAAsB,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAMzF;AAED,kEAAkE;AAClE,wBAAsB,UAAU,CAAC,KAAK,SAAM,EAAE,KAAK,SAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGzE;AAID,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6EAA6E;IAC7E,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,IAAI,CAAC;IACX,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,wEAAwE;IACxE,sBAAsB,EAAE,OAAO,CAAC;CACjC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,GAAE,oBAAyB,GAAG,OAAO,CAAC,YAAY,CAAC,CAmEhG;AAKD,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
@@ -19,7 +19,7 @@
19
19
  * After launch, the caller is responsible for navigating to the target URL
20
20
  * via page.goto(). The browser starts at about:blank.
21
21
  */
22
- import { chromium } from "playwright";
22
+ import { chromium } from "playwright-core";
23
23
  import { homedir } from "os";
24
24
  import { join } from "path";
25
25
  import { existsSync, mkdirSync } from "fs";
@@ -119,6 +119,14 @@ export async function launchApplyBrowser(_opts = {}) {
119
119
  console.log(chalk.cyan(" â„šī¸ First run — a dedicated automation browser will open.\n") +
120
120
  chalk.dim(" Your session will be saved for future applications.\n"));
121
121
  }
122
+ if (!executablePath) {
123
+ console.log("");
124
+ console.log(chalk.red("❌ Error: Missing local browser"));
125
+ console.log(chalk.dim("The CareerVivid CLI uses playwright-core to launch your existing browser installation to save hundreds of megabytes of setup time."));
126
+ console.log(chalk.dim("However, Google Chrome or Microsoft Edge could not be found in the standard system locations."));
127
+ console.log(chalk.yellow("\nPlease install Google Chrome to use AI Browser automation: https://www.google.com/chrome/"));
128
+ process.exit(1);
129
+ }
122
130
  const context = await chromium.launchPersistentContext(profileDir, {
123
131
  headless: _opts.headless ?? false,
124
132
  // Use real Chrome binary for best ATS site compatibility.
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * This replaces brittle CSS-selector scraping with intent-driven AI navigation.
13
13
  */
14
- import type { Page } from "playwright";
14
+ import type { Page } from "playwright-core";
15
15
  export interface ApplyProfile {
16
16
  firstName?: string;
17
17
  lastName?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-agent.d.ts","sourceRoot":"","sources":["../../src/apply/gemini-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAYvC,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAID,wBAAgB,WAAW,IAAI,YAAY,CAS1C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAIvD;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACjG,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf;AAoCD,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAA2D;IAC7E,OAAO,CAAC,SAAS,CAAK;gBAEV,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,YAAY,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;IAWD;;;OAGG;IACG,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAmEnC,SAAS;YAyET,aAAa;YA6Eb,OAAO;CAyBtB"}
1
+ {"version":3,"file":"gemini-agent.d.ts","sourceRoot":"","sources":["../../src/apply/gemini-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAY5C,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAID,wBAAgB,WAAW,IAAI,YAAY,CAS1C;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAIvD;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IACjG,wCAAwC;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf;AAoCD,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAc;IACxB,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAA2D;IAC7E,OAAO,CAAC,SAAS,CAAK;gBAEV,IAAI,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,YAAY,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;IAWD;;;OAGG;IACG,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAmEnC,SAAS;YAyET,aAAa;YA6Eb,OAAO;CAyBtB"}
@@ -8,15 +8,15 @@ export type ATSPlatform = "greenhouse" | "lever" | "ashby" | "linkedin" | "workd
8
8
  export interface ATSAdapter {
9
9
  platform: ATSPlatform;
10
10
  /** Navigate to the application page (may click "Apply" button) */
11
- navigateToForm: (page: import("playwright").Page, jobUrl: string) => Promise<void>;
11
+ navigateToForm: (page: import("playwright-core").Page, jobUrl: string) => Promise<void>;
12
12
  /** Extract form fields from the current page */
13
- extractFields: (page: import("playwright").Page) => Promise<FormField[]>;
13
+ extractFields: (page: import("playwright-core").Page) => Promise<FormField[]>;
14
14
  /** Fill a single field given selector + answer */
15
- fillField: (page: import("playwright").Page, field: FormField, answer: string) => Promise<void>;
15
+ fillField: (page: import("playwright-core").Page, field: FormField, answer: string) => Promise<void>;
16
16
  /** Click the final submit button */
17
- submit: (page: import("playwright").Page) => Promise<void>;
17
+ submit: (page: import("playwright-core").Page) => Promise<void>;
18
18
  /** Optional: fill standard fields directly from saved user profile (no AI needed) */
19
- fillFromProfile?: (page: import("playwright").Page, profile: import("./gemini-agent.js").ApplyProfile) => Promise<{
19
+ fillFromProfile?: (page: import("playwright-core").Page, profile: import("./gemini-agent.js").ApplyProfile) => Promise<{
20
20
  filled: string[];
21
21
  skipped: string[];
22
22
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/apply/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,OAAO,GACP,OAAO,GACP,UAAU,GACV,SAAS,GACT,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,kEAAkE;IAClE,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnF,gDAAgD;IAChD,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,YAAY,EAAE,IAAI,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACzE,kDAAkD;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChG,oCAAoC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,YAAY,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3D,qFAAqF;IACrF,eAAe,CAAC,EAAE,CAChB,IAAI,EAAE,OAAO,YAAY,EAAE,IAAI,EAC/B,OAAO,EAAE,OAAO,mBAAmB,EAAE,YAAY,KAC9C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CASvD;AAID,wBAAsB,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA2B3E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/apply/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,WAAW,GACnB,YAAY,GACZ,OAAO,GACP,OAAO,GACP,UAAU,GACV,SAAS,GACT,OAAO,GACP,SAAS,CAAC;AAEd,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,WAAW,CAAC;IACtB,kEAAkE;IAClE,cAAc,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxF,gDAAgD;IAChD,aAAa,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,IAAI,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAC9E,kDAAkD;IAClD,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,oCAAoC;IACpC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,iBAAiB,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,qFAAqF;IACrF,eAAe,CAAC,EAAE,CAChB,IAAI,EAAE,OAAO,iBAAiB,EAAE,IAAI,EACpC,OAAO,EAAE,OAAO,mBAAmB,EAAE,YAAY,KAC9C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;IACjF,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAID,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CASvD;AAID,wBAAsB,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA2B3E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "careervivid",
3
- "version": "1.12.21",
3
+ "version": "1.12.22",
4
4
  "description": "Official CLI for CareerVivid — publish articles, diagrams, and portfolio updates from your terminal or AI agent",
5
5
  "type": "module",
6
6
  "bin": {
@@ -31,7 +31,7 @@
31
31
  "mermaid": "11.14.0",
32
32
  "open": "^10.1.0",
33
33
  "ora": "^8.1.0",
34
- "playwright": "^1.51.0",
34
+ "playwright-core": "^1.51.0",
35
35
  "semver": "7.7.4",
36
36
  "update-notifier": "^7.3.1"
37
37
  },
@@ -43,7 +43,7 @@
43
43
  "typescript": "^5.4.0"
44
44
  },
45
45
  "engines": {
46
- "node": ">=18.0.0"
46
+ "node": ">=20.0.0"
47
47
  },
48
48
  "keywords": [
49
49
  "careervivid",