browser-devtools-mcp 0.1.6 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +93 -21
- package/README.md +98 -18
- package/dist/cli.js +53 -1721
- package/dist/core.js +764 -0
- package/dist/daemon-server.js +1 -338
- package/dist/index.d.ts +2 -0
- package/dist/index.js +210 -80
- package/dist/otel/otel-initializer.bundle.js +0 -1
- package/dist/tools/a11y/index.d.ts +2 -0
- package/dist/tools/content/index.d.ts +2 -0
- package/dist/tools/debug/index.d.ts +2 -0
- package/dist/tools/figma/compare/index.d.ts +56 -0
- package/dist/tools/figma/compare/types.d.ts +15 -0
- package/dist/tools/figma/index.d.ts +2 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/interaction/index.d.ts +2 -0
- package/dist/tools/navigation/index.d.ts +2 -0
- package/dist/tools/o11y/index.d.ts +2 -0
- package/dist/tools/react/index.d.ts +2 -0
- package/dist/tools/run/index.d.ts +2 -0
- package/dist/tools/stub/index.d.ts +2 -0
- package/dist/tools/sync/index.d.ts +2 -0
- package/dist/tools/types.d.ts +21 -0
- package/dist/types.d.ts +78 -0
- package/package.json +11 -11
- package/dist/browser.js +0 -213
- package/dist/browser.js.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/config.js +0 -96
- package/dist/config.js.map +0 -1
- package/dist/context.js +0 -298
- package/dist/context.js.map +0 -1
- package/dist/daemon-server.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/logger.js +0 -97
- package/dist/logger.js.map +0 -1
- package/dist/mcp-server.js +0 -401
- package/dist/mcp-server.js.map +0 -1
- package/dist/otel/otel-controller.js +0 -323
- package/dist/otel/otel-controller.js.map +0 -1
- package/dist/otel/otel-initializer.bundle.js.map +0 -7
- package/dist/otel/otel-proxy.js +0 -407
- package/dist/otel/otel-proxy.js.map +0 -1
- package/dist/server-info.js +0 -186
- package/dist/server-info.js.map +0 -1
- package/dist/tools/a11y/index.js +0 -7
- package/dist/tools/a11y/index.js.map +0 -1
- package/dist/tools/a11y/take-aria-snapshot.js +0 -54
- package/dist/tools/a11y/take-aria-snapshot.js.map +0 -1
- package/dist/tools/a11y/take-ax-tree-snapshot.js +0 -850
- package/dist/tools/a11y/take-ax-tree-snapshot.js.map +0 -1
- package/dist/tools/content/get-as-html.js +0 -164
- package/dist/tools/content/get-as-html.js.map +0 -1
- package/dist/tools/content/get-as-text.js +0 -76
- package/dist/tools/content/get-as-text.js.map +0 -1
- package/dist/tools/content/index.js +0 -14
- package/dist/tools/content/index.js.map +0 -1
- package/dist/tools/content/save-as-pdf.js +0 -119
- package/dist/tools/content/save-as-pdf.js.map +0 -1
- package/dist/tools/content/take-screenshot.js +0 -272
- package/dist/tools/content/take-screenshot.js.map +0 -1
- package/dist/tools/figma/compare/compare-image-embedding.js +0 -159
- package/dist/tools/figma/compare/compare-image-embedding.js.map +0 -1
- package/dist/tools/figma/compare/compare-mssim.js +0 -98
- package/dist/tools/figma/compare/compare-mssim.js.map +0 -1
- package/dist/tools/figma/compare/compare-text-embedding.js +0 -291
- package/dist/tools/figma/compare/compare-text-embedding.js.map +0 -1
- package/dist/tools/figma/compare/index.js +0 -139
- package/dist/tools/figma/compare/index.js.map +0 -1
- package/dist/tools/figma/compare/types.js +0 -3
- package/dist/tools/figma/compare/types.js.map +0 -1
- package/dist/tools/figma/compare/vector.js +0 -46
- package/dist/tools/figma/compare/vector.js.map +0 -1
- package/dist/tools/figma/compare-page-with-design.js +0 -240
- package/dist/tools/figma/compare-page-with-design.js.map +0 -1
- package/dist/tools/figma/figma-service.js +0 -134
- package/dist/tools/figma/figma-service.js.map +0 -1
- package/dist/tools/figma/index.js +0 -6
- package/dist/tools/figma/index.js.map +0 -1
- package/dist/tools/index.js +0 -41
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/interaction/click.js +0 -29
- package/dist/tools/interaction/click.js.map +0 -1
- package/dist/tools/interaction/drag.js +0 -41
- package/dist/tools/interaction/drag.js.map +0 -1
- package/dist/tools/interaction/fill.js +0 -28
- package/dist/tools/interaction/fill.js.map +0 -1
- package/dist/tools/interaction/hover.js +0 -29
- package/dist/tools/interaction/hover.js.map +0 -1
- package/dist/tools/interaction/index.js +0 -24
- package/dist/tools/interaction/index.js.map +0 -1
- package/dist/tools/interaction/press-key.js +0 -99
- package/dist/tools/interaction/press-key.js.map +0 -1
- package/dist/tools/interaction/resize-viewport.js +0 -110
- package/dist/tools/interaction/resize-viewport.js.map +0 -1
- package/dist/tools/interaction/resize-window.js +0 -261
- package/dist/tools/interaction/resize-window.js.map +0 -1
- package/dist/tools/interaction/scroll.js +0 -304
- package/dist/tools/interaction/scroll.js.map +0 -1
- package/dist/tools/interaction/select.js +0 -30
- package/dist/tools/interaction/select.js.map +0 -1
- package/dist/tools/navigation/go-back.js +0 -76
- package/dist/tools/navigation/go-back.js.map +0 -1
- package/dist/tools/navigation/go-forward.js +0 -76
- package/dist/tools/navigation/go-forward.js.map +0 -1
- package/dist/tools/navigation/go-to.js +0 -80
- package/dist/tools/navigation/go-to.js.map +0 -1
- package/dist/tools/navigation/index.js +0 -14
- package/dist/tools/navigation/index.js.map +0 -1
- package/dist/tools/navigation/reload.js +0 -76
- package/dist/tools/navigation/reload.js.map +0 -1
- package/dist/tools/o11y/get-console-messages.js +0 -151
- package/dist/tools/o11y/get-console-messages.js.map +0 -1
- package/dist/tools/o11y/get-http-requests.js +0 -216
- package/dist/tools/o11y/get-http-requests.js.map +0 -1
- package/dist/tools/o11y/get-trace-id.js +0 -30
- package/dist/tools/o11y/get-trace-id.js.map +0 -1
- package/dist/tools/o11y/get-web-vitals.js +0 -595
- package/dist/tools/o11y/get-web-vitals.js.map +0 -1
- package/dist/tools/o11y/index.js +0 -18
- package/dist/tools/o11y/index.js.map +0 -1
- package/dist/tools/o11y/new-trace-id.js +0 -32
- package/dist/tools/o11y/new-trace-id.js.map +0 -1
- package/dist/tools/o11y/set-trace-id.js +0 -28
- package/dist/tools/o11y/set-trace-id.js.map +0 -1
- package/dist/tools/react/get-component-for-element.js +0 -941
- package/dist/tools/react/get-component-for-element.js.map +0 -1
- package/dist/tools/react/get-element-for-component.js +0 -1190
- package/dist/tools/react/get-element-for-component.js.map +0 -1
- package/dist/tools/react/index.js +0 -10
- package/dist/tools/react/index.js.map +0 -1
- package/dist/tools/run/index.js +0 -7
- package/dist/tools/run/index.js.map +0 -1
- package/dist/tools/run/js-in-browser.js +0 -51
- package/dist/tools/run/js-in-browser.js.map +0 -1
- package/dist/tools/run/js-in-sandbox.js +0 -175
- package/dist/tools/run/js-in-sandbox.js.map +0 -1
- package/dist/tools/stub/clear.js +0 -41
- package/dist/tools/stub/clear.js.map +0 -1
- package/dist/tools/stub/index.js +0 -14
- package/dist/tools/stub/index.js.map +0 -1
- package/dist/tools/stub/intercept-http-request.js +0 -112
- package/dist/tools/stub/intercept-http-request.js.map +0 -1
- package/dist/tools/stub/list.js +0 -75
- package/dist/tools/stub/list.js.map +0 -1
- package/dist/tools/stub/mock-http-response.js +0 -152
- package/dist/tools/stub/mock-http-response.js.map +0 -1
- package/dist/tools/stub/stub-controller.js +0 -284
- package/dist/tools/stub/stub-controller.js.map +0 -1
- package/dist/tools/sync/index.js +0 -6
- package/dist/tools/sync/index.js.map +0 -1
- package/dist/tools/sync/wait-for-network-idle.js +0 -152
- package/dist/tools/sync/wait-for-network-idle.js.map +0 -1
- package/dist/tools/tool-executor.js +0 -79
- package/dist/tools/tool-executor.js.map +0 -1
- package/dist/tools/types.js +0 -3
- package/dist/tools/types.js.map +0 -1
- package/dist/types.js +0 -55
- package/dist/types.js.map +0 -1
- package/dist/utils/cli-utils.js +0 -253
- package/dist/utils/cli-utils.js.map +0 -1
- package/dist/utils.js +0 -85
- package/dist/utils.js.map +0 -1
|
@@ -1,323 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.OTELController = void 0;
|
|
40
|
-
const fs_1 = __importDefault(require("fs"));
|
|
41
|
-
const path_1 = __importDefault(require("path"));
|
|
42
|
-
const logger = __importStar(require("../logger"));
|
|
43
|
-
const otel_proxy_1 = require("./otel-proxy");
|
|
44
|
-
const config_1 = require("../config");
|
|
45
|
-
const OTEL_PROXY_LOCAL_PATH = '/__mcp_otel/';
|
|
46
|
-
const OTEL_BUNDLE_FILE_NAME = 'otel-initializer.bundle.js';
|
|
47
|
-
function _getOTELExporterConfig() {
|
|
48
|
-
if (config_1.OTEL_EXPORTER_TYPE === 'otlp/http' || config_1.OTEL_EXPORTER_HTTP_URL) {
|
|
49
|
-
if (!config_1.OTEL_EXPORTER_HTTP_URL) {
|
|
50
|
-
throw new Error(`OTEL exporter HTTP url must be set when OTEL exporter type is "otlp/http"`);
|
|
51
|
-
}
|
|
52
|
-
return {
|
|
53
|
-
type: 'otlp/http',
|
|
54
|
-
// IMPORTANT: OTEL_EXPORTER_HTTP_URL is a *base* URL, e.g. "http://localhost:4318"
|
|
55
|
-
// Browser exporter points to same-origin proxy. We choose a default suffix for traces.
|
|
56
|
-
// If you want to support metrics/logs too, you can configure initializer to use
|
|
57
|
-
// "/__mcp_otel/v1/metrics" and "/__mcp_otel/v1/logs" similarly.
|
|
58
|
-
url: OTEL_PROXY_LOCAL_PATH,
|
|
59
|
-
upstreamURL: config_1.OTEL_EXPORTER_HTTP_URL,
|
|
60
|
-
headers: config_1.OTEL_EXPORTER_HTTP_HEADERS,
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
else if (config_1.OTEL_EXPORTER_TYPE === 'console') {
|
|
64
|
-
return {
|
|
65
|
-
type: 'console',
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
else if (config_1.OTEL_EXPORTER_TYPE === 'none') {
|
|
69
|
-
return {
|
|
70
|
-
type: 'none',
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
else {
|
|
74
|
-
throw new Error(`Invalid OTEL exporter type ${config_1.OTEL_EXPORTER_TYPE}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
function _getOTELInstrumentationConfig() {
|
|
78
|
-
return {
|
|
79
|
-
userInteractionEvents: config_1.OTEL_INSTRUMENTATION_USER_INTERACTION_EVENTS,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
function _getOTELConfig() {
|
|
83
|
-
return {
|
|
84
|
-
serviceName: config_1.OTEL_SERVICE_NAME,
|
|
85
|
-
serviceVersion: config_1.OTEL_SERVICE_VERSION,
|
|
86
|
-
exporter: _getOTELExporterConfig(),
|
|
87
|
-
instrumentation: _getOTELInstrumentationConfig(),
|
|
88
|
-
debug: false,
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
function _readBundleContent(assetDir, bundleFileName) {
|
|
92
|
-
const assetDirAbs = path_1.default.isAbsolute(assetDir)
|
|
93
|
-
? assetDir
|
|
94
|
-
: path_1.default.join(process.cwd(), assetDir);
|
|
95
|
-
const filePath = path_1.default.join(assetDirAbs, bundleFileName);
|
|
96
|
-
if (!fs_1.default.existsSync(filePath)) {
|
|
97
|
-
throw new Error(`OTEL bundle not found at: ${filePath}`);
|
|
98
|
-
}
|
|
99
|
-
return fs_1.default.readFileSync(filePath, 'utf-8');
|
|
100
|
-
}
|
|
101
|
-
async function _applyConfigToPage(page, cfg) {
|
|
102
|
-
await page
|
|
103
|
-
.evaluate((nextCfg) => {
|
|
104
|
-
const g = globalThis;
|
|
105
|
-
if (!g.__MCP_DEVTOOLS__) {
|
|
106
|
-
g.__MCP_DEVTOOLS__ = {};
|
|
107
|
-
}
|
|
108
|
-
// Keep a stable fallback trace id for debugging & for pages
|
|
109
|
-
// where controller isn't available yet.
|
|
110
|
-
g.__MCP_TRACE_ID__ = nextCfg.traceId;
|
|
111
|
-
if (g.__mcpOtel && typeof g.__mcpOtel.init === 'function') {
|
|
112
|
-
g.__mcpOtel.init(nextCfg);
|
|
113
|
-
}
|
|
114
|
-
else {
|
|
115
|
-
g.__MCP_DEVTOOLS__.otelInitialized = false;
|
|
116
|
-
g.__MCP_DEVTOOLS__.otelInitError =
|
|
117
|
-
'__mcpOtel.init is not available while applying config';
|
|
118
|
-
}
|
|
119
|
-
}, cfg)
|
|
120
|
-
.catch((e) => {
|
|
121
|
-
// NOTE:
|
|
122
|
-
// We intentionally do not throw here because apply is best-effort and
|
|
123
|
-
// should not break user sessions; however, swallowing errors makes debugging hard.
|
|
124
|
-
const msg = e instanceof Error ? e.message : String(e);
|
|
125
|
-
logger.debug(`[otel-controller] applyConfigToPage failed (ignored): ${msg}`);
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Installs navigation sync so that after each main-frame navigation we re-apply
|
|
130
|
-
* the latest config. This is important because:
|
|
131
|
-
* - addInitScript config is a snapshot at install time
|
|
132
|
-
* - traceId can change mid-session
|
|
133
|
-
*
|
|
134
|
-
* IMPORTANT:
|
|
135
|
-
* We keep references to handlers so we can remove them on close().
|
|
136
|
-
*/
|
|
137
|
-
function _installAutoSync(browserContext, getCfg) {
|
|
138
|
-
const perPageHandlers = new WeakMap();
|
|
139
|
-
const attachToPage = (page) => {
|
|
140
|
-
// Avoid double-attaching to the same Page instance.
|
|
141
|
-
if (perPageHandlers.has(page)) {
|
|
142
|
-
return;
|
|
143
|
-
}
|
|
144
|
-
const onFrameNavigated = async (frame) => {
|
|
145
|
-
if (frame !== page.mainFrame()) {
|
|
146
|
-
return;
|
|
147
|
-
}
|
|
148
|
-
await _applyConfigToPage(page, getCfg());
|
|
149
|
-
};
|
|
150
|
-
perPageHandlers.set(page, onFrameNavigated);
|
|
151
|
-
page.on('framenavigated', onFrameNavigated);
|
|
152
|
-
};
|
|
153
|
-
// Attach to existing pages
|
|
154
|
-
for (const p of browserContext.pages()) {
|
|
155
|
-
attachToPage(p);
|
|
156
|
-
}
|
|
157
|
-
// Attach to future pages
|
|
158
|
-
const onNewPage = (p) => {
|
|
159
|
-
attachToPage(p);
|
|
160
|
-
};
|
|
161
|
-
browserContext.on('page', onNewPage);
|
|
162
|
-
const detach = () => {
|
|
163
|
-
// Remove context-level listener
|
|
164
|
-
try {
|
|
165
|
-
browserContext.off('page', onNewPage);
|
|
166
|
-
}
|
|
167
|
-
catch {
|
|
168
|
-
// Some older Playwright builds may differ; ignore.
|
|
169
|
-
}
|
|
170
|
-
// Remove per-page listeners (best-effort)
|
|
171
|
-
for (const p of browserContext.pages()) {
|
|
172
|
-
const h = perPageHandlers.get(p);
|
|
173
|
-
if (h) {
|
|
174
|
-
try {
|
|
175
|
-
p.off('framenavigated', h);
|
|
176
|
-
}
|
|
177
|
-
catch { }
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
// Note: We intentionally do not iterate WeakMap keys.
|
|
181
|
-
// We best-effort remove from currently known pages.
|
|
182
|
-
};
|
|
183
|
-
logger.debug('[otel-controller] auto-sync installed (page+framenavigated)');
|
|
184
|
-
return { detach };
|
|
185
|
-
}
|
|
186
|
-
class OTELController {
|
|
187
|
-
browserContext;
|
|
188
|
-
config;
|
|
189
|
-
proxy;
|
|
190
|
-
/**
|
|
191
|
-
* We prevent multiple installs per OTELController instance.
|
|
192
|
-
*/
|
|
193
|
-
initialized = false;
|
|
194
|
-
/**
|
|
195
|
-
* Handler cleanup for auto-sync.
|
|
196
|
-
*/
|
|
197
|
-
autoSyncDetach;
|
|
198
|
-
constructor(browserContext) {
|
|
199
|
-
this.browserContext = browserContext;
|
|
200
|
-
this.config = _getOTELConfig();
|
|
201
|
-
}
|
|
202
|
-
async init(options) {
|
|
203
|
-
if (this.initialized) {
|
|
204
|
-
logger.debug('[otel-controller] init skipped: BrowserContext already initialized');
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
// Enforce traceId presence; while OTELConfig allows optional traceId,
|
|
208
|
-
// runtime behavior expects it.
|
|
209
|
-
if (!options.traceId || !options.traceId.trim()) {
|
|
210
|
-
throw new Error('[otel-controller] init requires a non-empty traceId');
|
|
211
|
-
}
|
|
212
|
-
this.config.traceId = options.traceId;
|
|
213
|
-
const assetDir = config_1.OTEL_ASSETS_DIR || __dirname;
|
|
214
|
-
if (this.config.exporter.type === 'otlp/http') {
|
|
215
|
-
this.proxy = new otel_proxy_1.OTELProxy({
|
|
216
|
-
localPath: OTEL_PROXY_LOCAL_PATH,
|
|
217
|
-
upstreamUrl: this.config.exporter.upstreamURL,
|
|
218
|
-
upstreamHeaders: { ...(this.config.exporter.headers ?? {}) },
|
|
219
|
-
});
|
|
220
|
-
await this.proxy.install(this.browserContext);
|
|
221
|
-
}
|
|
222
|
-
// Add extra debug breadcrumbs to quickly verify routing is working.
|
|
223
|
-
// If you see 404s for /__mcp_otel/*, this tells you whether routing is installed.
|
|
224
|
-
logger.debug(`[otel-controller] exporter=${this.config.exporter.type} localBase=${OTEL_PROXY_LOCAL_PATH}` +
|
|
225
|
-
(this.config.exporter.type === 'otlp/http'
|
|
226
|
-
? ` upstreamBase=${this.config.exporter.upstreamURL}`
|
|
227
|
-
: ''));
|
|
228
|
-
const bundleContent = _readBundleContent(assetDir, OTEL_BUNDLE_FILE_NAME);
|
|
229
|
-
// Install auto-sync (we pass a getter so it always uses latest config)
|
|
230
|
-
const sync = _installAutoSync(this.browserContext, () => this.config);
|
|
231
|
-
this.autoSyncDetach = sync.detach;
|
|
232
|
-
// 1) Install the initializer bundle as an init script (no network, no <script> tag)
|
|
233
|
-
await this.browserContext.addInitScript({
|
|
234
|
-
content: bundleContent,
|
|
235
|
-
});
|
|
236
|
-
// 2) Install a config init script that runs on every new document (snapshot config at install time)
|
|
237
|
-
// Auto-sync will re-apply the latest config after navigations.
|
|
238
|
-
await this.browserContext.addInitScript((cfg) => {
|
|
239
|
-
const g = globalThis;
|
|
240
|
-
if (!g.__MCP_DEVTOOLS__) {
|
|
241
|
-
g.__MCP_DEVTOOLS__ = {};
|
|
242
|
-
}
|
|
243
|
-
g.__MCP_TRACE_ID__ = cfg.traceId;
|
|
244
|
-
if (g.__mcpOtel && typeof g.__mcpOtel.init === 'function') {
|
|
245
|
-
g.__mcpOtel.init(cfg);
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
g.__MCP_DEVTOOLS__.otelInitialized = false;
|
|
249
|
-
g.__MCP_DEVTOOLS__.otelInitError =
|
|
250
|
-
'__mcpOtel.init is not available (initializer bundle did not install)';
|
|
251
|
-
}
|
|
252
|
-
}, this.config);
|
|
253
|
-
this.initialized = true;
|
|
254
|
-
logger.debug('[otel-controller] init installed: bundle + config init scripts + auto-sync');
|
|
255
|
-
}
|
|
256
|
-
isOTELRequest(request) {
|
|
257
|
-
const path = new URL(request.url()).pathname;
|
|
258
|
-
return path.startsWith(OTEL_PROXY_LOCAL_PATH);
|
|
259
|
-
}
|
|
260
|
-
async isInitialized(page) {
|
|
261
|
-
return await page.evaluate(() => {
|
|
262
|
-
const g = globalThis;
|
|
263
|
-
return g.__MCP_DEVTOOLS__?.otelInitialized === true;
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
|
-
async getInitError(page) {
|
|
267
|
-
return await page.evaluate(() => {
|
|
268
|
-
const g = globalThis;
|
|
269
|
-
const v = g.__MCP_DEVTOOLS__?.otelInitError;
|
|
270
|
-
if (typeof v === 'string' && v.trim()) {
|
|
271
|
-
return v;
|
|
272
|
-
}
|
|
273
|
-
return undefined;
|
|
274
|
-
});
|
|
275
|
-
}
|
|
276
|
-
async getTraceId(page) {
|
|
277
|
-
return await page.evaluate(() => {
|
|
278
|
-
const g = globalThis;
|
|
279
|
-
if (g.__mcpOtel && typeof g.__mcpOtel.getTraceId === 'function') {
|
|
280
|
-
const tid = g.__mcpOtel.getTraceId();
|
|
281
|
-
if (typeof tid === 'string' && tid.trim()) {
|
|
282
|
-
return tid;
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
const fallback = g.__MCP_TRACE_ID__;
|
|
286
|
-
if (typeof fallback === 'string' && fallback.trim()) {
|
|
287
|
-
return fallback;
|
|
288
|
-
}
|
|
289
|
-
return undefined;
|
|
290
|
-
});
|
|
291
|
-
}
|
|
292
|
-
async setTraceId(page, traceId) {
|
|
293
|
-
// Persist in controller config so future navigations pick it up.
|
|
294
|
-
this.config.traceId = traceId;
|
|
295
|
-
await page.evaluate((tid) => {
|
|
296
|
-
const g = globalThis;
|
|
297
|
-
if (g.__mcpOtel && typeof g.__mcpOtel.setTraceId === 'function') {
|
|
298
|
-
g.__mcpOtel.setTraceId(tid);
|
|
299
|
-
}
|
|
300
|
-
else {
|
|
301
|
-
g.__MCP_TRACE_ID__ = tid;
|
|
302
|
-
}
|
|
303
|
-
}, traceId);
|
|
304
|
-
}
|
|
305
|
-
async close() {
|
|
306
|
-
// Cleanup auto-sync listeners to avoid:
|
|
307
|
-
// - leaking listeners across long sessions
|
|
308
|
-
// - duplicate apply calls if controller is re-created/re-inited
|
|
309
|
-
if (this.autoSyncDetach) {
|
|
310
|
-
try {
|
|
311
|
-
this.autoSyncDetach();
|
|
312
|
-
}
|
|
313
|
-
catch { }
|
|
314
|
-
this.autoSyncDetach = undefined;
|
|
315
|
-
}
|
|
316
|
-
if (this.proxy) {
|
|
317
|
-
await this.proxy.uninstall(this.browserContext);
|
|
318
|
-
this.proxy = undefined;
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
exports.OTELController = OTELController;
|
|
323
|
-
//# sourceMappingURL=otel-controller.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"otel-controller.js","sourceRoot":"","sources":["../../src/otel/otel-controller.ts"],"names":[],"mappings":"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"}
|