From 931576443dcb990761cb7e68e354465145f9292d Mon Sep 17 00:00:00 2001 From: amankumarsingh77 Date: Mon, 27 Jul 2026 23:10:18 +0530 Subject: refactor(profile): drop CDP casts in favour of the typed boundary Co-Authored-By: Claude Opus 5 (1M context) --- src/profile/bind.ts | 11 +++-------- src/profile/browser-process.ts | 6 ++++-- 2 files changed, 7 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/profile/bind.ts b/src/profile/bind.ts index 5fbac6f..abdc5cc 100644 --- a/src/profile/bind.ts +++ b/src/profile/bind.ts @@ -20,6 +20,7 @@ import type { BrowserClient } from "../client"; import { attachTo } from "../cdp/attach"; +import type { ResultOf } from "../cdp/commands"; import { type CdpError, cdpError } from "../cdp/errors"; import { getWindowId } from "../cdp/window"; import { type Result, err, ok } from "../util/result"; @@ -31,18 +32,12 @@ import type { ProfilePin } from "./store"; const SEED_DEADLINE_MS = 15_000; const SEED_POLL_MS = 500; -type PageTarget = { - readonly targetId: string; - readonly type: string; - readonly url: string; - readonly browserContextId?: string; -}; +type PageTarget = ResultOf<"Target.getTargets">["targetInfos"][number]; const pageTargets = async (client: BrowserClient): Promise> => { const r = await client.session().callBrowser("Target.getTargets"); if (!r.success) return []; - const data = r.data as { targetInfos: ReadonlyArray }; - return data.targetInfos.filter((t) => t.type === "page"); + return r.data.targetInfos.filter((t) => t.type === "page"); }; const manualFallbackHint = (pin: ProfilePin): string => diff --git a/src/profile/browser-process.ts b/src/profile/browser-process.ts index 77bc05c..ac31d4d 100644 --- a/src/profile/browser-process.ts +++ b/src/profile/browser-process.ts @@ -373,9 +373,11 @@ export const detectRunningBrowser = async (preferUserDataDir?: string): Promise< : await collectLinux(); if (candidates.length === 0) return { running: false }; - let best = candidates[0] as BrowserCandidate; + const [first, ...rest] = candidates; + if (!first) return { running: false }; + let best = first; let bestRank = rankBrowserCandidate(best, preferUserDataDir); - for (const candidate of candidates.slice(1)) { + for (const candidate of rest) { const rank = rankBrowserCandidate(candidate, preferUserDataDir); if (rank > bestRank) { best = candidate; -- cgit v1.2.3