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.
- package/README.md +10 -7
- package/dist/cli/build-helpers.d.ts +6 -2
- package/dist/cli/build-helpers.js +39 -14
- package/dist/cli/build-helpers.js.map +1 -1
- package/dist/cli/build-helpers.test.js +73 -5
- package/dist/cli/build-helpers.test.js.map +1 -1
- 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.js +0 -1
- 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-views-dir.js → resolve-skybridge-config.js} +4 -3
- 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 +90 -0
- package/dist/cli/run-plain.js.map +1 -0
- package/dist/cli/use-execute-steps.d.ts +1 -1
- package/dist/cli/use-nodemon.d.ts +25 -1
- package/dist/cli/use-nodemon.js +96 -63
- 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 +70 -67
- package/dist/cli/use-typescript-check.js.map +1 -1
- package/dist/commands/build.d.ts +0 -2
- package/dist/commands/build.js +2 -61
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/dev.d.ts +1 -0
- package/dist/commands/dev.js +38 -6
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/start.js +2 -2
- 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/app.d.ts +194 -0
- package/dist/server/app.js +266 -0
- package/dist/server/app.js.map +1 -0
- package/dist/server/app.test.js +97 -0
- package/dist/server/app.test.js.map +1 -0
- package/dist/server/auth/discovery.d.ts +29 -7
- package/dist/server/auth/discovery.js +16 -11
- package/dist/server/auth/discovery.js.map +1 -1
- package/dist/server/auth/index.d.ts +35 -5
- package/dist/server/auth/index.js.map +1 -1
- package/dist/server/auth/providers/auth0.d.ts +34 -7
- package/dist/server/auth/providers/auth0.js +29 -11
- package/dist/server/auth/providers/auth0.js.map +1 -1
- package/dist/server/auth/providers/auth0.test.js +31 -14
- package/dist/server/auth/providers/auth0.test.js.map +1 -1
- 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.js +143 -0
- package/dist/server/auth/providers/authplane.test.js.map +1 -0
- package/dist/server/auth/providers/clerk.d.ts +40 -3
- package/dist/server/auth/providers/clerk.js +5 -6
- package/dist/server/auth/providers/clerk.js.map +1 -1
- package/dist/server/auth/providers/clerk.test.js +7 -25
- package/dist/server/auth/providers/clerk.test.js.map +1 -1
- package/dist/server/auth/providers/custom.d.ts +27 -4
- package/dist/server/auth/providers/custom.js +46 -15
- package/dist/server/auth/providers/custom.js.map +1 -1
- package/dist/server/auth/providers/custom.test.js +86 -16
- package/dist/server/auth/providers/custom.test.js.map +1 -1
- package/dist/server/auth/providers/descope.d.ts +41 -11
- package/dist/server/auth/providers/descope.js +38 -8
- package/dist/server/auth/providers/descope.js.map +1 -1
- package/dist/server/auth/providers/descope.test.js +43 -16
- package/dist/server/auth/providers/descope.test.js.map +1 -1
- 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.js +10 -0
- package/dist/server/auth/providers/shared.test.js.map +1 -0
- package/dist/server/auth/providers/stytch.d.ts +16 -3
- package/dist/server/auth/providers/stytch.js +5 -6
- package/dist/server/auth/providers/stytch.js.map +1 -1
- 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 +25 -3
- package/dist/server/auth/providers/workos.js +5 -6
- package/dist/server/auth/providers/workos.js.map +1 -1
- 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.js +99 -0
- package/dist/server/auth/security-schemes.test.js.map +1 -0
- package/dist/server/auth/setup.d.ts +3 -1
- package/dist/server/auth/setup.js +66 -26
- package/dist/server/auth/setup.js.map +1 -1
- package/dist/server/auth/setup.test.js +349 -20
- package/dist/server/auth/setup.test.js.map +1 -1
- package/dist/server/auth/verify.d.ts +37 -3
- package/dist/server/auth/verify.js +27 -3
- package/dist/server/auth/verify.js.map +1 -1
- package/dist/server/auth/verify.test.js +49 -0
- package/dist/server/auth/verify.test.js.map +1 -1
- package/dist/server/auth-extra.test-d.js +130 -0
- package/dist/server/auth-extra.test-d.js.map +1 -0
- package/dist/server/auth.d.ts +43 -6
- package/dist/server/auth.js +4 -5
- package/dist/server/auth.js.map +1 -1
- package/dist/server/build-manifest.test.js +7 -6
- package/dist/server/build-manifest.test.js.map +1 -1
- package/dist/server/content-helpers.d.ts +1 -1
- package/dist/server/content-helpers.js.map +1 -1
- package/dist/server/express.d.ts +23 -3
- package/dist/server/express.js +38 -32
- package/dist/server/express.js.map +1 -1
- package/dist/server/express.test.js +220 -103
- package/dist/server/express.test.js.map +1 -1
- package/dist/server/file-ref.d.ts +1 -1
- package/dist/server/file-ref.js +1 -1
- package/dist/server/file-ref.js.map +1 -1
- 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 +16 -9
- package/dist/server/index.js +9 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/mcp-errors.test.d.ts +1 -0
- package/dist/server/mcp-errors.test.js +41 -0
- package/dist/server/mcp-errors.test.js.map +1 -0
- package/dist/server/middleware.d.ts +35 -10
- package/dist/server/middleware.js +33 -0
- package/dist/server/middleware.js.map +1 -1
- package/dist/server/middleware.test-d.js +1 -1
- package/dist/server/middleware.test-d.js.map +1 -1
- package/dist/server/middleware.test.js +242 -134
- 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 +27 -0
- package/dist/server/register-tool.test.js.map +1 -0
- package/dist/server/server.d.ts +133 -116
- package/dist/server/server.js +251 -346
- 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 +86 -0
- package/dist/server/skills-integration.test.js.map +1 -0
- package/dist/server/skills.d.ts +27 -0
- package/dist/server/skills.js +188 -0
- package/dist/server/skills.js.map +1 -0
- package/dist/server/skills.test.d.ts +1 -0
- package/dist/server/skills.test.js +243 -0
- package/dist/server/skills.test.js.map +1 -0
- package/dist/server/templateHelper.d.ts +0 -3
- package/dist/server/templateHelper.js.map +1 -1
- package/dist/server/templates.generated.js +4 -8
- package/dist/server/templates.generated.js.map +1 -1
- package/dist/server/tool-extra.test.d.ts +1 -0
- package/dist/server/tool-extra.test.js +88 -0
- package/dist/server/tool-extra.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.js +105 -17
- package/dist/server/view-resource-resolution.test.js.map +1 -1
- package/dist/server/viewsDevServer.js +4 -1
- package/dist/server/viewsDevServer.js.map +1 -1
- package/dist/test/utils.d.ts +9 -11
- package/dist/test/utils.js +220 -201
- package/dist/test/utils.js.map +1 -1
- package/dist/test/view.test.js +105 -133
- package/dist/test/view.test.js.map +1 -1
- package/dist/views/index.d.ts +10 -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 -2
- package/dist/web/bridges/apps-sdk/bridge.js +15 -4
- 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/use-apps-sdk-context.d.ts +1 -1
- package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js +1 -1
- package/dist/web/bridges/apps-sdk/use-apps-sdk-context.js.map +1 -1
- package/dist/web/bridges/get-adaptor.d.ts +4 -4
- package/dist/web/bridges/get-adaptor.js +6 -11
- 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 +13 -2
- package/dist/web/bridges/mcp-app/bridge.js +52 -8
- 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 +1 -1
- package/dist/web/bridges/mcp-app/use-mcp-app-context.js +1 -1
- package/dist/web/bridges/mcp-app/use-mcp-app-context.js.map +1 -1
- package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js +1 -1
- package/dist/web/bridges/mcp-app/use-mcp-app-context.test.js.map +1 -1
- package/dist/web/bridges/mcp-app/view-tools.test.js +6 -7
- package/dist/web/bridges/mcp-app/view-tools.test.js.map +1 -1
- package/dist/web/bridges/types.d.ts +27 -12
- 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/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.test.js +10 -7
- package/dist/web/create-store.test.js.map +1 -1
- package/dist/web/data-llm.d.ts +1 -1
- package/dist/web/data-llm.test.js +20 -7
- package/dist/web/data-llm.test.js.map +1 -1
- package/dist/web/generate-helpers.d.ts +22 -18
- package/dist/web/generate-helpers.js +19 -15
- package/dist/web/generate-helpers.js.map +1 -1
- package/dist/web/generate-helpers.test-d.js +3 -3
- package/dist/web/generate-helpers.test-d.js.map +1 -1
- package/dist/web/generate-helpers.test.js +2 -2
- package/dist/web/generate-helpers.test.js.map +1 -1
- package/dist/web/hooks/index.d.ts +2 -1
- package/dist/web/hooks/index.js +2 -1
- package/dist/web/hooks/index.js.map +1 -1
- package/dist/web/hooks/test/utils.d.ts +2 -1
- package/dist/web/hooks/test/utils.js +1 -1
- package/dist/web/hooks/test/utils.js.map +1 -1
- package/dist/web/hooks/use-call-tool.test.js +39 -25
- package/dist/web/hooks/use-call-tool.test.js.map +1 -1
- package/dist/web/hooks/use-display-mode.d.ts +1 -1
- package/dist/web/hooks/use-display-mode.js +1 -1
- package/dist/web/hooks/use-display-mode.js.map +1 -1
- package/dist/web/hooks/use-display-mode.test.js +57 -21
- package/dist/web/hooks/use-display-mode.test.js.map +1 -1
- package/dist/web/hooks/use-download.d.ts +1 -3
- package/dist/web/hooks/use-download.js +1 -2
- package/dist/web/hooks/use-download.js.map +1 -1
- package/dist/web/hooks/use-download.test.js +18 -10
- package/dist/web/hooks/use-download.test.js.map +1 -1
- package/dist/web/hooks/use-files.test.js +11 -3
- package/dist/web/hooks/use-files.test.js.map +1 -1
- package/dist/web/hooks/use-host.d.ts +22 -0
- package/dist/web/hooks/use-host.js +30 -0
- package/dist/web/hooks/use-host.js.map +1 -0
- package/dist/web/hooks/use-host.test.d.ts +1 -0
- package/dist/web/hooks/use-host.test.js +59 -0
- package/dist/web/hooks/use-host.test.js.map +1 -0
- package/dist/web/hooks/use-open-external.test.js +15 -5
- package/dist/web/hooks/use-open-external.test.js.map +1 -1
- package/dist/web/hooks/use-register-view-tool.d.ts +2 -3
- package/dist/web/hooks/use-register-view-tool.js.map +1 -1
- package/dist/web/hooks/use-request-close.test.js +35 -40
- package/dist/web/hooks/use-request-close.test.js.map +1 -1
- package/dist/web/hooks/use-request-modal.test.js +11 -1
- package/dist/web/hooks/use-request-modal.test.js.map +1 -1
- package/dist/web/hooks/use-request-size.d.ts +1 -1
- package/dist/web/hooks/use-request-size.js +1 -1
- package/dist/web/hooks/use-request-size.js.map +1 -1
- package/dist/web/hooks/use-request-size.test.js +35 -53
- package/dist/web/hooks/use-request-size.test.js.map +1 -1
- package/dist/web/hooks/use-set-open-in-app-url.test.js +26 -12
- package/dist/web/hooks/use-set-open-in-app-url.test.js.map +1 -1
- package/dist/web/hooks/use-tool-info.d.ts +1 -20
- package/dist/web/hooks/use-tool-info.js +0 -1
- package/dist/web/hooks/use-tool-info.js.map +1 -1
- package/dist/web/hooks/use-tool-info.test-d.js +0 -5
- package/dist/web/hooks/use-tool-info.test-d.js.map +1 -1
- package/dist/web/hooks/use-tool-info.test.js +38 -33
- package/dist/web/hooks/use-tool-info.test.js.map +1 -1
- package/dist/web/hooks/use-user.d.ts +3 -2
- package/dist/web/hooks/use-user.js +4 -3
- package/dist/web/hooks/use-user.js.map +1 -1
- package/dist/web/hooks/use-user.test.js +85 -37
- package/dist/web/hooks/use-user.test.js.map +1 -1
- 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 +39 -4
- package/dist/web/hooks/use-view-state.test.js.map +1 -1
- package/dist/web/hooks/use-viewport.d.ts +20 -0
- package/dist/web/hooks/use-viewport.js +21 -0
- package/dist/web/hooks/use-viewport.js.map +1 -0
- package/dist/web/hooks/use-viewport.test.d.ts +1 -0
- package/dist/web/hooks/use-viewport.test.js +109 -0
- package/dist/web/hooks/use-viewport.test.js.map +1 -0
- package/dist/web/mount-view.d.ts +3 -2
- package/dist/web/mount-view.js +5 -8
- package/dist/web/mount-view.js.map +1 -1
- package/package.json +31 -28
- package/dist/cli/resolve-views-dir.d.ts +0 -1
- package/dist/cli/resolve-views-dir.js.map +0 -1
- package/dist/server/auth/providers/stytch.test.js +0 -33
- package/dist/server/auth/providers/stytch.test.js.map +0 -1
- package/dist/server/auth/providers/workos.test.js +0 -41
- package/dist/server/auth/providers/workos.test.js.map +0 -1
- package/dist/web/bridges/apps-sdk/adaptor.d.ts +0 -29
- package/dist/web/bridges/apps-sdk/adaptor.js +0 -117
- package/dist/web/bridges/apps-sdk/adaptor.js.map +0 -1
- package/dist/web/bridges/mcp-app/adaptor.d.ts +0 -53
- package/dist/web/bridges/mcp-app/adaptor.js +0 -283
- package/dist/web/bridges/mcp-app/adaptor.js.map +0 -1
- package/dist/web/hooks/use-layout.d.ts +0 -24
- package/dist/web/hooks/use-layout.js +0 -25
- package/dist/web/hooks/use-layout.js.map +0 -1
- package/dist/web/hooks/use-layout.test.js +0 -96
- package/dist/web/hooks/use-layout.test.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 -33
- package/dist/web/plugin/plugin.js +0 -189
- 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/{server/auth/providers/stytch.test.d.ts → cli/build-steps.test.d.ts} +0 -0
- /package/dist/{server/auth/providers/workos.test.d.ts → context-warnings.test.d.ts} +0 -0
- /package/dist/{web/hooks/use-layout.test.d.ts → server/app.test.d.ts} +0 -0
- /package/dist/{web/plugin/scan-views.test.d.ts → server/auth/providers/authplane.test.d.ts} +0 -0
- /package/dist/{web/plugin/transform-data-llm.test.d.ts → server/auth/providers/shared.test.d.ts} +0 -0
- /package/dist/{web/plugin/validate-view.test.d.ts → server/auth/security-schemes.test.d.ts} +0 -0
- /package/dist/{web/plugin/data-llm.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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skybridge",
|
|
3
|
-
"version": "0.0.0-dev.
|
|
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.
|
|
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
|
-
"./
|
|
31
|
-
"types": "./dist/
|
|
32
|
-
"default": "./dist/
|
|
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
|
-
"@
|
|
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
|
-
"@
|
|
53
|
-
"@modelcontextprotocol/ext-apps": "^1.7.
|
|
54
|
-
"@
|
|
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
|
-
"
|
|
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.
|
|
64
|
-
"jose": "^6.
|
|
66
|
+
"ink": "^7.1.1",
|
|
67
|
+
"jose": "^6.2.3",
|
|
65
68
|
"open": "^11.0.0",
|
|
66
|
-
"posthog-node": "^5.
|
|
69
|
+
"posthog-node": "^5.45.2",
|
|
67
70
|
"superjson": "^2.2.6",
|
|
68
|
-
"
|
|
71
|
+
"yaml": "^2.9.0",
|
|
72
|
+
"zustand": "^5.0.14"
|
|
69
73
|
},
|
|
70
74
|
"devDependencies": {
|
|
71
|
-
"@modelcontextprotocol/
|
|
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.
|
|
80
|
-
"@types/node": "^24.
|
|
81
|
-
"@types/react": "^19.2.
|
|
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.
|
|
84
|
-
"jsdom": "^29.
|
|
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.
|
|
88
|
-
"vite": "^8.
|
|
89
|
-
"vitest": "^4.1.
|
|
90
|
-
"zod": "^4.3
|
|
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
|
-
}
|