@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,452 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/**
|
|
3
|
-
* Platform Bridge - Reactive Data Store for Tool UI
|
|
4
|
-
*
|
|
5
|
-
* Provides a reactive interface for tool output data that works across:
|
|
6
|
-
* - React (via useSyncExternalStore)
|
|
7
|
-
* - HTMX (via custom events)
|
|
8
|
-
* - Vanilla JS (via subscribe callbacks)
|
|
9
|
-
*
|
|
10
|
-
* Uses Object.defineProperty to intercept when platforms inject data,
|
|
11
|
-
* automatically detecting and notifying subscribers when data changes.
|
|
12
|
-
*
|
|
13
|
-
* @example React integration
|
|
14
|
-
* ```tsx
|
|
15
|
-
* import { useSyncExternalStore } from 'react';
|
|
16
|
-
*
|
|
17
|
-
* function useToolOutput() {
|
|
18
|
-
* return useSyncExternalStore(
|
|
19
|
-
* window.__frontmcp.bridge.subscribe,
|
|
20
|
-
* window.__frontmcp.bridge.getSnapshot,
|
|
21
|
-
* window.__frontmcp.bridge.getServerSnapshot
|
|
22
|
-
* );
|
|
23
|
-
* }
|
|
24
|
-
* ```
|
|
25
|
-
*
|
|
26
|
-
* @example Vanilla JS
|
|
27
|
-
* ```javascript
|
|
28
|
-
* const unsubscribe = window.__frontmcp.bridge.subscribe(() => {
|
|
29
|
-
* const state = window.__frontmcp.bridge.getState();
|
|
30
|
-
* if (!state.loading) {
|
|
31
|
-
* renderWidget(state.data);
|
|
32
|
-
* }
|
|
33
|
-
* });
|
|
34
|
-
* ```
|
|
35
|
-
*
|
|
36
|
-
* @example HTMX
|
|
37
|
-
* ```html
|
|
38
|
-
* <div hx-trigger="frontmcp:change from:document" hx-get="/render">
|
|
39
|
-
* Loading...
|
|
40
|
-
* </div>
|
|
41
|
-
* ```
|
|
42
|
-
*/
|
|
43
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
44
|
-
exports.BRIDGE_TYPES = void 0;
|
|
45
|
-
exports.renderBridgeScript = renderBridgeScript;
|
|
46
|
-
/**
|
|
47
|
-
* Render the Platform Bridge inline script.
|
|
48
|
-
*
|
|
49
|
-
* This script creates a reactive data store that:
|
|
50
|
-
* 1. Installs interceptors on window.openai to detect data injection
|
|
51
|
-
* 2. Provides subscribe/getState API for React/HTMX/vanilla integration
|
|
52
|
-
* 3. Dispatches custom events for HTMX compatibility
|
|
53
|
-
* 4. Handles the race condition between iframe load and data injection
|
|
54
|
-
*
|
|
55
|
-
* @returns Script tag with bridge implementation
|
|
56
|
-
*/
|
|
57
|
-
function renderBridgeScript() {
|
|
58
|
-
return `<script>
|
|
59
|
-
(function() {
|
|
60
|
-
'use strict';
|
|
61
|
-
|
|
62
|
-
// ============================================
|
|
63
|
-
// Debug Mode
|
|
64
|
-
// ============================================
|
|
65
|
-
|
|
66
|
-
var DEBUG = window.location.search.indexOf('frontmcp_debug=1') > -1 ||
|
|
67
|
-
window.localStorage.getItem('frontmcp_debug') === '1';
|
|
68
|
-
var debugLog = [];
|
|
69
|
-
|
|
70
|
-
function log(level, message, data) {
|
|
71
|
-
var entry = {
|
|
72
|
-
ts: new Date().toISOString(),
|
|
73
|
-
level: level,
|
|
74
|
-
message: message,
|
|
75
|
-
data: data
|
|
76
|
-
};
|
|
77
|
-
debugLog.push(entry);
|
|
78
|
-
if (DEBUG) {
|
|
79
|
-
console[level === 'error' ? 'error' : level === 'warn' ? 'warn' : 'log'](
|
|
80
|
-
'[frontmcp] ' + message,
|
|
81
|
-
data || ''
|
|
82
|
-
);
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// ============================================
|
|
87
|
-
// Bridge State Management
|
|
88
|
-
// ============================================
|
|
89
|
-
|
|
90
|
-
var state = { data: null, loading: true, error: null };
|
|
91
|
-
var subscribers = [];
|
|
92
|
-
var stateVersion = 0; // For React useSyncExternalStore stability
|
|
93
|
-
|
|
94
|
-
function notify() {
|
|
95
|
-
stateVersion++;
|
|
96
|
-
for (var i = 0; i < subscribers.length; i++) {
|
|
97
|
-
try { subscribers[i](); } catch(e) {
|
|
98
|
-
log('error', 'Subscriber error:', { error: e.message, stack: e.stack });
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
// Dispatch custom event for HTMX
|
|
102
|
-
if (typeof CustomEvent !== 'undefined') {
|
|
103
|
-
document.dispatchEvent(new CustomEvent('frontmcp:change', { detail: state }));
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
function setData(data) {
|
|
108
|
-
// Skip if data hasn't actually changed (prevents unnecessary re-renders)
|
|
109
|
-
if (!state.loading && state.data === data) return;
|
|
110
|
-
log('info', 'setData called', {
|
|
111
|
-
dataType: typeof data,
|
|
112
|
-
dataLength: typeof data === 'string' ? data.length : 'N/A',
|
|
113
|
-
isNull: data === null,
|
|
114
|
-
isUndefined: data === undefined
|
|
115
|
-
});
|
|
116
|
-
state = { data: data, loading: false, error: null };
|
|
117
|
-
notify();
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
function setError(error) {
|
|
121
|
-
log('error', 'setError called', { error: error });
|
|
122
|
-
state = { data: null, loading: false, error: error };
|
|
123
|
-
notify();
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
function reset() {
|
|
127
|
-
log('info', 'reset called');
|
|
128
|
-
state = { data: null, loading: true, error: null };
|
|
129
|
-
notify();
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
// ============================================
|
|
133
|
-
// Data Validation
|
|
134
|
-
// ============================================
|
|
135
|
-
|
|
136
|
-
function validateToolOutput(data, source) {
|
|
137
|
-
var errors = [];
|
|
138
|
-
|
|
139
|
-
if (data === undefined) {
|
|
140
|
-
errors.push('toolOutput is undefined');
|
|
141
|
-
} else if (data === null) {
|
|
142
|
-
// null is valid initial state from OpenAI
|
|
143
|
-
log('info', 'toolOutput is null (OpenAI initial state)', { source: source });
|
|
144
|
-
return { valid: false, errors: ['initial_state'], isInitial: true };
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
if (typeof data === 'object' && data !== null) {
|
|
148
|
-
if (data.isError === true) {
|
|
149
|
-
errors.push('Tool returned error: ' + JSON.stringify(data));
|
|
150
|
-
}
|
|
151
|
-
// Check for MCP error structure
|
|
152
|
-
if (data.error && data.error.code) {
|
|
153
|
-
errors.push('MCP error: code=' + data.error.code + ', message=' + (data.error.message || 'unknown'));
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
if (errors.length > 0) {
|
|
158
|
-
log('warn', 'Validation issues', { source: source, errors: errors });
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
return { valid: errors.length === 0, errors: errors, isInitial: false };
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
function validateMetadata(meta, source) {
|
|
165
|
-
var errors = [];
|
|
166
|
-
|
|
167
|
-
if (!meta) {
|
|
168
|
-
errors.push('toolResponseMetadata is null/undefined');
|
|
169
|
-
return { valid: false, errors: errors };
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
if (typeof meta !== 'object') {
|
|
173
|
-
errors.push('toolResponseMetadata is not an object: ' + typeof meta);
|
|
174
|
-
return { valid: false, errors: errors };
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
var html = meta['ui/html'];
|
|
178
|
-
if (html !== undefined) {
|
|
179
|
-
if (typeof html !== 'string') {
|
|
180
|
-
errors.push('ui/html is not a string: ' + typeof html);
|
|
181
|
-
} else if (html.length === 0) {
|
|
182
|
-
errors.push('ui/html is empty string');
|
|
183
|
-
} else if (html.indexOf('validation-error') > -1) {
|
|
184
|
-
errors.push('ui/html contains validation error');
|
|
185
|
-
log('warn', 'HTML contains validation error', { htmlPreview: html.substring(0, 500) });
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
if (errors.length > 0) {
|
|
190
|
-
log('warn', 'Metadata validation issues', { source: source, errors: errors, keys: Object.keys(meta) });
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
return { valid: errors.length === 0, errors: errors };
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// ============================================
|
|
197
|
-
// OpenAI Platform Interceptors
|
|
198
|
-
// ============================================
|
|
199
|
-
|
|
200
|
-
var openaiIntercepted = false;
|
|
201
|
-
|
|
202
|
-
function checkOpenAIData(openai) {
|
|
203
|
-
if (!openai) {
|
|
204
|
-
log('warn', 'checkOpenAIData: openai object is null');
|
|
205
|
-
return false;
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
log('info', 'checkOpenAIData called', {
|
|
209
|
-
hasToolOutput: openai.toolOutput !== undefined,
|
|
210
|
-
hasToolResponseMetadata: openai.toolResponseMetadata !== undefined,
|
|
211
|
-
toolOutputType: typeof openai.toolOutput,
|
|
212
|
-
metadataKeys: openai.toolResponseMetadata ? Object.keys(openai.toolResponseMetadata) : []
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
// Priority 1: Pre-rendered HTML from toolResponseMetadata
|
|
216
|
-
if (openai.toolResponseMetadata) {
|
|
217
|
-
var metaValidation = validateMetadata(openai.toolResponseMetadata, 'openai.toolResponseMetadata');
|
|
218
|
-
var html = openai.toolResponseMetadata['ui/html'];
|
|
219
|
-
if (html && typeof html === 'string') {
|
|
220
|
-
log('info', 'Using ui/html from metadata', { htmlLength: html.length });
|
|
221
|
-
setData(html);
|
|
222
|
-
return true;
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
// Priority 2: Tool output (skip null - that's OpenAI's initial state)
|
|
227
|
-
if (openai.toolOutput !== undefined && openai.toolOutput !== null) {
|
|
228
|
-
var outputValidation = validateToolOutput(openai.toolOutput, 'openai.toolOutput');
|
|
229
|
-
if (!outputValidation.isInitial) {
|
|
230
|
-
log('info', 'Using toolOutput', {
|
|
231
|
-
valid: outputValidation.valid,
|
|
232
|
-
errors: outputValidation.errors
|
|
233
|
-
});
|
|
234
|
-
setData(openai.toolOutput);
|
|
235
|
-
return true;
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
log('info', 'checkOpenAIData: no data found yet');
|
|
240
|
-
return false;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
function installPropertyInterceptor(obj, prop, onSet) {
|
|
244
|
-
var current = obj[prop];
|
|
245
|
-
var descriptor = Object.getOwnPropertyDescriptor(obj, prop);
|
|
246
|
-
|
|
247
|
-
// Don't re-intercept
|
|
248
|
-
if (descriptor && descriptor.get && descriptor.set) return;
|
|
249
|
-
|
|
250
|
-
Object.defineProperty(obj, prop, {
|
|
251
|
-
get: function() { return current; },
|
|
252
|
-
set: function(val) {
|
|
253
|
-
current = val;
|
|
254
|
-
onSet(val);
|
|
255
|
-
},
|
|
256
|
-
enumerable: true,
|
|
257
|
-
configurable: true
|
|
258
|
-
});
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
function installOpenAIInterceptors(openai) {
|
|
262
|
-
if (!openai || openaiIntercepted) return;
|
|
263
|
-
openaiIntercepted = true;
|
|
264
|
-
|
|
265
|
-
// Check existing data first
|
|
266
|
-
if (checkOpenAIData(openai)) return;
|
|
267
|
-
|
|
268
|
-
// Intercept toolOutput
|
|
269
|
-
installPropertyInterceptor(openai, 'toolOutput', function(val) {
|
|
270
|
-
checkOpenAIData(openai);
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
// Intercept toolResponseMetadata
|
|
274
|
-
installPropertyInterceptor(openai, 'toolResponseMetadata', function(val) {
|
|
275
|
-
checkOpenAIData(openai);
|
|
276
|
-
});
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
// Install interceptor on window.openai
|
|
280
|
-
if (typeof window.openai !== 'undefined') {
|
|
281
|
-
installOpenAIInterceptors(window.openai);
|
|
282
|
-
} else {
|
|
283
|
-
// OpenAI object doesn't exist yet - wait for it
|
|
284
|
-
var pendingOpenai = undefined;
|
|
285
|
-
Object.defineProperty(window, 'openai', {
|
|
286
|
-
get: function() { return pendingOpenai; },
|
|
287
|
-
set: function(val) {
|
|
288
|
-
pendingOpenai = val;
|
|
289
|
-
if (val) installOpenAIInterceptors(val);
|
|
290
|
-
},
|
|
291
|
-
enumerable: true,
|
|
292
|
-
configurable: true
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// ============================================
|
|
297
|
-
// MCP/Generic Platform Support
|
|
298
|
-
// ============================================
|
|
299
|
-
|
|
300
|
-
// Check for existing __frontmcp.toolOutput
|
|
301
|
-
if (window.__frontmcp && window.__frontmcp.toolOutput !== undefined) {
|
|
302
|
-
setData(window.__frontmcp.toolOutput);
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// Check for __mcpToolOutput
|
|
306
|
-
if (window.__mcpToolOutput !== undefined && window.__mcpToolOutput !== null) {
|
|
307
|
-
setData(window.__mcpToolOutput);
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
// Check for __mcpResponseMeta
|
|
311
|
-
if (window.__mcpResponseMeta && window.__mcpResponseMeta['ui/html']) {
|
|
312
|
-
setData(window.__mcpResponseMeta['ui/html']);
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// ============================================
|
|
316
|
-
// Bridge API
|
|
317
|
-
// ============================================
|
|
318
|
-
|
|
319
|
-
window.__frontmcp = window.__frontmcp || {};
|
|
320
|
-
|
|
321
|
-
window.__frontmcp.bridge = {
|
|
322
|
-
getState: function() { return state; },
|
|
323
|
-
|
|
324
|
-
// React useSyncExternalStore compatible
|
|
325
|
-
getSnapshot: function() { return state; },
|
|
326
|
-
getServerSnapshot: function() { return { data: null, loading: true, error: null }; },
|
|
327
|
-
|
|
328
|
-
subscribe: function(callback) {
|
|
329
|
-
subscribers.push(callback);
|
|
330
|
-
return function() {
|
|
331
|
-
var idx = subscribers.indexOf(callback);
|
|
332
|
-
if (idx > -1) subscribers.splice(idx, 1);
|
|
333
|
-
};
|
|
334
|
-
},
|
|
335
|
-
|
|
336
|
-
hasData: function() { return !state.loading && state.data !== null; },
|
|
337
|
-
|
|
338
|
-
// Manual control (for testing/custom injection)
|
|
339
|
-
setData: setData,
|
|
340
|
-
setError: setError,
|
|
341
|
-
reset: reset,
|
|
342
|
-
|
|
343
|
-
// Debug API
|
|
344
|
-
debug: {
|
|
345
|
-
getLogs: function() { return debugLog.slice(); },
|
|
346
|
-
getLastErrors: function() {
|
|
347
|
-
return debugLog.filter(function(e) { return e.level === 'error' || e.level === 'warn'; });
|
|
348
|
-
},
|
|
349
|
-
enableDebug: function() {
|
|
350
|
-
DEBUG = true;
|
|
351
|
-
window.localStorage.setItem('frontmcp_debug', '1');
|
|
352
|
-
console.log('[frontmcp] Debug mode enabled. Reload page to see all logs.');
|
|
353
|
-
},
|
|
354
|
-
disableDebug: function() {
|
|
355
|
-
DEBUG = false;
|
|
356
|
-
window.localStorage.removeItem('frontmcp_debug');
|
|
357
|
-
},
|
|
358
|
-
isDebugEnabled: function() { return DEBUG; },
|
|
359
|
-
getStateHistory: function() {
|
|
360
|
-
return {
|
|
361
|
-
current: state,
|
|
362
|
-
version: stateVersion,
|
|
363
|
-
subscriberCount: subscribers.length,
|
|
364
|
-
openaiIntercepted: openaiIntercepted,
|
|
365
|
-
pollCount: pollCount
|
|
366
|
-
};
|
|
367
|
-
},
|
|
368
|
-
dumpAll: function() {
|
|
369
|
-
console.group('[frontmcp] Debug Dump');
|
|
370
|
-
console.log('State:', state);
|
|
371
|
-
console.log('Version:', stateVersion);
|
|
372
|
-
console.log('Subscribers:', subscribers.length);
|
|
373
|
-
console.log('OpenAI Intercepted:', openaiIntercepted);
|
|
374
|
-
console.log('Poll Count:', pollCount);
|
|
375
|
-
console.log('Debug Logs:', debugLog);
|
|
376
|
-
console.groupEnd();
|
|
377
|
-
return {
|
|
378
|
-
state: state,
|
|
379
|
-
logs: debugLog,
|
|
380
|
-
version: stateVersion,
|
|
381
|
-
openaiIntercepted: openaiIntercepted
|
|
382
|
-
};
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
};
|
|
386
|
-
|
|
387
|
-
// ============================================
|
|
388
|
-
// Fallback Polling (for platforms that don't trigger setters)
|
|
389
|
-
// ============================================
|
|
390
|
-
|
|
391
|
-
var pollCount = 0;
|
|
392
|
-
var maxPolls = 30; // ~3 seconds with exponential backoff
|
|
393
|
-
|
|
394
|
-
function pollForData() {
|
|
395
|
-
if (state.data !== null || pollCount >= maxPolls) return;
|
|
396
|
-
pollCount++;
|
|
397
|
-
|
|
398
|
-
// Check all sources
|
|
399
|
-
if (window.openai) {
|
|
400
|
-
if (checkOpenAIData(window.openai)) return;
|
|
401
|
-
}
|
|
402
|
-
|
|
403
|
-
// Use getToolOutput if available
|
|
404
|
-
if (window.__frontmcp.getToolOutput) {
|
|
405
|
-
var data = window.__frontmcp.getToolOutput();
|
|
406
|
-
if (data !== undefined && data !== null) {
|
|
407
|
-
setData(data);
|
|
408
|
-
return;
|
|
409
|
-
}
|
|
410
|
-
}
|
|
411
|
-
|
|
412
|
-
// Exponential backoff: 50ms, 75ms, 112ms, ...
|
|
413
|
-
var delay = Math.min(50 * Math.pow(1.5, Math.min(pollCount, 10)), 500);
|
|
414
|
-
setTimeout(pollForData, delay);
|
|
415
|
-
}
|
|
416
|
-
|
|
417
|
-
// Start polling after a brief delay (give interceptors time to fire)
|
|
418
|
-
setTimeout(pollForData, 50);
|
|
419
|
-
})();
|
|
420
|
-
</script>`;
|
|
421
|
-
}
|
|
422
|
-
/**
|
|
423
|
-
* Generate TypeScript types for the bridge (for documentation/IDE support).
|
|
424
|
-
*/
|
|
425
|
-
exports.BRIDGE_TYPES = `
|
|
426
|
-
interface BridgeState<T = unknown> {
|
|
427
|
-
data: T | null;
|
|
428
|
-
loading: boolean;
|
|
429
|
-
error: string | null;
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
interface PlatformBridge<T = unknown> {
|
|
433
|
-
getState(): BridgeState<T>;
|
|
434
|
-
subscribe(callback: () => void): () => void;
|
|
435
|
-
getSnapshot(): BridgeState<T>;
|
|
436
|
-
getServerSnapshot(): BridgeState<T>;
|
|
437
|
-
hasData(): boolean;
|
|
438
|
-
setData(data: T): void;
|
|
439
|
-
setError(error: string): void;
|
|
440
|
-
reset(): void;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
declare global {
|
|
444
|
-
interface Window {
|
|
445
|
-
__frontmcp: {
|
|
446
|
-
bridge: PlatformBridge;
|
|
447
|
-
// ... other __frontmcp methods
|
|
448
|
-
};
|
|
449
|
-
}
|
|
450
|
-
}
|
|
451
|
-
`;
|
|
452
|
-
//# sourceMappingURL=bridge.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bridge.js","sourceRoot":"","sources":["../../../src/base-template/bridge.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;;;AA+CH,gDA4WC;AAvXD;;;;;;;;;;GAUG;AACH,SAAgB,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UA0WC,CAAC;AACX,CAAC;AAED;;GAEG;AACU,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;CA0B3B,CAAC","sourcesContent":["/**\n * Platform Bridge - Reactive Data Store for Tool UI\n *\n * Provides a reactive interface for tool output data that works across:\n * - React (via useSyncExternalStore)\n * - HTMX (via custom events)\n * - Vanilla JS (via subscribe callbacks)\n *\n * Uses Object.defineProperty to intercept when platforms inject data,\n * automatically detecting and notifying subscribers when data changes.\n *\n * @example React integration\n * ```tsx\n * import { useSyncExternalStore } from 'react';\n *\n * function useToolOutput() {\n * return useSyncExternalStore(\n * window.__frontmcp.bridge.subscribe,\n * window.__frontmcp.bridge.getSnapshot,\n * window.__frontmcp.bridge.getServerSnapshot\n * );\n * }\n * ```\n *\n * @example Vanilla JS\n * ```javascript\n * const unsubscribe = window.__frontmcp.bridge.subscribe(() => {\n * const state = window.__frontmcp.bridge.getState();\n * if (!state.loading) {\n * renderWidget(state.data);\n * }\n * });\n * ```\n *\n * @example HTMX\n * ```html\n * <div hx-trigger=\"frontmcp:change from:document\" hx-get=\"/render\">\n * Loading...\n * </div>\n * ```\n */\n\n/**\n * Bridge state containing data, loading status, and error information.\n */\nexport interface BridgeState<T = unknown> {\n /** Current data (null when loading or no data) */\n data: T | null;\n /** Whether the bridge is waiting for data */\n loading: boolean;\n /** Error message if data loading failed */\n error: string | null;\n}\n\n/**\n * Platform Bridge interface for reactive data access.\n */\nexport interface PlatformBridge<T = unknown> {\n /** Get current state snapshot */\n getState(): BridgeState<T>;\n /** Subscribe to state changes */\n subscribe(callback: () => void): () => void;\n /** React useSyncExternalStore compatible getSnapshot */\n getSnapshot(): BridgeState<T>;\n /** React SSR compatible getServerSnapshot */\n getServerSnapshot(): BridgeState<T>;\n /** Check if bridge has received data */\n hasData(): boolean;\n /** Manually set data (for testing or custom injection) */\n setData(data: T): void;\n /** Manually set error */\n setError(error: string): void;\n /** Reset to loading state */\n reset(): void;\n}\n\n/**\n * Render the Platform Bridge inline script.\n *\n * This script creates a reactive data store that:\n * 1. Installs interceptors on window.openai to detect data injection\n * 2. Provides subscribe/getState API for React/HTMX/vanilla integration\n * 3. Dispatches custom events for HTMX compatibility\n * 4. Handles the race condition between iframe load and data injection\n *\n * @returns Script tag with bridge implementation\n */\nexport function renderBridgeScript(): string {\n return `<script>\n(function() {\n 'use strict';\n\n // ============================================\n // Debug Mode\n // ============================================\n\n var DEBUG = window.location.search.indexOf('frontmcp_debug=1') > -1 ||\n window.localStorage.getItem('frontmcp_debug') === '1';\n var debugLog = [];\n\n function log(level, message, data) {\n var entry = {\n ts: new Date().toISOString(),\n level: level,\n message: message,\n data: data\n };\n debugLog.push(entry);\n if (DEBUG) {\n console[level === 'error' ? 'error' : level === 'warn' ? 'warn' : 'log'](\n '[frontmcp] ' + message,\n data || ''\n );\n }\n }\n\n // ============================================\n // Bridge State Management\n // ============================================\n\n var state = { data: null, loading: true, error: null };\n var subscribers = [];\n var stateVersion = 0; // For React useSyncExternalStore stability\n\n function notify() {\n stateVersion++;\n for (var i = 0; i < subscribers.length; i++) {\n try { subscribers[i](); } catch(e) {\n log('error', 'Subscriber error:', { error: e.message, stack: e.stack });\n }\n }\n // Dispatch custom event for HTMX\n if (typeof CustomEvent !== 'undefined') {\n document.dispatchEvent(new CustomEvent('frontmcp:change', { detail: state }));\n }\n }\n\n function setData(data) {\n // Skip if data hasn't actually changed (prevents unnecessary re-renders)\n if (!state.loading && state.data === data) return;\n log('info', 'setData called', {\n dataType: typeof data,\n dataLength: typeof data === 'string' ? data.length : 'N/A',\n isNull: data === null,\n isUndefined: data === undefined\n });\n state = { data: data, loading: false, error: null };\n notify();\n }\n\n function setError(error) {\n log('error', 'setError called', { error: error });\n state = { data: null, loading: false, error: error };\n notify();\n }\n\n function reset() {\n log('info', 'reset called');\n state = { data: null, loading: true, error: null };\n notify();\n }\n\n // ============================================\n // Data Validation\n // ============================================\n\n function validateToolOutput(data, source) {\n var errors = [];\n\n if (data === undefined) {\n errors.push('toolOutput is undefined');\n } else if (data === null) {\n // null is valid initial state from OpenAI\n log('info', 'toolOutput is null (OpenAI initial state)', { source: source });\n return { valid: false, errors: ['initial_state'], isInitial: true };\n }\n\n if (typeof data === 'object' && data !== null) {\n if (data.isError === true) {\n errors.push('Tool returned error: ' + JSON.stringify(data));\n }\n // Check for MCP error structure\n if (data.error && data.error.code) {\n errors.push('MCP error: code=' + data.error.code + ', message=' + (data.error.message || 'unknown'));\n }\n }\n\n if (errors.length > 0) {\n log('warn', 'Validation issues', { source: source, errors: errors });\n }\n\n return { valid: errors.length === 0, errors: errors, isInitial: false };\n }\n\n function validateMetadata(meta, source) {\n var errors = [];\n\n if (!meta) {\n errors.push('toolResponseMetadata is null/undefined');\n return { valid: false, errors: errors };\n }\n\n if (typeof meta !== 'object') {\n errors.push('toolResponseMetadata is not an object: ' + typeof meta);\n return { valid: false, errors: errors };\n }\n\n var html = meta['ui/html'];\n if (html !== undefined) {\n if (typeof html !== 'string') {\n errors.push('ui/html is not a string: ' + typeof html);\n } else if (html.length === 0) {\n errors.push('ui/html is empty string');\n } else if (html.indexOf('validation-error') > -1) {\n errors.push('ui/html contains validation error');\n log('warn', 'HTML contains validation error', { htmlPreview: html.substring(0, 500) });\n }\n }\n\n if (errors.length > 0) {\n log('warn', 'Metadata validation issues', { source: source, errors: errors, keys: Object.keys(meta) });\n }\n\n return { valid: errors.length === 0, errors: errors };\n }\n\n // ============================================\n // OpenAI Platform Interceptors\n // ============================================\n\n var openaiIntercepted = false;\n\n function checkOpenAIData(openai) {\n if (!openai) {\n log('warn', 'checkOpenAIData: openai object is null');\n return false;\n }\n\n log('info', 'checkOpenAIData called', {\n hasToolOutput: openai.toolOutput !== undefined,\n hasToolResponseMetadata: openai.toolResponseMetadata !== undefined,\n toolOutputType: typeof openai.toolOutput,\n metadataKeys: openai.toolResponseMetadata ? Object.keys(openai.toolResponseMetadata) : []\n });\n\n // Priority 1: Pre-rendered HTML from toolResponseMetadata\n if (openai.toolResponseMetadata) {\n var metaValidation = validateMetadata(openai.toolResponseMetadata, 'openai.toolResponseMetadata');\n var html = openai.toolResponseMetadata['ui/html'];\n if (html && typeof html === 'string') {\n log('info', 'Using ui/html from metadata', { htmlLength: html.length });\n setData(html);\n return true;\n }\n }\n\n // Priority 2: Tool output (skip null - that's OpenAI's initial state)\n if (openai.toolOutput !== undefined && openai.toolOutput !== null) {\n var outputValidation = validateToolOutput(openai.toolOutput, 'openai.toolOutput');\n if (!outputValidation.isInitial) {\n log('info', 'Using toolOutput', {\n valid: outputValidation.valid,\n errors: outputValidation.errors\n });\n setData(openai.toolOutput);\n return true;\n }\n }\n\n log('info', 'checkOpenAIData: no data found yet');\n return false;\n }\n\n function installPropertyInterceptor(obj, prop, onSet) {\n var current = obj[prop];\n var descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n\n // Don't re-intercept\n if (descriptor && descriptor.get && descriptor.set) return;\n\n Object.defineProperty(obj, prop, {\n get: function() { return current; },\n set: function(val) {\n current = val;\n onSet(val);\n },\n enumerable: true,\n configurable: true\n });\n }\n\n function installOpenAIInterceptors(openai) {\n if (!openai || openaiIntercepted) return;\n openaiIntercepted = true;\n\n // Check existing data first\n if (checkOpenAIData(openai)) return;\n\n // Intercept toolOutput\n installPropertyInterceptor(openai, 'toolOutput', function(val) {\n checkOpenAIData(openai);\n });\n\n // Intercept toolResponseMetadata\n installPropertyInterceptor(openai, 'toolResponseMetadata', function(val) {\n checkOpenAIData(openai);\n });\n }\n\n // Install interceptor on window.openai\n if (typeof window.openai !== 'undefined') {\n installOpenAIInterceptors(window.openai);\n } else {\n // OpenAI object doesn't exist yet - wait for it\n var pendingOpenai = undefined;\n Object.defineProperty(window, 'openai', {\n get: function() { return pendingOpenai; },\n set: function(val) {\n pendingOpenai = val;\n if (val) installOpenAIInterceptors(val);\n },\n enumerable: true,\n configurable: true\n });\n }\n\n // ============================================\n // MCP/Generic Platform Support\n // ============================================\n\n // Check for existing __frontmcp.toolOutput\n if (window.__frontmcp && window.__frontmcp.toolOutput !== undefined) {\n setData(window.__frontmcp.toolOutput);\n }\n\n // Check for __mcpToolOutput\n if (window.__mcpToolOutput !== undefined && window.__mcpToolOutput !== null) {\n setData(window.__mcpToolOutput);\n }\n\n // Check for __mcpResponseMeta\n if (window.__mcpResponseMeta && window.__mcpResponseMeta['ui/html']) {\n setData(window.__mcpResponseMeta['ui/html']);\n }\n\n // ============================================\n // Bridge API\n // ============================================\n\n window.__frontmcp = window.__frontmcp || {};\n\n window.__frontmcp.bridge = {\n getState: function() { return state; },\n\n // React useSyncExternalStore compatible\n getSnapshot: function() { return state; },\n getServerSnapshot: function() { return { data: null, loading: true, error: null }; },\n\n subscribe: function(callback) {\n subscribers.push(callback);\n return function() {\n var idx = subscribers.indexOf(callback);\n if (idx > -1) subscribers.splice(idx, 1);\n };\n },\n\n hasData: function() { return !state.loading && state.data !== null; },\n\n // Manual control (for testing/custom injection)\n setData: setData,\n setError: setError,\n reset: reset,\n\n // Debug API\n debug: {\n getLogs: function() { return debugLog.slice(); },\n getLastErrors: function() {\n return debugLog.filter(function(e) { return e.level === 'error' || e.level === 'warn'; });\n },\n enableDebug: function() {\n DEBUG = true;\n window.localStorage.setItem('frontmcp_debug', '1');\n console.log('[frontmcp] Debug mode enabled. Reload page to see all logs.');\n },\n disableDebug: function() {\n DEBUG = false;\n window.localStorage.removeItem('frontmcp_debug');\n },\n isDebugEnabled: function() { return DEBUG; },\n getStateHistory: function() {\n return {\n current: state,\n version: stateVersion,\n subscriberCount: subscribers.length,\n openaiIntercepted: openaiIntercepted,\n pollCount: pollCount\n };\n },\n dumpAll: function() {\n console.group('[frontmcp] Debug Dump');\n console.log('State:', state);\n console.log('Version:', stateVersion);\n console.log('Subscribers:', subscribers.length);\n console.log('OpenAI Intercepted:', openaiIntercepted);\n console.log('Poll Count:', pollCount);\n console.log('Debug Logs:', debugLog);\n console.groupEnd();\n return {\n state: state,\n logs: debugLog,\n version: stateVersion,\n openaiIntercepted: openaiIntercepted\n };\n }\n }\n };\n\n // ============================================\n // Fallback Polling (for platforms that don't trigger setters)\n // ============================================\n\n var pollCount = 0;\n var maxPolls = 30; // ~3 seconds with exponential backoff\n\n function pollForData() {\n if (state.data !== null || pollCount >= maxPolls) return;\n pollCount++;\n\n // Check all sources\n if (window.openai) {\n if (checkOpenAIData(window.openai)) return;\n }\n\n // Use getToolOutput if available\n if (window.__frontmcp.getToolOutput) {\n var data = window.__frontmcp.getToolOutput();\n if (data !== undefined && data !== null) {\n setData(data);\n return;\n }\n }\n\n // Exponential backoff: 50ms, 75ms, 112ms, ...\n var delay = Math.min(50 * Math.pow(1.5, Math.min(pollCount, 10)), 500);\n setTimeout(pollForData, delay);\n }\n\n // Start polling after a brief delay (give interceptors time to fire)\n setTimeout(pollForData, 50);\n})();\n</script>`;\n}\n\n/**\n * Generate TypeScript types for the bridge (for documentation/IDE support).\n */\nexport const BRIDGE_TYPES = `\ninterface BridgeState<T = unknown> {\n data: T | null;\n loading: boolean;\n error: string | null;\n}\n\ninterface PlatformBridge<T = unknown> {\n getState(): BridgeState<T>;\n subscribe(callback: () => void): () => void;\n getSnapshot(): BridgeState<T>;\n getServerSnapshot(): BridgeState<T>;\n hasData(): boolean;\n setData(data: T): void;\n setError(error: string): void;\n reset(): void;\n}\n\ndeclare global {\n interface Window {\n __frontmcp: {\n bridge: PlatformBridge;\n // ... other __frontmcp methods\n };\n }\n}\n`;\n"]}
|
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default Base Template for Tool UI
|
|
3
|
-
*
|
|
4
|
-
* Provides a generic HTML wrapper for tool output widgets that:
|
|
5
|
-
* 1. Includes theming (Tailwind CSS with @theme)
|
|
6
|
-
* 2. Includes platform polyfills (callTool, detectMcpSession)
|
|
7
|
-
* 3. Polls for toolOutput from window.openai or window.__frontmcp
|
|
8
|
-
* 4. Renders content via window.__frontmcp.renderContent or default JSON renderer
|
|
9
|
-
*
|
|
10
|
-
* This template is platform-agnostic and works with:
|
|
11
|
-
* - OpenAI Apps SDK (window.openai.toolOutput)
|
|
12
|
-
* - Claude Artifacts
|
|
13
|
-
* - Custom hosts using MCP protocol
|
|
14
|
-
* - ngrok/iframe scenarios
|
|
15
|
-
*/
|
|
16
|
-
import { type ThemeConfig } from '../theme';
|
|
17
|
-
import { type McpSession } from './polyfills';
|
|
18
|
-
/**
|
|
19
|
-
* Options for creating a default base template.
|
|
20
|
-
*/
|
|
21
|
-
export interface BaseTemplateOptions {
|
|
22
|
-
/** Tool name for identification */
|
|
23
|
-
toolName: string;
|
|
24
|
-
/** Theme configuration */
|
|
25
|
-
theme?: ThemeConfig;
|
|
26
|
-
/** MCP session info for callTool polyfill fallback */
|
|
27
|
-
mcpSession?: McpSession;
|
|
28
|
-
/** Include HTMX (default: false) */
|
|
29
|
-
htmx?: boolean;
|
|
30
|
-
/** Include Alpine.js (default: false) */
|
|
31
|
-
alpine?: boolean;
|
|
32
|
-
/** Include fonts (default: true) */
|
|
33
|
-
fonts?: boolean;
|
|
34
|
-
/** Use inline scripts (for blocked network platforms) */
|
|
35
|
-
inline?: boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Additional head content (scripts, meta tags).
|
|
38
|
-
* @warning This content is injected WITHOUT escaping. Only use with trusted content.
|
|
39
|
-
*/
|
|
40
|
-
headContent?: string;
|
|
41
|
-
/** Custom body classes */
|
|
42
|
-
bodyClass?: string;
|
|
43
|
-
/** Custom widget container classes */
|
|
44
|
-
containerClass?: string;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Create a default base template for tool UI widgets.
|
|
48
|
-
*
|
|
49
|
-
* This generates a complete HTML document that:
|
|
50
|
-
* 1. Loads Tailwind CSS with theme configuration
|
|
51
|
-
* 2. Injects platform polyfills (callTool, detectMcpSession, getToolOutput)
|
|
52
|
-
* 3. Waits for toolOutput to be injected
|
|
53
|
-
* 4. Renders content using window.__frontmcp.renderContent or default JSON renderer
|
|
54
|
-
*
|
|
55
|
-
* @param options - Base template configuration
|
|
56
|
-
* @returns Complete HTML document string
|
|
57
|
-
*
|
|
58
|
-
* @example Basic usage
|
|
59
|
-
* ```typescript
|
|
60
|
-
* const html = createDefaultBaseTemplate({ toolName: 'get_weather' });
|
|
61
|
-
* ```
|
|
62
|
-
*
|
|
63
|
-
* @example With custom theme and MCP session
|
|
64
|
-
* ```typescript
|
|
65
|
-
* const html = createDefaultBaseTemplate({
|
|
66
|
-
* toolName: 'get_weather',
|
|
67
|
-
* theme: customTheme,
|
|
68
|
-
* mcpSession: { mcpUrl: 'https://mcp.example.com', sessionId: 'abc123' },
|
|
69
|
-
* });
|
|
70
|
-
* ```
|
|
71
|
-
*
|
|
72
|
-
* @example For Claude Artifacts (inline scripts)
|
|
73
|
-
* ```typescript
|
|
74
|
-
* await fetchAndCacheScriptsFromTheme(theme);
|
|
75
|
-
* const html = createDefaultBaseTemplate({
|
|
76
|
-
* toolName: 'get_weather',
|
|
77
|
-
* inline: true,
|
|
78
|
-
* });
|
|
79
|
-
* ```
|
|
80
|
-
*/
|
|
81
|
-
export declare function createDefaultBaseTemplate(options: BaseTemplateOptions): string;
|
|
82
|
-
/**
|
|
83
|
-
* Create a minimal base template without fonts.
|
|
84
|
-
*
|
|
85
|
-
* Use this for lightweight widgets or when fonts are loaded elsewhere.
|
|
86
|
-
*
|
|
87
|
-
* @param toolName - Tool name for identification
|
|
88
|
-
* @param mcpSession - Optional MCP session info
|
|
89
|
-
* @returns Complete HTML document string
|
|
90
|
-
*/
|
|
91
|
-
export declare function createMinimalBaseTemplate(toolName: string, mcpSession?: McpSession): string;
|