skybridge 0.0.0-dev.fd77b0f → 0.0.0-dev.fda2b44

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 (442) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -0
  3. package/bin/run.js +5 -0
  4. package/dist/cli/detect-port.d.ts +18 -0
  5. package/dist/cli/detect-port.js +61 -0
  6. package/dist/cli/detect-port.js.map +1 -0
  7. package/dist/cli/header.d.ts +4 -0
  8. package/dist/cli/header.js +6 -0
  9. package/dist/cli/header.js.map +1 -0
  10. package/dist/cli/run-command.d.ts +2 -0
  11. package/dist/cli/run-command.js +43 -0
  12. package/dist/cli/run-command.js.map +1 -0
  13. package/dist/cli/telemetry.d.ts +7 -0
  14. package/dist/cli/telemetry.js +123 -0
  15. package/dist/cli/telemetry.js.map +1 -0
  16. package/dist/cli/tunnel-control-server.d.ts +9 -0
  17. package/dist/cli/tunnel-control-server.js +31 -0
  18. package/dist/cli/tunnel-control-server.js.map +1 -0
  19. package/dist/cli/tunnel-control-server.test.js +39 -0
  20. package/dist/cli/tunnel-control-server.test.js.map +1 -0
  21. package/dist/cli/tunnel-handler.d.ts +3 -0
  22. package/dist/cli/tunnel-handler.js +48 -0
  23. package/dist/cli/tunnel-handler.js.map +1 -0
  24. package/dist/cli/tunnel-handler.test.js +105 -0
  25. package/dist/cli/tunnel-handler.test.js.map +1 -0
  26. package/dist/cli/tunnel.d.ts +57 -0
  27. package/dist/cli/tunnel.js +154 -0
  28. package/dist/cli/tunnel.js.map +1 -0
  29. package/dist/cli/tunnel.test.js +190 -0
  30. package/dist/cli/tunnel.test.js.map +1 -0
  31. package/dist/cli/types.d.ts +5 -0
  32. package/dist/{src/web/bridges → cli}/types.js.map +1 -1
  33. package/dist/cli/use-execute-steps.d.ts +11 -0
  34. package/dist/cli/use-execute-steps.js +36 -0
  35. package/dist/cli/use-execute-steps.js.map +1 -0
  36. package/dist/cli/use-messages.d.ts +3 -0
  37. package/dist/cli/use-messages.js +11 -0
  38. package/dist/cli/use-messages.js.map +1 -0
  39. package/dist/cli/use-nodemon.d.ts +2 -0
  40. package/dist/cli/use-nodemon.js +64 -0
  41. package/dist/cli/use-nodemon.js.map +1 -0
  42. package/dist/cli/use-open-browser.d.ts +1 -0
  43. package/dist/cli/use-open-browser.js +44 -0
  44. package/dist/cli/use-open-browser.js.map +1 -0
  45. package/dist/cli/use-tunnel.d.ts +14 -0
  46. package/dist/cli/use-tunnel.js +131 -0
  47. package/dist/cli/use-tunnel.js.map +1 -0
  48. package/dist/cli/use-typescript-check.d.ts +9 -0
  49. package/dist/cli/use-typescript-check.js +94 -0
  50. package/dist/cli/use-typescript-check.js.map +1 -0
  51. package/dist/commands/build.d.ts +9 -0
  52. package/dist/commands/build.js +102 -0
  53. package/dist/commands/build.js.map +1 -0
  54. package/dist/commands/dev.d.ts +12 -0
  55. package/dist/commands/dev.js +80 -0
  56. package/dist/commands/dev.js.map +1 -0
  57. package/dist/commands/start.d.ts +9 -0
  58. package/dist/commands/start.js +49 -0
  59. package/dist/commands/start.js.map +1 -0
  60. package/dist/commands/telemetry/disable.d.ts +5 -0
  61. package/dist/commands/telemetry/disable.js +14 -0
  62. package/dist/commands/telemetry/disable.js.map +1 -0
  63. package/dist/commands/telemetry/enable.d.ts +5 -0
  64. package/dist/commands/telemetry/enable.js +14 -0
  65. package/dist/commands/telemetry/enable.js.map +1 -0
  66. package/dist/commands/telemetry/status.d.ts +5 -0
  67. package/dist/commands/telemetry/status.js +14 -0
  68. package/dist/commands/telemetry/status.js.map +1 -0
  69. package/dist/server/asset-base-url-transform-plugin.d.ts +10 -0
  70. package/dist/server/asset-base-url-transform-plugin.js +33 -0
  71. package/dist/server/asset-base-url-transform-plugin.js.map +1 -0
  72. package/dist/server/asset-base-url-transform-plugin.test.js +84 -0
  73. package/dist/server/asset-base-url-transform-plugin.test.js.map +1 -0
  74. package/dist/server/content-helpers.d.ts +27 -0
  75. package/dist/server/content-helpers.js +46 -0
  76. package/dist/server/content-helpers.js.map +1 -0
  77. package/dist/server/content-helpers.test.js +70 -0
  78. package/dist/server/content-helpers.test.js.map +1 -0
  79. package/dist/server/express.d.ts +11 -0
  80. package/dist/server/express.js +101 -0
  81. package/dist/server/express.js.map +1 -0
  82. package/dist/server/express.test.js +430 -0
  83. package/dist/server/express.test.js.map +1 -0
  84. package/dist/server/index.d.ts +6 -0
  85. package/dist/server/index.js +4 -0
  86. package/dist/server/index.js.map +1 -0
  87. package/dist/{src/server → server}/inferUtilityTypes.d.ts +6 -6
  88. package/dist/server/inferUtilityTypes.js.map +1 -0
  89. package/dist/server/metric.d.ts +14 -0
  90. package/dist/server/metric.js +62 -0
  91. package/dist/server/metric.js.map +1 -0
  92. package/dist/server/middleware.d.ts +124 -0
  93. package/dist/server/middleware.js +93 -0
  94. package/dist/server/middleware.js.map +1 -0
  95. package/dist/server/middleware.test-d.js +75 -0
  96. package/dist/server/middleware.test-d.js.map +1 -0
  97. package/dist/server/middleware.test.js +493 -0
  98. package/dist/server/middleware.test.js.map +1 -0
  99. package/dist/server/server.d.ts +196 -0
  100. package/dist/server/server.js +468 -0
  101. package/dist/server/server.js.map +1 -0
  102. package/dist/{src/server → server}/templateHelper.d.ts +5 -7
  103. package/dist/server/templateHelper.js +11 -0
  104. package/dist/server/templateHelper.js.map +1 -0
  105. package/dist/server/templates.generated.d.ts +4 -0
  106. package/dist/server/templates.generated.js +47 -0
  107. package/dist/server/templates.generated.js.map +1 -0
  108. package/dist/server/tunnel-proxy-router.d.ts +7 -0
  109. package/dist/server/tunnel-proxy-router.js +110 -0
  110. package/dist/server/tunnel-proxy-router.js.map +1 -0
  111. package/dist/server/tunnel-proxy-router.test.js +229 -0
  112. package/dist/server/tunnel-proxy-router.test.js.map +1 -0
  113. package/dist/server/viewsDevServer.d.ts +14 -0
  114. package/dist/server/viewsDevServer.js +45 -0
  115. package/dist/server/viewsDevServer.js.map +1 -0
  116. package/dist/{src/test → test}/utils.d.ts +13 -21
  117. package/dist/{src/test → test}/utils.js +42 -37
  118. package/dist/test/utils.js.map +1 -0
  119. package/dist/test/view.test.js +523 -0
  120. package/dist/test/view.test.js.map +1 -0
  121. package/dist/version.d.ts +1 -0
  122. package/dist/version.js +3 -0
  123. package/dist/version.js.map +1 -0
  124. package/dist/web/bridges/apps-sdk/adaptor.d.ts +24 -0
  125. package/dist/web/bridges/apps-sdk/adaptor.js +93 -0
  126. package/dist/web/bridges/apps-sdk/adaptor.js.map +1 -0
  127. package/dist/web/bridges/apps-sdk/bridge.d.ts +10 -0
  128. package/dist/{src/web/bridges/apps-sdk-bridge.js → web/bridges/apps-sdk/bridge.js} +2 -2
  129. package/dist/web/bridges/apps-sdk/bridge.js.map +1 -0
  130. package/dist/web/bridges/apps-sdk/index.d.ts +5 -0
  131. package/dist/web/bridges/apps-sdk/index.js +5 -0
  132. package/dist/web/bridges/apps-sdk/index.js.map +1 -0
  133. package/dist/web/bridges/apps-sdk/types.d.ts +126 -0
  134. package/dist/{src/web → web/bridges/apps-sdk}/types.js +0 -1
  135. package/dist/web/bridges/apps-sdk/types.js.map +1 -0
  136. package/dist/web/bridges/apps-sdk/use-apps-sdk-context.d.ts +2 -0
  137. package/dist/{src/web/bridges/hooks/use-apps-sdk-bridge.js → web/bridges/apps-sdk/use-apps-sdk-context.js} +3 -3
  138. package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js.map +1 -0
  139. package/dist/web/bridges/get-adaptor.d.ts +2 -0
  140. package/dist/web/bridges/get-adaptor.js +8 -0
  141. package/dist/web/bridges/get-adaptor.js.map +1 -0
  142. package/dist/web/bridges/index.d.ts +5 -0
  143. package/dist/web/bridges/index.js +6 -0
  144. package/dist/web/bridges/index.js.map +1 -0
  145. package/dist/web/bridges/mcp-app/adaptor.d.ts +48 -0
  146. package/dist/web/bridges/mcp-app/adaptor.js +268 -0
  147. package/dist/web/bridges/mcp-app/adaptor.js.map +1 -0
  148. package/dist/web/bridges/mcp-app/bridge.d.ts +26 -0
  149. package/dist/web/bridges/mcp-app/bridge.js +102 -0
  150. package/dist/web/bridges/mcp-app/bridge.js.map +1 -0
  151. package/dist/web/bridges/mcp-app/index.d.ts +4 -0
  152. package/dist/web/bridges/mcp-app/index.js +4 -0
  153. package/dist/web/bridges/mcp-app/index.js.map +1 -0
  154. package/dist/web/bridges/mcp-app/types.d.ts +8 -0
  155. package/dist/web/bridges/mcp-app/types.js +2 -0
  156. package/dist/web/bridges/mcp-app/types.js.map +1 -0
  157. package/dist/web/bridges/mcp-app/use-mcp-app-context.d.ts +7 -0
  158. package/dist/web/bridges/mcp-app/use-mcp-app-context.js +7 -0
  159. package/dist/web/bridges/mcp-app/use-mcp-app-context.js.map +1 -0
  160. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js +26 -0
  161. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js.map +1 -0
  162. package/dist/web/bridges/types.d.ts +109 -0
  163. package/dist/web/bridges/types.js +2 -0
  164. package/dist/web/bridges/types.js.map +1 -0
  165. package/dist/web/bridges/use-host-context.d.ts +2 -0
  166. package/dist/web/bridges/use-host-context.js +8 -0
  167. package/dist/web/bridges/use-host-context.js.map +1 -0
  168. package/dist/web/components/modal-provider.d.ts +4 -0
  169. package/dist/web/components/modal-provider.js +45 -0
  170. package/dist/web/components/modal-provider.js.map +1 -0
  171. package/dist/web/create-store.js +38 -0
  172. package/dist/web/create-store.js.map +1 -0
  173. package/dist/web/create-store.test.js +129 -0
  174. package/dist/web/create-store.test.js.map +1 -0
  175. package/dist/{src/web → web}/data-llm.d.ts +1 -1
  176. package/dist/{src/web → web}/data-llm.js +7 -5
  177. package/dist/web/data-llm.js.map +1 -0
  178. package/dist/web/data-llm.test.js +142 -0
  179. package/dist/web/data-llm.test.js.map +1 -0
  180. package/dist/{src/web → web}/generate-helpers.d.ts +22 -19
  181. package/dist/{src/web → web}/generate-helpers.js +20 -18
  182. package/dist/web/generate-helpers.js.map +1 -0
  183. package/dist/{src/web → web}/generate-helpers.test-d.js +26 -26
  184. package/dist/web/generate-helpers.test-d.js.map +1 -0
  185. package/dist/web/generate-helpers.test.js.map +1 -0
  186. package/dist/{src/web → web}/helpers/state.d.ts +2 -2
  187. package/dist/web/helpers/state.js +45 -0
  188. package/dist/web/helpers/state.js.map +1 -0
  189. package/dist/{src/web → web}/helpers/state.test.js +9 -9
  190. package/dist/web/helpers/state.test.js.map +1 -0
  191. package/dist/{src/web → web}/hooks/index.d.ts +3 -3
  192. package/dist/{src/web → web}/hooks/index.js +2 -2
  193. package/dist/web/hooks/index.js.map +1 -0
  194. package/dist/{src/web → web}/hooks/test/utils.d.ts +8 -2
  195. package/dist/web/hooks/test/utils.js +64 -0
  196. package/dist/web/hooks/test/utils.js.map +1 -0
  197. package/dist/{src/web → web}/hooks/use-call-tool.d.ts +2 -1
  198. package/dist/{src/web → web}/hooks/use-call-tool.js +2 -2
  199. package/dist/web/hooks/use-call-tool.js.map +1 -0
  200. package/dist/web/hooks/use-call-tool.test-d.js.map +1 -0
  201. package/dist/{src/web → web}/hooks/use-call-tool.test.js +0 -1
  202. package/dist/web/hooks/use-call-tool.test.js.map +1 -0
  203. package/dist/web/hooks/use-display-mode.d.ts +4 -0
  204. package/dist/web/hooks/use-display-mode.js +9 -0
  205. package/dist/web/hooks/use-display-mode.js.map +1 -0
  206. package/dist/web/hooks/use-display-mode.test-d.js +8 -0
  207. package/dist/web/hooks/use-display-mode.test-d.js.map +1 -0
  208. package/dist/web/hooks/use-display-mode.test.js.map +1 -0
  209. package/dist/web/hooks/use-files.d.ts +7 -0
  210. package/dist/web/hooks/use-files.js +10 -0
  211. package/dist/web/hooks/use-files.js.map +1 -0
  212. package/dist/web/hooks/use-files.test.d.ts +1 -0
  213. package/dist/web/hooks/use-files.test.js +54 -0
  214. package/dist/web/hooks/use-files.test.js.map +1 -0
  215. package/dist/{src/web → web}/hooks/use-layout.d.ts +2 -2
  216. package/dist/{src/web → web}/hooks/use-layout.js +4 -4
  217. package/dist/web/hooks/use-layout.js.map +1 -0
  218. package/dist/web/hooks/use-layout.test.d.ts +1 -0
  219. package/dist/{src/web → web}/hooks/use-layout.test.js +7 -6
  220. package/dist/web/hooks/use-layout.test.js.map +1 -0
  221. package/dist/web/hooks/use-open-external.d.ts +3 -0
  222. package/dist/web/hooks/use-open-external.js +8 -0
  223. package/dist/web/hooks/use-open-external.js.map +1 -0
  224. package/dist/web/hooks/use-open-external.test.d.ts +1 -0
  225. package/dist/{src/web → web}/hooks/use-open-external.test.js +27 -12
  226. package/dist/web/hooks/use-open-external.test.js.map +1 -0
  227. package/dist/web/hooks/use-request-modal.d.ts +9 -0
  228. package/dist/web/hooks/use-request-modal.js +16 -0
  229. package/dist/web/hooks/use-request-modal.js.map +1 -0
  230. package/dist/web/hooks/use-request-modal.test.d.ts +1 -0
  231. package/dist/{src/web → web}/hooks/use-request-modal.test.js +5 -1
  232. package/dist/web/hooks/use-request-modal.test.js.map +1 -0
  233. package/dist/{src/web → web}/hooks/use-send-follow-up-message.js +2 -2
  234. package/dist/web/hooks/use-send-follow-up-message.js.map +1 -0
  235. package/dist/web/hooks/use-set-open-in-app-url.d.ts +1 -0
  236. package/dist/web/hooks/use-set-open-in-app-url.js +8 -0
  237. package/dist/web/hooks/use-set-open-in-app-url.js.map +1 -0
  238. package/dist/web/hooks/use-set-open-in-app-url.test.d.ts +1 -0
  239. package/dist/web/hooks/use-set-open-in-app-url.test.js +43 -0
  240. package/dist/web/hooks/use-set-open-in-app-url.test.js.map +1 -0
  241. package/dist/{src/web → web}/hooks/use-tool-info.js +4 -4
  242. package/dist/web/hooks/use-tool-info.js.map +1 -0
  243. package/dist/web/hooks/use-tool-info.test-d.d.ts +1 -0
  244. package/dist/web/hooks/use-tool-info.test-d.js.map +1 -0
  245. package/dist/web/hooks/use-tool-info.test.d.ts +1 -0
  246. package/dist/{src/web → web}/hooks/use-tool-info.test.js +5 -5
  247. package/dist/web/hooks/use-tool-info.test.js.map +1 -0
  248. package/dist/{src/web → web}/hooks/use-user.d.ts +1 -1
  249. package/dist/web/hooks/use-user.js +35 -0
  250. package/dist/web/hooks/use-user.js.map +1 -0
  251. package/dist/web/hooks/use-user.test.d.ts +1 -0
  252. package/dist/{src/web → web}/hooks/use-user.test.js +33 -4
  253. package/dist/web/hooks/use-user.test.js.map +1 -0
  254. package/dist/web/hooks/use-view-state.d.ts +4 -0
  255. package/dist/web/hooks/use-view-state.js +32 -0
  256. package/dist/web/hooks/use-view-state.js.map +1 -0
  257. package/dist/web/hooks/use-view-state.test.d.ts +1 -0
  258. package/dist/web/hooks/use-view-state.test.js +177 -0
  259. package/dist/web/hooks/use-view-state.test.js.map +1 -0
  260. package/dist/{src/web → web}/index.d.ts +1 -2
  261. package/dist/{src/web → web}/index.js +1 -2
  262. package/dist/web/index.js.map +1 -0
  263. package/dist/web/mount-view.d.ts +1 -0
  264. package/dist/{src/web/mount-widget.js → web/mount-view.js} +11 -3
  265. package/dist/web/mount-view.js.map +1 -0
  266. package/dist/web/plugin/data-llm.test.d.ts +1 -0
  267. package/dist/web/plugin/data-llm.test.js.map +1 -0
  268. package/dist/web/plugin/plugin.d.ts +5 -0
  269. package/dist/web/plugin/plugin.js +156 -0
  270. package/dist/web/plugin/plugin.js.map +1 -0
  271. package/dist/web/plugin/scan-views.d.ts +16 -0
  272. package/dist/web/plugin/scan-views.js +88 -0
  273. package/dist/web/plugin/scan-views.js.map +1 -0
  274. package/dist/web/plugin/scan-views.test.d.ts +1 -0
  275. package/dist/web/plugin/scan-views.test.js +99 -0
  276. package/dist/web/plugin/scan-views.test.js.map +1 -0
  277. package/dist/{src/web → web}/plugin/transform-data-llm.js +1 -1
  278. package/dist/web/plugin/transform-data-llm.js.map +1 -0
  279. package/dist/web/plugin/transform-data-llm.test.d.ts +1 -0
  280. package/dist/web/plugin/transform-data-llm.test.js.map +1 -0
  281. package/dist/web/plugin/validate-view.d.ts +1 -0
  282. package/dist/web/plugin/validate-view.js +9 -0
  283. package/dist/web/plugin/validate-view.js.map +1 -0
  284. package/dist/web/plugin/validate-view.test.d.ts +1 -0
  285. package/dist/web/plugin/validate-view.test.js +24 -0
  286. package/dist/web/plugin/validate-view.test.js.map +1 -0
  287. package/dist/{src/web → web}/proxy.js +0 -1
  288. package/dist/web/proxy.js.map +1 -0
  289. package/dist/web/types.d.ts +16 -0
  290. package/dist/web/types.js +2 -0
  291. package/dist/web/types.js.map +1 -0
  292. package/package.json +74 -39
  293. package/tsconfig.base.json +33 -0
  294. package/dist/src/server/devtoolsStaticServer.d.ts +0 -15
  295. package/dist/src/server/devtoolsStaticServer.js +0 -38
  296. package/dist/src/server/devtoolsStaticServer.js.map +0 -1
  297. package/dist/src/server/index.d.ts +0 -5
  298. package/dist/src/server/index.js +0 -4
  299. package/dist/src/server/index.js.map +0 -1
  300. package/dist/src/server/inferUtilityTypes.js.map +0 -1
  301. package/dist/src/server/server.d.ts +0 -74
  302. package/dist/src/server/server.js +0 -82
  303. package/dist/src/server/server.js.map +0 -1
  304. package/dist/src/server/templateHelper.js +0 -30
  305. package/dist/src/server/templateHelper.js.map +0 -1
  306. package/dist/src/server/templates/development.hbs +0 -13
  307. package/dist/src/server/templates/production.hbs +0 -7
  308. package/dist/src/server/widgetsDevServer.d.ts +0 -12
  309. package/dist/src/server/widgetsDevServer.js +0 -38
  310. package/dist/src/server/widgetsDevServer.js.map +0 -1
  311. package/dist/src/test/utils.js.map +0 -1
  312. package/dist/src/test/widget.test.js +0 -146
  313. package/dist/src/test/widget.test.js.map +0 -1
  314. package/dist/src/web/bridges/adaptors/apps-sdk-adaptor.d.ts +0 -13
  315. package/dist/src/web/bridges/adaptors/apps-sdk-adaptor.js +0 -33
  316. package/dist/src/web/bridges/adaptors/apps-sdk-adaptor.js.map +0 -1
  317. package/dist/src/web/bridges/adaptors/mcp-app-adaptor.d.ts +0 -16
  318. package/dist/src/web/bridges/adaptors/mcp-app-adaptor.js +0 -115
  319. package/dist/src/web/bridges/adaptors/mcp-app-adaptor.js.map +0 -1
  320. package/dist/src/web/bridges/apps-sdk-bridge.d.ts +0 -10
  321. package/dist/src/web/bridges/apps-sdk-bridge.js.map +0 -1
  322. package/dist/src/web/bridges/hooks/use-adaptor.d.ts +0 -2
  323. package/dist/src/web/bridges/hooks/use-adaptor.js +0 -8
  324. package/dist/src/web/bridges/hooks/use-adaptor.js.map +0 -1
  325. package/dist/src/web/bridges/hooks/use-apps-sdk-bridge.d.ts +0 -2
  326. package/dist/src/web/bridges/hooks/use-apps-sdk-bridge.js.map +0 -1
  327. package/dist/src/web/bridges/hooks/use-bridge.d.ts +0 -2
  328. package/dist/src/web/bridges/hooks/use-bridge.js +0 -8
  329. package/dist/src/web/bridges/hooks/use-bridge.js.map +0 -1
  330. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.d.ts +0 -5
  331. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.js +0 -7
  332. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.js.map +0 -1
  333. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.test.js +0 -41
  334. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.test.js.map +0 -1
  335. package/dist/src/web/bridges/index.d.ts +0 -4
  336. package/dist/src/web/bridges/index.js +0 -5
  337. package/dist/src/web/bridges/index.js.map +0 -1
  338. package/dist/src/web/bridges/mcp-app-bridge.d.ts +0 -38
  339. package/dist/src/web/bridges/mcp-app-bridge.js +0 -162
  340. package/dist/src/web/bridges/mcp-app-bridge.js.map +0 -1
  341. package/dist/src/web/bridges/types.d.ts +0 -57
  342. package/dist/src/web/create-store.js +0 -25
  343. package/dist/src/web/create-store.js.map +0 -1
  344. package/dist/src/web/create-store.test.js +0 -70
  345. package/dist/src/web/create-store.test.js.map +0 -1
  346. package/dist/src/web/data-llm.js.map +0 -1
  347. package/dist/src/web/data-llm.test.js +0 -76
  348. package/dist/src/web/data-llm.test.js.map +0 -1
  349. package/dist/src/web/generate-helpers.js.map +0 -1
  350. package/dist/src/web/generate-helpers.test-d.js.map +0 -1
  351. package/dist/src/web/generate-helpers.test.js.map +0 -1
  352. package/dist/src/web/helpers/state.js +0 -40
  353. package/dist/src/web/helpers/state.js.map +0 -1
  354. package/dist/src/web/helpers/state.test.js.map +0 -1
  355. package/dist/src/web/hooks/index.js.map +0 -1
  356. package/dist/src/web/hooks/test/utils.js +0 -40
  357. package/dist/src/web/hooks/test/utils.js.map +0 -1
  358. package/dist/src/web/hooks/use-call-tool.js.map +0 -1
  359. package/dist/src/web/hooks/use-call-tool.test-d.js.map +0 -1
  360. package/dist/src/web/hooks/use-call-tool.test.js.map +0 -1
  361. package/dist/src/web/hooks/use-display-mode.d.ts +0 -4
  362. package/dist/src/web/hooks/use-display-mode.js +0 -10
  363. package/dist/src/web/hooks/use-display-mode.js.map +0 -1
  364. package/dist/src/web/hooks/use-display-mode.test.js.map +0 -1
  365. package/dist/src/web/hooks/use-files.d.ts +0 -10
  366. package/dist/src/web/hooks/use-files.js +0 -7
  367. package/dist/src/web/hooks/use-files.js.map +0 -1
  368. package/dist/src/web/hooks/use-files.test.js +0 -29
  369. package/dist/src/web/hooks/use-files.test.js.map +0 -1
  370. package/dist/src/web/hooks/use-layout.js.map +0 -1
  371. package/dist/src/web/hooks/use-layout.test.js.map +0 -1
  372. package/dist/src/web/hooks/use-open-external.d.ts +0 -1
  373. package/dist/src/web/hooks/use-open-external.js +0 -8
  374. package/dist/src/web/hooks/use-open-external.js.map +0 -1
  375. package/dist/src/web/hooks/use-open-external.test.js.map +0 -1
  376. package/dist/src/web/hooks/use-openai-global.d.ts +0 -3
  377. package/dist/src/web/hooks/use-openai-global.js +0 -6
  378. package/dist/src/web/hooks/use-openai-global.js.map +0 -1
  379. package/dist/src/web/hooks/use-request-modal.d.ts +0 -9
  380. package/dist/src/web/hooks/use-request-modal.js +0 -14
  381. package/dist/src/web/hooks/use-request-modal.js.map +0 -1
  382. package/dist/src/web/hooks/use-request-modal.test.js.map +0 -1
  383. package/dist/src/web/hooks/use-send-follow-up-message.js.map +0 -1
  384. package/dist/src/web/hooks/use-tool-info.js.map +0 -1
  385. package/dist/src/web/hooks/use-tool-info.test-d.js.map +0 -1
  386. package/dist/src/web/hooks/use-tool-info.test.js.map +0 -1
  387. package/dist/src/web/hooks/use-user.js +0 -19
  388. package/dist/src/web/hooks/use-user.js.map +0 -1
  389. package/dist/src/web/hooks/use-user.test.js.map +0 -1
  390. package/dist/src/web/hooks/use-widget-state.d.ts +0 -4
  391. package/dist/src/web/hooks/use-widget-state.js +0 -32
  392. package/dist/src/web/hooks/use-widget-state.js.map +0 -1
  393. package/dist/src/web/hooks/use-widget-state.test.js +0 -61
  394. package/dist/src/web/hooks/use-widget-state.test.js.map +0 -1
  395. package/dist/src/web/index.js.map +0 -1
  396. package/dist/src/web/mount-widget.d.ts +0 -1
  397. package/dist/src/web/mount-widget.js.map +0 -1
  398. package/dist/src/web/plugin/data-llm.test.js.map +0 -1
  399. package/dist/src/web/plugin/plugin.d.ts +0 -2
  400. package/dist/src/web/plugin/plugin.js +0 -39
  401. package/dist/src/web/plugin/plugin.js.map +0 -1
  402. package/dist/src/web/plugin/transform-data-llm.js.map +0 -1
  403. package/dist/src/web/plugin/transform-data-llm.test.js.map +0 -1
  404. package/dist/src/web/proxy.js.map +0 -1
  405. package/dist/src/web/types.d.ts +0 -149
  406. package/dist/src/web/types.js.map +0 -1
  407. package/dist/vitest.config.d.ts +0 -2
  408. package/dist/vitest.config.js +0 -8
  409. package/dist/vitest.config.js.map +0 -1
  410. /package/dist/{src/test/widget.test.d.ts → cli/tunnel-control-server.test.d.ts} +0 -0
  411. /package/dist/{src/web/bridges/hooks/use-mcp-app-bridge.test.d.ts → cli/tunnel-handler.test.d.ts} +0 -0
  412. /package/dist/{src/web/create-store.test.d.ts → cli/tunnel.test.d.ts} +0 -0
  413. /package/dist/{src/web/bridges → cli}/types.js +0 -0
  414. /package/dist/{src/web/data-llm.test.d.ts → server/asset-base-url-transform-plugin.test.d.ts} +0 -0
  415. /package/dist/{src/web/generate-helpers.test-d.d.ts → server/content-helpers.test.d.ts} +0 -0
  416. /package/dist/{src/web/generate-helpers.test.d.ts → server/express.test.d.ts} +0 -0
  417. /package/dist/{src/server → server}/inferUtilityTypes.js +0 -0
  418. /package/dist/{src/web/helpers/state.test.d.ts → server/middleware.test-d.d.ts} +0 -0
  419. /package/dist/{src/web/hooks/use-call-tool.test-d.d.ts → server/middleware.test.d.ts} +0 -0
  420. /package/dist/{src/web/hooks/use-call-tool.test.d.ts → server/tunnel-proxy-router.test.d.ts} +0 -0
  421. /package/dist/{src/web/hooks/use-display-mode.test.d.ts → test/view.test.d.ts} +0 -0
  422. /package/dist/{src/web/hooks/use-files.test.d.ts → web/bridges/mcp-app/use-mcp-app-context.test.d.ts} +0 -0
  423. /package/dist/{src/web → web}/create-store.d.ts +0 -0
  424. /package/dist/{src/web/hooks/use-layout.test.d.ts → web/create-store.test.d.ts} +0 -0
  425. /package/dist/{src/web/plugin → web}/data-llm.test.d.ts +0 -0
  426. /package/dist/{src/web/hooks/use-open-external.test.d.ts → web/generate-helpers.test-d.d.ts} +0 -0
  427. /package/dist/{src/web/hooks/use-request-modal.test.d.ts → web/generate-helpers.test.d.ts} +0 -0
  428. /package/dist/{src/web → web}/generate-helpers.test.js +0 -0
  429. /package/dist/{src/web/hooks/use-tool-info.test-d.d.ts → web/helpers/state.test.d.ts} +0 -0
  430. /package/dist/{src/web/hooks/use-tool-info.test.d.ts → web/hooks/use-call-tool.test-d.d.ts} +0 -0
  431. /package/dist/{src/web → web}/hooks/use-call-tool.test-d.js +0 -0
  432. /package/dist/{src/web/hooks/use-user.test.d.ts → web/hooks/use-call-tool.test.d.ts} +0 -0
  433. /package/dist/{src/web/hooks/use-widget-state.test.d.ts → web/hooks/use-display-mode.test-d.d.ts} +0 -0
  434. /package/dist/{src/web/plugin/transform-data-llm.test.d.ts → web/hooks/use-display-mode.test.d.ts} +0 -0
  435. /package/dist/{src/web → web}/hooks/use-display-mode.test.js +0 -0
  436. /package/dist/{src/web → web}/hooks/use-send-follow-up-message.d.ts +0 -0
  437. /package/dist/{src/web → web}/hooks/use-tool-info.d.ts +0 -0
  438. /package/dist/{src/web → web}/hooks/use-tool-info.test-d.js +0 -0
  439. /package/dist/{src/web → web}/plugin/data-llm.test.js +0 -0
  440. /package/dist/{src/web → web}/plugin/transform-data-llm.d.ts +0 -0
  441. /package/dist/{src/web → web}/plugin/transform-data-llm.test.js +0 -0
  442. /package/dist/{src/web → web}/proxy.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server/server.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,15 @@
