skybridge 0.0.0-dev.fa77314 → 0.0.0-dev.fa95a7b

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 (355) hide show
  1. package/README.md +10 -7
  2. package/dist/cli/build-helpers.d.ts +6 -2
  3. package/dist/cli/build-helpers.js +39 -14
  4. package/dist/cli/build-helpers.js.map +1 -1
  5. package/dist/cli/build-helpers.test.js +73 -5
  6. package/dist/cli/build-helpers.test.js.map +1 -1
  7. package/dist/cli/build-steps.d.ts +2 -0
  8. package/dist/cli/build-steps.js +73 -0
  9. package/dist/cli/build-steps.js.map +1 -0
  10. package/dist/cli/build-steps.test.js +52 -0
  11. package/dist/cli/build-steps.test.js.map +1 -0
  12. package/dist/cli/detect-port.js +0 -1
  13. package/dist/cli/detect-port.js.map +1 -1
  14. package/dist/cli/header.d.ts +1 -1
  15. package/dist/cli/resolve-skybridge-config.d.ts +5 -0
  16. package/dist/cli/{resolve-views-dir.js → resolve-skybridge-config.js} +4 -3
  17. package/dist/cli/resolve-skybridge-config.js.map +1 -0
  18. package/dist/cli/run-plain.d.ts +18 -0
  19. package/dist/cli/run-plain.js +90 -0
  20. package/dist/cli/run-plain.js.map +1 -0
  21. package/dist/cli/use-execute-steps.d.ts +1 -1
  22. package/dist/cli/use-nodemon.d.ts +25 -1
  23. package/dist/cli/use-nodemon.js +96 -63
  24. package/dist/cli/use-nodemon.js.map +1 -1
  25. package/dist/cli/use-typescript-check.d.ts +8 -2
  26. package/dist/cli/use-typescript-check.js +70 -67
  27. package/dist/cli/use-typescript-check.js.map +1 -1
  28. package/dist/commands/build.d.ts +0 -2
  29. package/dist/commands/build.js +2 -61
  30. package/dist/commands/build.js.map +1 -1
  31. package/dist/commands/dev.d.ts +1 -0
  32. package/dist/commands/dev.js +38 -6
  33. package/dist/commands/dev.js.map +1 -1
  34. package/dist/commands/start.js +2 -2
  35. package/dist/commands/start.js.map +1 -1
  36. package/dist/context-warnings.d.ts +5 -0
  37. package/dist/context-warnings.js +31 -0
  38. package/dist/context-warnings.js.map +1 -0
  39. package/dist/context-warnings.test.js +28 -0
  40. package/dist/context-warnings.test.js.map +1 -0
  41. package/dist/server/app.d.ts +194 -0
  42. package/dist/server/app.js +266 -0
  43. package/dist/server/app.js.map +1 -0
  44. package/dist/server/app.test.js +97 -0
  45. package/dist/server/app.test.js.map +1 -0
  46. package/dist/server/auth/discovery.d.ts +29 -7
  47. package/dist/server/auth/discovery.js +16 -11
  48. package/dist/server/auth/discovery.js.map +1 -1
  49. package/dist/server/auth/index.d.ts +35 -5
  50. package/dist/server/auth/index.js.map +1 -1
  51. package/dist/server/auth/providers/auth0.d.ts +34 -7
  52. package/dist/server/auth/providers/auth0.js +29 -11
  53. package/dist/server/auth/providers/auth0.js.map +1 -1
  54. package/dist/server/auth/providers/auth0.test.js +31 -14
  55. package/dist/server/auth/providers/auth0.test.js.map +1 -1
  56. package/dist/server/auth/providers/authplane.d.ts +49 -0
  57. package/dist/server/auth/providers/authplane.js +57 -0
  58. package/dist/server/auth/providers/authplane.js.map +1 -0
  59. package/dist/server/auth/providers/authplane.test.js +143 -0
  60. package/dist/server/auth/providers/authplane.test.js.map +1 -0
  61. package/dist/server/auth/providers/clerk.d.ts +40 -3
  62. package/dist/server/auth/providers/clerk.js +5 -6
  63. package/dist/server/auth/providers/clerk.js.map +1 -1
  64. package/dist/server/auth/providers/clerk.test.js +7 -25
  65. package/dist/server/auth/providers/clerk.test.js.map +1 -1
  66. package/dist/server/auth/providers/custom.d.ts +27 -4
  67. package/dist/server/auth/providers/custom.js +46 -15
  68. package/dist/server/auth/providers/custom.js.map +1 -1
  69. package/dist/server/auth/providers/custom.test.js +86 -16
  70. package/dist/server/auth/providers/custom.test.js.map +1 -1
  71. package/dist/server/auth/providers/descope.d.ts +41 -11
  72. package/dist/server/auth/providers/descope.js +38 -8
  73. package/dist/server/auth/providers/descope.js.map +1 -1
  74. package/dist/server/auth/providers/descope.test.js +43 -16
  75. package/dist/server/auth/providers/descope.test.js.map +1 -1
  76. package/dist/server/auth/providers/shared.d.ts +2 -0
  77. package/dist/server/auth/providers/shared.js +6 -0
  78. package/dist/server/auth/providers/shared.js.map +1 -0
  79. package/dist/server/auth/providers/shared.test.js +10 -0
  80. package/dist/server/auth/providers/shared.test.js.map +1 -0
  81. package/dist/server/auth/providers/stytch.d.ts +16 -3
  82. package/dist/server/auth/providers/stytch.js +5 -6
  83. package/dist/server/auth/providers/stytch.js.map +1 -1
  84. package/dist/server/auth/providers/verify-spy.d.ts +12 -0
  85. package/dist/server/auth/providers/verify-spy.js +21 -0
  86. package/dist/server/auth/providers/verify-spy.js.map +1 -0
  87. package/dist/server/auth/providers/workos.d.ts +25 -3
  88. package/dist/server/auth/providers/workos.js +5 -6
  89. package/dist/server/auth/providers/workos.js.map +1 -1
  90. package/dist/server/auth/security-schemes.d.ts +23 -0
  91. package/dist/server/auth/security-schemes.js +64 -0
  92. package/dist/server/auth/security-schemes.js.map +1 -0
  93. package/dist/server/auth/security-schemes.test.js +99 -0
  94. package/dist/server/auth/security-schemes.test.js.map +1 -0
  95. package/dist/server/auth/setup.d.ts +3 -1
  96. package/dist/server/auth/setup.js +66 -26
  97. package/dist/server/auth/setup.js.map +1 -1
  98. package/dist/server/auth/setup.test.js +349 -20
  99. package/dist/server/auth/setup.test.js.map +1 -1
  100. package/dist/server/auth/verify.d.ts +37 -3
  101. package/dist/server/auth/verify.js +27 -3
  102. package/dist/server/auth/verify.js.map +1 -1
  103. package/dist/server/auth/verify.test.js +49 -0
  104. package/dist/server/auth/verify.test.js.map +1 -1
  105. package/dist/server/auth-extra.test-d.js +130 -0
  106. package/dist/server/auth-extra.test-d.js.map +1 -0
  107. package/dist/server/auth.d.ts +43 -6
  108. package/dist/server/auth.js +4 -5
  109. package/dist/server/auth.js.map +1 -1
  110. package/dist/server/build-manifest.test.js +7 -6
  111. package/dist/server/build-manifest.test.js.map +1 -1
  112. package/dist/server/content-helpers.d.ts +1 -1
  113. package/dist/server/content-helpers.js.map +1 -1
  114. package/dist/server/express.d.ts +23 -3
  115. package/dist/server/express.js +38 -32
  116. package/dist/server/express.js.map +1 -1
  117. package/dist/server/express.test.js +220 -103
  118. package/dist/server/express.test.js.map +1 -1
  119. package/dist/server/file-ref.d.ts +1 -1
  120. package/dist/server/file-ref.js +1 -1
  121. package/dist/server/file-ref.js.map +1 -1
  122. package/dist/server/host.d.ts +2 -0
  123. package/dist/server/host.js +11 -0
  124. package/dist/server/host.js.map +1 -0
  125. package/dist/server/host.test.d.ts +1 -0
  126. package/dist/server/host.test.js +13 -0
  127. package/dist/server/host.test.js.map +1 -0
  128. package/dist/server/index.d.ts +16 -9
  129. package/dist/server/index.js +9 -3
  130. package/dist/server/index.js.map +1 -1
  131. package/dist/server/mcp-errors.test.d.ts +1 -0
  132. package/dist/server/mcp-errors.test.js +41 -0
  133. package/dist/server/mcp-errors.test.js.map +1 -0
  134. package/dist/server/middleware.d.ts +35 -10
  135. package/dist/server/middleware.js +33 -0
  136. package/dist/server/middleware.js.map +1 -1
  137. package/dist/server/middleware.test-d.js +1 -1
  138. package/dist/server/middleware.test-d.js.map +1 -1
  139. package/dist/server/middleware.test.js +242 -134
  140. package/dist/server/middleware.test.js.map +1 -1
  141. package/dist/server/register-tool.test.d.ts +1 -0
  142. package/dist/server/register-tool.test.js +27 -0
  143. package/dist/server/register-tool.test.js.map +1 -0
  144. package/dist/server/server.d.ts +133 -116
  145. package/dist/server/server.js +251 -346
  146. package/dist/server/server.js.map +1 -1
  147. package/dist/server/skills-integration.test.d.ts +1 -0
  148. package/dist/server/skills-integration.test.js +86 -0
  149. package/dist/server/skills-integration.test.js.map +1 -0
  150. package/dist/server/skills.d.ts +27 -0
  151. package/dist/server/skills.js +188 -0
  152. package/dist/server/skills.js.map +1 -0
  153. package/dist/server/skills.test.d.ts +1 -0
  154. package/dist/server/skills.test.js +243 -0
  155. package/dist/server/skills.test.js.map +1 -0
  156. package/dist/server/templateHelper.d.ts +0 -3
  157. package/dist/server/templateHelper.js.map +1 -1
  158. package/dist/server/templates.generated.js +4 -8
  159. package/dist/server/templates.generated.js.map +1 -1
  160. package/dist/server/tool-extra.test.d.ts +1 -0
  161. package/dist/server/tool-extra.test.js +88 -0
  162. package/dist/server/tool-extra.test.js.map +1 -0
  163. package/dist/server/view-name.test-d.d.ts +1 -0
  164. package/dist/server/view-name.test-d.js +8 -0
  165. package/dist/server/view-name.test-d.js.map +1 -0
  166. package/dist/server/view-resource-resolution.test.js +105 -17
  167. package/dist/server/view-resource-resolution.test.js.map +1 -1
  168. package/dist/server/viewsDevServer.js +4 -1
  169. package/dist/server/viewsDevServer.js.map +1 -1
  170. package/dist/test/utils.d.ts +9 -11
  171. package/dist/test/utils.js +220 -201
  172. package/dist/test/utils.js.map +1 -1
  173. package/dist/test/view.test.js +105 -133
  174. package/dist/test/view.test.js.map +1 -1
  175. package/dist/views/index.d.ts +10 -0
  176. package/dist/views/index.js +3 -0
  177. package/dist/views/index.js.map +1 -0
  178. package/dist/{web/plugin → views}/scan-views.js +1 -1
  179. package/dist/views/scan-views.js.map +1 -0
  180. package/dist/views/scan-views.test.d.ts +1 -0
  181. package/dist/views/scan-views.test.js.map +1 -0
  182. package/dist/views/validate-view.d.ts +1 -0
  183. package/dist/{web/plugin → views}/validate-view.js +2 -2
  184. package/dist/views/validate-view.js.map +1 -0
  185. package/dist/views/validate-view.test.d.ts +1 -0
  186. package/dist/views/validate-view.test.js.map +1 -0
  187. package/dist/web/bridges/adaptor.d.ts +51 -0
  188. package/dist/web/bridges/adaptor.js +327 -0
  189. package/dist/web/bridges/adaptor.js.map +1 -0
  190. package/dist/web/bridges/adaptor.test.d.ts +1 -0
  191. package/dist/web/bridges/adaptor.test.js +225 -0
  192. package/dist/web/bridges/adaptor.test.js.map +1 -0
  193. package/dist/web/bridges/apps-sdk/bridge.d.ts +6 -2
  194. package/dist/web/bridges/apps-sdk/bridge.js +15 -4
  195. package/dist/web/bridges/apps-sdk/bridge.js.map +1 -1
  196. package/dist/web/bridges/apps-sdk/index.d.ts +0 -1
  197. package/dist/web/bridges/apps-sdk/index.js +0 -1
  198. package/dist/web/bridges/apps-sdk/index.js.map +1 -1
  199. package/dist/web/bridges/apps-sdk/use-apps-sdk-context.d.ts +1 -1
  200. package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js +1 -1
  201. package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js.map +1 -1
  202. package/dist/web/bridges/get-adaptor.d.ts +4 -4
  203. package/dist/web/bridges/get-adaptor.js +6 -11
  204. package/dist/web/bridges/get-adaptor.js.map +1 -1
  205. package/dist/web/bridges/get-adaptor.test.d.ts +1 -0
  206. package/dist/web/bridges/get-adaptor.test.js +32 -0
  207. package/dist/web/bridges/get-adaptor.test.js.map +1 -0
  208. package/dist/web/bridges/mcp-app/bridge.d.ts +13 -2
  209. package/dist/web/bridges/mcp-app/bridge.js +52 -8
  210. package/dist/web/bridges/mcp-app/bridge.js.map +1 -1
  211. package/dist/web/bridges/mcp-app/bridge.test.d.ts +1 -0
  212. package/dist/web/bridges/mcp-app/bridge.test.js +17 -0
  213. package/dist/web/bridges/mcp-app/bridge.test.js.map +1 -0
  214. package/dist/web/bridges/mcp-app/index.d.ts +0 -1
  215. package/dist/web/bridges/mcp-app/index.js +0 -1
  216. package/dist/web/bridges/mcp-app/index.js.map +1 -1
  217. package/dist/web/bridges/mcp-app/types.d.ts +2 -0
  218. package/dist/web/bridges/mcp-app/types.js.map +1 -1
  219. package/dist/web/bridges/mcp-app/use-mcp-app-context.d.ts +1 -1
  220. package/dist/web/bridges/mcp-app/use-mcp-app-context.js +1 -1
  221. package/dist/web/bridges/mcp-app/use-mcp-app-context.js.map +1 -1
  222. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js +1 -1
  223. package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js.map +1 -1
  224. package/dist/web/bridges/mcp-app/view-tools.test.js +6 -7
  225. package/dist/web/bridges/mcp-app/view-tools.test.js.map +1 -1
  226. package/dist/web/bridges/types.d.ts +27 -12
  227. package/dist/web/bridges/types.js +14 -1
  228. package/dist/web/bridges/types.js.map +1 -1
  229. package/dist/web/bridges/types.test.d.ts +1 -0
  230. package/dist/web/bridges/types.test.js +19 -0
  231. package/dist/web/bridges/types.test.js.map +1 -0
  232. package/dist/web/components/modal-provider.d.ts +1 -1
  233. package/dist/web/components/modal-provider.js +4 -3
  234. package/dist/web/components/modal-provider.js.map +1 -1
  235. package/dist/web/create-store.test.js +10 -7
  236. package/dist/web/create-store.test.js.map +1 -1
  237. package/dist/web/data-llm.d.ts +1 -1
  238. package/dist/web/data-llm.test.js +20 -7
  239. package/dist/web/data-llm.test.js.map +1 -1
  240. package/dist/web/generate-helpers.d.ts +22 -18
  241. package/dist/web/generate-helpers.js +19 -15
  242. package/dist/web/generate-helpers.js.map +1 -1
  243. package/dist/web/generate-helpers.test-d.js +3 -3
  244. package/dist/web/generate-helpers.test-d.js.map +1 -1
  245. package/dist/web/generate-helpers.test.js +2 -2
  246. package/dist/web/generate-helpers.test.js.map +1 -1
  247. package/dist/web/hooks/index.d.ts +2 -1
  248. package/dist/web/hooks/index.js +2 -1
  249. package/dist/web/hooks/index.js.map +1 -1
  250. package/dist/web/hooks/test/utils.d.ts +2 -1
  251. package/dist/web/hooks/test/utils.js +1 -1
  252. package/dist/web/hooks/test/utils.js.map +1 -1
  253. package/dist/web/hooks/use-call-tool.test.js +39 -25
  254. package/dist/web/hooks/use-call-tool.test.js.map +1 -1
  255. package/dist/web/hooks/use-display-mode.d.ts +1 -1
  256. package/dist/web/hooks/use-display-mode.js +1 -1
  257. package/dist/web/hooks/use-display-mode.js.map +1 -1
  258. package/dist/web/hooks/use-display-mode.test.js +57 -21
  259. package/dist/web/hooks/use-display-mode.test.js.map +1 -1
  260. package/dist/web/hooks/use-download.d.ts +1 -3
  261. package/dist/web/hooks/use-download.js +1 -2
  262. package/dist/web/hooks/use-download.js.map +1 -1
  263. package/dist/web/hooks/use-download.test.js +18 -10
  264. package/dist/web/hooks/use-download.test.js.map +1 -1
  265. package/dist/web/hooks/use-files.test.js +11 -3
  266. package/dist/web/hooks/use-files.test.js.map +1 -1
  267. package/dist/web/hooks/use-host.d.ts +22 -0
  268. package/dist/web/hooks/use-host.js +30 -0
  269. package/dist/web/hooks/use-host.js.map +1 -0
  270. package/dist/web/hooks/use-host.test.d.ts +1 -0
  271. package/dist/web/hooks/use-host.test.js +59 -0
  272. package/dist/web/hooks/use-host.test.js.map +1 -0
  273. package/dist/web/hooks/use-open-external.test.js +15 -5
  274. package/dist/web/hooks/use-open-external.test.js.map +1 -1
  275. package/dist/web/hooks/use-register-view-tool.d.ts +2 -3
  276. package/dist/web/hooks/use-register-view-tool.js.map +1 -1
  277. package/dist/web/hooks/use-request-close.test.js +35 -40
  278. package/dist/web/hooks/use-request-close.test.js.map +1 -1
  279. package/dist/web/hooks/use-request-modal.test.js +11 -1
  280. package/dist/web/hooks/use-request-modal.test.js.map +1 -1
  281. package/dist/web/hooks/use-request-size.d.ts +1 -1
  282. package/dist/web/hooks/use-request-size.js +1 -1
  283. package/dist/web/hooks/use-request-size.js.map +1 -1
  284. package/dist/web/hooks/use-request-size.test.js +35 -53
  285. package/dist/web/hooks/use-request-size.test.js.map +1 -1
  286. package/dist/web/hooks/use-set-open-in-app-url.test.js +26 -12
  287. package/dist/web/hooks/use-set-open-in-app-url.test.js.map +1 -1
  288. package/dist/web/hooks/use-tool-info.d.ts +1 -20
  289. package/dist/web/hooks/use-tool-info.js +0 -1
  290. package/dist/web/hooks/use-tool-info.js.map +1 -1
  291. package/dist/web/hooks/use-tool-info.test-d.js +0 -5
  292. package/dist/web/hooks/use-tool-info.test-d.js.map +1 -1
  293. package/dist/web/hooks/use-tool-info.test.js +38 -33
  294. package/dist/web/hooks/use-tool-info.test.js.map +1 -1
  295. package/dist/web/hooks/use-user.d.ts +3 -2
  296. package/dist/web/hooks/use-user.js +4 -3
  297. package/dist/web/hooks/use-user.js.map +1 -1
  298. package/dist/web/hooks/use-user.test.js +85 -37
  299. package/dist/web/hooks/use-user.test.js.map +1 -1
  300. package/dist/web/hooks/use-view-state.js +19 -9
  301. package/dist/web/hooks/use-view-state.js.map +1 -1
  302. package/dist/web/hooks/use-view-state.test.js +39 -4
  303. package/dist/web/hooks/use-view-state.test.js.map +1 -1
  304. package/dist/web/hooks/use-viewport.d.ts +20 -0
  305. package/dist/web/hooks/use-viewport.js +21 -0
  306. package/dist/web/hooks/use-viewport.js.map +1 -0
  307. package/dist/web/hooks/use-viewport.test.d.ts +1 -0
  308. package/dist/web/hooks/use-viewport.test.js +109 -0
  309. package/dist/web/hooks/use-viewport.test.js.map +1 -0
  310. package/dist/web/mount-view.d.ts +3 -2
  311. package/dist/web/mount-view.js +5 -8
  312. package/dist/web/mount-view.js.map +1 -1
  313. package/package.json +31 -28
  314. package/dist/cli/resolve-views-dir.d.ts +0 -1
  315. package/dist/cli/resolve-views-dir.js.map +0 -1
  316. package/dist/server/auth/providers/stytch.test.js +0 -33
  317. package/dist/server/auth/providers/stytch.test.js.map +0 -1
  318. package/dist/server/auth/providers/workos.test.js +0 -41
  319. package/dist/server/auth/providers/workos.test.js.map +0 -1
  320. package/dist/web/bridges/apps-sdk/adaptor.d.ts +0 -29
  321. package/dist/web/bridges/apps-sdk/adaptor.js +0 -117
  322. package/dist/web/bridges/apps-sdk/adaptor.js.map +0 -1
  323. package/dist/web/bridges/mcp-app/adaptor.d.ts +0 -53
  324. package/dist/web/bridges/mcp-app/adaptor.js +0 -283
  325. package/dist/web/bridges/mcp-app/adaptor.js.map +0 -1
  326. package/dist/web/hooks/use-layout.d.ts +0 -24
  327. package/dist/web/hooks/use-layout.js +0 -25
  328. package/dist/web/hooks/use-layout.js.map +0 -1
  329. package/dist/web/hooks/use-layout.test.js +0 -96
  330. package/dist/web/hooks/use-layout.test.js.map +0 -1
  331. package/dist/web/plugin/data-llm.test.js +0 -81
  332. package/dist/web/plugin/data-llm.test.js.map +0 -1
  333. package/dist/web/plugin/plugin.d.ts +0 -33
  334. package/dist/web/plugin/plugin.js +0 -189
  335. package/dist/web/plugin/plugin.js.map +0 -1
  336. package/dist/web/plugin/scan-views.js.map +0 -1
  337. package/dist/web/plugin/scan-views.test.js.map +0 -1
  338. package/dist/web/plugin/transform-data-llm.d.ts +0 -12
  339. package/dist/web/plugin/transform-data-llm.js +0 -96
  340. package/dist/web/plugin/transform-data-llm.js.map +0 -1
  341. package/dist/web/plugin/transform-data-llm.test.js +0 -81
  342. package/dist/web/plugin/transform-data-llm.test.js.map +0 -1
  343. package/dist/web/plugin/validate-view.d.ts +0 -1
  344. package/dist/web/plugin/validate-view.js.map +0 -1
  345. package/dist/web/plugin/validate-view.test.js.map +0 -1
  346. /package/dist/{server/auth/providers/stytch.test.d.ts → cli/build-steps.test.d.ts} +0 -0
  347. /package/dist/{server/auth/providers/workos.test.d.ts → context-warnings.test.d.ts} +0 -0
  348. /package/dist/{web/hooks/use-layout.test.d.ts → server/app.test.d.ts} +0 -0
  349. /package/dist/{web/plugin/scan-views.test.d.ts → server/auth/providers/authplane.test.d.ts} +0 -0
  350. /package/dist/{web/plugin/transform-data-llm.test.d.ts → server/auth/providers/shared.test.d.ts} +0 -0
  351. /package/dist/{web/plugin/validate-view.test.d.ts → server/auth/security-schemes.test.d.ts} +0 -0
  352. /package/dist/{web/plugin/data-llm.test.d.ts → server/auth-extra.test-d.d.ts} +0 -0
  353. /package/dist/{web/plugin → views}/scan-views.d.ts +0 -0
  354. /package/dist/{web/plugin → views}/scan-views.test.js +0 -0
  355. /package/dist/{web/plugin → views}/validate-view.test.js +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skybridge",
