weixin-devtools-mcp 0.0.1 → 0.1.1

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 (183) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +127 -128
  3. package/build/MiniProgramContext.d.ts +317 -0
  4. package/build/MiniProgramContext.d.ts.map +1 -0
  5. package/build/MiniProgramContext.js +696 -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 +227 -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 +99 -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/core/assertion.d.ts +22 -0
  56. package/build/core/assertion.d.ts.map +1 -0
  57. package/build/core/assertion.js +318 -0
  58. package/build/core/assertion.js.map +1 -0
  59. package/build/core/connection.d.ts +37 -0
  60. package/build/core/connection.d.ts.map +1 -0
  61. package/build/core/connection.js +745 -0
  62. package/build/core/connection.js.map +1 -0
  63. package/build/core/index.d.ts +13 -0
  64. package/build/core/index.d.ts.map +1 -0
  65. package/build/core/index.js +19 -0
  66. package/build/core/index.js.map +1 -0
  67. package/build/core/interaction.d.ts +22 -0
  68. package/build/core/interaction.d.ts.map +1 -0
  69. package/build/core/interaction.js +185 -0
  70. package/build/core/interaction.js.map +1 -0
  71. package/build/core/navigation.d.ts +26 -0
  72. package/build/core/navigation.d.ts.map +1 -0
  73. package/build/core/navigation.js +210 -0
  74. package/build/core/navigation.js.map +1 -0
  75. package/build/core/query.d.ts +14 -0
  76. package/build/core/query.d.ts.map +1 -0
  77. package/build/core/query.js +191 -0
  78. package/build/core/query.js.map +1 -0
  79. package/build/core/screenshot.d.ts +10 -0
  80. package/build/core/screenshot.d.ts.map +1 -0
  81. package/build/core/screenshot.js +93 -0
  82. package/build/core/screenshot.js.map +1 -0
  83. package/build/core/snapshot.d.ts +17 -0
  84. package/build/core/snapshot.d.ts.map +1 -0
  85. package/build/core/snapshot.js +225 -0
  86. package/build/core/snapshot.js.map +1 -0
  87. package/build/core/types.d.ts +250 -0
  88. package/build/core/types.d.ts.map +1 -0
  89. package/build/core/types.js +6 -0
  90. package/build/core/types.js.map +1 -0
  91. package/build/formatters/consoleFormatter.d.ts +50 -0
  92. package/build/formatters/consoleFormatter.d.ts.map +1 -0
  93. package/build/formatters/consoleFormatter.js +116 -0
  94. package/build/formatters/consoleFormatter.js.map +1 -0
  95. package/build/formatters/snapshotFormatter.d.ts +41 -0
  96. package/build/formatters/snapshotFormatter.d.ts.map +1 -0
  97. package/build/formatters/snapshotFormatter.js +156 -0
  98. package/build/formatters/snapshotFormatter.js.map +1 -0
  99. package/build/index.d.ts +11 -0
  100. package/build/index.d.ts.map +1 -0
  101. package/build/index.js +45 -9
  102. package/build/index.js.map +1 -0
  103. package/build/server.d.ts +7 -0
  104. package/build/server.d.ts.map +1 -0
  105. package/build/server.js +88 -32
  106. package/build/server.js.map +1 -0
  107. package/build/tools/ToolDefinition.d.ts +265 -0
  108. package/build/tools/ToolDefinition.d.ts.map +1 -0
  109. package/build/tools/ToolDefinition.js +16 -7
  110. package/build/tools/ToolDefinition.js.map +1 -0
  111. package/build/tools/assert.d.ts +17 -0
  112. package/build/tools/assert.d.ts.map +1 -0
  113. package/build/tools/assert.js +63 -103
  114. package/build/tools/assert.js.map +1 -0
  115. package/build/tools/connection.d.ts +13 -0
  116. package/build/tools/connection.d.ts.map +1 -0
  117. package/build/tools/connection.js +338 -611
  118. package/build/tools/connection.js.map +1 -0
  119. package/build/tools/console.d.ts +20 -0
  120. package/build/tools/console.d.ts.map +1 -0
  121. package/build/tools/console.js +162 -152
  122. package/build/tools/console.js.map +1 -0
  123. package/build/tools/diagnose.d.ts +22 -0
  124. package/build/tools/diagnose.d.ts.map +1 -0
  125. package/build/tools/diagnose.js +406 -13
  126. package/build/tools/diagnose.js.map +1 -0
  127. package/build/tools/index.d.ts +6 -0
  128. package/build/tools/index.d.ts.map +1 -0
  129. package/build/tools/index.js +3 -77
  130. package/build/tools/index.js.map +1 -0
  131. package/build/tools/input.d.ts +21 -0
  132. package/build/tools/input.d.ts.map +1 -0
  133. package/build/tools/input.js +73 -139
  134. package/build/tools/input.js.map +1 -0
  135. package/build/tools/navigate.d.ts +21 -0
  136. package/build/tools/navigate.d.ts.map +1 -0
  137. package/build/tools/navigate.js +63 -126
  138. package/build/tools/navigate.js.map +1 -0
  139. package/build/tools/network.d.ts +21 -0
  140. package/build/tools/network.d.ts.map +1 -0
  141. package/build/tools/network.js +214 -1044
  142. package/build/tools/network.js.map +1 -0
  143. package/build/tools/page.d.ts +13 -0
  144. package/build/tools/page.d.ts.map +1 -0
  145. package/build/tools/page.js +6 -3
  146. package/build/tools/page.js.map +1 -0
  147. package/build/tools/screenshot.d.ts +9 -0
  148. package/build/tools/screenshot.d.ts.map +1 -0
  149. package/build/tools/screenshot.js +3 -1
  150. package/build/tools/screenshot.js.map +1 -0
  151. package/build/tools/script.d.ts +6 -0
  152. package/build/tools/script.d.ts.map +1 -0
  153. package/build/tools/script.js +92 -0
  154. package/build/tools/script.js.map +1 -0
  155. package/build/tools/snapshot.d.ts +9 -0
  156. package/build/tools/snapshot.d.ts.map +1 -0
  157. package/build/tools/snapshot.js +78 -12
  158. package/build/tools/snapshot.js.map +1 -0
  159. package/build/tools/tools.d.ts +15 -0
  160. package/build/tools/tools.d.ts.map +1 -0
  161. package/build/tools/tools.js +63 -0
  162. package/build/tools/tools.js.map +1 -0
  163. package/build/tools.d.ts +431 -0
  164. package/build/tools.d.ts.map +1 -0
  165. package/build/tools.js +258 -118
  166. package/build/tools.js.map +1 -0
  167. package/build/types/errors.d.ts +189 -0
  168. package/build/types/errors.d.ts.map +1 -0
  169. package/build/types/errors.js +257 -0
  170. package/build/types/errors.js.map +1 -0
  171. package/build/utils/error.d.ts +6 -0
  172. package/build/utils/error.d.ts.map +1 -0
  173. package/build/utils/error.js +11 -0
  174. package/build/utils/error.js.map +1 -0
  175. package/build/utils/idGenerator.d.ts +21 -0
  176. package/build/utils/idGenerator.d.ts.map +1 -0
  177. package/build/utils/idGenerator.js +23 -0
  178. package/build/utils/idGenerator.js.map +1 -0
  179. package/build/version.d.ts +7 -0
  180. package/build/version.d.ts.map +1 -0
  181. package/build/version.js +10 -0
  182. package/build/version.js.map +1 -0
  183. package/package.json +31 -9
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 工具暴露配置
3
+ * 支持 profile 与类别开关,按需裁剪 ListTools 返回内容
4
+ */
5
+ import type { ToolDefinition } from '../tools/ToolDefinition.js';
6
+ import { ToolCategory } from '../tools/ToolDefinition.js';
7
+ export type ToolsProfile = 'core' | 'full' | 'minimal';
8
+ export interface ToolProfileConfig {
9
+ profile: ToolsProfile;
10
+ enabledCategories: ReadonlySet<ToolCategory>;
11
+ disabledCategories: ReadonlySet<ToolCategory>;
12
+ }
13
+ export interface ToolActivationResult {
14
+ activeTools: ToolDefinition[];
15
+ disabledTools: Map<string, ToolDefinition>;
16
+ }
17
+ interface ParseConfigOptions {
18
+ argv?: readonly string[];
19
+ env?: NodeJS.ProcessEnv;
20
+ }
21
+ /**
22
+ * 解析工具 profile 配置
23
+ */
24
+ export declare function parseToolProfileConfig(options?: ParseConfigOptions): ToolProfileConfig;
25
+ /**
26
+ * 根据 profile 与类别开关计算激活工具
27
+ */
28
+ export declare function resolveToolsByProfile(tools: readonly ToolDefinition[], config: ToolProfileConfig): ToolActivationResult;
29
+ export {};
30
+ //# sourceMappingURL=tool-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-profile.d.ts","sourceRoot":"","sources":["../../src/config/tool-profile.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,YAAY,CAAC;IACtB,iBAAiB,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;IAC7C,kBAAkB,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;CAC/C;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,cAAc,EAAE,CAAC;IAC9B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC5C;AAyCD,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB;AAmDD;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,iBAAiB,CAqBtF;AAcD;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,SAAS,cAAc,EAAE,EAChC,MAAM,EAAE,iBAAiB,GACxB,oBAAoB,CA6BtB"}
@@ -0,0 +1,138 @@
1
+ /**
2
+ * 工具暴露配置
3
+ * 支持 profile 与类别开关,按需裁剪 ListTools 返回内容
4
+ */
5
+ import { ToolCategory } from '../tools/ToolDefinition.js';
6
+ const DEFAULT_PROFILE = 'core';
7
+ const VALID_CATEGORIES = new Set(Object.values(ToolCategory));
8
+ const CORE_TOOL_NAMES = new Set([
9
+ 'connect_devtools',
10
+ 'reconnect_devtools',
11
+ 'disconnect_devtools',
12
+ 'get_connection_status',
13
+ 'get_current_page',
14
+ 'get_page_snapshot',
15
+ 'query_selector',
16
+ 'wait_for',
17
+ 'click',
18
+ 'input_text',
19
+ 'get_value',
20
+ 'set_form_control',
21
+ 'assert_text',
22
+ 'assert_attribute',
23
+ 'assert_state',
24
+ 'navigate_to',
25
+ 'navigate_back',
26
+ 'switch_tab',
27
+ 'relaunch',
28
+ 'evaluate_script',
29
+ ]);
30
+ const MINIMAL_TOOL_NAMES = new Set([
31
+ 'connect_devtools',
32
+ 'get_connection_status',
33
+ 'query_selector',
34
+ 'wait_for',
35
+ 'click',
36
+ 'input_text',
37
+ 'get_value',
38
+ 'navigate_to',
39
+ 'navigate_back',
40
+ 'assert_text',
41
+ ]);
42
+ function readCliOption(argv, optionName) {
43
+ const inlinePrefix = `--${optionName}=`;
44
+ for (let index = 0; index < argv.length; index += 1) {
45
+ const argument = argv[index];
46
+ if (argument.startsWith(inlinePrefix)) {
47
+ return argument.slice(inlinePrefix.length);
48
+ }
49
+ if (argument === `--${optionName}`) {
50
+ const next = argv[index + 1];
51
+ if (typeof next === 'string' && !next.startsWith('--')) {
52
+ return next;
53
+ }
54
+ }
55
+ }
56
+ return undefined;
57
+ }
58
+ function normalizeProfile(profileValue) {
59
+ const normalized = profileValue?.trim().toLowerCase();
60
+ if (normalized === 'full' || normalized === 'minimal' || normalized === 'core') {
61
+ return normalized;
62
+ }
63
+ return DEFAULT_PROFILE;
64
+ }
65
+ function parseCategoryList(rawValue) {
66
+ const categories = new Set();
67
+ if (!rawValue) {
68
+ return categories;
69
+ }
70
+ const parts = rawValue.split(',');
71
+ for (const part of parts) {
72
+ const normalized = part.trim().toLowerCase();
73
+ if (normalized.length === 0) {
74
+ continue;
75
+ }
76
+ if (VALID_CATEGORIES.has(normalized)) {
77
+ categories.add(normalized);
78
+ }
79
+ }
80
+ return categories;
81
+ }
82
+ /**
83
+ * 解析工具 profile 配置
84
+ */
85
+ export function parseToolProfileConfig(options) {
86
+ const argv = options?.argv ?? process.argv.slice(2);
87
+ const env = options?.env ?? process.env;
88
+ const cliProfile = readCliOption(argv, 'tools-profile');
89
+ const envProfile = env.WEIXIN_MCP_TOOLS_PROFILE;
90
+ const profile = normalizeProfile(cliProfile ?? envProfile);
91
+ const cliEnabledCategories = readCliOption(argv, 'enable-categories');
92
+ const envEnabledCategories = env.WEIXIN_MCP_ENABLE_CATEGORIES;
93
+ const enabledCategories = parseCategoryList(cliEnabledCategories ?? envEnabledCategories);
94
+ const cliDisabledCategories = readCliOption(argv, 'disable-categories');
95
+ const envDisabledCategories = env.WEIXIN_MCP_DISABLE_CATEGORIES;
96
+ const disabledCategories = parseCategoryList(cliDisabledCategories ?? envDisabledCategories);
97
+ return {
98
+ profile,
99
+ enabledCategories,
100
+ disabledCategories,
101
+ };
102
+ }
103
+ function getBaseActiveNames(profile, tools) {
104
+ if (profile === 'full') {
105
+ return new Set(tools.map(tool => tool.name));
106
+ }
107
+ if (profile === 'minimal') {
108
+ return new Set(MINIMAL_TOOL_NAMES);
109
+ }
110
+ return new Set(CORE_TOOL_NAMES);
111
+ }
112
+ /**
113
+ * 根据 profile 与类别开关计算激活工具
114
+ */
115
+ export function resolveToolsByProfile(tools, config) {
116
+ const activeNames = getBaseActiveNames(config.profile, tools);
117
+ for (const tool of tools) {
118
+ const toolCategory = tool.annotations?.category ?? ToolCategory.CORE;
119
+ if (config.enabledCategories.has(toolCategory)) {
120
+ activeNames.add(tool.name);
121
+ }
122
+ }
123
+ for (const tool of tools) {
124
+ const toolCategory = tool.annotations?.category ?? ToolCategory.CORE;
125
+ if (config.disabledCategories.has(toolCategory)) {
126
+ activeNames.delete(tool.name);
127
+ }
128
+ }
129
+ const activeTools = tools.filter(tool => activeNames.has(tool.name));
130
+ const disabledTools = new Map(tools
131
+ .filter(tool => !activeNames.has(tool.name))
132
+ .map(tool => [tool.name, tool]));
133
+ return {
134
+ activeTools,
135
+ disabledTools,
136
+ };
137
+ }
138
+ //# sourceMappingURL=tool-profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-profile.js","sourceRoot":"","sources":["../../src/config/tool-profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AdapterConnectionResult, ConnectionStrategy, ResolvedConnectionRequest } from './types.js';
2
+ export declare function executeConnectionStrategy(strategy: ConnectionStrategy, request: ResolvedConnectionRequest): Promise<AdapterConnectionResult>;
3
+ //# sourceMappingURL=adapters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.d.ts","sourceRoot":"","sources":["../../src/connection/adapters.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,uBAAuB,EACvB,kBAAkB,EAClB,yBAAyB,EAC1B,MAAM,YAAY,CAAC;AAqLpB,wBAAsB,yBAAyB,CAC7C,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,EAAE,yBAAyB,GACjC,OAAO,CAAC,uBAAuB,CAAC,CAoBlC"}
@@ -0,0 +1,134 @@
1
+ import automator from 'miniprogram-automator';
2
+ import { connectDevtoolsEnhanced, detectIDEPort, } from '../tools.js';
3
+ import { EnvironmentConnectionError, ProtocolConnectionError, SessionConflictConnectionError, } from './errors.js';
4
+ function extractMessage(error) {
5
+ return error.message.toLowerCase();
6
+ }
7
+ function buildEnhancedOptions(request, mode) {
8
+ return {
9
+ projectPath: request.projectPath ?? '',
10
+ mode,
11
+ cliPath: request.cliPath,
12
+ autoPort: request.autoPort,
13
+ timeout: request.timeoutMs,
14
+ fallbackMode: request.fallback.length > 0,
15
+ healthCheck: false,
16
+ verbose: request.verbose,
17
+ autoAudits: request.autoAudits,
18
+ };
19
+ }
20
+ function ensurePagePath(pagePath) {
21
+ if (!pagePath) {
22
+ throw new ProtocolConnectionError('连接成功但当前页面路径为空', [
23
+ '请确认开发者工具中项目已成功打开',
24
+ ]);
25
+ }
26
+ return pagePath;
27
+ }
28
+ async function connectByEnhancedMode(request, strategy) {
29
+ try {
30
+ const result = await connectDevtoolsEnhanced(buildEnhancedOptions(request, strategy));
31
+ const endpoint = result.processInfo?.port
32
+ ? `ws://127.0.0.1:${result.processInfo.port}`
33
+ : null;
34
+ const pagePath = ensurePagePath(result.pagePath);
35
+ return {
36
+ strategyUsed: strategy,
37
+ endpoint,
38
+ miniProgram: result.miniProgram,
39
+ currentPage: result.currentPage,
40
+ pagePath,
41
+ };
42
+ }
43
+ catch (error) {
44
+ const baseError = error instanceof Error ? error : new Error(String(error));
45
+ const message = extractMessage(baseError);
46
+ if (message.includes('session') || message.includes('already') || message.includes('conflict')) {
47
+ throw new SessionConflictConnectionError(baseError.message, undefined, baseError);
48
+ }
49
+ throw new EnvironmentConnectionError(baseError.message, 'connect', ['检查 projectPath、cliPath 与微信开发者工具启动状态'], { strategy }, baseError);
50
+ }
51
+ }
52
+ async function connectByWsEndpoint(request, wsEndpoint, strategyUsed) {
53
+ try {
54
+ const miniProgram = await automator.connect({ wsEndpoint, timeout: request.timeoutMs });
55
+ const currentPage = await miniProgram.currentPage();
56
+ if (!currentPage) {
57
+ throw new ProtocolConnectionError('wsEndpoint 已连接但 currentPage 不可用', [
58
+ '确认目标 DevTools 实例已打开小程序项目',
59
+ ]);
60
+ }
61
+ const pagePath = ensurePagePath(await currentPage.path);
62
+ return {
63
+ strategyUsed,
64
+ endpoint: wsEndpoint,
65
+ miniProgram,
66
+ currentPage,
67
+ pagePath,
68
+ };
69
+ }
70
+ catch (error) {
71
+ const baseError = error instanceof Error ? error : new Error(String(error));
72
+ throw new ProtocolConnectionError(baseError.message, ['确认 wsEndpoint 可访问,且端点属于微信开发者工具自动化端口'], { wsEndpoint, strategy: strategyUsed }, baseError);
73
+ }
74
+ }
75
+ function parseWebSocketDebuggerUrl(payload) {
76
+ const endpoint = payload.webSocketDebuggerUrl ?? payload.websocketDebuggerUrl;
77
+ if (!endpoint) {
78
+ throw new EnvironmentConnectionError('browserUrl 未返回 webSocketDebuggerUrl', 'connect', ['确认目标地址支持 /json/version 并开启远程调试']);
79
+ }
80
+ return endpoint;
81
+ }
82
+ async function resolveWsEndpointByBrowserUrl(browserUrl, timeoutMs) {
83
+ const normalizedBase = browserUrl.endsWith('/') ? browserUrl.slice(0, -1) : browserUrl;
84
+ const versionUrl = `${normalizedBase}/json/version`;
85
+ let response;
86
+ try {
87
+ response = await fetch(versionUrl, {
88
+ signal: AbortSignal.timeout(timeoutMs),
89
+ });
90
+ }
91
+ catch (error) {
92
+ const baseError = error instanceof Error ? error : new Error(String(error));
93
+ throw new EnvironmentConnectionError(`请求 browserUrl 失败: ${baseError.message}`, 'connect', ['确认 browserUrl 可访问,例如 http://127.0.0.1:9222'], { browserUrl }, baseError);
94
+ }
95
+ if (!response.ok) {
96
+ throw new EnvironmentConnectionError(`browserUrl 返回非成功状态: ${response.status}`, 'connect', ['确认远程调试服务已开启并允许访问 /json/version'], { browserUrl, status: response.status });
97
+ }
98
+ const payload = await response.json();
99
+ return parseWebSocketDebuggerUrl(payload);
100
+ }
101
+ async function connectByBrowserUrl(request, browserUrl) {
102
+ const endpoint = await resolveWsEndpointByBrowserUrl(browserUrl, request.timeoutMs);
103
+ return connectByWsEndpoint(request, endpoint, 'browserUrl');
104
+ }
105
+ async function connectByDiscover(request) {
106
+ const port = await detectIDEPort(request.verbose);
107
+ if (port === null) {
108
+ throw new EnvironmentConnectionError('自动发现失败:未检测到可用的微信开发者工具自动化端口', 'startup', [
109
+ '先在微信开发者工具中开启自动化能力',
110
+ '改用 strategy=launch 并传入 projectPath',
111
+ ]);
112
+ }
113
+ const endpoint = `ws://127.0.0.1:${port}`;
114
+ return connectByWsEndpoint(request, endpoint, 'discover');
115
+ }
116
+ export async function executeConnectionStrategy(strategy, request) {
117
+ if (strategy === 'auto' || strategy === 'launch' || strategy === 'connect') {
118
+ return connectByEnhancedMode(request, strategy);
119
+ }
120
+ if (strategy === 'wsEndpoint') {
121
+ if (!request.wsEndpoint) {
122
+ throw new EnvironmentConnectionError('wsEndpoint 策略缺少 wsEndpoint 参数', 'resolve');
123
+ }
124
+ return connectByWsEndpoint(request, request.wsEndpoint, strategy);
125
+ }
126
+ if (strategy === 'browserUrl') {
127
+ if (!request.browserUrl) {
128
+ throw new EnvironmentConnectionError('browserUrl 策略缺少 browserUrl 参数', 'resolve');
129
+ }
130
+ return connectByBrowserUrl(request, request.browserUrl);
131
+ }
132
+ return connectByDiscover(request);
133
+ }
134
+ //# sourceMappingURL=adapters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/connection/adapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import type { ConnectionErrorSummary, ConnectionPhase, MetadataValue } from './types.js';
2
+ export type ConnectionErrorCode = 'INVALID_ARGUMENT' | 'ENVIRONMENT' | 'SESSION_CONFLICT' | 'PROTOCOL' | 'HEALTH_CHECK_FAILED' | 'CONNECTION_FAILED' | 'DISCONNECTED';
3
+ export interface ConnectionErrorOptions {
4
+ code: ConnectionErrorCode;
5
+ phase: ConnectionPhase;
6
+ suggestions?: string[];
7
+ metadata?: Record<string, MetadataValue>;
8
+ cause?: Error;
9
+ }
10
+ export declare class ConnectionError extends Error {
11
+ readonly code: ConnectionErrorCode;
12
+ readonly phase: ConnectionPhase;
13
+ readonly suggestions: string[];
14
+ readonly metadata?: Record<string, MetadataValue>;
15
+ constructor(message: string, options: ConnectionErrorOptions);
16
+ toSummary(): ConnectionErrorSummary;
17
+ }
18
+ export declare class ValidationConnectionError extends ConnectionError {
19
+ constructor(message: string, suggestions?: string[], metadata?: Record<string, MetadataValue>);
20
+ }
21
+ export declare class EnvironmentConnectionError extends ConnectionError {
22
+ constructor(message: string, phase: Extract<ConnectionPhase, 'startup' | 'connect' | 'resolve'>, suggestions?: string[], metadata?: Record<string, MetadataValue>, cause?: Error);
23
+ }
24
+ export declare class ProtocolConnectionError extends ConnectionError {
25
+ constructor(message: string, suggestions?: string[], metadata?: Record<string, MetadataValue>, cause?: Error);
26
+ }
27
+ export declare class SessionConflictConnectionError extends ConnectionError {
28
+ constructor(message: string, metadata?: Record<string, MetadataValue>, cause?: Error);
29
+ }
30
+ export declare class HealthCheckConnectionError extends ConnectionError {
31
+ constructor(message: string, metadata?: Record<string, MetadataValue>, cause?: Error);
32
+ }
33
+ export declare function normalizeConnectionError(error: Error | ConnectionError): ConnectionError;
34
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/connection/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,eAAe,EACf,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAC3B,kBAAkB,GAClB,aAAa,GACb,kBAAkB,GAClB,UAAU,GACV,qBAAqB,GACrB,mBAAmB,GACnB,cAAc,CAAC;AAEnB,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,KAAK,EAAE,eAAe,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;gBAEtC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB;IAS5D,SAAS,IAAI,sBAAsB;CAUpC;AAED,qBAAa,yBAA0B,SAAQ,eAAe;gBAE1D,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC;CAU3C;AAED,qBAAa,0BAA2B,SAAQ,eAAe;gBAE3D,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,CAAC,eAAe,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC,EAClE,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACxC,KAAK,CAAC,EAAE,KAAK;CAWhB;AAED,qBAAa,uBAAwB,SAAQ,eAAe;gBAExD,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,EAAE,EACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EACxC,KAAK,CAAC,EAAE,KAAK;CAWhB;AAED,qBAAa,8BAA+B,SAAQ,eAAe;gBACrD,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK;CAarF;AAED,qBAAa,0BAA2B,SAAQ,eAAe;gBACjD,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,KAAK,CAAC,EAAE,KAAK;CAarF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,GAAG,eAAe,CAWxF"}
@@ -0,0 +1,101 @@
1
+ export class ConnectionError extends Error {
2
+ code;
3
+ phase;
4
+ suggestions;
5
+ metadata;
6
+ constructor(message, options) {
7
+ super(message, options.cause ? { cause: options.cause } : undefined);
8
+ this.name = 'ConnectionError';
9
+ this.code = options.code;
10
+ this.phase = options.phase;
11
+ this.suggestions = options.suggestions ?? [];
12
+ this.metadata = options.metadata;
13
+ }
14
+ toSummary() {
15
+ return {
16
+ code: this.code,
17
+ phase: this.phase,
18
+ message: this.message,
19
+ suggestions: this.suggestions,
20
+ metadata: this.metadata,
21
+ timestamp: new Date().toISOString(),
22
+ };
23
+ }
24
+ }
25
+ export class ValidationConnectionError extends ConnectionError {
26
+ constructor(message, suggestions, metadata) {
27
+ super(message, {
28
+ code: 'INVALID_ARGUMENT',
29
+ phase: 'resolve',
30
+ suggestions,
31
+ metadata,
32
+ });
33
+ this.name = 'ValidationConnectionError';
34
+ }
35
+ }
36
+ export class EnvironmentConnectionError extends ConnectionError {
37
+ constructor(message, phase, suggestions, metadata, cause) {
38
+ super(message, {
39
+ code: 'ENVIRONMENT',
40
+ phase,
41
+ suggestions,
42
+ metadata,
43
+ cause,
44
+ });
45
+ this.name = 'EnvironmentConnectionError';
46
+ }
47
+ }
48
+ export class ProtocolConnectionError extends ConnectionError {
49
+ constructor(message, suggestions, metadata, cause) {
50
+ super(message, {
51
+ code: 'PROTOCOL',
52
+ phase: 'connect',
53
+ suggestions,
54
+ metadata,
55
+ cause,
56
+ });
57
+ this.name = 'ProtocolConnectionError';
58
+ }
59
+ }
60
+ export class SessionConflictConnectionError extends ConnectionError {
61
+ constructor(message, metadata, cause) {
62
+ super(message, {
63
+ code: 'SESSION_CONFLICT',
64
+ phase: 'startup',
65
+ suggestions: [
66
+ '关闭当前微信开发者工具窗口后重试',
67
+ '切换到 wsEndpoint 或 discover 策略复用现有会话',
68
+ ],
69
+ metadata,
70
+ cause,
71
+ });
72
+ this.name = 'SessionConflictConnectionError';
73
+ }
74
+ }
75
+ export class HealthCheckConnectionError extends ConnectionError {
76
+ constructor(message, metadata, cause) {
77
+ super(message, {
78
+ code: 'HEALTH_CHECK_FAILED',
79
+ phase: 'health_check',
80
+ suggestions: [
81
+ '检查开发者工具是否仍在运行',
82
+ '使用 reconnect_devtools 重新建立连接',
83
+ ],
84
+ metadata,
85
+ cause,
86
+ });
87
+ this.name = 'HealthCheckConnectionError';
88
+ }
89
+ }
90
+ export function normalizeConnectionError(error) {
91
+ if (error instanceof ConnectionError) {
92
+ return error;
93
+ }
94
+ return new ConnectionError(error.message, {
95
+ code: 'CONNECTION_FAILED',
96
+ phase: 'connect',
97
+ suggestions: ['请检查连接参数并重试'],
98
+ cause: error,
99
+ });
100
+ }
101
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/connection/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { MiniProgram } from 'miniprogram-automator';
2
+ import type { ConnectionHealth } from './types.js';
3
+ export declare function probeConnectionHealth(miniProgram: MiniProgram): Promise<ConnectionHealth>;
4
+ //# sourceMappingURL=health-probe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-probe.d.ts","sourceRoot":"","sources":["../../src/connection/health-probe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EACV,gBAAgB,EAGjB,MAAM,YAAY,CAAC;AAwCpB,wBAAsB,qBAAqB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+B/F"}
@@ -0,0 +1,60 @@
1
+ async function runCheck(name, execute) {
2
+ const start = Date.now();
3
+ try {
4
+ const result = await execute();
5
+ return {
6
+ name,
7
+ status: result.passed ? 'pass' : 'fail',
8
+ message: result.message,
9
+ durationMs: Date.now() - start,
10
+ };
11
+ }
12
+ catch (error) {
13
+ const message = error instanceof Error ? error.message : String(error);
14
+ return {
15
+ name,
16
+ status: 'fail',
17
+ message,
18
+ durationMs: Date.now() - start,
19
+ };
20
+ }
21
+ }
22
+ function resolveLevel(checks) {
23
+ const failures = checks.filter(check => check.status === 'fail').length;
24
+ if (failures === 0) {
25
+ return 'healthy';
26
+ }
27
+ const transportCheck = checks.find(check => check.name === 'transport');
28
+ if (!transportCheck || transportCheck.status === 'fail') {
29
+ return 'unhealthy';
30
+ }
31
+ return 'degraded';
32
+ }
33
+ export async function probeConnectionHealth(miniProgram) {
34
+ const checks = [];
35
+ checks.push(await runCheck('transport', async () => {
36
+ await miniProgram.evaluate(() => true);
37
+ return { passed: true, message: 'evaluate 调用成功' };
38
+ }));
39
+ let pagePath = '';
40
+ checks.push(await runCheck('session', async () => {
41
+ const page = await miniProgram.currentPage();
42
+ if (!page) {
43
+ return { passed: false, message: 'currentPage 为空' };
44
+ }
45
+ pagePath = await page.path;
46
+ return { passed: true, message: 'currentPage 可访问' };
47
+ }));
48
+ checks.push(await runCheck('page', async () => {
49
+ if (!pagePath) {
50
+ return { passed: false, message: '页面路径为空' };
51
+ }
52
+ return { passed: true, message: `当前页面: ${pagePath}` };
53
+ }));
54
+ return {
55
+ level: resolveLevel(checks),
56
+ checks,
57
+ checkedAt: new Date().toISOString(),
58
+ };
59
+ }
60
+ //# sourceMappingURL=health-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"health-probe.js","sourceRoot":"","sources":["../../src/connection/health-probe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { ConnectionManager } from './manager.js';
2
+ export { probeConnectionHealth } from './health-probe.js';
3
+ export { resolveConnectionPlan } from './resolver.js';
4
+ export * from './errors.js';
5
+ export * from './types.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/connection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { ConnectionManager } from './manager.js';
2
+ export { probeConnectionHealth } from './health-probe.js';
3
+ export { resolveConnectionPlan } from './resolver.js';
4
+ export * from './errors.js';
5
+ export * from './types.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/connection/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { MiniProgram, Page } from 'miniprogram-automator';
2
+ import { type ConnectionConnectResult, type ConnectionErrorSummary, type ConnectionRequest, type ConnectionStatusSnapshot, type ResolvedConnectionRequest } from './types.js';
3
+ interface StoredSession {
4
+ miniProgram: MiniProgram;
5
+ currentPage: Page;
6
+ }
7
+ export declare class ConnectionManager {
8
+ #private;
9
+ getSession(): StoredSession | null;
10
+ getStatusSnapshot(): ConnectionStatusSnapshot;
11
+ getLastRequest(): ResolvedConnectionRequest | null;
12
+ connect(request: ConnectionRequest): Promise<ConnectionConnectResult>;
13
+ reconnect(request?: ConnectionRequest): Promise<ConnectionConnectResult>;
14
+ disconnect(): Promise<ConnectionStatusSnapshot>;
15
+ refreshHealth(): Promise<ConnectionStatusSnapshot>;
16
+ markDisconnectedWithError(error: ConnectionErrorSummary): ConnectionStatusSnapshot;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/connection/manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAW/D,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,EAE3B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,yBAAyB,EAC/B,MAAM,YAAY,CAAC;AAKpB,UAAU,aAAa;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,WAAW,EAAE,IAAI,CAAC;CACnB;AAmBD,qBAAa,iBAAiB;;IAsN5B,UAAU,IAAI,aAAa,GAAG,IAAI;IAIlC,iBAAiB,IAAI,wBAAwB;IAI7C,cAAc,IAAI,yBAAyB,GAAG,IAAI;IAI5C,OAAO,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIrE,SAAS,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAIxE,UAAU,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAI/C,aAAa,IAAI,OAAO,CAAC,wBAAwB,CAAC;IAIxD,yBAAyB,CAAC,KAAK,EAAE,sBAAsB,GAAG,wBAAwB;CAQnF"}