weixin-devtools-mcp 0.0.1 → 0.1.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 (139) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +101 -114
  3. package/build/MiniProgramContext.d.ts +307 -0
  4. package/build/MiniProgramContext.d.ts.map +1 -0
  5. package/build/MiniProgramContext.js +650 -0
  6. package/build/MiniProgramContext.js.map +1 -0
  7. package/build/collectors/Collector.d.ts +127 -0
  8. package/build/collectors/Collector.d.ts.map +1 -0
  9. package/build/collectors/Collector.js +252 -0
  10. package/build/collectors/Collector.js.map +1 -0
  11. package/build/collectors/ConsoleCollector.d.ts +104 -0
  12. package/build/collectors/ConsoleCollector.d.ts.map +1 -0
  13. package/build/collectors/ConsoleCollector.js +157 -0
  14. package/build/collectors/ConsoleCollector.js.map +1 -0
  15. package/build/collectors/NetworkCollector.d.ts +167 -0
  16. package/build/collectors/NetworkCollector.d.ts.map +1 -0
  17. package/build/collectors/NetworkCollector.js +265 -0
  18. package/build/collectors/NetworkCollector.js.map +1 -0
  19. package/build/collectors/index.d.ts +13 -0
  20. package/build/collectors/index.d.ts.map +1 -0
  21. package/build/collectors/index.js +17 -0
  22. package/build/collectors/index.js.map +1 -0
  23. package/build/config/tool-profile.d.ts +30 -0
  24. package/build/config/tool-profile.d.ts.map +1 -0
  25. package/build/config/tool-profile.js +138 -0
  26. package/build/config/tool-profile.js.map +1 -0
  27. package/build/connection/adapters.d.ts +3 -0
  28. package/build/connection/adapters.d.ts.map +1 -0
  29. package/build/connection/adapters.js +134 -0
  30. package/build/connection/adapters.js.map +1 -0
  31. package/build/connection/errors.d.ts +34 -0
  32. package/build/connection/errors.d.ts.map +1 -0
  33. package/build/connection/errors.js +101 -0
  34. package/build/connection/errors.js.map +1 -0
  35. package/build/connection/health-probe.d.ts +4 -0
  36. package/build/connection/health-probe.d.ts.map +1 -0
  37. package/build/connection/health-probe.js +60 -0
  38. package/build/connection/health-probe.js.map +1 -0
  39. package/build/connection/index.d.ts +6 -0
  40. package/build/connection/index.d.ts.map +1 -0
  41. package/build/connection/index.js +6 -0
  42. package/build/connection/index.js.map +1 -0
  43. package/build/connection/manager.d.ts +19 -0
  44. package/build/connection/manager.d.ts.map +1 -0
  45. package/build/connection/manager.js +198 -0
  46. package/build/connection/manager.js.map +1 -0
  47. package/build/connection/resolver.d.ts +3 -0
  48. package/build/connection/resolver.d.ts.map +1 -0
  49. package/build/connection/resolver.js +96 -0
  50. package/build/connection/resolver.js.map +1 -0
  51. package/build/connection/types.d.ts +95 -0
  52. package/build/connection/types.d.ts.map +1 -0
  53. package/build/connection/types.js +16 -0
  54. package/build/connection/types.js.map +1 -0
  55. package/build/formatters/consoleFormatter.d.ts +50 -0
  56. package/build/formatters/consoleFormatter.d.ts.map +1 -0
  57. package/build/formatters/consoleFormatter.js +116 -0
  58. package/build/formatters/consoleFormatter.js.map +1 -0
  59. package/build/formatters/snapshotFormatter.d.ts +41 -0
  60. package/build/formatters/snapshotFormatter.d.ts.map +1 -0
  61. package/build/formatters/snapshotFormatter.js +156 -0
  62. package/build/formatters/snapshotFormatter.js.map +1 -0
  63. package/build/index.d.ts +11 -0
  64. package/build/index.d.ts.map +1 -0
  65. package/build/index.js +45 -9
  66. package/build/index.js.map +1 -0
  67. package/build/server.d.ts +7 -0
  68. package/build/server.d.ts.map +1 -0
  69. package/build/server.js +70 -30
  70. package/build/server.js.map +1 -0
  71. package/build/tools/ToolDefinition.d.ts +215 -0
  72. package/build/tools/ToolDefinition.d.ts.map +1 -0
  73. package/build/tools/ToolDefinition.js +9 -7
  74. package/build/tools/ToolDefinition.js.map +1 -0
  75. package/build/tools/assert.d.ts +17 -0
  76. package/build/tools/assert.d.ts.map +1 -0
  77. package/build/tools/assert.js +8 -88
  78. package/build/tools/assert.js.map +1 -0
  79. package/build/tools/connection.d.ts +13 -0
  80. package/build/tools/connection.d.ts.map +1 -0
  81. package/build/tools/connection.js +332 -615
  82. package/build/tools/connection.js.map +1 -0
  83. package/build/tools/console.d.ts +20 -0
  84. package/build/tools/console.d.ts.map +1 -0
  85. package/build/tools/console.js +162 -152
  86. package/build/tools/console.js.map +1 -0
  87. package/build/tools/diagnose.d.ts +22 -0
  88. package/build/tools/diagnose.d.ts.map +1 -0
  89. package/build/tools/diagnose.js +400 -13
  90. package/build/tools/diagnose.js.map +1 -0
  91. package/build/tools/index.d.ts +6 -0
  92. package/build/tools/index.d.ts.map +1 -0
  93. package/build/tools/index.js +3 -77
  94. package/build/tools/index.js.map +1 -0
  95. package/build/tools/input.d.ts +21 -0
  96. package/build/tools/input.d.ts.map +1 -0
  97. package/build/tools/input.js +73 -139
  98. package/build/tools/input.js.map +1 -0
  99. package/build/tools/navigate.d.ts +21 -0
  100. package/build/tools/navigate.d.ts.map +1 -0
  101. package/build/tools/navigate.js +63 -126
  102. package/build/tools/navigate.js.map +1 -0
  103. package/build/tools/network.d.ts +17 -0
  104. package/build/tools/network.d.ts.map +1 -0
  105. package/build/tools/network.js +75 -887
  106. package/build/tools/network.js.map +1 -0
  107. package/build/tools/page.d.ts +13 -0
  108. package/build/tools/page.d.ts.map +1 -0
  109. package/build/tools/page.js +4 -1
  110. package/build/tools/page.js.map +1 -0
  111. package/build/tools/screenshot.d.ts +9 -0
  112. package/build/tools/screenshot.d.ts.map +1 -0
  113. package/build/tools/screenshot.js +3 -1
  114. package/build/tools/screenshot.js.map +1 -0
  115. package/build/tools/script.d.ts +6 -0
  116. package/build/tools/script.d.ts.map +1 -0
  117. package/build/tools/script.js +92 -0
  118. package/build/tools/script.js.map +1 -0
  119. package/build/tools/snapshot.d.ts +9 -0
  120. package/build/tools/snapshot.d.ts.map +1 -0
  121. package/build/tools/snapshot.js +78 -12
  122. package/build/tools/snapshot.js.map +1 -0
  123. package/build/tools/tools.d.ts +15 -0
  124. package/build/tools/tools.d.ts.map +1 -0
  125. package/build/tools/tools.js +62 -0
  126. package/build/tools/tools.js.map +1 -0
  127. package/build/tools.d.ts +431 -0
  128. package/build/tools.d.ts.map +1 -0
  129. package/build/tools.js +235 -117
  130. package/build/tools.js.map +1 -0
  131. package/build/types/errors.d.ts +189 -0
  132. package/build/types/errors.d.ts.map +1 -0
  133. package/build/types/errors.js +257 -0
  134. package/build/types/errors.js.map +1 -0
  135. package/build/utils/idGenerator.d.ts +21 -0
  136. package/build/utils/idGenerator.d.ts.map +1 -0
  137. package/build/utils/idGenerator.js +23 -0
  138. package/build/utils/idGenerator.js.map +1 -0
  139. package/package.json +34 -10