3
- "version": "0.0.0-dev.fa77314",
3
+ "version": "0.0.0-dev.fa95a7b",
4
4
  "description": "Skybridge is a framework for building ChatGPT and MCP Apps",
5
5
  "repository": {
6
6
  "type": "git",
@@ -9,7 +9,7 @@
9
9
  "type": "module",
10
10
  "sideEffects": false,
11
11
  "engines": {
12
- "node": ">=22.0.0"
12
+ "node": ">=22.23.1"
13
13
  },
14
14
  "files": [
15
15
  "dist",
@@ -27,9 +27,9 @@
27
27
  "types": "./dist/web/index.d.ts",
28
28
  "default": "./dist/web/index.js"
29
29
  },
30
- "./vite": {
31
- "types": "./dist/web/plugin/plugin.d.ts",
32
- "default": "./dist/web/plugin/plugin.js"
30
+ "./views": {
31
+ "types": "./dist/views/index.d.ts",
32
+ "default": "./dist/views/index.js"
33
33
  }
34
34
  },
35
35
  "keywords": [
@@ -41,53 +41,56 @@
41
41
  "author": "Frédéric Barthelet",
42
42
  "license": "ISC",
43
43
  "peerDependencies": {
44
- "@modelcontextprotocol/sdk": ">=1.27.0",
45
- "@skybridge/devtools": "^1.1.0",
44
+ "@skybridge/devtools": "^2.0.0",
46
45
  "nodemon": ">=3.0.0",
47
46
  "react": ">=18.0.0",
48
47
  "react-dom": ">=18.0.0",
49
- "vite": ">=7.3.1"
48
+ "vite": ">=7.3.1",
49
+ "zod": "^4.2.0"
50
50
  },
51
51
  "dependencies": {
52
- "@babel/core": "^7.29.0",
53
- "@modelcontextprotocol/ext-apps": "^1.7.3",
54
- "@oclif/core": "^4.10.3",
52
+ "@modelcontextprotocol/core": "^2.0.0",
53
+ "@modelcontextprotocol/ext-apps": "^1.7.4",
54
+ "@modelcontextprotocol/express": "^2.0.0",
55
+ "@modelcontextprotocol/node": "^2.0.0",
56
+ "@modelcontextprotocol/sdk": "^1.29.0",
57
+ "@modelcontextprotocol/server": "^2.0.0",
58
+ "@oclif/core": "^4.11.14",
55
59
  "ci-info": "^4.4.0",
56
60
  "cors": "^2.8.6",
57
61
  "cross-spawn": "^7.0.6",
58
62
  "dequal": "^2.0.3",
59
- "es-toolkit": "^1.45.1",
60
- "esbuild": "^0.27.0",
63
+ "esbuild": "^0.28.1",
61
64
  "express": "^5.2.1",
62
65
  "handlebars": "^4.7.9",
63
- "ink": "^7.0.0",
64
- "jose": "^6.1.3",
66
+ "ink": "^7.1.1",
67
+ "jose": "^6.2.3",
65
68
  "open": "^11.0.0",
66
- "posthog-node": "^5.28.9",
69
+ "posthog-node": "^5.45.2",
67
70
  "superjson": "^2.2.6",
68
- "zustand": "^5.0.12"
71
+ "yaml": "^2.9.0",
72
+ "zustand": "^5.0.14"
69
73
  },
70
74
  "devDependencies": {
71
- "@modelcontextprotocol/sdk": "^1.29.0",
75
+ "@modelcontextprotocol/client": "^2.0.0",
72
76
  "@testing-library/dom": "^10.4.1",
73
77
  "@testing-library/react": "^16.3.2",
74
78
  "@total-typescript/tsconfig": "^1.0.4",
75
- "@types/babel__core": "^7.20.5",
76
79
  "@types/cors": "^2.8.19",
77
80
  "@types/cross-spawn": "^6.0.6",
78
81
  "@types/express": "^5.0.6",
79
- "@types/jsdom": "^28.0.1",
80
- "@types/node": "^24.12.0",
81
- "@types/react": "^19.2.14",
82
+ "@types/jsdom": "^28.0.3",
83
+ "@types/node": "^24.13.3",
84
+ "@types/react": "^19.2.17",
82
85
  "@types/react-dom": "^19.2.3",
83
- "@vitest/ui": "^4.1.4",
84
- "jsdom": "^29.0.1",
86
+ "@vitest/ui": "^4.1.10",
87
+ "jsdom": "^29.1.1",
85
88
  "shx": "^0.4.0",
86
89
  "ts-node": "^10.9.2",
87
- "typescript": "^6.0.2",
88
- "vite": "^8.0.0",
89
- "vitest": "^4.1.4",
90
- "zod": "^4.3.6"
90
+ "typescript": "^6.0.3",
91
+ "vite": "^8.1.5",
92
+ "vitest": "^4.1.10",
93
+ "zod": "^4.4.3"
91
94
  },
92
95
  "bin": {
93
96
  "sb": "./bin/run.js",
@@ -1 +0,0 @@
1
- export declare function resolveViewsDir(root: string): Promise<string | undefined>;
@@ -1 +0,0 @@
1
- {"version":3,"file":"resolve-views-dir.js","sourceRoot":"","sources":["../../src/cli/resolve-views-dir.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAY;IAEZ,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CACrC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,EACxC,SAAS,EACT,IAAI,CACL,CAAC;IAEF,MAAM,iBAAiB,GAAG,CACxB,KAAc,EAC2C,EAAE,CAC3D,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;IAE9C,MAAM,OAAO,GAA0D,EAAE,CAAC;IAC1E,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE;QAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;aAAM,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,CAAC;IACF,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACnC,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC;AACpE,CAAC","sourcesContent":["export async function resolveViewsDir(\n root: string,\n): Promise<string | undefined> {\n const { loadConfigFromFile } = await import(\"vite\");\n const loaded = await loadConfigFromFile(\n { command: \"build\", mode: \"production\" },\n undefined,\n root,\n );\n\n const isPluginCandidate = (\n value: unknown,\n ): value is { name?: string; api?: { viewsDir?: string } } =>\n typeof value === \"object\" && value !== null;\n\n const plugins: Array<{ name?: string; api?: { viewsDir?: string } }> = [];\n const walk = (value: unknown) => {\n if (Array.isArray(value)) {\n value.forEach(walk);\n } else if (isPluginCandidate(value)) {\n plugins.push(value);\n }\n };\n walk(loaded?.config.plugins ?? []);\n return plugins.find((p) => p.name === \"skybridge\")?.api?.viewsDir;\n}\n"]}
@@ -1,33 +0,0 @@
1
- // @vitest-environment node
2
- import { afterEach, describe, expect, it, vi } from "vitest";
3
- import { stytchProvider } from "./stytch.js";
4
- afterEach(() => vi.restoreAllMocks());
5
- function discoveryDoc(issuer) {
6
- return {
7
- issuer,
8
- authorization_endpoint: `${issuer}/authorize`,
9
- token_endpoint: `${issuer}/v1/oauth2/token`,
10
- registration_endpoint: `${issuer}/v1/oauth2/register`,
11
- response_types_supported: ["code"],
12
- scopes_supported: ["openid", "email"],
13
- jwks_uri: `${issuer}/.well-known/jwks.json`,
14
- };
15
- }
16
- function mockDiscovery(issuer) {
17
- return vi.spyOn(globalThis, "fetch").mockResolvedValue(new Response(JSON.stringify(discoveryDoc(issuer)), {
18
- headers: { "content-type": "application/json" },
19
- }));
20
- }
21
- describe("stytchProvider", () => {
22
- it("builds the issuer from the project domain", async () => {
23
- const fetchSpy = mockDiscovery("https://acme.customers.stytch.dev");
24
- const config = await stytchProvider({
25
- domain: "acme.customers.stytch.dev",
26
- audience: "project-live-123",
27
- });
28
- expect(fetchSpy).toHaveBeenCalledWith("https://acme.customers.stytch.dev/.well-known/openid-configuration", expect.anything());
29
- expect(config.verify.issuer).toBe("https://acme.customers.stytch.dev");
30
- expect(config.verify.audience).toBe("project-live-123");
31
- });
32
- });
33
- //# sourceMappingURL=stytch.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stytch.test.js","sourceRoot":"","sources":["../../../../src/server/auth/providers/stytch.test.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO;QACL,MAAM;QACN,sBAAsB,EAAE,GAAG,MAAM,YAAY;QAC7C,cAAc,EAAE,GAAG,MAAM,kBAAkB;QAC3C,qBAAqB,EAAE,GAAG,MAAM,qBAAqB;QACrD,wBAAwB,EAAE,CAAC,MAAM,CAAC;QAClC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;QACrC,QAAQ,EAAE,GAAG,MAAM,wBAAwB;KAC5C,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CACpD,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE;QACjD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CACH,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;QACzD,MAAM,QAAQ,GAAG,aAAa,CAAC,mCAAmC,CAAC,CAAC;QAEpE,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,MAAM,EAAE,2BAA2B;YACnC,QAAQ,EAAE,kBAAkB;SAC7B,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CACnC,oEAAoE,EACpE,MAAM,CAAC,QAAQ,EAAE,CAClB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QACvE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// @vitest-environment node\nimport { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { stytchProvider } from \"./stytch.js\";\n\nafterEach(() => vi.restoreAllMocks());\n\nfunction discoveryDoc(issuer: string) {\n return {\n issuer,\n authorization_endpoint: `${issuer}/authorize`,\n token_endpoint: `${issuer}/v1/oauth2/token`,\n registration_endpoint: `${issuer}/v1/oauth2/register`,\n response_types_supported: [\"code\"],\n scopes_supported: [\"openid\", \"email\"],\n jwks_uri: `${issuer}/.well-known/jwks.json`,\n };\n}\n\nfunction mockDiscovery(issuer: string) {\n return vi.spyOn(globalThis, \"fetch\").mockResolvedValue(\n new Response(JSON.stringify(discoveryDoc(issuer)), {\n headers: { \"content-type\": \"application/json\" },\n }),\n );\n}\n\ndescribe(\"stytchProvider\", () => {\n it(\"builds the issuer from the project domain\", async () => {\n const fetchSpy = mockDiscovery(\"https://acme.customers.stytch.dev\");\n\n const config = await stytchProvider({\n domain: \"acme.customers.stytch.dev\",\n audience: \"project-live-123\",\n });\n\n expect(fetchSpy).toHaveBeenCalledWith(\n \"https://acme.customers.stytch.dev/.well-known/openid-configuration\",\n expect.anything(),\n );\n expect(config.verify.issuer).toBe(\"https://acme.customers.stytch.dev\");\n expect(config.verify.audience).toBe(\"project-live-123\");\n });\n});\n"]}
@@ -1,41 +0,0 @@
1
- // @vitest-environment node
2
- import { afterEach, describe, expect, it, vi } from "vitest";
3
- import { workosProvider } from "./workos.js";
4
- afterEach(() => vi.restoreAllMocks());
5
- function discoveryDoc(issuer) {
6
- return {
7
- issuer,
8
- authorization_endpoint: `${issuer}/authorize`,
9
- token_endpoint: `${issuer}/token`,
10
- registration_endpoint: `${issuer}/register`,
11
- response_types_supported: ["code"],
12
- scopes_supported: ["openid", "email"],
13
- jwks_uri: `${issuer}/jwks`,
14
- };
15
- }
16
- function mockDiscovery(issuer) {
17
- return vi.spyOn(globalThis, "fetch").mockResolvedValue(new Response(JSON.stringify(discoveryDoc(issuer)), {
18
- headers: { "content-type": "application/json" },
19
- }));
20
- }
21
- describe("workosProvider", () => {
22
- it("builds the issuer from a bare AuthKit domain", async () => {
23
- const fetchSpy = mockDiscovery("https://acme.authkit.app");
24
- const config = await workosProvider({
25
- domain: "acme.authkit.app",
26
- audience: "https://mcp.example.com",
27
- });
28
- expect(fetchSpy).toHaveBeenCalledWith("https://acme.authkit.app/.well-known/openid-configuration", expect.anything());
29
- expect(config.verify.issuer).toBe("https://acme.authkit.app");
30
- expect(config.verify.audience).toBe("https://mcp.example.com");
31
- });
32
- it("accepts a full URL domain and strips a trailing slash", async () => {
33
- mockDiscovery("https://acme.authkit.app");
34
- const config = await workosProvider({
35
- domain: "https://acme.authkit.app/",
36
- audience: "https://mcp.example.com",
37
- });
38
- expect(config.verify.issuer).toBe("https://acme.authkit.app");
39
- });
40
- });
41
- //# sourceMappingURL=workos.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"workos.test.js","sourceRoot":"","sources":["../../../../src/server/auth/providers/workos.test.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;AAEtC,SAAS,YAAY,CAAC,MAAc;IAClC,OAAO;QACL,MAAM;QACN,sBAAsB,EAAE,GAAG,MAAM,YAAY;QAC7C,cAAc,EAAE,GAAG,MAAM,QAAQ;QACjC,qBAAqB,EAAE,GAAG,MAAM,WAAW;QAC3C,wBAAwB,EAAE,CAAC,MAAM,CAAC;QAClC,gBAAgB,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;QACrC,QAAQ,EAAE,GAAG,MAAM,OAAO;KAC3B,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CAAC,MAAc;IACnC,OAAO,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,iBAAiB,CACpD,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE;QACjD,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CACH,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,0BAA0B,CAAC,CAAC;QAE3D,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,MAAM,EAAE,kBAAkB;YAC1B,QAAQ,EAAE,yBAAyB;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CACnC,2DAA2D,EAC3D,MAAM,CAAC,QAAQ,EAAE,CAClB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC9D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,aAAa,CAAC,0BAA0B,CAAC,CAAC;QAE1C,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;YAClC,MAAM,EAAE,2BAA2B;YACnC,QAAQ,EAAE,yBAAyB;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["// @vitest-environment node\nimport { afterEach, describe, expect, it, vi } from \"vitest\";\nimport { workosProvider } from \"./workos.js\";\n\nafterEach(() => vi.restoreAllMocks());\n\nfunction discoveryDoc(issuer: string) {\n return {\n issuer,\n authorization_endpoint: `${issuer}/authorize`,\n token_endpoint: `${issuer}/token`,\n registration_endpoint: `${issuer}/register`,\n response_types_supported: [\"code\"],\n scopes_supported: [\"openid\", \"email\"],\n jwks_uri: `${issuer}/jwks`,\n };\n}\n\nfunction mockDiscovery(issuer: string) {\n return vi.spyOn(globalThis, \"fetch\").mockResolvedValue(\n new Response(JSON.stringify(discoveryDoc(issuer)), {\n headers: { \"content-type\": \"application/json\" },\n }),\n );\n}\n\ndescribe(\"workosProvider\", () => {\n it(\"builds the issuer from a bare AuthKit domain\", async () => {\n const fetchSpy = mockDiscovery(\"https://acme.authkit.app\");\n\n const config = await workosProvider({\n domain: \"acme.authkit.app\",\n audience: \"https://mcp.example.com\",\n });\n\n expect(fetchSpy).toHaveBeenCalledWith(\n \"https://acme.authkit.app/.well-known/openid-configuration\",\n expect.anything(),\n );\n expect(config.verify.issuer).toBe(\"https://acme.authkit.app\");\n expect(config.verify.audience).toBe(\"https://mcp.example.com\");\n });\n\n it(\"accepts a full URL domain and strips a trailing slash\", async () => {\n mockDiscovery(\"https://acme.authkit.app\");\n\n const config = await workosProvider({\n domain: \"https://acme.authkit.app/\",\n audience: \"https://mcp.example.com\",\n });\n\n expect(config.verify.issuer).toBe(\"https://acme.authkit.app\");\n });\n});\n"]}
@@ -1,29 +0,0 @@
1
- import type { Adaptor, CallToolResponse, DownloadParams, DownloadResult, FileMetadata, HostContext, HostContextStore, OpenExternalOptions, RequestDisplayMode, RequestModalOptions, RequestSizeOptions, SendFollowUpMessageOptions, SetViewStateAction, UploadFileOptions } from "../types.js";
2
- /** @internal Apps SDK implementation of {@link Adaptor}. Resolved via {@link getAdaptor}. */
3
- export declare class AppsSdkAdaptor implements Adaptor {
4
- private static instance;
5
- static getInstance(): AppsSdkAdaptor;
6
- static resetInstance(): void;
7
- getHostContextStore<K extends keyof HostContext>(key: K): HostContextStore<K>;
8
- callTool: <ToolArgs extends Record<string, unknown> | null = null, ToolResponse extends CallToolResponse = CallToolResponse>(name: string, args: ToolArgs) => Promise<ToolResponse>;
9
- requestDisplayMode: (mode: RequestDisplayMode) => Promise<{
10
- mode: RequestDisplayMode;
11
- }>;
12
- requestClose: () => Promise<void>;
13
- requestSize: (_size: RequestSizeOptions) => Promise<void>;
14
- sendFollowUpMessage: (prompt: string, options?: SendFollowUpMessageOptions) => Promise<void>;
15
- download: (_params: DownloadParams) => Promise<DownloadResult>;
16
- openExternal(href: string, options?: OpenExternalOptions): void;
17
- setViewState: (stateOrUpdater: SetViewStateAction) => Promise<void>;
18
- uploadFile: (file: File, options?: UploadFileOptions) => Promise<FileMetadata>;
19
- getFileDownloadUrl: (file: {
20
- fileId: string;
21
- }) => Promise<{
22
- downloadUrl: string;
23
- }>;
24
- selectFiles: () => Promise<FileMetadata[]>;
25
- private trackFileIds;
26
- openModal(options: RequestModalOptions): Promise<void>;
27
- setOpenInAppUrl(href: string): Promise<void>;
28
- registerViewTool: () => (() => void);
29
- }
@@ -1,117 +0,0 @@
1
- import { AppsSdkBridge } from "./bridge.js";
2
- /** @internal Apps SDK implementation of {@link Adaptor}. Resolved via {@link getAdaptor}. */
3
- export class AppsSdkAdaptor {
4
- static instance = null;
5
- static getInstance() {
6
- if (!AppsSdkAdaptor.instance) {
7
- AppsSdkAdaptor.instance = new AppsSdkAdaptor();
8
- }
9
- return AppsSdkAdaptor.instance;
10
- }
11
- static resetInstance() {
12
- AppsSdkAdaptor.instance = null;
13
- }
14
- getHostContextStore(key) {
15
- const bridge = AppsSdkBridge.getInstance();
16
- if (key === "viewState") {
17
- return {
18
- subscribe: bridge.subscribe("widgetState"),
19
- getSnapshot: () => bridge.getSnapshot("widgetState")?.modelContent ?? null,
20
- };
21
- }
22
- if (key === "display") {
23
- return {
24
- subscribe: bridge.subscribe("view"),
25
- getSnapshot: () => bridge.getSnapshot("view"),
26
- };
27
- }
28
- return {
29
- subscribe: bridge.subscribe(key),
30
- getSnapshot: () => bridge.getSnapshot(key),
31
- };
32
- }
33
- callTool = async (name, args) => {
34
- const response = await window.openai.callTool(name, args);
35
- return {
36
- content: response.content,
37
- structuredContent: response.structuredContent ?? {},
38
- isError: response.isError ?? false,
39
- meta: response._meta ?? response.meta ?? {},
40
- };
41
- };
42
- requestDisplayMode = (mode) => {
43
- return window.openai.requestDisplayMode({ mode });
44
- };
45
- requestClose = () => {
46
- return window.openai.requestClose();
47
- };
48
- requestSize = async (_size) => {
49
- console.warn("[skybridge] requestSize: not supported on Apps SDK");
50
- };
51
- sendFollowUpMessage = (prompt, options) => {
52
- return window.openai.sendFollowUpMessage({
53
- prompt,
54
- scrollToBottom: options?.scrollToBottom,
55
- });
56
- };
57
- download = async (_params) => {
58
- console.error("[skybridge] download: not supported on Apps SDK");
59
- return { isError: true };
60
- };
61
- openExternal(href, options = {}) {
62
- window.openai.openExternal({ href, ...options });
63
- }
64
- setViewState = (stateOrUpdater) => {
65
- const modelContent = typeof stateOrUpdater === "function"
66
- ? stateOrUpdater(window.openai.widgetState?.modelContent ?? null)
67
- : stateOrUpdater;
68
- return window.openai.setWidgetState({
69
- privateContent: {},
70
- ...window.openai.widgetState,
71
- modelContent,
72
- });
73
- };
74
- uploadFile = async (file, options) => {
75
- const metadata = await window.openai.uploadFile(file, options);
76
- await this.trackFileIds(metadata.fileId);
77
- return metadata;
78
- };
79
- getFileDownloadUrl = (file) => {
80
- return window.openai.getFileDownloadUrl(file);
81
- };
82
- selectFiles = async () => {
83
- if (!window.openai.selectFiles) {
84
- throw new Error("selectFiles is not supported by the current host version.");
85
- }
86
- const files = await window.openai.selectFiles();
87
- if (files.length > 0) {
88
- await this.trackFileIds(...files.map((f) => f.fileId));
89
- }
90
- return files;
91
- };
92
- async trackFileIds(...fileIds) {
93
- const state = window.openai.widgetState
94
- ? { ...window.openai.widgetState }
95
- : { modelContent: {}, privateContent: {} };
96
- if (!state.imageIds) {
97
- state.imageIds = [];
98
- }
99
- state.imageIds.push(...fileIds);
100
- await window.openai.setWidgetState(state);
101
- }
102
- openModal(options) {
103
- return window.openai.requestModal(options);
104
- }
105
- setOpenInAppUrl(href) {
106
- href = href.trim();
107
- if (!href) {
108
- throw new Error("The href parameter is required.");
109
- }
110
- return window.openai.setOpenInAppUrl({ href });
111
- }
112
- registerViewTool = () => {
113
- console.warn("[skybridge] registerViewTool: view tools are not supported on the Apps SDK runtime");
114
- return () => { };
115
- };
116
- }
117
- //# sourceMappingURL=adaptor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"adaptor.js","sourceRoot":"","sources":["../../../../src/web/bridges/apps-sdk/adaptor.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n Adaptor,\n CallToolResponse,\n DownloadParams,\n DownloadResult,\n FileMetadata,\n HostContext,\n HostContextStore,\n OpenExternalOptions,\n RequestDisplayMode,\n RequestModalOptions,\n RequestSizeOptions,\n SendFollowUpMessageOptions,\n SetViewStateAction,\n UploadFileOptions,\n} from \"../types.js\";\nimport { AppsSdkBridge } from \"./bridge.js\";\nimport type { AppsSdkWidgetState } from \"./types.js\";\n\n/** @internal Apps SDK implementation of {@link Adaptor}. Resolved via {@link getAdaptor}. */\nexport class AppsSdkAdaptor implements Adaptor {\n private static instance: AppsSdkAdaptor | null = null;\n\n public static getInstance(): AppsSdkAdaptor {\n if (!AppsSdkAdaptor.instance) {\n AppsSdkAdaptor.instance = new AppsSdkAdaptor();\n }\n return AppsSdkAdaptor.instance;\n }\n\n public static resetInstance(): void {\n AppsSdkAdaptor.instance = null;\n }\n\n public getHostContextStore<K extends keyof HostContext>(\n key: K,\n ): HostContextStore<K> {\n const bridge = AppsSdkBridge.getInstance();\n\n if (key === \"viewState\") {\n return {\n subscribe: bridge.subscribe(\"widgetState\"),\n getSnapshot: () =>\n bridge.getSnapshot(\"widgetState\")?.modelContent ?? null,\n } as HostContextStore<K>;\n }\n\n if (key === \"display\") {\n return {\n subscribe: bridge.subscribe(\"view\"),\n getSnapshot: () => bridge.getSnapshot(\"view\"),\n } as HostContextStore<K>;\n }\n\n return {\n subscribe: bridge.subscribe(key),\n getSnapshot: () => bridge.getSnapshot(key),\n } as HostContextStore<K>;\n }\n\n public callTool = async <\n ToolArgs extends Record<string, unknown> | null = null,\n ToolResponse extends CallToolResponse = CallToolResponse,\n >(\n name: string,\n args: ToolArgs,\n ): Promise<ToolResponse> => {\n const response = await (window.openai.callTool(name, args) as Promise<\n CallToolResponse & { _meta?: CallToolResponse[\"meta\"] }\n >);\n return {\n content: response.content,\n structuredContent: response.structuredContent ?? {},\n isError: response.isError ?? false,\n meta: response._meta ?? response.meta ?? {},\n } as ToolResponse;\n };\n\n public requestDisplayMode = (\n mode: RequestDisplayMode,\n ): Promise<{ mode: RequestDisplayMode }> => {\n return window.openai.requestDisplayMode({ mode });\n };\n\n public requestClose = (): Promise<void> => {\n return window.openai.requestClose();\n };\n\n public requestSize = async (_size: RequestSizeOptions): Promise<void> => {\n console.warn(\"[skybridge] requestSize: not supported on Apps SDK\");\n };\n\n public sendFollowUpMessage = (\n prompt: string,\n options?: SendFollowUpMessageOptions,\n ): Promise<void> => {\n return window.openai.sendFollowUpMessage({\n prompt,\n scrollToBottom: options?.scrollToBottom,\n });\n };\n\n public download = async (\n _params: DownloadParams,\n ): Promise<DownloadResult> => {\n console.error(\"[skybridge] download: not supported on Apps SDK\");\n return { isError: true };\n };\n\n public openExternal(href: string, options: OpenExternalOptions = {}): void {\n window.openai.openExternal({ href, ...options });\n }\n\n public setViewState = (stateOrUpdater: SetViewStateAction): Promise<void> => {\n const modelContent =\n typeof stateOrUpdater === \"function\"\n ? stateOrUpdater(window.openai.widgetState?.modelContent ?? null)\n : stateOrUpdater;\n\n return window.openai.setWidgetState({\n privateContent: {},\n ...window.openai.widgetState,\n modelContent,\n });\n };\n\n public uploadFile = async (file: File, options?: UploadFileOptions) => {\n const metadata = await window.openai.uploadFile(file, options);\n await this.trackFileIds(metadata.fileId);\n return metadata;\n };\n\n public getFileDownloadUrl = (file: { fileId: string }) => {\n return window.openai.getFileDownloadUrl(file);\n };\n\n public selectFiles = async (): Promise<FileMetadata[]> => {\n if (!window.openai.selectFiles) {\n throw new Error(\n \"selectFiles is not supported by the current host version.\",\n );\n }\n const files = await window.openai.selectFiles();\n if (files.length > 0) {\n await this.trackFileIds(...files.map((f) => f.fileId));\n }\n return files;\n };\n\n private async trackFileIds(...fileIds: string[]): Promise<void> {\n const state: AppsSdkWidgetState = window.openai.widgetState\n ? { ...window.openai.widgetState }\n : { modelContent: {}, privateContent: {} };\n if (!state.imageIds) {\n state.imageIds = [];\n }\n state.imageIds.push(...fileIds);\n await window.openai.setWidgetState(state);\n }\n\n public openModal(options: RequestModalOptions) {\n return window.openai.requestModal(options);\n }\n\n public setOpenInAppUrl(href: string): Promise<void> {\n href = href.trim();\n\n if (!href) {\n throw new Error(\"The href parameter is required.\");\n }\n\n return window.openai.setOpenInAppUrl({ href });\n }\n\n public registerViewTool = (): (() => void) => {\n console.warn(\n \"[skybridge] registerViewTool: view tools are not supported on the Apps SDK runtime\",\n );\n return () => {};\n };\n}\n"]}
@@ -1,53 +0,0 @@
1
- import type { Adaptor, AnyViewToolHandler, CallToolResponse, DownloadParams, DownloadResult, HostContext, HostContextStore, OpenExternalOptions, RequestDisplayMode, RequestModalOptions, RequestSizeOptions, SendFollowUpMessageOptions, SetViewStateAction, ViewToolConfig } from "../types.js";
2
- /** @internal MCP Apps implementation of {@link Adaptor}. Resolved via {@link getAdaptor}. */
3
- export declare class McpAppAdaptor implements Adaptor {
4
- private static instance;
5
- private stores;
6
- private _viewState;
7
- private viewStateListeners;
8
- private _viewUUID;
9
- private _displayState;
10
- private displayListeners;
11
- private constructor();
12
- static getInstance(): McpAppAdaptor;
13
- static resetInstance(): void;
14
- getHostContextStore<K extends keyof HostContext>(key: K): HostContextStore<K>;
15
- callTool: <ToolArgs extends Record<string, unknown> | null = null, ToolResponse extends CallToolResponse = CallToolResponse>(name: string, args: ToolArgs) => Promise<ToolResponse>;
16
- requestDisplayMode: (mode: RequestDisplayMode) => Promise<{
17
- [x: string]: unknown;
18
- mode: "inline" | "fullscreen" | "pip";
19
- }>;
20
- requestClose: () => Promise<void>;
21
- requestSize: (size: RequestSizeOptions) => Promise<void>;
22
- sendFollowUpMessage: (prompt: string, _options?: SendFollowUpMessageOptions) => Promise<void>;
23
- download: (params: DownloadParams) => Promise<DownloadResult>;
24
- openExternal(href: string, options?: OpenExternalOptions): void;
25
- private initializeStores;
26
- setViewState: (stateOrUpdater: SetViewStateAction) => Promise<void>;
27
- /**
28
- * @throws File upload is not supported in MCP App.
29
- */
30
- uploadFile(): Promise<{
31
- fileId: string;
32
- }>;
33
- /**
34
- * @throws File download is not supported in MCP App.
35
- */
36
- getFileDownloadUrl(): Promise<{
37
- downloadUrl: string;
38
- }>;
39
- /**
40
- * @throws File selection is not supported in MCP App.
41
- */
42
- selectFiles(): Promise<{
43
- fileId: string;
44
- }[]>;
45
- openModal(options: RequestModalOptions): void;
46
- closeModal(): void;
47
- setOpenInAppUrl(_href: string): Promise<void>;
48
- registerViewTool: (config: ViewToolConfig, handler: AnyViewToolHandler) => (() => void);
49
- private subscribeToViewUUID;
50
- private restoreFromLocalStorage;
51
- private persistToLocalStorage;
52
- private createHostContextStore;
53
- }