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 @@
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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 输入交互工具
3
+ * 负责页面元素的点击、填写等交互操作
4
+ */
5
+ /**
6
+ * 点击页面元素
7
+ */
8
+ export declare const clickTool: import("./ToolDefinition.js").ToolDefinition;
9
+ /**
10
+ * 向元素输入文本
11
+ */
12
+ export declare const inputTextTool: import("./ToolDefinition.js").ToolDefinition;
13
+ /**
14
+ * 获取元素值
15
+ */
16
+ export declare const getValueTool: import("./ToolDefinition.js").ToolDefinition;
17
+ /**
18
+ * 设置表单控件值
19
+ */
20
+ export declare const setFormControlTool: import("./ToolDefinition.js").ToolDefinition;
21
+ //# sourceMappingURL=input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.d.ts","sourceRoot":"","sources":["../../src/tools/input.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH;;GAEG;AACH,eAAO,MAAM,SAAS,8CA4DpB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa,8CA+CxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY,8CAmCvB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB,8CAqC7B,CAAC"}
@@ -3,8 +3,8 @@
3
3
  * 负责页面元素的点击、填写等交互操作
4
4
  */
5
5
  import { z } from 'zod';
6
- import { defineTool } from './ToolDefinition.js';
7
- import { clickElement, inputText, getElementValue, setFormControl } from '../tools.js';
6
+ import { getElementValue, setFormControl } from '../tools.js';
7
+ import { defineTool, ToolCategory } from './ToolDefinition.js';
8
8
  /**
9
9
  * 点击页面元素
10
10
  */
@@ -16,27 +16,49 @@ export const clickTool = defineTool({
16
16
  dblClick: z.boolean().optional().default(false).describe('是否为双击,默认false'),
17
17
  }),
18
18
  annotations: {
19
+ category: ToolCategory.CORE,
19
20
  audience: ['developers'],
20
21
  },
21
22
  handler: async (request, response, context) => {
22
23
  const { uid, dblClick } = request.params;
23
- if (!context.currentPage) {
24
- throw new Error('请先获取当前页面');
25
- }
24
+ // 使用统一的元素获取方法
25
+ const element = await context.getElementByUid(uid);
26
+ // 获取当前页面引用(getElementByUid 已验证页面存在)
27
+ const currentPage = context.currentPage;
28
+ if (!currentPage) {
29
+ throw new Error('页面未连接,无法执行点击操作');
30
+ }
31
+ // 记录点击前的页面路径
32
+ const beforePath = currentPage.path;
33
+ console.error(`[Click] 点击前页面: ${beforePath}`);
34
+ // 执行点击操作
35
+ await element.tap();
36
+ console.error(`[Click] 已执行 tap() 操作`);
37
+ // 如果是双击,再点击一次
38
+ if (dblClick) {
39
+ await new Promise(resolve => setTimeout(resolve, 100));
40
+ await element.tap();
41
+ console.error(`[Click] 已执行第二次 tap() (双击)`);
42
+ }
43
+ // 等待页面响应
44
+ await new Promise(resolve => setTimeout(resolve, 300));
45
+ // 记录点击后的页面路径
26
46
  try {
27
- const options = { uid, dblClick };
28
- await clickElement(context.currentPage, context.elementMap, options);
29
- const action = dblClick ? '双击' : '点击';
30
- response.appendResponseLine(`${action}元素成功`);
31
- response.appendResponseLine(`UID: ${uid}`);
32
- // 点击后可能页面发生变化,建议包含快照
33
- response.setIncludeSnapshot(true);
47
+ const updatedPage = context.currentPage;
48
+ const afterPath = updatedPage?.path;
49
+ console.error(`[Click] 点击后页面: ${afterPath}`);
50
+ if (beforePath !== afterPath) {
51
+ console.error(`[Click] ✅ 页面已切换: ${beforePath} → ${afterPath}`);
52
+ }
34
53
  }
35
54
  catch (error) {
36
- const errorMessage = error instanceof Error ? error.message : String(error);
37
- response.appendResponseLine(`点击元素失败: ${errorMessage}`);
38
- throw error;
55
+ console.warn(`[Click] 无法获取点击后的页面路径:`, error);
39
56
  }
57
+ const action = dblClick ? '双击' : '点击';
58
+ response.appendResponseLine(`${action}元素成功`);
59
+ response.appendResponseLine(`UID: ${uid}`);
60
+ // 点击后可能页面发生变化,建议包含快照
61
+ response.setIncludeSnapshot(true);
40
62
  },
