@dimina-kit/devtools 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -0,0 +1,61 @@
1
+ /**
2
+ * The `/__fs` bridge's wire shapes, declared once for the producing side.
3
+ *
4
+ * Every shape here is consumed by browser code in `packages/workbench`
5
+ * (`fs-bridge.ts`'s `FsEntry`, `wal-audit-transport.ts`'s SSE message parse,
6
+ * and through them `@dimina-kit/fs-core/sync/watch-expander`'s stat-diffing).
7
+ * That side cannot import from here — devtools is the application, the
8
+ * workbench is a library it embeds, and the dependency runs one way only. So
9
+ * this module does not give the two ends a shared declaration; it gives the
10
+ * PRODUCING end exactly one, instead of hand-building untyped payloads at each
11
+ * call site. The two ends stay pinned to each other by the round-trip
12
+ * assertions in workbench-coi-server.test.ts and by disk-sync.spec.ts.
13
+ */
14
+ /**
15
+ * The `type` field of every readdir/stat payload. These are wire values, not
16
+ * an internal enum: the browser side compares the raw numbers (watch-expander
17
+ * treats `2` as "recurse into it"), so renumbering them breaks the editor's
18
+ * disk mirror.
19
+ */
20
+ export declare const FS_TYPE_FILE = 1;
21
+ export declare const FS_TYPE_DIR = 2;
22
+ /**
23
+ * One `/__fs/readdir` entry: `[name, type]` for a directory, `[name, type,
24
+ * size, mtimeMs]` for a file. The trailing stats let the sync engine tell a
25
+ * stat-unchanged survivor from an actually-modified file without re-reading
26
+ * its content. A file entry that raced a concurrent delete between readdir and
27
+ * stat has no stats to send and is TRUNCATED to `[name, 1]` rather than padded
28
+ * with the two values: a JSON array cannot hold a hole, so passing them
29
+ * through as `undefined` would put `null` on the wire, which neither the
30
+ * client's `size?: number` type nor any of the comments describing this format
31
+ * admit. Either way the client's `?? NaN` fallback treats the entry as
32
+ * "always changed"; truncating is what keeps the wire and the types honest.
33
+ */
34
+ export type FsBridgeEntry = [name: string, type: number, size?: number, mtimeMs?: number];
35
+ /** The `/__fs/stat` payload. Its `mtime` carries the same value readdir sends
36
+ * as `mtimeMs` — the two endpoints named it differently and no client reads
37
+ * this one, so the names are left as shipped rather than changed blind. */
38
+ export interface FsBridgeStat {
39
+ type: number;
40
+ size: number;
41
+ ctime: number;
42
+ mtime: number;
43
+ }
44
+ /** One `/__fs/watch` SSE message: a batch of changed project-relative paths,
45
+ * or the terminal notice that the watcher is gone and the client must fall
46
+ * back to a full rescan. */
47
+ export type FsWatchMessage = {
48
+ paths: string[];
49
+ } | {
50
+ watcherDead: true;
51
+ };
52
+ /** Serialize one SSE message into an `event-stream` frame. */
53
+ export declare function fsWatchFrame(message: FsWatchMessage): string;
54
+ /** Project one `readdirWithin` entry onto the readdir wire shape. */
55
+ export declare function toFsBridgeEntry(entry: {
56
+ name: string;
57
+ isDirectory: boolean;
58
+ size?: number;
59
+ mtimeMs?: number;
60
+ }): FsBridgeEntry;
61
+ //# sourceMappingURL=fs-bridge-protocol.d.ts.map
@@ -0,0 +1,34 @@
1
+ /**
2
+ * The `/__fs` bridge's wire shapes, declared once for the producing side.
3
+ *
4
+ * Every shape here is consumed by browser code in `packages/workbench`
5
+ * (`fs-bridge.ts`'s `FsEntry`, `wal-audit-transport.ts`'s SSE message parse,
6
+ * and through them `@dimina-kit/fs-core/sync/watch-expander`'s stat-diffing).
7
+ * That side cannot import from here — devtools is the application, the
8
+ * workbench is a library it embeds, and the dependency runs one way only. So
9
+ * this module does not give the two ends a shared declaration; it gives the
10
+ * PRODUCING end exactly one, instead of hand-building untyped payloads at each
11
+ * call site. The two ends stay pinned to each other by the round-trip
12
+ * assertions in workbench-coi-server.test.ts and by disk-sync.spec.ts.
13
+ */
14
+ /**
15
+ * The `type` field of every readdir/stat payload. These are wire values, not
16
+ * an internal enum: the browser side compares the raw numbers (watch-expander
17
+ * treats `2` as "recurse into it"), so renumbering them breaks the editor's
18
+ * disk mirror.
19
+ */
20
+ export const FS_TYPE_FILE = 1;
21
+ export const FS_TYPE_DIR = 2;
22
+ /** Serialize one SSE message into an `event-stream` frame. */
23
+ export function fsWatchFrame(message) {
24
+ return `data: ${JSON.stringify(message)}\n\n`;
25
+ }
26
+ /** Project one `readdirWithin` entry onto the readdir wire shape. */
27
+ export function toFsBridgeEntry(entry) {
28
+ if (entry.isDirectory)
29
+ return [entry.name, FS_TYPE_DIR];
30
+ if (entry.size === undefined || entry.mtimeMs === undefined)
31
+ return [entry.name, FS_TYPE_FILE];
32
+ return [entry.name, FS_TYPE_FILE, entry.size, entry.mtimeMs];
33
+ }
34
+ //# sourceMappingURL=fs-bridge-protocol.js.map
@@ -0,0 +1,40 @@
1
+ /**
2
+ * `GET /__fs/watch`: SSE stream of the active project root's disk changes, for
3
+ * the editor's memfs↔disk sync engine (devtools-fs-core-feasibility.md §7).
4
+ * Read-only — it adds no write surface, which is why workbench-coi-server.ts
5
+ * dispatches it before (and outside) the mutating-action guard of the generic
6
+ * `/__fs/*` handler. Split into its own module purely to keep each file within
7
+ * the repo size gate; the COI server is its only consumer.
8
+ *
9
+ * One `fs.watch(root, {recursive:true})` per connection (darwin supports
10
+ * `recursive`), changes batched over an 80ms window and pushed as
11
+ * `data: {"paths":["rel", ...]}` with POSIX-separated root-relative paths.
12
+ * `getProjectRoot` (not a resolved string) is threaded through so a project
13
+ * close/switch mid-stream is detected by re-polling the SAME source
14
+ * `handleFsRequest` uses — no separate close event is invented. Watcher errors
15
+ * (e.g. EMFILE) push `data: {"watcherDead":true}` then end the stream; no
16
+ * active project at connect time is a 409, matching the ENOACTIVE semantics of
17
+ * every other `/__fs` action.
18
+ */
19
+ import type http from 'node:http';
20
+ /** `false` for build/vcs/dependency churn, the empty string, and any path that
21
+ * (defensively — `fs.watch`'s filename is always root-relative) escapes the root.
22
+ * Matches SKIP_DIRS as a path SEGMENT at any depth — the same set `/__fs/readdir`
23
+ * omits, so the watcher never reports paths the editor mirror cannot see (a
24
+ * prefix match would let `packages/x/node_modules/...` through). The one
25
+ * accepted edge: a plain FILE named exactly like a skip dir (e.g. `dist`)
26
+ * is also unreported, though readdir would list it. */
27
+ declare function shouldReportWatchPath(rel: string): boolean;
28
+ export declare const __testing: {
29
+ shouldReportWatchPath: typeof shouldReportWatchPath;
30
+ };
31
+ /**
32
+ * Returns the call that ends this stream from the server side, or `null` when
33
+ * the request was answered with an error instead of a stream. Nothing else can
34
+ * end it: the client is the only party that ever disconnects, so the server
35
+ * that outlives the request needs a handle to close the channel when IT is the
36
+ * one going away.
37
+ */
38
+ export declare function handleFsWatchRequest(req: http.IncomingMessage, res: http.ServerResponse, getProjectRoot: () => string): (() => void) | null;
39
+ export {};
40
+ //# sourceMappingURL=fs-watch-sse.d.ts.map
@@ -0,0 +1,113 @@
1
+ import nodeFs from 'node:fs';
2
+ import path from 'node:path';
3
+ import { SKIP_DIRS } from '../ipc/project-fs.js';
4
+ import { fsWatchFrame } from './fs-bridge-protocol.js';
5
+ import { jsonRes } from './http-json.js';
6
+ /** Debounce window for batching change notifications (ms). */
7
+ const WATCH_DEBOUNCE_MS = 80;
8
+ /** `false` for build/vcs/dependency churn, the empty string, and any path that
9
+ * (defensively — `fs.watch`'s filename is always root-relative) escapes the root.
10
+ * Matches SKIP_DIRS as a path SEGMENT at any depth — the same set `/__fs/readdir`
11
+ * omits, so the watcher never reports paths the editor mirror cannot see (a
12
+ * prefix match would let `packages/x/node_modules/...` through). The one
13
+ * accepted edge: a plain FILE named exactly like a skip dir (e.g. `dist`)
14
+ * is also unreported, though readdir would list it. */
15
+ function shouldReportWatchPath(rel) {
16
+ if (rel === '' || rel.startsWith('..') || path.isAbsolute(rel))
17
+ return false;
18
+ return !rel.split('/').some((segment) => SKIP_DIRS.has(segment));
19
+ }
20
+ export const __testing = { shouldReportWatchPath };
21
+ /**
22
+ * Returns the call that ends this stream from the server side, or `null` when
23
+ * the request was answered with an error instead of a stream. Nothing else can
24
+ * end it: the client is the only party that ever disconnects, so the server
25
+ * that outlives the request needs a handle to close the channel when IT is the
26
+ * one going away.
27
+ */
28
+ export function handleFsWatchRequest(req, res, getProjectRoot) {
29
+ const watchedRoot = getProjectRoot();
30
+ if (!watchedRoot) {
31
+ jsonRes(res, 409, { error: 'No active project', code: 'ENOACTIVE' });
32
+ return null;
33
+ }
34
+ let watcher;
35
+ try {
36
+ watcher = nodeFs.watch(watchedRoot, { recursive: true }, onChange);
37
+ }
38
+ catch (e) {
39
+ jsonRes(res, 500, { error: String(e) });
40
+ return null;
41
+ }
42
+ res.writeHead(200, {
43
+ 'Content-Type': 'text/event-stream; charset=utf-8',
44
+ 'Cache-Control': 'no-store',
45
+ Connection: 'keep-alive',
46
+ });
47
+ let pending = new Set();
48
+ let debounceTimer = null;
49
+ let liveCheck = null;
50
+ let closed = false;
51
+ function cleanup() {
52
+ if (closed)
53
+ return;
54
+ closed = true;
55
+ if (debounceTimer)
56
+ clearTimeout(debounceTimer);
57
+ if (liveCheck)
58
+ clearInterval(liveCheck);
59
+ watcher.close();
60
+ }
61
+ function flush() {
62
+ if (closed || pending.size === 0)
63
+ return;
64
+ const paths = [...pending];
65
+ pending = new Set();
66
+ res.write(fsWatchFrame({ paths }));
67
+ }
68
+ function onChange(_event, filename) {
69
+ // FSEvents overflow delivers a null filename ("something changed,
70
+ // rescan"). Dropping it loses data; report '.' and let the client's
71
+ // watch-batch expansion (wal-audit.ts) reconcile the whole tree.
72
+ const rel = filename ? filename.toString().split(path.sep).join('/') : '.';
73
+ if (rel !== '.' && !shouldReportWatchPath(rel))
74
+ return;
75
+ pending.add(rel);
76
+ if (!debounceTimer) {
77
+ debounceTimer = setTimeout(() => {
78
+ debounceTimer = null;
79
+ flush();
80
+ }, WATCH_DEBOUNCE_MS);
81
+ }
82
+ }
83
+ watcher.on('error', () => {
84
+ if (closed)
85
+ return;
86
+ res.write(fsWatchFrame({ watcherDead: true }));
87
+ cleanup();
88
+ res.end();
89
+ });
90
+ // The active project root has no dedicated close/switch event to subscribe
91
+ // to; poll the same getter `handleFsRequest` uses, on the debounce cadence,
92
+ // so a closed or switched project tears this stream down promptly. Push
93
+ // `watcherDead` BEFORE ending so the client gets a deterministic
94
+ // end-of-channel signal instead of depending on how its EventSource
95
+ // classifies the reconnect-then-409 that would follow a bare close.
96
+ liveCheck = setInterval(() => {
97
+ if (closed)
98
+ return;
99
+ if (getProjectRoot() !== watchedRoot) {
100
+ res.write(fsWatchFrame({ watcherDead: true }));
101
+ cleanup();
102
+ res.end();
103
+ }
104
+ }, WATCH_DEBOUNCE_MS);
105
+ req.on('close', cleanup);
106
+ return function endStream() {
107
+ if (closed)
108
+ return;
109
+ cleanup();
110
+ res.end();
111
+ };
112
+ }
113
+ //# sourceMappingURL=fs-watch-sse.js.map
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Minimal JSON responder shared by the workbench COI server and its
3
+ * `/__fs/watch` SSE module (fs-watch-sse.ts). Lives in its own module because
4
+ * workbench-coi-server.ts imports fs-watch-sse.ts — either file owning it
5
+ * would force an import cycle for the other.
6
+ */
7
+ import type http from 'node:http';
8
+ export declare function jsonRes(res: http.ServerResponse, code: number, obj: unknown): void;
9
+ //# sourceMappingURL=http-json.d.ts.map
@@ -0,0 +1,6 @@
1
+ export function jsonRes(res, code, obj) {
2
+ const body = Buffer.from(JSON.stringify(obj));
3
+ res.writeHead(code, { 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': body.length });
4
+ res.end(body);
5
+ }
6
+ //# sourceMappingURL=http-json.js.map
@@ -41,4 +41,15 @@ export declare const SETTINGS_W = 320;
41
41
  */
42
42
  export declare function computeSettingsBounds(contentWidth: number, contentHeight: number, headerHeight: number): Bounds;
43
43
  export declare function computePopoverBounds(contentWidth: number, contentHeight: number, headerHeight: number): Bounds;
44
+ export declare function computeTooltipMaxWidth(contentWidth: number): number;
45
+ /**
46
+ * Position the tooltip overlay relative to its trigger's own bounding rect
47
+ * (both in main-window content coordinates). Prefers directly below the
48
+ * anchor, flips above when there isn't room; always clamped horizontally
49
+ * inside the content area.
50
+ */
51
+ export declare function computeTooltipBounds(anchor: Bounds, contentWidth: number, contentHeight: number, measured: {
52
+ width: number;
53
+ height: number;
54
+ }): Bounds;
44
55
  //# sourceMappingURL=index.d.ts.map
@@ -52,4 +52,27 @@ export function computePopoverBounds(contentWidth, contentHeight, headerHeight)
52
52
  height: contentHeight - headerHeight,
53
53
  };
54
54
  }
