@dimina-kit/devtools 0.4.0 → 0.5.0-dev.20260908120530

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 (507) hide show
  1. package/README.md +51 -660
  2. package/dist/main/api.d.ts +2 -1
  3. package/dist/main/app/app.d.ts +41 -12
  4. package/dist/main/app/app.js +299 -514
  5. package/dist/main/app/bootstrap.d.ts +8 -5
  6. package/dist/main/app/bootstrap.js +15 -15
  7. package/dist/main/app/editor-view.d.ts +21 -0
  8. package/dist/main/app/editor-view.js +71 -0
  9. package/dist/main/app/global-mirrors.d.ts +23 -0
  10. package/dist/main/app/global-mirrors.js +37 -0
  11. package/dist/main/app/host-sidebar-default.d.ts +19 -0
  12. package/dist/main/app/host-sidebar-default.js +44 -0
  13. package/dist/main/app/lifecycle.d.ts +12 -1
  14. package/dist/main/app/lifecycle.js +27 -1
  15. package/dist/main/app/menu-setup.d.ts +13 -0
  16. package/dist/main/app/menu-setup.js +49 -0
  17. package/dist/main/app/native-overview.d.ts +1 -1
  18. package/dist/main/app/open-project-ipc.d.ts +13 -0
  19. package/dist/main/app/open-project-ipc.js +21 -0
  20. package/dist/main/app/project-list-surface.d.ts +31 -0
  21. package/dist/main/app/project-list-surface.js +20 -0
  22. package/dist/main/app/project-window.d.ts +36 -0
  23. package/dist/main/app/project-window.js +93 -0
  24. package/dist/main/app/servers.d.ts +17 -0
  25. package/dist/main/app/servers.js +60 -0
  26. package/dist/main/app/ui-extension-targets.d.ts +42 -0
  27. package/dist/main/app/ui-extension-targets.js +101 -0
  28. package/dist/main/app/window-close-reveal.harness.d.ts +34 -0
  29. package/dist/main/app/window-close-reveal.harness.js +65 -0
  30. package/dist/main/app/window-events.d.ts +15 -0
  31. package/dist/main/app/window-events.js +45 -0
  32. package/dist/main/app/window-runtime-services.d.ts +41 -0
  33. package/dist/main/app/window-runtime-services.js +197 -0
  34. package/dist/main/app/workbench-modules.d.ts +24 -0
  35. package/dist/main/app/workbench-modules.js +51 -0
  36. package/dist/main/app/workbench-window.d.ts +85 -0
  37. package/dist/main/app/workbench-window.js +310 -0
  38. package/dist/main/index.bundle.js +11712 -9986
  39. package/dist/main/index.js +49 -1
  40. package/dist/main/ipc/app-lifecycle.d.ts +1 -31
  41. package/dist/main/ipc/app-lifecycle.js +1 -53
  42. package/dist/main/ipc/app.d.ts +4 -1
  43. package/dist/main/ipc/app.js +4 -3
  44. package/dist/main/ipc/bridge-router.d.ts +19 -116
  45. package/dist/main/ipc/bridge-router.js +28 -2128
  46. package/dist/main/ipc/device-picker.d.ts +16 -0
  47. package/dist/main/ipc/device-picker.js +27 -0
  48. package/dist/main/ipc/index.d.ts +5 -0
  49. package/dist/main/ipc/index.js +5 -0
  50. package/dist/main/ipc/internal-devtools.d.ts +16 -0
  51. package/dist/main/ipc/internal-devtools.js +10 -0
  52. package/dist/main/ipc/page-scroll.d.ts +1 -13
  53. package/dist/main/ipc/page-scroll.js +1 -16
  54. package/dist/main/ipc/popover.d.ts +4 -1
  55. package/dist/main/ipc/popover.js +26 -19
  56. package/dist/main/ipc/project-create.d.ts +16 -0
  57. package/dist/main/ipc/project-create.js +27 -0
  58. package/dist/main/ipc/project-fs.d.ts +38 -3
  59. package/dist/main/ipc/project-fs.js +53 -22
  60. package/dist/main/ipc/projects.d.ts +3 -3
  61. package/dist/main/ipc/projects.js +47 -11
  62. package/dist/main/ipc/session-listener-bag.d.ts +1 -40
  63. package/dist/main/ipc/session-listener-bag.js +1 -39
  64. package/dist/main/ipc/session.d.ts +4 -1
  65. package/dist/main/ipc/session.js +26 -26
  66. package/dist/main/ipc/settings.d.ts +4 -1
  67. package/dist/main/ipc/settings.js +17 -19
  68. package/dist/main/ipc/simulator-module.d.ts +9 -3
  69. package/dist/main/ipc/simulator-module.js +13 -10
  70. package/dist/main/ipc/simulator.d.ts +4 -1
  71. package/dist/main/ipc/simulator.js +12 -18
  72. package/dist/main/ipc/tooltip.d.ts +14 -0
  73. package/dist/main/ipc/tooltip.js +29 -0
  74. package/dist/main/ipc/views.d.ts +19 -2
  75. package/dist/main/ipc/views.js +76 -8
  76. package/dist/main/runtime/devtools-backend-before-quit.harness.d.ts +43 -0
  77. package/dist/main/runtime/devtools-backend-before-quit.harness.js +87 -0
  78. package/dist/main/runtime/devtools-backend.js +60 -4
  79. package/dist/main/runtime/devtools-runtime-mock.harness.d.ts +21 -0
  80. package/dist/main/runtime/devtools-runtime-mock.harness.js +313 -0
  81. package/dist/main/runtime/miniapp-runtime.d.ts +91 -22
  82. package/dist/main/services/app-services.d.ts +62 -0
  83. package/dist/main/services/app-services.js +64 -0
  84. package/dist/main/services/automation/connection-target.d.ts +36 -0
  85. package/dist/main/services/automation/connection-target.js +29 -0
  86. package/dist/main/services/automation/console-bridge.d.ts +28 -0
  87. package/dist/main/services/automation/console-bridge.js +91 -0
  88. package/dist/main/services/automation/handlers/app.js +4 -4
  89. package/dist/main/services/automation/handlers/element.js +55 -21
  90. package/dist/main/services/automation/index.d.ts +12 -1
  91. package/dist/main/services/automation/index.js +54 -133
  92. package/dist/main/services/cdp-session/index.d.ts +87 -0
  93. package/dist/main/services/cdp-session/index.js +173 -0
  94. package/dist/main/services/compile-standby.js +4 -0
  95. package/dist/main/services/console-forward/cdp-inject.d.ts +18 -0
  96. package/dist/main/services/console-forward/cdp-inject.js +30 -0
  97. package/dist/main/services/console-forward/global-console-mirror.d.ts +33 -0
  98. package/dist/main/services/console-forward/global-console-mirror.js +71 -0
  99. package/dist/main/services/console-forward/global-diagnostics-mirror.d.ts +33 -0
  100. package/dist/main/services/console-forward/global-diagnostics-mirror.js +73 -0
  101. package/dist/main/services/console-forward/index.d.ts +1 -46
  102. package/dist/main/services/console-forward/index.js +1 -185
  103. package/dist/main/services/console-forward/internal-log.d.ts +2 -0
  104. package/dist/main/services/console-forward/internal-log.js +2 -0
  105. package/dist/main/services/console-forward/open-gated-relay.d.ts +67 -0
  106. package/dist/main/services/console-forward/open-gated-relay.js +55 -0
  107. package/dist/main/services/default-adapter.js +1 -1
  108. package/dist/main/services/diagnostics/index.d.ts +1 -48
  109. package/dist/main/services/diagnostics/index.js +1 -60
  110. package/dist/main/services/dimina-resource-server.d.ts +1 -6
  111. package/dist/main/services/dimina-resource-server.js +1 -98
  112. package/dist/main/services/elements-forward/index.d.ts +132 -15
  113. package/dist/main/services/elements-forward/index.js +155 -304
  114. package/dist/main/services/fs-bridge-protocol.d.ts +61 -0
  115. package/dist/main/services/fs-bridge-protocol.js +34 -0
  116. package/dist/main/services/fs-watch-sse.d.ts +40 -0
  117. package/dist/main/services/fs-watch-sse.js +113 -0
  118. package/dist/main/services/http-json.d.ts +9 -0
  119. package/dist/main/services/http-json.js +6 -0
  120. package/dist/main/services/layout/index.d.ts +11 -0
  121. package/dist/main/services/layout/index.js +23 -0
  122. package/dist/main/services/mcp/connection-owner.d.ts +38 -0
  123. package/dist/main/services/mcp/connection-owner.js +79 -0
  124. package/dist/main/services/mcp/index.d.ts +3 -1
  125. package/dist/main/services/mcp/index.js +4 -3
  126. package/dist/main/services/mcp/opened-project.d.ts +88 -0
  127. package/dist/main/services/mcp/opened-project.js +60 -0
  128. package/dist/main/services/mcp/server.d.ts +2 -1
  129. package/dist/main/services/mcp/server.js +29 -4
  130. package/dist/main/services/mcp/target-manager.d.ts +71 -23
  131. package/dist/main/services/mcp/target-manager.js +269 -138
  132. package/dist/main/services/mcp/target-selection.d.ts +47 -0
  133. package/dist/main/services/mcp/target-selection.js +71 -0
  134. package/dist/main/services/mcp/tools/context-tools.js +20 -5
  135. package/dist/main/services/mcp/tools/project-tools.d.ts +72 -0
  136. package/dist/main/services/mcp/tools/project-tools.js +133 -0
  137. package/dist/main/services/module.d.ts +13 -5
  138. package/dist/main/services/network-forward/body-cache.d.ts +72 -0
  139. package/dist/main/services/network-forward/body-cache.js +179 -0
  140. package/dist/main/services/network-forward/frontend-dispatch.d.ts +91 -0
  141. package/dist/main/services/network-forward/frontend-dispatch.js +148 -0
  142. package/dist/main/services/network-forward/global-body-gate.d.ts +46 -0
  143. package/dist/main/services/network-forward/global-body-gate.js +93 -0
  144. package/dist/main/services/network-forward/global-mirror-test-fixtures.d.ts +48 -0
  145. package/dist/main/services/network-forward/global-mirror-test-fixtures.js +96 -0
  146. package/dist/main/services/network-forward/http.d.ts +47 -0
  147. package/dist/main/services/network-forward/http.js +162 -0
  148. package/dist/main/services/network-forward/index.d.ts +135 -15
  149. package/dist/main/services/network-forward/index.js +854 -224
  150. package/dist/main/services/network-forward/request-ids.d.ts +5 -0
  151. package/dist/main/services/network-forward/request-ids.js +5 -0
  152. package/dist/main/services/network-forward/user-facing.d.ts +21 -0
  153. package/dist/main/services/network-forward/user-facing.js +50 -0
  154. package/dist/main/services/network-forward/websocket.d.ts +36 -0
  155. package/dist/main/services/network-forward/websocket.js +120 -0
  156. package/dist/main/services/notifications/renderer-notifier.d.ts +71 -9
  157. package/dist/main/services/notifications/renderer-notifier.js +45 -8
  158. package/dist/main/services/projects/create-project-service.js +19 -5
  159. package/dist/main/services/projects/local-provider.js +8 -4
  160. package/dist/main/services/projects/project-repository.d.ts +59 -7
  161. package/dist/main/services/projects/project-repository.js +285 -51
  162. package/dist/main/services/projects/types.d.ts +44 -34
  163. package/dist/main/services/render-inspect/index.d.ts +12 -2
  164. package/dist/main/services/render-inspect/index.js +21 -102
  165. package/dist/main/services/safe-area/index.d.ts +21 -6
  166. package/dist/main/services/safe-area/index.js +92 -46
  167. package/dist/main/services/service-host-pool/pool.d.ts +1 -196
  168. package/dist/main/services/service-host-pool/pool.js +1 -363
  169. package/dist/main/services/settings/index.d.ts +7 -1
  170. package/dist/main/services/settings/index.js +22 -2
  171. package/dist/main/services/simulator/custom-apis.d.ts +1 -42
  172. package/dist/main/services/simulator/custom-apis.js +1 -46
  173. package/dist/main/services/simulator/referer.d.ts +1 -9
  174. package/dist/main/services/simulator/referer.js +1 -19
  175. package/dist/main/services/simulator/ui-extensions.d.ts +21 -0
  176. package/dist/main/services/simulator/ui-extensions.js +176 -0
  177. package/dist/main/services/simulator-appdata/index.d.ts +6 -0
  178. package/dist/main/services/simulator-appdata/index.js +21 -2
  179. package/dist/main/services/simulator-current-page/index.d.ts +5 -3
  180. package/dist/main/services/simulator-current-page/index.js +8 -1
  181. package/dist/main/services/simulator-storage/index.d.ts +34 -5
  182. package/dist/main/services/simulator-storage/index.js +73 -71
  183. package/dist/main/services/simulator-storage/service-storage-ops.d.ts +1 -39
  184. package/dist/main/services/simulator-storage/service-storage-ops.js +1 -66
  185. package/dist/main/services/simulator-storage/window-scope.d.ts +20 -0
  186. package/dist/main/services/simulator-storage/window-scope.js +20 -0
  187. package/dist/main/services/simulator-temp-files/disk.d.ts +1 -54
  188. package/dist/main/services/simulator-temp-files/disk.js +1 -237
  189. package/dist/main/services/simulator-temp-files/fs-channels.d.ts +1 -68
  190. package/dist/main/services/simulator-temp-files/fs-channels.js +1 -107
  191. package/dist/main/services/simulator-temp-files/index.d.ts +1 -32
  192. package/dist/main/services/simulator-temp-files/index.js +1 -181
  193. package/dist/main/services/simulator-temp-files/request-handler.d.ts +1 -29
  194. package/dist/main/services/simulator-temp-files/request-handler.js +1 -177
  195. package/dist/main/services/simulator-temp-files/resolver.d.ts +1 -21
  196. package/dist/main/services/simulator-temp-files/resolver.js +1 -21
  197. package/dist/main/services/simulator-temp-files/store.d.ts +1 -13
  198. package/dist/main/services/simulator-temp-files/store.js +1 -23
  199. package/dist/main/services/update/github-release-checker.js +22 -3
  200. package/dist/main/services/update/update-manager.d.ts +21 -4
  201. package/dist/main/services/update/update-manager.js +55 -11
  202. package/dist/main/services/views/clear-console-filter.d.ts +44 -0
  203. package/dist/main/services/views/clear-console-filter.js +86 -0
  204. package/dist/main/services/views/console-filter-test-fixtures.d.ts +94 -0
  205. package/dist/main/services/views/console-filter-test-fixtures.js +82 -0
  206. package/dist/main/services/views/console-filter.d.ts +94 -0
  207. package/dist/main/services/views/console-filter.js +190 -0
  208. package/dist/main/services/views/devtools-tabs.d.ts +24 -4
  209. package/dist/main/services/views/devtools-tabs.js +40 -21
  210. package/dist/main/services/views/frontend-bootstrap-gate.d.ts +59 -0
  211. package/dist/main/services/views/frontend-bootstrap-gate.js +117 -0
  212. package/dist/main/services/views/host-dialog-port-channel.d.ts +18 -0
  213. package/dist/main/services/views/host-dialog-port-channel.js +15 -0
  214. package/dist/main/services/views/host-dialog-session-runtime.d.ts +10 -0
  215. package/dist/main/services/views/host-dialog-session-runtime.js +17 -0
  216. package/dist/main/services/views/host-dialog-view.d.ts +95 -0
  217. package/dist/main/services/views/host-dialog-view.js +147 -0
  218. package/dist/main/services/views/host-sidebar-port-channel.d.ts +18 -0
  219. package/dist/main/services/views/host-sidebar-port-channel.js +15 -0
  220. package/dist/main/services/views/host-sidebar-session-runtime.d.ts +10 -0
  221. package/dist/main/services/views/host-sidebar-session-runtime.js +17 -0
  222. package/dist/main/services/views/host-sidebar-view.d.ts +59 -0
  223. package/dist/main/services/views/host-sidebar-view.js +44 -0
  224. package/dist/main/services/views/host-slot-port-channel.d.ts +124 -0
  225. package/dist/main/services/views/host-slot-port-channel.js +289 -0
  226. package/dist/main/services/views/host-slot-session-runtime.d.ts +40 -0
  227. package/dist/main/services/views/host-slot-session-runtime.js +50 -0
  228. package/dist/main/services/views/host-slot-view.d.ts +109 -0
  229. package/dist/main/services/views/host-slot-view.js +147 -0
  230. package/dist/main/services/views/host-toolbar-port-channel.d.ts +6 -91
  231. package/dist/main/services/views/host-toolbar-port-channel.js +10 -243
  232. package/dist/main/services/views/host-toolbar-session-runtime.d.ts +5 -30
  233. package/dist/main/services/views/host-toolbar-session-runtime.js +9 -47
  234. package/dist/main/services/views/host-toolbar-view.d.ts +34 -7
  235. package/dist/main/services/views/host-toolbar-view.js +30 -237
  236. package/dist/main/services/views/managed-web-contents-view.d.ts +48 -0
  237. package/dist/main/services/views/managed-web-contents-view.js +143 -0
  238. package/dist/main/services/views/miniapp-partition.d.ts +1 -89
  239. package/dist/main/services/views/miniapp-partition.js +1 -158
  240. package/dist/main/services/views/native-simulator-devtools-host.js +206 -68
  241. package/dist/main/services/views/native-simulator-view.d.ts +6 -0
  242. package/dist/main/services/views/native-simulator-view.js +47 -40
  243. package/dist/main/services/views/native-view-tree.d.ts +25 -0
  244. package/dist/main/services/views/native-view-tree.js +69 -0
  245. package/dist/main/services/views/overlay-panels-view.d.ts +63 -4
  246. package/dist/main/services/views/overlay-panels-view.js +257 -108
  247. package/dist/main/services/views/placement-reconciler.d.ts +18 -18
  248. package/dist/main/services/views/placement-reconciler.js +91 -29
  249. package/dist/main/services/views/placement-test-driver.d.ts +27 -0
  250. package/dist/main/services/views/placement-test-driver.js +29 -0
  251. package/dist/main/services/views/refresh-styles.d.ts +10 -0
  252. package/dist/main/services/views/refresh-styles.js +57 -0
  253. package/dist/main/services/views/simulator-session-policy.d.ts +1 -27
  254. package/dist/main/services/views/simulator-session-policy.js +1 -98
  255. package/dist/main/services/views/view-manager-devtools-host-test-fixtures.d.ts +76 -0
  256. package/dist/main/services/views/view-manager-devtools-host-test-fixtures.js +184 -0
  257. package/dist/main/services/views/view-manager.d.ts +69 -88
  258. package/dist/main/services/views/view-manager.js +62 -7
  259. package/dist/main/services/views/workbench-view.d.ts +2 -0
  260. package/dist/main/services/views/workbench-view.js +104 -17
  261. package/dist/main/services/window-contexts/context-router.d.ts +36 -0
  262. package/dist/main/services/window-contexts/context-router.js +55 -0
  263. package/dist/main/services/workbench-coi-host.d.ts +52 -0
  264. package/dist/main/services/workbench-coi-host.js +227 -0
  265. package/dist/main/services/workbench-coi-server.d.ts +11 -0
  266. package/dist/main/services/workbench-coi-server.js +126 -126
  267. package/dist/main/services/workbench-coi-shutdown.d.ts +40 -0
  268. package/dist/main/services/workbench-coi-shutdown.js +69 -0
  269. package/dist/main/services/workbench-coi-static.d.ts +23 -0
  270. package/dist/main/services/workbench-coi-static.js +87 -0
  271. package/dist/main/services/workbench-context.d.ts +88 -8
  272. package/dist/main/services/workbench-context.js +54 -6
  273. package/dist/main/services/workspace/compile-log-buffer.d.ts +40 -0
  274. package/dist/main/services/workspace/compile-log-buffer.js +41 -0
  275. package/dist/main/services/workspace/compile-mode-adapter.d.ts +18 -0
  276. package/dist/main/services/workspace/compile-mode-adapter.js +57 -0
  277. package/dist/main/services/workspace/compile-mode-store.d.ts +25 -0
  278. package/dist/main/services/workspace/compile-mode-store.js +71 -0
  279. package/dist/main/services/workspace/open-project-guards.d.ts +16 -0
  280. package/dist/main/services/workspace/open-project-guards.js +42 -0
  281. package/dist/main/services/workspace/rebuild-status.d.ts +37 -0
  282. package/dist/main/services/workspace/rebuild-status.js +36 -0
  283. package/dist/main/services/workspace/session-status-store.d.ts +47 -0
  284. package/dist/main/services/workspace/session-status-store.js +73 -0
  285. package/dist/main/services/workspace/status-tap.d.ts +20 -0
  286. package/dist/main/services/workspace/status-tap.js +32 -0
  287. package/dist/main/services/workspace/workspace-compile-modes.d.ts +59 -0
  288. package/dist/main/services/workspace/workspace-compile-modes.js +93 -0
  289. package/dist/main/services/workspace/workspace-lifecycle-race.testutil.d.ts +22 -0
  290. package/dist/main/services/workspace/workspace-lifecycle-race.testutil.js +62 -0
  291. package/dist/main/services/workspace/workspace-referer.d.ts +17 -0
  292. package/dist/main/services/workspace/workspace-referer.js +26 -0
  293. package/dist/main/services/workspace/workspace-service.d.ts +7 -5
  294. package/dist/main/services/workspace/workspace-service.js +96 -135
  295. package/dist/main/services/workspace/workspace-thumbnails.d.ts +22 -0
  296. package/dist/main/services/workspace/workspace-thumbnails.js +67 -0
  297. package/dist/main/utils/ipc-context-source.d.ts +40 -0
  298. package/dist/main/utils/ipc-context-source.js +23 -0
  299. package/dist/main/utils/ipc-registry.d.ts +46 -21
  300. package/dist/main/utils/ipc-registry.js +166 -76
  301. package/dist/main/utils/paths.d.ts +18 -0
  302. package/dist/main/utils/paths.js +18 -0
  303. package/dist/main/utils/sender-policy.d.ts +10 -1
  304. package/dist/main/utils/sender-policy.js +42 -4
  305. package/dist/main/utils/theme.d.ts +18 -8
  306. package/dist/main/utils/theme.js +19 -9
  307. package/dist/main/windows/internal-devtools-window/index.d.ts +66 -0
  308. package/dist/main/windows/internal-devtools-window/index.js +160 -0
  309. package/dist/main/windows/main-window/create.d.ts +16 -0
  310. package/dist/main/windows/main-window/create.js +19 -11
  311. package/dist/main/windows/main-window/events.d.ts +1 -1
  312. package/dist/main/windows/main-window/events.js +26 -13
  313. package/dist/main/windows/main-window/index.d.ts +1 -1
  314. package/dist/main/windows/main-window/index.js +1 -1
  315. package/dist/main/windows/service-host-window/create.d.ts +1 -92
  316. package/dist/main/windows/service-host-window/create.js +1 -154
  317. package/dist/native-host/common/common.js +173 -53
  318. package/dist/native-host/container/pageFrame.css +1 -1
  319. package/dist/native-host/render/render.js +8278 -3659
  320. package/dist/native-host/service/service.js +2 -2
  321. package/dist/preload/index.d.ts +2 -0
  322. package/dist/preload/index.js +1 -0
  323. package/dist/preload/instrumentation/app-data.d.ts +2 -2
  324. package/dist/preload/instrumentation/app-data.js +1 -1
  325. package/dist/preload/instrumentation/wxml.js +1 -1
  326. package/dist/preload/runtime/bridge.d.ts +3 -3
  327. package/dist/preload/runtime/bridge.js +2 -2
  328. package/dist/preload/runtime/clipboard.d.ts +6 -0
  329. package/dist/preload/runtime/clipboard.js +12 -0
  330. package/dist/preload/runtime/host-dialog-advertiser.d.ts +22 -0
  331. package/dist/preload/runtime/host-dialog-advertiser.js +37 -0
  332. package/dist/preload/runtime/host-dialog-port.d.ts +44 -0
  333. package/dist/preload/runtime/host-dialog-port.js +53 -0
  334. package/dist/preload/runtime/host-dialog-runtime.d.ts +28 -0
  335. package/dist/preload/runtime/host-dialog-runtime.js +36 -0
  336. package/dist/preload/runtime/host-sidebar-advertiser.d.ts +19 -0
  337. package/dist/preload/runtime/host-sidebar-advertiser.js +35 -0
  338. package/dist/preload/runtime/host-sidebar-port.d.ts +44 -0
  339. package/dist/preload/runtime/host-sidebar-port.js +53 -0
  340. package/dist/preload/runtime/host-sidebar-runtime.d.ts +28 -0
  341. package/dist/preload/runtime/host-sidebar-runtime.js +36 -0
  342. package/dist/preload/runtime/host-slot-port-bridge.d.ts +18 -0
  343. package/dist/preload/runtime/host-slot-port-bridge.js +112 -0
  344. package/dist/preload/runtime/host-toolbar-advertiser.d.ts +5 -13
  345. package/dist/preload/runtime/host-toolbar-advertiser.js +18 -38
  346. package/dist/preload/runtime/host-toolbar-port.d.ts +9 -0
  347. package/dist/preload/runtime/host-toolbar-port.js +11 -95
  348. package/dist/preload/runtime/native-host.d.ts +14 -0
  349. package/dist/preload/runtime/native-host.js +5 -8
  350. package/dist/preload/runtime/node-bindings.d.ts +18 -0
  351. package/dist/preload/runtime/node-bindings.js +44 -0
  352. package/dist/preload/runtime/temp-files.js +9 -2
  353. package/dist/preload/runtime/wait-for-slot-root.d.ts +23 -0
  354. package/dist/preload/runtime/wait-for-slot-root.js +80 -0
  355. package/dist/preload/shared/api-compat.js +63 -41
  356. package/dist/preload/windows/host-dialog-runtime.cjs +360 -0
  357. package/dist/preload/windows/host-dialog-runtime.cjs.map +7 -0
  358. package/dist/preload/windows/host-dialog-runtime.d.ts +2 -0
  359. package/dist/preload/windows/host-dialog-runtime.js +13 -0
  360. package/dist/preload/windows/host-sidebar-runtime.cjs +361 -0
  361. package/dist/preload/windows/host-sidebar-runtime.cjs.map +7 -0
  362. package/dist/preload/windows/host-sidebar-runtime.d.ts +2 -0
  363. package/dist/preload/windows/host-sidebar-runtime.js +13 -0
  364. package/dist/preload/windows/host-toolbar-runtime.cjs +142 -52
  365. package/dist/preload/windows/host-toolbar-runtime.cjs.map +3 -3
  366. package/dist/preload/windows/main.cjs +4922 -1246
  367. package/dist/preload/windows/main.cjs.map +4 -4
  368. package/dist/preload/windows/main.css +428 -0
  369. package/dist/preload/windows/main.css.map +7 -0
  370. package/dist/preload/windows/simulator.cjs +376 -322
  371. package/dist/preload/windows/simulator.cjs.map +4 -4
  372. package/dist/preload/windows/simulator.js +376 -322
  373. package/dist/render-host/pageFrame.html +4 -4
  374. package/dist/render-host/preload.cjs +30 -0
  375. package/dist/render-host/render-inspect.js +184 -115
  376. package/dist/renderer/assets/button-CB2MWjHY.js +2 -0
  377. package/dist/renderer/assets/constants-CkoGPQTS.js +2 -0
  378. package/dist/renderer/assets/constants-zQZ2-y21.js +2 -0
  379. package/dist/renderer/assets/createLucideIcon-cZ9FlZZw.js +2 -0
  380. package/dist/renderer/assets/devicePicker-H2eIO4e1.js +2 -0
  381. package/dist/renderer/assets/dialog-pHzEA8Vx.js +46 -0
  382. package/dist/renderer/assets/dist-B5HADirS.js +2 -0
  383. package/dist/renderer/assets/dist-DIFlRMKe.js +2 -0
  384. package/dist/renderer/assets/hostSidebarDefault-DRWh6OCt.js +2 -0
  385. package/dist/renderer/assets/index-CEL_XFge.js +2 -0
  386. package/dist/renderer/assets/input-CAObw95L.js +2 -0
  387. package/dist/renderer/assets/ipc-channels-overlays-gIPUFnqc.js +2 -0
  388. package/dist/renderer/assets/jsx-runtime-DICEQH_0.css +1 -0
  389. package/dist/renderer/assets/jsx-runtime-DIw5wnYl.js +9 -0
  390. package/dist/renderer/assets/plus-BQ9u5EbL.js +2 -0
  391. package/dist/renderer/assets/popover-Cw7G2Ctp.js +2 -0
  392. package/dist/renderer/assets/presets-DMZOb9ay.js +2 -0
  393. package/dist/renderer/assets/project-api-YTOr_Yvo.js +2 -0
  394. package/dist/renderer/assets/projectCreateDialog-BmLqiYxn.js +2 -0
  395. package/dist/renderer/assets/search-BMvuYF48.js +2 -0
  396. package/dist/renderer/assets/select-nFP95TxM.js +2 -0
  397. package/dist/renderer/assets/settings-CnpVfSWt.js +2 -0
  398. package/dist/renderer/assets/settings-api-Ccsf-Nsj.js +2 -0
  399. package/dist/renderer/assets/settings-tab-bar-CAzrv32m.js +2 -0
  400. package/dist/renderer/assets/smartphone-Bb2GdIKy.js +2 -0
  401. package/dist/renderer/assets/tabs-CPKN3Mmq.js +2 -0
  402. package/dist/renderer/assets/tooltip-D6AxXRk5.js +2 -0
  403. package/dist/renderer/assets/types-Bh0hA7El.js +2 -0
  404. package/dist/renderer/assets/updateDialog-CwndJ0Bl.js +2 -0
  405. package/dist/renderer/assets/utils-sEB5OZEQ.js +2 -0
  406. package/dist/renderer/assets/view-api-B-2zPBR5.js +2 -0
  407. package/dist/renderer/assets/view-ids-BfaDVV5P.js +2 -0
  408. package/dist/renderer/assets/workbench-C0Jkdlps.js +5 -0
  409. package/dist/renderer/assets/workbenchSettings-YD0Ctbm_.js +8 -0
  410. package/dist/renderer/entries/device-picker/index.html +28 -0
  411. package/dist/renderer/entries/host-sidebar-default/index.html +22 -0
  412. package/dist/renderer/entries/main/index.html +16 -7
  413. package/dist/renderer/entries/popover/index.html +16 -6
  414. package/dist/renderer/entries/project-create-dialog/index.html +27 -0
  415. package/dist/renderer/entries/settings/index.html +10 -5
  416. package/dist/renderer/entries/tooltip/index.html +21 -0
  417. package/dist/renderer/entries/update-dialog/index.html +25 -0
  418. package/dist/renderer/entries/workbench/index.html +49 -0
  419. package/dist/renderer/entries/workbench-settings/index.html +12 -5
  420. package/dist/service-host/appdata-set-data.cjs +39 -0
  421. package/dist/service-host/host-env-update.cjs +23 -0
  422. package/dist/service-host/preload.cjs +54 -48
  423. package/dist/service-host/service-message-queue.cjs +71 -0
  424. package/dist/service-host/sync-impls/menu-button-geometry.js +16 -5
  425. package/dist/service-host/sync-impls/menu-button.js +5 -3
  426. package/dist/service-host/sync-impls/system-info.js +31 -9
  427. package/dist/shared/bridge-channels.d.ts +1 -416
  428. package/dist/shared/bridge-channels.js +1 -89
  429. package/dist/shared/compile-mode-state.d.ts +73 -0
  430. package/dist/shared/compile-mode-state.js +100 -0
  431. package/dist/shared/compile-modes.d.ts +152 -0
  432. package/dist/shared/compile-modes.js +237 -0
  433. package/dist/shared/constants.d.ts +22 -0
  434. package/dist/shared/constants.js +22 -0
  435. package/dist/shared/dmb-resource-url.d.ts +2 -0
  436. package/dist/shared/dmb-resource-url.js +2 -0
  437. package/dist/shared/ipc-channels-overlays.d.ts +162 -0
  438. package/dist/shared/ipc-channels-overlays.js +203 -0
  439. package/dist/shared/ipc-channels.d.ts +24 -154
  440. package/dist/shared/ipc-channels.js +48 -96
  441. package/dist/shared/ipc-schemas.d.ts +143 -54
  442. package/dist/shared/ipc-schemas.js +137 -45
  443. package/dist/shared/node-bindings.d.ts +2 -0
  444. package/dist/shared/node-bindings.js +2 -0
  445. package/dist/shared/project-window-types.d.ts +42 -0
  446. package/dist/shared/project-window-types.js +2 -0
  447. package/dist/shared/simulator-route.d.ts +8 -0
  448. package/dist/shared/simulator-route.js +15 -0
  449. package/dist/shared/simulator-ui.d.ts +61 -0
  450. package/dist/shared/simulator-ui.js +12 -0
  451. package/dist/shared/types.d.ts +126 -41
  452. package/dist/shared/view-ids.d.ts +10 -0
  453. package/dist/shared/view-ids.js +23 -0
  454. package/dist/simulator/assets/bridge-channels-B3JAmRfl.js +2 -0
  455. package/dist/simulator/assets/device-shell-ATEhHV2_.css +1 -0
  456. package/dist/simulator/assets/device-shell-DucLepkm.js +431 -0
  457. package/dist/simulator/assets/simulator-B4rbcOVt.js +10 -0
  458. package/dist/simulator/assets/simulator-mini-app-DFo7fhi5.js +2 -0
  459. package/dist/simulator/assets/simulator-ui-BupATgKo.css +1 -0
  460. package/dist/simulator/assets/simulator-ui-i3GCc7YJ.js +2 -0
  461. package/dist/simulator/simulator.html +4 -3
  462. package/dist/simulator/temp-files.d.ts +35 -0
  463. package/dist/simulator/temp-files.js +121 -0
  464. package/dist/simulator/types.d.ts +50 -0
  465. package/dist/simulator/types.js +2 -0
  466. package/dist/vscode-workbench/assets/__vite-browser-external-JIkWewFf.js +1 -0
  467. package/dist/vscode-workbench/assets/{dist-TpGpmMGi.js → dist-CXG-u1VB.js} +3 -3
  468. package/dist/vscode-workbench/assets/fs-core-worker-urls-DZ1nod84.js +1 -0
  469. package/dist/vscode-workbench/assets/fs-core.worker-Bnmpp6fo.js +1 -0
  470. package/dist/vscode-workbench/assets/fs-query.worker-cZ-7Fjch.js +2 -0
  471. package/dist/vscode-workbench/assets/{iconv-lite-umd-C9tiCAJa.js → iconv-lite-umd-Dxx9Qyb4.js} +1 -1
  472. package/dist/vscode-workbench/assets/{index-DJ1HyMZ7.js → index-6VJMsaWj.js} +475 -475
  473. package/dist/vscode-workbench/assets/{jschardet-DE1jV513.js → jschardet-Ba3D16vt.js} +1 -1
  474. package/dist/vscode-workbench/index.html +21 -1
  475. package/package.json +23 -13
  476. package/dist/main/services/views/destroy-child-view.d.ts +0 -9
  477. package/dist/main/services/views/destroy-child-view.js +0 -23
  478. package/dist/preload/instrumentation/wxml-extract.d.ts +0 -11
  479. package/dist/preload/instrumentation/wxml-extract.js +0 -382
  480. package/dist/preload/shared/sid-registry.d.ts +0 -11
  481. package/dist/preload/shared/sid-registry.js +0 -38
  482. package/dist/renderer/assets/constants-EAMiwL9_.js +0 -2
  483. package/dist/renderer/assets/index-BMqyDx71.js +0 -49
  484. package/dist/renderer/assets/input-CDAEwpBO.js +0 -2
  485. package/dist/renderer/assets/ipc-transport-B7eFOR68.css +0 -1
  486. package/dist/renderer/assets/ipc-transport-_G1k5V1p.js +0 -9
  487. package/dist/renderer/assets/popover-DEdjK14m.js +0 -2
  488. package/dist/renderer/assets/select-DpKPCh3y.js +0 -2
  489. package/dist/renderer/assets/settings-M5q2elUr.js +0 -2
  490. package/dist/renderer/assets/settings-api-CDlZoHiO.js +0 -2
  491. package/dist/renderer/assets/workbenchSettings-CT_H1WhV.js +0 -8
  492. package/dist/shared/appdata-accumulator.d.ts +0 -95
  493. package/dist/shared/appdata-accumulator.js +0 -218
  494. package/dist/shared/request-core.d.ts +0 -84
  495. package/dist/shared/request-core.js +0 -168
  496. package/dist/shared/simulator-api-metadata.d.ts +0 -26
  497. package/dist/shared/simulator-api-metadata.js +0 -59
  498. package/dist/shared/vpath.d.ts +0 -42
  499. package/dist/shared/vpath.js +0 -105
  500. package/dist/simulator/assets/bridge-channels-zhsumfky.js +0 -2
  501. package/dist/simulator/assets/device-shell-C-wcFq3Z.js +0 -2
  502. package/dist/simulator/assets/device-shell-CS1rqAQz.css +0 -1
  503. package/dist/simulator/assets/jsx-runtime-BDTY6fEq.js +0 -2
  504. package/dist/simulator/assets/simulator-DU3-fS3v.js +0 -10
  505. package/dist/simulator/assets/simulator-mini-app-DzfMfnVM.js +0 -2
  506. package/dist/simulator/device-shell/menu-button-geometry.js +0 -8
  507. package/dist/vscode-workbench/assets/__vite-browser-external-CXi6Kz9W.js +0 -1