41
63
  });
42
64
  /**
@@ -52,32 +74,41 @@ export const inputTextTool = defineTool({
52
74
  append: z.boolean().optional().default(false).describe('是否追加到现有内容,默认false'),
53
75
  }),
54
76
  annotations: {
77
+ category: ToolCategory.CORE,
55
78
  audience: ['developers'],
56
79
  },
57
80
  handler: async (request, response, context) => {
58
81
  const { uid, text, clear, append } = request.params;
59
- if (!context.currentPage) {
60
- throw new Error('请先获取当前页面');
61
- }
62
- try {
63
- const options = { uid, text, clear, append };
64
- await inputText(context.currentPage, context.elementMap, options);
65
- let action = '输入文本';
66
- if (clear)
67
- action = '清空并输入文本';
68
- if (append)
69
- action = '追加文本';
70
- response.appendResponseLine(`${action}成功`);
71
- response.appendResponseLine(`UID: ${uid}`);
72
- response.appendResponseLine(`内容: ${text}`);
73
- // 输入后页面可能发生变化
74
- response.setIncludeSnapshot(true);
75
- }
76
- catch (error) {
77
- const errorMessage = error instanceof Error ? error.message : String(error);
78
- response.appendResponseLine(`输入文本失败: ${errorMessage}`);
79
- throw error;
80
- }
82
+ // 使用统一的元素获取方法
83
+ const element = await context.getElementByUid(uid);
84
+ // 处理输入逻辑
85
+ if (clear) {
86
+ // 清空并输入
87
+ element.value = '';
88
+ await element.input(text);
89
+ console.error(`[InputText] 清空并输入: ${text}`);
90
+ }
91
+ else if (append) {
92
+ // 追加内容
93
+ const currentValue = element.value || '';
94
+ await element.input(currentValue + text);
95
+ console.error(`[InputText] 追加文本: ${text}`);
96
+ }
97
+ else {
98
+ // 直接输入
99
+ await element.input(text);
100
+ console.error(`[InputText] 输入文本: ${text}`);
101
+ }
102
+ let action = '输入文本';
103
+ if (clear)
104
+ action = '清空并输入文本';
105
+ if (append)
106
+ action = '追加文本';
107
+ response.appendResponseLine(`${action}成功`);
108
+ response.appendResponseLine(`UID: ${uid}`);
109
+ response.appendResponseLine(`内容: ${text}`);
110
+ // 输入后页面可能发生变化
111
+ response.setIncludeSnapshot(true);
81
112
  },
82
113
  });
83
114
  /**
@@ -91,6 +122,7 @@ export const getValueTool = defineTool({
91
122
  attribute: z.string().optional().describe('要获取的属性名,不指定则获取value或text'),
92
123
  }),
93
124
  annotations: {
125
+ category: ToolCategory.CORE,
94
126
  audience: ['developers'],
95
127
  },
96
128
  handler: async (request, response, context) => {
@@ -127,6 +159,7 @@ export const setFormControlTool = defineTool({
127
159
  trigger: z.string().optional().default('change').describe('触发的事件类型,默认为change'),
128
160
  }),
129
161
  annotations: {
162
+ category: ToolCategory.CORE,
130
163
  audience: ['developers'],
131
164
  },
132
165
  handler: async (request, response, context) => {
@@ -151,105 +184,6 @@ export const setFormControlTool = defineTool({
151
184
  }
152
185
  },
153
186
  });
154
- /**
155
- * 选择器选择选项(picker专用)
156
- */
157
- export const selectPickerTool = defineTool({
158
- name: 'select_picker',
159
- description: '选择picker控件的选项',
160
- schema: z.object({
161
- uid: z.string().describe('picker元素的唯一标识符'),
162
- value: z.union([z.number(), z.string(), z.array(z.any())]).describe('选项值,可以是索引、文本或多选数组'),
163
- }),
164
- annotations: {
165
- audience: ['developers'],
166
- },
167
- handler: async (request, response, context) => {
168
- const { uid, value } = request.params;
169
- if (!context.currentPage) {
170
- throw new Error('请先获取当前页面');
171
- }
172
- try {
173
- const options = { uid, value, trigger: 'change' };
174
- await setFormControl(context.currentPage, context.elementMap, options);
175
- response.appendResponseLine(`选择picker选项成功`);
176
- response.appendResponseLine(`UID: ${uid}`);
177
- response.appendResponseLine(`选项: ${JSON.stringify(value)}`);
178
- // 选择后页面可能发生变化
179
- response.setIncludeSnapshot(true);
180
- }
181
- catch (error) {
182
- const errorMessage = error instanceof Error ? error.message : String(error);
183
- response.appendResponseLine(`选择picker选项失败: ${errorMessage}`);
184
- throw error;
185
- }
186
- },
187
- });
188
- /**
189
- * 切换开关状态(switch专用)
190
- */
191
- export const toggleSwitchTool = defineTool({
192
- name: 'toggle_switch',
193
- description: '切换switch开关的状态',
194
- schema: z.object({
195
- uid: z.string().describe('switch元素的唯一标识符'),
196
- checked: z.boolean().describe('开关状态,true为开启,false为关闭'),
197
- }),
198
- annotations: {
199
- audience: ['developers'],
200
- },
201
- handler: async (request, response, context) => {
202
- const { uid, checked } = request.params;
203
- if (!context.currentPage) {
204
- throw new Error('请先获取当前页面');
205
- }
206
- try {
207
- const options = { uid, value: checked, trigger: 'change' };
208
- await setFormControl(context.currentPage, context.elementMap, options);
209
- response.appendResponseLine(`切换开关状态成功`);
210
- response.appendResponseLine(`UID: ${uid}`);
211
- response.appendResponseLine(`状态: ${checked ? '开启' : '关闭'}`);
212
- // 切换后页面可能发生变化
213
- response.setIncludeSnapshot(true);
214
- }
215
- catch (error) {
216
- const errorMessage = error instanceof Error ? error.message : String(error);
217
- response.appendResponseLine(`切换开关状态失败: ${errorMessage}`);
218
- throw error;
219
- }
220
- },
221
- });
222
- /**
223
- * 设置滑块值(slider专用)
224
- */
225
- export const setSliderTool = defineTool({
226
- name: 'set_slider',
227
- description: '设置slider滑块的值',
228
- schema: z.object({
229
- uid: z.string().describe('slider元素的唯一标识符'),
230
- value: z.number().describe('滑块值'),
231
- }),
232
- annotations: {
233
- audience: ['developers'],
234
- },
235
- handler: async (request, response, context) => {
236
- const { uid, value } = request.params;
237
- if (!context.currentPage) {
238
- throw new Error('请先获取当前页面');
239
- }
240
- try {
241
- const options = { uid, value, trigger: 'change' };
242
- await setFormControl(context.currentPage, context.elementMap, options);
243
- response.appendResponseLine(`设置滑块值成功`);
244
- response.appendResponseLine(`UID: ${uid}`);
245
- response.appendResponseLine(`值: ${value}`);
246
- // 设置后页面可能发生变化
247
- response.setIncludeSnapshot(true);
248
- }
249
- catch (error) {
250
- const errorMessage = error instanceof Error ? error.message : String(error);
251
- response.appendResponseLine(`设置滑块值失败: ${errorMessage}`);
252
- throw error;
253
- }
254
- },
255
- });
187
+ // 注意: select_picker, toggle_switch, set_slider 已合并到 set_form_control
188
+ // 使用 set_form_control 即可操作 picker, switch, slider 等所有表单控件
189
+ //# sourceMappingURL=input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/tools/input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 页面导航工具
3
+ * 提供小程序页面跳转、返回、Tab切换等导航功能
4
+ */
5
+ /**
6
+ * 跳转到指定页面(支持普通跳转和重定向模式)
7
+ */
8
+ export declare const navigateToTool: import("./ToolDefinition.js").ToolDefinition;
9
+ /**
10
+ * 返回上一页或指定层数
11
+ */
12
+ export declare const navigateBackTool: import("./ToolDefinition.js").ToolDefinition;
13
+ /**
14
+ * 切换到指定Tab页
15
+ */
16
+ export declare const switchTabTool: import("./ToolDefinition.js").ToolDefinition;
17
+ /**
18
+ * 重新启动到指定页面
19
+ */
20
+ export declare const reLaunchTool: import("./ToolDefinition.js").ToolDefinition;
21
+ //# sourceMappingURL=navigate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate.d.ts","sourceRoot":"","sources":["../../src/tools/navigate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgBH;;GAEG;AACH,eAAO,MAAM,cAAc,8CA6FzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB,8CAgD3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa,8CAgDxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,YAAY,8CAqDvB,CAAC"}
@@ -3,10 +3,10 @@
3
3
  * 提供小程序页面跳转、返回、Tab切换等导航功能
