browser-devtools-mcp 0.1.4 → 0.1.5
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/README.md +535 -7
- package/SECURITY.md +136 -0
- package/dist/cli.js +1847 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.js +5 -1
- package/dist/config.js.map +1 -1
- package/dist/context.js +7 -7
- package/dist/context.js.map +1 -1
- package/dist/daemon-server.js +338 -0
- package/dist/daemon-server.js.map +1 -0
- package/dist/index.js +3 -260
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.js +401 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/tools/a11y/take-aria-snapshot.js.map +1 -1
- package/dist/tools/a11y/take-ax-tree-snapshot.js.map +1 -1
- package/dist/tools/content/get-as-html.js.map +1 -1
- package/dist/tools/content/get-as-text.js.map +1 -1
- package/dist/tools/content/save-as-pdf.js.map +1 -1
- package/dist/tools/content/take-screenshot.js.map +1 -1
- package/dist/tools/figma/compare-page-with-design.js.map +1 -1
- package/dist/tools/interaction/click.js.map +1 -1
- package/dist/tools/interaction/drag.js.map +1 -1
- package/dist/tools/interaction/fill.js.map +1 -1
- package/dist/tools/interaction/hover.js.map +1 -1
- package/dist/tools/interaction/press-key.js.map +1 -1
- package/dist/tools/interaction/resize-viewport.js.map +1 -1
- package/dist/tools/interaction/resize-window.js.map +1 -1
- package/dist/tools/interaction/scroll.js.map +1 -1
- package/dist/tools/interaction/select.js.map +1 -1
- package/dist/tools/navigation/go-back.js.map +1 -1
- package/dist/tools/navigation/go-forward.js.map +1 -1
- package/dist/tools/navigation/go-to.js.map +1 -1
- package/dist/tools/navigation/reload.js.map +1 -1
- package/dist/tools/o11y/get-console-messages.js.map +1 -1
- package/dist/tools/o11y/get-http-requests.js.map +1 -1
- package/dist/tools/o11y/get-trace-id.js.map +1 -1
- package/dist/tools/o11y/get-web-vitals.js.map +1 -1
- package/dist/tools/o11y/new-trace-id.js.map +1 -1
- package/dist/tools/o11y/set-trace-id.js.map +1 -1
- package/dist/tools/react/get-component-for-element.js.map +1 -1
- package/dist/tools/react/get-element-for-component.js.map +1 -1
- package/dist/tools/run/js-in-browser.js.map +1 -1
- package/dist/tools/run/js-in-sandbox.js.map +1 -1
- package/dist/tools/stub/clear.js.map +1 -1
- package/dist/tools/stub/intercept-http-request.js.map +1 -1
- package/dist/tools/stub/list.js.map +1 -1
- package/dist/tools/stub/mock-http-response.js.map +1 -1
- package/dist/tools/sync/wait-for-network-idle.js.map +1 -1
- package/dist/tools/tool-executor.js +1 -1
- package/dist/tools/tool-executor.js.map +1 -1
- package/dist/utils/cli-utils.js +253 -0
- package/dist/utils/cli-utils.js.map +1 -0
- package/package.json +6 -3
- package/dist/server.js +0 -154
- package/dist/server.js.map +0 -1
package/dist/server.js
DELETED
|
@@ -1,154 +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
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.createServer = createServer;
|
|
37
|
-
exports.createAndConnectServer = createAndConnectServer;
|
|
38
|
-
exports.createSession = createSession;
|
|
39
|
-
const logger = __importStar(require("./logger"));
|
|
40
|
-
const server_info_1 = require("./server-info");
|
|
41
|
-
const tools_1 = require("./tools");
|
|
42
|
-
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
43
|
-
function _getImage(response) {
|
|
44
|
-
if ('image' in response &&
|
|
45
|
-
response.image !== null &&
|
|
46
|
-
typeof response.image === 'object' &&
|
|
47
|
-
'data' in response.image &&
|
|
48
|
-
'mimeType' in response.image &&
|
|
49
|
-
Buffer.isBuffer(response.image.data) &&
|
|
50
|
-
typeof response.image.mimeType === 'string') {
|
|
51
|
-
const image = response.image;
|
|
52
|
-
delete response.image;
|
|
53
|
-
return image;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
function _toResponse(response) {
|
|
57
|
-
const image = _getImage(response);
|
|
58
|
-
const contents = [];
|
|
59
|
-
contents.push({
|
|
60
|
-
type: 'text',
|
|
61
|
-
text: JSON.stringify(response, null, 2),
|
|
62
|
-
});
|
|
63
|
-
if (image) {
|
|
64
|
-
if (image.mimeType === 'image/svg+xml') {
|
|
65
|
-
contents.push({
|
|
66
|
-
type: 'text',
|
|
67
|
-
text: image.data.toString(),
|
|
68
|
-
mimeType: image.mimeType,
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
else {
|
|
72
|
-
contents.push({
|
|
73
|
-
type: 'image',
|
|
74
|
-
data: image.data.toString('base64'),
|
|
75
|
-
mimeType: image.mimeType,
|
|
76
|
-
});
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
return {
|
|
80
|
-
content: contents,
|
|
81
|
-
structuredContent: response,
|
|
82
|
-
isError: false,
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
function createServer(opts) {
|
|
86
|
-
const server = new mcp_js_1.McpServer({
|
|
87
|
-
name: server_info_1.SERVER_NAME,
|
|
88
|
-
version: server_info_1.SERVER_VERSION,
|
|
89
|
-
}, {
|
|
90
|
-
capabilities: {
|
|
91
|
-
resources: {},
|
|
92
|
-
tools: {},
|
|
93
|
-
},
|
|
94
|
-
instructions: (0, server_info_1.getServerInstructions)(),
|
|
95
|
-
});
|
|
96
|
-
const messages = [];
|
|
97
|
-
messages.push({
|
|
98
|
-
role: 'user',
|
|
99
|
-
content: {
|
|
100
|
-
type: 'text',
|
|
101
|
-
text: server_info_1.UI_DEBUGGING_POLICY,
|
|
102
|
-
},
|
|
103
|
-
});
|
|
104
|
-
server.registerPrompt('default_system', {
|
|
105
|
-
title: 'Default System Prompt',
|
|
106
|
-
description: 'General behavior for the AI assistant',
|
|
107
|
-
}, async () => ({
|
|
108
|
-
description: "Defines the assistant's general reasoning and tool usage rules.",
|
|
109
|
-
messages,
|
|
110
|
-
}));
|
|
111
|
-
const toolExecutor = new tools_1.ToolExecutor(() => opts.sessionIdProvider ? opts.sessionIdProvider() : '');
|
|
112
|
-
const createToolCallback = (tool) => {
|
|
113
|
-
return async (args) => {
|
|
114
|
-
try {
|
|
115
|
-
const response = await toolExecutor.executeTool(tool, args);
|
|
116
|
-
return _toResponse(response);
|
|
117
|
-
}
|
|
118
|
-
catch (error) {
|
|
119
|
-
return {
|
|
120
|
-
content: [
|
|
121
|
-
{ type: 'text', text: `Error: ${error.message}` },
|
|
122
|
-
],
|
|
123
|
-
isError: true,
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
};
|
|
127
|
-
};
|
|
128
|
-
tools_1.tools.forEach((t) => {
|
|
129
|
-
logger.debug(`Registering tool ${t.name()} ...`);
|
|
130
|
-
server.registerTool(t.name(), {
|
|
131
|
-
description: t.description(),
|
|
132
|
-
inputSchema: t.inputSchema(),
|
|
133
|
-
outputSchema: t.outputSchema(),
|
|
134
|
-
}, createToolCallback(t));
|
|
135
|
-
});
|
|
136
|
-
return server;
|
|
137
|
-
}
|
|
138
|
-
async function createAndConnectServer(transport, opts) {
|
|
139
|
-
const server = createServer({
|
|
140
|
-
config: opts.config,
|
|
141
|
-
sessionIdProvider: () => transport.sessionId,
|
|
142
|
-
});
|
|
143
|
-
await server.connect(transport);
|
|
144
|
-
return server;
|
|
145
|
-
}
|
|
146
|
-
function createSession(transport, server) {
|
|
147
|
-
return {
|
|
148
|
-
transport,
|
|
149
|
-
server,
|
|
150
|
-
closed: false,
|
|
151
|
-
lastActiveAt: Date.now(),
|
|
152
|
-
};
|
|
153
|
-
}
|
|
154
|
-
//# sourceMappingURL=server.js.map
|
package/dist/server.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|