@@ -1,10 +1,13 @@
1
1
  /**
2
- * Register `difile://` as a privileged scheme so `simSession.protocol.handle`
3
- * can serve `difile://devtools/{uuid}` URLs from the simulator webview without
4
- * tripping CSP / fetch-API restrictions. Must be called before `app.whenReady`.
2
+ * Register privileged custom schemes before `app.whenReady`.
5
3
  *
6
- * Idempotent subsequent calls are no-ops because Electron throws if the same
7
- * scheme is registered twice.
4
+ * Electron allows only one process-global `registerSchemesAsPrivileged` call, so
5
+ * this merges the runtime's `difile` + `dmb-resource` descriptors (required for
6
+ * render-host documents / ES module fetches on `dmb-resource://`) and keeps
7
+ * `bypassCSP` on `difile` for the simulator temp-file path.
8
+ *
9
+ * Idempotent — subsequent calls are no-ops because Electron throws if schemes
10
+ * are registered twice.
8
11
  */
9
12
  export declare function registerDifileScheme(): void;
10
13
  /**
@@ -1,32 +1,32 @@
1
1
  import { app, protocol } from 'electron';
2
+ import { ELECTRON_RUNTIME_SCHEMES } from '@dimina-kit/electron-runtime';
2
3
  import { DEFAULT_CDP_PORT } from '../../shared/constants.js';
3
4
  import { loadWorkbenchSettings } from '../services/settings/index.js';
4
5
  let difileSchemeRegistered = false;
5
6
  /**
6
- * Register `difile://` as a privileged scheme so `simSession.protocol.handle`
7
- * can serve `difile://devtools/{uuid}` URLs from the simulator webview without
8
- * tripping CSP / fetch-API restrictions. Must be called before `app.whenReady`.
7
+ * Register privileged custom schemes before `app.whenReady`.
9
8
  *
10
- * Idempotent subsequent calls are no-ops because Electron throws if the same
11
- * scheme is registered twice.
9
+ * Electron allows only one process-global `registerSchemesAsPrivileged` call, so
10
+ * this merges the runtime's `difile` + `dmb-resource` descriptors (required for
11
+ * render-host documents / ES module fetches on `dmb-resource://`) and keeps
12
+ * `bypassCSP` on `difile` for the simulator temp-file path.
13
+ *
14
+ * Idempotent — subsequent calls are no-ops because Electron throws if schemes
15
+ * are registered twice.
12
16
  */
