skybridge 0.0.0-dev.c367eac → 0.0.0-dev.c3abc84

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 (370) hide show
  1. package/README.md +149 -0
  2. package/bin/run.js +5 -0
  3. package/dist/cli/detect-port.d.ts +18 -0
  4. package/dist/cli/detect-port.js +61 -0
  5. package/dist/cli/detect-port.js.map +1 -0
  6. package/dist/cli/header.d.ts +4 -0
  7. package/dist/cli/header.js +6 -0
  8. package/dist/cli/header.js.map +1 -0
  9. package/dist/cli/run-command.d.ts +2 -0
  10. package/dist/cli/run-command.js +43 -0
  11. package/dist/cli/run-command.js.map +1 -0
  12. package/dist/cli/telemetry.d.ts +7 -0
  13. package/dist/cli/telemetry.js +123 -0
  14. package/dist/cli/telemetry.js.map +1 -0
  15. package/dist/cli/use-execute-steps.d.ts +11 -0
  16. package/dist/cli/use-execute-steps.js +36 -0
  17. package/dist/cli/use-execute-steps.js.map +1 -0
  18. package/dist/cli/use-nodemon.d.ts +7 -0
  19. package/dist/cli/use-nodemon.js +76 -0
  20. package/dist/cli/use-nodemon.js.map +1 -0
  21. package/dist/cli/use-typescript-check.d.ts +8 -0
  22. package/dist/cli/use-typescript-check.js +59 -0
  23. package/dist/cli/use-typescript-check.js.map +1 -0
  24. package/dist/commands/build.d.ts +9 -0
  25. package/dist/commands/build.js +46 -0
  26. package/dist/commands/build.js.map +1 -0
  27. package/dist/commands/dev.d.ts +10 -0
  28. package/dist/commands/dev.js +42 -0
  29. package/dist/commands/dev.js.map +1 -0
  30. package/dist/commands/start.d.ts +9 -0
  31. package/dist/commands/start.js +52 -0
  32. package/dist/commands/start.js.map +1 -0
  33. package/dist/commands/telemetry/disable.d.ts +5 -0
  34. package/dist/commands/telemetry/disable.js +14 -0
  35. package/dist/commands/telemetry/disable.js.map +1 -0
  36. package/dist/commands/telemetry/enable.d.ts +5 -0
  37. package/dist/commands/telemetry/enable.js +14 -0
  38. package/dist/commands/telemetry/enable.js.map +1 -0
  39. package/dist/commands/telemetry/status.d.ts +5 -0
  40. package/dist/commands/telemetry/status.js +14 -0
  41. package/dist/commands/telemetry/status.js.map +1 -0
  42. package/dist/server/asset-base-url-transform-plugin.d.ts +11 -0
  43. package/dist/server/asset-base-url-transform-plugin.js +34 -0
  44. package/dist/server/asset-base-url-transform-plugin.js.map +1 -0
  45. package/dist/server/asset-base-url-transform-plugin.test.js +56 -0
  46. package/dist/server/asset-base-url-transform-plugin.test.js.map +1 -0
  47. package/dist/server/const.d.ts +1 -0
  48. package/dist/server/const.js +2 -0
  49. package/dist/server/const.js.map +1 -0
  50. package/dist/server/express.d.ts +9 -0
  51. package/dist/server/express.js +72 -0
  52. package/dist/server/express.js.map +1 -0
  53. package/dist/server/express.test.js +74 -0
  54. package/dist/server/express.test.js.map +1 -0
  55. package/dist/{src/server → server}/index.d.ts +1 -1
  56. package/dist/{src/server → server}/index.js +0 -1
  57. package/dist/server/index.js.map +1 -0
  58. package/dist/server/inferUtilityTypes.js.map +1 -0
  59. package/dist/server/middleware.d.ts +96 -0
  60. package/dist/server/middleware.js +93 -0
  61. package/dist/server/middleware.js.map +1 -0
  62. package/dist/server/middleware.test-d.js +52 -0
  63. package/dist/server/middleware.test-d.js.map +1 -0
  64. package/dist/server/middleware.test.js +383 -0
  65. package/dist/server/middleware.test.js.map +1 -0
  66. package/dist/{src/server → server}/server.d.ts +66 -1
  67. package/dist/server/server.js +259 -0
  68. package/dist/server/server.js.map +1 -0
  69. package/dist/{src/server → server}/templateHelper.d.ts +1 -0
  70. package/dist/server/templateHelper.js.map +1 -0
  71. package/dist/server/templates/development.hbs +67 -0
  72. package/dist/{src/server → server}/templates/production.hbs +1 -2
  73. package/dist/{src/server → server}/widgetsDevServer.d.ts +2 -2
  74. package/dist/server/widgetsDevServer.js +63 -0
  75. package/dist/server/widgetsDevServer.js.map +1 -0
  76. package/dist/test/utils.js.map +1 -0
  77. package/dist/{src/test → test}/widget.test.js +129 -14
  78. package/dist/test/widget.test.js.map +1 -0
  79. package/dist/web/bridges/apps-sdk/adaptor.d.ts +22 -0
  80. package/dist/web/bridges/apps-sdk/adaptor.js +75 -0
  81. package/dist/web/bridges/apps-sdk/adaptor.js.map +1 -0
  82. package/dist/web/bridges/apps-sdk/bridge.d.ts +10 -0
  83. package/dist/{src/web/bridges/apps-sdk-bridge.js → web/bridges/apps-sdk/bridge.js} +2 -2
  84. package/dist/web/bridges/apps-sdk/bridge.js.map +1 -0
  85. package/dist/web/bridges/apps-sdk/index.d.ts +5 -0
  86. package/dist/web/bridges/apps-sdk/index.js +5 -0
  87. package/dist/web/bridges/apps-sdk/index.js.map +1 -0
  88. package/dist/{src/web → web/bridges/apps-sdk}/types.d.ts +32 -60
  89. package/dist/{src/web → web/bridges/apps-sdk}/types.js +0 -1
  90. package/dist/web/bridges/apps-sdk/types.js.map +1 -0
  91. package/dist/web/bridges/apps-sdk/use-apps-sdk-context.d.ts +2 -0
  92. package/dist/{src/web/bridges/hooks/use-apps-sdk-bridge.js → web/bridges/apps-sdk/use-apps-sdk-context.js} +3 -3
  93. package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js.map +1 -0
  94. package/dist/web/bridges/get-adaptor.d.ts +2 -0
  95. package/dist/web/bridges/get-adaptor.js +8 -0
  96. package/dist/web/bridges/get-adaptor.js.map +1 -0
  97. package/dist/web/bridges/index.d.ts +5 -0
  98. package/dist/web/bridges/index.js +6 -0
  99. package/dist/web/bridges/index.js.map +1 -0
  100. package/dist/web/bridges/mcp-app/adaptor.d.ts +36 -0
  101. package/dist/web/bridges/mcp-app/adaptor.js +190 -0
  102. package/dist/web/bridges/mcp-app/adaptor.js.map +1 -0
  103. package/dist/web/bridges/mcp-app/bridge.d.ts +43 -0
  104. package/dist/web/bridges/mcp-app/bridge.js +260 -0
  105. package/dist/web/bridges/mcp-app/bridge.js.map +1 -0
  106. package/dist/web/bridges/mcp-app/index.d.ts +4 -0
  107. package/dist/web/bridges/mcp-app/index.js +4 -0
  108. package/dist/web/bridges/mcp-app/index.js.map +1 -0
  109. package/dist/web/bridges/mcp-app/types.d.ts +8 -0
  110. package/dist/web/bridges/mcp-app/types.js.map +1 -0
  111. package/dist/web/bridges/mcp-app/use-mcp-app-context.d.ts +5 -0
  112. package/dist/{src/web/bridges/hooks/use-mcp-app-bridge.js → web/bridges/mcp-app/use-mcp-app-context.js} +3 -3
  113. package/dist/web/bridges/mcp-app/use-mcp-app-context.js.map +1 -0
  114. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js +66 -0
  115. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js.map +1 -0
  116. package/dist/web/bridges/types.d.ts +102 -0
  117. package/dist/web/bridges/types.js +2 -0
  118. package/dist/{src/web → web}/bridges/types.js.map +1 -1
  119. package/dist/web/bridges/use-host-context.d.ts +2 -0
  120. package/dist/web/bridges/use-host-context.js +8 -0
  121. package/dist/web/bridges/use-host-context.js.map +1 -0
  122. package/dist/web/components/modal-provider.d.ts +4 -0
  123. package/dist/web/components/modal-provider.js +47 -0
  124. package/dist/web/components/modal-provider.js.map +1 -0
  125. package/dist/{src/web → web}/create-store.js +6 -7
  126. package/dist/web/create-store.js.map +1 -0
  127. package/dist/web/create-store.test.js +129 -0
  128. package/dist/web/create-store.test.js.map +1 -0
  129. package/dist/{src/web → web}/data-llm.js +5 -3
  130. package/dist/web/data-llm.js.map +1 -0
  131. package/dist/web/data-llm.test.js +141 -0
  132. package/dist/web/data-llm.test.js.map +1 -0
  133. package/dist/{src/web → web}/generate-helpers.d.ts +3 -2
  134. package/dist/{src/web → web}/generate-helpers.js +1 -1
  135. package/dist/web/generate-helpers.js.map +1 -0
  136. package/dist/web/generate-helpers.test-d.js.map +1 -0
  137. package/dist/web/generate-helpers.test.js.map +1 -0
  138. package/dist/{src/web → web}/helpers/state.js +13 -8
  139. package/dist/web/helpers/state.js.map +1 -0
  140. package/dist/web/helpers/state.test.js.map +1 -0
  141. package/dist/{src/web → web}/hooks/index.d.ts +2 -2
  142. package/dist/{src/web → web}/hooks/index.js +1 -1
  143. package/dist/web/hooks/index.js.map +1 -0
  144. package/dist/{src/web → web}/hooks/test/utils.d.ts +8 -2
  145. package/dist/web/hooks/test/utils.js +60 -0
  146. package/dist/web/hooks/test/utils.js.map +1 -0
  147. package/dist/{src/web → web}/hooks/use-call-tool.d.ts +2 -1
  148. package/dist/{src/web → web}/hooks/use-call-tool.js +2 -2
  149. package/dist/web/hooks/use-call-tool.js.map +1 -0
  150. package/dist/web/hooks/use-call-tool.test-d.js.map +1 -0
  151. package/dist/{src/web → web}/hooks/use-call-tool.test.js +0 -1
  152. package/dist/web/hooks/use-call-tool.test.js.map +1 -0
  153. package/dist/web/hooks/use-display-mode.d.ts +4 -0
  154. package/dist/web/hooks/use-display-mode.js +9 -0
  155. package/dist/web/hooks/use-display-mode.js.map +1 -0
  156. package/dist/web/hooks/use-display-mode.test-d.js +8 -0
  157. package/dist/web/hooks/use-display-mode.test-d.js.map +1 -0
  158. package/dist/web/hooks/use-display-mode.test.js.map +1 -0
  159. package/dist/web/hooks/use-files.d.ts +6 -0
  160. package/dist/web/hooks/use-files.js +9 -0
  161. package/dist/web/hooks/use-files.js.map +1 -0
  162. package/dist/{src/web → web}/hooks/use-files.test.js +10 -5
  163. package/dist/web/hooks/use-files.test.js.map +1 -0
  164. package/dist/{src/web → web}/hooks/use-layout.d.ts +2 -2
  165. package/dist/{src/web → web}/hooks/use-layout.js +4 -4
  166. package/dist/web/hooks/use-layout.js.map +1 -0
  167. package/dist/{src/web → web}/hooks/use-layout.test.js +6 -5
  168. package/dist/web/hooks/use-layout.test.js.map +1 -0
  169. package/dist/web/hooks/use-open-external.d.ts +3 -0
  170. package/dist/web/hooks/use-open-external.js +8 -0
  171. package/dist/web/hooks/use-open-external.js.map +1 -0
  172. package/dist/web/hooks/use-open-external.test.js +60 -0
  173. package/dist/web/hooks/use-open-external.test.js.map +1 -0
  174. package/dist/{src/web → web}/hooks/use-request-modal.d.ts +2 -2
  175. package/dist/web/hooks/use-request-modal.js +16 -0
  176. package/dist/web/hooks/use-request-modal.js.map +1 -0
  177. package/dist/web/hooks/use-request-modal.test.js.map +1 -0
  178. package/dist/{src/web → web}/hooks/use-send-follow-up-message.js +2 -2
  179. package/dist/web/hooks/use-send-follow-up-message.js.map +1 -0
  180. package/dist/web/hooks/use-set-open-in-app-url.d.ts +1 -0
  181. package/dist/web/hooks/use-set-open-in-app-url.js +8 -0
  182. package/dist/web/hooks/use-set-open-in-app-url.js.map +1 -0
  183. package/dist/web/hooks/use-set-open-in-app-url.test.js +43 -0
  184. package/dist/web/hooks/use-set-open-in-app-url.test.js.map +1 -0
  185. package/dist/{src/web → web}/hooks/use-tool-info.js +4 -4
  186. package/dist/web/hooks/use-tool-info.js.map +1 -0
  187. package/dist/web/hooks/use-tool-info.test-d.d.ts +1 -0
  188. package/dist/web/hooks/use-tool-info.test-d.js.map +1 -0
  189. package/dist/web/hooks/use-tool-info.test.d.ts +1 -0
  190. package/dist/{src/web → web}/hooks/use-tool-info.test.js +4 -4
  191. package/dist/web/hooks/use-tool-info.test.js.map +1 -0
  192. package/dist/{src/web → web}/hooks/use-user.d.ts +1 -1
  193. package/dist/{src/web → web}/hooks/use-user.js +3 -3
  194. package/dist/web/hooks/use-user.js.map +1 -0
  195. package/dist/web/hooks/use-user.test.d.ts +1 -0
  196. package/dist/{src/web → web}/hooks/use-user.test.js +4 -3
  197. package/dist/web/hooks/use-user.test.js.map +1 -0
  198. package/dist/{src/web → web}/hooks/use-widget-state.js +10 -10
  199. package/dist/web/hooks/use-widget-state.js.map +1 -0
  200. package/dist/web/hooks/use-widget-state.test.d.ts +1 -0
  201. package/dist/{src/web → web}/hooks/use-widget-state.test.js +9 -6
  202. package/dist/web/hooks/use-widget-state.test.js.map +1 -0
  203. package/dist/web/index.js.map +1 -0
  204. package/dist/{src/web → web}/mount-widget.js +9 -1
  205. package/dist/web/mount-widget.js.map +1 -0
  206. package/dist/web/plugin/data-llm.test.d.ts +1 -0
  207. package/dist/web/plugin/data-llm.test.js.map +1 -0
  208. package/dist/{src/web → web}/plugin/plugin.js +24 -9
  209. package/dist/web/plugin/plugin.js.map +1 -0
  210. package/dist/web/plugin/transform-data-llm.js.map +1 -0
  211. package/dist/web/plugin/transform-data-llm.test.d.ts +1 -0
  212. package/dist/web/plugin/transform-data-llm.test.js.map +1 -0
  213. package/dist/web/plugin/validate-widget.d.ts +5 -0
  214. package/dist/web/plugin/validate-widget.js +27 -0
  215. package/dist/web/plugin/validate-widget.js.map +1 -0
  216. package/dist/web/plugin/validate-widget.test.d.ts +1 -0
  217. package/dist/web/plugin/validate-widget.test.js +42 -0
  218. package/dist/web/plugin/validate-widget.test.js.map +1 -0
  219. package/dist/{src/web → web}/proxy.js +0 -1
  220. package/dist/web/proxy.js.map +1 -0
  221. package/dist/web/types.d.ts +16 -0
  222. package/dist/web/types.js +2 -0
  223. package/dist/web/types.js.map +1 -0
  224. package/package.json +53 -28
  225. package/tsconfig.base.json +28 -0
  226. package/dist/src/server/devtoolsStaticServer.d.ts +0 -19
  227. package/dist/src/server/devtoolsStaticServer.js +0 -49
  228. package/dist/src/server/devtoolsStaticServer.js.map +0 -1
  229. package/dist/src/server/index.js.map +0 -1
  230. package/dist/src/server/inferUtilityTypes.js.map +0 -1
  231. package/dist/src/server/server.js +0 -82
  232. package/dist/src/server/server.js.map +0 -1
  233. package/dist/src/server/templateHelper.js.map +0 -1
  234. package/dist/src/server/templates/development.hbs +0 -13
  235. package/dist/src/server/widgetsDevServer.js +0 -39
  236. package/dist/src/server/widgetsDevServer.js.map +0 -1
  237. package/dist/src/test/utils.js.map +0 -1
  238. package/dist/src/test/widget.test.js.map +0 -1
  239. package/dist/src/web/bridges/adaptors/apps-sdk-adaptor.d.ts +0 -12
  240. package/dist/src/web/bridges/adaptors/apps-sdk-adaptor.js +0 -30
  241. package/dist/src/web/bridges/adaptors/apps-sdk-adaptor.js.map +0 -1
  242. package/dist/src/web/bridges/adaptors/mcp-app-adaptor.d.ts +0 -15
  243. package/dist/src/web/bridges/adaptors/mcp-app-adaptor.js +0 -108
  244. package/dist/src/web/bridges/adaptors/mcp-app-adaptor.js.map +0 -1
  245. package/dist/src/web/bridges/apps-sdk-bridge.d.ts +0 -10
  246. package/dist/src/web/bridges/apps-sdk-bridge.js.map +0 -1
  247. package/dist/src/web/bridges/hooks/use-adaptor.d.ts +0 -2
  248. package/dist/src/web/bridges/hooks/use-adaptor.js +0 -8
  249. package/dist/src/web/bridges/hooks/use-adaptor.js.map +0 -1
  250. package/dist/src/web/bridges/hooks/use-apps-sdk-bridge.d.ts +0 -2
  251. package/dist/src/web/bridges/hooks/use-apps-sdk-bridge.js.map +0 -1
  252. package/dist/src/web/bridges/hooks/use-bridge.d.ts +0 -2
  253. package/dist/src/web/bridges/hooks/use-bridge.js +0 -8
  254. package/dist/src/web/bridges/hooks/use-bridge.js.map +0 -1
  255. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.d.ts +0 -5
  256. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.js.map +0 -1
  257. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.test.js +0 -41
  258. package/dist/src/web/bridges/hooks/use-mcp-app-bridge.test.js.map +0 -1
  259. package/dist/src/web/bridges/index.d.ts +0 -4
  260. package/dist/src/web/bridges/index.js +0 -5
  261. package/dist/src/web/bridges/index.js.map +0 -1
  262. package/dist/src/web/bridges/mcp-app-bridge.d.ts +0 -38
  263. package/dist/src/web/bridges/mcp-app-bridge.js +0 -162
  264. package/dist/src/web/bridges/mcp-app-bridge.js.map +0 -1
  265. package/dist/src/web/bridges/types.d.ts +0 -56
  266. package/dist/src/web/create-store.js.map +0 -1
  267. package/dist/src/web/create-store.test.js +0 -70
  268. package/dist/src/web/create-store.test.js.map +0 -1
  269. package/dist/src/web/data-llm.js.map +0 -1
  270. package/dist/src/web/data-llm.test.js +0 -76
  271. package/dist/src/web/data-llm.test.js.map +0 -1
  272. package/dist/src/web/generate-helpers.js.map +0 -1
  273. package/dist/src/web/generate-helpers.test-d.js.map +0 -1
  274. package/dist/src/web/generate-helpers.test.js.map +0 -1
  275. package/dist/src/web/helpers/state.js.map +0 -1
  276. package/dist/src/web/helpers/state.test.js.map +0 -1
  277. package/dist/src/web/hooks/index.js.map +0 -1
  278. package/dist/src/web/hooks/test/utils.js +0 -40
  279. package/dist/src/web/hooks/test/utils.js.map +0 -1
  280. package/dist/src/web/hooks/use-call-tool.js.map +0 -1
  281. package/dist/src/web/hooks/use-call-tool.test-d.js.map +0 -1
  282. package/dist/src/web/hooks/use-call-tool.test.js.map +0 -1
  283. package/dist/src/web/hooks/use-display-mode.d.ts +0 -4
  284. package/dist/src/web/hooks/use-display-mode.js +0 -10
  285. package/dist/src/web/hooks/use-display-mode.js.map +0 -1
  286. package/dist/src/web/hooks/use-display-mode.test.js.map +0 -1
  287. package/dist/src/web/hooks/use-files.d.ts +0 -10
  288. package/dist/src/web/hooks/use-files.js +0 -7
  289. package/dist/src/web/hooks/use-files.js.map +0 -1
  290. package/dist/src/web/hooks/use-files.test.js.map +0 -1
  291. package/dist/src/web/hooks/use-layout.js.map +0 -1
  292. package/dist/src/web/hooks/use-layout.test.js.map +0 -1
  293. package/dist/src/web/hooks/use-open-external.d.ts +0 -1
  294. package/dist/src/web/hooks/use-open-external.js +0 -6
  295. package/dist/src/web/hooks/use-open-external.js.map +0 -1
  296. package/dist/src/web/hooks/use-open-external.test.js +0 -24
  297. package/dist/src/web/hooks/use-open-external.test.js.map +0 -1
  298. package/dist/src/web/hooks/use-openai-global.d.ts +0 -3
  299. package/dist/src/web/hooks/use-openai-global.js +0 -6
  300. package/dist/src/web/hooks/use-openai-global.js.map +0 -1
  301. package/dist/src/web/hooks/use-request-modal.js +0 -14
  302. package/dist/src/web/hooks/use-request-modal.js.map +0 -1
  303. package/dist/src/web/hooks/use-request-modal.test.js.map +0 -1
  304. package/dist/src/web/hooks/use-send-follow-up-message.js.map +0 -1
  305. package/dist/src/web/hooks/use-tool-info.js.map +0 -1
  306. package/dist/src/web/hooks/use-tool-info.test-d.js.map +0 -1
  307. package/dist/src/web/hooks/use-tool-info.test.js.map +0 -1
  308. package/dist/src/web/hooks/use-user.js.map +0 -1
  309. package/dist/src/web/hooks/use-user.test.js.map +0 -1
  310. package/dist/src/web/hooks/use-widget-state.js.map +0 -1
  311. package/dist/src/web/hooks/use-widget-state.test.js.map +0 -1
  312. package/dist/src/web/index.js.map +0 -1
  313. package/dist/src/web/mount-widget.js.map +0 -1
  314. package/dist/src/web/plugin/data-llm.test.js.map +0 -1
  315. package/dist/src/web/plugin/plugin.js.map +0 -1
  316. package/dist/src/web/plugin/transform-data-llm.js.map +0 -1
  317. package/dist/src/web/plugin/transform-data-llm.test.js.map +0 -1
  318. package/dist/src/web/proxy.js.map +0 -1
  319. package/dist/src/web/types.js.map +0 -1
  320. package/dist/vitest.config.d.ts +0 -2
  321. package/dist/vitest.config.js +0 -8
  322. package/dist/vitest.config.js.map +0 -1
  323. /package/dist/{src/test/widget.test.d.ts → server/asset-base-url-transform-plugin.test.d.ts} +0 -0
  324. /package/dist/{src/web/bridges/hooks/use-mcp-app-bridge.test.d.ts → server/express.test.d.ts} +0 -0
  325. /package/dist/{src/server → server}/inferUtilityTypes.d.ts +0 -0
  326. /package/dist/{src/server → server}/inferUtilityTypes.js +0 -0
  327. /package/dist/{src/web/create-store.test.d.ts → server/middleware.test-d.d.ts} +0 -0
  328. /package/dist/{src/web/data-llm.test.d.ts → server/middleware.test.d.ts} +0 -0
  329. /package/dist/{src/server → server}/templateHelper.js +0 -0
  330. /package/dist/{src/test → test}/utils.d.ts +0 -0
  331. /package/dist/{src/test → test}/utils.js +0 -0
  332. /package/dist/{src/web/generate-helpers.test-d.d.ts → test/widget.test.d.ts} +0 -0
  333. /package/dist/{src/web/bridges → web/bridges/mcp-app}/types.js +0 -0
  334. /package/dist/{src/web/generate-helpers.test.d.ts → web/bridges/mcp-app/use-mcp-app-context.test.d.ts} +0 -0
  335. /package/dist/{src/web → web}/create-store.d.ts +0 -0
  336. /package/dist/{src/web/helpers/state.test.d.ts → web/create-store.test.d.ts} +0 -0
  337. /package/dist/{src/web → web}/data-llm.d.ts +0 -0
  338. /package/dist/{src/web/plugin → web}/data-llm.test.d.ts +0 -0
  339. /package/dist/{src/web/hooks/use-call-tool.test-d.d.ts → web/generate-helpers.test-d.d.ts} +0 -0
  340. /package/dist/{src/web → web}/generate-helpers.test-d.js +0 -0
  341. /package/dist/{src/web/hooks/use-call-tool.test.d.ts → web/generate-helpers.test.d.ts} +0 -0
  342. /package/dist/{src/web → web}/generate-helpers.test.js +0 -0
  343. /package/dist/{src/web → web}/helpers/state.d.ts +0 -0
  344. /package/dist/{src/web/hooks/use-display-mode.test.d.ts → web/helpers/state.test.d.ts} +0 -0
  345. /package/dist/{src/web → web}/helpers/state.test.js +0 -0
  346. /package/dist/{src/web/hooks/use-files.test.d.ts → web/hooks/use-call-tool.test-d.d.ts} +0 -0
  347. /package/dist/{src/web → web}/hooks/use-call-tool.test-d.js +0 -0
  348. /package/dist/{src/web/hooks/use-layout.test.d.ts → web/hooks/use-call-tool.test.d.ts} +0 -0
  349. /package/dist/{src/web/hooks/use-open-external.test.d.ts → web/hooks/use-display-mode.test-d.d.ts} +0 -0
  350. /package/dist/{src/web/hooks/use-request-modal.test.d.ts → web/hooks/use-display-mode.test.d.ts} +0 -0
  351. /package/dist/{src/web → web}/hooks/use-display-mode.test.js +0 -0
  352. /package/dist/{src/web/hooks/use-tool-info.test-d.d.ts → web/hooks/use-files.test.d.ts} +0 -0
  353. /package/dist/{src/web/hooks/use-tool-info.test.d.ts → web/hooks/use-layout.test.d.ts} +0 -0
  354. /package/dist/{src/web/hooks/use-user.test.d.ts → web/hooks/use-open-external.test.d.ts} +0 -0
  355. /package/dist/{src/web/hooks/use-widget-state.test.d.ts → web/hooks/use-request-modal.test.d.ts} +0 -0
  356. /package/dist/{src/web → web}/hooks/use-request-modal.test.js +0 -0
  357. /package/dist/{src/web → web}/hooks/use-send-follow-up-message.d.ts +0 -0
  358. /package/dist/{src/web/plugin/transform-data-llm.test.d.ts → web/hooks/use-set-open-in-app-url.test.d.ts} +0 -0
  359. /package/dist/{src/web → web}/hooks/use-tool-info.d.ts +0 -0
  360. /package/dist/{src/web → web}/hooks/use-tool-info.test-d.js +0 -0
  361. /package/dist/{src/web → web}/hooks/use-widget-state.d.ts +0 -0
  362. /package/dist/{src/web → web}/index.d.ts +0 -0
  363. /package/dist/{src/web → web}/index.js +0 -0
  364. /package/dist/{src/web → web}/mount-widget.d.ts +0 -0
  365. /package/dist/{src/web → web}/plugin/data-llm.test.js +0 -0
  366. /package/dist/{src/web → web}/plugin/plugin.d.ts +0 -0
  367. /package/dist/{src/web → web}/plugin/transform-data-llm.d.ts +0 -0
  368. /package/dist/{src/web → web}/plugin/transform-data-llm.js +0 -0
  369. /package/dist/{src/web → web}/plugin/transform-data-llm.test.js +0 -0
  370. /package/dist/{src/web → web}/proxy.d.ts +0 -0
