@frontmcp/ui 0.6.0 → 0.6.2

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.
Files changed (650) hide show
  1. package/README.md +140 -362
  2. package/bridge/core/bridge-factory.d.ts +1 -0
  3. package/bridge/core/bridge-factory.d.ts.map +1 -1
  4. package/bridge/index.d.ts +1 -1
  5. package/bridge/index.d.ts.map +1 -1
  6. package/bridge/index.js +39 -881
  7. package/bridge/runtime/index.d.ts +2 -1
  8. package/bridge/runtime/index.d.ts.map +1 -1
  9. package/bundler/browser-components.d.ts +42 -0
  10. package/bundler/browser-components.d.ts.map +1 -0
  11. package/bundler/bundler.d.ts +78 -4
  12. package/bundler/bundler.d.ts.map +1 -1
  13. package/bundler/index.d.ts +8 -8
  14. package/bundler/index.d.ts.map +1 -1
  15. package/bundler/index.js +1411 -2997
  16. package/bundler/types.d.ts +188 -7
  17. package/bundler/types.d.ts.map +1 -1
  18. package/components/alert.schema.d.ts +6 -6
  19. package/components/avatar.schema.d.ts +9 -9
  20. package/components/badge.schema.d.ts +9 -9
  21. package/components/button.schema.d.ts +9 -9
  22. package/components/card.schema.d.ts +7 -7
  23. package/components/form.schema.d.ts +24 -24
  24. package/components/index.js +128 -198
  25. package/components/modal.schema.d.ts +8 -8
  26. package/components/table.schema.d.ts +6 -6
  27. package/esm/bridge/{index.js → index.mjs} +40 -877
  28. package/esm/bundler/index.mjs +3136 -0
  29. package/esm/components/{index.js → index.mjs} +136 -196
  30. package/esm/index.mjs +5450 -0
  31. package/esm/layouts/index.mjs +409 -0
  32. package/esm/package.json +15 -32
  33. package/esm/react/{index.js → index.mjs} +71 -260
  34. package/esm/renderers/index.mjs +611 -0
  35. package/esm/universal/index.mjs +1951 -0
  36. package/esm/web-components/{index.js → index.mjs} +232 -287
  37. package/index.d.ts +22 -41
  38. package/index.d.ts.map +1 -1
  39. package/index.js +4286 -19607
  40. package/layouts/base.d.ts +2 -2
  41. package/layouts/base.d.ts.map +1 -1
  42. package/layouts/index.js +46 -539
  43. package/layouts/presets.d.ts.map +1 -1
  44. package/package.json +15 -32
  45. package/react/Alert.d.ts +1 -2
  46. package/react/Alert.d.ts.map +1 -1
  47. package/react/Badge.d.ts +1 -2
  48. package/react/Badge.d.ts.map +1 -1
  49. package/react/Button.d.ts +1 -2
  50. package/react/Button.d.ts.map +1 -1
  51. package/react/Card.d.ts +1 -2
  52. package/react/Card.d.ts.map +1 -1
  53. package/react/hooks/context.d.ts +1 -1
  54. package/react/hooks/context.d.ts.map +1 -1
  55. package/react/index.d.ts +5 -7
  56. package/react/index.d.ts.map +1 -1
  57. package/react/index.js +55 -269
  58. package/react/types.d.ts +1 -2
  59. package/react/types.d.ts.map +1 -1
  60. package/renderers/index.d.ts +15 -25
  61. package/renderers/index.d.ts.map +1 -1
  62. package/renderers/index.js +393 -1619
  63. package/renderers/mdx.renderer.d.ts +13 -34
  64. package/renderers/mdx.renderer.d.ts.map +1 -1
  65. package/{esm/runtime/adapters → renderers}/react.adapter.d.ts +2 -2
  66. package/renderers/react.adapter.d.ts.map +1 -0
  67. package/renderers/react.renderer.d.ts +25 -16
  68. package/renderers/react.renderer.d.ts.map +1 -1
  69. package/renderers/transpiler.d.ts +49 -0
  70. package/renderers/transpiler.d.ts.map +1 -0
  71. package/universal/cached-runtime.d.ts +25 -1
  72. package/universal/cached-runtime.d.ts.map +1 -1
  73. package/universal/index.js +2037 -0
  74. package/universal/runtime-builder.d.ts.map +1 -1
  75. package/universal/types.d.ts.map +1 -1
  76. package/web-components/elements/fmcp-input.d.ts.map +1 -1
  77. package/web-components/elements/fmcp-select.d.ts.map +1 -1
  78. package/web-components/index.d.ts +0 -1
  79. package/web-components/index.d.ts.map +1 -1
  80. package/web-components/index.js +224 -289
  81. package/adapters/index.d.ts +0 -13
  82. package/adapters/index.d.ts.map +0 -1
  83. package/adapters/index.js +0 -462
  84. package/adapters/platform-meta.d.ts +0 -166
  85. package/adapters/platform-meta.d.ts.map +0 -1
  86. package/adapters/response-builder.d.ts +0 -108
  87. package/adapters/response-builder.d.ts.map +0 -1
  88. package/adapters/serving-mode.d.ts +0 -107
  89. package/adapters/serving-mode.d.ts.map +0 -1
  90. package/base-template/bridge.d.ts +0 -90
  91. package/base-template/bridge.d.ts.map +0 -1
  92. package/base-template/default-base-template.d.ts +0 -92
  93. package/base-template/default-base-template.d.ts.map +0 -1
  94. package/base-template/index.d.ts +0 -15
  95. package/base-template/index.d.ts.map +0 -1
  96. package/base-template/index.js +0 -1398
  97. package/base-template/polyfills.d.ts +0 -31
  98. package/base-template/polyfills.d.ts.map +0 -1
  99. package/base-template/theme-styles.d.ts +0 -74
  100. package/base-template/theme-styles.d.ts.map +0 -1
  101. package/build/cdn-resources.d.ts +0 -243
  102. package/build/cdn-resources.d.ts.map +0 -1
  103. package/build/index.d.ts +0 -295
  104. package/build/index.d.ts.map +0 -1
  105. package/build/index.js +0 -7096
  106. package/build/widget-manifest.d.ts +0 -362
  107. package/build/widget-manifest.d.ts.map +0 -1
  108. package/bundler/cache.d.ts +0 -173
  109. package/bundler/cache.d.ts.map +0 -1
  110. package/bundler/file-cache/component-builder.d.ts +0 -167
  111. package/bundler/file-cache/component-builder.d.ts.map +0 -1
  112. package/bundler/file-cache/hash-calculator.d.ts +0 -155
  113. package/bundler/file-cache/hash-calculator.d.ts.map +0 -1
  114. package/bundler/file-cache/index.d.ts +0 -12
  115. package/bundler/file-cache/index.d.ts.map +0 -1
  116. package/bundler/file-cache/storage/filesystem.d.ts +0 -149
  117. package/bundler/file-cache/storage/filesystem.d.ts.map +0 -1
  118. package/bundler/file-cache/storage/index.d.ts +0 -11
  119. package/bundler/file-cache/storage/index.d.ts.map +0 -1
  120. package/bundler/file-cache/storage/interface.d.ts +0 -152
  121. package/bundler/file-cache/storage/interface.d.ts.map +0 -1
  122. package/bundler/file-cache/storage/redis.d.ts +0 -139
  123. package/bundler/file-cache/storage/redis.d.ts.map +0 -1
  124. package/bundler/sandbox/enclave-adapter.d.ts +0 -121
  125. package/bundler/sandbox/enclave-adapter.d.ts.map +0 -1
  126. package/bundler/sandbox/executor.d.ts +0 -14
  127. package/bundler/sandbox/executor.d.ts.map +0 -1
  128. package/bundler/sandbox/policy.d.ts +0 -62
  129. package/bundler/sandbox/policy.d.ts.map +0 -1
  130. package/dependency/cdn-registry.d.ts +0 -98
  131. package/dependency/cdn-registry.d.ts.map +0 -1
  132. package/dependency/import-map.d.ts +0 -186
  133. package/dependency/import-map.d.ts.map +0 -1
  134. package/dependency/import-parser.d.ts +0 -82
  135. package/dependency/import-parser.d.ts.map +0 -1
  136. package/dependency/index.d.ts +0 -17
  137. package/dependency/index.d.ts.map +0 -1
  138. package/dependency/resolver.d.ts +0 -164
  139. package/dependency/resolver.d.ts.map +0 -1
  140. package/dependency/schemas.d.ts +0 -486
  141. package/dependency/schemas.d.ts.map +0 -1
  142. package/dependency/template-loader.d.ts +0 -204
  143. package/dependency/template-loader.d.ts.map +0 -1
  144. package/dependency/template-processor.d.ts +0 -118
  145. package/dependency/template-processor.d.ts.map +0 -1
  146. package/dependency/types.d.ts +0 -739
  147. package/dependency/types.d.ts.map +0 -1
  148. package/esm/adapters/index.d.ts +0 -13
  149. package/esm/adapters/index.d.ts.map +0 -1
  150. package/esm/adapters/index.js +0 -427
  151. package/esm/adapters/platform-meta.d.ts +0 -166
  152. package/esm/adapters/platform-meta.d.ts.map +0 -1
  153. package/esm/adapters/response-builder.d.ts +0 -108
  154. package/esm/adapters/response-builder.d.ts.map +0 -1
  155. package/esm/adapters/serving-mode.d.ts +0 -107
  156. package/esm/adapters/serving-mode.d.ts.map +0 -1
  157. package/esm/base-template/bridge.d.ts +0 -90
  158. package/esm/base-template/bridge.d.ts.map +0 -1
  159. package/esm/base-template/default-base-template.d.ts +0 -92
  160. package/esm/base-template/default-base-template.d.ts.map +0 -1
  161. package/esm/base-template/index.d.ts +0 -15
  162. package/esm/base-template/index.d.ts.map +0 -1
  163. package/esm/base-template/index.js +0 -1364
  164. package/esm/base-template/polyfills.d.ts +0 -31
  165. package/esm/base-template/polyfills.d.ts.map +0 -1
  166. package/esm/base-template/theme-styles.d.ts +0 -74
  167. package/esm/base-template/theme-styles.d.ts.map +0 -1
  168. package/esm/bridge/adapters/base-adapter.d.ts +0 -104
  169. package/esm/bridge/adapters/base-adapter.d.ts.map +0 -1
  170. package/esm/bridge/adapters/claude.adapter.d.ts +0 -67
  171. package/esm/bridge/adapters/claude.adapter.d.ts.map +0 -1
  172. package/esm/bridge/adapters/ext-apps.adapter.d.ts +0 -143
  173. package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +0 -1
  174. package/esm/bridge/adapters/gemini.adapter.d.ts +0 -64
  175. package/esm/bridge/adapters/gemini.adapter.d.ts.map +0 -1
  176. package/esm/bridge/adapters/generic.adapter.d.ts +0 -56
  177. package/esm/bridge/adapters/generic.adapter.d.ts.map +0 -1
  178. package/esm/bridge/adapters/index.d.ts +0 -26
  179. package/esm/bridge/adapters/index.d.ts.map +0 -1
  180. package/esm/bridge/adapters/openai.adapter.d.ts +0 -65
  181. package/esm/bridge/adapters/openai.adapter.d.ts.map +0 -1
  182. package/esm/bridge/core/adapter-registry.d.ts +0 -122
  183. package/esm/bridge/core/adapter-registry.d.ts.map +0 -1
  184. package/esm/bridge/core/bridge-factory.d.ts +0 -199
  185. package/esm/bridge/core/bridge-factory.d.ts.map +0 -1
  186. package/esm/bridge/core/index.d.ts +0 -10
  187. package/esm/bridge/core/index.d.ts.map +0 -1
  188. package/esm/bridge/index.d.ts +0 -62
  189. package/esm/bridge/index.d.ts.map +0 -1
  190. package/esm/bridge/runtime/iife-generator.d.ts +0 -62
  191. package/esm/bridge/runtime/iife-generator.d.ts.map +0 -1
  192. package/esm/bridge/runtime/index.d.ts +0 -9
  193. package/esm/bridge/runtime/index.d.ts.map +0 -1
  194. package/esm/bridge/types.d.ts +0 -386
  195. package/esm/bridge/types.d.ts.map +0 -1
  196. package/esm/build/cdn-resources.d.ts +0 -243
  197. package/esm/build/cdn-resources.d.ts.map +0 -1
  198. package/esm/build/index.d.ts +0 -295
  199. package/esm/build/index.d.ts.map +0 -1
  200. package/esm/build/index.js +0 -7021
  201. package/esm/build/widget-manifest.d.ts +0 -362
  202. package/esm/build/widget-manifest.d.ts.map +0 -1
  203. package/esm/bundler/bundler.d.ts +0 -208
  204. package/esm/bundler/bundler.d.ts.map +0 -1
  205. package/esm/bundler/cache.d.ts +0 -173
  206. package/esm/bundler/cache.d.ts.map +0 -1
  207. package/esm/bundler/file-cache/component-builder.d.ts +0 -167
  208. package/esm/bundler/file-cache/component-builder.d.ts.map +0 -1
  209. package/esm/bundler/file-cache/hash-calculator.d.ts +0 -155
  210. package/esm/bundler/file-cache/hash-calculator.d.ts.map +0 -1
  211. package/esm/bundler/file-cache/index.d.ts +0 -12
  212. package/esm/bundler/file-cache/index.d.ts.map +0 -1
  213. package/esm/bundler/file-cache/storage/filesystem.d.ts +0 -149
  214. package/esm/bundler/file-cache/storage/filesystem.d.ts.map +0 -1
  215. package/esm/bundler/file-cache/storage/index.d.ts +0 -11
  216. package/esm/bundler/file-cache/storage/index.d.ts.map +0 -1
  217. package/esm/bundler/file-cache/storage/interface.d.ts +0 -152
  218. package/esm/bundler/file-cache/storage/interface.d.ts.map +0 -1
  219. package/esm/bundler/file-cache/storage/redis.d.ts +0 -139
  220. package/esm/bundler/file-cache/storage/redis.d.ts.map +0 -1
  221. package/esm/bundler/index.d.ts +0 -43
  222. package/esm/bundler/index.d.ts.map +0 -1
  223. package/esm/bundler/index.js +0 -4687
  224. package/esm/bundler/sandbox/enclave-adapter.d.ts +0 -121
  225. package/esm/bundler/sandbox/enclave-adapter.d.ts.map +0 -1
  226. package/esm/bundler/sandbox/executor.d.ts +0 -14
  227. package/esm/bundler/sandbox/executor.d.ts.map +0 -1
  228. package/esm/bundler/sandbox/policy.d.ts +0 -62
  229. package/esm/bundler/sandbox/policy.d.ts.map +0 -1
  230. package/esm/bundler/types.d.ts +0 -702
  231. package/esm/bundler/types.d.ts.map +0 -1
  232. package/esm/components/alert.d.ts +0 -66
  233. package/esm/components/alert.d.ts.map +0 -1
  234. package/esm/components/alert.schema.d.ts +0 -98
  235. package/esm/components/alert.schema.d.ts.map +0 -1
  236. package/esm/components/avatar.d.ts +0 -77
  237. package/esm/components/avatar.d.ts.map +0 -1
  238. package/esm/components/avatar.schema.d.ts +0 -170
  239. package/esm/components/avatar.schema.d.ts.map +0 -1
  240. package/esm/components/badge.d.ts +0 -64
  241. package/esm/components/badge.d.ts.map +0 -1
  242. package/esm/components/badge.schema.d.ts +0 -91
  243. package/esm/components/badge.schema.d.ts.map +0 -1
  244. package/esm/components/button.d.ts +0 -100
  245. package/esm/components/button.d.ts.map +0 -1
  246. package/esm/components/button.schema.d.ts +0 -120
  247. package/esm/components/button.schema.d.ts.map +0 -1
  248. package/esm/components/card.d.ts +0 -53
  249. package/esm/components/card.d.ts.map +0 -1
  250. package/esm/components/card.schema.d.ts +0 -93
  251. package/esm/components/card.schema.d.ts.map +0 -1
  252. package/esm/components/form.d.ts +0 -212
  253. package/esm/components/form.d.ts.map +0 -1
  254. package/esm/components/form.schema.d.ts +0 -365
  255. package/esm/components/form.schema.d.ts.map +0 -1
  256. package/esm/components/index.d.ts +0 -29
  257. package/esm/components/index.d.ts.map +0 -1
  258. package/esm/components/list.d.ts +0 -121
  259. package/esm/components/list.d.ts.map +0 -1
  260. package/esm/components/list.schema.d.ts +0 -129
  261. package/esm/components/list.schema.d.ts.map +0 -1
  262. package/esm/components/modal.d.ts +0 -100
  263. package/esm/components/modal.d.ts.map +0 -1
  264. package/esm/components/modal.schema.d.ts +0 -151
  265. package/esm/components/modal.schema.d.ts.map +0 -1
  266. package/esm/components/table.d.ts +0 -91
  267. package/esm/components/table.d.ts.map +0 -1
  268. package/esm/components/table.schema.d.ts +0 -123
  269. package/esm/components/table.schema.d.ts.map +0 -1
  270. package/esm/dependency/cdn-registry.d.ts +0 -98
  271. package/esm/dependency/cdn-registry.d.ts.map +0 -1
  272. package/esm/dependency/import-map.d.ts +0 -186
  273. package/esm/dependency/import-map.d.ts.map +0 -1
  274. package/esm/dependency/import-parser.d.ts +0 -82
  275. package/esm/dependency/import-parser.d.ts.map +0 -1
  276. package/esm/dependency/index.d.ts +0 -17
  277. package/esm/dependency/index.d.ts.map +0 -1
  278. package/esm/dependency/resolver.d.ts +0 -164
  279. package/esm/dependency/resolver.d.ts.map +0 -1
  280. package/esm/dependency/schemas.d.ts +0 -486
  281. package/esm/dependency/schemas.d.ts.map +0 -1
  282. package/esm/dependency/template-loader.d.ts +0 -204
  283. package/esm/dependency/template-loader.d.ts.map +0 -1
  284. package/esm/dependency/template-processor.d.ts +0 -118
  285. package/esm/dependency/template-processor.d.ts.map +0 -1
  286. package/esm/dependency/types.d.ts +0 -739
  287. package/esm/dependency/types.d.ts.map +0 -1
  288. package/esm/handlebars/expression-extractor.d.ts +0 -147
  289. package/esm/handlebars/expression-extractor.d.ts.map +0 -1
  290. package/esm/handlebars/helpers.d.ts +0 -339
  291. package/esm/handlebars/helpers.d.ts.map +0 -1
  292. package/esm/handlebars/index.d.ts +0 -195
  293. package/esm/handlebars/index.d.ts.map +0 -1
  294. package/esm/handlebars/index.js +0 -587
  295. package/esm/index.d.ts +0 -56
  296. package/esm/index.d.ts.map +0 -1
  297. package/esm/index.js +0 -20511
  298. package/esm/layouts/base.d.ts +0 -86
  299. package/esm/layouts/base.d.ts.map +0 -1
  300. package/esm/layouts/index.d.ts +0 -8
  301. package/esm/layouts/index.d.ts.map +0 -1
  302. package/esm/layouts/index.js +0 -892
  303. package/esm/layouts/presets.d.ts +0 -134
  304. package/esm/layouts/presets.d.ts.map +0 -1
  305. package/esm/pages/consent.d.ts +0 -117
  306. package/esm/pages/consent.d.ts.map +0 -1
  307. package/esm/pages/error.d.ts +0 -101
  308. package/esm/pages/error.d.ts.map +0 -1
  309. package/esm/pages/index.d.ts +0 -9
  310. package/esm/pages/index.d.ts.map +0 -1
  311. package/esm/pages/index.js +0 -1563
  312. package/esm/react/Alert.d.ts +0 -102
  313. package/esm/react/Alert.d.ts.map +0 -1
  314. package/esm/react/Badge.d.ts +0 -101
  315. package/esm/react/Badge.d.ts.map +0 -1
  316. package/esm/react/Button.d.ts +0 -109
  317. package/esm/react/Button.d.ts.map +0 -1
  318. package/esm/react/Card.d.ts +0 -104
  319. package/esm/react/Card.d.ts.map +0 -1
  320. package/esm/react/hooks/context.d.ts +0 -179
  321. package/esm/react/hooks/context.d.ts.map +0 -1
  322. package/esm/react/hooks/index.d.ts +0 -42
  323. package/esm/react/hooks/index.d.ts.map +0 -1
  324. package/esm/react/hooks/tools.d.ts +0 -284
  325. package/esm/react/hooks/tools.d.ts.map +0 -1
  326. package/esm/react/index.d.ts +0 -81
  327. package/esm/react/index.d.ts.map +0 -1
  328. package/esm/react/types.d.ts +0 -106
  329. package/esm/react/types.d.ts.map +0 -1
  330. package/esm/react/utils.d.ts +0 -43
  331. package/esm/react/utils.d.ts.map +0 -1
  332. package/esm/registry/index.d.ts +0 -46
  333. package/esm/registry/index.d.ts.map +0 -1
  334. package/esm/registry/index.js +0 -6422
  335. package/esm/registry/render-template.d.ts +0 -91
  336. package/esm/registry/render-template.d.ts.map +0 -1
  337. package/esm/registry/tool-ui.registry.d.ts +0 -294
  338. package/esm/registry/tool-ui.registry.d.ts.map +0 -1
  339. package/esm/registry/uri-utils.d.ts +0 -56
  340. package/esm/registry/uri-utils.d.ts.map +0 -1
  341. package/esm/render/index.d.ts +0 -8
  342. package/esm/render/index.d.ts.map +0 -1
  343. package/esm/render/prerender.d.ts +0 -57
  344. package/esm/render/prerender.d.ts.map +0 -1
  345. package/esm/renderers/cache.d.ts +0 -145
  346. package/esm/renderers/cache.d.ts.map +0 -1
  347. package/esm/renderers/html.renderer.d.ts +0 -123
  348. package/esm/renderers/html.renderer.d.ts.map +0 -1
  349. package/esm/renderers/index.d.ts +0 -36
  350. package/esm/renderers/index.d.ts.map +0 -1
  351. package/esm/renderers/index.js +0 -1827
  352. package/esm/renderers/mdx.renderer.d.ts +0 -120
  353. package/esm/renderers/mdx.renderer.d.ts.map +0 -1
  354. package/esm/renderers/react.renderer.d.ts +0 -96
  355. package/esm/renderers/react.renderer.d.ts.map +0 -1
  356. package/esm/renderers/registry.d.ts +0 -134
  357. package/esm/renderers/registry.d.ts.map +0 -1
  358. package/esm/renderers/types.d.ts +0 -342
  359. package/esm/renderers/types.d.ts.map +0 -1
  360. package/esm/renderers/utils/detect.d.ts +0 -107
  361. package/esm/renderers/utils/detect.d.ts.map +0 -1
  362. package/esm/renderers/utils/hash.d.ts +0 -40
  363. package/esm/renderers/utils/hash.d.ts.map +0 -1
  364. package/esm/renderers/utils/index.d.ts +0 -9
  365. package/esm/renderers/utils/index.d.ts.map +0 -1
  366. package/esm/renderers/utils/transpiler.d.ts +0 -89
  367. package/esm/renderers/utils/transpiler.d.ts.map +0 -1
  368. package/esm/runtime/adapters/html.adapter.d.ts +0 -59
  369. package/esm/runtime/adapters/html.adapter.d.ts.map +0 -1
  370. package/esm/runtime/adapters/index.d.ts +0 -26
  371. package/esm/runtime/adapters/index.d.ts.map +0 -1
  372. package/esm/runtime/adapters/mdx.adapter.d.ts +0 -73
  373. package/esm/runtime/adapters/mdx.adapter.d.ts.map +0 -1
  374. package/esm/runtime/adapters/react.adapter.d.ts.map +0 -1
  375. package/esm/runtime/adapters/types.d.ts +0 -95
  376. package/esm/runtime/adapters/types.d.ts.map +0 -1
  377. package/esm/runtime/csp.d.ts +0 -48
  378. package/esm/runtime/csp.d.ts.map +0 -1
  379. package/esm/runtime/index.d.ts +0 -17
  380. package/esm/runtime/index.d.ts.map +0 -1
  381. package/esm/runtime/index.js +0 -5186
  382. package/esm/runtime/mcp-bridge.d.ts +0 -101
  383. package/esm/runtime/mcp-bridge.d.ts.map +0 -1
  384. package/esm/runtime/renderer-runtime.d.ts +0 -133
  385. package/esm/runtime/renderer-runtime.d.ts.map +0 -1
  386. package/esm/runtime/sanitizer.d.ts +0 -172
  387. package/esm/runtime/sanitizer.d.ts.map +0 -1
  388. package/esm/runtime/types.d.ts +0 -415
  389. package/esm/runtime/types.d.ts.map +0 -1
  390. package/esm/runtime/wrapper.d.ts +0 -421
  391. package/esm/runtime/wrapper.d.ts.map +0 -1
  392. package/esm/styles/index.d.ts +0 -8
  393. package/esm/styles/index.d.ts.map +0 -1
  394. package/esm/styles/index.js +0 -171
  395. package/esm/styles/variants.d.ts +0 -51
  396. package/esm/styles/variants.d.ts.map +0 -1
  397. package/esm/theme/cdn.d.ts +0 -195
  398. package/esm/theme/cdn.d.ts.map +0 -1
  399. package/esm/theme/index.d.ts +0 -18
  400. package/esm/theme/index.d.ts.map +0 -1
  401. package/esm/theme/index.js +0 -700
  402. package/esm/theme/platforms.d.ts +0 -107
  403. package/esm/theme/platforms.d.ts.map +0 -1
  404. package/esm/theme/presets/github-openai.d.ts +0 -50
  405. package/esm/theme/presets/github-openai.d.ts.map +0 -1
  406. package/esm/theme/presets/index.d.ts +0 -11
  407. package/esm/theme/presets/index.d.ts.map +0 -1
  408. package/esm/theme/theme.d.ts +0 -396
  409. package/esm/theme/theme.d.ts.map +0 -1
  410. package/esm/tool-template/builder.d.ts +0 -213
  411. package/esm/tool-template/builder.d.ts.map +0 -1
  412. package/esm/tool-template/index.d.ts +0 -16
  413. package/esm/tool-template/index.d.ts.map +0 -1
  414. package/esm/tool-template/index.js +0 -3515
  415. package/esm/types/index.d.ts +0 -14
  416. package/esm/types/index.d.ts.map +0 -1
  417. package/esm/types/index.js +0 -75
  418. package/esm/types/ui-config.d.ts +0 -639
  419. package/esm/types/ui-config.d.ts.map +0 -1
  420. package/esm/types/ui-runtime.d.ts +0 -1007
  421. package/esm/types/ui-runtime.d.ts.map +0 -1
  422. package/esm/typings/cache/cache-adapter.d.ts +0 -125
  423. package/esm/typings/cache/cache-adapter.d.ts.map +0 -1
  424. package/esm/typings/cache/index.d.ts +0 -10
  425. package/esm/typings/cache/index.d.ts.map +0 -1
  426. package/esm/typings/cache/memory-cache.d.ts +0 -92
  427. package/esm/typings/cache/memory-cache.d.ts.map +0 -1
  428. package/esm/typings/dts-parser.d.ts +0 -90
  429. package/esm/typings/dts-parser.d.ts.map +0 -1
  430. package/esm/typings/index.d.ts +0 -48
  431. package/esm/typings/index.d.ts.map +0 -1
  432. package/esm/typings/schemas.d.ts +0 -232
  433. package/esm/typings/schemas.d.ts.map +0 -1
  434. package/esm/typings/type-fetcher.d.ts +0 -89
  435. package/esm/typings/type-fetcher.d.ts.map +0 -1
  436. package/esm/typings/types.d.ts +0 -320
  437. package/esm/typings/types.d.ts.map +0 -1
  438. package/esm/universal/UniversalApp.d.ts +0 -108
  439. package/esm/universal/UniversalApp.d.ts.map +0 -1
  440. package/esm/universal/cached-runtime.d.ts +0 -115
  441. package/esm/universal/cached-runtime.d.ts.map +0 -1
  442. package/esm/universal/context.d.ts +0 -122
  443. package/esm/universal/context.d.ts.map +0 -1
  444. package/esm/universal/index.d.ts +0 -57
  445. package/esm/universal/index.d.ts.map +0 -1
  446. package/esm/universal/renderers/html.renderer.d.ts +0 -37
  447. package/esm/universal/renderers/html.renderer.d.ts.map +0 -1
  448. package/esm/universal/renderers/index.d.ts +0 -112
  449. package/esm/universal/renderers/index.d.ts.map +0 -1
  450. package/esm/universal/renderers/markdown.renderer.d.ts +0 -33
  451. package/esm/universal/renderers/markdown.renderer.d.ts.map +0 -1
  452. package/esm/universal/renderers/mdx.renderer.d.ts +0 -38
  453. package/esm/universal/renderers/mdx.renderer.d.ts.map +0 -1
  454. package/esm/universal/renderers/react.renderer.d.ts +0 -46
  455. package/esm/universal/renderers/react.renderer.d.ts.map +0 -1
  456. package/esm/universal/runtime-builder.d.ts +0 -33
  457. package/esm/universal/runtime-builder.d.ts.map +0 -1
  458. package/esm/universal/store.d.ts +0 -135
  459. package/esm/universal/store.d.ts.map +0 -1
  460. package/esm/universal/types.d.ts +0 -199
  461. package/esm/universal/types.d.ts.map +0 -1
  462. package/esm/utils/escape-html.d.ts +0 -58
  463. package/esm/utils/escape-html.d.ts.map +0 -1
  464. package/esm/utils/index.d.ts +0 -10
  465. package/esm/utils/index.d.ts.map +0 -1
  466. package/esm/utils/index.js +0 -40
  467. package/esm/utils/safe-stringify.d.ts +0 -30
  468. package/esm/utils/safe-stringify.d.ts.map +0 -1
  469. package/esm/validation/error-box.d.ts +0 -56
  470. package/esm/validation/error-box.d.ts.map +0 -1
  471. package/esm/validation/index.d.ts +0 -13
  472. package/esm/validation/index.d.ts.map +0 -1
  473. package/esm/validation/index.js +0 -562
  474. package/esm/validation/schema-paths.d.ts +0 -118
  475. package/esm/validation/schema-paths.d.ts.map +0 -1
  476. package/esm/validation/template-validator.d.ts +0 -143
  477. package/esm/validation/template-validator.d.ts.map +0 -1
  478. package/esm/validation/wrapper.d.ts +0 -97
  479. package/esm/validation/wrapper.d.ts.map +0 -1
  480. package/esm/web-components/core/attribute-parser.d.ts +0 -82
  481. package/esm/web-components/core/attribute-parser.d.ts.map +0 -1
  482. package/esm/web-components/core/base-element.d.ts +0 -197
  483. package/esm/web-components/core/base-element.d.ts.map +0 -1
  484. package/esm/web-components/core/index.d.ts +0 -9
  485. package/esm/web-components/core/index.d.ts.map +0 -1
  486. package/esm/web-components/elements/fmcp-alert.d.ts +0 -46
  487. package/esm/web-components/elements/fmcp-alert.d.ts.map +0 -1
  488. package/esm/web-components/elements/fmcp-badge.d.ts +0 -47
  489. package/esm/web-components/elements/fmcp-badge.d.ts.map +0 -1
  490. package/esm/web-components/elements/fmcp-button.d.ts +0 -117
  491. package/esm/web-components/elements/fmcp-button.d.ts.map +0 -1
  492. package/esm/web-components/elements/fmcp-card.d.ts +0 -53
  493. package/esm/web-components/elements/fmcp-card.d.ts.map +0 -1
  494. package/esm/web-components/elements/fmcp-input.d.ts +0 -96
  495. package/esm/web-components/elements/fmcp-input.d.ts.map +0 -1
  496. package/esm/web-components/elements/fmcp-select.d.ts +0 -100
  497. package/esm/web-components/elements/fmcp-select.d.ts.map +0 -1
  498. package/esm/web-components/elements/index.d.ts +0 -13
  499. package/esm/web-components/elements/index.d.ts.map +0 -1
  500. package/esm/web-components/index.d.ts +0 -50
  501. package/esm/web-components/index.d.ts.map +0 -1
  502. package/esm/web-components/register.d.ts +0 -57
  503. package/esm/web-components/register.d.ts.map +0 -1
  504. package/esm/web-components/types.d.ts +0 -122
  505. package/esm/web-components/types.d.ts.map +0 -1
  506. package/esm/widgets/index.d.ts +0 -8
  507. package/esm/widgets/index.d.ts.map +0 -1
  508. package/esm/widgets/index.js +0 -941
  509. package/esm/widgets/progress.d.ts +0 -133
  510. package/esm/widgets/progress.d.ts.map +0 -1
  511. package/esm/widgets/resource.d.ts +0 -163
  512. package/esm/widgets/resource.d.ts.map +0 -1
  513. package/handlebars/expression-extractor.d.ts +0 -147
  514. package/handlebars/expression-extractor.d.ts.map +0 -1
  515. package/handlebars/helpers.d.ts +0 -339
  516. package/handlebars/helpers.d.ts.map +0 -1
  517. package/handlebars/index.d.ts +0 -195
  518. package/handlebars/index.d.ts.map +0 -1
  519. package/handlebars/index.js +0 -666
  520. package/pages/consent.d.ts +0 -117
  521. package/pages/consent.d.ts.map +0 -1
  522. package/pages/error.d.ts +0 -101
  523. package/pages/error.d.ts.map +0 -1
  524. package/pages/index.d.ts +0 -9
  525. package/pages/index.d.ts.map +0 -1
  526. package/pages/index.js +0 -1602
  527. package/react/utils.d.ts +0 -43
  528. package/react/utils.d.ts.map +0 -1
  529. package/registry/index.d.ts +0 -46
  530. package/registry/index.d.ts.map +0 -1
  531. package/registry/index.js +0 -6465
  532. package/registry/render-template.d.ts +0 -91
  533. package/registry/render-template.d.ts.map +0 -1
  534. package/registry/tool-ui.registry.d.ts +0 -294
  535. package/registry/tool-ui.registry.d.ts.map +0 -1
  536. package/registry/uri-utils.d.ts +0 -56
  537. package/registry/uri-utils.d.ts.map +0 -1
  538. package/renderers/cache.d.ts +0 -145
  539. package/renderers/cache.d.ts.map +0 -1
  540. package/renderers/html.renderer.d.ts +0 -123
  541. package/renderers/html.renderer.d.ts.map +0 -1
  542. package/renderers/registry.d.ts +0 -134
  543. package/renderers/registry.d.ts.map +0 -1
  544. package/renderers/types.d.ts +0 -342
  545. package/renderers/types.d.ts.map +0 -1
  546. package/renderers/utils/detect.d.ts +0 -107
  547. package/renderers/utils/detect.d.ts.map +0 -1
  548. package/renderers/utils/hash.d.ts +0 -40
  549. package/renderers/utils/hash.d.ts.map +0 -1
  550. package/renderers/utils/index.d.ts +0 -9
  551. package/renderers/utils/index.d.ts.map +0 -1
  552. package/renderers/utils/transpiler.d.ts +0 -89
  553. package/renderers/utils/transpiler.d.ts.map +0 -1
  554. package/runtime/adapters/html.adapter.d.ts +0 -59
  555. package/runtime/adapters/html.adapter.d.ts.map +0 -1
  556. package/runtime/adapters/index.d.ts +0 -26
  557. package/runtime/adapters/index.d.ts.map +0 -1
  558. package/runtime/adapters/mdx.adapter.d.ts +0 -73
  559. package/runtime/adapters/mdx.adapter.d.ts.map +0 -1
  560. package/runtime/adapters/react.adapter.d.ts +0 -70
  561. package/runtime/adapters/react.adapter.d.ts.map +0 -1
  562. package/runtime/adapters/types.d.ts +0 -95
  563. package/runtime/adapters/types.d.ts.map +0 -1
  564. package/runtime/csp.d.ts +0 -48
  565. package/runtime/csp.d.ts.map +0 -1
  566. package/runtime/index.d.ts +0 -17
  567. package/runtime/index.d.ts.map +0 -1
  568. package/runtime/index.js +0 -5264
  569. package/runtime/mcp-bridge.d.ts +0 -101
  570. package/runtime/mcp-bridge.d.ts.map +0 -1
  571. package/runtime/renderer-runtime.d.ts +0 -133
  572. package/runtime/renderer-runtime.d.ts.map +0 -1
  573. package/runtime/sanitizer.d.ts +0 -172
  574. package/runtime/sanitizer.d.ts.map +0 -1
  575. package/runtime/types.d.ts +0 -415
  576. package/runtime/types.d.ts.map +0 -1
  577. package/runtime/wrapper.d.ts +0 -421
  578. package/runtime/wrapper.d.ts.map +0 -1
  579. package/styles/index.d.ts +0 -8
  580. package/styles/index.d.ts.map +0 -1
  581. package/styles/index.js +0 -222
  582. package/styles/variants.d.ts +0 -51
  583. package/styles/variants.d.ts.map +0 -1
  584. package/theme/cdn.d.ts +0 -195
  585. package/theme/cdn.d.ts.map +0 -1
  586. package/theme/index.d.ts +0 -18
  587. package/theme/index.d.ts.map +0 -1
  588. package/theme/index.js +0 -757
  589. package/theme/platforms.d.ts +0 -107
  590. package/theme/platforms.d.ts.map +0 -1
  591. package/theme/presets/github-openai.d.ts +0 -50
  592. package/theme/presets/github-openai.d.ts.map +0 -1
  593. package/theme/presets/index.d.ts +0 -11
  594. package/theme/presets/index.d.ts.map +0 -1
  595. package/theme/theme.d.ts +0 -396
  596. package/theme/theme.d.ts.map +0 -1
  597. package/tool-template/builder.d.ts +0 -213
  598. package/tool-template/builder.d.ts.map +0 -1
  599. package/tool-template/index.d.ts +0 -16
  600. package/tool-template/index.d.ts.map +0 -1
  601. package/tool-template/index.js +0 -3559
  602. package/types/index.d.ts +0 -14
  603. package/types/index.d.ts.map +0 -1
  604. package/types/index.js +0 -108
  605. package/types/ui-config.d.ts +0 -639
  606. package/types/ui-config.d.ts.map +0 -1
  607. package/types/ui-runtime.d.ts +0 -1007
  608. package/types/ui-runtime.d.ts.map +0 -1
  609. package/typings/cache/cache-adapter.d.ts +0 -125
  610. package/typings/cache/cache-adapter.d.ts.map +0 -1
  611. package/typings/cache/index.d.ts +0 -10
  612. package/typings/cache/index.d.ts.map +0 -1
  613. package/typings/cache/memory-cache.d.ts +0 -92
  614. package/typings/cache/memory-cache.d.ts.map +0 -1
  615. package/typings/dts-parser.d.ts +0 -90
  616. package/typings/dts-parser.d.ts.map +0 -1
  617. package/typings/index.d.ts +0 -48
  618. package/typings/index.d.ts.map +0 -1
  619. package/typings/schemas.d.ts +0 -232
  620. package/typings/schemas.d.ts.map +0 -1
  621. package/typings/type-fetcher.d.ts +0 -89
  622. package/typings/type-fetcher.d.ts.map +0 -1
  623. package/typings/types.d.ts +0 -320
  624. package/typings/types.d.ts.map +0 -1
  625. package/utils/escape-html.d.ts +0 -58
  626. package/utils/escape-html.d.ts.map +0 -1
  627. package/utils/index.d.ts +0 -10
  628. package/utils/index.d.ts.map +0 -1
  629. package/utils/index.js +0 -70
  630. package/utils/safe-stringify.d.ts +0 -30
  631. package/utils/safe-stringify.d.ts.map +0 -1
  632. package/validation/error-box.d.ts +0 -56
  633. package/validation/error-box.d.ts.map +0 -1
  634. package/validation/index.d.ts +0 -13
  635. package/validation/index.d.ts.map +0 -1
  636. package/validation/index.js +0 -603
  637. package/validation/schema-paths.d.ts +0 -118
  638. package/validation/schema-paths.d.ts.map +0 -1
  639. package/validation/template-validator.d.ts +0 -143
  640. package/validation/template-validator.d.ts.map +0 -1
  641. package/validation/wrapper.d.ts +0 -97
  642. package/validation/wrapper.d.ts.map +0 -1
  643. package/widgets/index.d.ts +0 -8
  644. package/widgets/index.d.ts.map +0 -1
  645. package/widgets/index.js +0 -978
  646. package/widgets/progress.d.ts +0 -133
  647. package/widgets/progress.d.ts.map +0 -1
  648. package/widgets/resource.d.ts +0 -163
  649. package/widgets/resource.d.ts.map +0 -1
  650. /package/esm/render/{index.js → index.mjs} +0 -0