13
17
  export function registerDifileScheme() {
14
18
  if (difileSchemeRegistered)
15
19
  return;
16
20
  difileSchemeRegistered = true;
17
- protocol.registerSchemesAsPrivileged([
18
- {
19
- scheme: 'difile',
21
+ protocol.registerSchemesAsPrivileged(ELECTRON_RUNTIME_SCHEMES.map((entry) => (entry.scheme === 'difile'
22
+ ? {
23
+ scheme: entry.scheme,
20
24
  privileges: {
21
- standard: true,
22
- secure: true,
23
- supportFetchAPI: true,
24
- stream: true,
25
+ ...entry.privileges,
25
26
  bypassCSP: true,
26
- corsEnabled: true,
27
27
  },
28
- },
29
- ]);
28
+ }
29
+ : { scheme: entry.scheme, privileges: { ...entry.privileges } })));
30
30
  }
31
31
  /**
32
32
  * Suppress EPIPE errors on stdout/stderr.
@@ -0,0 +1,21 @@
1
+ import type { CustomFileTypes, WorkbenchAppConfig } from '../../shared/types.js';
2
+ import type { ViewManager } from '../services/views/view-manager.js';
3
+ import type { WorkspaceService } from '../services/workspace/workspace-service.js';
4
+ import type { DisposableRegistry } from '@dimina-kit/electron-deck/main';
5
+ /** Narrow view of the context fields the embedded editor depends on. */
6
+ export interface EditorViewContext {
7
+ workspace: WorkspaceService;
8
+ fileTypes: CustomFileTypes;
9
+ views: ViewManager;
10
+ registry: DisposableRegistry;
11
+ }
12
+ /**
13
+ * Embedded workbench editor — the sole devtools editor. Stands up the COI http
14
+ * server that serves the workbench bundle with the SharedArrayBuffer isolation
15
+ * headers and bridges `/__fs/*` onto the active project, then hands its base URL
16
+ * to the view manager so the 'editor' dock slot mounts the workbench
17
+ * WebContentsView. Both the server and the WCV tear down with the context
18
+ * registry.
19
+ */
20
+ export declare function setupEditorView(config: WorkbenchAppConfig, context: EditorViewContext, getActiveAppId: () => string | null): Promise<void>;
21
+ //# sourceMappingURL=editor-view.d.ts.map
@@ -0,0 +1,71 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { devtoolsPackageRoot } from '../utils/paths.js';
4
+ import { startWorkbenchCoiServer } from '../services/workbench-coi-server.js';
5
+ /**
6
+ * Embedded workbench editor — the sole devtools editor. Stands up the COI http
7
+ * server that serves the workbench bundle with the SharedArrayBuffer isolation
8
+ * headers and bridges `/__fs/*` onto the active project, then hands its base URL
9
+ * to the view manager so the 'editor' dock slot mounts the workbench
10
+ * WebContentsView. Both the server and the WCV tear down with the context
11
+ * registry.
12
+ */
13
+ export async function setupEditorView(config, context, getActiveAppId) {
14
+ // Default the bundle dir to the devtools package's OWN `dist/vscode-workbench`
15
+ // (resolved from the package root), NOT relative to the caller's rendererDir:
16
+ // a host that overrides `rendererDir` but omits `editorViewConfig.bundleDir`
17
+ // would otherwise compute a path next to ITS renderer, where no workbench
18
+ // bundle exists → 404 / blank editor.
19
+ const bundleDir = config.editorViewConfig?.bundleDir ?? path.join(devtoolsPackageRoot, 'dist/vscode-workbench');
20
+ // Skip the entire editor assembly when the bundle is missing. Starting the COI
21
+ // server and attaching the WCV against a non-existent bundle yields a silent
22
+ // blank editor (the WCV loads index.html → 404); a launchable app with no
23
+ // editor is strictly better. The view manager never gets a source, so the
24
+ // 'editor' slot's lazy attach is a no-op.
25
+ if (!fs.existsSync(path.join(bundleDir, 'index.html'))) {
26
+ console.warn(`[workbench] editor bundle not found at ${bundleDir} — skipping embedded editor assembly`);
27
+ return;
28
+ }
29
+ const coiServer = await startWorkbenchCoiServer({
30
+ rootDir: bundleDir,
31
+ getProjectRoot: () => context.workspace.getProjectPath(),
32
+ extensionsDir: config.editorViewConfig?.extensionsDir,
33
+ getFileTypes: () => context.fileTypes,
34
+ // Names the editor's VS Code workspace after the active miniapp, so each
35
+ // project gets its own open-editors/view-state bucket instead of all of
36
+ // them sharing the one derived from the constant mirror root.
37
+ getProjectIdentity: () => ({
38
+ appId: getActiveAppId(),
39
+ projectPath: context.workspace.getProjectPath(),
40
+ }),
41
+ });
42
+ try {
43
+ // Return the close promise so the registry awaits server shutdown on dispose
44
+ // instead of fire-and-forgetting it (a dangling http server would keep the
45
+ // port + event loop alive past teardown).
46
+ context.registry.add(() => coiServer.close());
47
+ // The registry disposes LIFO, so this runs BEFORE the context-level
48
+ // disposeAll: void any in-flight open's attach hold here too, or a stale
49
+ // release / cap firing could rebuild the workbench during the awaited
50
+ // coiServer.close() above, before disposeAll's own cancel runs.
51
+ context.registry.add(() => {
52
+ context.views.cancelWorkbenchAttachHold();
53
+ context.views.detachWorkbench();
54
+ });
55
+ }
56
+ catch (err) {
57
+ // The window was torn down while the bridge was still binding, so the
58
+ // registry that would have closed it is already disposed and refuses new
59
+ // entries. Close it here instead: an orphaned route keeps the shared COI
60
+ // listener (and its port) alive for the rest of the process.
61
+ await coiServer.close().catch(() => { });
62
+ throw err;
63
+ }
64
+ // Only HAND the view manager the COI URL — do NOT load yet. The heavy
65
+ // WebContentsView load (10MB bundle + ext-host) is deferred to the first time
66
+ // the 'editor' dock slot becomes visible (first non-zero bounds), so it never
67
+ // sits on the app boot critical path. Loading it eagerly here delayed
68
+ // preload/window-ready enough to trip the e2e launch health check.
69
+ context.views.setWorkbenchSource(coiServer.baseUrl);
70
+ }
71
+ //# sourceMappingURL=editor-view.js.map
@@ -0,0 +1,23 @@
1
+ import type { BrowserWindow } from 'electron';
2
+ import type { ConsoleForwarder } from '../services/console-forward/index.js';
3
+ import type { DiagnosticsBus } from '../services/diagnostics/index.js';
4
+ import type { CdpSessionBroker } from '../services/cdp-session/index.js';
5
+ import type { InternalDevtoolsWindow } from '../windows/internal-devtools-window/index.js';
6
+ import { type DisposableRegistry } from '@dimina-kit/electron-deck/main';
7
+ /** Narrow view of the context fields the two global mirrors depend on. */
8
+ export interface GlobalMirrorContext {
9
+ consoleForwarder?: ConsoleForwarder;
10
+ diagnostics?: DiagnosticsBus;
11
+ internalDevtoolsWindow?: InternalDevtoolsWindow;
12
+ cdpSessionBroker: CdpSessionBroker;
13
+ registry: DisposableRegistry;
14
+ }
15
+ /**
16
+ * Console + diagnostics mirrors into the standalone internal DevTools window.
17
+ *
18
+ * Both mirrors target the INSPECTED side — `mainWindow.webContents`, per
19
+ * internal-devtools-window.ts's setDevToolsWebContents relationship — and NOT
20
+ * the front-end host page the `onHostChanged` callback hands them.
21
+ */
22
+ export declare function installGlobalMirrors(context: GlobalMirrorContext, mainWindow: BrowserWindow): void;
23
+ //# sourceMappingURL=global-mirrors.d.ts.map
@@ -0,0 +1,37 @@
1
+ import { createGlobalConsoleMirror } from '../services/console-forward/global-console-mirror.js';
2
+ import { createGlobalDiagnosticsMirror } from '../services/console-forward/global-diagnostics-mirror.js';
3
+ import { toDisposable } from '@dimina-kit/electron-deck/main';
4
+ /**
5
+ * Console + diagnostics mirrors into the standalone internal DevTools window.
6
+ *
7
+ * Both mirrors target the INSPECTED side — `mainWindow.webContents`, per
8
+ * internal-devtools-window.ts's setDevToolsWebContents relationship — and NOT
9
+ * the front-end host page the `onHostChanged` callback hands them.
10
+ */
11
+ export function installGlobalMirrors(context, mainWindow) {
12
+ // While the standalone internal DevTools window is open, mirror every guest
13
+ // console entry (service + render, UNFILTERED — see global-console-mirror.ts)
14
+ // into it — each open replays the forwarder's current history buffer first
15
+ // (see that module's doc comment for why the subscribe lifecycle is gated on
16
+ // onHostChanged rather than subscribed once at construction time).
17
+ // `context.consoleForwarder` is assembled by the simulator module's
18
+ // installBridgeRouter; absent only when that builtin module was disabled via
19
+ // config.
20
+ if (context.consoleForwarder && context.internalDevtoolsWindow) {
21
+ const consoleMirror = createGlobalConsoleMirror(context.consoleForwarder, mainWindow.webContents, context.internalDevtoolsWindow.onHostChanged,
22
+ // CDP transport (never executeJavaScript) — see the mirror's inject()
23
+ // doc for the setDevToolsWebContents + external-CDP double-attach hang.
24
+ { broker: context.cdpSessionBroker });
25
+ context.registry.add(toDisposable(() => consoleMirror.dispose()));
26
+ }
27
+ // Same wiring for diagnostics: every diagnostic — including
28
+ // `audience:'internal'` ones console-forward's own service-host injection
29
+ // now skips (see compile-standby.ts / index.ts's handleDiagnostic gate) —
30
+ // surfaces here instead of vanishing. `context.diagnostics` is assembled
31
+ // alongside `context.consoleForwarder` by the same installBridgeRouter call.
32
+ if (context.diagnostics && context.internalDevtoolsWindow) {
33
+ const diagnosticsMirror = createGlobalDiagnosticsMirror(context.diagnostics, mainWindow.webContents, context.internalDevtoolsWindow.onHostChanged, { broker: context.cdpSessionBroker });
34
+ context.registry.add(toDisposable(() => diagnosticsMirror.dispose()));
35
+ }
36
+ }
37
+ //# sourceMappingURL=global-mirrors.js.map
@@ -0,0 +1,19 @@
1
+ import type { ViewManager } from '../services/views/view-manager.js';
2
+ import type { RendererNotifier } from '../services/notifications/renderer-notifier.js';
3
+ import type { DisposableRegistry } from '@dimina-kit/electron-deck/main';
4
+ /** Narrow view of the context fields the default sidebar content depends on. */
5
+ export interface HostSidebarContext {
6
+ views: ViewManager;
7
+ notify: RendererNotifier;
8
+ registry: DisposableRegistry;
9
+ }
10
+ /**
11
+ * devtools' own default content for the host-sidebar slot: a narrow icon rail
12
+ * (logo + 小程序/小游戏 toggle) filtering the project-list grid by
13
+ * `Project.type`. Loaded BEFORE `config.onSetup` runs, so any downstream
14
+ * `loadURL`/`loadFile` call inside onSetup necessarily happens later and
15
+ * naturally supersedes this default via plain chronological ordering — no
16
+ * override flag needed.
17
+ */
18
+ export declare function installHostSidebarDefault(context: HostSidebarContext, rendererDir: string): void;
19
+ //# sourceMappingURL=host-sidebar-default.d.ts.map
@@ -0,0 +1,44 @@
1
+ import path from 'path';
2
+ import { HOST_SIDEBAR_DEFAULT_WIDTH } from '../../shared/constants.js';
3
+ /**
4
+ * devtools' own default content for the host-sidebar slot: a narrow icon rail
5
+ * (logo + 小程序/小游戏 toggle) filtering the project-list grid by
6
+ * `Project.type`. Loaded BEFORE `config.onSetup` runs, so any downstream
7
+ * `loadURL`/`loadFile` call inside onSetup necessarily happens later and
8
+ * naturally supersedes this default via plain chronological ordering — no
9
+ * override flag needed.
10
+ */
11
+ export function installHostSidebarDefault(context, rendererDir) {
12
+ context.registry.add(context.views.hostSidebar.onMessage('project-category-selected', (payload) => {
13
+ const category = payload?.category;
14
+ if (category !== 'miniprogram' && category !== 'minigame')
15
+ return;
16
+ context.notify.hostSidebarCategorySelected(category);
17
+ }));
18
+ context.views.hostSidebar
19
+ .loadFile(path.join(rendererDir, 'entries/host-sidebar-default/index.html'))
20
+ .catch((err) => {
21
+ console.warn('[workbench] failed to load host-sidebar default content:', err);
22
+ });
23
+ // Seed the notified width with the rail's own known intrinsic width
24
+ // (`HOST_SIDEBAR_DEFAULT_WIDTH`) instead of leaving it at 0 until the
25
+ // rail's in-page advertiser reports back. That report can never arrive on
26
+ // its own: the placeholder above only becomes "desired visible" once a
27
+ // nonzero width is known (project-list-screen.tsx), attach only happens
28
+ // for a "desired visible" view (placement-reconciler.ts), and the rail's
29
+ // advertiser (view-anchor's measure-loop.ts) only ever fires via
30
+ // `requestAnimationFrame`, which Chromium never schedules for a
31
+ // WebContentsView that was never attached — a structural deadlock, not a
32
+ // slow-to-resolve race. `setWidthMode({fixed})` pushes the seed
33
+ // synchronously (no attach/rAF dependency) and, critically, retains it in
34
+ // `getHostSidebarWidth()` too, so a renderer that mounts and pulls before
35
+ // any push replays the real seed instead of a stale 0. Flipping back to
36
+ // 'auto' immediately after, before anything has attached or advertised, is
37
+ // a same-tick no-op past the seed (`setExtentMode`'s reapply branch only
38
+ // fires once something has actually been advertised) — it leaves the slot
39
+ // in 'auto' for whichever content ends up loaded (this rail's own later
40
+ // report, or a downstream replacement's), not pinned.
41
+ context.views.hostSidebar.setWidthMode({ fixed: HOST_SIDEBAR_DEFAULT_WIDTH });
42
+ context.views.hostSidebar.setWidthMode('auto');
43
+ }
44
+ //# sourceMappingURL=host-sidebar-default.js.map
@@ -1,3 +1,14 @@
1
1
  export declare function isAppQuitting(): boolean;