@@ -0,0 +1,74 @@
1
+ import http from "node:http";
2
+ import { afterEach, describe, expect, it, vi } from "vitest";
3
+ vi.mock("@skybridge/devtools", () => ({
4
+ devtoolsStaticServer: () => ((_req, _res, next) => next()),
5
+ }));
6
+ vi.mock("./widgetsDevServer.js", () => ({
7
+ widgetsDevServer: () => ((_req, _res, next) => next()),
8
+ }));
9
+ const fakeServer = {};
10
+ async function listen(app) {
11
+ const server = http.createServer(app);
12
+ await new Promise((resolve) => server.listen(0, resolve));
13
+ const port = server.address().port;
14
+ return { port, server };
15
+ }
16
+ let openServer;
17
+ afterEach(() => openServer?.close());
18
+ async function postMcp(port) {
19
+ return fetch(`http://localhost:${port}/mcp`, {
20
+ method: "POST",
21
+ headers: { "Content-Type": "application/json" },
22
+ body: JSON.stringify({ jsonrpc: "2.0", method: "initialize", id: 1 }),
23
+ });
24
+ }
25
+ describe("createServer", () => {
26
+ it("runs global custom middleware before the /mcp handler", async () => {
27
+ const { createServer } = await import("./express.js");
28
+ const calls = [];
29
+ const mw = (_req, _res, next) => {
30
+ calls.push("custom");
31
+ next();
32
+ };
33
+ const app = await createServer({
34
+ server: fakeServer,
35
+ customMiddleware: [{ handlers: [mw] }],
36
+ });
37
+ const { port, server } = await listen(app);
38
+ openServer = server;
39
+ await postMcp(port);
40
+ expect(calls).toEqual(["custom"]);
41
+ });
42
+ it("runs path-scoped middleware on /mcp", async () => {
43
+ const { createServer } = await import("./express.js");
44
+ const calls = [];
45
+ const mw = (_req, _res, next) => {
46
+ calls.push("auth");
47
+ next();
48
+ };
49
+ const app = await createServer({
50
+ server: fakeServer,
51
+ customMiddleware: [{ path: "/mcp", handlers: [mw] }],
52
+ });
53
+ const { port, server } = await listen(app);
54
+ openServer = server;
55
+ await postMcp(port);
56
+ expect(calls).toEqual(["auth"]);
57
+ });
58
+ it("allows middleware to short-circuit with 401", async () => {
59
+ const { createServer } = await import("./express.js");
60
+ const reject = (_req, res) => {
61
+ res.status(401).json({ error: "Unauthorized" });
62
+ };
63
+ const app = await createServer({
64
+ server: fakeServer,
65
+ customMiddleware: [{ path: "/mcp", handlers: [reject] }],
66
+ });
67
+ const { port, server } = await listen(app);
68
+ openServer = server;
69
+ const res = await postMcp(port);
70
+ expect(res.status).toBe(401);
71
+ expect(await res.json()).toEqual({ error: "Unauthorized" });
72
+ });
73
+ });
74
+ //# sourceMappingURL=express.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"express.test.js","sourceRoot":"","sources":["../../src/server/express.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export { devtoolsStaticServer } from "./devtoolsStaticServer.js";
2
1
  export type { AnyToolRegistry, InferTools, ToolInput, ToolNames, ToolOutput, ToolResponseMetadata, } from "./inferUtilityTypes.js";
