From 58c670acc2396505118f1d64ecb08037070f2913 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 6 Apr 2026 22:47:01 +0100 Subject: [PATCH] refactor: dedupe browser record helper --- extensions/browser/src/browser/chrome-mcp.ts | 7 +------ extensions/browser/src/doctor-browser.ts | 7 +------ extensions/browser/src/record-shared.ts | 5 +++++ 3 files changed, 7 insertions(+), 12 deletions(-) create mode 100644 extensions/browser/src/record-shared.ts diff --git a/extensions/browser/src/browser/chrome-mcp.ts b/extensions/browser/src/browser/chrome-mcp.ts index bc724d2eaea..97b6246d1dc 100644 --- a/extensions/browser/src/browser/chrome-mcp.ts +++ b/extensions/browser/src/browser/chrome-mcp.ts @@ -4,6 +4,7 @@ import os from "node:os"; import path from "node:path"; import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; +import { asRecord } from "../record-shared.js"; import type { ChromeMcpSnapshotNode } from "./chrome-mcp.snapshot.js"; import type { BrowserTab } from "./client.js"; import { BrowserProfileUnavailableError, BrowserTabNotFoundError } from "./errors.js"; @@ -45,12 +46,6 @@ const sessions = new Map(); const pendingSessions = new Map>(); let sessionFactory: ChromeMcpSessionFactory | null = null; -function asRecord(value: unknown): Record | null { - return value && typeof value === "object" && !Array.isArray(value) - ? (value as Record) - : null; -} - function asPages(value: unknown): ChromeMcpStructuredPage[] { if (!Array.isArray(value)) { return []; diff --git a/extensions/browser/src/doctor-browser.ts b/extensions/browser/src/doctor-browser.ts index 91206da5996..798f939ee61 100644 --- a/extensions/browser/src/doctor-browser.ts +++ b/extensions/browser/src/doctor-browser.ts @@ -5,6 +5,7 @@ import { resolveGoogleChromeExecutableForPlatform, } from "./browser/chrome.executables.js"; import type { OpenClawConfig } from "./config/config.js"; +import { asRecord } from "./record-shared.js"; const CHROME_MCP_MIN_MAJOR = 144; const REMOTE_DEBUGGING_PAGES = [ @@ -13,12 +14,6 @@ const REMOTE_DEBUGGING_PAGES = [ "edge://inspect/#remote-debugging", ].join(", "); -function asRecord(value: unknown): Record | null { - return value && typeof value === "object" && !Array.isArray(value) - ? (value as Record) - : null; -} - type ExistingSessionProfile = { name: string; userDataDir?: string; diff --git a/extensions/browser/src/record-shared.ts b/extensions/browser/src/record-shared.ts new file mode 100644 index 00000000000..7b4ae081a6f --- /dev/null +++ b/extensions/browser/src/record-shared.ts @@ -0,0 +1,5 @@ +export function asRecord(value: unknown): Record | null { + return value && typeof value === "object" && !Array.isArray(value) + ? (value as Record) + : null; +}