@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.
Files changed (95) hide show
  1. package/CLAUDE.md +344 -0
  2. package/LICENSE +21 -0
  3. package/README.md +250 -0
  4. package/chrome-extension/README.md +41 -0
  5. package/chrome-extension/background.js +3917 -0
  6. package/chrome-extension/chrome-session-manager.js +706 -0
  7. package/chrome-extension/content.css +181 -0
  8. package/chrome-extension/content.js +3022 -0
  9. package/chrome-extension/data-buffer.js +435 -0
  10. package/chrome-extension/dom-tracker.js +411 -0
  11. package/chrome-extension/extension-config.js +78 -0
  12. package/chrome-extension/firebase-client.js +278 -0
  13. package/chrome-extension/firebase-config.js +32 -0
  14. package/chrome-extension/firebase-config.module.js +22 -0
  15. package/chrome-extension/firebase-config.module.template.js +27 -0
  16. package/chrome-extension/firebase-config.template.js +36 -0
  17. package/chrome-extension/frame-capture.js +407 -0
  18. package/chrome-extension/icon128.png +1 -0
  19. package/chrome-extension/icon16.png +1 -0
  20. package/chrome-extension/icon48.png +1 -0
  21. package/chrome-extension/license-helper.js +181 -0
  22. package/chrome-extension/logger.js +23 -0
  23. package/chrome-extension/manifest.json +73 -0
  24. package/chrome-extension/network-tracker.js +510 -0
  25. package/chrome-extension/offscreen.html +10 -0
  26. package/chrome-extension/options.html +203 -0
  27. package/chrome-extension/options.js +282 -0
  28. package/chrome-extension/pako.min.js +2 -0
  29. package/chrome-extension/performance-monitor.js +533 -0
  30. package/chrome-extension/pii-redactor.js +405 -0
  31. package/chrome-extension/popup.html +532 -0
  32. package/chrome-extension/popup.js +2446 -0
  33. package/chrome-extension/upload-manager.js +323 -0
  34. package/chrome-extension/web-vitals.iife.js +1 -0
  35. package/config/api-keys.json +11 -0
  36. package/config/chrome-pilot-config.json +45 -0
  37. package/package.json +126 -0
  38. package/scripts/cleanup-processes.js +109 -0
  39. package/scripts/config-manager.js +280 -0
  40. package/scripts/generate-extension-config.js +53 -0
  41. package/scripts/setup-security.js +64 -0
  42. package/src/capture/architecture.js +426 -0
  43. package/src/capture/error-handling-tests.md +38 -0
  44. package/src/capture/error-handling-types.ts +360 -0
  45. package/src/capture/index.js +508 -0
  46. package/src/capture/interfaces.js +625 -0
  47. package/src/capture/memory-manager.js +713 -0
  48. package/src/capture/types.js +342 -0
  49. package/src/chrome-controller.js +2658 -0
  50. package/src/cli.js +19 -0
  51. package/src/config-loader.js +303 -0
  52. package/src/database.js +2178 -0
  53. package/src/firebase-license-manager.js +462 -0
  54. package/src/firebase-privacy-guard.js +397 -0
  55. package/src/http-server.js +1516 -0
  56. package/src/index-direct.js +157 -0
  57. package/src/index-modular.js +219 -0
  58. package/src/index-monolithic-backup.js +2230 -0
  59. package/src/index.js +305 -0
  60. package/src/legacy/chrome-controller-old.js +1406 -0
  61. package/src/legacy/index-express.js +625 -0
  62. package/src/legacy/index-old.js +977 -0
  63. package/src/legacy/routes.js +260 -0
  64. package/src/legacy/shared-storage.js +101 -0
  65. package/src/logger.js +10 -0
  66. package/src/mcp/handlers/chrome-tool-handler.js +306 -0
  67. package/src/mcp/handlers/element-tool-handler.js +51 -0
  68. package/src/mcp/handlers/frame-tool-handler.js +957 -0
  69. package/src/mcp/handlers/request-handler.js +104 -0
  70. package/src/mcp/handlers/workflow-tool-handler.js +636 -0
  71. package/src/mcp/server.js +68 -0
  72. package/src/mcp/tools/index.js +701 -0
  73. package/src/middleware/auth.js +371 -0
  74. package/src/middleware/security.js +267 -0
  75. package/src/port-discovery.js +258 -0
  76. package/src/routes/admin.js +182 -0
  77. package/src/services/browser-daemon.js +494 -0
  78. package/src/services/chrome-service.js +375 -0
  79. package/src/services/failover-manager.js +412 -0
  80. package/src/services/git-safety-service.js +675 -0
  81. package/src/services/heartbeat-manager.js +200 -0
  82. package/src/services/http-client.js +195 -0
  83. package/src/services/process-manager.js +318 -0
  84. package/src/services/process-tracker.js +574 -0
  85. package/src/services/profile-manager.js +449 -0
  86. package/src/services/project-manager.js +415 -0
  87. package/src/services/session-manager.js +497 -0
  88. package/src/services/session-registry.js +491 -0
  89. package/src/services/unified-session-manager.js +678 -0
  90. package/src/shared-storage-old.js +267 -0
  91. package/src/standalone-server.js +53 -0
  92. package/src/utils/extension-path.js +145 -0
  93. package/src/utils.js +187 -0
  94. package/src/validation/log-transformer.js +125 -0
  95. 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
+ }