@frontmcp/uipack 0.6.1
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/CLAUDE.md +246 -0
- package/LICENSE +201 -0
- package/README.md +150 -0
- 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-runtime/iife-generator.d.ts +62 -0
- package/bridge-runtime/iife-generator.d.ts.map +1 -0
- package/bridge-runtime/index.d.ts +10 -0
- package/bridge-runtime/index.d.ts.map +1 -0
- package/bridge-runtime/index.js +883 -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 +6861 -0
- package/build/widget-manifest.d.ts +362 -0
- package/build/widget-manifest.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 +35 -0
- package/bundler/index.d.ts.map +1 -0
- package/bundler/index.js +2947 -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/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/index.js +3215 -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-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 +10 -0
- package/esm/bridge-runtime/index.d.ts.map +1 -0
- package/esm/bridge-runtime/index.js +853 -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 +6786 -0
- package/esm/build/widget-manifest.d.ts +362 -0
- package/esm/build/widget-manifest.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 +35 -0
- package/esm/bundler/index.d.ts.map +1 -0
- package/esm/bundler/index.js +2882 -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/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/index.js +3096 -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 +50 -0
- package/esm/index.d.ts.map +1 -0
- package/esm/index.js +12434 -0
- package/esm/package.json +68 -0
- package/esm/registry/index.d.ts +46 -0
- package/esm/registry/index.d.ts.map +1 -0
- package/esm/registry/index.js +6237 -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/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 +1654 -0
- package/esm/renderers/mdx.renderer.d.ts +120 -0
- package/esm/renderers/mdx.renderer.d.ts.map +1 -0
- package/esm/renderers/registry.d.ts +133 -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/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 +4976 -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 +3518 -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 +641 -0
- package/esm/types/ui-config.d.ts.map +1 -0
- package/esm/types/ui-runtime.d.ts +1008 -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/index.js +812 -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/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 +542 -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/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 +50 -0
- package/index.d.ts.map +1 -0
- package/index.js +12683 -0
- package/package.json +66 -0
- package/registry/index.d.ts +46 -0
- package/registry/index.d.ts.map +1 -0
- package/registry/index.js +6280 -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/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 +1706 -0
- package/renderers/mdx.renderer.d.ts +120 -0
- package/renderers/mdx.renderer.d.ts.map +1 -0
- package/renderers/registry.d.ts +133 -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/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 +5052 -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 +3562 -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 +641 -0
- package/types/ui-config.d.ts.map +1 -0
- package/types/ui-runtime.d.ts +1008 -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/index.js +868 -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/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 +583 -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
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MDX Renderer
|
|
3
|
+
*
|
|
4
|
+
* Handles MDX templates - Markdown with embedded JSX components.
|
|
5
|
+
* Uses @mdx-js/mdx for compilation and react-dom/server for SSR.
|
|
6
|
+
*
|
|
7
|
+
* MDX allows mixing Markdown with React components:
|
|
8
|
+
* - Markdown headings, lists, code blocks
|
|
9
|
+
* - JSX component tags: `<Card />`
|
|
10
|
+
* - JS expressions: `{output.items.map(...)}`
|
|
11
|
+
* - Frontmatter for metadata
|
|
12
|
+
*/
|
|
13
|
+
import type { TemplateContext } from '../runtime/types';
|
|
14
|
+
import type { PlatformCapabilities } from '../theme';
|
|
15
|
+
import type { UIRenderer, TranspileResult, TranspileOptions, RenderOptions, RuntimeScripts } from './types';
|
|
16
|
+
/**
|
|
17
|
+
* Types this renderer can handle - MDX strings.
|
|
18
|
+
*/
|
|
19
|
+
type MdxTemplate = string;
|
|
20
|
+
/**
|
|
21
|
+
* MDX Renderer Implementation.
|
|
22
|
+
*
|
|
23
|
+
* Compiles MDX (Markdown + JSX) to React components using @mdx-js/mdx,
|
|
24
|
+
* then renders to HTML using react-dom/server.
|
|
25
|
+
*
|
|
26
|
+
* @example Basic MDX template
|
|
27
|
+
* ```typescript
|
|
28
|
+
* @Tool({
|
|
29
|
+
* ui: {
|
|
30
|
+
* template: `
|
|
31
|
+
* # User Profile
|
|
32
|
+
*
|
|
33
|
+
* <UserCard name={output.name} email={output.email} />
|
|
34
|
+
*
|
|
35
|
+
* ## Recent Activity
|
|
36
|
+
* {output.items.map(item => <ActivityItem key={item.id} {...item} />)}
|
|
37
|
+
* `,
|
|
38
|
+
* mdxComponents: { UserCard, ActivityItem }
|
|
39
|
+
* }
|
|
40
|
+
* })
|
|
41
|
+
* ```
|
|
42
|
+
*
|
|
43
|
+
* @example MDX with frontmatter
|
|
44
|
+
* ```typescript
|
|
45
|
+
* @Tool({
|
|
46
|
+
* ui: {
|
|
47
|
+
* template: `
|
|
48
|
+
* ---
|
|
49
|
+
* title: Dashboard
|
|
50
|
+
* ---
|
|
51
|
+
*
|
|
52
|
+
* # {frontmatter.title}
|
|
53
|
+
*
|
|
54
|
+
* <Dashboard data={output} />
|
|
55
|
+
* `
|
|
56
|
+
* }
|
|
57
|
+
* })
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare class MdxRenderer implements UIRenderer<MdxTemplate> {
|
|
61
|
+
readonly type: "mdx";
|
|
62
|
+
readonly priority = 10;
|
|
63
|
+
/**
|
|
64
|
+
* Lazy-loaded modules.
|
|
65
|
+
*/
|
|
66
|
+
private React;
|
|
67
|
+
private ReactDOMServer;
|
|
68
|
+
private jsxRuntime;
|
|
69
|
+
private mdxEvaluate;
|
|
70
|
+
/**
|
|
71
|
+
* Check if this renderer can handle the given template.
|
|
72
|
+
*
|
|
73
|
+
* Accepts strings containing MDX syntax (Markdown + JSX).
|
|
74
|
+
*/
|
|
75
|
+
canHandle(template: unknown): template is MdxTemplate;
|
|
76
|
+
/**
|
|
77
|
+
* Transpile MDX to executable JavaScript.
|
|
78
|
+
*
|
|
79
|
+
* Uses @mdx-js/mdx to compile MDX source to a module.
|
|
80
|
+
* Note: For MDX, we use evaluate() which combines compile + run,
|
|
81
|
+
* so this method just returns the source hash for caching purposes.
|
|
82
|
+
*/
|
|
83
|
+
transpile(template: MdxTemplate, _options?: TranspileOptions): Promise<TranspileResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Render MDX template to HTML string.
|
|
86
|
+
*
|
|
87
|
+
* Uses @mdx-js/mdx's evaluate() for clean compilation + execution,
|
|
88
|
+
* then renders the resulting React component to HTML via SSR.
|
|
89
|
+
*/
|
|
90
|
+
render<In, Out>(template: MdxTemplate, context: TemplateContext<In, Out>, options?: RenderOptions): Promise<string>;
|
|
91
|
+
/**
|
|
92
|
+
* Get runtime scripts for client-side functionality.
|
|
93
|
+
*/
|
|
94
|
+
getRuntimeScripts(platform: PlatformCapabilities): RuntimeScripts;
|
|
95
|
+
/**
|
|
96
|
+
* Load React and ReactDOMServer modules.
|
|
97
|
+
*/
|
|
98
|
+
private loadReact;
|
|
99
|
+
/**
|
|
100
|
+
* Load @mdx-js/mdx evaluate function.
|
|
101
|
+
*
|
|
102
|
+
* evaluate() is the cleanest way to run MDX - it combines
|
|
103
|
+
* compile and run in a single step, handling all the runtime
|
|
104
|
+
* injection automatically.
|
|
105
|
+
*/
|
|
106
|
+
private loadMdx;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Singleton instance of the MDX renderer.
|
|
110
|
+
*/
|
|
111
|
+
export declare const mdxRenderer: MdxRenderer;
|
|
112
|
+
/**
|
|
113
|
+
* Build MDX hydration script for client-side interactivity.
|
|
114
|
+
*
|
|
115
|
+
* Note: MDX hydration is more complex than React hydration
|
|
116
|
+
* because it needs the MDX runtime and component definitions.
|
|
117
|
+
*/
|
|
118
|
+
export declare function buildMdxHydrationScript(): string;
|
|
119
|
+
export {};
|
|
120
|
+
//# sourceMappingURL=mdx.renderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mdx.renderer.d.ts","sourceRoot":"","sources":["../../../src/renderers/mdx.renderer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,cAAc,EAEf,MAAM,SAAS,CAAC;AAKjB;;GAEG;AACH,KAAK,WAAW,GAAG,MAAM,CAAC;AAmB1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,qBAAa,WAAY,YAAW,UAAU,CAAC,WAAW,CAAC;IACzD,QAAQ,CAAC,IAAI,EAAG,KAAK,CAAU;IAC/B,QAAQ,CAAC,QAAQ,MAAM;IAEvB;;OAEG;IAEH,OAAO,CAAC,KAAK,CAAa;IAE1B,OAAO,CAAC,cAAc,CAAa;IAEnC,OAAO,CAAC,UAAU,CAAa;IAE/B,OAAO,CAAC,WAAW,CAAiF;IAEpG;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,OAAO,GAAG,QAAQ,IAAI,WAAW;IAQrD;;;;;;OAMG;IACG,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IAsB7F;;;;;OAKG;IACG,MAAM,CAAC,EAAE,EAAE,GAAG,EAClB,QAAQ,EAAE,WAAW,EACrB,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,EACjC,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC;IAkFlB;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,oBAAoB,GAAG,cAAc;IAoBjE;;OAEG;YACW,SAAS;IAoBvB;;;;;;OAMG;YACW,OAAO;CAgBtB;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC;AAE7C;;;;;GAKG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA+BhD"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renderer Registry
|
|
3
|
+
*
|
|
4
|
+
* Global registry for template renderers with auto-detection.
|
|
5
|
+
* Manages registration, detection, and rendering of templates.
|
|
6
|
+
*/
|
|
7
|
+
import type { TemplateContext } from '../runtime/types';
|
|
8
|
+
import type { UIRenderer, RendererType, RendererRegistryOptions, DetectionResult, RenderResult, RenderOptions } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Renderer Registry.
|
|
11
|
+
*
|
|
12
|
+
* Manages a collection of renderers and provides:
|
|
13
|
+
* - Registration of custom renderers
|
|
14
|
+
* - Auto-detection of template types
|
|
15
|
+
* - Unified rendering interface
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // Register a custom renderer
|
|
20
|
+
* registry.register(myCustomRenderer);
|
|
21
|
+
*
|
|
22
|
+
* // Auto-detect and render
|
|
23
|
+
* const result = await registry.render(template, context);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare class RendererRegistry {
|
|
27
|
+
private renderers;
|
|
28
|
+
private sortedRenderers;
|
|
29
|
+
private defaultRenderer;
|
|
30
|
+
private debug;
|
|
31
|
+
constructor(options?: RendererRegistryOptions);
|
|
32
|
+
/**
|
|
33
|
+
* Register a renderer.
|
|
34
|
+
*
|
|
35
|
+
* Renderers are sorted by priority (highest first) for detection.
|
|
36
|
+
*
|
|
37
|
+
* @param renderer - Renderer to register
|
|
38
|
+
*/
|
|
39
|
+
register(renderer: UIRenderer): void;
|
|
40
|
+
/**
|
|
41
|
+
* Unregister a renderer.
|
|
42
|
+
*
|
|
43
|
+
* @param type - Type of renderer to remove
|
|
44
|
+
* @returns True if renderer was removed
|
|
45
|
+
*/
|
|
46
|
+
unregister(type: RendererType): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get a renderer by type.
|
|
49
|
+
*
|
|
50
|
+
* @param type - Renderer type
|
|
51
|
+
* @returns Renderer or undefined if not found
|
|
52
|
+
*/
|
|
53
|
+
get(type: RendererType): UIRenderer | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Check if a renderer type is registered.
|
|
56
|
+
*
|
|
57
|
+
* @param type - Renderer type
|
|
58
|
+
* @returns True if registered
|
|
59
|
+
*/
|
|
60
|
+
has(type: RendererType): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Get all registered renderer types.
|
|
63
|
+
*
|
|
64
|
+
* @returns Array of renderer types
|
|
65
|
+
*/
|
|
66
|
+
getTypes(): RendererType[];
|
|
67
|
+
/**
|
|
68
|
+
* Auto-detect the renderer for a template.
|
|
69
|
+
*
|
|
70
|
+
* Checks renderers in priority order (highest first).
|
|
71
|
+
* Returns HTML renderer as fallback.
|
|
72
|
+
*
|
|
73
|
+
* @param template - Template to detect
|
|
74
|
+
* @returns Detection result with renderer and confidence
|
|
75
|
+
*/
|
|
76
|
+
detect(template: unknown): DetectionResult;
|
|
77
|
+
/**
|
|
78
|
+
* Render a template with auto-detection.
|
|
79
|
+
*
|
|
80
|
+
* @param template - Template to render (React, MDX, or HTML)
|
|
81
|
+
* @param context - Template context with input/output
|
|
82
|
+
* @param options - Render options
|
|
83
|
+
* @returns Rendered result with HTML and metadata
|
|
84
|
+
*/
|
|
85
|
+
render<In, Out>(template: unknown, context: TemplateContext<In, Out>, options?: RenderOptions): Promise<RenderResult>;
|
|
86
|
+
/**
|
|
87
|
+
* Render with a specific renderer type.
|
|
88
|
+
*
|
|
89
|
+
* @param type - Renderer type to use
|
|
90
|
+
* @param template - Template to render
|
|
91
|
+
* @param context - Template context
|
|
92
|
+
* @param options - Render options
|
|
93
|
+
* @returns Rendered result
|
|
94
|
+
*/
|
|
95
|
+
renderWith<In, Out>(type: RendererType, template: unknown, context: TemplateContext<In, Out>, options?: RenderOptions): Promise<RenderResult>;
|
|
96
|
+
/**
|
|
97
|
+
* Update the sorted renderer list by priority.
|
|
98
|
+
*/
|
|
99
|
+
private updateSortedList;
|
|
100
|
+
/**
|
|
101
|
+
* Set the default renderer type.
|
|
102
|
+
*
|
|
103
|
+
* @param type - Renderer type to use as default
|
|
104
|
+
*/
|
|
105
|
+
setDefault(type: RendererType): void;
|
|
106
|
+
/**
|
|
107
|
+
* Get registry statistics.
|
|
108
|
+
*/
|
|
109
|
+
getStats(): {
|
|
110
|
+
registeredRenderers: RendererType[];
|
|
111
|
+
defaultRenderer: RendererType;
|
|
112
|
+
priorityOrder: Array<{
|
|
113
|
+
type: RendererType;
|
|
114
|
+
priority: number;
|
|
115
|
+
}>;
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Global renderer registry instance.
|
|
120
|
+
*
|
|
121
|
+
* Pre-configured with the HTML renderer.
|
|
122
|
+
* React and MDX renderers can be added:
|
|
123
|
+
*
|
|
124
|
+
* ```typescript
|
|
125
|
+
* import { rendererRegistry, mdxRenderer } from '@frontmcp/uipack/renderers';
|
|
126
|
+
* import { reactRenderer } from '@frontmcp/ui';
|
|
127
|
+
*
|
|
128
|
+
* rendererRegistry.register(reactRenderer);
|
|
129
|
+
* rendererRegistry.register(mdxRenderer);
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
132
|
+
export declare const rendererRegistry: RendererRegistry;
|
|
133
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/renderers/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAGxD,OAAO,KAAK,EACV,UAAU,EACV,YAAY,EACZ,uBAAuB,EACvB,eAAe,EACf,YAAY,EACZ,aAAa,EACd,MAAM,SAAS,CAAC;AAGjB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,eAAe,CAAoB;IAC3C,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,KAAK,CAAU;gBAEX,OAAO,GAAE,uBAA4B;IAOjD;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,IAAI;IASpC;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAQvC;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,UAAU,GAAG,SAAS;IAI/C;;;;;OAKG;IACH,GAAG,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO;IAIhC;;;;OAIG;IACH,QAAQ,IAAI,YAAY,EAAE;IAI1B;;;;;;;;OAQG;IACH,MAAM,CAAC,QAAQ,EAAE,OAAO,GAAG,eAAe;IA+B1C;;;;;;;OAOG;IACG,MAAM,CAAC,EAAE,EAAE,GAAG,EAClB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,EACjC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IA4BxB;;;;;;;;OAQG;IACG,UAAU,CAAC,EAAE,EAAE,GAAG,EACtB,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,GAAG,CAAC,EACjC,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC;IAyBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAOpC;;OAEG;IACH,QAAQ,IAAI;QACV,mBAAmB,EAAE,YAAY,EAAE,CAAC;QACpC,eAAe,EAAE,YAAY,CAAC;QAC9B,aAAa,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,YAAY,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KAChE;CAUF;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,kBAAyB,CAAC"}
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Renderer System Types
|
|
3
|
+
*
|
|
4
|
+
* Core interfaces for the multi-framework rendering system.
|
|
5
|
+
* Supports HTML, React, and MDX templates with auto-detection.
|
|
6
|
+
*/
|
|
7
|
+
import type { TemplateContext, TemplateHelpers, TemplateBuilderFn } from '../runtime/types';
|
|
8
|
+
import type { PlatformCapabilities } from '../theme';
|
|
9
|
+
/**
|
|
10
|
+
* Supported renderer types for template processing.
|
|
11
|
+
* - 'html': Plain HTML string or template function
|
|
12
|
+
* - 'react': React functional component
|
|
13
|
+
* - 'mdx': MDX content string
|
|
14
|
+
*/
|
|
15
|
+
export type RendererType = 'html' | 'react' | 'mdx';
|
|
16
|
+
/**
|
|
17
|
+
* Props passed to React components used as templates.
|
|
18
|
+
*
|
|
19
|
+
* For SSR (server-side rendering), `output` is always available.
|
|
20
|
+
* For client-side hydration with the bridge, use `HydratedToolUIProps`.
|
|
21
|
+
*/
|
|
22
|
+
export interface ToolUIProps<In = unknown, Out = unknown> {
|
|
23
|
+
/** Tool input arguments */
|
|
24
|
+
input: In;
|
|
25
|
+
/** Tool output result */
|
|
26
|
+
output: Out;
|
|
27
|
+
/** Structured content parsed from output */
|
|
28
|
+
structuredContent?: unknown;
|
|
29
|
+
/** Helper functions for rendering */
|
|
30
|
+
helpers: TemplateHelpers;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Props for client-side hydrated components using the Platform Bridge.
|
|
34
|
+
*
|
|
35
|
+
* These props include loading/error state for reactive rendering.
|
|
36
|
+
* Use with `useSyncExternalStore` from React 18+:
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```tsx
|
|
40
|
+
* import { useSyncExternalStore } from 'react';
|
|
41
|
+
*
|
|
42
|
+
* function useToolBridge<T>(): HydratedToolUIProps<T> {
|
|
43
|
+
* const state = useSyncExternalStore(
|
|
44
|
+
* window.__frontmcp.bridge.subscribe,
|
|
45
|
+
* window.__frontmcp.bridge.getSnapshot,
|
|
46
|
+
* window.__frontmcp.bridge.getServerSnapshot
|
|
47
|
+
* );
|
|
48
|
+
* return {
|
|
49
|
+
* data: state.data as T,
|
|
50
|
+
* loading: state.loading,
|
|
51
|
+
* error: state.error,
|
|
52
|
+
* };
|
|
53
|
+
* }
|
|
54
|
+
*
|
|
55
|
+
* function MyWidget() {
|
|
56
|
+
* const { data, loading, error } = useToolBridge<WeatherData>();
|
|
57
|
+
*
|
|
58
|
+
* if (loading) return <Spinner />;
|
|
59
|
+
* if (error) return <Error message={error} />;
|
|
60
|
+
* if (!data) return <Empty />;
|
|
61
|
+
*
|
|
62
|
+
* return <WeatherCard {...data} />;
|
|
63
|
+
* }
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export interface HydratedToolUIProps<Out = unknown> {
|
|
67
|
+
/** Tool output data (null when loading or no data) */
|
|
68
|
+
data: Out | null;
|
|
69
|
+
/** Whether the bridge is waiting for data */
|
|
70
|
+
loading: boolean;
|
|
71
|
+
/** Error message if data loading failed */
|
|
72
|
+
error: string | null;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Result of transpiling a template.
|
|
76
|
+
*/
|
|
77
|
+
export interface TranspileResult {
|
|
78
|
+
/** Transpiled JavaScript code */
|
|
79
|
+
code: string;
|
|
80
|
+
/** Content hash for caching */
|
|
81
|
+
hash: string;
|
|
82
|
+
/** Whether result was retrieved from cache */
|
|
83
|
+
cached: boolean;
|
|
84
|
+
/** Source map for debugging (optional) */
|
|
85
|
+
sourceMap?: string;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Options for transpilation.
|
|
89
|
+
*/
|
|
90
|
+
export interface TranspileOptions {
|
|
91
|
+
/** Enable source maps */
|
|
92
|
+
sourceMaps?: boolean;
|
|
93
|
+
/** Development mode (more detailed errors) */
|
|
94
|
+
development?: boolean;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Options for rendering a template.
|
|
98
|
+
*/
|
|
99
|
+
export interface RenderOptions {
|
|
100
|
+
/** Target platform capabilities */
|
|
101
|
+
platform?: PlatformCapabilities;
|
|
102
|
+
/** Enable client-side hydration */
|
|
103
|
+
hydrate?: boolean;
|
|
104
|
+
/** Custom MDX components */
|
|
105
|
+
mdxComponents?: Record<string, unknown>;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Runtime scripts to inject for client-side functionality.
|
|
109
|
+
*/
|
|
110
|
+
export interface RuntimeScripts {
|
|
111
|
+
/** Scripts to include in <head> */
|
|
112
|
+
headScripts: string;
|
|
113
|
+
/** Inline script content (for blocked-network platforms) */
|
|
114
|
+
inlineScripts?: string;
|
|
115
|
+
/** Whether scripts are inline or external */
|
|
116
|
+
isInline: boolean;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Result of rendering a template.
|
|
120
|
+
*/
|
|
121
|
+
export interface RenderResult {
|
|
122
|
+
/** Rendered HTML content (body only) */
|
|
123
|
+
html: string;
|
|
124
|
+
/** Renderer type that was used */
|
|
125
|
+
rendererType: RendererType;
|
|
126
|
+
/** Whether transpilation was cached */
|
|
127
|
+
transpileCached: boolean;
|
|
128
|
+
/** Runtime scripts needed for this template */
|
|
129
|
+
runtimeScripts: RuntimeScripts;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Abstract renderer interface for processing templates.
|
|
133
|
+
*
|
|
134
|
+
* Each renderer handles a specific template type (HTML, React, MDX)
|
|
135
|
+
* and provides:
|
|
136
|
+
* - Template type detection
|
|
137
|
+
* - Transpilation (if needed)
|
|
138
|
+
* - HTML rendering
|
|
139
|
+
* - Client runtime script generation
|
|
140
|
+
*/
|
|
141
|
+
export interface UIRenderer<T = unknown> {
|
|
142
|
+
/**
|
|
143
|
+
* Unique renderer type identifier.
|
|
144
|
+
*/
|
|
145
|
+
readonly type: RendererType;
|
|
146
|
+
/**
|
|
147
|
+
* Priority for auto-detection.
|
|
148
|
+
* Higher values are checked first.
|
|
149
|
+
* - React: 20
|
|
150
|
+
* - MDX: 10
|
|
151
|
+
* - HTML: 0 (fallback)
|
|
152
|
+
*/
|
|
153
|
+
readonly priority: number;
|
|
154
|
+
/**
|
|
155
|
+
* Check if this renderer can handle the given template.
|
|
156
|
+
*
|
|
157
|
+
* @param template - The template to check
|
|
158
|
+
* @returns True if this renderer can process the template
|
|
159
|
+
*/
|
|
160
|
+
canHandle(template: unknown): template is T;
|
|
161
|
+
/**
|
|
162
|
+
* Transpile the template to executable JavaScript (if needed).
|
|
163
|
+
*
|
|
164
|
+
* For React components from imports, no transpilation is needed.
|
|
165
|
+
* For JSX strings, SWC transpilation is performed.
|
|
166
|
+
* Results are cached by content hash.
|
|
167
|
+
*
|
|
168
|
+
* @param template - Template to transpile
|
|
169
|
+
* @param options - Transpilation options
|
|
170
|
+
* @returns Transpiled result with caching metadata
|
|
171
|
+
*/
|
|
172
|
+
transpile(template: T, options?: TranspileOptions): Promise<TranspileResult>;
|
|
173
|
+
/**
|
|
174
|
+
* Render the template to HTML string.
|
|
175
|
+
*
|
|
176
|
+
* @param template - Template to render
|
|
177
|
+
* @param context - Template context with input/output/helpers
|
|
178
|
+
* @param options - Render options (platform, hydration, etc.)
|
|
179
|
+
* @returns Rendered HTML string
|
|
180
|
+
*/
|
|
181
|
+
render<In, Out>(template: T, context: TemplateContext<In, Out>, options?: RenderOptions): Promise<string>;
|
|
182
|
+
/**
|
|
183
|
+
* Get runtime scripts needed for client-side functionality.
|
|
184
|
+
*
|
|
185
|
+
* @param platform - Target platform capabilities
|
|
186
|
+
* @returns Scripts to inject (CDN or inline based on platform)
|
|
187
|
+
*/
|
|
188
|
+
getRuntimeScripts(platform: PlatformCapabilities): RuntimeScripts;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Options for the renderer registry.
|
|
192
|
+
*/
|
|
193
|
+
export interface RendererRegistryOptions {
|
|
194
|
+
/** Maximum cache size for transpiled results */
|
|
195
|
+
maxCacheSize?: number;
|
|
196
|
+
/** Enable debug logging */
|
|
197
|
+
debug?: boolean;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Result of detecting a template's renderer type.
|
|
201
|
+
*/
|
|
202
|
+
export interface DetectionResult {
|
|
203
|
+
/** The detected renderer */
|
|
204
|
+
renderer: UIRenderer;
|
|
205
|
+
/** Confidence level (0-1) */
|
|
206
|
+
confidence: number;
|
|
207
|
+
/** Detection reason for debugging */
|
|
208
|
+
reason: string;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* React component type for Tool UI templates.
|
|
212
|
+
*
|
|
213
|
+
* This is a generic function type that accepts props and returns JSX.
|
|
214
|
+
* We use a loose type here to avoid requiring React types at compile time.
|
|
215
|
+
*/
|
|
216
|
+
export type ReactComponentType<In = unknown, Out = unknown> = (props: ToolUIProps<In, Out>) => any;
|
|
217
|
+
/**
|
|
218
|
+
* All possible template types.
|
|
219
|
+
* Auto-detected at runtime.
|
|
220
|
+
*/
|
|
221
|
+
export type ToolUITemplate<In = unknown, Out = unknown> = TemplateBuilderFn<In, Out> | string | ReactComponentType<In, Out>;
|
|
222
|
+
/**
|
|
223
|
+
* Context passed to custom wrapper functions.
|
|
224
|
+
*/
|
|
225
|
+
export interface WrapperContext {
|
|
226
|
+
/** Tool name */
|
|
227
|
+
toolName: string;
|
|
228
|
+
/** Rendered content HTML */
|
|
229
|
+
content: string;
|
|
230
|
+
/** Detected renderer type */
|
|
231
|
+
rendererType: RendererType;
|
|
232
|
+
/** Target platform */
|
|
233
|
+
platform: PlatformCapabilities;
|
|
234
|
+
/** Runtime scripts to inject */
|
|
235
|
+
runtimeScripts: RuntimeScripts;
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Extended Tool UI configuration with multi-framework support.
|
|
239
|
+
*
|
|
240
|
+
* The template type is auto-detected - no need to specify a renderer!
|
|
241
|
+
*
|
|
242
|
+
* @example React component
|
|
243
|
+
* ```typescript
|
|
244
|
+
* import { UserCard } from './components/user-card.tsx';
|
|
245
|
+
*
|
|
246
|
+
* @Tool({
|
|
247
|
+
* ui: {
|
|
248
|
+
* template: UserCard, // Auto-detected as React
|
|
249
|
+
* hydrate: true, // Enable client-side interactivity
|
|
250
|
+
* }
|
|
251
|
+
* })
|
|
252
|
+
* ```
|
|
253
|
+
*
|
|
254
|
+
* @example MDX template
|
|
255
|
+
* ```typescript
|
|
256
|
+
* @Tool({
|
|
257
|
+
* ui: {
|
|
258
|
+
* template: `
|
|
259
|
+
* # Welcome
|
|
260
|
+
* <UserCard name={output.name} />
|
|
261
|
+
* `,
|
|
262
|
+
* mdxComponents: { UserCard },
|
|
263
|
+
* }
|
|
264
|
+
* })
|
|
265
|
+
* ```
|
|
266
|
+
*
|
|
267
|
+
* @example HTML template (unchanged)
|
|
268
|
+
* ```typescript
|
|
269
|
+
* @Tool({
|
|
270
|
+
* ui: {
|
|
271
|
+
* template: (ctx) => `<div>${ctx.output.name}</div>`,
|
|
272
|
+
* }
|
|
273
|
+
* })
|
|
274
|
+
* ```
|
|
275
|
+
*/
|
|
276
|
+
export interface ExtendedToolUIConfig<In = unknown, Out = unknown> {
|
|
277
|
+
/**
|
|
278
|
+
* Template for rendering the UI.
|
|
279
|
+
*
|
|
280
|
+
* Can be:
|
|
281
|
+
* - React component: `({ input, output }) => <div>...</div>`
|
|
282
|
+
* - MDX string: `# Title\n<Component />`
|
|
283
|
+
* - HTML function: `(ctx) => \`<div>...</div>\``
|
|
284
|
+
* - Static HTML string
|
|
285
|
+
*
|
|
286
|
+
* Type is auto-detected at runtime.
|
|
287
|
+
*/
|
|
288
|
+
template: ToolUITemplate<In, Out>;
|
|
289
|
+
/**
|
|
290
|
+
* Enable client-side hydration for React components.
|
|
291
|
+
* When true, the React runtime is included and components
|
|
292
|
+
* become interactive in the browser.
|
|
293
|
+
*
|
|
294
|
+
* @default false
|
|
295
|
+
*/
|
|
296
|
+
hydrate?: boolean;
|
|
297
|
+
/**
|
|
298
|
+
* Custom wrapper function to override the default HTML document wrapper.
|
|
299
|
+
* Useful for completely custom document structures.
|
|
300
|
+
*
|
|
301
|
+
* @param content - Rendered template HTML
|
|
302
|
+
* @param ctx - Wrapper context with metadata
|
|
303
|
+
* @returns Complete HTML document string
|
|
304
|
+
*/
|
|
305
|
+
wrapper?: (content: string, ctx: WrapperContext) => string;
|
|
306
|
+
/**
|
|
307
|
+
* Custom MDX components available in MDX templates.
|
|
308
|
+
* These components can be used directly in MDX content.
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* mdxComponents: {
|
|
313
|
+
* UserCard: ({ name }) => <div>{name}</div>,
|
|
314
|
+
* Badge: ({ type }) => <span className={type}>...</span>,
|
|
315
|
+
* }
|
|
316
|
+
* ```
|
|
317
|
+
*/
|
|
318
|
+
mdxComponents?: Record<string, (props: any) => any>;
|
|
319
|
+
/** Content Security Policy for the sandboxed widget. */
|
|
320
|
+
csp?: {
|
|
321
|
+
connectDomains?: string[];
|
|
322
|
+
resourceDomains?: string[];
|
|
323
|
+
};
|
|
324
|
+
/** Whether the widget can invoke tools via the MCP bridge. */
|
|
325
|
+
widgetAccessible?: boolean;
|
|
326
|
+
/** Preferred display mode for the widget. */
|
|
327
|
+
displayMode?: 'inline' | 'fullscreen' | 'pip';
|
|
328
|
+
/** Human-readable description shown to users about what the widget does. */
|
|
329
|
+
widgetDescription?: string;
|
|
330
|
+
/** Status messages shown during tool invocation. */
|
|
331
|
+
invocationStatus?: {
|
|
332
|
+
invoking?: string;
|
|
333
|
+
invoked?: string;
|
|
334
|
+
};
|
|
335
|
+
/** How the widget HTML should be served to the client. */
|
|
336
|
+
servingMode?: 'inline' | 'static' | 'hybrid' | 'direct-url' | 'custom-url';
|
|
337
|
+
/** Custom URL for widget serving when `servingMode: 'custom-url'`. */
|
|
338
|
+
customWidgetUrl?: string;
|
|
339
|
+
/** Path for direct URL serving when `servingMode: 'direct-url'`. */
|
|
340
|
+
directPath?: string;
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/renderers/types.ts"],"names":[],"mappings":"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"}
|