diff --git a/package.json b/package.json index f753844a9..5b85e00c1 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "typecheck": "tsc --noEmit", "format": "eslint --cache --fix . && prettier --write --cache .", "check-format": "eslint --cache . && prettier --check --cache .;", - "gen": "npm run build && npm run docs:generate && npm run cli:generate && npm run update-tool-call-metrics && npm run update-flag-usage-metrics && npm run format", + "gen": "npm run build && npm run docs:generate && npm run cli:generate && npm run update-metrics && npm run format", "docs:generate": "node --experimental-strip-types scripts/generate-docs.ts", "start": "npm run build && node build/src/index.js", "start-debug": "DEBUG=mcp:* DEBUG_COLORS=false npm run build && node build/src/index.js", @@ -27,8 +27,7 @@ "prepare": "node --experimental-strip-types scripts/prepare.ts", "verify-server-json-version": "node --experimental-strip-types scripts/verify-server-json-version.ts", "update-lighthouse": "node --experimental-strip-types scripts/update-lighthouse.ts", - "update-tool-call-metrics": "node --experimental-strip-types scripts/update_tool_call_metrics.ts", - "update-flag-usage-metrics": "node --experimental-strip-types scripts/update_flag_usage_metrics.ts", + "update-metrics": "node --experimental-strip-types scripts/update_metrics.ts", "verify-npm-package": "node scripts/verify-npm-package.mjs", "eval": "npm run build && node --experimental-strip-types scripts/eval_gemini.ts", "count-tokens": "node --experimental-strip-types scripts/count_tokens.ts" diff --git a/scripts/update_flag_usage_metrics.ts b/scripts/update_flag_usage_metrics.ts deleted file mode 100644 index 8e0f4ffde..000000000 --- a/scripts/update_flag_usage_metrics.ts +++ /dev/null @@ -1,51 +0,0 @@ -/** - * @license - * Copyright 2026 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -import * as fs from 'node:fs'; -import * as path from 'node:path'; - -import {cliOptions} from '../build/src/bin/chrome-devtools-mcp-cli-options.js'; -import { - getPossibleFlagMetrics, - type FlagMetric, -} from '../build/src/telemetry/flagUtils.js'; -import {applyToExisting} from '../build/src/telemetry/toolMetricsUtils.js'; - -function writeFlagUsageMetrics() { - const outputPath = path.resolve('src/telemetry/flag_usage_metrics.json'); - - const dir = path.dirname(outputPath); - if (!fs.existsSync(dir)) { - throw new Error(`Error: Directory ${dir} does not exist.`); - } - - let existingMetrics: FlagMetric[] = []; - if (fs.existsSync(outputPath)) { - try { - existingMetrics = JSON.parse( - fs.readFileSync(outputPath, 'utf8'), - ) as FlagMetric[]; - } catch { - console.warn( - `Warning: Failed to parse existing metrics from ${outputPath}. Starting fresh.`, - ); - } - } - - const newMetrics = getPossibleFlagMetrics(cliOptions); - const mergedMetrics = applyToExisting( - existingMetrics, - newMetrics, - ); - - fs.writeFileSync(outputPath, JSON.stringify(mergedMetrics, null, 2) + '\n'); - - console.log( - `Successfully wrote ${mergedMetrics.length} flag usage metrics to ${outputPath}`, - ); -} - -writeFlagUsageMetrics(); diff --git a/scripts/update_tool_call_metrics.ts b/scripts/update_metrics.ts similarity index 51% rename from scripts/update_tool_call_metrics.ts rename to scripts/update_metrics.ts index f28e2688d..6408782f3 100644 --- a/scripts/update_tool_call_metrics.ts +++ b/scripts/update_metrics.ts @@ -7,16 +7,23 @@ import * as fs from 'node:fs'; import * as path from 'node:path'; -import type {ParsedArguments} from '../build/src/bin/chrome-devtools-mcp-cli-options.js'; import { + cliOptions, + parseArguments, +} from '../build/src/bin/chrome-devtools-mcp-cli-options.js'; +import { + getPossibleFlagMetrics, + type FlagMetric, +} from '../build/src/telemetry/flagUtils.js'; +import { + applyToExisting, applyToExistingMetrics, generateToolMetrics, type ToolMetric, } from '../build/src/telemetry/toolMetricsUtils.js'; -import type {ToolDefinition} from '../build/src/tools/ToolDefinition.js'; import {createTools} from '../build/src/tools/tools.js'; -export function HaveUniqueNames(tools: ToolDefinition[]): boolean { +export function HaveUniqueNames(tools: Array<{name: string}>): boolean { const toolNames = tools.map(tool => tool.name); const toolNamesSet = new Set(toolNames); return toolNamesSet.size === toolNames.length; @@ -30,8 +37,9 @@ function writeToolCallMetricsConfig() { throw new Error(`Error: Directory ${dir} does not exist.`); } - const fullTools = createTools({slim: false} as ParsedArguments); - const slimTools = createTools({slim: true} as ParsedArguments); + // Avoid 'as ParsedArguments' by using parseArguments + const fullTools = createTools(parseArguments('0.0.0', ['', ''])); + const slimTools = createTools(parseArguments('0.0.0', ['', '', '--slim'])); const allTools = [...fullTools, ...slimTools]; @@ -62,4 +70,43 @@ function writeToolCallMetricsConfig() { ); } -writeToolCallMetricsConfig(); +function writeFlagUsageMetrics() { + const outputPath = path.resolve('src/telemetry/flag_usage_metrics.json'); + + const dir = path.dirname(outputPath); + if (!fs.existsSync(dir)) { + throw new Error(`Error: Directory ${dir} does not exist.`); + } + + let existingMetrics: FlagMetric[] = []; + if (fs.existsSync(outputPath)) { + try { + existingMetrics = JSON.parse( + fs.readFileSync(outputPath, 'utf8'), + ) as FlagMetric[]; + } catch { + console.warn( + `Warning: Failed to parse existing metrics from ${outputPath}. Starting fresh.`, + ); + } + } + + const newMetrics = getPossibleFlagMetrics(cliOptions); + const mergedMetrics = applyToExisting( + existingMetrics, + newMetrics, + ); + + fs.writeFileSync(outputPath, JSON.stringify(mergedMetrics, null, 2) + '\n'); + + console.log( + `Successfully wrote ${mergedMetrics.length} flag usage metrics to ${outputPath}`, + ); +} + +function main() { + writeToolCallMetricsConfig(); + writeFlagUsageMetrics(); +} + +main();