@@ -1,639 +0,0 @@
1
- /**
2
- * Standalone UI Configuration Types
3
- *
4
- * SDK-independent types for configuring UI templates.
5
- * These types can be used by external consumers (like AgentLink)
6
- * without requiring @frontmcp/sdk as a dependency.
7
- *
8
- * @packageDocumentation
9
- */
10
- import type { CDNDependency, FileBundleOptions } from '../dependency/types';
11
- /**
12
- * Content Security Policy for UI templates rendered in sandboxed iframes.
13
- * Based on OpenAI Apps SDK and MCP Apps (SEP-1865) specifications.
14
- */
15
- export interface UIContentSecurityPolicy {
16
- /**
17
- * Origins allowed for fetch/XHR/WebSocket connections.
18
- * Maps to CSP `connect-src` directive.
19
- * @example ['https://api.example.com', 'https://*.myservice.com']
20
- */
21
- connectDomains?: string[];
22
- /**
23
- * Origins allowed for images, scripts, fonts, and styles.
24
- * Maps to CSP `img-src`, `script-src`, `style-src`, `font-src` directives.
25
- * @example ['https://cdn.example.com']
26
- */
27
- resourceDomains?: string[];
28
- }
29
- /**
30
- * XSS protection and content security settings.
31
- *
32
- * Controls sanitization of HTML content rendered in widgets.
33
- * By default, strict sanitization is applied to prevent XSS attacks.
34
- *
35
- * ## Platform Isolation Context
36
- *
37
- * Both OpenAI and Claude render widgets in **double-iframe isolation**:
38
- *
39
- * ```
40
- * ┌─────────────────────────────────────────────────┐
41
- * │ ChatGPT / Claude Desktop │
42
- * │ ┌─────────────────────────────────────────────┐│
43
- * │ │ Outer Sandbox Iframe ││
44
- * │ │ - sandbox="allow-scripts allow-same-origin"││
45
- * │ │ - No access to parent cookies ││
46
- * │ │ ┌─────────────────────────────────────────┐││
47
- * │ │ │ Inner Widget Iframe │││
48
- * │ │ │ - CSP: script-src 'self' 'unsafe-inline'│││
49
- * │ │ │ - CSP: connect-src based on config │││
50
- * │ │ │ - Your widget HTML renders here │││
51
- * │ │ └─────────────────────────────────────────┘││
52
- * │ └─────────────────────────────────────────────┘│
53
- * └─────────────────────────────────────────────────┘
54
- * ```
55
- *
56
- * This isolation means XSS attacks are **contained** but can still:
57
- * - Access widget data (input/output)
58
- * - Make API calls within CSP-allowed domains
59
- * - Display fake/phishing UI to users
60
- *
61
- * **Recommendation:** Only disable protection for fully trusted content.
62
- */
63
- export interface UIContentSecurity {
64
- /**
65
- * Allow `javascript:` and other potentially dangerous URL schemes in links.
66
- *
67
- * When `false` (default), URLs are validated to only allow:
68
- * - `http://`, `https://` (web URLs)
69
- * - `/`, `#` (relative paths, anchors)
70
- * - `mailto:` (email links)
71
- *
72
- * When `true`, allows any URL scheme including:
73
- * - `javascript:` (inline script execution)
74
- * - `data:` (data URIs)
75
- * - `vbscript:` (legacy script)
76
- *
77
- * @default false
78
- */
79
- allowUnsafeLinks?: boolean;
80
- /**
81
- * Allow inline `<script>` tags and event handlers (onclick, onerror, etc).
82
- *
83
- * When `false` (default), HTML content is sanitized to remove:
84
- * - `<script>...</script>` tags
85
- * - Event handler attributes (`onclick`, `onerror`, `onload`, etc.)
86
- *
87
- * When `true`, these elements are preserved in the output.
88
- *
89
- * **Note:** Even with this enabled, CSP may still block script execution
90
- * depending on the platform's iframe sandbox settings.
91
- *
92
- * @default false
93
- */
94
- allowInlineScripts?: boolean;
95
- /**
96
- * Completely bypass all HTML sanitization.
97
- *
98
- * **⚠️ DANGEROUS:** Only use with fully trusted, server-generated content.
99
- *
100
- * When `true`, no sanitization is applied:
101
- * - Script tags are preserved
102
- * - Event handlers are preserved
103
- * - All URL schemes are allowed
104
- * - No HTML escaping is performed
105
- *
106
- * This is useful for:
107
- * - Embedding trusted third-party widgets
108
- * - Complex interactive dashboards from trusted sources
109
- * - Content that was pre-sanitized server-side
110
- *
111
- * @default false
112
- */
113
- bypassSanitization?: boolean;
114
- }
115
- /**
116
- * Helper functions available in template context.
117
- */
118
- export interface TemplateHelpers {
119
- /**
120
- * Escape HTML special characters to prevent XSS.
121
- */
122
- escapeHtml: (str: string) => string;
123
- /**
124
- * Format a date for display.
125
- * @param date - Date object or ISO string
126
- * @param format - Optional format (default: localized date)
127
- */
128
- formatDate: (date: Date | string, format?: string) => string;
129
- /**
130
- * Format a number as currency.
131
- * @param amount - The numeric amount
132
- * @param currency - ISO 4217 currency code (default: 'USD')
133
- */
134
- formatCurrency: (amount: number, currency?: string) => string;
135
- /**
136
- * Generate a unique ID for DOM elements.
137
- * @param prefix - Optional prefix for the ID
138
- */
139
- uniqueId: (prefix?: string) => string;
140
- /**
141
- * Safely embed JSON data in HTML (escapes script-breaking characters).
142
- */
143
- jsonEmbed: (data: unknown) => string;
144
- }
145
- /**
146
- * Context passed to template builder functions.
147
- * Contains all data needed to render a tool's UI template.
148
- */
149
- export interface TemplateContext<In = unknown, Out = unknown> {
150
- /**
151
- * The input arguments passed to the tool.
152
- */
153
- input: In;
154
- /**
155
- * The raw output returned by the tool's execute method.
156
- */
157
- output: Out;
158
- /**
159
- * The structured content parsed from the output (if outputSchema was provided).
160
- * This is the JSON-serializable form suitable for widget consumption.
161
- */
162
- structuredContent?: unknown;
163
- /**
164
- * Helper functions for template rendering.
165
- */
166
- helpers: TemplateHelpers;
167
- }
168
- /**
169
- * Template builder function type.
170
- * Receives context with input/output and returns HTML string.
171
- */
172
- export type TemplateBuilderFn<In = unknown, Out = unknown> = (ctx: TemplateContext<In, Out>) => string;
173
- /**
174
- * Widget serving mode determines how the widget HTML is delivered to the client.
175
- *
176
- * - `'auto'` (default): Automatically select mode based on client capabilities.
177
- * For OpenAI/ext-apps: uses 'inline'. For Claude: uses 'inline' with dual-payload.
178
- * For unsupported clients (e.g., Gemini): skips UI entirely (returns JSON only).
179
- *
180
- * - `'inline'`: HTML embedded directly in tool response `_meta['ui/html']`.
181
- * Works on all platforms including network-blocked ones.
182
- *
183
- * - `'static'`: Pre-compiled at startup, resolved via `tools/list` (ui:// resource URI).
184
- * Widget is fetched via MCP `resources/read`.
185
- *
186
- * - `'hybrid'`: Shell (React runtime + bridge) pre-compiled at startup.
187
- * Component code transpiled per-request and delivered in `_meta['ui/component']`.
188
- *
189
- * - `'direct-url'`: HTTP endpoint on MCP server.
190
- *
191
- * - `'custom-url'`: Custom URL (CDN or external hosting).
192
- */
193
- export type WidgetServingMode = 'auto' | 'inline' | 'static' | 'hybrid' | 'direct-url' | 'custom-url';
194
- /**
195
- * @deprecated Use 'static' instead of 'mcp-resource'. Will be removed in v2.0.
196
- * Alias maintained for backwards compatibility.
197
- */
198
- export type WidgetServingModeLegacy = 'mcp-resource';
199
- /**
200
- * Widget display mode preference.
201
- */
202
- export type WidgetDisplayMode = 'inline' | 'fullscreen' | 'pip';
203
- /**
204
- * UI template configuration for tools.
205
- * Enables rendering interactive widgets for tool responses in supported hosts
206
- * (OpenAI Apps SDK, Claude/MCP-UI, etc.).
207
- *
208
- * This is a standalone type that doesn't depend on @frontmcp/sdk.
209
- * Use this type in external systems (like AgentLink) that consume @frontmcp/ui.
210
- *
211
- * @example
212
- * ```typescript
213
- * const uiConfig: UITemplateConfig = {
214
- * template: (ctx) => `
215
- * <div class="p-4">
216
- * <h2>${ctx.helpers.escapeHtml(ctx.input.location)}</h2>
217
- * <p>${ctx.output.temperature}°F</p>
218
- * </div>
219
- * `,
220
- * csp: { connectDomains: ['https://api.weather.com'] },
221
- * widgetAccessible: true,
222
- * widgetDescription: 'Displays current weather conditions',
223
- * };
224
- * ```
225
- */
226
- export interface UITemplateConfig<In = unknown, Out = unknown> {
227
- /**
228
- * Template for rendering tool UI.
229
- *
230
- * Supports multiple formats (auto-detected by renderer):
231
- * - Template builder function: `(ctx) => string` - receives input/output/helpers, returns HTML
232
- * - Static HTML/MDX string: `"<div>...</div>"` or `"# Title\n<Card />"`
233
- * - React component: `MyWidget` - receives props with input/output/helpers
234
- */
235
- template: TemplateBuilderFn<In, Out> | string | ((props: any) => any);
236
- /**
237
- * Content Security Policy for the sandboxed widget.
238
- * Controls which external resources the widget can access.
239
- */
240
- csp?: UIContentSecurityPolicy;
241
- /**
242
- * Content security and XSS protection settings.
243
- *
244
- * By default, FrontMCP sanitizes HTML content to prevent XSS attacks:
245
- * - Removes `<script>` tags and event handlers (onclick, onerror, etc.)
246
- * - Validates URL schemes in links (blocks `javascript:`, `data:`, `vbscript:`)
247
- *
248
- * These protections can be disabled for trusted content that requires
249
- * inline scripts, custom event handlers, or special URL schemes.
250
- *
251
- * ## Security Context
252
- *
253
- * **OpenAI/Claude run widgets in double-iframe isolation:**
254
- * - Outer sandbox iframe with restricted permissions
255
- * - Inner content iframe with CSP headers
256
- * - No access to parent window or cookies
257
- * - Network requests restricted by CSP
258
- *
259
- * This isolation provides defense-in-depth, making XSS less impactful.
260
- * However, XSS can still:
261
- * - Steal widget state/data
262
- * - Make unauthorized API calls (within CSP limits)
263
- * - Phish users with fake UI
264
- *
265
- * **Best Practice:** Keep XSS protection enabled unless you have a specific
266
- * need for inline scripts/handlers AND trust your content source completely.
267
- *
268
- * @example
269
- * ```typescript
270
- * // Default: Full XSS protection
271
- * ui: { template: MyWidget }
272
- *
273
- * // Allow inline scripts for trusted dashboard
274
- * ui: {
275
- * template: TrustedDashboard,
276
- * contentSecurity: { allowInlineScripts: true }
277
- * }
278
- *
279
- * // Bypass all sanitization for fully trusted HTML
280
- * ui: {
281
- * template: FullyTrustedContent,
282
- * contentSecurity: { bypassSanitization: true }
283
- * }
284
- * ```
285
- */
286
- contentSecurity?: UIContentSecurity;
287
- /**
288
- * Whether the widget can invoke tools via the MCP bridge.
289
- * When true, the widget gains access to `window.mcpBridge.callTool()`.
290
- * Maps to OpenAI's `openai/widgetAccessible` annotation.
291
- *
292
- * Default: false
293
- */
294
- widgetAccessible?: boolean;
295
- /**
296
- * Preferred display mode for the widget.
297
- * - 'inline': Rendered inline in the conversation (default)
298
- * - 'fullscreen': Request fullscreen display
299
- * - 'pip': Picture-in-picture mode
300
- *
301
- * Note: Host may not support all modes; this is a preference hint.
302
- */
303
- displayMode?: WidgetDisplayMode;
304
- /**
305
- * Human-readable description shown to users about what the widget does.
306
- * Maps to OpenAI's `openai/widgetDescription` annotation.
307
- */
308
- widgetDescription?: string;
309
- /**
310
- * Status messages shown during tool invocation (OpenAI ChatGPT specific).
311
- * Maps to OpenAI's `openai/toolInvocation/invoking` and `openai/toolInvocation/invoked`.
312
- *
313
- * @example
314
- * ```typescript
315
- * invocationStatus: {
316
- * invoking: 'Fetching weather data...',
317
- * invoked: 'Weather data loaded'
318
- * }
319
- * ```
320
- */
321
- invocationStatus?: {
322
- /** Status text shown while tool is executing */
323
- invoking?: string;
324
- /** Status text shown after tool execution completes */
325
- invoked?: string;
326
- };
327
- /**
328
- * How the widget HTML should be served to the client.
329
- *
330
- * - `'auto'` (default): Automatically select mode based on client capabilities.
331
- * For OpenAI/ext-apps clients: uses `'inline'` with `_meta`.
332
- * For Claude clients: uses `'inline'` with dual-payload format.
333
- * For unsupported clients (Gemini, unknown): skips UI (returns JSON only).
334
- *
335
- * - `'inline'`: HTML embedded directly in tool response `_meta['ui/html']`.
336
- * Best for small widgets, works on all platforms including network-blocked ones.
337
- *
338
- * - `'static'`: Widget pre-compiled at server startup, registered as MCP resource with `ui://` URI.
339
- * Client fetches via `resources/read`. Good for OpenAI's template system.
340
- * Widget is resolved during `tools/list`, not dependent on tool call.
341
- *
342
- * - `'hybrid'`: Shell (React runtime + bridge) pre-compiled at startup.
343
- * Component code transpiled per-request and delivered in `_meta['ui/component']`.
344
- *
345
- * - `'direct-url'`: Served from MCP server's HTTP endpoint.
346
- * Avoids third-party cookie issues since widget loads from same domain.
347
- *
348
- * - `'custom-url'`: Served from a custom URL (CDN, external hosting).
349
- * Requires `customWidgetUrl` to be set.
350
- *
351
- * @default 'auto'
352
- */
353
- servingMode?: WidgetServingMode;
354
- /**
355
- * Custom URL for widget serving when `servingMode: 'custom-url'`.
356
- * The URL can include `{token}` placeholder which will be replaced with
357
- * the widget access token.
358
- *
359
- * @example
360
- * ```typescript
361
- * customWidgetUrl: 'https://cdn.example.com/widgets/weather.html?token={token}'
362
- * ```
363
- */
364
- customWidgetUrl?: string;
365
- /**
366
- * Path for direct URL serving when `servingMode: 'direct-url'`.
367
- * This path is appended to the MCP server's base URL.
368
- *
369
- * @example
370
- * ```typescript
371
- * directPath: '/widgets/weather'
372
- * // Results in: https://mcp-server.example.com/widgets/weather?token=...
373
- * ```
374
- */
375
- directPath?: string;
376
- /**
377
- * Custom React components available in MDX templates.
378
- * These components can be used directly in MDX content without importing.
379
- *
380
- * @example
381
- * ```typescript
382
- * ui: {
383
- * template: `# Weather\n<Alert type="info">Data loaded</Alert>`,
384
- * mdxComponents: {
385
- * Alert: ({ type, children }) => <div className={type}>{children}</div>,
386
- * Card: MyCardComponent,
387
- * }
388
- * }
389
- * ```
390
- */
391
- mdxComponents?: Record<string, any>;
392
- /**
393
- * Whether to show a border around the UI widget.
394
- * MCP Apps spec: `_meta.ui.prefersBorder`
395
- *
396
- * When true, hosts should render a visible border around the sandbox iframe.
397
- * Useful for visual clarity when the widget content doesn't have its own borders.
398
- *
399
- * Default: undefined (host decides)
400
- */
401
- prefersBorder?: boolean;
402
- /**
403
- * Dedicated sandbox domain for the widget.
404
- * MCP Apps spec: `_meta.ui.domain`
405
- *
406
- * When specified, the host should load the widget in an iframe with this
407
- * domain as the origin, providing additional isolation.
408
- *
409
- * @example 'sandbox.example.com'
410
- */
411
- sandboxDomain?: string;
412
- /**
413
- * Enable client-side React hydration after server-side rendering (SSR).
414
- *
415
- * **Default: `false`**
416
- *
417
- * When `false` (default):
418
- * - SSR output is static HTML
419
- * - No React runtime is loaded on the client
420
- * - All interactivity is handled by the FrontMCP Bridge IIFE
421
- * - This prevents React Hydration Error #418 in MCP clients
422
- *
423
- * When `true`:
424
- * - React/ReactDOM CDN scripts are included
425
- * - Client attempts to hydrate React components
426
- * - May cause hydration mismatch errors in some MCP clients (Claude, ChatGPT)
427
- *
428
- * **Why disabled by default?**
429
- * MCP clients like Claude and ChatGPT render HTML in sandboxed iframes.
430
- * React hydration expects the client-rendered HTML to exactly match the
431
- * server-rendered HTML. Due to timing differences, random data, and
432
- * different execution contexts, mismatches frequently occur causing
433
- * React Error #418 ("Hydration failed...").
434
- *
435
- * The FrontMCP Bridge IIFE already provides all necessary interactivity
436
- * (tool calls via `data-tool-call`, state updates, loading states) without
437
- * requiring React hydration.
438
- *
439
- * **Only enable if:**
440
- * - You need React state management on the client
441
- * - You're sure your template produces deterministic HTML
442
- * - You've tested hydration works in your target MCP client
443
- *
444
- * @example
445
- * ```typescript
446
- * // Disable hydration (default behavior - recommended)
447
- * ui: {
448
- * template: MyReactComponent,
449
- * hydrate: false
450
- * }
451
- *
452
- * // Enable hydration (use with caution)
453
- * ui: {
454
- * template: MyStatefulComponent,
455
- * hydrate: true
456
- * }
457
- * ```
458
- */
459
- hydrate?: boolean;
460
- /**
461
- * UI renderer type.
462
- *
463
- * - `'html'`: HTML with optional Handlebars
464
- * - `'react'`: React component (SSR)
465
- * - `'mdx'`: MDX template
466
- * - `'markdown'`: Pure Markdown
467
- * - `'auto'`: Auto-detect from template (default)
468
- *
469
- * @default 'auto'
470
- */
471
- uiType?: 'html' | 'react' | 'mdx' | 'markdown' | 'auto';
472
- /**
473
- * Bundling mode.
474
- *
475
- * - `'static'`: Pre-compile widget shell, inject data at runtime (default)
476
- * - `'dynamic'`: Generate fresh HTML per tool invocation
477
- *
478
- * @default 'static'
479
- */
480
- bundlingMode?: 'static' | 'dynamic';
481
- /**
482
- * Resource loading mode.
483
- *
484
- * - `'cdn'`: Load React/MDX/Handlebars from CDN URLs (lightweight)
485
- * - `'inline'`: Embed all scripts in HTML (self-contained)
486
- *
487
- * Use 'cdn' for most platforms (OpenAI, ChatGPT, Cursor).
488
- * Use 'inline' for network-blocked environments (Claude Artifacts).
489
- *
490
- * @default 'cdn'
491
- */
492
- resourceMode?: 'cdn' | 'inline';
493
- /**
494
- * Runtime options for specific renderers.
495
- */
496
- runtimeOptions?: {
497
- /** Enable React hydration after SSR */
498
- hydrate?: boolean;
499
- /** Markdown rendering options */
500
- markdown?: {
501
- /** Enable GitHub-flavored markdown */
502
- gfm?: boolean;
503
- /** Syntax highlighting theme */
504
- highlightTheme?: string;
505
- };
506
- };
507
- /**
508
- * Prefix text shown before HTML in dual-payload responses (Claude).
509
- *
510
- * When the output mode is `'dual-payload'` (auto-detected for Claude clients),
511
- * the tool response contains two TextContent blocks:
512
- * 1. Pure JSON data: `{"temperature": 72, ...}`
513
- * 2. Markdown-wrapped HTML: `{prefix}:\n\n```html\n<!DOCTYPE html>...\n```
514
- *
515
- * This field controls the prefix text in block 2.
516
- *
517
- * @default 'Here is the visual result'
518
- *
519
- * @example
520
- * ```typescript
521
- * // Weather tool
522
- * ui: {
523
- * template: WeatherWidget,
524
- * htmlResponsePrefix: 'Here is the weather dashboard',
525
- * }
526
- * // Output block 2: "Here is the weather dashboard:\n\n```html\n..."
527
- *
528
- * // Stock tool
529
- * ui: {
530
- * template: StockWidget,
531
- * htmlResponsePrefix: 'Here is the stock information',
532
- * }
533
- * // Output block 2: "Here is the stock information:\n\n```html\n..."
534
- * ```
535
- */
536
- htmlResponsePrefix?: string;
537
- /**
538
- * Packages to load from CDN instead of bundling.
539
- *
540
- * When `template` is a file path (e.g., `'./chart-widget.tsx'`), imports
541
- * of these packages will be excluded from the bundle and loaded at runtime
542
- * via CDN import maps.
543
- *
544
- * Package names should match npm package names. The CDN URL is resolved
545
- * from the built-in CDN registry or from explicit `dependencies` overrides.
546
- *
547
- * **Platform considerations:**
548
- * - Claude only allows `cdnjs.cloudflare.com` (blocked network)
549
- * - OpenAI/Cursor/other platforms can use any CDN
550
- *
551
- * @example
552
- * ```typescript
553
- * // Auto-resolved from CDN registry
554
- * ui: {
555
- * template: './chart-widget.tsx',
556
- * externals: ['chart.js', 'react-chartjs-2'],
557
- * }
558
- *
559
- * // With explicit override
560
- * ui: {
561
- * template: './chart-widget.tsx',
562
- * externals: ['chart.js'],
563
- * dependencies: {
564
- * 'chart.js': {
565
- * url: 'https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.min.js',
566
- * integrity: 'sha512-...',
567
- * global: 'Chart',
568
- * },
569
- * },
570
- * }
571
- * ```
572
- */
573
- externals?: string[];
574
- /**
575
- * Explicit CDN dependency overrides for external packages.
576
- *
577
- * Use this to specify custom CDN URLs or override the default CDN registry
578
- * entries for packages listed in `externals`.
579
- *
580
- * Keys are npm package names. Values specify the CDN URL, integrity hash,
581
- * and other loading options.
582
- *
583
- * @example
584
- * ```typescript
585
- * ui: {
586
- * template: './dashboard.tsx',
587
- * externals: ['d3', 'lodash'],
588
- * dependencies: {
589
- * 'd3': {
590
- * url: 'https://cdnjs.cloudflare.com/ajax/libs/d3/7.8.5/d3.min.js',
591
- * integrity: 'sha512-...',
592
- * global: 'd3',
593
- * },
594
- * 'lodash': {
595
- * url: 'https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js',
596
- * global: '_',
597
- * },
598
- * },
599
- * }
600
- * ```
601
- */
602
- dependencies?: Record<string, CDNDependency>;
603
- /**
604
- * Bundle options for file-based templates.
605
- *
606
- * Controls how the file-based template is compiled and bundled.
607
- * These options are only used when `template` is a file path.
608
- *
609
- * @example
610
- * ```typescript
611
- * // Development mode
612
- * ui: {
613
- * template: './debug-widget.tsx',
614
- * bundleOptions: {
615
- * minify: false,
616
- * sourceMaps: true,
617
- * target: 'esnext',
618
- * },
619
- * }
620
- *
621
- * // Production mode (defaults)
622
- * ui: {
623
- * template: './widget.tsx',
624
- * bundleOptions: {
625
- * minify: true,
626
- * treeShake: true,
627
- * target: 'es2020',
628
- * },
629
- * }
630
- * ```
631
- */
632
- fileBundleOptions?: FileBundleOptions;
633
- }
634
- /**
635
- * Type alias for backwards compatibility.
636
- * Prefer using UITemplateConfig directly.
637
- */
638
- export type UITemplate<In = unknown, Out = unknown> = UITemplateConfig<In, Out>;
639
- //# sourceMappingURL=ui-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ui-config.d.ts","sourceRoot":"","sources":["../../../src/types/ui-config.ts"],"names":[],"mappings":"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"}