feat(desktop): add monitor scheduler, Playwright CDP layer, and account health
Move monitor-task scheduling authority onto the client with a durable file-backed queue that survives restart, drops stale cross-day tasks, enforces per-platform serialism, and adapts global concurrency from Electron process metrics. Publish tasks keep their existing FIFO. Add a hidden Playwright CDP manager that attaches to Electron Chromium on account session partitions, lets adapters opt into `executionMode: "playwright"`, and leaves the existing hidden WebContentsView path in place for current adapters. Introduce an account-health subsystem with silent probes, projected health/auth states, and IPC invalidation events so the renderer can show accurate auth/probe status and verification timestamps. Server-side, derive and forward title/business_date/scheduler_group_key/ question_text metadata on desktop task events so the local scheduler can defer same-question fan-out before leasing.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import type { DesktopArticleContent, JsonValue } from "@geo/shared-types";
|
||||
import type { Session, WebContentsView } from "electron";
|
||||
import type { Browser as PlaywrightBrowser, Page as PlaywrightPage } from "playwright-core";
|
||||
|
||||
export type AdapterTaskPhase = "initial" | "resume";
|
||||
export type AdapterCompletionStatus = "succeeded" | "failed" | "unknown";
|
||||
@@ -10,6 +11,10 @@ export interface AdapterContext {
|
||||
accountId: string;
|
||||
session: Session;
|
||||
view: WebContentsView | null;
|
||||
playwright: {
|
||||
browser: PlaywrightBrowser;
|
||||
page: PlaywrightPage;
|
||||
} | null;
|
||||
signal: AbortSignal;
|
||||
phase: AdapterTaskPhase;
|
||||
reportProgress(stage: string): void;
|
||||
|
||||
Reference in New Issue
Block a user