@dynamicu/chromedebug-mcp 2.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/CLAUDE.md +344 -0
- package/LICENSE +21 -0
- package/README.md +250 -0
- package/chrome-extension/README.md +41 -0
- package/chrome-extension/background.js +3917 -0
- package/chrome-extension/chrome-session-manager.js +706 -0
- package/chrome-extension/content.css +181 -0
- package/chrome-extension/content.js +3022 -0
- package/chrome-extension/data-buffer.js +435 -0
- package/chrome-extension/dom-tracker.js +411 -0
- package/chrome-extension/extension-config.js +78 -0
- package/chrome-extension/firebase-client.js +278 -0
- package/chrome-extension/firebase-config.js +32 -0
- package/chrome-extension/firebase-config.module.js +22 -0
- package/chrome-extension/firebase-config.module.template.js +27 -0
- package/chrome-extension/firebase-config.template.js +36 -0
- package/chrome-extension/frame-capture.js +407 -0
- package/chrome-extension/icon128.png +1 -0
- package/chrome-extension/icon16.png +1 -0
- package/chrome-extension/icon48.png +1 -0
- package/chrome-extension/license-helper.js +181 -0
- package/chrome-extension/logger.js +23 -0
- package/chrome-extension/manifest.json +73 -0
- package/chrome-extension/network-tracker.js +510 -0
- package/chrome-extension/offscreen.html +10 -0
- package/chrome-extension/options.html +203 -0
- package/chrome-extension/options.js +282 -0
- package/chrome-extension/pako.min.js +2 -0
- package/chrome-extension/performance-monitor.js +533 -0
- package/chrome-extension/pii-redactor.js +405 -0
- package/chrome-extension/popup.html +532 -0
- package/chrome-extension/popup.js +2446 -0
- package/chrome-extension/upload-manager.js +323 -0
- package/chrome-extension/web-vitals.iife.js +1 -0
- package/config/api-keys.json +11 -0
- package/config/chrome-pilot-config.json +45 -0
- package/package.json +126 -0
- package/scripts/cleanup-processes.js +109 -0
- package/scripts/config-manager.js +280 -0
- package/scripts/generate-extension-config.js +53 -0
- package/scripts/setup-security.js +64 -0
- package/src/capture/architecture.js +426 -0
- package/src/capture/error-handling-tests.md +38 -0
- package/src/capture/error-handling-types.ts +360 -0
- package/src/capture/index.js +508 -0
- package/src/capture/interfaces.js +625 -0
- package/src/capture/memory-manager.js +713 -0
- package/src/capture/types.js +342 -0
- package/src/chrome-controller.js +2658 -0
- package/src/cli.js +19 -0
- package/src/config-loader.js +303 -0
- package/src/database.js +2178 -0
- package/src/firebase-license-manager.js +462 -0
- package/src/firebase-privacy-guard.js +397 -0
- package/src/http-server.js +1516 -0
- package/src/index-direct.js +157 -0
- package/src/index-modular.js +219 -0
- package/src/index-monolithic-backup.js +2230 -0
- package/src/index.js +305 -0
- package/src/legacy/chrome-controller-old.js +1406 -0
- package/src/legacy/index-express.js +625 -0
- package/src/legacy/index-old.js +977 -0
- package/src/legacy/routes.js +260 -0
- package/src/legacy/shared-storage.js +101 -0
- package/src/logger.js +10 -0
- package/src/mcp/handlers/chrome-tool-handler.js +306 -0
- package/src/mcp/handlers/element-tool-handler.js +51 -0
- package/src/mcp/handlers/frame-tool-handler.js +957 -0
- package/src/mcp/handlers/request-handler.js +104 -0
- package/src/mcp/handlers/workflow-tool-handler.js +636 -0
- package/src/mcp/server.js +68 -0
- package/src/mcp/tools/index.js +701 -0
- package/src/middleware/auth.js +371 -0
- package/src/middleware/security.js +267 -0
- package/src/port-discovery.js +258 -0
- package/src/routes/admin.js +182 -0
- package/src/services/browser-daemon.js +494 -0
- package/src/services/chrome-service.js +375 -0
- package/src/services/failover-manager.js +412 -0
- package/src/services/git-safety-service.js +675 -0
- package/src/services/heartbeat-manager.js +200 -0
- package/src/services/http-client.js +195 -0
- package/src/services/process-manager.js +318 -0
- package/src/services/process-tracker.js +574 -0
- package/src/services/profile-manager.js +449 -0
- package/src/services/project-manager.js +415 -0
- package/src/services/session-manager.js +497 -0
- package/src/services/session-registry.js +491 -0
- package/src/services/unified-session-manager.js +678 -0
- package/src/shared-storage-old.js +267 -0
- package/src/standalone-server.js +53 -0
- package/src/utils/extension-path.js +145 -0
- package/src/utils.js +187 -0
- package/src/validation/log-transformer.js +125 -0
- package/src/validation/schemas.js +391 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Request Handler module for MCP tool calls
|
|
3
|
+
* Centralized handler that routes tool calls to appropriate implementations
|
|
4
|
+
* Maintains all security validations from the original implementation
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { ChromeToolHandler } from './chrome-tool-handler.js';
|
|
8
|
+
import { FrameToolHandler } from './frame-tool-handler.js';
|
|
9
|
+
import { WorkflowToolHandler } from './workflow-tool-handler.js';
|
|
10
|
+
import { ElementToolHandler } from './element-tool-handler.js';
|
|
11
|
+
|
|
12
|
+
export class RequestHandler {
|
|
13
|
+
constructor(chromeController, toolRegistry) {
|
|
14
|
+
this.chromeController = chromeController;
|
|
15
|
+
this.toolRegistry = toolRegistry;
|
|
16
|
+
|
|
17
|
+
// Initialize specialized handlers
|
|
18
|
+
this.chromeHandler = new ChromeToolHandler(chromeController);
|
|
19
|
+
this.frameHandler = new FrameToolHandler(chromeController);
|
|
20
|
+
this.workflowHandler = new WorkflowToolHandler(chromeController);
|
|
21
|
+
this.elementHandler = new ElementToolHandler(chromeController);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Main tool call handler - routes requests to appropriate handlers
|
|
26
|
+
* @param {Object} request - MCP tool call request
|
|
27
|
+
* @returns {Object} Tool call response
|
|
28
|
+
*/
|
|
29
|
+
async handleToolCall(request) {
|
|
30
|
+
const { name, arguments: args } = request.params;
|
|
31
|
+
|
|
32
|
+
// Validate tool exists
|
|
33
|
+
if (!this.toolRegistry.hasTool(name)) {
|
|
34
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
try {
|
|
38
|
+
// Route to appropriate handler based on tool category
|
|
39
|
+
const result = await this.routeToolCall(name, args);
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
content: [
|
|
43
|
+
{
|
|
44
|
+
type: 'text',
|
|
45
|
+
text: JSON.stringify(result, null, 2),
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
};
|
|
49
|
+
} catch (error) {
|
|
50
|
+
console.error(`Error executing tool ${name}:`, error);
|
|
51
|
+
return {
|
|
52
|
+
content: [
|
|
53
|
+
{
|
|
54
|
+
type: 'text',
|
|
55
|
+
text: JSON.stringify({
|
|
56
|
+
error: error.message,
|
|
57
|
+
stack: process.env.NODE_ENV === 'development' ? error.stack : undefined
|
|
58
|
+
}, null, 2),
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
isError: true,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Routes tool calls to appropriate specialized handlers
|
|
68
|
+
* @param {string} name - Tool name
|
|
69
|
+
* @param {Object} args - Tool arguments
|
|
70
|
+
* @returns {Object} Tool execution result
|
|
71
|
+
*/
|
|
72
|
+
async routeToolCall(name, args) {
|
|
73
|
+
// Chrome control tools
|
|
74
|
+
if (['launch_chrome', 'connect_to_existing_chrome', 'check_connection', 'force_reset',
|
|
75
|
+
'navigate_to', 'pause_execution', 'resume_execution', 'step_over', 'evaluate_expression',
|
|
76
|
+
'get_scopes', 'set_breakpoint', 'get_logs', 'take_screenshot', 'get_page_content'].includes(name)) {
|
|
77
|
+
return await this.chromeHandler.handle(name, args);
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// Element interaction tools
|
|
81
|
+
if (['get_selected_element', 'apply_css_to_selected', 'execute_js_on_selected',
|
|
82
|
+
'clear_selected_element', 'get_websocket_info'].includes(name)) {
|
|
83
|
+
return await this.elementHandler.handle(name, args);
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
// Frame recording tools and snapshots
|
|
87
|
+
if (['chromedebug_show_frames', 'get_frame_session_info', 'get_frame',
|
|
88
|
+
'search_frame_logs', 'get_frame_logs_paginated', 'get_frame_screenshot',
|
|
89
|
+
'get_screen_interactions', 'take_snapshot', 'list_snapshots',
|
|
90
|
+
'get_snapshot', 'search_snapshot_logs'].includes(name)) {
|
|
91
|
+
return await this.frameHandler.handle(name, args);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Workflow tools
|
|
95
|
+
if (['get_workflow_recording', 'list_workflow_recordings', 'save_restore_point',
|
|
96
|
+
'restore_from_point', 'list_restore_points', 'play_workflow_recording',
|
|
97
|
+
'play_workflow_by_name', 'get_workflow_function_traces', 'get_workflow_errors',
|
|
98
|
+
'get_workflow_summary', 'get_workflow_actions_filtered'].includes(name)) {
|
|
99
|
+
return await this.workflowHandler.handle(name, args);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
throw new Error(`No handler found for tool: ${name}`);
|
|
103
|
+
}
|
|
104
|
+
}
|