55
+ const TOOLTIP_GAP = 6;
56
+ const TOOLTIP_EDGE_MARGIN = 4;
57
+ export function computeTooltipMaxWidth(contentWidth) {
58
+ return Math.max(1, contentWidth - TOOLTIP_EDGE_MARGIN * 2);
59
+ }
60
+ /**
61
+ * Position the tooltip overlay relative to its trigger's own bounding rect
62
+ * (both in main-window content coordinates). Prefers directly below the
63
+ * anchor, flips above when there isn't room; always clamped horizontally
64
+ * inside the content area.
65
+ */
66
+ export function computeTooltipBounds(anchor, contentWidth, contentHeight, measured) {
67
+ const availableWidth = computeTooltipMaxWidth(contentWidth);
68
+ const width = Math.min(availableWidth, Math.max(1, Math.ceil(measured.width)));
69
+ const height = Math.max(1, Math.ceil(measured.height));
70
+ const below = anchor.y + anchor.height + TOOLTIP_GAP;
71
+ const fitsBelow = below + height <= contentHeight;
72
+ const y = fitsBelow ? below : Math.max(0, anchor.y - TOOLTIP_GAP - height);
73
+ const centeredX = anchor.x + anchor.width / 2 - width / 2;
74
+ const maxX = Math.max(TOOLTIP_EDGE_MARGIN, contentWidth - width - TOOLTIP_EDGE_MARGIN);
75
+ const x = Math.min(maxX, Math.max(TOOLTIP_EDGE_MARGIN, centeredX));
76
+ return { x, y, width, height };
77
+ }
55
78
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Which project window a CDP target belongs to.
3
+ *
4
+ * MCP keeps one `simulator` and one `workbench` connection for the whole app,
5
+ * so every connection has to record the window it ACTUALLY reached: one
6
+ * recorded as arrived is left alone, one recorded elsewhere keeps retrying
7
+ * until it lands on the window the user is in.
8
+ */
9
+ /** The per-window facts that decide which window a target belongs to. */
10
+ export interface TargetIdentityFacts {
11
+ activeBridgeId: string | null;
12
+ /**
13
+ * The resolved project path this window opened with. Fixed for the life of
14
+ * the window: a window names its project from the moment it exists, so
15
+ * attribution never has to wait for a compile to record anything.
16
+ */
17
+ projectPath: string;
18
+ getAppId: () => string | null;
19
+ }
20
+ export interface TargetBinding {
21
+ owner: object | null;
22
+ onTarget: boolean;
23
+ }
24
+ /** The value of query `key` in a target URL, or null when it carries none. */
25
+ export declare function targetQuery(url: string | undefined, key: string): string | null;
26
+ /**
27
+ * The window a chosen target belongs to, and whether that is the window MCP
28
+ * means to drive right now.
29
+ *
30
+ * A simulator target that names no window it can be attributed to is treated as
31
+ * the wrong window on purpose: it may well be another project's, and keeping the
32
+ * retries running is what moves the connection onto the active window's render
33
+ * guest as soon as that guest exists. The one target that legitimately names no
34
+ * window is the project list, which is the right workbench surface exactly
35
+ * while no project window is open.
36
+ */
37
+ export declare function connectionOwner(kind: 'simulator' | 'workbench', url: string | undefined, intended: object | null, windows: ReadonlyMap<object, TargetIdentityFacts>): TargetBinding;
38
+ //# sourceMappingURL=connection-owner.d.ts.map
@@ -0,0 +1,79 @@
1
+ /**
2
+ * Which project window a CDP target belongs to.
3
+ *
4
+ * MCP keeps one `simulator` and one `workbench` connection for the whole app,
5
+ * so every connection has to record the window it ACTUALLY reached: one
6
+ * recorded as arrived is left alone, one recorded elsewhere keeps retrying
7
+ * until it lands on the window the user is in.
8
+ */
9
+ /** The value of query `key` in a target URL, or null when it carries none. */
10
+ export function targetQuery(url, key) {
11
+ if (!url)
12
+ return null;
13
+ try {
14
+ return new URL(url).searchParams.get(key);
15
+ }
16
+ catch {
17
+ return null;
18
+ }
19
+ }
20
+ function bind(owner, intended) {
21
+ return { owner, onTarget: owner === intended };
22
+ }
23
+ /** The window whose workbench renderer has this target's project open. */
24
+ function workbenchOwner(url, windows) {
25
+ const path = targetQuery(url, 'path');
26
+ if (!path)
27
+ return null;
28
+ for (const [candidate, facts] of windows) {
29
+ if (facts.projectPath === path)
30
+ return candidate;
31
+ }
32
+ return null;
33
+ }
34
+ /**
35
+ * The window this simulator surface belongs to: a render guest names it through
36
+ * its `bridgeId`, the localhost:7788 shell through the `appId` its route
37
+ * carries. Two windows answering to one appId — what two projects declaring the
38
+ * same appId produce — name no single window, so neither is returned.
39
+ */
40
+ function simulatorOwner(url, windows) {
41
+ const bridgeId = targetQuery(url, 'bridgeId');
42
+ if (bridgeId !== null) {
43
+ for (const [candidate, facts] of windows) {
44
+ if (facts.activeBridgeId === bridgeId)
45
+ return candidate;
46
+ }
47
+ return null;
48
+ }
49
+ const appId = targetQuery(url, 'appId');
50
+ if (appId === null)
51
+ return null;
52
+ let shell = null;
53
+ for (const [candidate, facts] of windows) {
54
+ if (facts.getAppId() !== appId)
55
+ continue;
56
+ if (shell)
57
+ return null;
58
+ shell = candidate;
59
+ }
60
+ return shell;
61
+ }
62
+ /**
63
+ * The window a chosen target belongs to, and whether that is the window MCP
64
+ * means to drive right now.
65
+ *
66
+ * A simulator target that names no window it can be attributed to is treated as
67
+ * the wrong window on purpose: it may well be another project's, and keeping the
68
+ * retries running is what moves the connection onto the active window's render
69
+ * guest as soon as that guest exists. The one target that legitimately names no
70
+ * window is the project list, which is the right workbench surface exactly
71
+ * while no project window is open.
72
+ */
73
+ export function connectionOwner(kind, url, intended, windows) {
74
+ const owner = kind === 'workbench' ? workbenchOwner(url, windows) : simulatorOwner(url, windows);
75
+ if (owner)
76
+ return bind(owner, intended);
77
+ return { owner: null, onTarget: kind === 'workbench' && intended === null };
78
+ }
79
+ //# sourceMappingURL=connection-owner.js.map
@@ -12,6 +12,8 @@
12
12
  * - `./target-manager.ts` dual-target CDP connection + reconnect