4
4
  */
5
5
  import { z } from 'zod';
6
- import { defineTool } from './ToolDefinition.js';
7
- import { navigateToPage, navigateBack, switchTab, getCurrentPageInfo, reLaunch } from '../tools.js';
6
+ import { navigateToPage, navigateBack, switchTab, reLaunch } from '../tools.js';
7
+ import { defineTool, ToolCategory } from './ToolDefinition.js';
8
8
  /**
9
- * 跳转到指定页面
9
+ * 跳转到指定页面(支持普通跳转和重定向模式)
10
10
  */
11
11
  export const navigateToTool = defineTool({
12
12
  name: 'navigate_to',
@@ -14,36 +14,75 @@ export const navigateToTool = defineTool({
14
14
  schema: z.object({
15
15
  url: z.string().describe('目标页面路径'),
16
16
  params: z.record(z.string(), z.any()).optional().describe('页面参数(查询参数)'),
17
+ redirect: z.boolean().optional().default(false).describe('是否使用重定向模式(关闭当前页面),默认false'),
17
18
  waitForLoad: z.boolean().optional().default(true).describe('是否等待页面加载完成,默认true'),
18
19
  timeout: z.number().optional().default(10000).describe('等待超时时间(毫秒),默认10000ms'),
19
20
  }),
20
21
  annotations: {
22
+ category: ToolCategory.CORE,
21
23
  audience: ['developers'],
22
24
  },
23
25
  handler: async (request, response, context) => {
24
- const { url, params, waitForLoad, timeout } = request.params;
26
+ const { url, params, redirect, waitForLoad, timeout } = request.params;
25
27
  if (!context.miniProgram) {
26
28
  throw new Error('请先连接到微信开发者工具');
27
29
  }
28
30
  try {
29
- const options = {
30
- url,
31
- params,
32
- waitForLoad,
33
- timeout
34
- };
35
- await navigateToPage(context.miniProgram, options);
36
- response.appendResponseLine(`页面跳转成功`);
31
+ if (redirect) {
32
+ // 重定向模式:关闭当前页面并跳转
33
+ let fullUrl = url;
34
+ if (params && Object.keys(params).length > 0) {
35
+ const queryString = Object.entries(params)
36
+ .map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`)
37
+ .join('&');
38
+ fullUrl += (url.includes('?') ? '&' : '?') + queryString;
39
+ }
40
+ await context.miniProgram.redirectTo(fullUrl);
41
+ // 等待页面加载完成
42
+ if (waitForLoad) {
43
+ const startTime = Date.now();
44
+ while (Date.now() - startTime < timeout) {
45
+ try {
46
+ const currentPage = await context.miniProgram.currentPage();
47
+ if (currentPage) {
48
+ const currentPath = await currentPage.path;
49
+ if (currentPath.includes(url.split('?')[0])) {
50
+ break;
51
+ }
52
+ }
53
+ }
54
+ catch {
55
+ // 继续等待
56
+ }
57
+ await new Promise(resolve => setTimeout(resolve, 100));
58
+ }
59
+ }
60
+ response.appendResponseLine(`页面重定向成功`);
61
+ }
62
+ else {
63
+ // 普通跳转模式
64
+ const options = {
65
+ url,
66
+ params,
67
+ waitForLoad,
68
+ timeout
69
+ };
70
+ await navigateToPage(context.miniProgram, options);
71
+ response.appendResponseLine(`页面跳转成功`);
72
+ }
37
73
  response.appendResponseLine(`目标页面: ${url}`);
38
74
  if (params && Object.keys(params).length > 0) {
39
75
  response.appendResponseLine(`参数: ${JSON.stringify(params)}`);
40
76
  }
77
+ if (redirect) {
78
+ response.appendResponseLine(`模式: 重定向(已关闭原页面)`);
79
+ }
41
80
  // 页面跳转后,更新当前页面信息
42
81
  try {
43
82
  context.currentPage = await context.miniProgram.currentPage();
44
83
  response.appendResponseLine(`当前页面已更新`);
45
84
  }
46
- catch (error) {
85
+ catch {
47
86
  response.appendResponseLine(`警告: 无法更新当前页面信息`);
48
87
  }
49
88
  // 页面跳转后建议获取新快照
@@ -51,7 +90,8 @@ export const navigateToTool = defineTool({
51
90
  }
52
91
  catch (error) {
53
92
  const errorMessage = error instanceof Error ? error.message : String(error);
54
- response.appendResponseLine(`页面跳转失败: ${errorMessage}`);
93
+ const action = redirect ? '重定向' : '跳转';
94
+ response.appendResponseLine(`页面${action}失败: ${errorMessage}`);
55
95
  throw error;
56
96
  }
57
97
  },
@@ -68,6 +108,7 @@ export const navigateBackTool = defineTool({
68
108
  timeout: z.number().optional().default(5000).describe('等待超时时间(毫秒),默认5000ms'),
69
109
  }),
70
110
  annotations: {
111
+ category: ToolCategory.CORE,
71
112
  audience: ['developers'],
72
113
  },
73
114
  handler: async (request, response, context) => {
@@ -89,7 +130,7 @@ export const navigateBackTool = defineTool({
89
130
  context.currentPage = await context.miniProgram.currentPage();
90
131
  response.appendResponseLine(`当前页面已更新`);
91
132
  }
92
- catch (error) {
133
+ catch {
93
134
  response.appendResponseLine(`警告: 无法更新当前页面信息`);
94
135
  }
95
136
  // 页面返回后建议获取新快照
@@ -114,6 +155,7 @@ export const switchTabTool = defineTool({
114
155
  timeout: z.number().optional().default(5000).describe('等待超时时间(毫秒),默认5000ms'),
115
156
  }),
116
157
  annotations: {
158
+ category: ToolCategory.CORE,
117
159
  audience: ['developers'],
118
160
  },
119
161
  handler: async (request, response, context) => {
@@ -135,7 +177,7 @@ export const switchTabTool = defineTool({
135
177
  context.currentPage = await context.miniProgram.currentPage();
136
178
  response.appendResponseLine(`当前页面已更新`);
137
179
  }
138
- catch (error) {
180
+ catch {
139
181
  response.appendResponseLine(`警告: 无法更新当前页面信息`);
140
182
  }
141
183
  // Tab切换后建议获取新快照
@@ -161,6 +203,7 @@ export const reLaunchTool = defineTool({
161
203
  timeout: z.number().optional().default(10000).describe('等待超时时间(毫秒),默认10000ms'),
162
204
  }),
163
205
  annotations: {
206
+ category: ToolCategory.CORE,
164
207
  audience: ['developers'],
165
208
  },
166
209
  handler: async (request, response, context) => {
@@ -186,7 +229,7 @@ export const reLaunchTool = defineTool({
186
229
  context.currentPage = await context.miniProgram.currentPage();
187
230
  response.appendResponseLine(`当前页面已更新`);
188
231
  }
189
- catch (error) {
232
+ catch {
190
233
  response.appendResponseLine(`警告: 无法更新当前页面信息`);
191
234
  }
192
235
  // 重新启动后建议获取新快照
@@ -199,112 +242,6 @@ export const reLaunchTool = defineTool({
199
242
  }
200
243
  },
201
244
  });
202
- /**
203
- * 获取当前页面信息
204
- */
205
- export const getPageInfoTool = defineTool({
206
- name: 'get_page_info',
207
- description: '获取当前页面的详细信息',
208
- schema: z.object({}),
209
- annotations: {
210
- audience: ['developers'],
211
- },
212
- handler: async (request, response, context) => {
213
- if (!context.miniProgram) {
214
- throw new Error('请先连接到微信开发者工具');
215
- }
216
- try {
217
- const pageInfo = await getCurrentPageInfo(context.miniProgram);
218
- response.appendResponseLine(`页面信息获取成功`);
219
- response.appendResponseLine(`路径: ${pageInfo.path}`);
220
- if (pageInfo.title) {
221
- response.appendResponseLine(`标题: ${pageInfo.title}`);
222
- }
223
- if (pageInfo.query && Object.keys(pageInfo.query).length > 0) {
224
- response.appendResponseLine(`查询参数: ${JSON.stringify(pageInfo.query)}`);
225
- }
226
- response.appendResponseLine('');
227
- response.appendResponseLine('完整信息:');
228
- response.appendResponseLine(JSON.stringify(pageInfo, null, 2));
229
- }
230
- catch (error) {
231
- const errorMessage = error instanceof Error ? error.message : String(error);
232
- response.appendResponseLine(`获取页面信息失败: ${errorMessage}`);
233
- throw error;
234
- }
235
- },
236
- });
237
- /**
238
- * 重定向到指定页面(替换当前页面)
239
- */
240
- export const redirectToTool = defineTool({
241
- name: 'redirect_to',
242
- description: '重定向到指定页面(关闭当前页面并跳转)',
243
- schema: z.object({
244
- url: z.string().describe('目标页面路径'),
245
- params: z.record(z.string(), z.any()).optional().describe('页面参数(查询参数)'),
246
- waitForLoad: z.boolean().optional().default(true).describe('是否等待页面加载完成,默认true'),
247
- timeout: z.number().optional().default(10000).describe('等待超时时间(毫秒),默认10000ms'),
248
- }),
249
- annotations: {
250
- audience: ['developers'],
251
- },
252
- handler: async (request, response, context) => {
253
- const { url, params, waitForLoad, timeout } = request.params;
254
- if (!context.miniProgram) {
255
- throw new Error('请先连接到微信开发者工具');
256
- }
257
- try {
258
- // 构建完整的URL
259
- let fullUrl = url;
260
- if (params && Object.keys(params).length > 0) {
261
- const queryString = Object.entries(params)
262
- .map(([key, value]) => `${key}=${encodeURIComponent(String(value))}`)
263
- .join('&');
264
- fullUrl += (url.includes('?') ? '&' : '?') + queryString;
265
- }
266
- // 执行重定向
267
- await context.miniProgram.redirectTo(fullUrl);
268
- // 等待页面加载完成
269
- if (waitForLoad) {
270
- const startTime = Date.now();
271
- while (Date.now() - startTime < timeout) {
272
- try {
273
- const currentPage = await context.miniProgram.currentPage();
274
- if (currentPage) {
275
- const currentPath = await currentPage.path;
276
- // 检查是否已经重定向到目标页面
277
- if (currentPath.includes(url.split('?')[0])) {
278
- break;
279
- }
280
- }
281
- }
282
- catch (error) {
283
- // 继续等待
284
- }
285
- await new Promise(resolve => setTimeout(resolve, 100));
286
- }
287
- }
288
- response.appendResponseLine(`页面重定向成功`);
289
- response.appendResponseLine(`目标页面: ${url}`);
290
- if (params && Object.keys(params).length > 0) {
291
- response.appendResponseLine(`参数: ${JSON.stringify(params)}`);
292
- }
293
- // 重定向后,更新当前页面信息
294
- try {
295
- context.currentPage = await context.miniProgram.currentPage();
296
- response.appendResponseLine(`当前页面已更新`);
297
- }
298
- catch (error) {
299
- response.appendResponseLine(`警告: 无法更新当前页面信息`);
300
- }
301
- // 重定向后建议获取新快照
302
- response.setIncludeSnapshot(true);
303
- }
304
- catch (error) {
305
- const errorMessage = error instanceof Error ? error.message : String(error);
306
- response.appendResponseLine(`页面重定向失败: ${errorMessage}`);
307
- throw error;
308
- }
309
- },
310
- });
245
+ // 注意: get_page_info 已合并到 get_current_page
246
+ // 注意: redirect_to 已合并到 navigate_to(使用 redirect: true 参数)
247
+ //# sourceMappingURL=navigate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigate.js","sourceRoot":"","sources":["../../src/tools/navigate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 网络请求监听工具
3
+ * 采用两阶段查询:list -> get detail
4
+ */
5
+ /**
6
+ * 第一阶段:列表查询网络请求(短格式)
7
+ */
8
+ export declare const listNetworkRequestsTool: import("./ToolDefinition.js").ToolDefinition;
9
+ /**
10
+ * 第二阶段:按 reqid 查询请求详情
11
+ */
12
+ export declare const getNetworkRequestTool: import("./ToolDefinition.js").ToolDefinition;
13
+ /**
14
+ * 停止网络监听
15
+ */
16
+ export declare const stopNetworkMonitoringTool: import("./ToolDefinition.js").ToolDefinition;
17
+ /**
18
+ * 清空网络请求记录
19
+ */
20
+ export declare const clearNetworkRequestsTool: import("./ToolDefinition.js").ToolDefinition;
21
+ //# sourceMappingURL=network.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"network.d.ts","sourceRoot":"","sources":["../../src/tools/network.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAoGH;;GAEG;AACH,eAAO,MAAM,uBAAuB,8CA0FlC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,qBAAqB,8CA2DhC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,yBAAyB,8CAkDpC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,wBAAwB,8CAwCnC,CAAC"}