From c1ea5bf88f8ede0486008a3d544d53e17a541db3 Mon Sep 17 00:00:00 2001 From: Alex Rudenko Date: Wed, 12 Aug 2026 13:19:50 +0200 Subject: [PATCH] build: move devtools into third_party (#2558) --- .gitmodules | 2 +- .prettierignore | 2 +- AGENTS.md | 2 +- eslint.config.js | 2 +- rollup.config.js | 8 +- scripts/post-build.ts | 10 +- scripts/prepare.ts | 8 +- src/third_party/devtools-formatter-worker.ts | 2 +- .../devtools-heap-snapshot-worker.ts | 2 +- src/third_party/index.ts | 2 +- .../devtools-frontend | 0 tsconfig.json | 144 +++++++++--------- 12 files changed, 97 insertions(+), 87 deletions(-) rename devtools-frontend => third_party/devtools-frontend (100%) diff --git a/.gitmodules b/.gitmodules index 3eac6098..51754944 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,5 +1,5 @@ [submodule "devtools-frontend"] - path = devtools-frontend + path = third_party/devtools-frontend url = https://github.com/ChromeDevTools/devtools-frontend.git branch = main shallow = true diff --git a/.prettierignore b/.prettierignore index 34de6a12..d41b0d3f 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,7 +1,7 @@ # Prettier-only ignores. CHANGELOG.md src/third_party/lighthouse-devtools-mcp-bundle.js -devtools-frontend +third_party/devtools-frontend # Release-please formatting brakes CI checks .claude-plugin/plugin.json diff --git a/AGENTS.md b/AGENTS.md index 260ccfec..576e7b6d 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -7,7 +7,7 @@ This repository contains an MCP server and CLI for Chrome DevTools. - Use `npm run test` to build and run tests, run all tests to verify correctness. - Use `npm run test path-to-test.ts` to build and run a single test file, for example, `npm run test tests/McpContext.test.ts`. - Use `npm run format` to fix formatting and get linting errors. -- Never modify `devtools-frontend` except for experimentation: it is a git submodule, a mirror of the actual codebase. +- Never modify `third_party/devtools-frontend` except for experimentation: it is a git submodule, a mirror of the actual codebase. ## Rules for TypeScript diff --git a/eslint.config.js b/eslint.config.js index b6bd4ef5..4c2f8f42 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -17,7 +17,7 @@ export default defineConfig([ globalIgnores([ '**/node_modules', '**/build/', - 'devtools-frontend/**', + 'third_party/devtools-frontend/**', 'tests/tools/fixtures/', 'tests/fixtures/', 'src/third_party/lighthouse-devtools-mcp-bundle.js', diff --git a/rollup.config.js b/rollup.config.js index 2a9e7e6d..ac7b6298 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -63,7 +63,7 @@ function getResolvedVersion(packageName) { function getDevToolsFrontendCommit() { try { return execSync('git rev-parse HEAD', { - cwd: path.join(process.cwd(), 'devtools-frontend'), + cwd: path.join(process.cwd(), 'third_party/devtools-frontend'), encoding: 'utf-8', }).trim(); } catch { @@ -219,14 +219,16 @@ const bundleDependency = ( ), ); const thirdPartyDirectories = tsConfig.include.filter(location => - location.includes('devtools-frontend/front_end/third_party'), + location.includes( + 'third_party/devtools-frontend/front_end/third_party', + ), ); const manualLicenses = []; // Add devtools-frontend main license const cdtfLicensePath = path.join( process.cwd(), - 'devtools-frontend/LICENSE', + 'third_party/devtools-frontend/LICENSE', ); if (fs.existsSync(cdtfLicensePath)) { const devtoolsFrontendCommit = getDevToolsFrontendCommit(); diff --git a/scripts/post-build.ts b/scripts/post-build.ts index edc6bc51..0de46685 100644 --- a/scripts/post-build.ts +++ b/scripts/post-build.ts @@ -28,8 +28,10 @@ function main(): void { if (fs.existsSync(devtoolsTs)) { fs.unlinkSync(devtoolsTs); } - const devtoolsThirdPartyPath = 'devtools-frontend/front_end/third_party'; - const devtoolsFrontEndCorePath = 'devtools-frontend/front_end/core'; + const devtoolsThirdPartyPath = + 'third_party/devtools-frontend/front_end/third_party'; + const devtoolsFrontEndCorePath = + 'third_party/devtools-frontend/front_end/core'; // Create i18n mock const i18nDir = path.join(BUILD_DIR, devtoolsFrontEndCorePath, 'i18n'); @@ -70,6 +72,7 @@ export const css = { cssLanguage: { parser: { parse: () => ({ topNode: { getChil // Create skills mocks const skillsDir = path.join( BUILD_DIR, + 'third_party', 'devtools-frontend', 'front_end', 'models', @@ -156,6 +159,7 @@ export const ExperimentName = { ); const codemirrorSrcDir = path.join( process.cwd(), + 'third_party', 'devtools-frontend', 'front_end', 'third_party', @@ -179,7 +183,7 @@ export const ExperimentName = { function copyDevToolsDescriptionFiles(): void { const devtoolsIssuesDescriptionPath = - 'devtools-frontend/front_end/models/issues_manager/descriptions'; + 'third_party/devtools-frontend/front_end/models/issues_manager/descriptions'; const sourceDir = path.join(process.cwd(), devtoolsIssuesDescriptionPath); const destDir = path.join( BUILD_DIR, diff --git a/scripts/prepare.ts b/scripts/prepare.ts index a6a715f6..27a054f6 100644 --- a/scripts/prepare.ts +++ b/scripts/prepare.ts @@ -39,7 +39,11 @@ function removeConflictingGlobalDeclaration(): void { } function ensureSubmodule(): void { - const devtoolsFrontendDir = resolve(projectRoot, 'devtools-frontend'); + const devtoolsFrontendDir = resolve( + projectRoot, + 'third_party', + 'devtools-frontend', + ); const mcpEntry = resolve(devtoolsFrontendDir, 'mcp', 'mcp.ts'); if (existsSync(mcpEntry)) { @@ -61,7 +65,7 @@ function ensureSubmodule(): void { console.log('Fetching devtools-frontend...'); try { execSync( - 'git clone --depth 1 https://github.com/ChromeDevTools/devtools-frontend.git devtools-frontend', + 'git clone --depth 1 https://github.com/ChromeDevTools/devtools-frontend.git third_party/devtools-frontend', { cwd: projectRoot, stdio: 'inherit', diff --git a/src/third_party/devtools-formatter-worker.ts b/src/third_party/devtools-formatter-worker.ts index beb887a4..c23d2aec 100644 --- a/src/third_party/devtools-formatter-worker.ts +++ b/src/third_party/devtools-formatter-worker.ts @@ -5,4 +5,4 @@ */ // eslint-disable-next-line no-restricted-imports -import '../../devtools-frontend/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.js'; +import '../../third_party/devtools-frontend/front_end/entrypoints/formatter_worker/formatter_worker-entrypoint.js'; diff --git a/src/third_party/devtools-heap-snapshot-worker.ts b/src/third_party/devtools-heap-snapshot-worker.ts index db1754f0..83729746 100644 --- a/src/third_party/devtools-heap-snapshot-worker.ts +++ b/src/third_party/devtools-heap-snapshot-worker.ts @@ -5,4 +5,4 @@ */ // eslint-disable-next-line no-restricted-imports -import '../../devtools-frontend/front_end/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js'; +import '../../third_party/devtools-frontend/front_end/entrypoints/heap_snapshot_worker/heap_snapshot_worker-entrypoint.js'; diff --git a/src/third_party/index.ts b/src/third_party/index.ts index cbad3f70..8b6acf27 100644 --- a/src/third_party/index.ts +++ b/src/third_party/index.ts @@ -90,4 +90,4 @@ export const generateReport = generateReportImpl as ( format: string, ) => string; -export * as DevTools from '../../devtools-frontend/mcp/mcp.js'; +export * as DevTools from '../../third_party/devtools-frontend/mcp/mcp.js'; diff --git a/devtools-frontend b/third_party/devtools-frontend similarity index 100% rename from devtools-frontend rename to third_party/devtools-frontend diff --git a/tsconfig.json b/tsconfig.json index 923f5ed7..6986e339 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -28,81 +28,81 @@ "include": [ "src/**/*.ts", "tests/**/*.ts", - "devtools-frontend/front_end/core/common", - "devtools-frontend/front_end/core/host", - "devtools-frontend/front_end/core/i18n", - "devtools-frontend/front_end/core/platform", - "devtools-frontend/front_end/core/protocol_client/CDPConnection.ts", - "devtools-frontend/front_end/core/protocol_client/ConnectionTransport.ts", - "devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.ts", - "devtools-frontend/front_end/core/protocol_client/InspectorBackend.ts", - "devtools-frontend/front_end/core/protocol_client/PuppeteerDevToolsConnection.ts", - "devtools-frontend/front_end/core/protocol_client/protocol_client.ts", - "devtools-frontend/front_end/core/root", - "devtools-frontend/front_end/core/sdk", - "devtools-frontend/front_end/core/text_utils", - "devtools-frontend/front_end/entrypoints/formatter_worker", - "devtools-frontend/front_end/entrypoints/heap_snapshot_worker", - "devtools-frontend/front_end/foundation/foundation.ts", - "devtools-frontend/front_end/foundation/Universe.ts", - "devtools-frontend/front_end/generated", - "devtools-frontend/front_end/legacy/legacy-defs.d.ts", - "devtools-frontend/front_end/models/ai_assistance/data_formatters", - "devtools-frontend/front_end/models/ai_assistance/performance", - "devtools-frontend/front_end/models/annotations", - "devtools-frontend/front_end/models/autofill_manager", - "devtools-frontend/front_end/models/bindings", - "devtools-frontend/front_end/models/breakpoints", - "devtools-frontend/front_end/models/cpu_profile", - "devtools-frontend/front_end/models/crux-manager", - "devtools-frontend/front_end/models/emulation", - "devtools-frontend/front_end/models/formatter", - "devtools-frontend/front_end/models/geometry", - "devtools-frontend/front_end/models/greendev", - "devtools-frontend/front_end/models/heap_snapshot", - "devtools-frontend/front_end/models/issues_manager", - "devtools-frontend/front_end/models/javascript_metadata", - "devtools-frontend/front_end/models/live-metrics", - "devtools-frontend/front_end/models/logs", - "devtools-frontend/front_end/models/network_time_calculator", - "devtools-frontend/front_end/models/persistence", - "devtools-frontend/front_end/models/project_settings", - "devtools-frontend/front_end/models/source_map_scopes", - "devtools-frontend/front_end/models/stack_trace", - "devtools-frontend/front_end/models/text_utils", - "devtools-frontend/front_end/models/trace_source_maps_resolver", - "devtools-frontend/front_end/models/trace", - "devtools-frontend/front_end/models/badges", - "devtools-frontend/front_end/services/tracing", - "devtools-frontend/front_end/models/workspace", - "devtools-frontend/front_end/models/workspace_diff", - "devtools-frontend/front_end/panels/issues/IssueAggregator.ts", - "devtools-frontend/front_end/third_party/acorn", - "devtools-frontend/front_end/third_party/codemirror", - "devtools-frontend/front_end/third_party/diff", - "devtools-frontend/front_end/third_party/i18n", - "devtools-frontend/front_end/third_party/intl-messageformat", - "devtools-frontend/front_end/third_party/legacy-javascript", - "devtools-frontend/front_end/third_party/marked", - "devtools-frontend/front_end/third_party/source-map-scopes-codec", - "devtools-frontend/front_end/third_party/third-party-web" + "third_party/devtools-frontend/front_end/core/common", + "third_party/devtools-frontend/front_end/core/host", + "third_party/devtools-frontend/front_end/core/i18n", + "third_party/devtools-frontend/front_end/core/platform", + "third_party/devtools-frontend/front_end/core/protocol_client/CDPConnection.ts", + "third_party/devtools-frontend/front_end/core/protocol_client/ConnectionTransport.ts", + "third_party/devtools-frontend/front_end/core/protocol_client/DevToolsCDPConnection.ts", + "third_party/devtools-frontend/front_end/core/protocol_client/InspectorBackend.ts", + "third_party/devtools-frontend/front_end/core/protocol_client/PuppeteerDevToolsConnection.ts", + "third_party/devtools-frontend/front_end/core/protocol_client/protocol_client.ts", + "third_party/devtools-frontend/front_end/core/root", + "third_party/devtools-frontend/front_end/core/sdk", + "third_party/devtools-frontend/front_end/core/text_utils", + "third_party/devtools-frontend/front_end/entrypoints/formatter_worker", + "third_party/devtools-frontend/front_end/entrypoints/heap_snapshot_worker", + "third_party/devtools-frontend/front_end/foundation/foundation.ts", + "third_party/devtools-frontend/front_end/foundation/Universe.ts", + "third_party/devtools-frontend/front_end/generated", + "third_party/devtools-frontend/front_end/legacy/legacy-defs.d.ts", + "third_party/devtools-frontend/front_end/models/ai_assistance/data_formatters", + "third_party/devtools-frontend/front_end/models/ai_assistance/performance", + "third_party/devtools-frontend/front_end/models/annotations", + "third_party/devtools-frontend/front_end/models/autofill_manager", + "third_party/devtools-frontend/front_end/models/bindings", + "third_party/devtools-frontend/front_end/models/breakpoints", + "third_party/devtools-frontend/front_end/models/cpu_profile", + "third_party/devtools-frontend/front_end/models/crux-manager", + "third_party/devtools-frontend/front_end/models/emulation", + "third_party/devtools-frontend/front_end/models/formatter", + "third_party/devtools-frontend/front_end/models/geometry", + "third_party/devtools-frontend/front_end/models/greendev", + "third_party/devtools-frontend/front_end/models/heap_snapshot", + "third_party/devtools-frontend/front_end/models/issues_manager", + "third_party/devtools-frontend/front_end/models/javascript_metadata", + "third_party/devtools-frontend/front_end/models/live-metrics", + "third_party/devtools-frontend/front_end/models/logs", + "third_party/devtools-frontend/front_end/models/network_time_calculator", + "third_party/devtools-frontend/front_end/models/persistence", + "third_party/devtools-frontend/front_end/models/project_settings", + "third_party/devtools-frontend/front_end/models/source_map_scopes", + "third_party/devtools-frontend/front_end/models/stack_trace", + "third_party/devtools-frontend/front_end/models/text_utils", + "third_party/devtools-frontend/front_end/models/trace_source_maps_resolver", + "third_party/devtools-frontend/front_end/models/trace", + "third_party/devtools-frontend/front_end/models/badges", + "third_party/devtools-frontend/front_end/services/tracing", + "third_party/devtools-frontend/front_end/models/workspace", + "third_party/devtools-frontend/front_end/models/workspace_diff", + "third_party/devtools-frontend/front_end/panels/issues/IssueAggregator.ts", + "third_party/devtools-frontend/front_end/third_party/acorn", + "third_party/devtools-frontend/front_end/third_party/codemirror", + "third_party/devtools-frontend/front_end/third_party/diff", + "third_party/devtools-frontend/front_end/third_party/i18n", + "third_party/devtools-frontend/front_end/third_party/intl-messageformat", + "third_party/devtools-frontend/front_end/third_party/legacy-javascript", + "third_party/devtools-frontend/front_end/third_party/marked", + "third_party/devtools-frontend/front_end/third_party/source-map-scopes-codec", + "third_party/devtools-frontend/front_end/third_party/third-party-web" ], "exclude": [ - "devtools-frontend/node_modules", - "devtools-frontend/node_modules/**/*", - "devtools-frontend/**/*.test.ts", - "devtools-frontend/**/*.test.api.ts", - "devtools-frontend/front_end/models/trace/lantern/testing/**", - "devtools-frontend/front_end/models/ai_assistance/skills/**", - "devtools-frontend/front_end/models/ai_assistance/agents/**", - "devtools-frontend/front_end/models/ai_assistance/tools/**", - "devtools-frontend/front_end/models/ai_assistance/contexts/**", - "devtools-frontend/front_end/third_party/puppeteer/**", - "devtools-frontend/front_end/third_party/puppeteer-legacy/**", - "devtools-frontend/front_end/panels/recorder/**", - "devtools-frontend/front_end/services/puppeteer/**" + "third_party/devtools-frontend/node_modules", + "third_party/devtools-frontend/node_modules/**/*", + "third_party/devtools-frontend/**/*.test.ts", + "third_party/devtools-frontend/**/*.test.api.ts", + "third_party/devtools-frontend/front_end/models/trace/lantern/testing/**", + "third_party/devtools-frontend/front_end/models/ai_assistance/skills/**", + "third_party/devtools-frontend/front_end/models/ai_assistance/agents/**", + "third_party/devtools-frontend/front_end/models/ai_assistance/tools/**", + "third_party/devtools-frontend/front_end/models/ai_assistance/contexts/**", + "third_party/devtools-frontend/front_end/third_party/puppeteer/**", + "third_party/devtools-frontend/front_end/third_party/puppeteer-legacy/**", + "third_party/devtools-frontend/front_end/panels/recorder/**", + "third_party/devtools-frontend/front_end/services/puppeteer/**" ], "files": [ - "devtools-frontend/front_end/third_party/acorn/package/dist/acorn.mjs" + "third_party/devtools-frontend/front_end/third_party/acorn/package/dist/acorn.mjs" ] }