2
- export declare function registerAppLifecycle(): void;
2
+ /**
3
+ * `onBeforeQuit`: invoked synchronously, once per `before-quit`, while
4
+ * Electron's main loop is still fully healthy — i.e. BEFORE `will-quit` and
5
+ * any window/WebContentsView destruction. Callers use this to tear down
6
+ * resources (child WebContentsViews, MessagePorts) that are unsafe to let
7
+ * survive into Chromium's native shutdown sequence, where a JS `'destroyed'`
8
+ * handler closing them can hit an already-torn-down native object. Isolated
9
+ * like `host-toolbar-port-channel.ts`'s `invokeReadyHandler`: a throwing
10
+ * callback must not stop `appIsQuitting` from flipping or escape as an
11
+ * uncaught exception out of Electron's event dispatch.
12
+ */
13
+ export declare function registerAppLifecycle(onBeforeQuit?: () => void): void;
3
14
  //# sourceMappingURL=lifecycle.d.ts.map
@@ -4,11 +4,31 @@ import { app, globalShortcut } from 'electron';
4
4
  // BEFORE each window's `close` event, so the main-window onClose handler can
5
5
  // read this to tell "the whole app is exiting" apart from "the user closed a
6
6
  // single project window" and avoid swallowing the quit.
7
+ //
8
+ // Deliberately a ONE-WAY latch: Electron emits no "quit was canceled" signal
9
+ // to reset on, and any heuristic reset (timers, window-created probes) risks
10
+ // flipping back to false DURING a real quit — which would re-arm the very
11
+ // close-interception this flag exists to disable and abort the quit. The
12
+ // cost of staying latched after a hypothetically-canceled quit (no in-repo
13
+ // cancel path exists; a renderer `beforeunload` could in principle create
14
+ // one) is a degraded-but-functional state, strictly cheaper than a broken
15
+ // quit.
7
16
  let appIsQuitting = false;
