@frontmcp/ui 0.5.1 → 0.6.0
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/adapters/index.d.ts +13 -0
- package/adapters/index.d.ts.map +1 -0
- package/adapters/index.js +462 -0
- package/adapters/platform-meta.d.ts +166 -0
- package/adapters/platform-meta.d.ts.map +1 -0
- package/adapters/response-builder.d.ts +108 -0
- package/adapters/response-builder.d.ts.map +1 -0
- package/adapters/serving-mode.d.ts +107 -0
- package/adapters/serving-mode.d.ts.map +1 -0
- package/base-template/bridge.d.ts +90 -0
- package/base-template/bridge.d.ts.map +1 -0
- package/base-template/default-base-template.d.ts +92 -0
- package/base-template/default-base-template.d.ts.map +1 -0
- package/base-template/index.d.ts +15 -0
- package/base-template/index.d.ts.map +1 -0
- package/base-template/index.js +1398 -0
- package/base-template/polyfills.d.ts +31 -0
- package/base-template/polyfills.d.ts.map +1 -0
- package/base-template/theme-styles.d.ts +74 -0
- package/base-template/theme-styles.d.ts.map +1 -0
- package/bridge/adapters/base-adapter.d.ts +104 -0
- package/bridge/adapters/base-adapter.d.ts.map +1 -0
- package/bridge/adapters/claude.adapter.d.ts +67 -0
- package/bridge/adapters/claude.adapter.d.ts.map +1 -0
- package/bridge/adapters/ext-apps.adapter.d.ts +143 -0
- package/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
- package/bridge/adapters/gemini.adapter.d.ts +64 -0
- package/bridge/adapters/gemini.adapter.d.ts.map +1 -0
- package/bridge/adapters/generic.adapter.d.ts +56 -0
- package/bridge/adapters/generic.adapter.d.ts.map +1 -0
- package/bridge/adapters/index.d.ts +26 -0
- package/bridge/adapters/index.d.ts.map +1 -0
- package/bridge/adapters/openai.adapter.d.ts +65 -0
- package/bridge/adapters/openai.adapter.d.ts.map +1 -0
- package/bridge/core/adapter-registry.d.ts +122 -0
- package/bridge/core/adapter-registry.d.ts.map +1 -0
- package/bridge/core/bridge-factory.d.ts +199 -0
- package/bridge/core/bridge-factory.d.ts.map +1 -0
- package/bridge/core/index.d.ts +10 -0
- package/bridge/core/index.d.ts.map +1 -0
- package/bridge/index.d.ts +62 -0
- package/bridge/index.d.ts.map +1 -0
- package/bridge/index.js +2540 -0
- package/bridge/runtime/iife-generator.d.ts +62 -0
- package/bridge/runtime/iife-generator.d.ts.map +1 -0
- package/bridge/runtime/index.d.ts +9 -0
- package/bridge/runtime/index.d.ts.map +1 -0
- package/bridge/types.d.ts +386 -0
- package/bridge/types.d.ts.map +1 -0
- package/build/cdn-resources.d.ts +243 -0
- package/build/cdn-resources.d.ts.map +1 -0
- package/build/index.d.ts +295 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +7096 -0
- package/build/widget-manifest.d.ts +362 -0
- package/build/widget-manifest.d.ts.map +1 -0
- package/bundler/bundler.d.ts +208 -0
- package/bundler/bundler.d.ts.map +1 -0
- package/bundler/cache.d.ts +173 -0
- package/bundler/cache.d.ts.map +1 -0
- package/bundler/file-cache/component-builder.d.ts +167 -0
- package/bundler/file-cache/component-builder.d.ts.map +1 -0
- package/bundler/file-cache/hash-calculator.d.ts +155 -0
- package/bundler/file-cache/hash-calculator.d.ts.map +1 -0
- package/bundler/file-cache/index.d.ts +12 -0
- package/bundler/file-cache/index.d.ts.map +1 -0
- package/bundler/file-cache/storage/filesystem.d.ts +149 -0
- package/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
- package/bundler/file-cache/storage/index.d.ts +11 -0
- package/bundler/file-cache/storage/index.d.ts.map +1 -0
- package/bundler/file-cache/storage/interface.d.ts +152 -0
- package/bundler/file-cache/storage/interface.d.ts.map +1 -0
- package/bundler/file-cache/storage/redis.d.ts +139 -0
- package/bundler/file-cache/storage/redis.d.ts.map +1 -0
- package/bundler/index.d.ts +43 -0
- package/bundler/index.d.ts.map +1 -0
- package/bundler/index.js +4754 -0
- package/bundler/sandbox/enclave-adapter.d.ts +121 -0
- package/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
- package/bundler/sandbox/executor.d.ts +14 -0
- package/bundler/sandbox/executor.d.ts.map +1 -0
- package/bundler/sandbox/policy.d.ts +62 -0
- package/bundler/sandbox/policy.d.ts.map +1 -0
- package/bundler/types.d.ts +702 -0
- package/bundler/types.d.ts.map +1 -0
- package/components/alert.d.ts +66 -0
- package/components/alert.d.ts.map +1 -0
- package/components/alert.schema.d.ts +98 -0
- package/components/alert.schema.d.ts.map +1 -0
- package/components/avatar.d.ts +77 -0
- package/components/avatar.d.ts.map +1 -0
- package/components/avatar.schema.d.ts +170 -0
- package/components/avatar.schema.d.ts.map +1 -0
- package/components/badge.d.ts +64 -0
- package/components/badge.d.ts.map +1 -0
- package/components/badge.schema.d.ts +91 -0
- package/components/badge.schema.d.ts.map +1 -0
- package/components/button.d.ts +100 -0
- package/components/button.d.ts.map +1 -0
- package/components/button.schema.d.ts +120 -0
- package/components/button.schema.d.ts.map +1 -0
- package/components/card.d.ts +53 -0
- package/components/card.d.ts.map +1 -0
- package/components/card.schema.d.ts +93 -0
- package/components/card.schema.d.ts.map +1 -0
- package/components/form.d.ts +212 -0
- package/components/form.d.ts.map +1 -0
- package/components/form.schema.d.ts +365 -0
- package/components/form.schema.d.ts.map +1 -0
- package/components/index.d.ts +29 -0
- package/components/index.d.ts.map +1 -0
- package/components/index.js +2595 -0
- package/components/list.d.ts +121 -0
- package/components/list.d.ts.map +1 -0
- package/components/list.schema.d.ts +129 -0
- package/components/list.schema.d.ts.map +1 -0
- package/components/modal.d.ts +100 -0
- package/components/modal.d.ts.map +1 -0
- package/components/modal.schema.d.ts +151 -0
- package/components/modal.schema.d.ts.map +1 -0
- package/components/table.d.ts +91 -0
- package/components/table.d.ts.map +1 -0
- package/components/table.schema.d.ts +123 -0
- package/components/table.schema.d.ts.map +1 -0
- package/dependency/cdn-registry.d.ts +98 -0
- package/dependency/cdn-registry.d.ts.map +1 -0
- package/dependency/import-map.d.ts +186 -0
- package/dependency/import-map.d.ts.map +1 -0
- package/dependency/import-parser.d.ts +82 -0
- package/dependency/import-parser.d.ts.map +1 -0
- package/dependency/index.d.ts +17 -0
- package/dependency/index.d.ts.map +1 -0
- package/dependency/resolver.d.ts +164 -0
- package/dependency/resolver.d.ts.map +1 -0
- package/dependency/schemas.d.ts +486 -0
- package/dependency/schemas.d.ts.map +1 -0
- package/dependency/template-loader.d.ts +204 -0
- package/dependency/template-loader.d.ts.map +1 -0
- package/dependency/template-processor.d.ts +118 -0
- package/dependency/template-processor.d.ts.map +1 -0
- package/dependency/types.d.ts +739 -0
- package/dependency/types.d.ts.map +1 -0
- package/esm/adapters/index.d.ts +13 -0
- package/esm/adapters/index.d.ts.map +1 -0
- package/esm/adapters/index.js +427 -0
- package/esm/adapters/platform-meta.d.ts +166 -0
- package/esm/adapters/platform-meta.d.ts.map +1 -0
- package/esm/adapters/response-builder.d.ts +108 -0
- package/esm/adapters/response-builder.d.ts.map +1 -0
- package/esm/adapters/serving-mode.d.ts +107 -0
- package/esm/adapters/serving-mode.d.ts.map +1 -0
- package/esm/base-template/bridge.d.ts +90 -0
- package/esm/base-template/bridge.d.ts.map +1 -0
- package/esm/base-template/default-base-template.d.ts +92 -0
- package/esm/base-template/default-base-template.d.ts.map +1 -0
- package/esm/base-template/index.d.ts +15 -0
- package/esm/base-template/index.d.ts.map +1 -0
- package/esm/base-template/index.js +1364 -0
- package/esm/base-template/polyfills.d.ts +31 -0
- package/esm/base-template/polyfills.d.ts.map +1 -0
- package/esm/base-template/theme-styles.d.ts +74 -0
- package/esm/base-template/theme-styles.d.ts.map +1 -0
- package/esm/bridge/adapters/base-adapter.d.ts +104 -0
- package/esm/bridge/adapters/base-adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/claude.adapter.d.ts +67 -0
- package/esm/bridge/adapters/claude.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/ext-apps.adapter.d.ts +143 -0
- package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/gemini.adapter.d.ts +64 -0
- package/esm/bridge/adapters/gemini.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/generic.adapter.d.ts +56 -0
- package/esm/bridge/adapters/generic.adapter.d.ts.map +1 -0
- package/esm/bridge/adapters/index.d.ts +26 -0
- package/esm/bridge/adapters/index.d.ts.map +1 -0
- package/esm/bridge/adapters/openai.adapter.d.ts +65 -0
- package/esm/bridge/adapters/openai.adapter.d.ts.map +1 -0
- package/esm/bridge/core/adapter-registry.d.ts +122 -0
- package/esm/bridge/core/adapter-registry.d.ts.map +1 -0
- package/esm/bridge/core/bridge-factory.d.ts +199 -0
- package/esm/bridge/core/bridge-factory.d.ts.map +1 -0
- package/esm/bridge/core/index.d.ts +10 -0
- package/esm/bridge/core/index.d.ts.map +1 -0
- package/esm/bridge/index.d.ts +62 -0
- package/esm/bridge/index.d.ts.map +1 -0
- package/esm/bridge/index.js +2487 -0
- package/esm/bridge/runtime/iife-generator.d.ts +62 -0
- package/esm/bridge/runtime/iife-generator.d.ts.map +1 -0
- package/esm/bridge/runtime/index.d.ts +9 -0
- package/esm/bridge/runtime/index.d.ts.map +1 -0
- package/esm/bridge/types.d.ts +386 -0
- package/esm/bridge/types.d.ts.map +1 -0
- package/esm/build/cdn-resources.d.ts +243 -0
- package/esm/build/cdn-resources.d.ts.map +1 -0
- package/esm/build/index.d.ts +295 -0
- package/esm/build/index.d.ts.map +1 -0
- package/esm/build/index.js +7021 -0
- package/esm/build/widget-manifest.d.ts +362 -0
- package/esm/build/widget-manifest.d.ts.map +1 -0
- package/esm/bundler/bundler.d.ts +208 -0
- package/esm/bundler/bundler.d.ts.map +1 -0
- package/esm/bundler/cache.d.ts +173 -0
- package/esm/bundler/cache.d.ts.map +1 -0
- package/esm/bundler/file-cache/component-builder.d.ts +167 -0
- package/esm/bundler/file-cache/component-builder.d.ts.map +1 -0
- package/esm/bundler/file-cache/hash-calculator.d.ts +155 -0
- package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -0
- package/esm/bundler/file-cache/index.d.ts +12 -0
- package/esm/bundler/file-cache/index.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/filesystem.d.ts +149 -0
- package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/index.d.ts +11 -0
- package/esm/bundler/file-cache/storage/index.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/interface.d.ts +152 -0
- package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -0
- package/esm/bundler/file-cache/storage/redis.d.ts +139 -0
- package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -0
- package/esm/bundler/index.d.ts +43 -0
- package/esm/bundler/index.d.ts.map +1 -0
- package/esm/bundler/index.js +4687 -0
- package/esm/bundler/sandbox/enclave-adapter.d.ts +121 -0
- package/esm/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
- package/esm/bundler/sandbox/executor.d.ts +14 -0
- package/esm/bundler/sandbox/executor.d.ts.map +1 -0
- package/esm/bundler/sandbox/policy.d.ts +62 -0
- package/esm/bundler/sandbox/policy.d.ts.map +1 -0
- package/esm/bundler/types.d.ts +702 -0
- package/esm/bundler/types.d.ts.map +1 -0
- package/esm/components/alert.d.ts +66 -0
- package/esm/components/alert.d.ts.map +1 -0
- package/esm/components/alert.schema.d.ts +98 -0
- package/esm/components/alert.schema.d.ts.map +1 -0
- package/esm/components/avatar.d.ts +77 -0
- package/esm/components/avatar.d.ts.map +1 -0
- package/esm/components/avatar.schema.d.ts +170 -0
- package/esm/components/avatar.schema.d.ts.map +1 -0
- package/esm/components/badge.d.ts +64 -0
- package/esm/components/badge.d.ts.map +1 -0
- package/esm/components/badge.schema.d.ts +91 -0
- package/esm/components/badge.schema.d.ts.map +1 -0
- package/esm/components/button.d.ts +100 -0
- package/esm/components/button.d.ts.map +1 -0
- package/esm/components/button.schema.d.ts +120 -0
- package/esm/components/button.schema.d.ts.map +1 -0
- package/esm/components/card.d.ts +53 -0
- package/esm/components/card.d.ts.map +1 -0
- package/esm/components/card.schema.d.ts +93 -0
- package/esm/components/card.schema.d.ts.map +1 -0
- package/esm/components/form.d.ts +212 -0
- package/esm/components/form.d.ts.map +1 -0
- package/esm/components/form.schema.d.ts +365 -0
- package/esm/components/form.schema.d.ts.map +1 -0
- package/esm/components/index.d.ts +29 -0
- package/esm/components/index.d.ts.map +1 -0
- package/esm/components/index.js +2456 -0
- package/esm/components/list.d.ts +121 -0
- package/esm/components/list.d.ts.map +1 -0
- package/esm/components/list.schema.d.ts +129 -0
- package/esm/components/list.schema.d.ts.map +1 -0
- package/esm/components/modal.d.ts +100 -0
- package/esm/components/modal.d.ts.map +1 -0
- package/esm/components/modal.schema.d.ts +151 -0
- package/esm/components/modal.schema.d.ts.map +1 -0
- package/esm/components/table.d.ts +91 -0
- package/esm/components/table.d.ts.map +1 -0
- package/esm/components/table.schema.d.ts +123 -0
- package/esm/components/table.schema.d.ts.map +1 -0
- package/esm/dependency/cdn-registry.d.ts +98 -0
- package/esm/dependency/cdn-registry.d.ts.map +1 -0
- package/esm/dependency/import-map.d.ts +186 -0
- package/esm/dependency/import-map.d.ts.map +1 -0
- package/esm/dependency/import-parser.d.ts +82 -0
- package/esm/dependency/import-parser.d.ts.map +1 -0
- package/esm/dependency/index.d.ts +17 -0
- package/esm/dependency/index.d.ts.map +1 -0
- package/esm/dependency/resolver.d.ts +164 -0
- package/esm/dependency/resolver.d.ts.map +1 -0
- package/esm/dependency/schemas.d.ts +486 -0
- package/esm/dependency/schemas.d.ts.map +1 -0
- package/esm/dependency/template-loader.d.ts +204 -0
- package/esm/dependency/template-loader.d.ts.map +1 -0
- package/esm/dependency/template-processor.d.ts +118 -0
- package/esm/dependency/template-processor.d.ts.map +1 -0
- package/esm/dependency/types.d.ts +739 -0
- package/esm/dependency/types.d.ts.map +1 -0
- package/esm/handlebars/expression-extractor.d.ts +147 -0
- package/esm/handlebars/expression-extractor.d.ts.map +1 -0
- package/esm/handlebars/helpers.d.ts +339 -0
- package/esm/handlebars/helpers.d.ts.map +1 -0
- package/esm/handlebars/index.d.ts +195 -0
- package/esm/handlebars/index.d.ts.map +1 -0
- package/esm/handlebars/index.js +587 -0
- package/esm/index.d.ts +56 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +20511 -0
- package/esm/layouts/base.d.ts +86 -0
- package/esm/layouts/base.d.ts.map +1 -0
- package/esm/layouts/index.d.ts +8 -0
- package/esm/layouts/index.d.ts.map +1 -0
- package/esm/layouts/index.js +892 -0
- package/esm/layouts/presets.d.ts +134 -0
- package/esm/layouts/presets.d.ts.map +1 -0
- package/esm/package.json +90 -0
- package/esm/pages/consent.d.ts +117 -0
- package/esm/pages/consent.d.ts.map +1 -0
- package/esm/pages/error.d.ts +101 -0
- package/esm/pages/error.d.ts.map +1 -0
- package/esm/pages/index.d.ts +9 -0
- package/esm/pages/index.d.ts.map +1 -0
- package/esm/pages/index.js +1563 -0
- package/esm/react/Alert.d.ts +102 -0
- package/esm/react/Alert.d.ts.map +1 -0
- package/esm/react/Badge.d.ts +101 -0
- package/esm/react/Badge.d.ts.map +1 -0
- package/esm/react/Button.d.ts +109 -0
- package/esm/react/Button.d.ts.map +1 -0
- package/esm/react/Card.d.ts +104 -0
- package/esm/react/Card.d.ts.map +1 -0
- package/esm/react/hooks/context.d.ts +179 -0
- package/esm/react/hooks/context.d.ts.map +1 -0
- package/esm/react/hooks/index.d.ts +42 -0
- package/esm/react/hooks/index.d.ts.map +1 -0
- package/esm/react/hooks/tools.d.ts +284 -0
- package/esm/react/hooks/tools.d.ts.map +1 -0
- package/esm/react/index.d.ts +81 -0
- package/esm/react/index.d.ts.map +1 -0
- package/esm/react/index.js +1372 -0
- package/esm/react/types.d.ts +106 -0
- package/esm/react/types.d.ts.map +1 -0
- package/esm/react/utils.d.ts +43 -0
- package/esm/react/utils.d.ts.map +1 -0
- package/esm/registry/index.d.ts +46 -0
- package/esm/registry/index.d.ts.map +1 -0
- package/esm/registry/index.js +6422 -0
- package/esm/registry/render-template.d.ts +91 -0
- package/esm/registry/render-template.d.ts.map +1 -0
- package/esm/registry/tool-ui.registry.d.ts +294 -0
- package/esm/registry/tool-ui.registry.d.ts.map +1 -0
- package/esm/registry/uri-utils.d.ts +56 -0
- package/esm/registry/uri-utils.d.ts.map +1 -0
- package/esm/render/index.d.ts +8 -0
- package/esm/render/index.d.ts.map +1 -0
- package/esm/render/index.js +45 -0
- package/esm/render/prerender.d.ts +57 -0
- package/esm/render/prerender.d.ts.map +1 -0
- package/esm/renderers/cache.d.ts +145 -0
- package/esm/renderers/cache.d.ts.map +1 -0
- package/esm/renderers/html.renderer.d.ts +123 -0
- package/esm/renderers/html.renderer.d.ts.map +1 -0
- package/esm/renderers/index.d.ts +36 -0
- package/esm/renderers/index.d.ts.map +1 -0
- package/esm/renderers/index.js +1827 -0
- package/esm/renderers/mdx.renderer.d.ts +120 -0
- package/esm/renderers/mdx.renderer.d.ts.map +1 -0
- package/esm/renderers/react.renderer.d.ts +96 -0
- package/esm/renderers/react.renderer.d.ts.map +1 -0
- package/esm/renderers/registry.d.ts +134 -0
- package/esm/renderers/registry.d.ts.map +1 -0
- package/esm/renderers/types.d.ts +342 -0
- package/esm/renderers/types.d.ts.map +1 -0
- package/esm/renderers/utils/detect.d.ts +107 -0
- package/esm/renderers/utils/detect.d.ts.map +1 -0
- package/esm/renderers/utils/hash.d.ts +40 -0
- package/esm/renderers/utils/hash.d.ts.map +1 -0
- package/esm/renderers/utils/index.d.ts +9 -0
- package/esm/renderers/utils/index.d.ts.map +1 -0
- package/esm/renderers/utils/transpiler.d.ts +89 -0
- package/esm/renderers/utils/transpiler.d.ts.map +1 -0
- package/esm/runtime/adapters/html.adapter.d.ts +59 -0
- package/esm/runtime/adapters/html.adapter.d.ts.map +1 -0
- package/esm/runtime/adapters/index.d.ts +26 -0
- package/esm/runtime/adapters/index.d.ts.map +1 -0
- package/esm/runtime/adapters/mdx.adapter.d.ts +73 -0
- package/esm/runtime/adapters/mdx.adapter.d.ts.map +1 -0
- package/esm/runtime/adapters/react.adapter.d.ts +70 -0
- package/esm/runtime/adapters/react.adapter.d.ts.map +1 -0
- package/esm/runtime/adapters/types.d.ts +95 -0
- package/esm/runtime/adapters/types.d.ts.map +1 -0
- package/esm/runtime/csp.d.ts +48 -0
- package/esm/runtime/csp.d.ts.map +1 -0
- package/esm/runtime/index.d.ts +17 -0
- package/esm/runtime/index.d.ts.map +1 -0
- package/esm/runtime/index.js +5186 -0
- package/esm/runtime/mcp-bridge.d.ts +101 -0
- package/esm/runtime/mcp-bridge.d.ts.map +1 -0
- package/esm/runtime/renderer-runtime.d.ts +133 -0
- package/esm/runtime/renderer-runtime.d.ts.map +1 -0
- package/esm/runtime/sanitizer.d.ts +172 -0
- package/esm/runtime/sanitizer.d.ts.map +1 -0
- package/esm/runtime/types.d.ts +415 -0
- package/esm/runtime/types.d.ts.map +1 -0
- package/esm/runtime/wrapper.d.ts +421 -0
- package/esm/runtime/wrapper.d.ts.map +1 -0
- package/esm/styles/index.d.ts +8 -0
- package/esm/styles/index.d.ts.map +1 -0
- package/esm/styles/index.js +171 -0
- package/esm/styles/variants.d.ts +51 -0
- package/esm/styles/variants.d.ts.map +1 -0
- package/esm/theme/cdn.d.ts +195 -0
- package/esm/theme/cdn.d.ts.map +1 -0
- package/esm/theme/index.d.ts +18 -0
- package/esm/theme/index.d.ts.map +1 -0
- package/esm/theme/index.js +700 -0
- package/esm/theme/platforms.d.ts +107 -0
- package/esm/theme/platforms.d.ts.map +1 -0
- package/esm/theme/presets/github-openai.d.ts +50 -0
- package/esm/theme/presets/github-openai.d.ts.map +1 -0
- package/esm/theme/presets/index.d.ts +11 -0
- package/esm/theme/presets/index.d.ts.map +1 -0
- package/esm/theme/theme.d.ts +396 -0
- package/esm/theme/theme.d.ts.map +1 -0
- package/esm/tool-template/builder.d.ts +213 -0
- package/esm/tool-template/builder.d.ts.map +1 -0
- package/esm/tool-template/index.d.ts +16 -0
- package/esm/tool-template/index.d.ts.map +1 -0
- package/esm/tool-template/index.js +3515 -0
- package/esm/types/index.d.ts +14 -0
- package/esm/types/index.d.ts.map +1 -0
- package/esm/types/index.js +75 -0
- package/esm/types/ui-config.d.ts +639 -0
- package/esm/types/ui-config.d.ts.map +1 -0
- package/esm/types/ui-runtime.d.ts +1007 -0
- package/esm/types/ui-runtime.d.ts.map +1 -0
- package/esm/typings/cache/cache-adapter.d.ts +125 -0
- package/esm/typings/cache/cache-adapter.d.ts.map +1 -0
- package/esm/typings/cache/index.d.ts +10 -0
- package/esm/typings/cache/index.d.ts.map +1 -0
- package/esm/typings/cache/memory-cache.d.ts +92 -0
- package/esm/typings/cache/memory-cache.d.ts.map +1 -0
- package/esm/typings/dts-parser.d.ts +90 -0
- package/esm/typings/dts-parser.d.ts.map +1 -0
- package/esm/typings/index.d.ts +48 -0
- package/esm/typings/index.d.ts.map +1 -0
- package/esm/typings/schemas.d.ts +232 -0
- package/esm/typings/schemas.d.ts.map +1 -0
- package/esm/typings/type-fetcher.d.ts +89 -0
- package/esm/typings/type-fetcher.d.ts.map +1 -0
- package/esm/typings/types.d.ts +320 -0
- package/esm/typings/types.d.ts.map +1 -0
- package/esm/universal/UniversalApp.d.ts +108 -0
- package/esm/universal/UniversalApp.d.ts.map +1 -0
- package/esm/universal/cached-runtime.d.ts +115 -0
- package/esm/universal/cached-runtime.d.ts.map +1 -0
- package/esm/universal/context.d.ts +122 -0
- package/esm/universal/context.d.ts.map +1 -0
- package/esm/universal/index.d.ts +57 -0
- package/esm/universal/index.d.ts.map +1 -0
- package/esm/universal/renderers/html.renderer.d.ts +37 -0
- package/esm/universal/renderers/html.renderer.d.ts.map +1 -0
- package/esm/universal/renderers/index.d.ts +112 -0
- package/esm/universal/renderers/index.d.ts.map +1 -0
- package/esm/universal/renderers/markdown.renderer.d.ts +33 -0
- package/esm/universal/renderers/markdown.renderer.d.ts.map +1 -0
- package/esm/universal/renderers/mdx.renderer.d.ts +38 -0
- package/esm/universal/renderers/mdx.renderer.d.ts.map +1 -0
- package/esm/universal/renderers/react.renderer.d.ts +46 -0
- package/esm/universal/renderers/react.renderer.d.ts.map +1 -0
- package/esm/universal/runtime-builder.d.ts +33 -0
- package/esm/universal/runtime-builder.d.ts.map +1 -0
- package/esm/universal/store.d.ts +135 -0
- package/esm/universal/store.d.ts.map +1 -0
- package/esm/universal/types.d.ts +199 -0
- package/esm/universal/types.d.ts.map +1 -0
- package/esm/utils/escape-html.d.ts +58 -0
- package/esm/utils/escape-html.d.ts.map +1 -0
- package/esm/utils/index.d.ts +10 -0
- package/esm/utils/index.d.ts.map +1 -0
- package/esm/utils/index.js +40 -0
- package/esm/utils/safe-stringify.d.ts +30 -0
- package/esm/utils/safe-stringify.d.ts.map +1 -0
- package/esm/validation/error-box.d.ts +56 -0
- package/esm/validation/error-box.d.ts.map +1 -0
- package/esm/validation/index.d.ts +13 -0
- package/esm/validation/index.d.ts.map +1 -0
- package/esm/validation/index.js +562 -0
- package/esm/validation/schema-paths.d.ts +118 -0
- package/esm/validation/schema-paths.d.ts.map +1 -0
- package/esm/validation/template-validator.d.ts +143 -0
- package/esm/validation/template-validator.d.ts.map +1 -0
- package/esm/validation/wrapper.d.ts +97 -0
- package/esm/validation/wrapper.d.ts.map +1 -0
- package/esm/web-components/core/attribute-parser.d.ts +82 -0
- package/esm/web-components/core/attribute-parser.d.ts.map +1 -0
- package/esm/web-components/core/base-element.d.ts +197 -0
- package/esm/web-components/core/base-element.d.ts.map +1 -0
- package/esm/web-components/core/index.d.ts +9 -0
- package/esm/web-components/core/index.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-alert.d.ts +46 -0
- package/esm/web-components/elements/fmcp-alert.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-badge.d.ts +47 -0
- package/esm/web-components/elements/fmcp-badge.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-button.d.ts +117 -0
- package/esm/web-components/elements/fmcp-button.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-card.d.ts +53 -0
- package/esm/web-components/elements/fmcp-card.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-input.d.ts +96 -0
- package/esm/web-components/elements/fmcp-input.d.ts.map +1 -0
- package/esm/web-components/elements/fmcp-select.d.ts +100 -0
- package/esm/web-components/elements/fmcp-select.d.ts.map +1 -0
- package/esm/web-components/elements/index.d.ts +13 -0
- package/esm/web-components/elements/index.d.ts.map +1 -0
- package/esm/web-components/index.d.ts +50 -0
- package/esm/web-components/index.d.ts.map +1 -0
- package/esm/web-components/index.js +2048 -0
- package/esm/web-components/register.d.ts +57 -0
- package/esm/web-components/register.d.ts.map +1 -0
- package/esm/web-components/types.d.ts +122 -0
- package/esm/web-components/types.d.ts.map +1 -0
- package/esm/widgets/index.d.ts +8 -0
- package/esm/widgets/index.d.ts.map +1 -0
- package/esm/widgets/index.js +941 -0
- package/esm/widgets/progress.d.ts +133 -0
- package/esm/widgets/progress.d.ts.map +1 -0
- package/esm/widgets/resource.d.ts +163 -0
- package/esm/widgets/resource.d.ts.map +1 -0
- package/handlebars/expression-extractor.d.ts +147 -0
- package/handlebars/expression-extractor.d.ts.map +1 -0
- package/handlebars/helpers.d.ts +339 -0
- package/handlebars/helpers.d.ts.map +1 -0
- package/handlebars/index.d.ts +195 -0
- package/handlebars/index.d.ts.map +1 -0
- package/handlebars/index.js +666 -0
- package/index.d.ts +56 -0
- package/index.d.ts.map +1 -0
- package/index.js +20942 -0
- package/layouts/base.d.ts +86 -0
- package/layouts/base.d.ts.map +1 -0
- package/layouts/index.d.ts +8 -0
- package/layouts/index.d.ts.map +1 -0
- package/layouts/index.js +930 -0
- package/layouts/presets.d.ts +134 -0
- package/layouts/presets.d.ts.map +1 -0
- package/package.json +26 -85
- package/pages/consent.d.ts +117 -0
- package/pages/consent.d.ts.map +1 -0
- package/pages/error.d.ts +101 -0
- package/pages/error.d.ts.map +1 -0
- package/pages/index.d.ts +9 -0
- package/pages/index.d.ts.map +1 -0
- package/pages/index.js +1602 -0
- package/react/Alert.d.ts +102 -0
- package/react/Alert.d.ts.map +1 -0
- package/react/Badge.d.ts +101 -0
- package/react/Badge.d.ts.map +1 -0
- package/react/Button.d.ts +109 -0
- package/react/Button.d.ts.map +1 -0
- package/react/Card.d.ts +104 -0
- package/react/Card.d.ts.map +1 -0
- package/react/hooks/context.d.ts +179 -0
- package/react/hooks/context.d.ts.map +1 -0
- package/react/hooks/index.d.ts +42 -0
- package/react/hooks/index.d.ts.map +1 -0
- package/react/hooks/tools.d.ts +284 -0
- package/react/hooks/tools.d.ts.map +1 -0
- package/react/index.d.ts +81 -0
- package/react/index.d.ts.map +1 -0
- package/react/index.js +1430 -0
- package/react/types.d.ts +106 -0
- package/react/types.d.ts.map +1 -0
- package/react/utils.d.ts +43 -0
- package/react/utils.d.ts.map +1 -0
- package/registry/index.d.ts +46 -0
- package/registry/index.d.ts.map +1 -0
- package/registry/index.js +6465 -0
- package/registry/render-template.d.ts +91 -0
- package/registry/render-template.d.ts.map +1 -0
- package/registry/tool-ui.registry.d.ts +294 -0
- package/registry/tool-ui.registry.d.ts.map +1 -0
- package/registry/uri-utils.d.ts +56 -0
- package/registry/uri-utils.d.ts.map +1 -0
- package/render/index.d.ts +8 -0
- package/render/index.d.ts.map +1 -0
- package/render/index.js +77 -0
- package/render/prerender.d.ts +57 -0
- package/render/prerender.d.ts.map +1 -0
- package/renderers/cache.d.ts +145 -0
- package/renderers/cache.d.ts.map +1 -0
- package/renderers/html.renderer.d.ts +123 -0
- package/renderers/html.renderer.d.ts.map +1 -0
- package/renderers/index.d.ts +36 -0
- package/renderers/index.d.ts.map +1 -0
- package/renderers/index.js +1882 -0
- package/renderers/mdx.renderer.d.ts +120 -0
- package/renderers/mdx.renderer.d.ts.map +1 -0
- package/renderers/react.renderer.d.ts +96 -0
- package/renderers/react.renderer.d.ts.map +1 -0
- package/renderers/registry.d.ts +134 -0
- package/renderers/registry.d.ts.map +1 -0
- package/renderers/types.d.ts +342 -0
- package/renderers/types.d.ts.map +1 -0
- package/renderers/utils/detect.d.ts +107 -0
- package/renderers/utils/detect.d.ts.map +1 -0
- package/renderers/utils/hash.d.ts +40 -0
- package/renderers/utils/hash.d.ts.map +1 -0
- package/renderers/utils/index.d.ts +9 -0
- package/renderers/utils/index.d.ts.map +1 -0
- package/renderers/utils/transpiler.d.ts +89 -0
- package/renderers/utils/transpiler.d.ts.map +1 -0
- package/runtime/adapters/html.adapter.d.ts +59 -0
- package/runtime/adapters/html.adapter.d.ts.map +1 -0
- package/runtime/adapters/index.d.ts +26 -0
- package/runtime/adapters/index.d.ts.map +1 -0
- package/runtime/adapters/mdx.adapter.d.ts +73 -0
- package/runtime/adapters/mdx.adapter.d.ts.map +1 -0
- package/runtime/adapters/react.adapter.d.ts +70 -0
- package/runtime/adapters/react.adapter.d.ts.map +1 -0
- package/runtime/adapters/types.d.ts +95 -0
- package/runtime/adapters/types.d.ts.map +1 -0
- package/runtime/csp.d.ts +48 -0
- package/runtime/csp.d.ts.map +1 -0
- package/runtime/index.d.ts +17 -0
- package/runtime/index.d.ts.map +1 -0
- package/runtime/index.js +5264 -0
- package/runtime/mcp-bridge.d.ts +101 -0
- package/runtime/mcp-bridge.d.ts.map +1 -0
- package/runtime/renderer-runtime.d.ts +133 -0
- package/runtime/renderer-runtime.d.ts.map +1 -0
- package/runtime/sanitizer.d.ts +172 -0
- package/runtime/sanitizer.d.ts.map +1 -0
- package/runtime/types.d.ts +415 -0
- package/runtime/types.d.ts.map +1 -0
- package/runtime/wrapper.d.ts +421 -0
- package/runtime/wrapper.d.ts.map +1 -0
- package/styles/index.d.ts +8 -0
- package/styles/index.d.ts.map +1 -0
- package/styles/index.js +222 -0
- package/styles/variants.d.ts +51 -0
- package/styles/variants.d.ts.map +1 -0
- package/theme/cdn.d.ts +195 -0
- package/theme/cdn.d.ts.map +1 -0
- package/theme/index.d.ts +18 -0
- package/theme/index.d.ts.map +1 -0
- package/theme/index.js +757 -0
- package/theme/platforms.d.ts +107 -0
- package/theme/platforms.d.ts.map +1 -0
- package/theme/presets/github-openai.d.ts +50 -0
- package/theme/presets/github-openai.d.ts.map +1 -0
- package/theme/presets/index.d.ts +11 -0
- package/theme/presets/index.d.ts.map +1 -0
- package/theme/theme.d.ts +396 -0
- package/theme/theme.d.ts.map +1 -0
- package/tool-template/builder.d.ts +213 -0
- package/tool-template/builder.d.ts.map +1 -0
- package/tool-template/index.d.ts +16 -0
- package/tool-template/index.d.ts.map +1 -0
- package/tool-template/index.js +3559 -0
- package/types/index.d.ts +14 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.js +108 -0
- package/types/ui-config.d.ts +639 -0
- package/types/ui-config.d.ts.map +1 -0
- package/types/ui-runtime.d.ts +1007 -0
- package/types/ui-runtime.d.ts.map +1 -0
- package/typings/cache/cache-adapter.d.ts +125 -0
- package/typings/cache/cache-adapter.d.ts.map +1 -0
- package/typings/cache/index.d.ts +10 -0
- package/typings/cache/index.d.ts.map +1 -0
- package/typings/cache/memory-cache.d.ts +92 -0
- package/typings/cache/memory-cache.d.ts.map +1 -0
- package/typings/dts-parser.d.ts +90 -0
- package/typings/dts-parser.d.ts.map +1 -0
- package/typings/index.d.ts +48 -0
- package/typings/index.d.ts.map +1 -0
- package/typings/schemas.d.ts +232 -0
- package/typings/schemas.d.ts.map +1 -0
- package/typings/type-fetcher.d.ts +89 -0
- package/typings/type-fetcher.d.ts.map +1 -0
- package/typings/types.d.ts +320 -0
- package/typings/types.d.ts.map +1 -0
- package/universal/UniversalApp.d.ts +108 -0
- package/universal/UniversalApp.d.ts.map +1 -0
- package/universal/cached-runtime.d.ts +115 -0
- package/universal/cached-runtime.d.ts.map +1 -0
- package/universal/context.d.ts +122 -0
- package/universal/context.d.ts.map +1 -0
- package/universal/index.d.ts +57 -0
- package/universal/index.d.ts.map +1 -0
- package/universal/renderers/html.renderer.d.ts +37 -0
- package/universal/renderers/html.renderer.d.ts.map +1 -0
- package/universal/renderers/index.d.ts +112 -0
- package/universal/renderers/index.d.ts.map +1 -0
- package/universal/renderers/markdown.renderer.d.ts +33 -0
- package/universal/renderers/markdown.renderer.d.ts.map +1 -0
- package/universal/renderers/mdx.renderer.d.ts +38 -0
- package/universal/renderers/mdx.renderer.d.ts.map +1 -0
- package/universal/renderers/react.renderer.d.ts +46 -0
- package/universal/renderers/react.renderer.d.ts.map +1 -0
- package/universal/runtime-builder.d.ts +33 -0
- package/universal/runtime-builder.d.ts.map +1 -0
- package/universal/store.d.ts +135 -0
- package/universal/store.d.ts.map +1 -0
- package/universal/types.d.ts +199 -0
- package/universal/types.d.ts.map +1 -0
- package/utils/escape-html.d.ts +58 -0
- package/utils/escape-html.d.ts.map +1 -0
- package/utils/index.d.ts +10 -0
- package/utils/index.d.ts.map +1 -0
- package/utils/index.js +70 -0
- package/utils/safe-stringify.d.ts +30 -0
- package/utils/safe-stringify.d.ts.map +1 -0
- package/validation/error-box.d.ts +56 -0
- package/validation/error-box.d.ts.map +1 -0
- package/validation/index.d.ts +13 -0
- package/validation/index.d.ts.map +1 -0
- package/validation/index.js +603 -0
- package/validation/schema-paths.d.ts +118 -0
- package/validation/schema-paths.d.ts.map +1 -0
- package/validation/template-validator.d.ts +143 -0
- package/validation/template-validator.d.ts.map +1 -0
- package/validation/wrapper.d.ts +97 -0
- package/validation/wrapper.d.ts.map +1 -0
- package/web-components/core/attribute-parser.d.ts +82 -0
- package/web-components/core/attribute-parser.d.ts.map +1 -0
- package/web-components/core/base-element.d.ts +197 -0
- package/web-components/core/base-element.d.ts.map +1 -0
- package/web-components/core/index.d.ts +9 -0
- package/web-components/core/index.d.ts.map +1 -0
- package/web-components/elements/fmcp-alert.d.ts +46 -0
- package/web-components/elements/fmcp-alert.d.ts.map +1 -0
- package/web-components/elements/fmcp-badge.d.ts +47 -0
- package/web-components/elements/fmcp-badge.d.ts.map +1 -0
- package/web-components/elements/fmcp-button.d.ts +117 -0
- package/web-components/elements/fmcp-button.d.ts.map +1 -0
- package/web-components/elements/fmcp-card.d.ts +53 -0
- package/web-components/elements/fmcp-card.d.ts.map +1 -0
- package/web-components/elements/fmcp-input.d.ts +96 -0
- package/web-components/elements/fmcp-input.d.ts.map +1 -0
- package/web-components/elements/fmcp-select.d.ts +100 -0
- package/web-components/elements/fmcp-select.d.ts.map +1 -0
- package/web-components/elements/index.d.ts +13 -0
- package/web-components/elements/index.d.ts.map +1 -0
- package/web-components/index.d.ts +50 -0
- package/web-components/index.d.ts.map +1 -0
- package/web-components/index.js +2093 -0
- package/web-components/register.d.ts +57 -0
- package/web-components/register.d.ts.map +1 -0
- package/web-components/types.d.ts +122 -0
- package/web-components/types.d.ts.map +1 -0
- package/widgets/index.d.ts +8 -0
- package/widgets/index.d.ts.map +1 -0
- package/widgets/index.js +978 -0
- package/widgets/progress.d.ts +133 -0
- package/widgets/progress.d.ts.map +1 -0
- package/widgets/resource.d.ts +163 -0
- package/widgets/resource.d.ts.map +1 -0
- package/src/adapters/index.d.ts +0 -10
- package/src/adapters/index.js +0 -18
- package/src/adapters/index.js.map +0 -1
- package/src/adapters/platform-meta.d.ts +0 -165
- package/src/adapters/platform-meta.js +0 -310
- package/src/adapters/platform-meta.js.map +0 -1
- package/src/base-template/bridge.d.ts +0 -89
- package/src/base-template/bridge.js +0 -452
- package/src/base-template/bridge.js.map +0 -1
- package/src/base-template/default-base-template.d.ts +0 -91
- package/src/base-template/default-base-template.js +0 -435
- package/src/base-template/default-base-template.js.map +0 -1
- package/src/base-template/index.d.ts +0 -14
- package/src/base-template/index.js +0 -30
- package/src/base-template/index.js.map +0 -1
- package/src/base-template/polyfills.d.ts +0 -30
- package/src/base-template/polyfills.js +0 -190
- package/src/base-template/polyfills.js.map +0 -1
- package/src/base-template/theme-styles.d.ts +0 -73
- package/src/base-template/theme-styles.js +0 -95
- package/src/base-template/theme-styles.js.map +0 -1
- package/src/bridge/adapters/base-adapter.d.ts +0 -103
- package/src/bridge/adapters/base-adapter.js +0 -314
- package/src/bridge/adapters/base-adapter.js.map +0 -1
- package/src/bridge/adapters/claude.adapter.d.ts +0 -66
- package/src/bridge/adapters/claude.adapter.js +0 -145
- package/src/bridge/adapters/claude.adapter.js.map +0 -1
- package/src/bridge/adapters/ext-apps.adapter.d.ts +0 -142
- package/src/bridge/adapters/ext-apps.adapter.js +0 -416
- package/src/bridge/adapters/ext-apps.adapter.js.map +0 -1
- package/src/bridge/adapters/gemini.adapter.d.ts +0 -63
- package/src/bridge/adapters/gemini.adapter.js +0 -160
- package/src/bridge/adapters/gemini.adapter.js.map +0 -1
- package/src/bridge/adapters/generic.adapter.d.ts +0 -55
- package/src/bridge/adapters/generic.adapter.js +0 -108
- package/src/bridge/adapters/generic.adapter.js.map +0 -1
- package/src/bridge/adapters/index.d.ts +0 -25
- package/src/bridge/adapters/index.js +0 -65
- package/src/bridge/adapters/index.js.map +0 -1
- package/src/bridge/adapters/openai.adapter.d.ts +0 -64
- package/src/bridge/adapters/openai.adapter.js +0 -194
- package/src/bridge/adapters/openai.adapter.js.map +0 -1
- package/src/bridge/core/adapter-registry.d.ts +0 -121
- package/src/bridge/core/adapter-registry.js +0 -271
- package/src/bridge/core/adapter-registry.js.map +0 -1
- package/src/bridge/core/bridge-factory.d.ts +0 -198
- package/src/bridge/core/bridge-factory.js +0 -428
- package/src/bridge/core/bridge-factory.js.map +0 -1
- package/src/bridge/core/index.d.ts +0 -9
- package/src/bridge/core/index.js +0 -22
- package/src/bridge/core/index.js.map +0 -1
- package/src/bridge/index.d.ts +0 -61
- package/src/bridge/index.js +0 -94
- package/src/bridge/index.js.map +0 -1
- package/src/bridge/runtime/iife-generator.d.ts +0 -61
- package/src/bridge/runtime/iife-generator.js +0 -940
- package/src/bridge/runtime/iife-generator.js.map +0 -1
- package/src/bridge/runtime/index.d.ts +0 -8
- package/src/bridge/runtime/index.js +0 -16
- package/src/bridge/runtime/index.js.map +0 -1
- package/src/bridge/types.d.ts +0 -385
- package/src/bridge/types.js +0 -11
- package/src/bridge/types.js.map +0 -1
- package/src/build/cdn-resources.d.ts +0 -140
- package/src/build/cdn-resources.js +0 -314
- package/src/build/cdn-resources.js.map +0 -1
- package/src/build/index.d.ts +0 -294
- package/src/build/index.js +0 -325
- package/src/build/index.js.map +0 -1
- package/src/build/widget-manifest.d.ts +0 -212
- package/src/build/widget-manifest.js +0 -652
- package/src/build/widget-manifest.js.map +0 -1
- package/src/bundler/bundler.d.ts +0 -110
- package/src/bundler/bundler.js +0 -432
- package/src/bundler/bundler.js.map +0 -1
- package/src/bundler/cache.d.ts +0 -172
- package/src/bundler/cache.js +0 -250
- package/src/bundler/cache.js.map +0 -1
- package/src/bundler/index.d.ts +0 -41
- package/src/bundler/index.js +0 -73
- package/src/bundler/index.js.map +0 -1
- package/src/bundler/sandbox/enclave-adapter.d.ts +0 -120
- package/src/bundler/sandbox/enclave-adapter.js +0 -339
- package/src/bundler/sandbox/enclave-adapter.js.map +0 -1
- package/src/bundler/sandbox/executor.d.ts +0 -13
- package/src/bundler/sandbox/executor.js +0 -22
- package/src/bundler/sandbox/executor.js.map +0 -1
- package/src/bundler/sandbox/policy.d.ts +0 -61
- package/src/bundler/sandbox/policy.js +0 -238
- package/src/bundler/sandbox/policy.js.map +0 -1
- package/src/bundler/types.d.ts +0 -347
- package/src/bundler/types.js +0 -132
- package/src/bundler/types.js.map +0 -1
- package/src/components/alert.d.ts +0 -71
- package/src/components/alert.js +0 -189
- package/src/components/alert.js.map +0 -1
- package/src/components/alert.schema.d.ts +0 -114
- package/src/components/alert.schema.js +0 -105
- package/src/components/alert.schema.js.map +0 -1
- package/src/components/avatar.d.ts +0 -76
- package/src/components/avatar.js +0 -176
- package/src/components/avatar.js.map +0 -1
- package/src/components/avatar.schema.d.ts +0 -169
- package/src/components/avatar.schema.js +0 -103
- package/src/components/avatar.schema.js.map +0 -1
- package/src/components/badge.d.ts +0 -70
- package/src/components/badge.js +0 -149
- package/src/components/badge.js.map +0 -1
- package/src/components/badge.schema.d.ts +0 -109
- package/src/components/badge.schema.js +0 -96
- package/src/components/badge.schema.js.map +0 -1
- package/src/components/button.d.ts +0 -111
- package/src/components/button.js +0 -336
- package/src/components/button.js.map +0 -1
- package/src/components/button.schema.d.ts +0 -148
- package/src/components/button.schema.js +0 -121
- package/src/components/button.schema.js.map +0 -1
- package/src/components/card.d.ts +0 -60
- package/src/components/card.js +0 -117
- package/src/components/card.js.map +0 -1
- package/src/components/card.schema.d.ts +0 -113
- package/src/components/card.schema.js +0 -98
- package/src/components/card.schema.js.map +0 -1
- package/src/components/form.d.ts +0 -239
- package/src/components/form.js +0 -420
- package/src/components/form.js.map +0 -1
- package/src/components/form.schema.d.ts +0 -441
- package/src/components/form.schema.js +0 -406
- package/src/components/form.schema.js.map +0 -1
- package/src/components/index.d.ts +0 -29
- package/src/components/index.js +0 -98
- package/src/components/index.js.map +0 -1
- package/src/components/list.d.ts +0 -127
- package/src/components/list.js +0 -279
- package/src/components/list.js.map +0 -1
- package/src/components/list.schema.d.ts +0 -134
- package/src/components/list.schema.js +0 -168
- package/src/components/list.schema.js.map +0 -1
- package/src/components/modal.d.ts +0 -111
- package/src/components/modal.js +0 -260
- package/src/components/modal.js.map +0 -1
- package/src/components/modal.schema.d.ts +0 -186
- package/src/components/modal.schema.js +0 -167
- package/src/components/modal.schema.js.map +0 -1
- package/src/components/table.d.ts +0 -105
- package/src/components/table.js +0 -283
- package/src/components/table.js.map +0 -1
- package/src/components/table.schema.d.ts +0 -159
- package/src/components/table.schema.js +0 -173
- package/src/components/table.schema.js.map +0 -1
- package/src/handlebars/helpers.d.ts +0 -348
- package/src/handlebars/helpers.js +0 -605
- package/src/handlebars/helpers.js.map +0 -1
- package/src/handlebars/index.d.ts +0 -193
- package/src/handlebars/index.js +0 -350
- package/src/handlebars/index.js.map +0 -1
- package/src/index.d.ts +0 -50
- package/src/index.js +0 -192
- package/src/index.js.map +0 -1
- package/src/layouts/base.d.ts +0 -88
- package/src/layouts/base.js +0 -227
- package/src/layouts/base.js.map +0 -1
- package/src/layouts/index.d.ts +0 -7
- package/src/layouts/index.js +0 -25
- package/src/layouts/index.js.map +0 -1
- package/src/layouts/presets.d.ts +0 -133
- package/src/layouts/presets.js +0 -277
- package/src/layouts/presets.js.map +0 -1
- package/src/pages/consent.d.ts +0 -116
- package/src/pages/consent.js +0 -218
- package/src/pages/consent.js.map +0 -1
- package/src/pages/error.d.ts +0 -100
- package/src/pages/error.js +0 -263
- package/src/pages/error.js.map +0 -1
- package/src/pages/index.d.ts +0 -8
- package/src/pages/index.js +0 -27
- package/src/pages/index.js.map +0 -1
- package/src/react/Alert.d.ts +0 -101
- package/src/react/Alert.js +0 -51
- package/src/react/Alert.js.map +0 -1
- package/src/react/Badge.d.ts +0 -100
- package/src/react/Badge.js +0 -55
- package/src/react/Badge.js.map +0 -1
- package/src/react/Button.d.ts +0 -108
- package/src/react/Button.js +0 -52
- package/src/react/Button.js.map +0 -1
- package/src/react/Card.d.ts +0 -103
- package/src/react/Card.js +0 -55
- package/src/react/Card.js.map +0 -1
- package/src/react/hooks/context.d.ts +0 -178
- package/src/react/hooks/context.js +0 -287
- package/src/react/hooks/context.js.map +0 -1
- package/src/react/hooks/index.d.ts +0 -41
- package/src/react/hooks/index.js +0 -61
- package/src/react/hooks/index.js.map +0 -1
- package/src/react/hooks/tools.d.ts +0 -283
- package/src/react/hooks/tools.js +0 -465
- package/src/react/hooks/tools.js.map +0 -1
- package/src/react/index.d.ts +0 -80
- package/src/react/index.js +0 -113
- package/src/react/index.js.map +0 -1
- package/src/react/types.d.ts +0 -105
- package/src/react/types.js +0 -12
- package/src/react/types.js.map +0 -1
- package/src/react/utils.d.ts +0 -42
- package/src/react/utils.js +0 -99
- package/src/react/utils.js.map +0 -1
- package/src/registry/index.d.ts +0 -45
- package/src/registry/index.js +0 -67
- package/src/registry/index.js.map +0 -1
- package/src/registry/render-template.d.ts +0 -86
- package/src/registry/render-template.js +0 -239
- package/src/registry/render-template.js.map +0 -1
- package/src/registry/tool-ui.registry.d.ts +0 -260
- package/src/registry/tool-ui.registry.js +0 -438
- package/src/registry/tool-ui.registry.js.map +0 -1
- package/src/registry/uri-utils.d.ts +0 -55
- package/src/registry/uri-utils.js +0 -97
- package/src/registry/uri-utils.js.map +0 -1
- package/src/render/index.d.ts +0 -7
- package/src/render/index.js +0 -14
- package/src/render/index.js.map +0 -1
- package/src/render/prerender.d.ts +0 -56
- package/src/render/prerender.js +0 -98
- package/src/render/prerender.js.map +0 -1
- package/src/renderers/cache.d.ts +0 -144
- package/src/renderers/cache.js +0 -240
- package/src/renderers/cache.js.map +0 -1
- package/src/renderers/html.renderer.d.ts +0 -122
- package/src/renderers/html.renderer.js +0 -204
- package/src/renderers/html.renderer.js.map +0 -1
- package/src/renderers/index.d.ts +0 -35
- package/src/renderers/index.js +0 -70
- package/src/renderers/index.js.map +0 -1
- package/src/renderers/mdx.renderer.d.ts +0 -119
- package/src/renderers/mdx.renderer.js +0 -305
- package/src/renderers/mdx.renderer.js.map +0 -1
- package/src/renderers/react.renderer.d.ts +0 -95
- package/src/renderers/react.renderer.js +0 -260
- package/src/renderers/react.renderer.js.map +0 -1
- package/src/renderers/registry.d.ts +0 -133
- package/src/renderers/registry.js +0 -232
- package/src/renderers/registry.js.map +0 -1
- package/src/renderers/types.d.ts +0 -341
- package/src/renderers/types.js +0 -9
- package/src/renderers/types.js.map +0 -1
- package/src/renderers/utils/detect.d.ts +0 -106
- package/src/renderers/utils/detect.js +0 -267
- package/src/renderers/utils/detect.js.map +0 -1
- package/src/renderers/utils/hash.d.ts +0 -39
- package/src/renderers/utils/hash.js +0 -75
- package/src/renderers/utils/hash.js.map +0 -1
- package/src/renderers/utils/index.d.ts +0 -8
- package/src/renderers/utils/index.js +0 -28
- package/src/renderers/utils/index.js.map +0 -1
- package/src/renderers/utils/transpiler.d.ts +0 -88
- package/src/renderers/utils/transpiler.js +0 -215
- package/src/renderers/utils/transpiler.js.map +0 -1
- package/src/runtime/adapters/html.adapter.d.ts +0 -58
- package/src/runtime/adapters/html.adapter.js +0 -131
- package/src/runtime/adapters/html.adapter.js.map +0 -1
- package/src/runtime/adapters/index.d.ts +0 -25
- package/src/runtime/adapters/index.js +0 -54
- package/src/runtime/adapters/index.js.map +0 -1
- package/src/runtime/adapters/mdx.adapter.d.ts +0 -72
- package/src/runtime/adapters/mdx.adapter.js +0 -241
- package/src/runtime/adapters/mdx.adapter.js.map +0 -1
- package/src/runtime/adapters/react.adapter.d.ts +0 -69
- package/src/runtime/adapters/react.adapter.js +0 -245
- package/src/runtime/adapters/react.adapter.js.map +0 -1
- package/src/runtime/adapters/types.d.ts +0 -94
- package/src/runtime/adapters/types.js +0 -11
- package/src/runtime/adapters/types.js.map +0 -1
- package/src/runtime/csp.d.ts +0 -37
- package/src/runtime/csp.js +0 -140
- package/src/runtime/csp.js.map +0 -1
- package/src/runtime/index.d.ts +0 -16
- package/src/runtime/index.js +0 -72
- package/src/runtime/index.js.map +0 -1
- package/src/runtime/mcp-bridge.d.ts +0 -100
- package/src/runtime/mcp-bridge.js +0 -581
- package/src/runtime/mcp-bridge.js.map +0 -1
- package/src/runtime/renderer-runtime.d.ts +0 -132
- package/src/runtime/renderer-runtime.js +0 -389
- package/src/runtime/renderer-runtime.js.map +0 -1
- package/src/runtime/sanitizer.d.ts +0 -171
- package/src/runtime/sanitizer.js +0 -318
- package/src/runtime/sanitizer.js.map +0 -1
- package/src/runtime/types.d.ts +0 -414
- package/src/runtime/types.js +0 -12
- package/src/runtime/types.js.map +0 -1
- package/src/runtime/wrapper.d.ts +0 -375
- package/src/runtime/wrapper.js +0 -1793
- package/src/runtime/wrapper.js.map +0 -1
- package/src/styles/index.d.ts +0 -7
- package/src/styles/index.js +0 -11
- package/src/styles/index.js.map +0 -1
- package/src/styles/variants.d.ts +0 -50
- package/src/styles/variants.js +0 -175
- package/src/styles/variants.js.map +0 -1
- package/src/theme/cdn.d.ts +0 -194
- package/src/theme/cdn.js +0 -375
- package/src/theme/cdn.js.map +0 -1
- package/src/theme/index.d.ts +0 -17
- package/src/theme/index.js +0 -57
- package/src/theme/index.js.map +0 -1
- package/src/theme/platforms.d.ts +0 -106
- package/src/theme/platforms.js +0 -161
- package/src/theme/platforms.js.map +0 -1
- package/src/theme/presets/github-openai.d.ts +0 -49
- package/src/theme/presets/github-openai.js +0 -189
- package/src/theme/presets/github-openai.js.map +0 -1
- package/src/theme/presets/index.d.ts +0 -10
- package/src/theme/presets/index.js +0 -17
- package/src/theme/presets/index.js.map +0 -1
- package/src/theme/theme.d.ts +0 -395
- package/src/theme/theme.js +0 -332
- package/src/theme/theme.js.map +0 -1
- package/src/tool-template/builder.d.ts +0 -212
- package/src/tool-template/builder.js +0 -397
- package/src/tool-template/builder.js.map +0 -1
- package/src/tool-template/index.d.ts +0 -15
- package/src/tool-template/index.js +0 -38
- package/src/tool-template/index.js.map +0 -1
- package/src/types/index.d.ts +0 -13
- package/src/types/index.js +0 -26
- package/src/types/index.js.map +0 -1
- package/src/types/ui-config.d.ts +0 -357
- package/src/types/ui-config.js +0 -12
- package/src/types/ui-config.js.map +0 -1
- package/src/types/ui-runtime.d.ts +0 -965
- package/src/types/ui-runtime.js +0 -117
- package/src/types/ui-runtime.js.map +0 -1
- package/src/validation/error-box.d.ts +0 -55
- package/src/validation/error-box.js +0 -75
- package/src/validation/error-box.js.map +0 -1
- package/src/validation/index.d.ts +0 -12
- package/src/validation/index.js +0 -21
- package/src/validation/index.js.map +0 -1
- package/src/validation/wrapper.d.ts +0 -96
- package/src/validation/wrapper.js +0 -117
- package/src/validation/wrapper.js.map +0 -1
- package/src/web-components/core/attribute-parser.d.ts +0 -85
- package/src/web-components/core/attribute-parser.js +0 -189
- package/src/web-components/core/attribute-parser.js.map +0 -1
- package/src/web-components/core/base-element.d.ts +0 -197
- package/src/web-components/core/base-element.js +0 -289
- package/src/web-components/core/base-element.js.map +0 -1
- package/src/web-components/core/index.d.ts +0 -8
- package/src/web-components/core/index.js +0 -18
- package/src/web-components/core/index.js.map +0 -1
- package/src/web-components/elements/fmcp-alert.d.ts +0 -45
- package/src/web-components/elements/fmcp-alert.js +0 -93
- package/src/web-components/elements/fmcp-alert.js.map +0 -1
- package/src/web-components/elements/fmcp-badge.d.ts +0 -46
- package/src/web-components/elements/fmcp-badge.js +0 -99
- package/src/web-components/elements/fmcp-badge.js.map +0 -1
- package/src/web-components/elements/fmcp-button.d.ts +0 -124
- package/src/web-components/elements/fmcp-button.js +0 -233
- package/src/web-components/elements/fmcp-button.js.map +0 -1
- package/src/web-components/elements/fmcp-card.d.ts +0 -52
- package/src/web-components/elements/fmcp-card.js +0 -115
- package/src/web-components/elements/fmcp-card.js.map +0 -1
- package/src/web-components/elements/fmcp-input.d.ts +0 -95
- package/src/web-components/elements/fmcp-input.js +0 -248
- package/src/web-components/elements/fmcp-input.js.map +0 -1
- package/src/web-components/elements/fmcp-select.d.ts +0 -99
- package/src/web-components/elements/fmcp-select.js +0 -243
- package/src/web-components/elements/fmcp-select.js.map +0 -1
- package/src/web-components/elements/index.d.ts +0 -12
- package/src/web-components/elements/index.js +0 -34
- package/src/web-components/elements/index.js.map +0 -1
- package/src/web-components/index.d.ts +0 -49
- package/src/web-components/index.js +0 -75
- package/src/web-components/index.js.map +0 -1
- package/src/web-components/register.d.ts +0 -56
- package/src/web-components/register.js +0 -80
- package/src/web-components/register.js.map +0 -1
- package/src/web-components/types.d.ts +0 -121
- package/src/web-components/types.js +0 -25
- package/src/web-components/types.js.map +0 -1
- package/src/widgets/index.d.ts +0 -7
- package/src/widgets/index.js +0 -24
- package/src/widgets/index.js.map +0 -1
- package/src/widgets/progress.d.ts +0 -132
- package/src/widgets/progress.js +0 -303
- package/src/widgets/progress.js.map +0 -1
- package/src/widgets/resource.d.ts +0 -162
- package/src/widgets/resource.js +0 -340
- package/src/widgets/resource.js.map +0 -1
|
@@ -1,581 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* MCP Bridge Runtime
|
|
4
|
-
*
|
|
5
|
-
* Universal JavaScript runtime injected into UI templates that adapts
|
|
6
|
-
* to the host environment (OpenAI Apps SDK, ext-apps, Claude, etc.).
|
|
7
|
-
*
|
|
8
|
-
* This script is designed to be embedded directly into HTML templates
|
|
9
|
-
* via the MCP_BRIDGE_RUNTIME constant.
|
|
10
|
-
*
|
|
11
|
-
* Architecture:
|
|
12
|
-
* - On OpenAI: Proxy directly to native window.openai API
|
|
13
|
-
* - On Claude: Polyfill with limited functionality (network-blocked)
|
|
14
|
-
* - On ext-apps: JSON-RPC postMessage bridge (SEP-1865 compliant)
|
|
15
|
-
* - On Gemini: Gemini SDK integration
|
|
16
|
-
* - On Unknown: LocalStorage-based state, basic functionality
|
|
17
|
-
*
|
|
18
|
-
* @see https://developers.openai.com/apps-sdk/build/chatgpt-ui
|
|
19
|
-
* @see https://github.com/modelcontextprotocol/ext-apps (SEP-1865)
|
|
20
|
-
*/
|
|
21
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
|
-
exports.generateCustomBridge = exports.PLATFORM_BRIDGE_SCRIPTS = exports.FRONTMCP_BRIDGE_RUNTIME = exports.MCP_BRIDGE_RUNTIME = void 0;
|
|
23
|
-
exports.getMCPBridgeScript = getMCPBridgeScript;
|
|
24
|
-
exports.isMCPBridgeSupported = isMCPBridgeSupported;
|
|
25
|
-
const iife_generator_1 = require("../bridge/runtime/iife-generator");
|
|
26
|
-
/**
|
|
27
|
-
* The MCP Bridge runtime script.
|
|
28
|
-
* This is injected into UI templates to provide a unified API across providers.
|
|
29
|
-
*
|
|
30
|
-
* Uses the new FrontMcpBridge adapter system which supports:
|
|
31
|
-
* - OpenAI ChatGPT Apps SDK
|
|
32
|
-
* - ext-apps (SEP-1865 protocol)
|
|
33
|
-
* - Claude (Anthropic)
|
|
34
|
-
* - Gemini (Google)
|
|
35
|
-
* - Generic fallback
|
|
36
|
-
*
|
|
37
|
-
* The bridge exposes:
|
|
38
|
-
* - window.FrontMcpBridge - New unified bridge API
|
|
39
|
-
* - window.mcpBridge - Legacy compatibility bridge
|
|
40
|
-
* - window.openai - OpenAI polyfill for non-OpenAI platforms
|
|
41
|
-
*
|
|
42
|
-
* Provides full OpenAI window.openai API compatibility:
|
|
43
|
-
* - Properties: theme, userAgent, locale, maxHeight, displayMode, safeArea,
|
|
44
|
-
* toolInput, toolOutput, toolResponseMetadata, widgetState
|
|
45
|
-
* - Methods: callTool, requestDisplayMode, requestClose, openExternal,
|
|
46
|
-
* sendFollowUpMessage, setWidgetState
|
|
47
|
-
*/
|
|
48
|
-
exports.MCP_BRIDGE_RUNTIME = `
|
|
49
|
-
<script>
|
|
50
|
-
(function() {
|
|
51
|
-
'use strict';
|
|
52
|
-
|
|
53
|
-
// ==================== Environment Detection ====================
|
|
54
|
-
|
|
55
|
-
var isOpenAI = typeof window.openai !== 'undefined';
|
|
56
|
-
var isExtApps = window.parent !== window && !isOpenAI;
|
|
57
|
-
var isClaude = typeof window.claude !== 'undefined' ||
|
|
58
|
-
(window.__mcpPlatform === 'claude');
|
|
59
|
-
var isGemini = window.__mcpPlatform === 'gemini';
|
|
60
|
-
|
|
61
|
-
// ==================== Internal State ====================
|
|
62
|
-
|
|
63
|
-
var messageId = 0;
|
|
64
|
-
var pendingRequests = new Map();
|
|
65
|
-
var contextChangeListeners = [];
|
|
66
|
-
var toolResultListeners = [];
|
|
67
|
-
|
|
68
|
-
// Default values for polyfilled properties
|
|
69
|
-
var defaultSafeArea = { top: 0, bottom: 0, left: 0, right: 0 };
|
|
70
|
-
var defaultUserAgent = { type: 'web', hover: true, touch: false };
|
|
71
|
-
|
|
72
|
-
// Host context (for ext-apps and polyfill mode)
|
|
73
|
-
var hostContext = window.__mcpHostContext || {
|
|
74
|
-
theme: 'light',
|
|
75
|
-
displayMode: 'inline'
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
// Trusted origin for postMessage validation (set during ext-apps initialization)
|
|
79
|
-
var trustedOrigin = null;
|
|
80
|
-
|
|
81
|
-
// Detect device capabilities
|
|
82
|
-
var detectUserAgent = function() {
|
|
83
|
-
var ua = navigator.userAgent || '';
|
|
84
|
-
var isMobile = /iPhone|iPad|iPod|Android/i.test(ua);
|
|
85
|
-
var hasTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
|
|
86
|
-
var hasHover = window.matchMedia && window.matchMedia('(hover: hover)').matches;
|
|
87
|
-
return {
|
|
88
|
-
type: isMobile ? 'mobile' : 'web',
|
|
89
|
-
hover: hasHover !== false,
|
|
90
|
-
touch: hasTouch
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
// Detect theme from system preference
|
|
95
|
-
var detectTheme = function() {
|
|
96
|
-
if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
|
97
|
-
return 'dark';
|
|
98
|
-
}
|
|
99
|
-
return 'light';
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
// ==================== Bridge Implementation ====================
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* MCP Bridge provides full OpenAI API compatibility.
|
|
106
|
-
* On OpenAI, it proxies directly to window.openai.
|
|
107
|
-
* On other platforms, it provides polyfills.
|
|
108
|
-
*/
|
|
109
|
-
var bridge = {
|
|
110
|
-
// ==================== Environment Info ====================
|
|
111
|
-
|
|
112
|
-
get provider() {
|
|
113
|
-
if (isOpenAI) return 'openai';
|
|
114
|
-
if (isClaude) return 'claude';
|
|
115
|
-
if (isGemini) return 'gemini';
|
|
116
|
-
if (isExtApps) return 'ext-apps';
|
|
117
|
-
return 'unknown';
|
|
118
|
-
},
|
|
119
|
-
|
|
120
|
-
// ==================== OpenAI-Compatible Properties ====================
|
|
121
|
-
|
|
122
|
-
get theme() {
|
|
123
|
-
if (isOpenAI && window.openai) {
|
|
124
|
-
return window.openai.theme || 'light';
|
|
125
|
-
}
|
|
126
|
-
return hostContext.theme || detectTheme();
|
|
127
|
-
},
|
|
128
|
-
|
|
129
|
-
get userAgent() {
|
|
130
|
-
if (isOpenAI && window.openai && window.openai.userAgent) {
|
|
131
|
-
return window.openai.userAgent;
|
|
132
|
-
}
|
|
133
|
-
return hostContext.userAgent || detectUserAgent();
|
|
134
|
-
},
|
|
135
|
-
|
|
136
|
-
get locale() {
|
|
137
|
-
if (isOpenAI && window.openai && window.openai.locale) {
|
|
138
|
-
return window.openai.locale;
|
|
139
|
-
}
|
|
140
|
-
return navigator.language || 'en-US';
|
|
141
|
-
},
|
|
142
|
-
|
|
143
|
-
get maxHeight() {
|
|
144
|
-
if (isOpenAI && window.openai) {
|
|
145
|
-
return window.openai.maxHeight;
|
|
146
|
-
}
|
|
147
|
-
return hostContext.viewport ? hostContext.viewport.maxHeight : undefined;
|
|
148
|
-
},
|
|
149
|
-
|
|
150
|
-
get displayMode() {
|
|
151
|
-
if (isOpenAI && window.openai) {
|
|
152
|
-
return window.openai.displayMode || 'inline';
|
|
153
|
-
}
|
|
154
|
-
return hostContext.displayMode || 'inline';
|
|
155
|
-
},
|
|
156
|
-
|
|
157
|
-
get safeArea() {
|
|
158
|
-
if (isOpenAI && window.openai && window.openai.safeArea) {
|
|
159
|
-
return window.openai.safeArea;
|
|
160
|
-
}
|
|
161
|
-
return hostContext.safeArea || defaultSafeArea;
|
|
162
|
-
},
|
|
163
|
-
|
|
164
|
-
get toolInput() {
|
|
165
|
-
if (isOpenAI && window.openai && window.openai.toolInput) {
|
|
166
|
-
return window.openai.toolInput;
|
|
167
|
-
}
|
|
168
|
-
return window.__mcpToolInput || {};
|
|
169
|
-
},
|
|
170
|
-
|
|
171
|
-
get toolOutput() {
|
|
172
|
-
if (isOpenAI && window.openai) {
|
|
173
|
-
return window.openai.toolOutput;
|
|
174
|
-
}
|
|
175
|
-
return window.__mcpToolOutput;
|
|
176
|
-
},
|
|
177
|
-
|
|
178
|
-
get structuredContent() {
|
|
179
|
-
// Alias for toolOutput to maintain compatibility
|
|
180
|
-
if (isOpenAI && window.openai) {
|
|
181
|
-
return window.openai.toolOutput;
|
|
182
|
-
}
|
|
183
|
-
return window.__mcpStructuredContent;
|
|
184
|
-
},
|
|
185
|
-
|
|
186
|
-
get toolResponseMetadata() {
|
|
187
|
-
if (isOpenAI && window.openai && window.openai.toolResponseMetadata) {
|
|
188
|
-
return window.openai.toolResponseMetadata;
|
|
189
|
-
}
|
|
190
|
-
return window.__mcpToolResponseMetadata || {};
|
|
191
|
-
},
|
|
192
|
-
|
|
193
|
-
get widgetState() {
|
|
194
|
-
if (isOpenAI && window.openai) {
|
|
195
|
-
return window.openai.widgetState || {};
|
|
196
|
-
}
|
|
197
|
-
// Polyfill: use localStorage
|
|
198
|
-
try {
|
|
199
|
-
var stored = localStorage.getItem('__mcpWidgetState');
|
|
200
|
-
return stored ? JSON.parse(stored) : {};
|
|
201
|
-
} catch (e) {
|
|
202
|
-
return {};
|
|
203
|
-
}
|
|
204
|
-
},
|
|
205
|
-
|
|
206
|
-
// ==================== OpenAI-Compatible Methods ====================
|
|
207
|
-
|
|
208
|
-
callTool: function(name, params) {
|
|
209
|
-
if (isOpenAI && window.openai && window.openai.callTool) {
|
|
210
|
-
return window.openai.callTool(name, params);
|
|
211
|
-
}
|
|
212
|
-
if (isClaude) {
|
|
213
|
-
return Promise.reject(new Error(
|
|
214
|
-
'Tool calls are not supported in Claude widgets (network-blocked sandbox)'
|
|
215
|
-
));
|
|
216
|
-
}
|
|
217
|
-
if (isGemini) {
|
|
218
|
-
return Promise.reject(new Error(
|
|
219
|
-
'Tool calls are not supported in Gemini widgets'
|
|
220
|
-
));
|
|
221
|
-
}
|
|
222
|
-
if (isExtApps) {
|
|
223
|
-
return this._sendRequest('tools/call', { name: name, arguments: params });
|
|
224
|
-
}
|
|
225
|
-
return Promise.reject(new Error('Tool calls not supported in this environment'));
|
|
226
|
-
},
|
|
227
|
-
|
|
228
|
-
requestDisplayMode: function(options) {
|
|
229
|
-
if (isOpenAI && window.openai && window.openai.requestDisplayMode) {
|
|
230
|
-
return window.openai.requestDisplayMode(options);
|
|
231
|
-
}
|
|
232
|
-
if (isExtApps) {
|
|
233
|
-
return this._sendRequest('ui/request-display-mode', options);
|
|
234
|
-
}
|
|
235
|
-
// Polyfill: just update local state
|
|
236
|
-
if (options && options.mode) {
|
|
237
|
-
hostContext.displayMode = options.mode;
|
|
238
|
-
contextChangeListeners.forEach(function(cb) {
|
|
239
|
-
try { cb({ displayMode: options.mode }); } catch (e) {}
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
return Promise.resolve();
|
|
243
|
-
},
|
|
244
|
-
|
|
245
|
-
requestClose: function() {
|
|
246
|
-
if (isOpenAI && window.openai && window.openai.requestClose) {
|
|
247
|
-
return window.openai.requestClose();
|
|
248
|
-
}
|
|
249
|
-
if (isExtApps) {
|
|
250
|
-
return this._sendRequest('ui/request-close', {});
|
|
251
|
-
}
|
|
252
|
-
// Polyfill: dispatch event for parent to handle
|
|
253
|
-
window.dispatchEvent(new CustomEvent('mcp:request-close'));
|
|
254
|
-
return Promise.resolve();
|
|
255
|
-
},
|
|
256
|
-
|
|
257
|
-
openExternal: function(options) {
|
|
258
|
-
var href = typeof options === 'string' ? options : (options && options.href);
|
|
259
|
-
if (!href) {
|
|
260
|
-
return Promise.reject(new Error('URL required'));
|
|
261
|
-
}
|
|
262
|
-
if (isOpenAI && window.openai && window.openai.openExternal) {
|
|
263
|
-
return window.openai.openExternal({ href: href });
|
|
264
|
-
}
|
|
265
|
-
if (isExtApps) {
|
|
266
|
-
return this._sendRequest('ui/open-link', { url: href });
|
|
267
|
-
}
|
|
268
|
-
// Fallback: open in new window
|
|
269
|
-
window.open(href, '_blank', 'noopener,noreferrer');
|
|
270
|
-
return Promise.resolve();
|
|
271
|
-
},
|
|
272
|
-
|
|
273
|
-
// Alias for openExternal (backwards compatibility)
|
|
274
|
-
openLink: function(url) {
|
|
275
|
-
return this.openExternal({ href: url });
|
|
276
|
-
},
|
|
277
|
-
|
|
278
|
-
sendFollowUpMessage: function(options) {
|
|
279
|
-
var prompt = typeof options === 'string' ? options : (options && options.prompt);
|
|
280
|
-
if (!prompt) {
|
|
281
|
-
return Promise.reject(new Error('Prompt required'));
|
|
282
|
-
}
|
|
283
|
-
if (isOpenAI && window.openai && window.openai.sendFollowUpMessage) {
|
|
284
|
-
return window.openai.sendFollowUpMessage({ prompt: prompt });
|
|
285
|
-
}
|
|
286
|
-
if (isClaude) {
|
|
287
|
-
return Promise.reject(new Error(
|
|
288
|
-
'Follow-up messages are not supported in Claude widgets (network-blocked sandbox)'
|
|
289
|
-
));
|
|
290
|
-
}
|
|
291
|
-
if (isGemini) {
|
|
292
|
-
return Promise.reject(new Error(
|
|
293
|
-
'Follow-up messages are not supported in Gemini widgets'
|
|
294
|
-
));
|
|
295
|
-
}
|
|
296
|
-
if (isExtApps) {
|
|
297
|
-
return this._sendRequest('ui/message', {
|
|
298
|
-
role: 'user',
|
|
299
|
-
content: { type: 'text', text: prompt }
|
|
300
|
-
});
|
|
301
|
-
}
|
|
302
|
-
return Promise.reject(new Error('Messages not supported in this environment'));
|
|
303
|
-
},
|
|
304
|
-
|
|
305
|
-
// Alias for sendFollowUpMessage (backwards compatibility)
|
|
306
|
-
sendMessage: function(content) {
|
|
307
|
-
return this.sendFollowUpMessage({ prompt: content });
|
|
308
|
-
},
|
|
309
|
-
|
|
310
|
-
setWidgetState: function(state) {
|
|
311
|
-
if (isOpenAI && window.openai && window.openai.setWidgetState) {
|
|
312
|
-
window.openai.setWidgetState(state);
|
|
313
|
-
return;
|
|
314
|
-
}
|
|
315
|
-
// Polyfill: persist to localStorage
|
|
316
|
-
try {
|
|
317
|
-
localStorage.setItem('__mcpWidgetState', JSON.stringify(state));
|
|
318
|
-
} catch (e) {
|
|
319
|
-
console.warn('Failed to persist widget state:', e);
|
|
320
|
-
}
|
|
321
|
-
},
|
|
322
|
-
|
|
323
|
-
// ==================== Context API (MCP-specific) ====================
|
|
324
|
-
|
|
325
|
-
get context() {
|
|
326
|
-
return {
|
|
327
|
-
theme: this.theme,
|
|
328
|
-
displayMode: this.displayMode,
|
|
329
|
-
viewport: this.maxHeight ? { maxHeight: this.maxHeight } : undefined,
|
|
330
|
-
userAgent: this.userAgent,
|
|
331
|
-
locale: this.locale,
|
|
332
|
-
safeArea: this.safeArea
|
|
333
|
-
};
|
|
334
|
-
},
|
|
335
|
-
|
|
336
|
-
onContextChange: function(callback) {
|
|
337
|
-
contextChangeListeners.push(callback);
|
|
338
|
-
return function() {
|
|
339
|
-
var index = contextChangeListeners.indexOf(callback);
|
|
340
|
-
if (index > -1) contextChangeListeners.splice(index, 1);
|
|
341
|
-
};
|
|
342
|
-
},
|
|
343
|
-
|
|
344
|
-
onToolResult: function(callback) {
|
|
345
|
-
toolResultListeners.push(callback);
|
|
346
|
-
return function() {
|
|
347
|
-
var index = toolResultListeners.indexOf(callback);
|
|
348
|
-
if (index > -1) toolResultListeners.splice(index, 1);
|
|
349
|
-
};
|
|
350
|
-
},
|
|
351
|
-
|
|
352
|
-
// ==================== Internal Methods ====================
|
|
353
|
-
|
|
354
|
-
_sendRequest: function(method, params) {
|
|
355
|
-
return new Promise(function(resolve, reject) {
|
|
356
|
-
var id = ++messageId;
|
|
357
|
-
pendingRequests.set(id, { resolve: resolve, reject: reject });
|
|
358
|
-
|
|
359
|
-
window.parent.postMessage({
|
|
360
|
-
jsonrpc: '2.0',
|
|
361
|
-
id: id,
|
|
362
|
-
method: method,
|
|
363
|
-
params: params
|
|
364
|
-
}, '*');
|
|
365
|
-
|
|
366
|
-
// Timeout after 30s
|
|
367
|
-
setTimeout(function() {
|
|
368
|
-
if (pendingRequests.has(id)) {
|
|
369
|
-
pendingRequests.delete(id);
|
|
370
|
-
reject(new Error('Request timeout'));
|
|
371
|
-
}
|
|
372
|
-
}, 30000);
|
|
373
|
-
});
|
|
374
|
-
},
|
|
375
|
-
|
|
376
|
-
_initExtApps: function() {
|
|
377
|
-
var self = this;
|
|
378
|
-
return this._sendRequest('ui/initialize', {}).then(function(result) {
|
|
379
|
-
if (result && result.hostContext) {
|
|
380
|
-
hostContext = Object.assign(hostContext, result.hostContext);
|
|
381
|
-
}
|
|
382
|
-
// Note: trustedOrigin is now set from first message event origin (trust-on-first-use)
|
|
383
|
-
// Send initialized notification
|
|
384
|
-
window.parent.postMessage({
|
|
385
|
-
jsonrpc: '2.0',
|
|
386
|
-
method: 'ui/notifications/initialized',
|
|
387
|
-
params: {}
|
|
388
|
-
}, '*');
|
|
389
|
-
return result;
|
|
390
|
-
});
|
|
391
|
-
}
|
|
392
|
-
};
|
|
393
|
-
|
|
394
|
-
// ==================== Event Handling ====================
|
|
395
|
-
|
|
396
|
-
window.addEventListener('message', function(event) {
|
|
397
|
-
var data = event.data;
|
|
398
|
-
if (!data || data.jsonrpc !== '2.0') return;
|
|
399
|
-
|
|
400
|
-
// Trust-on-first-use: Establish trusted origin from the first valid message
|
|
401
|
-
if (isExtApps && !trustedOrigin && event.origin) {
|
|
402
|
-
trustedOrigin = event.origin;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
// Validate origin for ext-apps environment to prevent spoofed messages
|
|
406
|
-
if (isExtApps && trustedOrigin && event.origin !== trustedOrigin) {
|
|
407
|
-
console.warn('MCP Bridge: Ignoring message from untrusted origin:', event.origin);
|
|
408
|
-
return;
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
// Handle responses
|
|
412
|
-
if (data.id && pendingRequests.has(data.id)) {
|
|
413
|
-
var pending = pendingRequests.get(data.id);
|
|
414
|
-
pendingRequests.delete(data.id);
|
|
415
|
-
|
|
416
|
-
if (data.error) {
|
|
417
|
-
var err = new Error(data.error.message || 'Unknown error');
|
|
418
|
-
err.code = data.error.code;
|
|
419
|
-
err.data = data.error.data;
|
|
420
|
-
pending.reject(err);
|
|
421
|
-
} else {
|
|
422
|
-
pending.resolve(data.result);
|
|
423
|
-
}
|
|
424
|
-
return;
|
|
425
|
-
}
|
|
426
|
-
|
|
427
|
-
// Handle notifications
|
|
428
|
-
switch (data.method) {
|
|
429
|
-
case 'ui/notifications/tool-input':
|
|
430
|
-
window.__mcpToolInput = data.params && data.params.arguments;
|
|
431
|
-
window.dispatchEvent(new CustomEvent('mcp:tool-input', { detail: data.params }));
|
|
432
|
-
break;
|
|
433
|
-
|
|
434
|
-
case 'ui/notifications/tool-input-partial':
|
|
435
|
-
if (data.params && data.params.arguments) {
|
|
436
|
-
window.__mcpToolInput = Object.assign(window.__mcpToolInput || {}, data.params.arguments);
|
|
437
|
-
}
|
|
438
|
-
break;
|
|
439
|
-
|
|
440
|
-
case 'ui/notifications/tool-result':
|
|
441
|
-
window.__mcpToolOutput = data.params && data.params.content;
|
|
442
|
-
window.__mcpStructuredContent = data.params && data.params.structuredContent;
|
|
443
|
-
toolResultListeners.forEach(function(cb) {
|
|
444
|
-
try { cb(data.params); } catch (e) { console.error('Tool result listener error:', e); }
|
|
445
|
-
});
|
|
446
|
-
window.dispatchEvent(new CustomEvent('mcp:tool-result', { detail: data.params }));
|
|
447
|
-
break;
|
|
448
|
-
|
|
449
|
-
case 'ui/notifications/tool-cancelled':
|
|
450
|
-
window.dispatchEvent(new CustomEvent('mcp:tool-cancelled', { detail: data.params }));
|
|
451
|
-
break;
|
|
452
|
-
|
|
453
|
-
case 'ui/host-context-change':
|
|
454
|
-
hostContext = Object.assign(hostContext, data.params);
|
|
455
|
-
contextChangeListeners.forEach(function(cb) {
|
|
456
|
-
try { cb(data.params); } catch (e) { console.error('Context change listener error:', e); }
|
|
457
|
-
});
|
|
458
|
-
window.dispatchEvent(new CustomEvent('mcp:context-change', { detail: data.params }));
|
|
459
|
-
break;
|
|
460
|
-
|
|
461
|
-
case 'ui/size-change':
|
|
462
|
-
if (hostContext.viewport) {
|
|
463
|
-
hostContext.viewport = Object.assign(hostContext.viewport, data.params);
|
|
464
|
-
} else {
|
|
465
|
-
hostContext.viewport = data.params;
|
|
466
|
-
}
|
|
467
|
-
break;
|
|
468
|
-
}
|
|
469
|
-
});
|
|
470
|
-
|
|
471
|
-
// ==================== Initialize ====================
|
|
472
|
-
|
|
473
|
-
// Export bridge
|
|
474
|
-
window.mcpBridge = bridge;
|
|
475
|
-
|
|
476
|
-
// Also create window.openai polyfill for non-OpenAI platforms
|
|
477
|
-
// This allows code written for OpenAI to work on other platforms
|
|
478
|
-
if (!isOpenAI) {
|
|
479
|
-
window.openai = {
|
|
480
|
-
get theme() { return bridge.theme; },
|
|
481
|
-
get userAgent() { return bridge.userAgent; },
|
|
482
|
-
get locale() { return bridge.locale; },
|
|
483
|
-
get maxHeight() { return bridge.maxHeight; },
|
|
484
|
-
get displayMode() { return bridge.displayMode; },
|
|
485
|
-
get safeArea() { return bridge.safeArea; },
|
|
486
|
-
get toolInput() { return bridge.toolInput; },
|
|
487
|
-
get toolOutput() { return bridge.toolOutput; },
|
|
488
|
-
get toolResponseMetadata() { return bridge.toolResponseMetadata; },
|
|
489
|
-
get widgetState() { return bridge.widgetState; },
|
|
490
|
-
callTool: function(n, a) { return bridge.callTool(n, a); },
|
|
491
|
-
requestDisplayMode: function(o) { return bridge.requestDisplayMode(o); },
|
|
492
|
-
requestClose: function() { return bridge.requestClose(); },
|
|
493
|
-
openExternal: function(o) { return bridge.openExternal(o); },
|
|
494
|
-
sendFollowUpMessage: function(o) { return bridge.sendFollowUpMessage(o); },
|
|
495
|
-
setWidgetState: function(s) { return bridge.setWidgetState(s); }
|
|
496
|
-
};
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
// Auto-initialize for ext-apps
|
|
500
|
-
if (isExtApps) {
|
|
501
|
-
bridge._initExtApps().catch(function(err) {
|
|
502
|
-
console.warn('Failed to initialize MCP bridge:', err);
|
|
503
|
-
});
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
// Dispatch ready event
|
|
507
|
-
window.dispatchEvent(new CustomEvent('mcp:bridge-ready'));
|
|
508
|
-
})();
|
|
509
|
-
</script>
|
|
510
|
-
`;
|
|
511
|
-
/**
|
|
512
|
-
* Get the MCP Bridge runtime script as a string (without script tags)
|
|
513
|
-
* Useful for inline embedding in specific scenarios.
|
|
514
|
-
*/
|
|
515
|
-
function getMCPBridgeScript() {
|
|
516
|
-
// Extract the script content without the <script> tags
|
|
517
|
-
const match = exports.MCP_BRIDGE_RUNTIME.match(/<script>([\s\S]*?)<\/script>/);
|
|
518
|
-
return match ? match[1].trim() : '';
|
|
519
|
-
}
|
|
520
|
-
/**
|
|
521
|
-
* Check if the current environment supports the MCP bridge
|
|
522
|
-
*/
|
|
523
|
-
function isMCPBridgeSupported() {
|
|
524
|
-
if (typeof window === 'undefined')
|
|
525
|
-
return false;
|
|
526
|
-
const w = window;
|
|
527
|
-
return (typeof w.openai !== 'undefined' ||
|
|
528
|
-
typeof w.claude !== 'undefined' ||
|
|
529
|
-
w.__mcpPlatform === 'claude' ||
|
|
530
|
-
w.__mcpPlatform === 'gemini' ||
|
|
531
|
-
w.__mcpPlatform === 'ext-apps' ||
|
|
532
|
-
window.parent !== window);
|
|
533
|
-
}
|
|
534
|
-
// ============================================
|
|
535
|
-
// New FrontMcpBridge System Exports
|
|
536
|
-
// ============================================
|
|
537
|
-
/**
|
|
538
|
-
* The new FrontMcpBridge runtime script (universal - includes all adapters).
|
|
539
|
-
* This is the recommended bridge for new integrations.
|
|
540
|
-
*
|
|
541
|
-
* @example
|
|
542
|
-
* ```typescript
|
|
543
|
-
* import { FRONTMCP_BRIDGE_RUNTIME } from '@frontmcp/ui/runtime';
|
|
544
|
-
* const html = `<!DOCTYPE html><html><head>${FRONTMCP_BRIDGE_RUNTIME}</head>...</html>`;
|
|
545
|
-
* ```
|
|
546
|
-
*/
|
|
547
|
-
exports.FRONTMCP_BRIDGE_RUNTIME = iife_generator_1.BRIDGE_SCRIPT_TAGS.universal;
|
|
548
|
-
/**
|
|
549
|
-
* Platform-specific bridge scripts.
|
|
550
|
-
*
|
|
551
|
-
* Use these for smaller bundle sizes when targeting a specific platform.
|
|
552
|
-
*
|
|
553
|
-
* @example
|
|
554
|
-
* ```typescript
|
|
555
|
-
* import { PLATFORM_BRIDGE_SCRIPTS } from '@frontmcp/ui/runtime';
|
|
556
|
-
*
|
|
557
|
-
* // For ChatGPT only
|
|
558
|
-
* const chatgptHtml = `<html><head>${PLATFORM_BRIDGE_SCRIPTS.chatgpt}</head>...</html>`;
|
|
559
|
-
*
|
|
560
|
-
* // For Claude only
|
|
561
|
-
* const claudeHtml = `<html><head>${PLATFORM_BRIDGE_SCRIPTS.claude}</head>...</html>`;
|
|
562
|
-
* ```
|
|
563
|
-
*/
|
|
564
|
-
exports.PLATFORM_BRIDGE_SCRIPTS = iife_generator_1.BRIDGE_SCRIPT_TAGS;
|
|
565
|
-
/**
|
|
566
|
-
* Generate a custom bridge script with specific options.
|
|
567
|
-
*
|
|
568
|
-
* @example
|
|
569
|
-
* ```typescript
|
|
570
|
-
* import { generateCustomBridge } from '@frontmcp/ui/runtime';
|
|
571
|
-
*
|
|
572
|
-
* const script = generateCustomBridge({
|
|
573
|
-
* adapters: ['openai', 'ext-apps'],
|
|
574
|
-
* debug: true,
|
|
575
|
-
* trustedOrigins: ['https://my-host.com']
|
|
576
|
-
* });
|
|
577
|
-
* ```
|
|
578
|
-
*/
|
|
579
|
-
var iife_generator_2 = require("../bridge/runtime/iife-generator");
|
|
580
|
-
Object.defineProperty(exports, "generateCustomBridge", { enumerable: true, get: function () { return iife_generator_2.generateBridgeIIFE; } });
|
|
581
|
-
//# sourceMappingURL=mcp-bridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-bridge.js","sourceRoot":"","sources":["../../../src/runtime/mcp-bridge.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AA+eH,gDAIC;AAKD,oDAWC;AAhgBD,qEAA0F;AAE1F;;;;;;;;;;;;;;;;;;;;;GAqBG;AACU,QAAA,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8cjC,CAAC;AAEF;;;GAGG;AACH,SAAgB,kBAAkB;IAChC,uDAAuD;IACvD,MAAM,KAAK,GAAG,0BAAkB,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACvE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB;IAClC,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAChD,MAAM,CAAC,GAAG,MAAmF,CAAC;IAC9F,OAAO,CACL,OAAO,CAAC,CAAC,MAAM,KAAK,WAAW;QAC/B,OAAO,CAAC,CAAC,MAAM,KAAK,WAAW;QAC/B,CAAC,CAAC,aAAa,KAAK,QAAQ;QAC5B,CAAC,CAAC,aAAa,KAAK,QAAQ;QAC5B,CAAC,CAAC,aAAa,KAAK,UAAU;QAC9B,MAAM,CAAC,MAAM,KAAK,MAAM,CACzB,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,oCAAoC;AACpC,+CAA+C;AAE/C;;;;;;;;;GASG;AACU,QAAA,uBAAuB,GAAG,mCAAkB,CAAC,SAAS,CAAC;AAEpE;;;;;;;;;;;;;;;GAeG;AACU,QAAA,uBAAuB,GAAG,mCAAkB,CAAC;AAE1D;;;;;;;;;;;;;GAaG;AACH,mEAA8F;AAArF,sHAAA,kBAAkB,OAAwB","sourcesContent":["/**\n * MCP Bridge Runtime\n *\n * Universal JavaScript runtime injected into UI templates that adapts\n * to the host environment (OpenAI Apps SDK, ext-apps, Claude, etc.).\n *\n * This script is designed to be embedded directly into HTML templates\n * via the MCP_BRIDGE_RUNTIME constant.\n *\n * Architecture:\n * - On OpenAI: Proxy directly to native window.openai API\n * - On Claude: Polyfill with limited functionality (network-blocked)\n * - On ext-apps: JSON-RPC postMessage bridge (SEP-1865 compliant)\n * - On Gemini: Gemini SDK integration\n * - On Unknown: LocalStorage-based state, basic functionality\n *\n * @see https://developers.openai.com/apps-sdk/build/chatgpt-ui\n * @see https://github.com/modelcontextprotocol/ext-apps (SEP-1865)\n */\n\nimport type { ProviderType, ThemeMode, DisplayMode, HostContext } from './types';\nimport { BRIDGE_SCRIPT_TAGS, generateBridgeIIFE } from '../bridge/runtime/iife-generator';\n\n/**\n * The MCP Bridge runtime script.\n * This is injected into UI templates to provide a unified API across providers.\n *\n * Uses the new FrontMcpBridge adapter system which supports:\n * - OpenAI ChatGPT Apps SDK\n * - ext-apps (SEP-1865 protocol)\n * - Claude (Anthropic)\n * - Gemini (Google)\n * - Generic fallback\n *\n * The bridge exposes:\n * - window.FrontMcpBridge - New unified bridge API\n * - window.mcpBridge - Legacy compatibility bridge\n * - window.openai - OpenAI polyfill for non-OpenAI platforms\n *\n * Provides full OpenAI window.openai API compatibility:\n * - Properties: theme, userAgent, locale, maxHeight, displayMode, safeArea,\n * toolInput, toolOutput, toolResponseMetadata, widgetState\n * - Methods: callTool, requestDisplayMode, requestClose, openExternal,\n * sendFollowUpMessage, setWidgetState\n */\nexport const MCP_BRIDGE_RUNTIME = `\n<script>\n(function() {\n 'use strict';\n\n // ==================== Environment Detection ====================\n\n var isOpenAI = typeof window.openai !== 'undefined';\n var isExtApps = window.parent !== window && !isOpenAI;\n var isClaude = typeof window.claude !== 'undefined' ||\n (window.__mcpPlatform === 'claude');\n var isGemini = window.__mcpPlatform === 'gemini';\n\n // ==================== Internal State ====================\n\n var messageId = 0;\n var pendingRequests = new Map();\n var contextChangeListeners = [];\n var toolResultListeners = [];\n\n // Default values for polyfilled properties\n var defaultSafeArea = { top: 0, bottom: 0, left: 0, right: 0 };\n var defaultUserAgent = { type: 'web', hover: true, touch: false };\n\n // Host context (for ext-apps and polyfill mode)\n var hostContext = window.__mcpHostContext || {\n theme: 'light',\n displayMode: 'inline'\n };\n\n // Trusted origin for postMessage validation (set during ext-apps initialization)\n var trustedOrigin = null;\n\n // Detect device capabilities\n var detectUserAgent = function() {\n var ua = navigator.userAgent || '';\n var isMobile = /iPhone|iPad|iPod|Android/i.test(ua);\n var hasTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n var hasHover = window.matchMedia && window.matchMedia('(hover: hover)').matches;\n return {\n type: isMobile ? 'mobile' : 'web',\n hover: hasHover !== false,\n touch: hasTouch\n };\n };\n\n // Detect theme from system preference\n var detectTheme = function() {\n if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n return 'dark';\n }\n return 'light';\n };\n\n // ==================== Bridge Implementation ====================\n\n /**\n * MCP Bridge provides full OpenAI API compatibility.\n * On OpenAI, it proxies directly to window.openai.\n * On other platforms, it provides polyfills.\n */\n var bridge = {\n // ==================== Environment Info ====================\n\n get provider() {\n if (isOpenAI) return 'openai';\n if (isClaude) return 'claude';\n if (isGemini) return 'gemini';\n if (isExtApps) return 'ext-apps';\n return 'unknown';\n },\n\n // ==================== OpenAI-Compatible Properties ====================\n\n get theme() {\n if (isOpenAI && window.openai) {\n return window.openai.theme || 'light';\n }\n return hostContext.theme || detectTheme();\n },\n\n get userAgent() {\n if (isOpenAI && window.openai && window.openai.userAgent) {\n return window.openai.userAgent;\n }\n return hostContext.userAgent || detectUserAgent();\n },\n\n get locale() {\n if (isOpenAI && window.openai && window.openai.locale) {\n return window.openai.locale;\n }\n return navigator.language || 'en-US';\n },\n\n get maxHeight() {\n if (isOpenAI && window.openai) {\n return window.openai.maxHeight;\n }\n return hostContext.viewport ? hostContext.viewport.maxHeight : undefined;\n },\n\n get displayMode() {\n if (isOpenAI && window.openai) {\n return window.openai.displayMode || 'inline';\n }\n return hostContext.displayMode || 'inline';\n },\n\n get safeArea() {\n if (isOpenAI && window.openai && window.openai.safeArea) {\n return window.openai.safeArea;\n }\n return hostContext.safeArea || defaultSafeArea;\n },\n\n get toolInput() {\n if (isOpenAI && window.openai && window.openai.toolInput) {\n return window.openai.toolInput;\n }\n return window.__mcpToolInput || {};\n },\n\n get toolOutput() {\n if (isOpenAI && window.openai) {\n return window.openai.toolOutput;\n }\n return window.__mcpToolOutput;\n },\n\n get structuredContent() {\n // Alias for toolOutput to maintain compatibility\n if (isOpenAI && window.openai) {\n return window.openai.toolOutput;\n }\n return window.__mcpStructuredContent;\n },\n\n get toolResponseMetadata() {\n if (isOpenAI && window.openai && window.openai.toolResponseMetadata) {\n return window.openai.toolResponseMetadata;\n }\n return window.__mcpToolResponseMetadata || {};\n },\n\n get widgetState() {\n if (isOpenAI && window.openai) {\n return window.openai.widgetState || {};\n }\n // Polyfill: use localStorage\n try {\n var stored = localStorage.getItem('__mcpWidgetState');\n return stored ? JSON.parse(stored) : {};\n } catch (e) {\n return {};\n }\n },\n\n // ==================== OpenAI-Compatible Methods ====================\n\n callTool: function(name, params) {\n if (isOpenAI && window.openai && window.openai.callTool) {\n return window.openai.callTool(name, params);\n }\n if (isClaude) {\n return Promise.reject(new Error(\n 'Tool calls are not supported in Claude widgets (network-blocked sandbox)'\n ));\n }\n if (isGemini) {\n return Promise.reject(new Error(\n 'Tool calls are not supported in Gemini widgets'\n ));\n }\n if (isExtApps) {\n return this._sendRequest('tools/call', { name: name, arguments: params });\n }\n return Promise.reject(new Error('Tool calls not supported in this environment'));\n },\n\n requestDisplayMode: function(options) {\n if (isOpenAI && window.openai && window.openai.requestDisplayMode) {\n return window.openai.requestDisplayMode(options);\n }\n if (isExtApps) {\n return this._sendRequest('ui/request-display-mode', options);\n }\n // Polyfill: just update local state\n if (options && options.mode) {\n hostContext.displayMode = options.mode;\n contextChangeListeners.forEach(function(cb) {\n try { cb({ displayMode: options.mode }); } catch (e) {}\n });\n }\n return Promise.resolve();\n },\n\n requestClose: function() {\n if (isOpenAI && window.openai && window.openai.requestClose) {\n return window.openai.requestClose();\n }\n if (isExtApps) {\n return this._sendRequest('ui/request-close', {});\n }\n // Polyfill: dispatch event for parent to handle\n window.dispatchEvent(new CustomEvent('mcp:request-close'));\n return Promise.resolve();\n },\n\n openExternal: function(options) {\n var href = typeof options === 'string' ? options : (options && options.href);\n if (!href) {\n return Promise.reject(new Error('URL required'));\n }\n if (isOpenAI && window.openai && window.openai.openExternal) {\n return window.openai.openExternal({ href: href });\n }\n if (isExtApps) {\n return this._sendRequest('ui/open-link', { url: href });\n }\n // Fallback: open in new window\n window.open(href, '_blank', 'noopener,noreferrer');\n return Promise.resolve();\n },\n\n // Alias for openExternal (backwards compatibility)\n openLink: function(url) {\n return this.openExternal({ href: url });\n },\n\n sendFollowUpMessage: function(options) {\n var prompt = typeof options === 'string' ? options : (options && options.prompt);\n if (!prompt) {\n return Promise.reject(new Error('Prompt required'));\n }\n if (isOpenAI && window.openai && window.openai.sendFollowUpMessage) {\n return window.openai.sendFollowUpMessage({ prompt: prompt });\n }\n if (isClaude) {\n return Promise.reject(new Error(\n 'Follow-up messages are not supported in Claude widgets (network-blocked sandbox)'\n ));\n }\n if (isGemini) {\n return Promise.reject(new Error(\n 'Follow-up messages are not supported in Gemini widgets'\n ));\n }\n if (isExtApps) {\n return this._sendRequest('ui/message', {\n role: 'user',\n content: { type: 'text', text: prompt }\n });\n }\n return Promise.reject(new Error('Messages not supported in this environment'));\n },\n\n // Alias for sendFollowUpMessage (backwards compatibility)\n sendMessage: function(content) {\n return this.sendFollowUpMessage({ prompt: content });\n },\n\n setWidgetState: function(state) {\n if (isOpenAI && window.openai && window.openai.setWidgetState) {\n window.openai.setWidgetState(state);\n return;\n }\n // Polyfill: persist to localStorage\n try {\n localStorage.setItem('__mcpWidgetState', JSON.stringify(state));\n } catch (e) {\n console.warn('Failed to persist widget state:', e);\n }\n },\n\n // ==================== Context API (MCP-specific) ====================\n\n get context() {\n return {\n theme: this.theme,\n displayMode: this.displayMode,\n viewport: this.maxHeight ? { maxHeight: this.maxHeight } : undefined,\n userAgent: this.userAgent,\n locale: this.locale,\n safeArea: this.safeArea\n };\n },\n\n onContextChange: function(callback) {\n contextChangeListeners.push(callback);\n return function() {\n var index = contextChangeListeners.indexOf(callback);\n if (index > -1) contextChangeListeners.splice(index, 1);\n };\n },\n\n onToolResult: function(callback) {\n toolResultListeners.push(callback);\n return function() {\n var index = toolResultListeners.indexOf(callback);\n if (index > -1) toolResultListeners.splice(index, 1);\n };\n },\n\n // ==================== Internal Methods ====================\n\n _sendRequest: function(method, params) {\n return new Promise(function(resolve, reject) {\n var id = ++messageId;\n pendingRequests.set(id, { resolve: resolve, reject: reject });\n\n window.parent.postMessage({\n jsonrpc: '2.0',\n id: id,\n method: method,\n params: params\n }, '*');\n\n // Timeout after 30s\n setTimeout(function() {\n if (pendingRequests.has(id)) {\n pendingRequests.delete(id);\n reject(new Error('Request timeout'));\n }\n }, 30000);\n });\n },\n\n _initExtApps: function() {\n var self = this;\n return this._sendRequest('ui/initialize', {}).then(function(result) {\n if (result && result.hostContext) {\n hostContext = Object.assign(hostContext, result.hostContext);\n }\n // Note: trustedOrigin is now set from first message event origin (trust-on-first-use)\n // Send initialized notification\n window.parent.postMessage({\n jsonrpc: '2.0',\n method: 'ui/notifications/initialized',\n params: {}\n }, '*');\n return result;\n });\n }\n };\n\n // ==================== Event Handling ====================\n\n window.addEventListener('message', function(event) {\n var data = event.data;\n if (!data || data.jsonrpc !== '2.0') return;\n\n // Trust-on-first-use: Establish trusted origin from the first valid message\n if (isExtApps && !trustedOrigin && event.origin) {\n trustedOrigin = event.origin;\n }\n\n // Validate origin for ext-apps environment to prevent spoofed messages\n if (isExtApps && trustedOrigin && event.origin !== trustedOrigin) {\n console.warn('MCP Bridge: Ignoring message from untrusted origin:', event.origin);\n return;\n }\n\n // Handle responses\n if (data.id && pendingRequests.has(data.id)) {\n var pending = pendingRequests.get(data.id);\n pendingRequests.delete(data.id);\n\n if (data.error) {\n var err = new Error(data.error.message || 'Unknown error');\n err.code = data.error.code;\n err.data = data.error.data;\n pending.reject(err);\n } else {\n pending.resolve(data.result);\n }\n return;\n }\n\n // Handle notifications\n switch (data.method) {\n case 'ui/notifications/tool-input':\n window.__mcpToolInput = data.params && data.params.arguments;\n window.dispatchEvent(new CustomEvent('mcp:tool-input', { detail: data.params }));\n break;\n\n case 'ui/notifications/tool-input-partial':\n if (data.params && data.params.arguments) {\n window.__mcpToolInput = Object.assign(window.__mcpToolInput || {}, data.params.arguments);\n }\n break;\n\n case 'ui/notifications/tool-result':\n window.__mcpToolOutput = data.params && data.params.content;\n window.__mcpStructuredContent = data.params && data.params.structuredContent;\n toolResultListeners.forEach(function(cb) {\n try { cb(data.params); } catch (e) { console.error('Tool result listener error:', e); }\n });\n window.dispatchEvent(new CustomEvent('mcp:tool-result', { detail: data.params }));\n break;\n\n case 'ui/notifications/tool-cancelled':\n window.dispatchEvent(new CustomEvent('mcp:tool-cancelled', { detail: data.params }));\n break;\n\n case 'ui/host-context-change':\n hostContext = Object.assign(hostContext, data.params);\n contextChangeListeners.forEach(function(cb) {\n try { cb(data.params); } catch (e) { console.error('Context change listener error:', e); }\n });\n window.dispatchEvent(new CustomEvent('mcp:context-change', { detail: data.params }));\n break;\n\n case 'ui/size-change':\n if (hostContext.viewport) {\n hostContext.viewport = Object.assign(hostContext.viewport, data.params);\n } else {\n hostContext.viewport = data.params;\n }\n break;\n }\n });\n\n // ==================== Initialize ====================\n\n // Export bridge\n window.mcpBridge = bridge;\n\n // Also create window.openai polyfill for non-OpenAI platforms\n // This allows code written for OpenAI to work on other platforms\n if (!isOpenAI) {\n window.openai = {\n get theme() { return bridge.theme; },\n get userAgent() { return bridge.userAgent; },\n get locale() { return bridge.locale; },\n get maxHeight() { return bridge.maxHeight; },\n get displayMode() { return bridge.displayMode; },\n get safeArea() { return bridge.safeArea; },\n get toolInput() { return bridge.toolInput; },\n get toolOutput() { return bridge.toolOutput; },\n get toolResponseMetadata() { return bridge.toolResponseMetadata; },\n get widgetState() { return bridge.widgetState; },\n callTool: function(n, a) { return bridge.callTool(n, a); },\n requestDisplayMode: function(o) { return bridge.requestDisplayMode(o); },\n requestClose: function() { return bridge.requestClose(); },\n openExternal: function(o) { return bridge.openExternal(o); },\n sendFollowUpMessage: function(o) { return bridge.sendFollowUpMessage(o); },\n setWidgetState: function(s) { return bridge.setWidgetState(s); }\n };\n }\n\n // Auto-initialize for ext-apps\n if (isExtApps) {\n bridge._initExtApps().catch(function(err) {\n console.warn('Failed to initialize MCP bridge:', err);\n });\n }\n\n // Dispatch ready event\n window.dispatchEvent(new CustomEvent('mcp:bridge-ready'));\n})();\n</script>\n`;\n\n/**\n * Get the MCP Bridge runtime script as a string (without script tags)\n * Useful for inline embedding in specific scenarios.\n */\nexport function getMCPBridgeScript(): string {\n // Extract the script content without the <script> tags\n const match = MCP_BRIDGE_RUNTIME.match(/<script>([\\s\\S]*?)<\\/script>/);\n return match ? match[1].trim() : '';\n}\n\n/**\n * Check if the current environment supports the MCP bridge\n */\nexport function isMCPBridgeSupported(): boolean {\n if (typeof window === 'undefined') return false;\n const w = window as unknown as { openai?: unknown; claude?: unknown; __mcpPlatform?: string };\n return (\n typeof w.openai !== 'undefined' ||\n typeof w.claude !== 'undefined' ||\n w.__mcpPlatform === 'claude' ||\n w.__mcpPlatform === 'gemini' ||\n w.__mcpPlatform === 'ext-apps' ||\n window.parent !== window\n );\n}\n\n// ============================================\n// New FrontMcpBridge System Exports\n// ============================================\n\n/**\n * The new FrontMcpBridge runtime script (universal - includes all adapters).\n * This is the recommended bridge for new integrations.\n *\n * @example\n * ```typescript\n * import { FRONTMCP_BRIDGE_RUNTIME } from '@frontmcp/ui/runtime';\n * const html = `<!DOCTYPE html><html><head>${FRONTMCP_BRIDGE_RUNTIME}</head>...</html>`;\n * ```\n */\nexport const FRONTMCP_BRIDGE_RUNTIME = BRIDGE_SCRIPT_TAGS.universal;\n\n/**\n * Platform-specific bridge scripts.\n *\n * Use these for smaller bundle sizes when targeting a specific platform.\n *\n * @example\n * ```typescript\n * import { PLATFORM_BRIDGE_SCRIPTS } from '@frontmcp/ui/runtime';\n *\n * // For ChatGPT only\n * const chatgptHtml = `<html><head>${PLATFORM_BRIDGE_SCRIPTS.chatgpt}</head>...</html>`;\n *\n * // For Claude only\n * const claudeHtml = `<html><head>${PLATFORM_BRIDGE_SCRIPTS.claude}</head>...</html>`;\n * ```\n */\nexport const PLATFORM_BRIDGE_SCRIPTS = BRIDGE_SCRIPT_TAGS;\n\n/**\n * Generate a custom bridge script with specific options.\n *\n * @example\n * ```typescript\n * import { generateCustomBridge } from '@frontmcp/ui/runtime';\n *\n * const script = generateCustomBridge({\n * adapters: ['openai', 'ext-apps'],\n * debug: true,\n * trustedOrigins: ['https://my-host.com']\n * });\n * ```\n */\nexport { generateBridgeIIFE as generateCustomBridge } from '../bridge/runtime/iife-generator';\n\n// Re-export IIFE generator options type\nexport type { IIFEGeneratorOptions } from '../bridge/runtime/iife-generator';\n"]}
|