@@ -2,10 +2,10 @@
2
2
  * 诊断工具
3
3
  * 帮助用户调试连接和配置问题
4
4
  */
5
- import { z } from 'zod';
6
- import { defineTool } from './ToolDefinition.js';
7
5
  import { existsSync } from 'fs';
8
6
  import { resolve, isAbsolute } from 'path';
7
+ import { z } from 'zod';
8
+ import { defineTool, ToolCategory } from './ToolDefinition.js';
9
9
  /**
10
10
  * 诊断连接问题工具
11
11
  */
@@ -17,6 +17,7 @@ export const diagnoseConnectionTool = defineTool({
17
17
  verbose: z.boolean().optional().default(false).describe('是否输出详细诊断信息'),
18
18
  }),
19
19
  annotations: {
20
+ category: ToolCategory.DEBUG,
20
21
  audience: ['developers'],
21
22
  },
22
23
  handler: async (request, response, context) => {
@@ -101,7 +102,7 @@ export const diagnoseConnectionTool = defineTool({
101
102
  const pagePath = await context.currentPage.path;
102
103
  response.appendResponseLine(` 当前页面: ${pagePath}`);
103
104
  }
104
- catch (error) {
105
+ catch {
105
106
  response.appendResponseLine('⚠️ 获取当前页面信息失败');
106
107
  }
107
108
  }
@@ -119,8 +120,11 @@ export const diagnoseConnectionTool = defineTool({
119
120
  response.appendResponseLine(` 当前工作目录: ${process.cwd()}`);
120
121
  response.appendResponseLine(` 元素映射大小: ${context.elementMap.size}`);
121
122
  response.appendResponseLine(` Console监听状态: ${context.consoleStorage.isMonitoring ? '已启动' : '未启动'}`);
122
- response.appendResponseLine(` Console消息数量: ${context.consoleStorage.consoleMessages.length}`);
123
- response.appendResponseLine(` 异常消息数量: ${context.consoleStorage.exceptionMessages.length}`);
123
+ // 使用新的 navigations 结构统计消息数量
124
+ const totalMessages = context.consoleStorage.navigations.reduce((sum, session) => sum + session.messages.length, 0);
125
+ const totalExceptions = context.consoleStorage.navigations.reduce((sum, session) => sum + session.exceptions.length, 0);
126
+ response.appendResponseLine(` Console消息数量: ${totalMessages}`);
127
+ response.appendResponseLine(` 异常消息数量: ${totalExceptions}`);
124
128
  }
125
129
  // 7. 总结和建议
126
130
  response.appendResponseLine('');
@@ -129,7 +133,7 @@ export const diagnoseConnectionTool = defineTool({
129
133
  response.appendResponseLine('✅ 项目配置检查通过,可以尝试连接');
130
134
  response.appendResponseLine('');
131
135
  response.appendResponseLine('💡 建议的连接命令:');
132
- response.appendResponseLine(`connect_devtools(projectPath: "${resolvedPath}")`);
136
+ response.appendResponseLine(`connect_devtools(projectPath: "${resolvedPath}", strategy: "auto")`);
133
137
  }
134
138
  else {
135
139
  response.appendResponseLine('❌ 发现配置问题,请根据上述建议修复后重试');
@@ -155,6 +159,7 @@ export const debugPageElementsTool = defineTool({
155
159
  customSelector: z.string().optional().describe('自定义选择器进行测试'),
156
160
  }),
157
161
  annotations: {
162
+ category: ToolCategory.DEBUG,
158
163
  audience: ['developers'],
159
164
  },
160
165
  handler: async (request, response, context) => {
@@ -262,7 +267,7 @@ export const debugPageElementsTool = defineTool({
262
267
  const text = await element.text().catch(() => '');
263
268
  response.appendResponseLine(` [${i}] ${tagName}${text ? ` - "${text.substring(0, 50)}"` : ''}`);
264
269
  }
265
- catch (error) {
270
+ catch {
266
271
  response.appendResponseLine(` [${i}] 元素信息获取失败`);
267
272
  }
268
273
  }
@@ -303,15 +308,16 @@ export const checkEnvironmentTool = defineTool({
303
308
  description: '检查微信开发者工具自动化环境配置',
304
309
  schema: z.object({}),
305
310
  annotations: {
311
+ category: ToolCategory.DEBUG,
306
312
  audience: ['developers'],
307
313
  },
308
- handler: async (request, response, context) => {
314
+ handler: async (_request, response, context) => {
309
315
  response.appendResponseLine('🌍 检查微信开发者工具自动化环境...');
310
316
  response.appendResponseLine('');
311
317
  // 检查依赖
312
318
  response.appendResponseLine('📦 依赖检查');
313
319
  try {
314
- const automator = await import('miniprogram-automator');
320
+ await import('miniprogram-automator');
315
321
  response.appendResponseLine('✅ miniprogram-automator 模块加载成功');
316
322
  }
317
323
  catch (error) {
@@ -323,12 +329,12 @@ export const checkEnvironmentTool = defineTool({
323
329
  // 检查MCP服务器配置
324
330
  response.appendResponseLine('');
325
331
  response.appendResponseLine('⚙️ MCP服务器配置建议');
326
- response.appendResponseLine('1. 原版服务器 (兼容性):');
327
- response.appendResponseLine(' "command": "/path/to/weixin-devtools-mcp/build/index.js"');
328
- response.appendResponseLine('');
329
- response.appendResponseLine('2. 新版模块化服务器 (推荐):');
332
+ response.appendResponseLine('1. 推荐使用模块化服务器:');
330
333
  response.appendResponseLine(' "command": "/path/to/weixin-devtools-mcp/build/server.js"');
331
334
  response.appendResponseLine('');
335
+ response.appendResponseLine('2. 如需全量工具,可追加参数:');
336
+ response.appendResponseLine(' "args": ["--tools-profile=full"]');
337
+ response.appendResponseLine('');
332
338
  response.appendResponseLine('💡 配置文件位置:');
333
339
  response.appendResponseLine(' macOS: ~/Library/Application Support/Claude/claude_desktop_config.json');
334
340
  response.appendResponseLine(' Windows: %APPDATA%/Claude/claude_desktop_config.json');
@@ -346,3 +352,384 @@ export const checkEnvironmentTool = defineTool({
346
352
  response.appendResponseLine('✅ 环境检查完成');
347
353
  },
348
354
  });
355
+ /**
356
+ * 连接流程调试工具
357
+ * 用于实时追踪和调试连接过程的每个步骤
358
+ */
359
+ export const debugConnectionFlowTool = defineTool({
360
+ name: 'debug_connection_flow',
361
+ description: '实时追踪和调试连接流程的详细步骤,记录每个阶段的状态和耗时',
362
+ schema: z.object({
363
+ projectPath: z.string().describe('小程序项目的绝对路径'),
364
+ mode: z.enum(['auto', 'launch', 'connect']).optional().default('auto')
365
+ .describe('连接模式: auto(智能), launch(传统), connect(两阶段)'),
366
+ dryRun: z.boolean().optional().default(false).describe('仅模拟连接流程,不实际连接'),
367
+ captureSnapshot: z.boolean().optional().default(true).describe('捕获每个步骤的状态快照'),
368
+ verbose: z.boolean().optional().default(true).describe('显示详细的调试信息'),
369
+ }),
370
+ annotations: {
371
+ category: ToolCategory.DEBUG,
372
+ audience: ['developers'],
373
+ },
374
+ handler: async (request, response, context) => {
375
+ const { projectPath, mode, dryRun, captureSnapshot, verbose } = request.params;
376
+ // 调试追踪器
377
+ const debugTracker = {
378
+ startTime: Date.now(),
379
+ steps: [],
380
+ snapshots: [],
381
+ };
382
+ const trackStep = (step, status, details, error) => {
383
+ const now = Date.now();
384
+ const existingStep = debugTracker.steps.find(s => s.step === step);
385
+ if (existingStep) {
386
+ existingStep.status = status;
387
+ if (status !== 'running' && status !== 'pending') {
388
+ existingStep.endTime = now;
389
+ existingStep.duration = now - existingStep.startTime;
390
+ }
391
+ if (details)
392
+ existingStep.details = details;
393
+ if (error)
394
+ existingStep.error = error;
395
+ }
396
+ else {
397
+ debugTracker.steps.push({
398
+ step,
399
+ status,
400
+ startTime: now,
401
+ endTime: status !== 'running' && status !== 'pending' ? now : undefined,
402
+ duration: status !== 'running' && status !== 'pending' ? 0 : undefined,
403
+ details,
404
+ error,
405
+ });
406
+ }
407
+ };
408
+ const captureStateSnapshot = (label) => {
409
+ if (!captureSnapshot)
410
+ return;
411
+ debugTracker.snapshots.push({
412
+ timestamp: Date.now(),
413
+ state: {
414
+ label,
415
+ hasConnection: !!context.miniProgram,
416
+ hasCurrentPage: !!context.currentPage,
417
+ elementMapSize: context.elementMap.size,
418
+ consoleMonitoring: context.consoleStorage.isMonitoring,
419
+ networkMonitoring: context.networkStorage.isMonitoring,
420
+ navigationsCount: context.consoleStorage.navigations.length,
421
+ messagesCount: context.consoleStorage.messageIdMap.size,
422
+ requestsCount: context.networkStorage.requests.length,
423
+ },
424
+ });
425
+ };
426
+ response.appendResponseLine('🔍 连接流程调试器启动');
427
+ response.appendResponseLine('═'.repeat(60));
428
+ response.appendResponseLine('');
429
+ try {
430
+ // 步骤1: 参数验证
431
+ trackStep('参数验证', 'running');
432
+ response.appendResponseLine('📋 步骤1: 参数验证');
433
+ if (!projectPath || typeof projectPath !== 'string') {
434
+ trackStep('参数验证', 'error', null, 'projectPath 无效');
435
+ response.appendResponseLine('❌ projectPath 参数无效');
436
+ throw new Error('无效的 projectPath 参数');
437
+ }
438
+ let resolvedPath = projectPath;
439
+ if (projectPath.startsWith('@playground/')) {
440
+ const relativePath = projectPath.replace('@playground/', 'playground/');
441
+ resolvedPath = resolve(process.cwd(), relativePath);
442
+ response.appendResponseLine(` 🔄 解析 @playground/ 路径`);
443
+ response.appendResponseLine(` 原始: ${projectPath}`);
444
+ response.appendResponseLine(` 解析: ${resolvedPath}`);
445
+ }
446
+ else if (!isAbsolute(projectPath)) {
447
+ resolvedPath = resolve(process.cwd(), projectPath);
448
+ response.appendResponseLine(` 🔄 转换相对路径为绝对路径`);
449
+ response.appendResponseLine(` 原始: ${projectPath}`);
450
+ response.appendResponseLine(` 解析: ${resolvedPath}`);
451
+ }
452
+ trackStep('参数验证', 'success', { resolvedPath, mode });
453
+ response.appendResponseLine(` ✅ 参数验证通过`);
454
+ response.appendResponseLine(` 项目路径: ${resolvedPath}`);
455
+ response.appendResponseLine(` 连接模式: ${mode}`);
456
+ response.appendResponseLine('');
457
+ captureStateSnapshot('参数验证完成');
458
+ // 步骤2: 项目结构验证
459
+ trackStep('项目结构验证', 'running');
460
+ response.appendResponseLine('📦 步骤2: 项目结构验证');
461
+ if (!existsSync(resolvedPath)) {
462
+ trackStep('项目结构验证', 'error', null, '项目路径不存在');
463
+ response.appendResponseLine(` ❌ 项目路径不存在: ${resolvedPath}`);
464
+ throw new Error('项目路径不存在');
465
+ }
466
+ const appJsonPath = resolve(resolvedPath, 'app.json');
467
+ const projectConfigPath = resolve(resolvedPath, 'project.config.json');
468
+ const hasAppJson = existsSync(appJsonPath);
469
+ const hasProjectConfig = existsSync(projectConfigPath);
470
+ if (!hasAppJson) {
471
+ trackStep('项目结构验证', 'error', { hasAppJson, hasProjectConfig }, '缺少 app.json');
472
+ response.appendResponseLine(` ❌ 缺少必需文件: app.json`);
473
+ throw new Error('缺少 app.json 文件');
474
+ }
475
+ trackStep('项目结构验证', 'success', { hasAppJson, hasProjectConfig });
476
+ response.appendResponseLine(` ✅ app.json: 存在`);
477
+ response.appendResponseLine(` ${hasProjectConfig ? '✅' : '⚠️'} project.config.json: ${hasProjectConfig ? '存在' : '缺失(可选)'}`);
478
+ response.appendResponseLine('');
479
+ captureStateSnapshot('项目结构验证完成');
480
+ // 步骤3: 检查已有连接
481
+ trackStep('连接状态检查', 'running');
482
+ response.appendResponseLine('🔗 步骤3: 检查已有连接');
483
+ if (context.miniProgram) {
484
+ try {
485
+ const currentPage = await context.miniProgram.currentPage();
486
+ const pagePath = await currentPage.path;
487
+ trackStep('连接状态检查', 'warning', { reuseConnection: true, pagePath });
488
+ response.appendResponseLine(` ⚠️ 检测到活跃连接`);
489
+ response.appendResponseLine(` 当前页面: ${pagePath}`);
490
+ response.appendResponseLine(` 操作: 复用现有连接(跳过新建连接)`);
491
+ if (!dryRun) {
492
+ response.appendResponseLine('');
493
+ response.appendResponseLine('💡 提示: 如需强制重新连接,请先断开现有连接');
494
+ response.appendResponseLine('');
495
+ return; // 复用连接,不继续后续步骤
496
+ }
497
+ }
498
+ catch {
499
+ trackStep('连接状态检查', 'warning', { connectionInvalid: true });
500
+ response.appendResponseLine(` ⚠️ 已有连接但已失效`);
501
+ response.appendResponseLine(` 操作: 清除并准备新建连接`);
502
+ context.miniProgram = null;
503
+ context.currentPage = null;
504
+ }
505
+ }
506
+ else {
507
+ trackStep('连接状态检查', 'success', { noExistingConnection: true });
508
+ response.appendResponseLine(` ✅ 无已有连接,准备新建连接`);
509
+ }
510
+ response.appendResponseLine('');
511
+ captureStateSnapshot('连接状态检查完成');
512
+ if (dryRun) {
513
+ response.appendResponseLine('🔄 DryRun 模式: 跳过实际连接步骤');
514
+ response.appendResponseLine('');
515
+ }
516
+ else {
517
+ // 步骤4: 准备连接参数
518
+ trackStep('准备连接参数', 'running');
519
+ response.appendResponseLine('⚙️ 步骤4: 准备连接参数');
520
+ const connectOptions = {
521
+ projectPath: resolvedPath,
522
+ mode,
523
+ timeout: 45000,
524
+ fallbackMode: true,
525
+ healthCheck: true,
526
+ verbose,
527
+ };
528
+ trackStep('准备连接参数', 'success', connectOptions);
529
+ response.appendResponseLine(` ✅ 连接参数准备完成`);
530
+ if (verbose) {
531
+ response.appendResponseLine(` 超时设置: ${connectOptions.timeout}ms`);
532
+ response.appendResponseLine(` 模式回退: ${connectOptions.fallbackMode ? '启用' : '禁用'}`);
533
+ response.appendResponseLine(` 健康检查: ${connectOptions.healthCheck ? '启用' : '禁用'}`);
534
+ }
535
+ response.appendResponseLine('');
536
+ captureStateSnapshot('连接参数准备完成');
537
+ // 步骤5: 执行连接(使用实际的连接工具)
538
+ trackStep('执行连接', 'running');
539
+ response.appendResponseLine('🚀 步骤5: 执行连接');
540
+ response.appendResponseLine(` ⏳ 正在连接到微信开发者工具...`);
541
+ response.appendResponseLine(` 模式: ${mode}`);
542
+ const connectionStartTime = Date.now();
543
+ try {
544
+ // 这里调用实际的连接逻辑
545
+ const { connectDevtoolsEnhanced } = await import('../tools.js');
546
+ const result = await connectDevtoolsEnhanced({
547
+ projectPath: resolvedPath,
548
+ mode,
549
+ timeout: 45000,
550
+ fallbackMode: true,
551
+ healthCheck: true,
552
+ verbose,
553
+ });
554
+ const connectionDuration = Date.now() - connectionStartTime;
555
+ trackStep('执行连接', 'success', {
556
+ duration: connectionDuration,
557
+ connectionMode: result.connectionMode,
558
+ pagePath: result.pagePath,
559
+ healthStatus: result.healthStatus,
560
+ });
561
+ const miniProgramResult = result.miniProgram;
562
+ // 更新上下文
563
+ context.miniProgram = miniProgramResult;
564
+ context.currentPage = result.currentPage;
565
+ context.elementMap.clear();
566
+ response.appendResponseLine(` ✅ 连接成功 (耗时: ${connectionDuration}ms)`);
567
+ response.appendResponseLine(` 当前页面: ${result.pagePath}`);
568
+ response.appendResponseLine(` 连接模式: ${result.connectionMode}`);
569
+ response.appendResponseLine(` 健康状态: ${result.healthStatus}`);
570
+ if (result.processInfo) {
571
+ response.appendResponseLine(` 进程信息: PID=${result.processInfo.pid}, Port=${result.processInfo.port}`);
572
+ }
573
+ response.appendResponseLine('');
574
+ captureStateSnapshot('连接执行完成');
575
+ // 步骤6: 初始化监听器(必须在连接成功的 try 块内执行)
576
+ trackStep('初始化监听器', 'running');
577
+ response.appendResponseLine('📡 步骤6: 初始化监听器');
578
+ // Console监听
579
+ try {
580
+ miniProgramResult.removeAllListeners('console');
581
+ miniProgramResult.removeAllListeners('exception');
582
+ context.consoleStorage.isMonitoring = true;
583
+ context.consoleStorage.startTime = new Date().toISOString();
584
+ response.appendResponseLine(` ✅ Console监听器已启动`);
585
+ }
586
+ catch (error) {
587
+ trackStep('初始化监听器', 'warning', null, 'Console监听器启动失败');
588
+ response.appendResponseLine(` ⚠️ Console监听器启动失败: ${error instanceof Error ? error.message : String(error)}`);
589
+ }
590
+ }
591
+ catch (error) {
592
+ const connectionDuration = Date.now() - connectionStartTime;
593
+ const errorMessage = error instanceof Error ? error.message : String(error);
594
+ trackStep('执行连接', 'error', { duration: connectionDuration }, errorMessage);
595
+ response.appendResponseLine(` ❌ 连接失败 (耗时: ${connectionDuration}ms)`);
596
+ response.appendResponseLine(` 错误: ${errorMessage}`);
597
+ response.appendResponseLine('');
598
+ throw error;
599
+ }
600
+ // 网络监听
601
+ try {
602
+ if (!context.networkStorage.isMonitoring) {
603
+ context.networkStorage.isMonitoring = true;
604
+ context.networkStorage.startTime = new Date().toISOString();
605
+ response.appendResponseLine(` ✅ 网络监听器已启动`);
606
+ }
607
+ else {
608
+ response.appendResponseLine(` ℹ️ 网络监听器已在运行中`);
609
+ }
610
+ }
611
+ catch (error) {
612
+ trackStep('初始化监听器', 'warning', null, '网络监听器启动失败');
613
+ response.appendResponseLine(` ⚠️ 网络监听器启动失败: ${error instanceof Error ? error.message : String(error)}`);
614
+ }
615
+ trackStep('初始化监听器', 'success');
616
+ response.appendResponseLine('');
617
+ captureStateSnapshot('监听器初始化完成');
618
+ }
619
+ // 生成调试报告
620
+ response.appendResponseLine('═'.repeat(60));
621
+ response.appendResponseLine('📊 调试报告');
622
+ response.appendResponseLine('═'.repeat(60));
623
+ response.appendResponseLine('');
624
+ // 步骤摘要
625
+ response.appendResponseLine('📝 步骤摘要:');
626
+ response.appendResponseLine('');
627
+ let successCount = 0;
628
+ let warningCount = 0;
629
+ let errorCount = 0;
630
+ for (const step of debugTracker.steps) {
631
+ const icon = step.status === 'success' ? '✅' :
632
+ step.status === 'warning' ? '⚠️' :
633
+ step.status === 'error' ? '❌' :
634
+ step.status === 'running' ? '⏳' : '⏸️';
635
+ if (step.status === 'success')
636
+ successCount++;
637
+ if (step.status === 'warning')
638
+ warningCount++;
639
+ if (step.status === 'error')
640
+ errorCount++;
641
+ const durationInfo = step.duration !== undefined ? ` (${step.duration}ms)` : '';
642
+ response.appendResponseLine(`${icon} ${step.step}${durationInfo}`);
643
+ if (verbose && step.details) {
644
+ const detailsStr = JSON.stringify(step.details, null, 2)
645
+ .split('\n')
646
+ .map(line => ` ${line}`)
647
+ .join('\n');
648
+ response.appendResponseLine(detailsStr);
649
+ }
650
+ if (step.error) {
651
+ response.appendResponseLine(` 错误: ${step.error}`);
652
+ }
653
+ }
654
+ response.appendResponseLine('');
655
+ response.appendResponseLine(`总耗时: ${Date.now() - debugTracker.startTime}ms`);
656
+ response.appendResponseLine(`成功: ${successCount} | 警告: ${warningCount} | 错误: ${errorCount}`);
657
+ response.appendResponseLine('');
658
+ // 状态快照
659
+ if (captureSnapshot && debugTracker.snapshots.length > 0) {
660
+ response.appendResponseLine('📸 状态快照:');
661
+ response.appendResponseLine('');
662
+ for (let i = 0; i < debugTracker.snapshots.length; i++) {
663
+ const snapshot = debugTracker.snapshots[i];
664
+ const relativeTime = snapshot.timestamp - debugTracker.startTime;
665
+ response.appendResponseLine(`快照 ${i + 1}: ${snapshot.state.label} (+${relativeTime}ms)`);
666
+ response.appendResponseLine(` 连接状态: ${snapshot.state.hasConnection ? '已连接' : '未连接'}`);
667
+ response.appendResponseLine(` 当前页面: ${snapshot.state.hasCurrentPage ? '已设置' : '未设置'}`);
668
+ response.appendResponseLine(` 元素映射: ${snapshot.state.elementMapSize} 个`);
669
+ response.appendResponseLine(` Console监听: ${snapshot.state.consoleMonitoring ? '已启动' : '未启动'}`);
670
+ response.appendResponseLine(` 网络监听: ${snapshot.state.networkMonitoring ? '已启动' : '未启动'}`);
671
+ response.appendResponseLine(` 导航会话: ${snapshot.state.navigationsCount} 个`);
672
+ response.appendResponseLine(` Console消息: ${snapshot.state.messagesCount} 条`);
673
+ response.appendResponseLine(` 网络请求: ${snapshot.state.requestsCount} 个`);
674
+ response.appendResponseLine('');
675
+ }
676
+ }
677
+ // 诊断建议
678
+ response.appendResponseLine('💡 诊断建议:');
679
+ response.appendResponseLine('');
680
+ if (errorCount > 0) {
681
+ response.appendResponseLine('⚠️ 发现错误,建议检查:');
682
+ for (const step of debugTracker.steps) {
683
+ if (step.status === 'error') {
684
+ response.appendResponseLine(` • ${step.step}: ${step.error || '未知错误'}`);
685
+ }
686
+ }
687
+ response.appendResponseLine('');
688
+ }
689
+ if (warningCount > 0) {
690
+ response.appendResponseLine('ℹ️ 发现警告,可能的优化点:');
691
+ for (const step of debugTracker.steps) {
692
+ if (step.status === 'warning') {
693
+ response.appendResponseLine(` • ${step.step}`);
694
+ }
695
+ }
696
+ response.appendResponseLine('');
697
+ }
698
+ if (errorCount === 0 && warningCount === 0) {
699
+ response.appendResponseLine('✅ 所有步骤正常,连接流程健康!');
700
+ response.appendResponseLine('');
701
+ }
702
+ response.appendResponseLine('🔧 使用 MCP Inspector 进行后续调试:');
703
+ response.appendResponseLine(' npm run inspector');
704
+ response.appendResponseLine('');
705
+ }
706
+ catch (error) {
707
+ const errorMessage = error instanceof Error ? error.message : String(error);
708
+ const errorStack = error instanceof Error ? error.stack : undefined;
709
+ response.appendResponseLine('═'.repeat(60));
710
+ response.appendResponseLine('❌ 调试过程失败');
711
+ response.appendResponseLine('═'.repeat(60));
712
+ response.appendResponseLine('');
713
+ response.appendResponseLine(`错误信息: ${errorMessage}`);
714
+ if (verbose && errorStack) {
715
+ response.appendResponseLine('');
716
+ response.appendResponseLine('错误堆栈:');
717
+ response.appendResponseLine(errorStack);
718
+ }
719
+ response.appendResponseLine('');
720
+ response.appendResponseLine('📊 调试追踪 (失败前):');
721
+ for (const step of debugTracker.steps) {
722
+ const icon = step.status === 'success' ? '✅' :
723
+ step.status === 'warning' ? '⚠️' :
724
+ step.status === 'error' ? '❌' :
725
+ step.status === 'running' ? '⏳' : '⏸️';
726
+ response.appendResponseLine(`${icon} ${step.step}`);
727
+ if (step.error) {
728
+ response.appendResponseLine(` 错误: ${step.error}`);
729
+ }
730
+ }
731
+ throw error;
732
+ }
733
+ },
734
+ });
735
+ //# sourceMappingURL=diagnose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnose.js","sourceRoot":"","sources":["../../src/tools/diagnose.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * 工具模块入口导出
3
+ */
4
+ export { allTools, getToolByName, getAllToolNames, } from './tools.js';
5
+ export * from './ToolDefinition.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,QAAQ,EACR,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,cAAc,qBAAqB,CAAC"}
@@ -1,80 +1,6 @@
1
1
  /**
2
- * 工具模块导出
3
- * 统一导出所有工具定义
2
+ * 工具模块入口导出
4
3
  */
5
- // 导入各个模块的工具
6
- import { connectDevtoolsTool, connectDevtoolsEnhancedTool, getCurrentPageTool } from './connection.js';
7
- import { getPageSnapshotTool } from './snapshot.js';
8
- import { clickTool, inputTextTool, getValueTool, setFormControlTool, selectPickerTool, toggleSwitchTool, setSliderTool } from './input.js';
9
- import { screenshotTool } from './screenshot.js';
10
- import { querySelectorTool, waitForTool } from './page.js';
11
- import { assertExistsTool, assertVisibleTool, assertTextTool, assertAttributeTool, assertStateTool } from './assert.js';
12
- import { navigateToTool, navigateBackTool, switchTabTool, reLaunchTool, getPageInfoTool, redirectToTool } from './navigate.js';
13
- import { startConsoleMonitoringTool, stopConsoleMonitoringTool, getConsoleTool, clearConsoleTool } from './console.js';
14
- import { startNetworkMonitoringTool, stopNetworkMonitoringTool, getNetworkRequestsTool, clearNetworkRequestsTool, diagnoseInterceptorTool } from './network.js';
15
- import { diagnoseConnectionTool, checkEnvironmentTool, debugPageElementsTool } from './diagnose.js';
16
- /**
17
- * 所有可用工具的列表
18
- */
19
- export const allTools = [
20
- // 连接管理工具
21
- connectDevtoolsTool, // 传统连接方式(兼容性)
22
- connectDevtoolsEnhancedTool, // 智能连接方式(推荐)
23
- getCurrentPageTool,
24
- // 页面快照工具
25
- getPageSnapshotTool,
26
- // 页面查询和等待工具
27
- querySelectorTool,
28
- waitForTool,
29
- // 输入交互工具
30
- clickTool,
31
- inputTextTool,
32
- getValueTool,
33
- setFormControlTool,
34
- selectPickerTool,
35
- toggleSwitchTool,
36
- setSliderTool,
37
- // 断言验证工具
38
- assertExistsTool,
39
- assertVisibleTool,
40
- assertTextTool,
41
- assertAttributeTool,
42
- assertStateTool,
43
- // 页面导航工具
44
- navigateToTool,
45
- navigateBackTool,
46
- switchTabTool,
47
- reLaunchTool,
48
- getPageInfoTool,
49
- redirectToTool,
50
- // 调试工具
51
- screenshotTool,
52
- startConsoleMonitoringTool,
53
- stopConsoleMonitoringTool,
54
- getConsoleTool,
55
- clearConsoleTool,
56
- // 网络监控工具
57
- startNetworkMonitoringTool,
58
- stopNetworkMonitoringTool,
59
- getNetworkRequestsTool,
60
- clearNetworkRequestsTool,
61
- diagnoseInterceptorTool,
62
- // 诊断工具
63
- diagnoseConnectionTool,
64
- checkEnvironmentTool,
65
- debugPageElementsTool,
66
- ];
67
- /**
68
- * 按名称获取工具
69
- */
70
- export function getToolByName(name) {
71
- return allTools.find(tool => tool.name === name);
72
- }
73
- /**
74
- * 获取所有工具名称
75
- */
76
- export function getAllToolNames() {
77
- return allTools.map(tool => tool.name);
78
- }
79
- // 重新导出工具定义相关类型和函数
4
+ export { allTools, getToolByName, getAllToolNames, } from './tools.js';
80
5
  export * from './ToolDefinition.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,QAAQ,EACR,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC;AAEpB,cAAc,qBAAqB,CAAC"}