8
17
  export function isAppQuitting() {
9
18
  return appIsQuitting;
10
19
  }
11
- export function registerAppLifecycle() {
20
+ /**
21
+ * `onBeforeQuit`: invoked synchronously, once per `before-quit`, while
22
+ * Electron's main loop is still fully healthy — i.e. BEFORE `will-quit` and
23
+ * any window/WebContentsView destruction. Callers use this to tear down
24
+ * resources (child WebContentsViews, MessagePorts) that are unsafe to let
25
+ * survive into Chromium's native shutdown sequence, where a JS `'destroyed'`
26
+ * handler closing them can hit an already-torn-down native object. Isolated
27
+ * like `host-toolbar-port-channel.ts`'s `invokeReadyHandler`: a throwing
28
+ * callback must not stop `appIsQuitting` from flipping or escape as an
29
+ * uncaught exception out of Electron's event dispatch.
30
+ */
31
+ export function registerAppLifecycle(onBeforeQuit) {
12
32
  app.on('window-all-closed', () => {
13
33
  globalShortcut.unregisterAll();
14
34
  app.quit();
@@ -16,6 +36,12 @@ export function registerAppLifecycle() {
16
36
  app.on('before-quit', () => {
17
37
  appIsQuitting = true;
18
38
  globalShortcut.unregisterAll();
39
+ try {
40
+ onBeforeQuit?.();
41
+ }
42
+ catch (err) {
43
+ console.error('[lifecycle] onBeforeQuit handler threw:', err);
44
+ }
19
45
  });
20
46
  }
21
47
  //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1,13 @@
1
+ import type { BrowserWindow } from 'electron';
2
+ import type { WorkbenchAppConfig } from '../../shared/types.js';
3
+ import type { WorkspaceService } from '../services/workspace/workspace-service.js';
4
+ import type { RendererNotifier } from '../services/notifications/renderer-notifier.js';
5
+ /** Narrow view of the context fields the menu surface closes over. */
6
+ export interface MenuHostContext {
7
+ appName: string;
8
+ workspace: WorkspaceService;
9
+ openSettings: () => Promise<void>;
10
+ notify: RendererNotifier;
11
+ }
12
+ export declare function installMenu(config: WorkbenchAppConfig, mainWindow: BrowserWindow, activeContext: () => MenuHostContext, revealProjectList: () => void): void;
13
+ //# sourceMappingURL=menu-setup.d.ts.map
@@ -0,0 +1,49 @@
1
+ import { installAppMenu } from '../menu/index.js';
2
+ /**
3
+ * Build the hand-written narrow `MenuContext` a host menu builder receives —
4
+ * explicit construction (not clone+delete), so the runtime object carries
5
+ * EXACTLY the contract members and nothing else. Every member is a lazy
6
+ * closure over the live context: a host monkey-patch of
7
+ * `context.workspace.openProject` (the documented permission-gate pattern)
8
+ * still intercepts calls made through this menu surface.
9
+ *
10
+ * The context is resolved per call, never captured: the menu is installed once
11
+ * before any project exists, and a project lives in its own window, so a menu
12
+ * item run later must reach the window the user is actually in.
13
+ */
14
+ function toMenuContext(activeContext, revealProjectList) {
15
+ return {
16
+ get appName() { return activeContext().appName; },
17
+ workspace: {
18
+ hasActiveSession: () => activeContext().workspace.hasActiveSession(),
19
+ getProjectPath: () => activeContext().workspace.getProjectPath(),
20
+ openProject: (projectPath) => activeContext().workspace.openProject(projectPath),
21
+ closeProject: () => activeContext().workspace.closeProject(),
22
+ getSession: () => activeContext().workspace.getSession(),
23
+ },
24
+ openSettings: () => activeContext().openSettings(),
25
+ notify: {
26
+ projectStatus: (payload) => activeContext().notify.projectStatus(payload),
27
+ // A project opens in its own window, so "back to the project list" is
28
+ // no longer a screen change inside one window — it brings the list
29
+ // window forward. That window owns its own context, which may not be
30
+ // `activeContext()` (a project window can be the active one), so this
31
+ // routes through the injected surface instead of notifying whatever is
32
+ // currently active.
33
+ windowNavigateBack: () => revealProjectList(),
34
+ },
35
+ };
36
+ }
37
+ export function installMenu(config, mainWindow, activeContext, revealProjectList) {
38
+ // Menu: use host-provided builder or fall back to default. Both consume the
39
+ // same narrow MenuContext, so the built-in menu proves the hand-written
40
+ // contract covers the real internal consumption.
41
+ const menuContext = toMenuContext(activeContext, revealProjectList);
42
+ if (config.menuBuilder) {
43
+ config.menuBuilder(mainWindow, menuContext);
44
+ }
45
+ else {
46
+ installAppMenu(menuContext);
47
+ }
48
+ }
49
+ //# sourceMappingURL=menu-setup.js.map
@@ -3,7 +3,7 @@ import type { StorageApi } from '../services/simulator-storage/index.js';
3
3
  /**
4
4
  * Narrow view of the fields the native overview provider reads. Depending on
5
5
  * this instead of the full `WorkbenchContext` grab-bag keeps this module out
6
- * of the workbench-context import ratchet.
6
+ * of the workbench-context import gate.
7
7
  */
8
8
  export interface NativeOverviewContext {
9
9
  storageApi?: StorageApi;
@@ -0,0 +1,13 @@
1
+ import type { IpcContextSource } from '../utils/ipc-context-source.js';
2
+ import { IpcRegistry } from '../utils/ipc-registry.js';
3
+ import type { ProjectRef } from './project-window.js';
4
+ /**
5
+ * Opening a project from the list — and from MCP's project_open, which the
6
+ * list renderer forwards here — always means "give it its own window", so the
7
+ * channel does nothing but hand the request to the workbench window manager.
8
+ *
9
+ * Generic over the context type: the handler never touches the context, and
10
+ * naming it would drag `WorkbenchContext` into this module.
11
+ */
12
+ export declare function registerOpenProjectWindowIpc<TCtx>(router: IpcContextSource<TCtx>, open: (project: ProjectRef) => Promise<unknown>): IpcRegistry<TCtx>;
13
+ //# sourceMappingURL=open-project-ipc.d.ts.map
@@ -0,0 +1,21 @@
1
+ import { WindowChannel } from '../../shared/ipc-channels.js';
2
+ import { IpcRegistry } from '../utils/ipc-registry.js';
3
+ /**
4
+ * Opening a project from the list — and from MCP's project_open, which the
5
+ * list renderer forwards here — always means "give it its own window", so the
6
+ * channel does nothing but hand the request to the workbench window manager.
7
+ *
8
+ * Generic over the context type: the handler never touches the context, and
9
+ * naming it would drag `WorkbenchContext` into this module.
10
+ */
11
+ export function registerOpenProjectWindowIpc(router, open) {
12
+ const windowIpc = new IpcRegistry(router);
13
+ windowIpc.handleRouted(WindowChannel.OpenProjectWindow, async (_ctx, _event, ...args) => {
14
+ const project = args[0];
15
+ if (!project?.path)
16
+ throw new Error('openProjectWindow requires a project path');
17
+ await open({ path: project.path, name: project.name });
18
+ });
19
+ return windowIpc;
20
+ }
21
+ //# sourceMappingURL=open-project-ipc.js.map
@@ -0,0 +1,31 @@
1
+ import type { BrowserWindow } from 'electron';
2
+ import type { UpdateInfo } from '../../shared/types.js';
3
+ /**
4
+ * Narrow view of the context fields the project-list surface closes over —
5
+ * structural, not `WorkbenchContext` (see eslint-workbench-context-gate) —
6
+ * so the surface carries no dependency on the whole workbench.
7
+ */
8
+ export interface ProjectListSurfaceContext {
9
+ notify: {
10
+ windowNavigateBack: () => void;
11
+ };
12
+ views: {
13
+ showUpdateDialog: (info: UpdateInfo) => void;
14
+ };
15
+ }
16
+ export interface ProjectListSurfaceDeps {
17
+ window: BrowserWindow;
18
+ context: ProjectListSurfaceContext;
19
+ }
20
+ export interface ProjectListSurface {
21
+ revealProjectList: () => void;
22
+ showUpdate: (info: UpdateInfo) => void;
23
+ }
24
+ /**
25
+ * "回到项目列表" 和更新弹窗都属于列表窗口本身,而不是当时 activeContext() 恰好
26
+ * 解析到的窗口——那个窗口可能是某个项目工作台。这里是两条路径共同的入口:
27
+ * revealProjectList 把列表窗口带到前台并通知它自己的 context 刷新;showUpdate
28
+ * 先做同一件事,再弹更新对话框,避免窗口还处于 hide() 状态时用户看不到弹窗。
29
+ */
30
+ export declare function createProjectListSurface(deps: ProjectListSurfaceDeps): ProjectListSurface;
31
+ //# sourceMappingURL=project-list-surface.d.ts.map
@@ -0,0 +1,20 @@
1
+ import { revealWindow } from './window-events.js';
2
+ /**
3
+ * "回到项目列表" 和更新弹窗都属于列表窗口本身,而不是当时 activeContext() 恰好
4
+ * 解析到的窗口——那个窗口可能是某个项目工作台。这里是两条路径共同的入口:
5
+ * revealProjectList 把列表窗口带到前台并通知它自己的 context 刷新;showUpdate
6
+ * 先做同一件事,再弹更新对话框,避免窗口还处于 hide() 状态时用户看不到弹窗。
7
+ */
8
+ export function createProjectListSurface(deps) {
9
+ const { window, context } = deps;
10
+ const revealProjectList = () => {
11
+ revealWindow(window);
12
+ context.notify.windowNavigateBack();
13
+ };
14
+ const showUpdate = (info) => {
15
+ revealProjectList();
16
+ context.views.showUpdateDialog(info);
17
+ };
18
+ return { revealProjectList, showUpdate };
19
+ }
20
+ //# sourceMappingURL=project-list-surface.js.map
@@ -0,0 +1,36 @@
1
+ import { BrowserWindow } from 'electron';
2
+ import type { WorkbenchAppConfig } from '../../shared/types.js';
3
+ import { type WorkbenchContext } from '../services/workbench-context.js';
4
+ import type { AppServices } from '../services/app-services.js';
5
+ import type { WindowContextRouter } from '../services/window-contexts/context-router.js';
6
+ /** The project a workbench window is opened for. */
7
+ export interface ProjectRef {
8
+ path: string;
9
+ name?: string;
10
+ }
11
+ /** A window and the context that answers IPC coming from it. */
12
+ export interface ProjectWindow {
13
+ window: BrowserWindow;
14
+ context: WorkbenchContext;
15
+ dispose: () => Promise<void>;
16
+ }
17
+ export interface CreateProjectWindowOptions {
18
+ config: WorkbenchAppConfig;
19
+ rendererDir: string;
20
+ appServices: AppServices;
21
+ router: WindowContextRouter<WorkbenchContext>;
22
+ }
23
+ export declare function disposeContext(ctx: WorkbenchContext): Promise<void>;
24
+ /**
25
+ * The project-list window. It is the application's root window: the app-level
26
+ * IPC surface is registered while it exists, and it stays open for the whole
27
+ * session so workbench windows can come and go around it.
28
+ */
29
+ export declare function createLauncherWindow(opts: CreateProjectWindowOptions): ProjectWindow;
30
+ /**
31
+ * A workbench window: one open mini-program project, with its own simulator,
32
+ * panels and editor. The project identity travels in the URL query so the
33
+ * renderer entry can mount straight into the project without asking main.
34
+ */
35
+ export declare function createWorkbenchWindow(opts: CreateProjectWindowOptions, project: ProjectRef): ProjectWindow;
36
+ //# sourceMappingURL=project-window.d.ts.map