13
13
  */
14
14
  export { startMcpServer } from './server.js';
15
+ export type { McpProjectHost, McpProjectTarget } from './tools/project-tools.js';
15
16
  export { getMcpStatus, type McpRuntimeStatus } from './status.js';
16
- export { setNativeHost, setActiveBridgeId, setNativeOverviewProvider, getNativeOverviewProvider, } from './target-manager.js';
17
+ export { registerMcpWindow, setActiveMcpWindowResolver, noteActiveBridgeId, noteActiveMcpWindowChanged, activeMcpWindow, getNativeOverviewProvider, type McpWindowFacts, } from './target-manager.js';
18
+ export { createOpenForMcp, createTargetForMcp, type McpOpenedProject } from './opened-project.js';
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -13,7 +13,8 @@
13
13
  */
14
14
  export { startMcpServer } from './server.js';
15
15
  export { getMcpStatus } from './status.js';
16
- // Native-host: let app.ts point the `simulator` CDP target at the active
17
- // render-host guest as the visible page changes.
18
- export { setNativeHost, setActiveBridgeId, setNativeOverviewProvider, getNativeOverviewProvider, } from './target-manager.js';
16
+ // Every project window owns its own native-host state and its own renderer, so
17
+ // each registers its facts and MCP resolves the active window on every use.
18
+ export { registerMcpWindow, setActiveMcpWindowResolver, noteActiveBridgeId, noteActiveMcpWindowChanged, activeMcpWindow, getNativeOverviewProvider, } from './target-manager.js';
19
+ export { createOpenForMcp, createTargetForMcp } from './opened-project.js';
19
20
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Resolving the project window an MCP call is aimed at.
3
+ *
4
+ * A project lives in its own window and every window keeps its own
5
+ * session-status store, so `project_open` can only report the truth if it
6
+ * awaits the store of the window it just opened. Reading the app-active
7
+ * window's store instead times out on a first open (that window never compiles
8
+ * this project) and can return another project's rebuild as this one's result.
9
+ * The other tools have no window of their own to point at, so they take the
10
+ * active one — once per call, as a whole.
11
+ */
12
+ import type { SessionStatusStore } from '../workspace/session-status-store.js';
13
+ import type { McpProjectTarget } from './tools/project-tools.js';
14
+ /** The status surface `project_open` reports from: one window's own state. */
15
+ export interface McpProjectStatusSource {
16
+ workspace: {
17
+ getProjectPath(): string;
18
+ hasActiveSession(): boolean;
19
+ };
20
+ sessionStatus: SessionStatusStore;
21
+ }
22
+ export interface McpOpenedProject extends McpProjectStatusSource {
23
+ /**
24
+ * Generation guard for awaiting this open's compile. A window built by the
25
+ * open reports 0, so its empty store's initial 'idle' is not mistaken for a
26
+ * finished compile. A window that was already showing the project reports
27
+ * `undefined`: focusing it triggers no compile, so its current settled state
28
+ * IS the answer, and waiting for a newer one would hang.
29
+ */
30
+ afterGeneration?: number;
31
+ }
32
+ interface OpenedWindow<W> {
33
+ window: W;
34
+ context: McpProjectStatusSource;
35
+ }
36
+ export interface OpenForMcpDeps<W> {
37
+ /** Open the project in its own window (or focus the one already showing it). */
38
+ open: (project: {
39
+ name?: string;
40
+ path: string;
41
+ }) => Promise<W>;
42
+ /** Every live project window, so the opened one can be matched by identity. */
43
+ list: () => OpenedWindow<W>[];
44
+ }
45
+ /**
46
+ * Build the `requestOpenInUi` the MCP project tools drive: open the project
47
+ * and hand back the window it landed in, together with the generation guard
48
+ * for awaiting that window's compile.
49
+ */
50
+ export declare function createOpenForMcp<W>(deps: OpenForMcpDeps<W>): (project: {
51
+ name: string;
52
+ path: string;
53
+ }) => Promise<McpOpenedProject>;
54
+ /**
55
+ * The window-context fields an MCP project call reads. Structural, so this
56
+ * module stays independent of the workbench context that satisfies it.
57
+ */
58
+ export interface McpTargetContext {
59
+ workspace: McpProjectTarget['workspace'];
60
+ sessionStatus: McpProjectTarget['sessionStatus'];
61
+ compileLogBuffer: McpProjectTarget['compileLogs'];
62
+ }
63
+ export interface TargetForMcpDeps<W, C extends McpTargetContext> {
64
+ /** Every live project window, so the active one can be matched by context. */
65
+ list: () => {
66
+ window: W;
67
+ context: C;
68
+ }[];
69
+ /** The context of the project window the user is working in. */
70
+ activeContext: () => C;
71
+ /** Take one window down the way a user-driven close does. */
72
+ close: (window: W) => void;
73
+ }
74
+ /**
75
+ * Build the `currentProject` the MCP project tools drive: resolve the project
76
+ * window the user is working in NOW and hand back every surface a tool call
77
+ * needs, all bound to that one window.
78
+ *
79
+ * Tool calls yield — `closeProject()` awaits a teardown, `waitForSettled()`
80
+ * awaits a compile — and the user can focus another project meanwhile.
81
+ * Re-resolving afterwards reports one project's compile as another's, or
82
+ * closes the window they just moved to while the window whose session was torn
83
+ * down stays on screen, empty. The active context can also be the project
84
+ * list, which owns no project window: closing then does nothing.
85
+ */
86
+ export declare function createTargetForMcp<W, C extends McpTargetContext>(deps: TargetForMcpDeps<W, C>): () => McpProjectTarget;
87
+ export {};
88
+ //# sourceMappingURL=opened-project.d.ts.map
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Resolving the project window an MCP call is aimed at.
3
+ *
4
+ * A project lives in its own window and every window keeps its own
5
+ * session-status store, so `project_open` can only report the truth if it
6
+ * awaits the store of the window it just opened. Reading the app-active
7
+ * window's store instead times out on a first open (that window never compiles
8
+ * this project) and can return another project's rebuild as this one's result.
9
+ * The other tools have no window of their own to point at, so they take the
10
+ * active one — once per call, as a whole.
11
+ */
12
+ /**
13
+ * Build the `requestOpenInUi` the MCP project tools drive: open the project
14
+ * and hand back the window it landed in, together with the generation guard
15
+ * for awaiting that window's compile.
16
+ */
17
+ export function createOpenForMcp(deps) {
18
+ return async (project) => {
19
+ // Sampled BEFORE the open: a window that already exists carries a previous
20
+ // compile's history, and only a state recorded after this point can be
21
+ // this open's result. Keyed by context identity, so a window rebuilt
22
+ // during the open is correctly seen as new.
23
+ const before = new Map(deps.list().map((w) => [w.context, w.context.sessionStatus.get().generation]));
24
+ const window = await deps.open(project);
25
+ const opened = deps.list().find((w) => w.window === window);
26
+ if (!opened)
27
+ throw new Error(`the window opened for ${project.path} is already gone`);
28
+ return {
29
+ workspace: opened.context.workspace,
30
+ sessionStatus: opened.context.sessionStatus,
31
+ afterGeneration: before.has(opened.context) ? undefined : 0,
32
+ };
33
+ };
34
+ }
35
+ /**
36
+ * Build the `currentProject` the MCP project tools drive: resolve the project
37
+ * window the user is working in NOW and hand back every surface a tool call
38
+ * needs, all bound to that one window.
39
+ *
40
+ * Tool calls yield — `closeProject()` awaits a teardown, `waitForSettled()`
41
+ * awaits a compile — and the user can focus another project meanwhile.
42
+ * Re-resolving afterwards reports one project's compile as another's, or
43
+ * closes the window they just moved to while the window whose session was torn
44
+ * down stays on screen, empty. The active context can also be the project
45
+ * list, which owns no project window: closing then does nothing.
46
+ */
47
+ export function createTargetForMcp(deps) {
48
+ return () => {
49
+ const context = deps.activeContext();
50
+ const owner = deps.list().find((w) => w.context === context);
51
+ return {
52
+ workspace: context.workspace,
53
+ sessionStatus: context.sessionStatus,
54
+ compileLogs: context.compileLogBuffer,
55
+ closeWindow: () => { if (owner)
56
+ deps.close(owner.window); },
57
+ };
58
+ };
59
+ }
60
+ //# sourceMappingURL=opened-project.js.map
@@ -7,5 +7,6 @@
7
7
  * only wires up transports and lifecycle.
8
8
  */
9
9
  import { type Disposable } from '@dimina-kit/electron-deck/main';
10
- export declare function startMcpServer(resolvedCdpPort: number, mcpPort: number): Disposable;
10
+ import { type McpProjectHost } from './tools/project-tools.js';
11
+ export declare function startMcpServer(resolvedCdpPort: number, mcpPort: number, projectHost: McpProjectHost): Disposable;
11
12
  //# sourceMappingURL=server.d.ts.map