skybridge 0.0.0-dev.f792261 → 0.0.0-dev.f7943e6
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.
- package/README.md +126 -124
- package/dist/cli/build-helpers.d.ts +11 -0
- package/dist/cli/build-helpers.js +107 -0
- package/dist/cli/build-helpers.js.map +1 -0
- package/dist/cli/build-helpers.test.js +132 -0
- package/dist/cli/build-helpers.test.js.map +1 -0
- package/dist/cli/build-steps.d.ts +2 -0
- package/dist/cli/build-steps.js +73 -0
- package/dist/cli/build-steps.js.map +1 -0
- package/dist/cli/build-steps.test.js +52 -0
- package/dist/cli/build-steps.test.js.map +1 -0
- package/dist/cli/detect-port.d.ts +2 -2
- package/dist/cli/detect-port.js +9 -20
- package/dist/cli/detect-port.js.map +1 -1
- package/dist/cli/header.d.ts +1 -1
- package/dist/cli/resolve-skybridge-config.d.ts +5 -0
- package/dist/cli/resolve-skybridge-config.js +18 -0
- package/dist/cli/resolve-skybridge-config.js.map +1 -0
- package/dist/cli/run-plain.d.ts +18 -0
- package/dist/cli/run-plain.js +89 -0
- package/dist/cli/run-plain.js.map +1 -0
- package/dist/cli/use-nodemon.d.ts +14 -0
- package/dist/cli/use-nodemon.js +71 -60
- package/dist/cli/use-nodemon.js.map +1 -1
- package/dist/cli/use-typescript-check.d.ts +8 -2
- package/dist/cli/use-typescript-check.js +71 -68
- package/dist/cli/use-typescript-check.js.map +1 -1
- package/dist/commands/build.d.ts +0 -3
- package/dist/commands/build.js +2 -73
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/create.d.ts +9 -0
- package/dist/commands/create.js +30 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/dev.d.ts +1 -0
- package/dist/commands/dev.js +48 -0
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/start.js +7 -1
- package/dist/commands/start.js.map +1 -1
- package/dist/context-warnings.d.ts +5 -0
- package/dist/context-warnings.js +31 -0
- package/dist/context-warnings.js.map +1 -0
- package/dist/context-warnings.test.js +28 -0
- package/dist/context-warnings.test.js.map +1 -0
- package/dist/server/asset-base-url-transform-plugin.d.ts +1 -0
- package/dist/server/asset-base-url-transform-plugin.js +16 -1
- package/dist/server/asset-base-url-transform-plugin.js.map +1 -1
- package/dist/server/asset-base-url-transform-plugin.test.js +51 -1
- package/dist/server/asset-base-url-transform-plugin.test.js.map +1 -1
- package/dist/server/auth/discovery.d.ts +32 -0
- package/dist/server/auth/discovery.js +56 -0
- package/dist/server/auth/discovery.js.map +1 -0
- package/dist/server/auth/discovery.test.d.ts +1 -0
- package/dist/server/auth/discovery.test.js +93 -0
- package/dist/server/auth/discovery.test.js.map +1 -0
- package/dist/server/auth/index.d.ts +44 -0
- package/dist/server/auth/index.js +2 -0
- package/dist/server/auth/index.js.map +1 -0
- package/dist/server/auth/providers/auth0.d.ts +40 -0
- package/dist/server/auth/providers/auth0.js +31 -0
- package/dist/server/auth/providers/auth0.js.map +1 -0
- package/dist/server/auth/providers/auth0.test.d.ts +1 -0
- package/dist/server/auth/providers/auth0.test.js +50 -0
- package/dist/server/auth/providers/auth0.test.js.map +1 -0
- package/dist/server/auth/providers/authplane.d.ts +49 -0
- package/dist/server/auth/providers/authplane.js +57 -0
- package/dist/server/auth/providers/authplane.js.map +1 -0
- package/dist/server/auth/providers/authplane.test.d.ts +1 -0
- package/dist/server/auth/providers/authplane.test.js +140 -0
- package/dist/server/auth/providers/authplane.test.js.map +1 -0
- package/dist/server/auth/providers/clerk.d.ts +51 -0
- package/dist/server/auth/providers/clerk.js +19 -0
- package/dist/server/auth/providers/clerk.js.map +1 -0
- package/dist/server/auth/providers/clerk.test.d.ts +1 -0
- package/dist/server/auth/providers/clerk.test.js +30 -0
- package/dist/server/auth/providers/clerk.test.js.map +1 -0
- package/dist/server/auth/providers/custom.d.ts +40 -0
- package/dist/server/auth/providers/custom.js +56 -0
- package/dist/server/auth/providers/custom.js.map +1 -0
- package/dist/server/auth/providers/custom.test.d.ts +1 -0
- package/dist/server/auth/providers/custom.test.js +158 -0
- package/dist/server/auth/providers/custom.test.js.map +1 -0
- package/dist/server/auth/providers/descope.d.ts +44 -0
- package/dist/server/auth/providers/descope.js +44 -0
- package/dist/server/auth/providers/descope.js.map +1 -0
- package/dist/server/auth/providers/descope.test.d.ts +1 -0
- package/dist/server/auth/providers/descope.test.js +62 -0
- package/dist/server/auth/providers/descope.test.js.map +1 -0
- package/dist/server/auth/providers/shared.d.ts +2 -0
- package/dist/server/auth/providers/shared.js +6 -0
- package/dist/server/auth/providers/shared.js.map +1 -0
- package/dist/server/auth/providers/shared.test.d.ts +1 -0
- package/dist/server/auth/providers/shared.test.js +10 -0
- package/dist/server/auth/providers/shared.test.js.map +1 -0
- package/dist/server/auth/providers/stytch.d.ts +25 -0
- package/dist/server/auth/providers/stytch.js +16 -0
- package/dist/server/auth/providers/stytch.js.map +1 -0
- package/dist/server/auth/providers/verify-spy.d.ts +12 -0
- package/dist/server/auth/providers/verify-spy.js +21 -0
- package/dist/server/auth/providers/verify-spy.js.map +1 -0
- package/dist/server/auth/providers/workos.d.ts +33 -0
- package/dist/server/auth/providers/workos.js +15 -0
- package/dist/server/auth/providers/workos.js.map +1 -0
- package/dist/server/auth/security-schemes.d.ts +23 -0
- package/dist/server/auth/security-schemes.js +64 -0
- package/dist/server/auth/security-schemes.js.map +1 -0
- package/dist/server/auth/security-schemes.test.d.ts +1 -0
- package/dist/server/auth/security-schemes.test.js +99 -0
- package/dist/server/auth/security-schemes.test.js.map +1 -0
- package/dist/server/auth/setup.d.ts +6 -0
- package/dist/server/auth/setup.js +92 -0
- package/dist/server/auth/setup.js.map +1 -0
- package/dist/server/auth/setup.test.d.ts +1 -0
- package/dist/server/auth/setup.test.js +508 -0
- package/dist/server/auth/setup.test.js.map +1 -0
- package/dist/server/auth/verify.d.ts +46 -0
- package/dist/server/auth/verify.js +62 -0
- package/dist/server/auth/verify.js.map +1 -0
- package/dist/server/auth/verify.test.d.ts +1 -0
- package/dist/server/auth/verify.test.js +149 -0
- package/dist/server/auth/verify.test.js.map +1 -0
- package/dist/server/auth-extra.test-d.js +82 -0
- package/dist/server/auth-extra.test-d.js.map +1 -0
- package/dist/server/auth.d.ts +58 -0
- package/dist/server/auth.js +28 -0
- package/dist/server/auth.js.map +1 -0
- package/dist/server/build-manifest.test.d.ts +1 -0
- package/dist/server/build-manifest.test.js +27 -0
- package/dist/server/build-manifest.test.js.map +1 -0
- package/dist/server/content-helpers.d.ts +40 -0
- package/dist/server/content-helpers.js +33 -0
- package/dist/server/content-helpers.js.map +1 -1
- package/dist/server/express.test.js +61 -0
- package/dist/server/express.test.js.map +1 -1
- package/dist/server/file-ref.d.ts +28 -0
- package/dist/server/file-ref.js +27 -0
- package/dist/server/file-ref.js.map +1 -0
- package/dist/server/host.d.ts +2 -0
- package/dist/server/host.js +11 -0
- package/dist/server/host.js.map +1 -0
- package/dist/server/host.test.d.ts +1 -0
- package/dist/server/host.test.js +13 -0
- package/dist/server/host.test.js.map +1 -0
- package/dist/server/index.d.ts +15 -2
- package/dist/server/index.js +13 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/middleware.d.ts +47 -9
- package/dist/server/middleware.js +33 -0
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/middleware.test.js +37 -1
- package/dist/server/middleware.test.js.map +1 -1
- package/dist/server/register-tool.test.d.ts +1 -0
- package/dist/server/register-tool.test.js +26 -0
- package/dist/server/register-tool.test.js.map +1 -0
- package/dist/server/requestOrigin.d.ts +7 -0
- package/dist/server/requestOrigin.js +25 -0
- package/dist/server/requestOrigin.js.map +1 -0
- package/dist/server/server.d.ts +291 -19
- package/dist/server/server.js +458 -178
- package/dist/server/server.js.map +1 -1
- package/dist/server/skills-integration.test.d.ts +1 -0
- package/dist/server/skills-integration.test.js +79 -0
- package/dist/server/skills-integration.test.js.map +1 -0
- package/dist/server/skills.d.ts +29 -0
- package/dist/server/skills.js +195 -0
- package/dist/server/skills.js.map +1 -0
- package/dist/server/skills.test.d.ts +1 -0
- package/dist/server/skills.test.js +247 -0
- package/dist/server/skills.test.js.map +1 -0
- package/dist/server/view-name.test-d.d.ts +1 -0
- package/dist/server/view-name.test-d.js +8 -0
- package/dist/server/view-name.test-d.js.map +1 -0
- package/dist/server/view-resource-resolution.test.d.ts +6 -0
- package/dist/server/view-resource-resolution.test.js +171 -0
- package/dist/server/view-resource-resolution.test.js.map +1 -0
- package/dist/server/viewsDevServer.js +4 -1
- package/dist/server/viewsDevServer.js.map +1 -1
- package/dist/test/utils.d.ts +3 -3
- package/dist/test/view.test.js +125 -96
- package/dist/test/view.test.js.map +1 -1
- package/dist/views/index.d.ts +3 -0
- package/dist/views/index.js +3 -0
- package/dist/views/index.js.map +1 -0
- package/dist/{web/plugin → views}/scan-views.js +1 -1
- package/dist/views/scan-views.js.map +1 -0
- package/dist/views/scan-views.test.d.ts +1 -0
- package/dist/views/scan-views.test.js.map +1 -0
- package/dist/views/validate-view.d.ts +1 -0
- package/dist/{web/plugin → views}/validate-view.js +2 -2
- package/dist/views/validate-view.js.map +1 -0
- package/dist/views/validate-view.test.d.ts +1 -0
- package/dist/views/validate-view.test.js.map +1 -0
- package/dist/web/bridges/adaptor.d.ts +51 -0
- package/dist/web/bridges/adaptor.js +327 -0
- package/dist/web/bridges/adaptor.js.map +1 -0
- package/dist/web/bridges/adaptor.test.d.ts +1 -0
- package/dist/web/bridges/adaptor.test.js +225 -0
- package/dist/web/bridges/adaptor.test.js.map +1 -0
- package/dist/web/bridges/apps-sdk/bridge.d.ts +6 -1
- package/dist/web/bridges/apps-sdk/bridge.js +15 -3
- package/dist/web/bridges/apps-sdk/bridge.js.map +1 -1
- package/dist/web/bridges/apps-sdk/index.d.ts +0 -1
- package/dist/web/bridges/apps-sdk/index.js +0 -1
- package/dist/web/bridges/apps-sdk/index.js.map +1 -1
- package/dist/web/bridges/apps-sdk/types.d.ts +2 -0
- package/dist/web/bridges/apps-sdk/types.js.map +1 -1
- package/dist/web/bridges/apps-sdk/use-apps-sdk-context.d.ts +11 -0
- package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js +11 -0
- package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js.map +1 -1
- package/dist/web/bridges/get-adaptor.d.ts +7 -0
- package/dist/web/bridges/get-adaptor.js +9 -7
- package/dist/web/bridges/get-adaptor.js.map +1 -1
- package/dist/web/bridges/get-adaptor.test.d.ts +1 -0
- package/dist/web/bridges/get-adaptor.test.js +32 -0
- package/dist/web/bridges/get-adaptor.test.js.map +1 -0
- package/dist/web/bridges/mcp-app/bridge.d.ts +15 -2
- package/dist/web/bridges/mcp-app/bridge.js +73 -7
- package/dist/web/bridges/mcp-app/bridge.js.map +1 -1
- package/dist/web/bridges/mcp-app/bridge.test.d.ts +1 -0
- package/dist/web/bridges/mcp-app/bridge.test.js +17 -0
- package/dist/web/bridges/mcp-app/bridge.test.js.map +1 -0
- package/dist/web/bridges/mcp-app/index.d.ts +0 -1
- package/dist/web/bridges/mcp-app/index.js +0 -1
- package/dist/web/bridges/mcp-app/index.js.map +1 -1
- package/dist/web/bridges/mcp-app/types.d.ts +2 -0
- package/dist/web/bridges/mcp-app/types.js.map +1 -1
- package/dist/web/bridges/mcp-app/use-mcp-app-context.d.ts +12 -0
- package/dist/web/bridges/mcp-app/use-mcp-app-context.js +12 -0
- package/dist/web/bridges/mcp-app/use-mcp-app-context.js.map +1 -1
- package/dist/web/bridges/mcp-app/view-tools.test.d.ts +1 -0
- package/dist/web/bridges/mcp-app/view-tools.test.js +143 -0
- package/dist/web/bridges/mcp-app/view-tools.test.js.map +1 -0
- package/dist/web/bridges/types.d.ts +104 -1
- package/dist/web/bridges/types.js +14 -1
- package/dist/web/bridges/types.js.map +1 -1
- package/dist/web/bridges/types.test.d.ts +1 -0
- package/dist/web/bridges/types.test.js +19 -0
- package/dist/web/bridges/types.test.js.map +1 -0
- package/dist/web/bridges/use-host-context.d.ts +5 -0
- package/dist/web/bridges/use-host-context.js +5 -0
- package/dist/web/bridges/use-host-context.js.map +1 -1
- package/dist/web/components/modal-provider.d.ts +1 -1
- package/dist/web/components/modal-provider.js +4 -3
- package/dist/web/components/modal-provider.js.map +1 -1
- package/dist/web/create-store.d.ts +26 -0
- package/dist/web/create-store.js +26 -0
- package/dist/web/create-store.js.map +1 -1
- package/dist/web/create-store.test.js +8 -5
- package/dist/web/create-store.test.js.map +1 -1
- package/dist/web/data-llm.d.ts +34 -1
- package/dist/web/data-llm.js +28 -0
- package/dist/web/data-llm.js.map +1 -1
- package/dist/web/data-llm.test.js +18 -5
- package/dist/web/data-llm.test.js.map +1 -1
- package/dist/web/generate-helpers.d.ts +2 -0
- package/dist/web/generate-helpers.js +2 -0
- package/dist/web/generate-helpers.js.map +1 -1
- package/dist/web/generate-helpers.test-d.js +4 -2
- package/dist/web/generate-helpers.test-d.js.map +1 -1
- package/dist/web/hooks/index.d.ts +5 -0
- package/dist/web/hooks/index.js +5 -0
- package/dist/web/hooks/index.js.map +1 -1
- package/dist/web/hooks/test/utils.d.ts +7 -2
- package/dist/web/hooks/test/utils.js +14 -3
- package/dist/web/hooks/test/utils.js.map +1 -1
- package/dist/web/hooks/use-call-tool.d.ts +45 -0
- package/dist/web/hooks/use-call-tool.js +28 -0
- package/dist/web/hooks/use-call-tool.js.map +1 -1
- package/dist/web/hooks/use-call-tool.test.js +62 -23
- package/dist/web/hooks/use-call-tool.test.js.map +1 -1
- package/dist/web/hooks/use-display-mode.d.ts +20 -0
- package/dist/web/hooks/use-display-mode.js +20 -0
- package/dist/web/hooks/use-display-mode.js.map +1 -1
- package/dist/web/hooks/use-display-mode.test.js +56 -20
- package/dist/web/hooks/use-display-mode.test.js.map +1 -1
- package/dist/web/hooks/use-download.d.ts +5 -0
- package/dist/web/hooks/use-download.js +8 -0
- package/dist/web/hooks/use-download.js.map +1 -0
- package/dist/web/hooks/use-download.test.d.ts +1 -0
- package/dist/web/hooks/use-download.test.js +103 -0
- package/dist/web/hooks/use-download.test.js.map +1 -0
- package/dist/web/hooks/use-files.d.ts +32 -0
- package/dist/web/hooks/use-files.js +32 -0
- package/dist/web/hooks/use-files.js.map +1 -1
- package/dist/web/hooks/use-files.test.js +10 -2
- package/dist/web/hooks/use-files.test.js.map +1 -1
- package/dist/web/hooks/use-host-info.d.ts +22 -0
- package/dist/web/hooks/use-host-info.js +30 -0
- package/dist/web/hooks/use-host-info.js.map +1 -0
- package/dist/web/hooks/use-host-info.test.d.ts +1 -0
- package/dist/web/hooks/use-host-info.test.js +59 -0
- package/dist/web/hooks/use-host-info.test.js.map +1 -0
- package/dist/web/hooks/use-layout.d.ts +2 -0
- package/dist/web/hooks/use-layout.js +2 -0
- package/dist/web/hooks/use-layout.js.map +1 -1
- package/dist/web/hooks/use-layout.test.js +59 -26
- package/dist/web/hooks/use-layout.test.js.map +1 -1
- package/dist/web/hooks/use-open-external.d.ts +17 -0
- package/dist/web/hooks/use-open-external.js +16 -0
- package/dist/web/hooks/use-open-external.js.map +1 -1
- package/dist/web/hooks/use-open-external.test.js +13 -3
- package/dist/web/hooks/use-open-external.test.js.map +1 -1
- package/dist/web/hooks/use-register-view-tool.d.ts +38 -0
- package/dist/web/hooks/use-register-view-tool.js +50 -0
- package/dist/web/hooks/use-register-view-tool.js.map +1 -0
- package/dist/web/hooks/use-request-close.d.ts +16 -0
- package/dist/web/hooks/use-request-close.js +21 -0
- package/dist/web/hooks/use-request-close.js.map +1 -0
- package/dist/web/hooks/use-request-close.test.d.ts +1 -0
- package/dist/web/hooks/use-request-close.test.js +47 -0
- package/dist/web/hooks/use-request-close.test.js.map +1 -0
- package/dist/web/hooks/use-request-modal.d.ts +16 -1
- package/dist/web/hooks/use-request-modal.js +16 -1
- package/dist/web/hooks/use-request-modal.js.map +1 -1
- package/dist/web/hooks/use-request-modal.test.js +10 -0
- package/dist/web/hooks/use-request-modal.test.js.map +1 -1
- package/dist/web/hooks/use-request-size.d.ts +20 -0
- package/dist/web/hooks/use-request-size.js +24 -0
- package/dist/web/hooks/use-request-size.js.map +1 -0
- package/dist/web/hooks/use-request-size.test.d.ts +1 -0
- package/dist/web/hooks/use-request-size.test.js +47 -0
- package/dist/web/hooks/use-request-size.test.js.map +1 -0
- package/dist/web/hooks/use-send-follow-up-message.d.ts +17 -0
- package/dist/web/hooks/use-send-follow-up-message.js +17 -0
- package/dist/web/hooks/use-send-follow-up-message.js.map +1 -1
- package/dist/web/hooks/use-set-open-in-app-url.d.ts +17 -0
- package/dist/web/hooks/use-set-open-in-app-url.js +17 -0
- package/dist/web/hooks/use-set-open-in-app-url.js.map +1 -1
- package/dist/web/hooks/use-set-open-in-app-url.test.js +28 -8
- package/dist/web/hooks/use-set-open-in-app-url.test.js.map +1 -1
- package/dist/web/hooks/use-tool-info.d.ts +53 -2
- package/dist/web/hooks/use-tool-info.js +30 -7
- package/dist/web/hooks/use-tool-info.js.map +1 -1
- package/dist/web/hooks/use-tool-info.test-d.js +11 -29
- package/dist/web/hooks/use-tool-info.test-d.js.map +1 -1
- package/dist/web/hooks/use-tool-info.test.js +42 -32
- package/dist/web/hooks/use-tool-info.test.js.map +1 -1
- package/dist/web/hooks/use-user.d.ts +2 -0
- package/dist/web/hooks/use-user.js +2 -0
- package/dist/web/hooks/use-user.js.map +1 -1
- package/dist/web/hooks/use-user.test.js +81 -35
- package/dist/web/hooks/use-user.test.js.map +1 -1
- package/dist/web/hooks/use-view-state.d.ts +21 -0
- package/dist/web/hooks/use-view-state.js +19 -9
- package/dist/web/hooks/use-view-state.js.map +1 -1
- package/dist/web/hooks/use-view-state.test.js +37 -2
- package/dist/web/hooks/use-view-state.test.js.map +1 -1
- package/dist/web/mount-view.d.ts +19 -0
- package/dist/web/mount-view.js +19 -0
- package/dist/web/mount-view.js.map +1 -1
- package/dist/web/types.d.ts +4 -0
- package/dist/web/types.js.map +1 -1
- package/package.json +29 -23
- package/dist/web/bridges/apps-sdk/adaptor.d.ts +0 -24
- package/dist/web/bridges/apps-sdk/adaptor.js +0 -96
- package/dist/web/bridges/apps-sdk/adaptor.js.map +0 -1
- package/dist/web/bridges/mcp-app/adaptor.d.ts +0 -48
- package/dist/web/bridges/mcp-app/adaptor.js +0 -263
- package/dist/web/bridges/mcp-app/adaptor.js.map +0 -1
- package/dist/web/plugin/data-llm.test.js +0 -81
- package/dist/web/plugin/data-llm.test.js.map +0 -1
- package/dist/web/plugin/plugin.d.ts +0 -5
- package/dist/web/plugin/plugin.js +0 -156
- package/dist/web/plugin/plugin.js.map +0 -1
- package/dist/web/plugin/scan-views.js.map +0 -1
- package/dist/web/plugin/scan-views.test.js.map +0 -1
- package/dist/web/plugin/transform-data-llm.d.ts +0 -12
- package/dist/web/plugin/transform-data-llm.js +0 -96
- package/dist/web/plugin/transform-data-llm.js.map +0 -1
- package/dist/web/plugin/transform-data-llm.test.js +0 -81
- package/dist/web/plugin/transform-data-llm.test.js.map +0 -1
- package/dist/web/plugin/validate-view.d.ts +0 -1
- package/dist/web/plugin/validate-view.js.map +0 -1
- package/dist/web/plugin/validate-view.test.js.map +0 -1
- /package/dist/{web/plugin/data-llm.test.d.ts → cli/build-helpers.test.d.ts} +0 -0
- /package/dist/{web/plugin/scan-views.test.d.ts → cli/build-steps.test.d.ts} +0 -0
- /package/dist/{web/plugin/transform-data-llm.test.d.ts → context-warnings.test.d.ts} +0 -0
- /package/dist/{web/plugin/validate-view.test.d.ts → server/auth-extra.test-d.d.ts} +0 -0
- /package/dist/{web/plugin → views}/scan-views.d.ts +0 -0
- /package/dist/{web/plugin → views}/scan-views.test.js +0 -0
- /package/dist/{web/plugin → views}/validate-view.test.js +0 -0
package/dist/test/utils.d.ts
CHANGED
|
@@ -91,7 +91,7 @@ export declare function createTestServer(): McpServer<Record<never, import("../s
|
|
|
91
91
|
processedAt: number;
|
|
92
92
|
region: string;
|
|
93
93
|
}>;
|
|
94
|
-
}>;
|
|
94
|
+
}, import("../server/auth.js").ExtraClaims>;
|
|
95
95
|
export declare function createMinimalTestServer(): McpServer<Record<never, import("../server/server.js").ToolDef<unknown, unknown, unknown>> & {
|
|
96
96
|
"search-trip": import("../server/server.js").ToolDef<{
|
|
97
97
|
destination: string;
|
|
@@ -100,7 +100,7 @@ export declare function createMinimalTestServer(): McpServer<Record<never, impor
|
|
|
100
100
|
id: string;
|
|
101
101
|
}[];
|
|
102
102
|
}, unknown>;
|
|
103
|
-
}>;
|
|
103
|
+
}, import("../server/auth.js").ExtraClaims>;
|
|
104
104
|
export declare function createInterfaceTestServer(): McpServer<Record<never, import("../server/server.js").ToolDef<unknown, unknown, unknown>> & {
|
|
105
105
|
"interface-view": import("../server/server.js").ToolDef<{
|
|
106
106
|
id: string;
|
|
@@ -111,7 +111,7 @@ export declare function createInterfaceTestServer(): McpServer<Record<never, imp
|
|
|
111
111
|
processedBy: string;
|
|
112
112
|
version: number;
|
|
113
113
|
}>;
|
|
114
|
-
}>;
|
|
114
|
+
}, import("../server/auth.js").ExtraClaims>;
|
|
115
115
|
export declare function createMockExtra(host: string, options?: {
|
|
116
116
|
headers?: Record<string, string | string[]>;
|
|
117
117
|
url?: URL | string;
|
package/dist/test/view.test.js
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import crypto from "node:crypto";
|
|
2
|
+
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
3
|
+
import { InMemoryTransport } from "@modelcontextprotocol/sdk/inMemory.js";
|
|
2
4
|
import { afterEach, beforeEach, describe, expect, it, vi, } from "vitest";
|
|
5
|
+
import { TOOL_OUTPUT_WARNING_TOKENS } from "../context-warnings.js";
|
|
6
|
+
import { McpServer as McpServerClass } from "../server/server.js";
|
|
3
7
|
import { createMockExtra, createMockMcpServer, resetTestEnv, setTestEnv, } from "./utils.js";
|
|
4
8
|
const mockManifest = {
|
|
5
9
|
"skybridge:view:my-view": {
|
|
@@ -71,20 +75,24 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
71
75
|
const serverUrl = `http://${host}`;
|
|
72
76
|
const hmrUrl = `ws://${host}`;
|
|
73
77
|
const mockExtra = createMockExtra(host);
|
|
74
|
-
const result = await appsSdkResourceCallback(new URL("ui://views/apps
|
|
78
|
+
const result = await appsSdkResourceCallback(new URL("ui://views/ext-apps/my-view.html"), mockExtra);
|
|
75
79
|
expect(mockRegisterTool).toHaveBeenCalled();
|
|
76
80
|
expect(result).toEqual({
|
|
77
81
|
contents: [
|
|
78
82
|
{
|
|
79
|
-
uri: "ui://views/apps
|
|
80
|
-
mimeType: "text/html
|
|
83
|
+
uri: "ui://views/ext-apps/my-view.html",
|
|
84
|
+
mimeType: "text/html;profile=mcp-app",
|
|
81
85
|
text: expect.stringContaining('<div id="root"></div>'),
|
|
82
86
|
_meta: {
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
87
|
+
ui: {
|
|
88
|
+
csp: {
|
|
89
|
+
resourceDomains: [serverUrl],
|
|
90
|
+
connectDomains: [serverUrl, hmrUrl],
|
|
91
|
+
baseUriDomains: [serverUrl],
|
|
92
|
+
},
|
|
93
|
+
domain: serverUrl,
|
|
94
|
+
description: "Test view",
|
|
86
95
|
},
|
|
87
|
-
"openai/widgetDomain": serverUrl,
|
|
88
96
|
"openai/widgetDescription": "Test view",
|
|
89
97
|
},
|
|
90
98
|
},
|
|
@@ -110,20 +118,24 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
110
118
|
const host = "myapp.com";
|
|
111
119
|
const serverUrl = `https://${host}`;
|
|
112
120
|
const mockExtra = createMockExtra(host);
|
|
113
|
-
const versionedUri = `ui://views/apps
|
|
121
|
+
const versionedUri = `ui://views/ext-apps/my-view.html${expectedVersionParam("assets/my-view-abc123.js", "style.css")}`;
|
|
114
122
|
const result = await appsSdkResourceCallback(new URL(versionedUri), mockExtra);
|
|
115
123
|
expect(result).toEqual({
|
|
116
124
|
contents: [
|
|
117
125
|
{
|
|
118
126
|
uri: versionedUri,
|
|
119
|
-
mimeType: "text/html
|
|
127
|
+
mimeType: "text/html;profile=mcp-app",
|
|
120
128
|
text: expect.stringContaining('<div id="root"></div>'),
|
|
121
129
|
_meta: {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
130
|
+
ui: {
|
|
131
|
+
csp: {
|
|
132
|
+
resourceDomains: [serverUrl],
|
|
133
|
+
connectDomains: [serverUrl],
|
|
134
|
+
baseUriDomains: [serverUrl],
|
|
135
|
+
},
|
|
136
|
+
domain: serverUrl,
|
|
137
|
+
description: "Test view",
|
|
125
138
|
},
|
|
126
|
-
"openai/widgetDomain": serverUrl,
|
|
127
139
|
"openai/widgetDescription": "Test view",
|
|
128
140
|
},
|
|
129
141
|
},
|
|
@@ -142,7 +154,7 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
142
154
|
view: { component: "my-view", description: "Test view" },
|
|
143
155
|
}, vi.fn());
|
|
144
156
|
const extAppsResourceCallback = mockRegisterResource.mock
|
|
145
|
-
.calls[
|
|
157
|
+
.calls[0]?.[3];
|
|
146
158
|
expect(extAppsResourceCallback).toBeDefined();
|
|
147
159
|
const forwardedUrl = "https://everything-3a2c1264.staging.alpic.live/mcp?foo=bar";
|
|
148
160
|
const expectedDomain = `${crypto
|
|
@@ -167,9 +179,10 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
167
179
|
description: "Test view",
|
|
168
180
|
domain: expectedDomain,
|
|
169
181
|
},
|
|
182
|
+
"openai/widgetDescription": "Test view",
|
|
170
183
|
});
|
|
171
184
|
});
|
|
172
|
-
it("should register
|
|
185
|
+
it("should register a single ext-apps resource", async () => {
|
|
173
186
|
server.registerTool({
|
|
174
187
|
name: "my-view",
|
|
175
188
|
description: "Test tool",
|
|
@@ -179,37 +192,14 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
179
192
|
prefersBorder: true,
|
|
180
193
|
},
|
|
181
194
|
}, vi.fn());
|
|
182
|
-
expect(mockRegisterResource).toHaveBeenCalledTimes(
|
|
183
|
-
const
|
|
195
|
+
expect(mockRegisterResource).toHaveBeenCalledTimes(1);
|
|
196
|
+
const resourceCallback = mockRegisterResource.mock
|
|
184
197
|
.calls[0]?.[3];
|
|
185
198
|
const host = "localhost:3000";
|
|
186
199
|
const serverUrl = `http://${host}`;
|
|
187
200
|
const hmrUrl = `ws://${host}`;
|
|
188
|
-
const
|
|
189
|
-
expect(
|
|
190
|
-
contents: [
|
|
191
|
-
{
|
|
192
|
-
uri: "ui://views/apps-sdk/my-view.html",
|
|
193
|
-
mimeType: "text/html+skybridge",
|
|
194
|
-
text: expect.stringContaining('<div id="root"></div>'),
|
|
195
|
-
_meta: {
|
|
196
|
-
"openai/widgetCSP": {
|
|
197
|
-
resource_domains: [serverUrl],
|
|
198
|
-
connect_domains: [serverUrl, hmrUrl],
|
|
199
|
-
},
|
|
200
|
-
"openai/widgetDomain": serverUrl,
|
|
201
|
-
"openai/widgetDescription": "Test view",
|
|
202
|
-
"openai/widgetPrefersBorder": true,
|
|
203
|
-
},
|
|
204
|
-
},
|
|
205
|
-
],
|
|
206
|
-
});
|
|
207
|
-
expect(appsSdkResult.contents[0]?.text).toContain('window.skybridge = { hostType: "apps-sdk", serverUrl: "http://localhost:3000" };');
|
|
208
|
-
const extAppsResourceCallback = mockRegisterResource.mock
|
|
209
|
-
.calls[1]?.[3];
|
|
210
|
-
expect(extAppsResourceCallback).toBeDefined();
|
|
211
|
-
const extAppsResult = await extAppsResourceCallback(new URL("ui://views/ext-apps/my-view.html"), createMockExtra(host));
|
|
212
|
-
expect(extAppsResult).toEqual({
|
|
201
|
+
const result = await resourceCallback(new URL("ui://views/ext-apps/my-view.html"), createMockExtra(host));
|
|
202
|
+
expect(result).toEqual({
|
|
213
203
|
contents: [
|
|
214
204
|
{
|
|
215
205
|
uri: "ui://views/ext-apps/my-view.html",
|
|
@@ -226,27 +216,26 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
226
216
|
description: "Test view",
|
|
227
217
|
prefersBorder: true,
|
|
228
218
|
},
|
|
219
|
+
"openai/widgetDescription": "Test view",
|
|
229
220
|
},
|
|
230
221
|
},
|
|
231
222
|
],
|
|
232
223
|
});
|
|
233
|
-
expect(
|
|
224
|
+
expect(result.contents[0]?.text).toContain('window.skybridge = { hostType: "mcp-app", serverUrl: "http://localhost:3000" };');
|
|
234
225
|
});
|
|
235
|
-
it("should
|
|
226
|
+
it("should advertise the single resource via ui.resourceUri only (no openai/outputTemplate)", async () => {
|
|
236
227
|
server.registerTool({
|
|
237
228
|
name: "my-view",
|
|
238
229
|
description: "Test tool",
|
|
239
230
|
view: { component: "my-view", description: "Test view" },
|
|
240
231
|
}, vi.fn());
|
|
241
|
-
|
|
242
|
-
const
|
|
243
|
-
|
|
244
|
-
expect(toolConfig._meta
|
|
245
|
-
expect(toolConfig._meta?.
|
|
246
|
-
resourceUri: "ui://views/ext-apps/my-view.html",
|
|
247
|
-
});
|
|
232
|
+
const toolConfig = mockRegisterTool.mock.calls[0]?.[1];
|
|
233
|
+
const uri = "ui://views/ext-apps/my-view.html";
|
|
234
|
+
expect(toolConfig._meta?.ui?.resourceUri).toBe(uri);
|
|
235
|
+
expect(toolConfig._meta?.["ui/resourceUri"]).toBe(uri);
|
|
236
|
+
expect(toolConfig._meta?.["openai/outputTemplate"]).toBeUndefined();
|
|
248
237
|
});
|
|
249
|
-
it("
|
|
238
|
+
it("treats the deprecated hosts option as a no-op (always the single resource)", async () => {
|
|
250
239
|
server.registerTool({
|
|
251
240
|
name: "my-view",
|
|
252
241
|
description: "Test tool",
|
|
@@ -256,11 +245,10 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
256
245
|
hosts: ["apps-sdk"],
|
|
257
246
|
},
|
|
258
247
|
}, vi.fn());
|
|
259
|
-
expect(
|
|
260
|
-
const
|
|
261
|
-
|
|
262
|
-
expect(toolConfig._meta).
|
|
263
|
-
expect(toolConfig._meta?.["openai/outputTemplate"]).toBe("ui://views/apps-sdk/my-view.html");
|
|
248
|
+
expect(mockRegisterResource).toHaveBeenCalledTimes(1);
|
|
249
|
+
const toolConfig = mockRegisterTool.mock.calls[0]?.[1];
|
|
250
|
+
expect(toolConfig._meta?.ui?.resourceUri).toBe("ui://views/ext-apps/my-view.html");
|
|
251
|
+
expect(toolConfig._meta?.["openai/outputTemplate"]).toBeUndefined();
|
|
264
252
|
});
|
|
265
253
|
it("should not version view URIs in development", () => {
|
|
266
254
|
server.registerTool({
|
|
@@ -269,12 +257,11 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
269
257
|
view: { component: "my-view", description: "Test view" },
|
|
270
258
|
}, vi.fn());
|
|
271
259
|
const toolConfig = mockRegisterTool.mock.calls[0]?.[1];
|
|
272
|
-
expect(toolConfig._meta?.["openai/outputTemplate"]).
|
|
260
|
+
expect(toolConfig._meta?.["openai/outputTemplate"]).toBeUndefined();
|
|
273
261
|
expect(toolConfig._meta?.ui?.resourceUri).toBe("ui://views/ext-apps/my-view.html");
|
|
274
|
-
// The URI registered with the resource handler must match
|
|
275
|
-
//
|
|
276
|
-
expect(mockRegisterResource.mock.calls[0]?.[1]).toBe("ui://views/apps
|
|
277
|
-
expect(mockRegisterResource.mock.calls[1]?.[1]).toBe("ui://views/ext-apps/my-view.html");
|
|
262
|
+
// The URI registered with the resource handler must match ui.resourceUri
|
|
263
|
+
// exactly so the SDK can resolve `resources/read` requests.
|
|
264
|
+
expect(mockRegisterResource.mock.calls[0]?.[1]).toBe("ui://views/ext-apps/my-view.html");
|
|
278
265
|
});
|
|
279
266
|
it("should append a stable content hash to view URIs in production", () => {
|
|
280
267
|
setTestEnv({ NODE_ENV: "production" });
|
|
@@ -285,10 +272,9 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
285
272
|
}, vi.fn());
|
|
286
273
|
const expected = expectedVersionParam("assets/my-view-abc123.js", "style.css");
|
|
287
274
|
const toolConfig = mockRegisterTool.mock.calls[0]?.[1];
|
|
288
|
-
expect(toolConfig._meta?.["openai/outputTemplate"]).
|
|
275
|
+
expect(toolConfig._meta?.["openai/outputTemplate"]).toBeUndefined();
|
|
289
276
|
expect(toolConfig._meta?.ui?.resourceUri).toBe(`ui://views/ext-apps/my-view.html${expected}`);
|
|
290
|
-
expect(mockRegisterResource.mock.calls[0]?.[1]).toBe(`ui://views/apps
|
|
291
|
-
expect(mockRegisterResource.mock.calls[1]?.[1]).toBe(`ui://views/ext-apps/my-view.html${expected}`);
|
|
277
|
+
expect(mockRegisterResource.mock.calls[0]?.[1]).toBe(`ui://views/ext-apps/my-view.html${expected}`);
|
|
292
278
|
});
|
|
293
279
|
it("should produce different version params for views with different bundles", () => {
|
|
294
280
|
setTestEnv({ NODE_ENV: "production" });
|
|
@@ -302,8 +288,8 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
302
288
|
description: "Second tool",
|
|
303
289
|
view: { component: "folder-view" },
|
|
304
290
|
}, vi.fn());
|
|
305
|
-
const myviewTemplate =
|
|
306
|
-
const folderviewTemplate =
|
|
291
|
+
const myviewTemplate = mockRegisterTool.mock.calls[0][1]._meta?.ui?.resourceUri;
|
|
292
|
+
const folderviewTemplate = mockRegisterTool.mock.calls[1][1]._meta?.ui?.resourceUri;
|
|
307
293
|
expect(myviewTemplate).not.toEqual(folderviewTemplate);
|
|
308
294
|
expect(myviewTemplate).toMatch(/\?v=[0-9a-f]{8}$/);
|
|
309
295
|
expect(folderviewTemplate).toMatch(/\?v=[0-9a-f]{8}$/);
|
|
@@ -316,26 +302,7 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
316
302
|
view: { component: "unknown-view" },
|
|
317
303
|
}, vi.fn());
|
|
318
304
|
const toolConfig = mockRegisterTool.mock.calls[0]?.[1];
|
|
319
|
-
expect(toolConfig._meta?.
|
|
320
|
-
});
|
|
321
|
-
it("should register tool with ui.resourceUri only when mcp-app only", async () => {
|
|
322
|
-
server.registerTool({
|
|
323
|
-
name: "my-view",
|
|
324
|
-
description: "Test tool",
|
|
325
|
-
view: {
|
|
326
|
-
component: "my-view",
|
|
327
|
-
description: "Test view",
|
|
328
|
-
hosts: ["mcp-app"],
|
|
329
|
-
},
|
|
330
|
-
}, vi.fn());
|
|
331
|
-
expect(mockRegisterTool).toHaveBeenCalledTimes(1);
|
|
332
|
-
const toolCallArgs = mockRegisterTool.mock.calls[0];
|
|
333
|
-
const toolConfig = toolCallArgs?.[1];
|
|
334
|
-
expect(toolConfig._meta).toHaveProperty("ui");
|
|
335
|
-
expect(toolConfig._meta?.ui).toEqual({
|
|
336
|
-
resourceUri: "ui://views/ext-apps/my-view.html",
|
|
337
|
-
});
|
|
338
|
-
expect(toolConfig._meta?.["openai/outputTemplate"]).toBeUndefined();
|
|
305
|
+
expect(toolConfig._meta?.ui?.resourceUri).toBe("ui://views/ext-apps/unknown-view.html");
|
|
339
306
|
});
|
|
340
307
|
it("should inject viewUUID into _meta of tool callback results", async () => {
|
|
341
308
|
const mockToolCallback = vi.fn().mockResolvedValue({
|
|
@@ -355,6 +322,21 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
355
322
|
expect(typeof result._meta?.viewUUID).toBe("string");
|
|
356
323
|
expect(result._meta?.viewUUID).toMatch(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/);
|
|
357
324
|
});
|
|
325
|
+
it("warns when a tool callback returns large model-visible output", async () => {
|
|
326
|
+
const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => { });
|
|
327
|
+
server.registerTool({ name: "large-output", description: "Test tool" }, vi.fn().mockResolvedValue({
|
|
328
|
+
content: [
|
|
329
|
+
{
|
|
330
|
+
type: "text",
|
|
331
|
+
text: "x".repeat(TOOL_OUTPUT_WARNING_TOKENS * 4),
|
|
332
|
+
},
|
|
333
|
+
],
|
|
334
|
+
}));
|
|
335
|
+
const wrappedCallback = mockRegisterTool.mock.calls[0]?.[2];
|
|
336
|
+
await wrappedCallback({}, {});
|
|
337
|
+
expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Tool "large-output" returned'));
|
|
338
|
+
warnSpy.mockRestore();
|
|
339
|
+
});
|
|
358
340
|
it("should preserve existing _meta when injecting viewUUID", async () => {
|
|
359
341
|
const mockToolCallback = vi.fn().mockResolvedValue({
|
|
360
342
|
content: [{ type: "text", text: "result" }],
|
|
@@ -473,11 +455,12 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
473
455
|
const host = "localhost:3000";
|
|
474
456
|
const serverUrl = `http://${host}`;
|
|
475
457
|
const hmrUrl = `ws://${host}`;
|
|
476
|
-
const result = await appsSdkCallback(new URL("ui://views/apps
|
|
458
|
+
const result = await appsSdkCallback(new URL("ui://views/ext-apps/csp-tool.html"), createMockExtra(host));
|
|
477
459
|
const meta = result.contents[0]?._meta;
|
|
478
|
-
expect(meta
|
|
479
|
-
|
|
480
|
-
|
|
460
|
+
expect(meta.ui?.csp).toEqual({
|
|
461
|
+
resourceDomains: [serverUrl, "https://cdn.example.com"],
|
|
462
|
+
connectDomains: [serverUrl, hmrUrl, "https://api.example.com"],
|
|
463
|
+
baseUriDomains: [serverUrl],
|
|
481
464
|
});
|
|
482
465
|
});
|
|
483
466
|
it("should let view._meta override framework-computed keys", async () => {
|
|
@@ -489,18 +472,20 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
489
472
|
description: "Test view",
|
|
490
473
|
csp: { connectDomains: ["https://api.x.com"] },
|
|
491
474
|
_meta: {
|
|
492
|
-
|
|
493
|
-
|
|
475
|
+
ui: {
|
|
476
|
+
csp: {
|
|
477
|
+
connectDomains: ["https://api.y.com"],
|
|
478
|
+
},
|
|
494
479
|
},
|
|
495
480
|
},
|
|
496
481
|
},
|
|
497
482
|
}, vi.fn());
|
|
498
483
|
const appsSdkCallback = mockRegisterResource.mock
|
|
499
484
|
.calls[0]?.[3];
|
|
500
|
-
const result = await appsSdkCallback(new URL("ui://views/apps
|
|
485
|
+
const result = await appsSdkCallback(new URL("ui://views/ext-apps/override-tool.html"), createMockExtra("localhost:3000"));
|
|
501
486
|
const meta = result.contents[0]?._meta;
|
|
502
|
-
expect(meta
|
|
503
|
-
|
|
487
|
+
expect(meta.ui?.csp).toEqual({
|
|
488
|
+
connectDomains: ["https://api.y.com"],
|
|
504
489
|
});
|
|
505
490
|
});
|
|
506
491
|
it("should pass user _meta keys through to tool config", () => {
|
|
@@ -520,4 +505,48 @@ describe("McpServer.registerTool (unified API)", () => {
|
|
|
520
505
|
expect(toolConfig._meta?.["acme.com/category"]).toBe("utility");
|
|
521
506
|
});
|
|
522
507
|
});
|
|
508
|
+
describe("resources/list view _meta injection", () => {
|
|
509
|
+
afterEach(() => resetTestEnv());
|
|
510
|
+
it("attaches CSP, domain, and connectDomains _meta to view resources at list time", async () => {
|
|
511
|
+
setTestEnv({ NODE_ENV: "production" });
|
|
512
|
+
const server = new McpServerClass({ name: "test", version: "1.0.0" }, { capabilities: {} });
|
|
513
|
+
server.registerTool({
|
|
514
|
+
name: "start",
|
|
515
|
+
description: "Start",
|
|
516
|
+
view: {
|
|
517
|
+
component: "my-view",
|
|
518
|
+
description: "Onboarding deck",
|
|
519
|
+
domain: "skybridge.tech",
|
|
520
|
+
csp: {
|
|
521
|
+
resourceDomains: ["https://fonts.googleapis.com"],
|
|
522
|
+
redirectDomains: ["https://docs.skybridge.tech"],
|
|
523
|
+
},
|
|
524
|
+
},
|
|
525
|
+
}, vi.fn().mockResolvedValue({
|
|
526
|
+
content: [{ type: "text", text: "ok" }],
|
|
527
|
+
structuredContent: {},
|
|
528
|
+
}));
|
|
529
|
+
const client = new Client({ name: "test-client", version: "1.0.0" });
|
|
530
|
+
const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
|
|
531
|
+
await server.connect(serverTransport);
|
|
532
|
+
await client.connect(clientTransport);
|
|
533
|
+
const { resources } = await client.listResources();
|
|
534
|
+
await client.close();
|
|
535
|
+
await server.close();
|
|
536
|
+
const appsSdk = resources.find((r) => r.uri.includes("apps-sdk"));
|
|
537
|
+
const extApps = resources.find((r) => r.uri.includes("ext-apps"));
|
|
538
|
+
expect(appsSdk).toBeUndefined();
|
|
539
|
+
expect(extApps?._meta).toBeDefined();
|
|
540
|
+
const extUi = extApps._meta?.ui;
|
|
541
|
+
expect(extUi?.csp?.connectDomains?.length).toBeGreaterThan(0);
|
|
542
|
+
expect(extUi?.csp?.resourceDomains).toContain("https://fonts.googleapis.com");
|
|
543
|
+
expect(extUi?.domain).toBe("skybridge.tech");
|
|
544
|
+
const meta = extApps?._meta;
|
|
545
|
+
expect(meta["openai/widgetDescription"]).toBe("Onboarding deck");
|
|
546
|
+
expect(meta["openai/widgetCSP"]?.redirect_domains).toEqual([
|
|
547
|
+
"https://docs.skybridge.tech",
|
|
548
|
+
]);
|
|
549
|
+
expect(meta.ui?.csp).not.toHaveProperty("redirectDomains");
|
|
550
|
+
});
|
|
551
|
+
});
|
|
523
552
|
//# sourceMappingURL=view.test.js.map
|