2
+ export type { McpExtra, McpMethodString, McpMiddlewareFilter, McpMiddlewareFn, McpTypedMiddlewareFn, } from "./middleware.js";
3
3
  export type { McpServerTypes, ToolDef, WidgetHostType } from "./server.js";
4
4
  export { McpServer } from "./server.js";
5
5
  export { widgetsDevServer } from "./widgetsDevServer.js";
@@ -1,4 +1,3 @@
1
- export { devtoolsStaticServer } from "./devtoolsStaticServer.js";
2
1
  export { McpServer } from "./server.js";
3
2
  export { widgetsDevServer } from "./widgetsDevServer.js";
4
3
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inferUtilityTypes.js","sourceRoot":"","sources":["../../src/server/inferUtilityTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,96 @@
1
+ import type { Server } from "@modelcontextprotocol/sdk/server/index.js";
2
+ import type { RequestHandlerExtra } from "@modelcontextprotocol/sdk/shared/protocol.js";
3
+ import type { ClientNotification, ClientRequest, ServerNotification, ServerRequest } from "@modelcontextprotocol/sdk/types.js";
4
+ /**
5
+ * The `extra` context object provided by the MCP SDK to request handlers.
6
+ */
7
+ export type McpExtra = RequestHandlerExtra<ServerRequest, ServerNotification>;
8
+ /**
9
+ * A single MCP middleware function following the onion model.
10
+ * Call `next()` to invoke the next middleware or the final handler.
11
+ * For notifications, `extra` is `undefined` (SDK does not provide extra context)
12
+ * and `next()` resolves to `undefined`.
13
+ */
14
+ export type McpMiddlewareFn = (request: {
15
+ method: string;
16
+ params: Record<string, unknown>;
17
+ }, extra: McpExtra | undefined, next: () => Promise<unknown>) => Promise<unknown> | unknown;
18
+ /**
19
+ * MCP methods the server handles (incoming from client).
20
+ */
21
+ export type McpMethodString = ClientRequest["method"] | ClientNotification["method"];
22
+ /** Extract params type for a specific MCP method from SDK unions. */
23
+ export type McpRequestParams<M extends string> = Extract<ClientRequest, {
24
+ method: M;
25
+ }> extends {
26
+ params: infer P;
27
+ } ? P : Extract<ClientNotification, {
28
+ method: M;
29
+ }> extends {
30
+ params: infer P;
31
+ } ? P : Record<string, unknown>;
32
+ /** Resolve extra type: McpExtra for requests, undefined for notifications. */
33
+ export type McpExtraFor<M extends string> = M extends ClientRequest["method"] ? McpExtra : M extends ClientNotification["method"] ? undefined : McpExtra | undefined;
34
+ /** Typed middleware fn for a specific method — narrows both params and extra. */
35
+ export type McpTypedMiddlewareFn<M extends string> = (request: {
36
+ method: M;
37
+ params: McpRequestParams<M>;
38
+ }, extra: McpExtraFor<M>, next: () => Promise<unknown>) => Promise<unknown> | unknown;
39
+ /** Extracts `"prefix/*"` from `"prefix/anything"` — distributive over unions. */
40
+ type ToWildcard<T extends string> = T extends `${infer Prefix}/${string}` ? `${Prefix}/*` : never;
41
+ /** Wildcard prefixes derived from method strings (e.g. `"tools/*"` from `"tools/call"`). */
42
+ type McpWildcard = ToWildcard<McpMethodString>;
43
+ /** Category keywords matching all requests or all notifications. */
44
+ type McpCategory = "request" | "notification";
45
+ /**
46
+ * A single filter pattern for MCP middleware:
47
+ * - Exact method: `"tools/call"`
48
+ * - Wildcard: `"tools/*"`
49
+ * - Category: `"request"` | `"notification"`
50
+ * - Escape hatch: arbitrary string via `string & {}`
51
+ */
52
+ type McpMiddlewareFilterPattern = McpMethodString | McpWildcard | McpCategory | (string & {});
53
+ /**
54
+ * Filter determining which MCP methods a middleware applies to.
55
+ * A single pattern or an array of patterns (OR logic).
56
+ */
57
+ export type McpMiddlewareFilter = McpMiddlewareFilterPattern | McpMiddlewareFilterPattern[];
58
+ /**
59
+ * Internal entry stored for each registered middleware.
60
+ * `filter: null` means catch-all (matches everything).
61
+ */
62
+ export type McpMiddlewareEntry = {
63
+ filter: McpMiddlewareFilter | null;
64
+ handler: McpMiddlewareFn;
65
+ };
66
+ type HandlerMap = Map<string, (...args: unknown[]) => Promise<unknown>>;
67
+ /**
68
+ * Extract the TS-private `_requestHandlers` and `_notificationHandlers` maps
69
+ * from the SDK's `Server` (extends `Protocol`). These are runtime-accessible
70
+ * but declared `private` in TypeScript.
71
+ *
72
+ * Validates with `instanceof Map` so an incompatible SDK version fails fast
73
+ * instead of silently breaking.
74
+ */
75
+ export declare function getHandlerMaps(server: Server): {
76
+ requestHandlers: HandlerMap;
77
+ notificationHandlers: HandlerMap;
78
+ };
79
+ /**
80
+ * Check if a single filter pattern matches a given method.
81
+ *
82
+ * - Exact: `"tools/call"` matches only `"tools/call"`
83
+ * - Wildcard: `"tools/*"` matches any method starting with `"tools/"`
84
+ * - Category `"request"`: matches when `isNotification` is false
85
+ * - Category `"notification"`: matches when `isNotification` is true
86
+ */
87
+ export declare function matchesFilter(method: string, filter: string, isNotification: boolean): boolean;
88
+ /**
89
+ * Build an onion-model middleware chain for a specific method.
90
+ *
91
+ * Filters `entries` to those matching `method`, then composes them
92
+ * so the first registered middleware is the outermost layer.
93
+ * `next()` is guarded against multiple calls within a single middleware.
94
+ */
95
+ export declare function buildMiddlewareChain(method: string, isNotification: boolean, originalHandler: (...args: unknown[]) => Promise<unknown>, entries: McpMiddlewareEntry[]): (...args: unknown[]) => Promise<unknown>;
96
+ export {};
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Extract the TS-private `_requestHandlers` and `_notificationHandlers` maps
3
+ * from the SDK's `Server` (extends `Protocol`). These are runtime-accessible
4
+ * but declared `private` in TypeScript.
5
+ *
6
+ * Validates with `instanceof Map` so an incompatible SDK version fails fast
7
+ * instead of silently breaking.
8
+ */
9
+ export function getHandlerMaps(server) {
10
+ const obj = server;
11
+ if (!("_requestHandlers" in obj && obj._requestHandlers instanceof Map) ||
12
+ !("_notificationHandlers" in obj && obj._notificationHandlers instanceof Map)) {
13
+ throw new Error("Incompatible MCP SDK version: expected _requestHandlers and _notificationHandlers on Server");
14
+ }
15
+ return {
16
+ requestHandlers: obj._requestHandlers,
17
+ notificationHandlers: obj._notificationHandlers,
18
+ };
19
+ }
20
+ /**
21
+ * Check if a single filter pattern matches a given method.
22
+ *
23
+ * - Exact: `"tools/call"` matches only `"tools/call"`
24
+ * - Wildcard: `"tools/*"` matches any method starting with `"tools/"`
25
+ * - Category `"request"`: matches when `isNotification` is false
26
+ * - Category `"notification"`: matches when `isNotification` is true
27
+ */
28
+ export function matchesFilter(method, filter, isNotification) {
29
+ if (filter === "request") {
30
+ return !isNotification;
31
+ }
32
+ if (filter === "notification") {
33
+ return isNotification;
34
+ }
35
+ if (filter.endsWith("/*")) {
36
+ const prefix = filter.slice(0, -1); // "tools/*" → "tools/"
37
+ return method.startsWith(prefix);
38
+ }
39
+ return method === filter;
40
+ }
41
+ function matchesAnyFilter(method, filter, isNotification) {
42
+ if (filter === null) {
43
+ return true;
44
+ }
45
+ if (typeof filter === "string") {
46
+ return matchesFilter(method, filter, isNotification);
47
+ }
48
+ return filter.some((pattern) => matchesFilter(method, pattern, isNotification));
49
+ }
50
+ /**
51
+ * Build an onion-model middleware chain for a specific method.
52
+ *
53
+ * Filters `entries` to those matching `method`, then composes them
54
+ * so the first registered middleware is the outermost layer.
55
+ * `next()` is guarded against multiple calls within a single middleware.
56
+ */
57
+ export function buildMiddlewareChain(method, isNotification, originalHandler, entries) {
58
+ const applicable = entries.filter((entry) => matchesAnyFilter(method, entry.filter, isNotification));
59
+ if (applicable.length === 0) {
60
+ return originalHandler;
61
+ }
62
+ return (...args) => {
63
+ const rawRequest = args[0];
64
+ // SDK calls request handlers as handler(request, extra) but
65
+ // notification handlers as handler(notification) — no extra arg.
66
+ const extra = isNotification ? undefined : args[1];
67
+ const mcpRequest = {
68
+ method,
69
+ params: rawRequest?.params ?? {},
70
+ };
71
+ let index = 0;
72
+ const executeLayer = () => {
73
+ const entry = applicable[index++];
74
+ if (!entry) {
75
+ if (rawRequest) {
76
+ rawRequest.params = mcpRequest.params;
77
+ }
78
+ return originalHandler(...args);
79
+ }
80
+ let nextCalled = false;
81
+ const next = () => {
82
+ if (nextCalled) {
83
+ throw new Error(`next() called multiple times in middleware for "${method}"`);
84
+ }
85
+ nextCalled = true;
86
+ return executeLayer();
87
+ };
88
+ return Promise.resolve(entry.handler(mcpRequest, extra, next));
89
+ };
90
+ return executeLayer();
91
+ };
92
+ }
93
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/server/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { expectTypeOf, test } from "vitest";
2
+ const server = null;
3
+ test("request category narrows extra to McpExtra", () => {
4
+ server.mcpMiddleware("request", (_request, extra, next) => {
5
+ expectTypeOf(extra).toEqualTypeOf();
6
+ extra.signal;
7
+ return next();
8
+ });
9
+ });
10
+ test("notification category narrows extra to undefined", () => {
11
+ server.mcpMiddleware("notification", (_request, extra, next) => {
12
+ expectTypeOf(extra).toEqualTypeOf();
13
+ // @ts-expect-error extra is undefined, cannot access .signal
14
+ extra.signal;
15
+ return next();
16
+ });
17
+ });
18
+ test("exact method tools/call narrows params and extra", () => {
19
+ server.mcpMiddleware("tools/call", (request, extra, next) => {
20
+ expectTypeOf(request.params.name).toBeString();
21
+ expectTypeOf(extra).toEqualTypeOf();
22
+ return next();
23
+ });
24
+ });
25
+ test("exact method tools/list narrows extra to McpExtra", () => {
26
+ server.mcpMiddleware("tools/list", (_request, extra, next) => {
27
+ expectTypeOf(extra).toEqualTypeOf();
28
+ return next();
29
+ });
30
+ });
31
+ test("exact notification method narrows extra to undefined", () => {
32
+ server.mcpMiddleware("notifications/initialized", (_request, extra, next) => {
33
+ expectTypeOf(extra).toEqualTypeOf();
34
+ // @ts-expect-error extra is undefined
35
+ extra.signal;
36
+ return next();
37
+ });
38
+ });
39
+ test("McpTypedMiddlewareFn narrows params and extra per method", () => {
40
+ expectTypeOf().toBeFunction();
41
+ expectTypeOf().toBeString();
42
+ expectTypeOf().toEqualTypeOf();
43
+ expectTypeOf().toEqualTypeOf();
44
+ });
45
+ test("catch-all middleware has no narrowing on extra or params", () => {
46
+ server.mcpMiddleware((_request, extra, next) => {
47
+ expectTypeOf(extra).toEqualTypeOf();
48
+ expectTypeOf(_request.params).toEqualTypeOf();
49
+ return next();
50
+ });
51
+ });
52
+ //# sourceMappingURL=middleware.test-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.test-d.js","sourceRoot":"","sources":["../../src/server/middleware.test-d.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAI5C,MAAM,MAAM,GAAG,IAA4B,CAAC;AAE5C,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;IACtD,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACxD,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAY,CAAC;QAC9C,KAAK,CAAC,MAAM,CAAC;QACb,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAC5D,MAAM,CAAC,aAAa,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7D,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAa,CAAC;QAC/C,6DAA6D;QAC7D,KAAK,CAAC,MAAM,CAAC;QACb,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,kDAAkD,EAAE,GAAG,EAAE;IAC5D,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1D,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC;QAC/C,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAY,CAAC;QAC9C,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mDAAmD,EAAE,GAAG,EAAE;IAC7D,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC3D,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAY,CAAC;QAC9C,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;IAChE,MAAM,CAAC,aAAa,CAAC,2BAA2B,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1E,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAa,CAAC;QAC/C,sCAAsC;QACtC,KAAK,CAAC,MAAM,CAAC;QACb,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACpE,YAAY,EAAsC,CAAC,YAAY,EAAE,CAAC;IAClE,YAAY,EAET,CAAC,UAAU,EAAE,CAAC;IACjB,YAAY,EAET,CAAC,aAAa,EAAY,CAAC;IAC9B,YAAY,EAET,CAAC,aAAa,EAAa,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0DAA0D,EAAE,GAAG,EAAE;IACpE,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAC7C,YAAY,CAAC,KAAK,CAAC,CAAC,aAAa,EAAwB,CAAC;QAC1D,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,aAAa,EAA2B,CAAC;QACvE,OAAO,IAAI,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}