@dimina-kit/devtools 0.1.0-dev.20260422094158

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 (301) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +562 -0
  3. package/dist/main/api.d.ts +21 -0
  4. package/dist/main/api.d.ts.map +1 -0
  5. package/dist/main/api.js +22 -0
  6. package/dist/main/api.js.map +1 -0
  7. package/dist/main/app/app.d.ts +15 -0
  8. package/dist/main/app/app.d.ts.map +1 -0
  9. package/dist/main/app/app.js +192 -0
  10. package/dist/main/app/app.js.map +1 -0
  11. package/dist/main/app/bootstrap.d.ts +14 -0
  12. package/dist/main/app/bootstrap.d.ts.map +1 -0
  13. package/dist/main/app/bootstrap.js +41 -0
  14. package/dist/main/app/bootstrap.js.map +1 -0
  15. package/dist/main/app/launch.d.ts +10 -0
  16. package/dist/main/app/launch.d.ts.map +1 -0
  17. package/dist/main/app/launch.js +28 -0
  18. package/dist/main/app/launch.js.map +1 -0
  19. package/dist/main/app/lifecycle.d.ts +2 -0
  20. package/dist/main/app/lifecycle.d.ts.map +1 -0
  21. package/dist/main/app/lifecycle.js +11 -0
  22. package/dist/main/app/lifecycle.js.map +1 -0
  23. package/dist/main/index.d.ts +2 -0
  24. package/dist/main/index.d.ts.map +1 -0
  25. package/dist/main/index.js +3 -0
  26. package/dist/main/index.js.map +1 -0
  27. package/dist/main/ipc/app.d.ts +3 -0
  28. package/dist/main/ipc/app.d.ts.map +1 -0
  29. package/dist/main/ipc/app.js +14 -0
  30. package/dist/main/ipc/app.js.map +1 -0
  31. package/dist/main/ipc/index.d.ts +9 -0
  32. package/dist/main/ipc/index.d.ts.map +1 -0
  33. package/dist/main/ipc/index.js +9 -0
  34. package/dist/main/ipc/index.js.map +1 -0
  35. package/dist/main/ipc/panels.d.ts +3 -0
  36. package/dist/main/ipc/panels.d.ts.map +1 -0
  37. package/dist/main/ipc/panels.js +39 -0
  38. package/dist/main/ipc/panels.js.map +1 -0
  39. package/dist/main/ipc/popover.d.ts +3 -0
  40. package/dist/main/ipc/popover.d.ts.map +1 -0
  41. package/dist/main/ipc/popover.js +13 -0
  42. package/dist/main/ipc/popover.js.map +1 -0
  43. package/dist/main/ipc/projects.d.ts +3 -0
  44. package/dist/main/ipc/projects.d.ts.map +1 -0
  45. package/dist/main/ipc/projects.js +15 -0
  46. package/dist/main/ipc/projects.js.map +1 -0
  47. package/dist/main/ipc/session.d.ts +3 -0
  48. package/dist/main/ipc/session.d.ts.map +1 -0
  49. package/dist/main/ipc/session.js +10 -0
  50. package/dist/main/ipc/session.js.map +1 -0
  51. package/dist/main/ipc/settings.d.ts +3 -0
  52. package/dist/main/ipc/settings.d.ts.map +1 -0
  53. package/dist/main/ipc/settings.js +61 -0
  54. package/dist/main/ipc/settings.js.map +1 -0
  55. package/dist/main/ipc/simulator.d.ts +3 -0
  56. package/dist/main/ipc/simulator.d.ts.map +1 -0
  57. package/dist/main/ipc/simulator.js +26 -0
  58. package/dist/main/ipc/simulator.js.map +1 -0
  59. package/dist/main/ipc/toolbar.d.ts +3 -0
  60. package/dist/main/ipc/toolbar.d.ts.map +1 -0
  61. package/dist/main/ipc/toolbar.js +10 -0
  62. package/dist/main/ipc/toolbar.js.map +1 -0
  63. package/dist/main/menu/index.d.ts +3 -0
  64. package/dist/main/menu/index.d.ts.map +1 -0
  65. package/dist/main/menu/index.js +65 -0
  66. package/dist/main/menu/index.js.map +1 -0
  67. package/dist/main/services/automation/exec.d.ts +9 -0
  68. package/dist/main/services/automation/exec.d.ts.map +1 -0
  69. package/dist/main/services/automation/exec.js +33 -0
  70. package/dist/main/services/automation/exec.js.map +1 -0
  71. package/dist/main/services/automation/handlers/app.d.ts +3 -0
  72. package/dist/main/services/automation/handlers/app.d.ts.map +1 -0
  73. package/dist/main/services/automation/handlers/app.js +132 -0
  74. package/dist/main/services/automation/handlers/app.js.map +1 -0
  75. package/dist/main/services/automation/handlers/element.d.ts +3 -0
  76. package/dist/main/services/automation/handlers/element.d.ts.map +1 -0
  77. package/dist/main/services/automation/handlers/element.js +151 -0
  78. package/dist/main/services/automation/handlers/element.js.map +1 -0
  79. package/dist/main/services/automation/handlers/page.d.ts +3 -0
  80. package/dist/main/services/automation/handlers/page.d.ts.map +1 -0
  81. package/dist/main/services/automation/handlers/page.js +66 -0
  82. package/dist/main/services/automation/handlers/page.js.map +1 -0
  83. package/dist/main/services/automation/handlers/tool.d.ts +3 -0
  84. package/dist/main/services/automation/handlers/tool.d.ts.map +1 -0
  85. package/dist/main/services/automation/handlers/tool.js +8 -0
  86. package/dist/main/services/automation/handlers/tool.js.map +1 -0
  87. package/dist/main/services/automation/index.d.ts +18 -0
  88. package/dist/main/services/automation/index.d.ts.map +1 -0
  89. package/dist/main/services/automation/index.js +95 -0
  90. package/dist/main/services/automation/index.js.map +1 -0
  91. package/dist/main/services/automation/registry.d.ts +6 -0
  92. package/dist/main/services/automation/registry.d.ts.map +1 -0
  93. package/dist/main/services/automation/registry.js +20 -0
  94. package/dist/main/services/automation/registry.js.map +1 -0
  95. package/dist/main/services/automation/shared.d.ts +24 -0
  96. package/dist/main/services/automation/shared.d.ts.map +1 -0
  97. package/dist/main/services/automation/shared.js +2 -0
  98. package/dist/main/services/automation/shared.js.map +1 -0
  99. package/dist/main/services/default-adapter.d.ts +3 -0
  100. package/dist/main/services/default-adapter.d.ts.map +1 -0
  101. package/dist/main/services/default-adapter.js +17 -0
  102. package/dist/main/services/default-adapter.js.map +1 -0
  103. package/dist/main/services/layout/index.d.ts +27 -0
  104. package/dist/main/services/layout/index.d.ts.map +1 -0
  105. package/dist/main/services/layout/index.js +49 -0
  106. package/dist/main/services/layout/index.js.map +1 -0
  107. package/dist/main/services/mcp/index.d.ts +15 -0
  108. package/dist/main/services/mcp/index.d.ts.map +1 -0
  109. package/dist/main/services/mcp/index.js +15 -0
  110. package/dist/main/services/mcp/index.js.map +1 -0
  111. package/dist/main/services/mcp/server.d.ts +10 -0
  112. package/dist/main/services/mcp/server.d.ts.map +1 -0
  113. package/dist/main/services/mcp/server.js +76 -0
  114. package/dist/main/services/mcp/server.js.map +1 -0
  115. package/dist/main/services/mcp/target-manager.d.ts +43 -0
  116. package/dist/main/services/mcp/target-manager.d.ts.map +1 -0
  117. package/dist/main/services/mcp/target-manager.js +165 -0
  118. package/dist/main/services/mcp/target-manager.js.map +1 -0
  119. package/dist/main/services/mcp/tool-registry.d.ts +14 -0
  120. package/dist/main/services/mcp/tool-registry.d.ts.map +1 -0
  121. package/dist/main/services/mcp/tool-registry.js +84 -0
  122. package/dist/main/services/mcp/tool-registry.js.map +1 -0
  123. package/dist/main/services/mcp/tools/context-tools.d.ts +15 -0
  124. package/dist/main/services/mcp/tools/context-tools.d.ts.map +1 -0
  125. package/dist/main/services/mcp/tools/context-tools.js +244 -0
  126. package/dist/main/services/mcp/tools/context-tools.js.map +1 -0
  127. package/dist/main/services/mcp/tools/simulator-tools.d.ts +14 -0
  128. package/dist/main/services/mcp/tools/simulator-tools.d.ts.map +1 -0
  129. package/dist/main/services/mcp/tools/simulator-tools.js +143 -0
  130. package/dist/main/services/mcp/tools/simulator-tools.js.map +1 -0
  131. package/dist/main/services/mcp/tools/workbench-tools.d.ts +7 -0
  132. package/dist/main/services/mcp/tools/workbench-tools.d.ts.map +1 -0
  133. package/dist/main/services/mcp/tools/workbench-tools.js +13 -0
  134. package/dist/main/services/mcp/tools/workbench-tools.js.map +1 -0
  135. package/dist/main/services/notifications/renderer-notifier.d.ts +80 -0
  136. package/dist/main/services/notifications/renderer-notifier.d.ts.map +1 -0
  137. package/dist/main/services/notifications/renderer-notifier.js +70 -0
  138. package/dist/main/services/notifications/renderer-notifier.js.map +1 -0
  139. package/dist/main/services/projects/index.d.ts +2 -0
  140. package/dist/main/services/projects/index.d.ts.map +1 -0
  141. package/dist/main/services/projects/index.js +6 -0
  142. package/dist/main/services/projects/index.js.map +1 -0
  143. package/dist/main/services/projects/project-repository.d.ts +28 -0
  144. package/dist/main/services/projects/project-repository.d.ts.map +1 -0
  145. package/dist/main/services/projects/project-repository.js +145 -0
  146. package/dist/main/services/projects/project-repository.js.map +1 -0
  147. package/dist/main/services/settings/index.d.ts +16 -0
  148. package/dist/main/services/settings/index.d.ts.map +1 -0
  149. package/dist/main/services/settings/index.js +46 -0
  150. package/dist/main/services/settings/index.js.map +1 -0
  151. package/dist/main/services/simulator/dir.d.ts +2 -0
  152. package/dist/main/services/simulator/dir.d.ts.map +1 -0
  153. package/dist/main/services/simulator/dir.js +5 -0
  154. package/dist/main/services/simulator/dir.js.map +1 -0
  155. package/dist/main/services/simulator/referer.d.ts +10 -0
  156. package/dist/main/services/simulator/referer.d.ts.map +1 -0
  157. package/dist/main/services/simulator/referer.js +20 -0
  158. package/dist/main/services/simulator/referer.js.map +1 -0
  159. package/dist/main/services/views/view-manager.d.ts +84 -0
  160. package/dist/main/services/views/view-manager.d.ts.map +1 -0
  161. package/dist/main/services/views/view-manager.js +254 -0
  162. package/dist/main/services/views/view-manager.js.map +1 -0
  163. package/dist/main/services/workbench-context.d.ts +59 -0
  164. package/dist/main/services/workbench-context.d.ts.map +1 -0
  165. package/dist/main/services/workbench-context.js +33 -0
  166. package/dist/main/services/workbench-context.js.map +1 -0
  167. package/dist/main/services/workspace/index.d.ts +2 -0
  168. package/dist/main/services/workspace/index.d.ts.map +1 -0
  169. package/dist/main/services/workspace/index.js +2 -0
  170. package/dist/main/services/workspace/index.js.map +1 -0
  171. package/dist/main/services/workspace/workspace-service.d.ts +49 -0
  172. package/dist/main/services/workspace/workspace-service.d.ts.map +1 -0
  173. package/dist/main/services/workspace/workspace-service.js +90 -0
  174. package/dist/main/services/workspace/workspace-service.js.map +1 -0
  175. package/dist/main/utils/logger.d.ts +15 -0
  176. package/dist/main/utils/logger.d.ts.map +1 -0
  177. package/dist/main/utils/logger.js +48 -0
  178. package/dist/main/utils/logger.js.map +1 -0
  179. package/dist/main/utils/paths.d.ts +6 -0
  180. package/dist/main/utils/paths.d.ts.map +1 -0
  181. package/dist/main/utils/paths.js +15 -0
  182. package/dist/main/utils/paths.js.map +1 -0
  183. package/dist/main/utils/theme.d.ts +10 -0
  184. package/dist/main/utils/theme.d.ts.map +1 -0
  185. package/dist/main/utils/theme.js +13 -0
  186. package/dist/main/utils/theme.js.map +1 -0
  187. package/dist/main/windows/main-window/create.d.ts +11 -0
  188. package/dist/main/windows/main-window/create.d.ts.map +1 -0
  189. package/dist/main/windows/main-window/create.js +67 -0
  190. package/dist/main/windows/main-window/create.js.map +1 -0
  191. package/dist/main/windows/main-window/events.d.ts +9 -0
  192. package/dist/main/windows/main-window/events.d.ts.map +1 -0
  193. package/dist/main/windows/main-window/events.js +18 -0
  194. package/dist/main/windows/main-window/events.js.map +1 -0
  195. package/dist/main/windows/main-window/index.d.ts +5 -0
  196. package/dist/main/windows/main-window/index.d.ts.map +1 -0
  197. package/dist/main/windows/main-window/index.js +3 -0
  198. package/dist/main/windows/main-window/index.js.map +1 -0
  199. package/dist/main/windows/settings-window/create.d.ts +3 -0
  200. package/dist/main/windows/settings-window/create.d.ts.map +1 -0
  201. package/dist/main/windows/settings-window/create.js +18 -0
  202. package/dist/main/windows/settings-window/create.js.map +1 -0
  203. package/dist/main/windows/settings-window/events.d.ts +3 -0
  204. package/dist/main/windows/settings-window/events.d.ts.map +1 -0
  205. package/dist/main/windows/settings-window/events.js +6 -0
  206. package/dist/main/windows/settings-window/events.js.map +1 -0
  207. package/dist/main/windows/settings-window/index.d.ts +3 -0
  208. package/dist/main/windows/settings-window/index.d.ts.map +1 -0
  209. package/dist/main/windows/settings-window/index.js +3 -0
  210. package/dist/main/windows/settings-window/index.js.map +1 -0
  211. package/dist/preload/instrumentation/app-data.d.ts +3 -0
  212. package/dist/preload/instrumentation/app-data.d.ts.map +1 -0
  213. package/dist/preload/instrumentation/app-data.js +103 -0
  214. package/dist/preload/instrumentation/app-data.js.map +1 -0
  215. package/dist/preload/instrumentation/console.d.ts +2 -0
  216. package/dist/preload/instrumentation/console.d.ts.map +1 -0
  217. package/dist/preload/instrumentation/console.js +54 -0
  218. package/dist/preload/instrumentation/console.js.map +1 -0
  219. package/dist/preload/instrumentation/disposable.d.ts +11 -0
  220. package/dist/preload/instrumentation/disposable.d.ts.map +1 -0
  221. package/dist/preload/instrumentation/disposable.js +15 -0
  222. package/dist/preload/instrumentation/disposable.js.map +1 -0
  223. package/dist/preload/instrumentation/index.d.ts +5 -0
  224. package/dist/preload/instrumentation/index.d.ts.map +1 -0
  225. package/dist/preload/instrumentation/index.js +5 -0
  226. package/dist/preload/instrumentation/index.js.map +1 -0
  227. package/dist/preload/instrumentation/storage.d.ts +2 -0
  228. package/dist/preload/instrumentation/storage.d.ts.map +1 -0
  229. package/dist/preload/instrumentation/storage.js +106 -0
  230. package/dist/preload/instrumentation/storage.js.map +1 -0
  231. package/dist/preload/instrumentation/wxml-extract.d.ts +11 -0
  232. package/dist/preload/instrumentation/wxml-extract.d.ts.map +1 -0
  233. package/dist/preload/instrumentation/wxml-extract.js +173 -0
  234. package/dist/preload/instrumentation/wxml-extract.js.map +1 -0
  235. package/dist/preload/instrumentation/wxml.d.ts +5 -0
  236. package/dist/preload/instrumentation/wxml.d.ts.map +1 -0
  237. package/dist/preload/instrumentation/wxml.js +223 -0
  238. package/dist/preload/instrumentation/wxml.js.map +1 -0
  239. package/dist/preload/runtime/bridge.d.ts +36 -0
  240. package/dist/preload/runtime/bridge.d.ts.map +1 -0
  241. package/dist/preload/runtime/bridge.js +151 -0
  242. package/dist/preload/runtime/bridge.js.map +1 -0
  243. package/dist/preload/runtime/host.d.ts +3 -0
  244. package/dist/preload/runtime/host.d.ts.map +1 -0
  245. package/dist/preload/runtime/host.js +28 -0
  246. package/dist/preload/runtime/host.js.map +1 -0
  247. package/dist/preload/shared/api-compat.d.ts +2 -0
  248. package/dist/preload/shared/api-compat.d.ts.map +1 -0
  249. package/dist/preload/shared/api-compat.js +196 -0
  250. package/dist/preload/shared/api-compat.js.map +1 -0
  251. package/dist/preload/shared/constants.d.ts +16 -0
  252. package/dist/preload/shared/constants.d.ts.map +1 -0
  253. package/dist/preload/shared/constants.js +16 -0
  254. package/dist/preload/shared/constants.js.map +1 -0
  255. package/dist/preload/shared/types.d.ts +34 -0
  256. package/dist/preload/shared/types.d.ts.map +1 -0
  257. package/dist/preload/shared/types.js +8 -0
  258. package/dist/preload/shared/types.js.map +1 -0
  259. package/dist/preload/windows/main.d.ts +7 -0
  260. package/dist/preload/windows/main.d.ts.map +1 -0
  261. package/dist/preload/windows/main.js +7 -0
  262. package/dist/preload/windows/main.js.map +1 -0
  263. package/dist/preload/windows/simulator.js +969 -0
  264. package/dist/preload/windows/simulator.js.map +7 -0
  265. package/dist/renderer/assets/index-kcmIQPCg.js +2 -0
  266. package/dist/renderer/assets/index-kcmIQPCg.js.map +1 -0
  267. package/dist/renderer/assets/input-B7sz4y1r.js +2 -0
  268. package/dist/renderer/assets/input-B7sz4y1r.js.map +1 -0
  269. package/dist/renderer/assets/ipc-transport-C9-PPTGn.css +1 -0
  270. package/dist/renderer/assets/ipc-transport-L_WD9x12.js +9 -0
  271. package/dist/renderer/assets/ipc-transport-L_WD9x12.js.map +1 -0
  272. package/dist/renderer/assets/popover-CzMIs2j4.js +2 -0
  273. package/dist/renderer/assets/popover-CzMIs2j4.js.map +1 -0
  274. package/dist/renderer/assets/select-BBXJVe8R.js +2 -0
  275. package/dist/renderer/assets/select-BBXJVe8R.js.map +1 -0
  276. package/dist/renderer/assets/settings-Db1pvrBJ.js +2 -0
  277. package/dist/renderer/assets/settings-Db1pvrBJ.js.map +1 -0
  278. package/dist/renderer/assets/settings-api-DJ1M-CNt.js +2 -0
  279. package/dist/renderer/assets/settings-api-DJ1M-CNt.js.map +1 -0
  280. package/dist/renderer/assets/workbenchSettings-BnQsvWkQ.js +8 -0
  281. package/dist/renderer/assets/workbenchSettings-BnQsvWkQ.js.map +1 -0
  282. package/dist/renderer/entries/main/index.html +15 -0
  283. package/dist/renderer/entries/popover/index.html +18 -0
  284. package/dist/renderer/entries/settings/index.html +15 -0
  285. package/dist/renderer/entries/workbench-settings/index.html +15 -0
  286. package/dist/shared/constants.d.ts +10 -0
  287. package/dist/shared/constants.d.ts.map +1 -0
  288. package/dist/shared/constants.js +10 -0
  289. package/dist/shared/constants.js.map +1 -0
  290. package/dist/shared/ipc-channels.d.ts +89 -0
  291. package/dist/shared/ipc-channels.d.ts.map +1 -0
  292. package/dist/shared/ipc-channels.js +102 -0
  293. package/dist/shared/ipc-channels.js.map +1 -0
  294. package/dist/shared/types.d.ts +89 -0
  295. package/dist/shared/types.d.ts.map +1 -0
  296. package/dist/shared/types.js +2 -0
  297. package/dist/shared/types.js.map +1 -0
  298. package/dist/simulator/assets/simulator-C1eHXnuq.js +9 -0
  299. package/dist/simulator/assets/simulator-C1eHXnuq.js.map +1 -0
  300. package/dist/simulator/simulator.html +164 -0
  301. package/package.json +204 -0
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Dual-target CDP connection manager.
3
+ *
4
+ * The MCP server connects to two Chrome DevTools Protocol targets in parallel:
5
+ * - `simulator`: the in-app simulator `<webview>` (identified by its URL)
6
+ * - `workbench`: the workbench main renderer window
7
+ *
8
+ * Each target keeps:
9
+ * - a CDP client (reconnected automatically when the target disappears)
10
+ * - rolling buffers of console log and network request events
11
+ */
12
+ import CDP from 'chrome-remote-interface';
13
+ const SIMULATOR_URL_PATTERN = 'localhost:7788';
14
+ const MAX_BUFFER = 500;
15
+ const RECONNECT_INTERVAL_MS = 3000;
16
+ let cdpPort = 9222;
17
+ const targets = {
18
+ simulator: { client: null, connected: false, timer: null, consoleLogs: [], networkRequests: [] },
19
+ workbench: { client: null, connected: false, timer: null, consoleLogs: [], networkRequests: [] },
20
+ };
21
+ export function setCdpPort(port) {
22
+ cdpPort = port;
23
+ }
24
+ export function getTargetState(kind) {
25
+ return targets[kind];
26
+ }
27
+ async function listCdpTargets() {
28
+ try {
29
+ return await CDP.List({ port: cdpPort });
30
+ }
31
+ catch {
32
+ return [];
33
+ }
34
+ }
35
+ export { listCdpTargets as listTargets };
36
+ function findTarget(allTargets, kind) {
37
+ if (kind === 'simulator') {
38
+ return allTargets.find((t) => t.url?.includes(SIMULATOR_URL_PATTERN));
39
+ }
40
+ // workbench main window: page target whose URL contains index.html (renderer)
41
+ return allTargets.find((t) => t.type === 'page' && t.url?.includes('entries/main/index.html') && !t.url?.includes(SIMULATOR_URL_PATTERN));
42
+ }
43
+ export async function connectTarget(kind) {
44
+ const state = targets[kind];
45
+ if (state.client) {
46
+ try {
47
+ await state.client.close();
48
+ }
49
+ catch { }
50
+ state.client = null;
51
+ }
52
+ const allTargets = await listCdpTargets();
53
+ const target = findTarget(allTargets, kind);
54
+ if (!target) {
55
+ state.connected = false;
56
+ scheduleReconnect(kind);
57
+ return;
58
+ }
59
+ let client = null;
60
+ try {
61
+ client = await CDP({ port: cdpPort, target });
62
+ await Promise.all([
63
+ client.Page.enable(),
64
+ client.Runtime.enable(),
65
+ client.DOM.enable(),
66
+ client.Network.enable(),
67
+ client.Console.enable(),
68
+ ]);
69
+ // Network buffer
70
+ const pending = new Map();
71
+ const pushNetworkRequest = (entry) => {
72
+ state.networkRequests.push(entry);
73
+ if (state.networkRequests.length > MAX_BUFFER)
74
+ state.networkRequests = state.networkRequests.slice(-MAX_BUFFER);
75
+ };
76
+ // Console buffer
77
+ client.Runtime.on('consoleAPICalled', (params) => {
78
+ const entry = {
79
+ level: params.type,
80
+ text: params.args.map((a) => String(a.value ?? a.description ?? JSON.stringify(a))).join(' '),
81
+ timestamp: new Date(params.timestamp).toISOString(),
82
+ };
83
+ state.consoleLogs.push(entry);
84
+ if (state.consoleLogs.length > MAX_BUFFER)
85
+ state.consoleLogs = state.consoleLogs.slice(-MAX_BUFFER);
86
+ });
87
+ client.Console.on('messageAdded', (params) => {
88
+ const msg = params.message;
89
+ state.consoleLogs.push({ level: msg.level, text: msg.text, timestamp: new Date().toISOString() });
90
+ if (state.consoleLogs.length > MAX_BUFFER)
91
+ state.consoleLogs = state.consoleLogs.slice(-MAX_BUFFER);
92
+ });
93
+ client.Network.on('requestWillBeSent', (params) => {
94
+ pending.set(params.requestId, { url: params.request.url, method: params.request.method, timestamp: params.timestamp });
95
+ });
96
+ client.Network.on('responseReceived', (params) => {
97
+ const req = pending.get(params.requestId);
98
+ if (!req)
99
+ return;
100
+ pending.delete(params.requestId);
101
+ pushNetworkRequest({
102
+ url: req.url, method: req.method,
103
+ status: params.response.status, mimeType: params.response.mimeType,
104
+ responseSize: params.response.encodedDataLength || 0,
105
+ timing: params.response.timing
106
+ ? { requestTime: params.response.timing.requestTime, receiveHeadersEnd: params.response.timing.receiveHeadersEnd }
107
+ : null,
108
+ });
109
+ });
110
+ client.Network.on('loadingFailed', (params) => {
111
+ const req = pending.get(params.requestId);
112
+ if (!req)
113
+ return;
114
+ pending.delete(params.requestId);
115
+ pushNetworkRequest({
116
+ url: req.url,
117
+ method: req.method,
118
+ status: 0,
119
+ mimeType: '',
120
+ responseSize: 0,
121
+ timing: null,
122
+ });
123
+ });
124
+ client.on('disconnect', () => {
125
+ state.connected = false;
126
+ state.client = null;
127
+ scheduleReconnect(kind);
128
+ });
129
+ state.client = client;
130
+ state.connected = true;
131
+ if (state.timer) {
132
+ clearTimeout(state.timer);
133
+ state.timer = null;
134
+ }
135
+ }
136
+ catch {
137
+ if (client) {
138
+ try {
139
+ await client.close();
140
+ }
141
+ catch { }
142
+ }
143
+ state.client = null;
144
+ state.connected = false;
145
+ scheduleReconnect(kind);
146
+ }
147
+ }
148
+ function scheduleReconnect(kind) {
149
+ const state = targets[kind];
150
+ if (state.timer)
151
+ return;
152
+ state.timer = setTimeout(async () => {
153
+ state.timer = null;
154
+ await connectTarget(kind);
155
+ }, RECONNECT_INTERVAL_MS);
156
+ }
157
+ export function getClient(kind) {
158
+ const state = targets[kind];
159
+ if (!state.connected || !state.client) {
160
+ const label = kind === 'simulator' ? '模拟器' : '主窗口';
161
+ throw new Error(`未连接到${label}。请确保 dimina-devtools 正在以开发模式运行。`);
162
+ }
163
+ return state.client;
164
+ }
165
+ //# sourceMappingURL=target-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-manager.js","sourceRoot":"","sources":["../../../../src/main/services/mcp/target-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Registration helpers for the 5 MCP tools that exist symmetrically for both
3
+ * simulator and workbench targets (screenshot / console_logs / evaluate /
4
+ * get_dom / network_log). Wiring the shared set here keeps the handler
5
+ * definitions in one place while still allowing kind-specific descriptions.
6
+ */
7
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
8
+ import { type TargetKind } from './target-manager.js';
9
+ /**
10
+ * Registers the 5 tools that exist symmetrically for both targets.
11
+ * Each tool name is prefixed with the kind (e.g. `simulator_screenshot`).
12
+ */
13
+ export declare function registerCommonTargetTools(server: McpServer, kind: TargetKind): void;
14
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../../../src/main/services/mcp/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAExE,OAAO,EAA6B,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhF;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CA2EnF"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Registration helpers for the 5 MCP tools that exist symmetrically for both
3
+ * simulator and workbench targets (screenshot / console_logs / evaluate /
4
+ * get_dom / network_log). Wiring the shared set here keeps the handler
5
+ * definitions in one place while still allowing kind-specific descriptions.
6
+ */
7
+ import { z } from 'zod';
8
+ import { getClient, getTargetState } from './target-manager.js';
9
+ /**
10
+ * Registers the 5 tools that exist symmetrically for both targets.
11
+ * Each tool name is prefixed with the kind (e.g. `simulator_screenshot`).
12
+ */
13
+ export function registerCommonTargetTools(server, kind) {
14
+ const descriptions = kind === 'simulator'
15
+ ? {
16
+ screenshot: 'Take a screenshot of the simulator webview',
17
+ consoleLogs: 'Get recent console output from the simulator (supports level/sinceTimestamp filters)',
18
+ evaluate: 'Execute JavaScript in the simulator context',
19
+ getDom: 'Get the DOM tree of the simulator page',
20
+ networkLog: 'Get recent network requests from the simulator (supports minStatus filter)',
21
+ }
22
+ : {
23
+ screenshot: 'Take a screenshot of the workbench main window',
24
+ consoleLogs: 'Get recent console output from the workbench main window (supports level/sinceTimestamp filters; warn/warning are treated as aliases)',
25
+ evaluate: 'Execute JavaScript in the workbench main window renderer',
26
+ getDom: 'Get the DOM tree of the workbench main window',
27
+ networkLog: 'Get recent network requests from the workbench main window (supports minStatus filter)',
28
+ };
29
+ server.tool(`${kind}_screenshot`, descriptions.screenshot, {}, async () => {
30
+ const c = getClient(kind);
31
+ const { data } = await c.Page.captureScreenshot({ format: 'png' });
32
+ return { content: [{ type: 'image', data, mimeType: 'image/png' }] };
33
+ });
34
+ server.tool(`${kind}_console_logs`, descriptions.consoleLogs, {
35
+ limit: z.number().optional().default(50).describe('Maximum number of log entries'),
36
+ level: z.enum(['error', 'warning', 'warn', 'info', 'log', 'debug']).optional().describe('Only return entries with this level'),
37
+ sinceTimestamp: z.string().optional().describe('ISO timestamp; only return entries at or after this time'),
38
+ }, async ({ limit, level, sinceTimestamp }) => {
39
+ getClient(kind);
40
+ let entries = getTargetState(kind).consoleLogs;
41
+ if (level) {
42
+ // Runtime.consoleAPICalled uses 'warning'; Console.messageAdded may emit 'warn'
43
+ const levels = level === 'warning' || level === 'warn' ? ['warning', 'warn'] : [level];
44
+ entries = entries.filter((e) => levels.includes(e.level));
45
+ }
46
+ if (sinceTimestamp) {
47
+ entries = entries.filter((e) => e.timestamp >= sinceTimestamp);
48
+ }
49
+ return { content: [{ type: 'text', text: JSON.stringify(entries.slice(-limit), null, 2) }] };
50
+ });
51
+ // workbench has nodeIntegration; evaluate would equal arbitrary local code execution
52
+ if (kind !== 'workbench') {
53
+ server.tool(`${kind}_evaluate`, descriptions.evaluate, {
54
+ expression: z.string().describe('JavaScript expression to evaluate'),
55
+ }, async ({ expression }) => {
56
+ const c = getClient(kind);
57
+ const result = await c.Runtime.evaluate({ expression, returnByValue: true, awaitPromise: true });
58
+ if (result.exceptionDetails) {
59
+ return { content: [{ type: 'text', text: `Error: ${result.exceptionDetails.text}\n${JSON.stringify(result.exceptionDetails, null, 2)}` }], isError: true };
60
+ }
61
+ const value = result.result.value !== undefined ? result.result.value : result.result.description || result.result.type;
62
+ return { content: [{ type: 'text', text: JSON.stringify(value, null, 2) }] };
63
+ });
64
+ }
65
+ server.tool(`${kind}_get_dom`, descriptions.getDom, {
66
+ depth: z.number().optional().default(3).describe('Maximum depth'),
67
+ }, async ({ depth }) => {
68
+ const c = getClient(kind);
69
+ const { root } = await c.DOM.getDocument({ depth });
70
+ return { content: [{ type: 'text', text: JSON.stringify(root, null, 2) }] };
71
+ });
72
+ server.tool(`${kind}_network_log`, descriptions.networkLog, {
73
+ limit: z.number().optional().default(20).describe('Maximum number of entries'),
74
+ minStatus: z.number().optional().describe('Only return entries with status >= minStatus (status 0 = failed before response is included when minStatus >= 400)'),
75
+ }, async ({ limit, minStatus }) => {
76
+ getClient(kind);
77
+ let entries = getTargetState(kind).networkRequests;
78
+ if (minStatus !== undefined) {
79
+ entries = entries.filter((e) => e.status >= minStatus || (e.status === 0 && minStatus >= 400));
80
+ }
81
+ return { content: [{ type: 'text', text: JSON.stringify(entries.slice(-limit), null, 2) }] };
82
+ });
83
+ }
84
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../../../../src/main/services/mcp/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * One-shot MCP orientation tools.
3
+ *
4
+ * `simulator_get_overview` / `workbench_get_overview` return a single compact
5
+ * JSON snapshot so AI clients can orient themselves at session start without
6
+ * issuing many separate probe calls (page info, storage, console, network).
7
+ *
8
+ * Registered as tools rather than MCP resources: the payload is highly
9
+ * dynamic (CDP state + rolling buffers), current clients invoke tools more
10
+ * reliably than they read resources, and this keeps the surface consistent
11
+ * with sibling `*_get_page_info` / `*_connection_status` tools.
12
+ */
13
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
14
+ export declare function registerContextTools(server: McpServer): void;
15
+ //# sourceMappingURL=context-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-tools.d.ts","sourceRoot":"","sources":["../../../../../src/main/services/mcp/tools/context-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAuJxE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA+H5D"}
@@ -0,0 +1,244 @@
1
+ /**
2
+ * One-shot MCP orientation tools.
3
+ *
4
+ * `simulator_get_overview` / `workbench_get_overview` return a single compact
5
+ * JSON snapshot so AI clients can orient themselves at session start without
6
+ * issuing many separate probe calls (page info, storage, console, network).
7
+ *
8
+ * Registered as tools rather than MCP resources: the payload is highly
9
+ * dynamic (CDP state + rolling buffers), current clients invoke tools more
10
+ * reliably than they read resources, and this keeps the surface consistent
11
+ * with sibling `*_get_page_info` / `*_connection_status` tools.
12
+ */
13
+ import { getClient, getTargetState } from '../target-manager.js';
14
+ // Truncation thresholds: keep the overview compact — orientation, not data dump.
15
+ const MAX_KEYS = 50;
16
+ const MAX_HINT_TEXT = 200;
17
+ // Evaluated inside the simulator webview. Tolerates missing __simulatorData.
18
+ const SIMULATOR_PROBE_EXPR = `(() => {
19
+ const out = {
20
+ url: location.href,
21
+ title: document.title,
22
+ viewport: { width: window.innerWidth, height: window.innerHeight },
23
+ currentRoute: null,
24
+ pageStackDepth: 0,
25
+ storageKeys: [],
26
+ storageCount: 0,
27
+ appDataKeys: [],
28
+ bridgeReady: false,
29
+ simulatorDataPresent: false,
30
+ };
31
+ try {
32
+ const frames = document.querySelectorAll('.dimina-native-webview__window');
33
+ out.pageStackDepth = frames.length;
34
+ const active = frames[frames.length - 1];
35
+ if (active) {
36
+ out.currentRoute = active.getAttribute('data-route')
37
+ || active.getAttribute('src')
38
+ || active.getAttribute('data-path')
39
+ || null;
40
+ }
41
+ } catch (e) {}
42
+ try {
43
+ const bridge = window.__simulatorData;
44
+ if (bridge) {
45
+ out.simulatorDataPresent = true;
46
+ if (typeof bridge.getStorageSnapshot === 'function') {
47
+ const snap = bridge.getStorageSnapshot();
48
+ out.bridgeReady = !!(snap && snap.ready);
49
+ const data = (snap && snap.data) || {};
50
+ out.storageKeys = Object.keys(data).slice(0, ${MAX_KEYS});
51
+ out.storageCount = Object.keys(data).length;
52
+ }
53
+ if (typeof bridge.getAppdata === 'function') {
54
+ const app = bridge.getAppdata() || {};
55
+ out.appDataKeys = Object.keys(app).slice(0, ${MAX_KEYS});
56
+ }
57
+ }
58
+ } catch (e) {}
59
+ return JSON.stringify(out);
60
+ })()`;
61
+ const WORKBENCH_PROBE_EXPR = `(() => JSON.stringify({
62
+ url: location.href,
63
+ title: document.title,
64
+ viewport: { width: window.innerWidth, height: window.innerHeight },
65
+ }))()`;
66
+ function summarizeConsole(kind) {
67
+ const logs = getTargetState(kind).consoleLogs;
68
+ let recentErrorCount = 0;
69
+ let recentWarningCount = 0;
70
+ let lastError = null;
71
+ for (const entry of logs) {
72
+ if (entry.level === 'error') {
73
+ recentErrorCount++;
74
+ lastError = { level: entry.level, text: entry.text.slice(0, MAX_HINT_TEXT), timestamp: entry.timestamp };
75
+ }
76
+ else if (entry.level === 'warning' || entry.level === 'warn') {
77
+ recentWarningCount++;
78
+ }
79
+ }
80
+ return { total: logs.length, recentErrorCount, recentWarningCount, lastError };
81
+ }
82
+ function summarizeNetwork(kind) {
83
+ const reqs = getTargetState(kind).networkRequests;
84
+ let recentNetworkErrorCount = 0;
85
+ let lastNetworkError = null;
86
+ for (const r of reqs) {
87
+ if (r.status >= 400 || r.status === 0) {
88
+ recentNetworkErrorCount++;
89
+ lastNetworkError = { url: r.url, status: r.status, method: r.method };
90
+ }
91
+ }
92
+ return { total: reqs.length, recentNetworkErrorCount, lastNetworkError };
93
+ }
94
+ function buildDisconnectedOverview(kind, hints) {
95
+ if (kind === 'simulator') {
96
+ return {
97
+ connected: false,
98
+ url: '',
99
+ title: '',
100
+ viewport: null,
101
+ currentRoute: null,
102
+ pageStackDepth: 0,
103
+ storageKeys: [],
104
+ storageCount: 0,
105
+ appDataKeys: [],
106
+ recentErrorCount: 0,
107
+ lastError: null,
108
+ recentWarningCount: 0,
109
+ recentNetworkErrorCount: 0,
110
+ lastNetworkError: null,
111
+ consoleLogTotal: 0,
112
+ networkRequestTotal: 0,
113
+ hints,
114
+ };
115
+ }
116
+ return {
117
+ connected: false,
118
+ url: '',
119
+ title: '',
120
+ viewport: null,
121
+ recentErrorCount: 0,
122
+ lastError: null,
123
+ recentNetworkErrorCount: 0,
124
+ lastNetworkError: null,
125
+ consoleLogTotal: 0,
126
+ networkRequestTotal: 0,
127
+ hints,
128
+ };
129
+ }
130
+ export function registerContextTools(server) {
131
+ server.tool('simulator_get_overview', 'One-shot orientation snapshot of the simulator (page, storage keys, appdata keys, recent errors). Call at session start to avoid many probe queries.', {}, async () => {
132
+ const state = getTargetState('simulator');
133
+ const hints = [];
134
+ if (!state.connected || !state.client) {
135
+ const payload = buildDisconnectedOverview('simulator', ['simulator not connected — ensure dimina-devtools is running in dev mode']);
136
+ return { content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }] };
137
+ }
138
+ let result;
139
+ try {
140
+ const c = getClient('simulator');
141
+ result = await c.Runtime.evaluate({ expression: SIMULATOR_PROBE_EXPR, returnByValue: true });
142
+ }
143
+ catch {
144
+ const payload = buildDisconnectedOverview('simulator', [...hints, 'simulator disconnected before overview could finish']);
145
+ return { content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }] };
146
+ }
147
+ if (result.exceptionDetails) {
148
+ return {
149
+ content: [{ type: 'text', text: `Error: ${result.exceptionDetails.text}` }],
150
+ isError: true,
151
+ };
152
+ }
153
+ let probe;
154
+ try {
155
+ probe = JSON.parse(result.result.value);
156
+ }
157
+ catch {
158
+ return {
159
+ content: [{ type: 'text', text: 'Error: probe returned non-JSON payload' }],
160
+ isError: true,
161
+ };
162
+ }
163
+ if (!probe.simulatorDataPresent)
164
+ hints.push('simulator bridge not ready (window.__simulatorData missing)');
165
+ else if (!probe.bridgeReady)
166
+ hints.push('simulator bridge present but storage snapshot not ready');
167
+ if (probe.pageStackDepth === 0)
168
+ hints.push('no active miniapp page (empty page stack)');
169
+ if (probe.storageCount > MAX_KEYS)
170
+ hints.push(`storageKeys truncated to first ${MAX_KEYS} of ${probe.storageCount}`);
171
+ const consoleSum = summarizeConsole('simulator');
172
+ const networkSum = summarizeNetwork('simulator');
173
+ const payload = {
174
+ connected: true,
175
+ url: probe.url,
176
+ title: probe.title,
177
+ viewport: probe.viewport,
178
+ currentRoute: probe.currentRoute,
179
+ pageStackDepth: probe.pageStackDepth,
180
+ storageKeys: probe.storageKeys,
181
+ storageCount: probe.storageCount,
182
+ appDataKeys: probe.appDataKeys,
183
+ recentErrorCount: consoleSum.recentErrorCount,
184
+ lastError: consoleSum.lastError,
185
+ recentWarningCount: consoleSum.recentWarningCount,
186
+ recentNetworkErrorCount: networkSum.recentNetworkErrorCount,
187
+ lastNetworkError: networkSum.lastNetworkError,
188
+ consoleLogTotal: consoleSum.total,
189
+ networkRequestTotal: networkSum.total,
190
+ hints,
191
+ };
192
+ return { content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }] };
193
+ });
194
+ server.tool('workbench_get_overview', 'One-shot orientation snapshot of the workbench main window (url, title, viewport, recent errors, totals).', {}, async () => {
195
+ const state = getTargetState('workbench');
196
+ const hints = [];
197
+ if (!state.connected || !state.client) {
198
+ const payload = buildDisconnectedOverview('workbench', ['workbench not connected — ensure dimina-devtools is running in dev mode']);
199
+ return { content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }] };
200
+ }
201
+ let result;
202
+ try {
203
+ const c = getClient('workbench');
204
+ result = await c.Runtime.evaluate({ expression: WORKBENCH_PROBE_EXPR, returnByValue: true });
205
+ }
206
+ catch {
207
+ const payload = buildDisconnectedOverview('workbench', [...hints, 'workbench disconnected before overview could finish']);
208
+ return { content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }] };
209
+ }
210
+ if (result.exceptionDetails) {
211
+ return {
212
+ content: [{ type: 'text', text: `Error: ${result.exceptionDetails.text}` }],
213
+ isError: true,
214
+ };
215
+ }
216
+ let probe;
217
+ try {
218
+ probe = JSON.parse(result.result.value);
219
+ }
220
+ catch {
221
+ return {
222
+ content: [{ type: 'text', text: 'Error: probe returned non-JSON payload' }],
223
+ isError: true,
224
+ };
225
+ }
226
+ const consoleSum = summarizeConsole('workbench');
227
+ const networkSum = summarizeNetwork('workbench');
228
+ const payload = {
229
+ connected: true,
230
+ url: probe.url,
231
+ title: probe.title,
232
+ viewport: probe.viewport,
233
+ recentErrorCount: consoleSum.recentErrorCount,
234
+ lastError: consoleSum.lastError,
235
+ recentNetworkErrorCount: networkSum.recentNetworkErrorCount,
236
+ lastNetworkError: networkSum.lastNetworkError,
237
+ consoleLogTotal: consoleSum.total,
238
+ networkRequestTotal: networkSum.total,
239
+ hints,
240
+ };
241
+ return { content: [{ type: 'text', text: JSON.stringify(payload, null, 2) }] };
242
+ });
243
+ }
244
+ //# sourceMappingURL=context-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-tools.js","sourceRoot":"","sources":["../../../../../src/main/services/mcp/tools/context-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Simulator-specific MCP tools beyond the shared set (screenshot, console,
3
+ * evaluate, DOM, network) registered via `registerCommonTargetTools`.
4
+ *
5
+ * Two tools live here:
6
+ * - `simulator_navigate`: navigate or reload the simulator webview
7
+ * - `simulator_input`: unified input dispatcher (tap/type/scroll/key)
8
+ *
9
+ * Other simulator inspection use-cases (storage get/set, page info) are
10
+ * handled via `simulator_evaluate` and `simulator_get_overview`.
11
+ */
12
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
13
+ export declare function registerSimulatorTools(server: McpServer): void;
14
+ //# sourceMappingURL=simulator-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulator-tools.d.ts","sourceRoot":"","sources":["../../../../../src/main/services/mcp/tools/simulator-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AAIxE,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAiI9D"}