1
- import type { WidgetHostType } from "./server.js";
1
+ import type { ViewHostType } from "./server.js";
2
2
  declare class TemplateHelper {
3
- private templateCache;
4
- private loadTemplate;
5
3
  renderProduction(data: {
6
- hostType: WidgetHostType;
4
+ hostType: ViewHostType;
7
5
  serverUrl: string;
8
- widgetFile: string;
6
+ viewFile: string;
9
7
  styleFile: string;
10
8
  }): string;
11
9
  renderDevelopment(data: {
12
- hostType: WidgetHostType;
10
+ hostType: ViewHostType;
13
11
  serverUrl: string;
14
- widgetName: string;
12
+ viewName: string;
15
13
  }): string;
16
14
  }
17
15
  export declare const templateHelper: TemplateHelper;
@@ -0,0 +1,11 @@
1
+ import { developmentTemplate, productionTemplate, } from "./templates.generated.js";
2
+ class TemplateHelper {
3
+ renderProduction(data) {
4
+ return productionTemplate(data);
5
+ }
6
+ renderDevelopment(data) {
7
+ return developmentTemplate(data);
8
+ }
9
+ }
10
+ export const templateHelper = new TemplateHelper();
11
+ //# sourceMappingURL=templateHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templateHelper.js","sourceRoot":"","sources":["../../src/server/templateHelper.ts"],"names":[],"mappings":"AACA,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC;AAElC,MAAM,cAAc;IAClB,gBAAgB,CAAC,IAKhB;QACC,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,iBAAiB,CAAC,IAIjB;QACC,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** @type {HandlebarsTemplateDelegate} */
2
+ export const developmentTemplate: HandlebarsTemplateDelegate;
3
+ /** @type {HandlebarsTemplateDelegate} */
4
+ export const productionTemplate: HandlebarsTemplateDelegate;
@@ -0,0 +1,47 @@
1
+ // AUTO-GENERATED by scripts/precompile-templates.mjs. Do not edit.
2
+ import Handlebars from "handlebars/runtime.js";
3
+ /** @type {HandlebarsTemplateDelegate} */
4
+ export const developmentTemplate = Handlebars.template({ "compiler": [8, ">= 4.3.0"], "main": function (container, depth0, helpers, partials, data) {
5
+ var helper, alias1 = depth0 != null ? depth0 : (container.nullContext || {}), alias2 = container.hooks.helperMissing, alias3 = "function", alias4 = container.escapeExpression, lookupProperty = container.lookupProperty || function (parent, propertyName) {
6
+ if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
7
+ return parent[propertyName];
8
+ }
9
+ return undefined;
10
+ };
11
+ return "<script type=\"module\">window.skybridge = { hostType: \""
12
+ + alias4(((helper = (helper = lookupProperty(helpers, "hostType") || (depth0 != null ? lookupProperty(depth0, "hostType") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "hostType", "hash": {}, "data": data, "loc": { "start": { "line": 1, "column": 54 }, "end": { "line": 1, "column": 66 } } }) : helper)))
13
+ + "\", serverUrl: \""
14
+ + alias4(((helper = (helper = lookupProperty(helpers, "serverUrl") || (depth0 != null ? lookupProperty(depth0, "serverUrl") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "serverUrl", "hash": {}, "data": data, "loc": { "start": { "line": 1, "column": 81 }, "end": { "line": 1, "column": 94 } } }) : helper)))
15
+ + "\" };</script>\n<script type=\"module\">\n import { injectIntoGlobalHook } from \""
16
+ + alias4(((helper = (helper = lookupProperty(helpers, "serverUrl") || (depth0 != null ? lookupProperty(depth0, "serverUrl") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "serverUrl", "hash": {}, "data": data, "loc": { "start": { "line": 3, "column": 40 }, "end": { "line": 3, "column": 53 } } }) : helper)))
17
+ + "/assets/@react-refresh\";\n injectIntoGlobalHook(window); window.$RefreshReg$ = () => {};\n window.$RefreshSig$ = () => (type) => type;\n window.__vite_plugin_react_preamble_installed__ = true;\n</script>\n<script type=\"module\" src=\""
18
+ + alias4(((helper = (helper = lookupProperty(helpers, "serverUrl") || (depth0 != null ? lookupProperty(depth0, "serverUrl") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "serverUrl", "hash": {}, "data": data, "loc": { "start": { "line": 8, "column": 27 }, "end": { "line": 8, "column": 40 } } }) : helper)))
19
+ + "/@vite/client\"></script>\n<div id=\"root\"></div>\n<script type=\"module\" id=\"dev-view-entry\">\n import('"
20
+ + alias4(((helper = (helper = lookupProperty(helpers, "serverUrl") || (depth0 != null ? lookupProperty(depth0, "serverUrl") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "serverUrl", "hash": {}, "data": data, "loc": { "start": { "line": 11, "column": 10 }, "end": { "line": 11, "column": 23 } } }) : helper)))
21
+ + "/_skybridge/view/"
22
+ + alias4(((helper = (helper = lookupProperty(helpers, "viewName") || (depth0 != null ? lookupProperty(depth0, "viewName") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "viewName", "hash": {}, "data": data, "loc": { "start": { "line": 11, "column": 40 }, "end": { "line": 11, "column": 52 } } }) : helper)))
23
+ + "');\n</script>";
24
+ }, "useData": true });
25
+ /** @type {HandlebarsTemplateDelegate} */
26
+ export const productionTemplate = Handlebars.template({ "compiler": [8, ">= 4.3.0"], "main": function (container, depth0, helpers, partials, data) {
27
+ var helper, alias1 = depth0 != null ? depth0 : (container.nullContext || {}), alias2 = container.hooks.helperMissing, alias3 = "function", alias4 = container.escapeExpression, lookupProperty = container.lookupProperty || function (parent, propertyName) {
28
+ if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {
29
+ return parent[propertyName];
30
+ }
31
+ return undefined;
32
+ };
33
+ return "<script type=\"module\">window.skybridge = { hostType: \""
34
+ + alias4(((helper = (helper = lookupProperty(helpers, "hostType") || (depth0 != null ? lookupProperty(depth0, "hostType") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "hostType", "hash": {}, "data": data, "loc": { "start": { "line": 1, "column": 54 }, "end": { "line": 1, "column": 66 } } }) : helper)))
35
+ + "\", serverUrl: \""
36
+ + alias4(((helper = (helper = lookupProperty(helpers, "serverUrl") || (depth0 != null ? lookupProperty(depth0, "serverUrl") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "serverUrl", "hash": {}, "data": data, "loc": { "start": { "line": 1, "column": 81 }, "end": { "line": 1, "column": 94 } } }) : helper)))
37
+ + "\" };</script>\n<div id=\"root\"></div>\n<script type=\"module\">\n import('"
38
+ + alias4(((helper = (helper = lookupProperty(helpers, "serverUrl") || (depth0 != null ? lookupProperty(depth0, "serverUrl") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "serverUrl", "hash": {}, "data": data, "loc": { "start": { "line": 4, "column": 10 }, "end": { "line": 4, "column": 23 } } }) : helper)))
39
+ + "/assets/"
40
+ + alias4(((helper = (helper = lookupProperty(helpers, "viewFile") || (depth0 != null ? lookupProperty(depth0, "viewFile") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "viewFile", "hash": {}, "data": data, "loc": { "start": { "line": 4, "column": 31 }, "end": { "line": 4, "column": 43 } } }) : helper)))
41
+ + "');\n</script>\n<link rel=\"stylesheet\" crossorigin href=\""
42
+ + alias4(((helper = (helper = lookupProperty(helpers, "serverUrl") || (depth0 != null ? lookupProperty(depth0, "serverUrl") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "serverUrl", "hash": {}, "data": data, "loc": { "start": { "line": 6, "column": 41 }, "end": { "line": 6, "column": 54 } } }) : helper)))
43
+ + "/assets/"
44
+ + alias4(((helper = (helper = lookupProperty(helpers, "styleFile") || (depth0 != null ? lookupProperty(depth0, "styleFile") : depth0)) != null ? helper : alias2), (typeof helper === alias3 ? helper.call(alias1, { "name": "styleFile", "hash": {}, "data": data, "loc": { "start": { "line": 6, "column": 62 }, "end": { "line": 6, "column": 75 } } }) : helper)))
45
+ + "\" />";
46
+ }, "useData": true });
47
+ //# sourceMappingURL=templates.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.generated.js","sourceRoot":"","sources":["../../src/server/templates.generated.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type Router } from "express";
2
+ /**
3
+ * Builds an Express router that forwards `/__skybridge/tunnel` (POST/DELETE)
4
+ * and `/__skybridge/tunnel/events` (GET, SSE) to the cli's loopback control
5
+ * server. The `/__skybridge/` prefix avoids colliding with user-defined routes.
6
+ */
7
+ export declare function createTunnelProxyRouter(controlPort: number): Router;
@@ -0,0 +1,110 @@
1
+ import express, {} from "express";
2
+ /**
3
+ * Builds an Express router that forwards `/__skybridge/tunnel` (POST/DELETE)
4
+ * and `/__skybridge/tunnel/events` (GET, SSE) to the cli's loopback control
5
+ * server. The `/__skybridge/` prefix avoids colliding with user-defined routes.
6
+ */
7
+ export function createTunnelProxyRouter(controlPort) {
8
+ const router = express.Router();
9
+ const upstream = `http://127.0.0.1:${controlPort}/__skybridge/tunnel`;
10
+ const forwardJson = async (method, res) => {
11
+ try {
12
+ const upstreamRes = await fetch(upstream, { method });
13
+ const body = await upstreamRes.text();
14
+ res
15
+ .status(upstreamRes.status)
16
+ .type(upstreamRes.headers.get("content-type") ?? "application/json")
17
+ .send(body);
18
+ }
19
+ catch (err) {
20
+ res.status(502).json({
21
+ status: "error",
22
+ message: err instanceof Error ? err.message : "Tunnel control unavailable",
23
+ });
24
+ }
25
+ };
26
+ router.post("/__skybridge/tunnel", (_req, res) => {
27
+ void forwardJson("POST", res);
28
+ });
29
+ router.delete("/__skybridge/tunnel", (_req, res) => {
30
+ void forwardJson("DELETE", res);
31
+ });
32
+ router.get("/__skybridge/tunnel/events", async (req, res) => {
33
+ // Abort the upstream fetch when the client disconnects (or when the dev
34
+ // server shuts down and destroys the response).
35
+ const controller = new AbortController();
36
+ const onClose = () => controller.abort();
37
+ req.on("close", onClose);
38
+ let upstreamRes;
39
+ try {
40
+ upstreamRes = await fetch(`${upstream}/events`, {
41
+ signal: controller.signal,
42
+ });
43
+ }
44
+ catch (err) {
45
+ req.off("close", onClose);
46
+ if (!res.headersSent) {
47
+ res.status(502).json({
48
+ status: "error",
49
+ message: err instanceof Error ? err.message : "Tunnel control unavailable",
50
+ });
51
+ }
52
+ return;
53
+ }
54
+ const upstreamBody = upstreamRes.body;
55
+ if (!upstreamRes.ok || !upstreamBody) {
56
+ req.off("close", onClose);
57
+ res.status(upstreamRes.status).end();
58
+ return;
59
+ }
60
+ res.setHeader("Content-Type", upstreamRes.headers.get("content-type") ?? "text/event-stream");
61
+ res.setHeader("Cache-Control", "no-cache, no-transform");
62
+ res.setHeader("Connection", "keep-alive");
63
+ res.flushHeaders?.();
64
+ const reader = upstreamBody.getReader();
65
+ try {
66
+ while (true) {
67
+ const { value, done } = await reader.read();
68
+ if (done) {
69
+ break;
70
+ }
71
+ if (!res.write(value)) {
72
+ // Race "drain" against "close": Node does not emit "drain" on a
73
+ // destroyed socket, so without the close listener this hangs
74
+ // forever when the client disconnects under backpressure, leaking
75
+ // the upstream fetch and TunnelManager listeners.
76
+ await new Promise((resolve) => {
77
+ const onDrain = () => {
78
+ res.off("close", onClose);
79
+ resolve();
80
+ };
81
+ const onClose = () => {
82
+ res.off("drain", onDrain);
83
+ resolve();
84
+ };
85
+ res.once("drain", onDrain);
86
+ res.once("close", onClose);
87
+ });
88
+ }
89
+ }
90
+ }
91
+ catch {
92
+ // upstream aborted (typically because the client disconnected) —
93
+ // fall through to end()
94
+ }
95
+ finally {
96
+ req.off("close", onClose);
97
+ // Release the reader so the upstream stream's lifecycle isn't held by
98
+ // a lingering lock on the clean-done path.
99
+ try {
100
+ await reader.cancel();
101
+ }
102
+ catch {
103
+ // ignore — the reader may already be closed
104
+ }
105
+ res.end();
106
+ }
107
+ });
108
+ return router;
109
+ }
110
+ //# sourceMappingURL=tunnel-proxy-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel-proxy-router.js","sourceRoot":"","sources":["../../src/server/tunnel-proxy-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,229 @@
1
+ import { EventEmitter } from "node:events";
2
+ import http from "node:http";
3
+ import { Readable } from "node:stream";
4
+ import express from "express";
5
+ import { afterEach, describe, expect, it, vi } from "vitest";
6
+ import { startTunnelControlServer } from "../cli/tunnel-control-server.js";
7
+ import { createTunnelProxyRouter } from "./tunnel-proxy-router.js";
8
+ function makeFakeChild() {
9
+ const child = new EventEmitter();
10
+ child.stdout = new Readable({ read() { } });
11
+ child.stderr = new Readable({ read() { } });
12
+ child.kill = vi.fn(() => true);
13
+ return child;
14
+ }
15
+ async function listen(handler) {
16
+ const server = http.createServer(handler);
17
+ await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));
18
+ const port = server.address().port;
19
+ return { port, server };
20
+ }
21
+ const cleanups = [];
22
+ afterEach(async () => {
23
+ while (cleanups.length > 0) {
24
+ const cleanup = cleanups.pop();
25
+ if (cleanup) {
26
+ await cleanup();
27
+ }
28
+ }
29
+ });
30
+ async function startProxy(controlPort) {
31
+ const app = express();
32
+ app.use(createTunnelProxyRouter(controlPort));
33
+ const { port, server } = await listen(app);
34
+ cleanups.push(() => new Promise((resolve) => {
35
+ server.closeAllConnections?.();
36
+ server.close(() => resolve());
37
+ }));
38
+ return { port, server };
39
+ }
40
+ async function startControl() {
41
+ const child = makeFakeChild();
42
+ const control = await startTunnelControlServer(() => 3000, {
43
+ spawn: () => child,
44
+ });
45
+ cleanups.push(() => control.close());
46
+ return { control, child };
47
+ }
48
+ describe("createTunnelProxyRouter", () => {
49
+ describe("POST /__skybridge/tunnel", () => {
50
+ it("forwards to upstream and returns the upstream JSON", async () => {
51
+ const { control } = await startControl();
52
+ const { port } = await startProxy(control.port);
53
+ const res = await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel`, {
54
+ method: "POST",
55
+ });
56
+ expect(res.status).toBe(200);
57
+ expect(res.headers.get("content-type")).toMatch(/application\/json/);
58
+ expect(await res.json()).toEqual({
59
+ status: "starting",
60
+ message: "Starting tunnel…",
61
+ });
62
+ expect(control.manager.getState().status).toBe("starting");
63
+ });
64
+ it("returns 502 when upstream is unavailable", async () => {
65
+ // Pick a port nothing is listening on by starting+stopping a server.
66
+ const probe = http.createServer();
67
+ await new Promise((resolve) => probe.listen(0, "127.0.0.1", resolve));
68
+ const deadPort = probe.address().port;
69
+ await new Promise((resolve) => probe.close(() => resolve()));
70
+ const { port } = await startProxy(deadPort);
71
+ const res = await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel`, {
72
+ method: "POST",
73
+ });
74
+ expect(res.status).toBe(502);
75
+ const body = (await res.json());
76
+ expect(body.status).toBe("error");
77
+ expect(typeof body.message).toBe("string");
78
+ });
79
+ });
80
+ describe("DELETE /__skybridge/tunnel", () => {
81
+ it("forwards to upstream and returns the upstream JSON", async () => {
82
+ const { control, child } = await startControl();
83
+ const { port } = await startProxy(control.port);
84
+ // First start the tunnel so DELETE has something to stop.
85
+ await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel`, {
86
+ method: "POST",
87
+ });
88
+ const res = await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel`, {
89
+ method: "DELETE",
90
+ });
91
+ expect(res.status).toBe(200);
92
+ expect(await res.json()).toEqual({ status: "idle" });
93
+ expect(child.kill).toHaveBeenCalled();
94
+ });
95
+ it("returns 502 when upstream is unavailable", async () => {
96
+ const probe = http.createServer();
97
+ await new Promise((resolve) => probe.listen(0, "127.0.0.1", resolve));
98
+ const deadPort = probe.address().port;
99
+ await new Promise((resolve) => probe.close(() => resolve()));
100
+ const { port } = await startProxy(deadPort);
101
+ const res = await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel`, {
102
+ method: "DELETE",
103
+ });
104
+ expect(res.status).toBe(502);
105
+ });
106
+ });
107
+ describe("GET /__skybridge/tunnel/events", () => {
108
+ it("pipes the upstream SSE stream through to the client", async () => {
109
+ const { control, child } = await startControl();
110
+ const { port } = await startProxy(control.port);
111
+ // Get the manager into a known state so the initial SSE frame is
112
+ // deterministic.
113
+ await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel`, {
114
+ method: "POST",
115
+ });
116
+ child.stdout.emit("data", Buffer.from("Forwarding: https://abc.tunnel.example -> http://localhost:3000\n"));
117
+ const res = await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel/events`);
118
+ expect(res.status).toBe(200);
119
+ expect(res.headers.get("content-type")).toMatch(/text\/event-stream/);
120
+ expect(res.headers.get("cache-control")).toMatch(/no-cache/);
121
+ const body = res.body;
122
+ if (!body) {
123
+ throw new Error("expected response body");
124
+ }
125
+ const reader = body.getReader();
126
+ const { value } = await reader.read();
127
+ const chunk = new TextDecoder().decode(value);
128
+ expect(chunk).toContain("event: state");
129
+ expect(chunk).toContain('"status":"connected"');
130
+ expect(chunk).toContain('"url":"https://abc.tunnel.example"');
131
+ await reader.cancel();
132
+ });
133
+ it("forwards subsequent state changes through the SSE stream", async () => {
134
+ const { control, child } = await startControl();
135
+ const { port } = await startProxy(control.port);
136
+ await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel`, {
137
+ method: "POST",
138
+ });
139
+ const res = await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel/events`);
140
+ const body = res.body;
141
+ if (!body) {
142
+ throw new Error("expected response body");
143
+ }
144
+ const reader = body.getReader();
145
+ const decoder = new TextDecoder();
146
+ // Drain the initial "starting" frame.
147
+ const first = await reader.read();
148
+ expect(decoder.decode(first.value)).toContain('"status":"starting"');
149
+ // Now drive a state change on the manager and read the next frame.
150
+ child.stdout.emit("data", Buffer.from("Forwarding: https://abc.tunnel.example -> http://localhost:3000\n"));
151
+ let combined = "";
152
+ // Reads may chunk arbitrarily, so accumulate until we see the connected
153
+ // event or hit a sane cap.
154
+ for (let i = 0; i < 5; i++) {
155
+ const { value, done } = await reader.read();
156
+ if (done) {
157
+ break;
158
+ }
159
+ combined += decoder.decode(value);
160
+ if (combined.includes('"status":"connected"')) {
161
+ break;
162
+ }
163
+ }
164
+ expect(combined).toContain('"status":"connected"');
165
+ expect(combined).toContain('"url":"https://abc.tunnel.example"');
166
+ await reader.cancel();
167
+ });
168
+ it("returns 502 when upstream is unavailable", async () => {
169
+ const probe = http.createServer();
170
+ await new Promise((resolve) => probe.listen(0, "127.0.0.1", resolve));
171
+ const deadPort = probe.address().port;
172
+ await new Promise((resolve) => probe.close(() => resolve()));
173
+ const { port } = await startProxy(deadPort);
174
+ const res = await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel/events`);
175
+ expect(res.status).toBe(502);
176
+ const body = (await res.json());
177
+ expect(body.status).toBe("error");
178
+ });
179
+ it("aborts the upstream connection when the proxy server is closed mid-stream", async () => {
180
+ const { control } = await startControl();
181
+ const { port, server } = await startProxy(control.port);
182
+ await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel`, {
183
+ method: "POST",
184
+ });
185
+ // Snapshot the manager's listener counts before the SSE subscription so
186
+ // we can verify the proxy disconnected from upstream after shutdown.
187
+ const baseStateListeners = control.manager.listenerCount("state");
188
+ const baseActivityListeners = control.manager.listenerCount("activity");
189
+ const res = await fetch(`http://127.0.0.1:${port}/__skybridge/tunnel/events`);
190
+ const body = res.body;
191
+ if (!body) {
192
+ throw new Error("expected response body");
193
+ }
194
+ const reader = body.getReader();
195
+ // Drain the first frame to confirm the stream is live and the upstream
196
+ // SSE handler has subscribed to the manager.
197
+ await reader.read();
198
+ expect(control.manager.listenerCount("state")).toBe(baseStateListeners + 1);
199
+ // Close the proxy server, destroying in-flight responses. The proxy's
200
+ // req.on("close", ...) should fire and abort the upstream fetch.
201
+ server.closeAllConnections?.();
202
+ await new Promise((resolve) => server.close(() => resolve()));
203
+ // The client-side stream is dead — drain or fail, either is acceptable.
204
+ try {
205
+ while (true) {
206
+ const { done } = await reader.read();
207
+ if (done) {
208
+ break;
209
+ }
210
+ }
211
+ }
212
+ catch {
213
+ // expected: socket terminated when proxy server was destroyed
214
+ }
215
+ // Wait briefly for the upstream's req.on("close") to fire, then assert
216
+ // the manager listeners were detached. This is the load-bearing
217
+ // verification: it proves the proxy's AbortController propagated and
218
+ // upstream cleaned up its SSE subscription.
219
+ const start = Date.now();
220
+ while (control.manager.listenerCount("state") > baseStateListeners &&
221
+ Date.now() - start < 1000) {
222
+ await new Promise((r) => setTimeout(r, 20));
223
+ }
224
+ expect(control.manager.listenerCount("state")).toBe(baseStateListeners);
225
+ expect(control.manager.listenerCount("activity")).toBe(baseActivityListeners);
226
+ });
227
+ });
228
+ });
229
+ //# sourceMappingURL=tunnel-proxy-router.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel-proxy-router.test.js","sourceRoot":"","sources":["../../src/server/tunnel-proxy-router.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type http from "node:http";
2
+ import { type Router } from "express";
3
+ /**
4
+ * Vite dev-server middleware for view assets.
5
+ *
6
+ * MUST be mounted at the Express app root so Vite can intercept
7
+ * `/@vite/client`, `/@react-refresh`, and `/_skybridge/view/...` imports:
8
+ *
9
+ * const app = express();
10
+ * if (env.NODE_ENV !== "production") {
11
+ * app.use(await viewsDevServer(httpServer));
12
+ * }
13
+ */
14
+ export declare const viewsDevServer: (httpServer: http.Server) => Promise<Router>;
@@ -0,0 +1,45 @@
1
+ import path from "node:path";
2
+ import cors from "cors";
3
+ import express, {} from "express";
4
+ import { assetBaseUrlTransformPlugin } from "./asset-base-url-transform-plugin.js";
5
+ /**
6
+ * Vite dev-server middleware for view assets.
7
+ *
8
+ * MUST be mounted at the Express app root so Vite can intercept
9
+ * `/@vite/client`, `/@react-refresh`, and `/_skybridge/view/...` imports:
10
+ *
11
+ * const app = express();
12
+ * if (env.NODE_ENV !== "production") {
13
+ * app.use(await viewsDevServer(httpServer));
14
+ * }
15
+ */
16
+ export const viewsDevServer = async (httpServer) => {
17
+ const router = express.Router();
18
+ const { createServer, loadConfigFromFile } = await import("vite");
19
+ const root = process.cwd();
20
+ const configFile = path.join(root, "vite.config.ts");
21
+ const configResult = await loadConfigFromFile({ command: "serve", mode: "development" }, configFile, root);
22
+ const { build, preview, plugins: userPlugins = [], ...devConfig } = configResult?.config || {};
23
+ const vite = await createServer({
24
+ ...devConfig,
25
+ // Pass `false` so Vite skips re-resolving a config file — we already
26
+ // loaded and spread the user's config above.
27
+ configFile: false,
28
+ appType: "custom",
29
+ server: {
30
+ allowedHosts: true,
31
+ middlewareMode: true,
32
+ hmr: {
33
+ server: httpServer,
34
+ },
35
+ },
36
+ root,
37
+ // optimizeDeps is set by the skybridge Vite plugin (entries + include)
38
+ // so it can derive the view glob from `viewsDir`.
39
+ plugins: [...userPlugins, assetBaseUrlTransformPlugin()],
40
+ });
41
+ router.use(cors());
42
+ router.use("/", vite.middlewares);
43
+ return router;
44
+ };
45
+ //# sourceMappingURL=viewsDevServer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewsDevServer.js","sourceRoot":"","sources":["../../src/server/viewsDevServer.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,OAAO,EAAE,EAAe,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AAEnF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EACjC,UAAuB,EACN,EAAE;IACnB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAEhC,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IAElE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG,MAAM,kBAAkB,CAC3C,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,EACzC,UAAU,EACV,IAAI,CACL,CAAC;IAEF,MAAM,EACJ,KAAK,EACL,OAAO,EACP,OAAO,EAAE,WAAW,GAAG,EAAE,EACzB,GAAG,SAAS,EACb,GAAG,YAAY,EAAE,MAAM,IAAI,EAAE,CAAC;IAE/B,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC;QAC9B,GAAG,SAAS;QACZ,qEAAqE;QACrE,6CAA6C;QAC7C,UAAU,EAAE,KAAK;QACjB,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE;YACN,YAAY,EAAE,IAAI;YAClB,cAAc,EAAE,IAAI;YACpB,GAAG,EAAE;gBACH,MAAM,EAAE,UAAU;aACnB;SACF;QACD,IAAI;QACJ,uEAAuE;QACvE,kDAAkD;QAClD,OAAO,EAAE,CAAC,GAAG,WAAW,EAAE,2BAA2B,EAAE,CAAC;KACzD,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IACnB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}