@frontmcp/ui 0.5.1 → 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.
Files changed (805) hide show
  1. package/README.md +140 -362
  2. package/bridge/adapters/base-adapter.d.ts +104 -0
  3. package/bridge/adapters/base-adapter.d.ts.map +1 -0
  4. package/bridge/adapters/claude.adapter.d.ts +67 -0
  5. package/bridge/adapters/claude.adapter.d.ts.map +1 -0
  6. package/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  7. package/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  8. package/bridge/adapters/gemini.adapter.d.ts +64 -0
  9. package/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  10. package/bridge/adapters/generic.adapter.d.ts +56 -0
  11. package/bridge/adapters/generic.adapter.d.ts.map +1 -0
  12. package/bridge/adapters/index.d.ts +26 -0
  13. package/bridge/adapters/index.d.ts.map +1 -0
  14. package/bridge/adapters/openai.adapter.d.ts +65 -0
  15. package/bridge/adapters/openai.adapter.d.ts.map +1 -0
  16. package/bridge/core/adapter-registry.d.ts +122 -0
  17. package/bridge/core/adapter-registry.d.ts.map +1 -0
  18. package/bridge/core/bridge-factory.d.ts +199 -0
  19. package/bridge/core/bridge-factory.d.ts.map +1 -0
  20. package/bridge/core/index.d.ts +10 -0
  21. package/bridge/core/index.d.ts.map +1 -0
  22. package/bridge/index.d.ts +62 -0
  23. package/bridge/index.d.ts.map +1 -0
  24. package/bridge/index.js +2540 -0
  25. package/bridge/runtime/iife-generator.d.ts +62 -0
  26. package/bridge/runtime/iife-generator.d.ts.map +1 -0
  27. package/bridge/runtime/index.d.ts +10 -0
  28. package/bridge/runtime/index.d.ts.map +1 -0
  29. package/bridge/types.d.ts +386 -0
  30. package/bridge/types.d.ts.map +1 -0
  31. package/bundler/bundler.d.ts +208 -0
  32. package/bundler/bundler.d.ts.map +1 -0
  33. package/bundler/cache.d.ts +173 -0
  34. package/bundler/cache.d.ts.map +1 -0
  35. package/bundler/file-cache/component-builder.d.ts +167 -0
  36. package/bundler/file-cache/component-builder.d.ts.map +1 -0
  37. package/bundler/file-cache/hash-calculator.d.ts +155 -0
  38. package/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  39. package/bundler/file-cache/index.d.ts +12 -0
  40. package/bundler/file-cache/index.d.ts.map +1 -0
  41. package/bundler/file-cache/storage/filesystem.d.ts +149 -0
  42. package/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  43. package/bundler/file-cache/storage/index.d.ts +11 -0
  44. package/bundler/file-cache/storage/index.d.ts.map +1 -0
  45. package/bundler/file-cache/storage/interface.d.ts +152 -0
  46. package/bundler/file-cache/storage/interface.d.ts.map +1 -0
  47. package/bundler/file-cache/storage/redis.d.ts +139 -0
  48. package/bundler/file-cache/storage/redis.d.ts.map +1 -0
  49. package/bundler/index.d.ts +43 -0
  50. package/bundler/index.d.ts.map +1 -0
  51. package/bundler/index.js +3707 -0
  52. package/bundler/sandbox/enclave-adapter.d.ts +121 -0
  53. package/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  54. package/bundler/sandbox/executor.d.ts +14 -0
  55. package/bundler/sandbox/executor.d.ts.map +1 -0
  56. package/bundler/sandbox/policy.d.ts +62 -0
  57. package/bundler/sandbox/policy.d.ts.map +1 -0
  58. package/bundler/types.d.ts +702 -0
  59. package/bundler/types.d.ts.map +1 -0
  60. package/components/alert.d.ts +66 -0
  61. package/components/alert.d.ts.map +1 -0
  62. package/components/alert.schema.d.ts +98 -0
  63. package/components/alert.schema.d.ts.map +1 -0
  64. package/components/avatar.d.ts +77 -0
  65. package/components/avatar.d.ts.map +1 -0
  66. package/components/avatar.schema.d.ts +170 -0
  67. package/components/avatar.schema.d.ts.map +1 -0
  68. package/components/badge.d.ts +64 -0
  69. package/components/badge.d.ts.map +1 -0
  70. package/components/badge.schema.d.ts +91 -0
  71. package/components/badge.schema.d.ts.map +1 -0
  72. package/components/button.d.ts +100 -0
  73. package/components/button.d.ts.map +1 -0
  74. package/components/button.schema.d.ts +120 -0
  75. package/components/button.schema.d.ts.map +1 -0
  76. package/components/card.d.ts +53 -0
  77. package/components/card.d.ts.map +1 -0
  78. package/components/card.schema.d.ts +93 -0
  79. package/components/card.schema.d.ts.map +1 -0
  80. package/components/form.d.ts +212 -0
  81. package/components/form.d.ts.map +1 -0
  82. package/components/form.schema.d.ts +365 -0
  83. package/components/form.schema.d.ts.map +1 -0
  84. package/components/index.d.ts +29 -0
  85. package/components/index.d.ts.map +1 -0
  86. package/components/index.js +2525 -0
  87. package/components/list.d.ts +121 -0
  88. package/components/list.d.ts.map +1 -0
  89. package/components/list.schema.d.ts +129 -0
  90. package/components/list.schema.d.ts.map +1 -0
  91. package/components/modal.d.ts +100 -0
  92. package/components/modal.d.ts.map +1 -0
  93. package/components/modal.schema.d.ts +151 -0
  94. package/components/modal.schema.d.ts.map +1 -0
  95. package/components/table.d.ts +91 -0
  96. package/components/table.d.ts.map +1 -0
  97. package/components/table.schema.d.ts +123 -0
  98. package/components/table.schema.d.ts.map +1 -0
  99. package/esm/bridge/adapters/base-adapter.d.ts +104 -0
  100. package/esm/bridge/adapters/base-adapter.d.ts.map +1 -0
  101. package/esm/bridge/adapters/claude.adapter.d.ts +67 -0
  102. package/esm/bridge/adapters/claude.adapter.d.ts.map +1 -0
  103. package/esm/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  104. package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  105. package/esm/bridge/adapters/gemini.adapter.d.ts +64 -0
  106. package/esm/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  107. package/esm/bridge/adapters/generic.adapter.d.ts +56 -0
  108. package/esm/bridge/adapters/generic.adapter.d.ts.map +1 -0
  109. package/esm/bridge/adapters/index.d.ts +26 -0
  110. package/esm/bridge/adapters/index.d.ts.map +1 -0
  111. package/esm/bridge/adapters/openai.adapter.d.ts +65 -0
  112. package/esm/bridge/adapters/openai.adapter.d.ts.map +1 -0
  113. package/esm/bridge/core/adapter-registry.d.ts +122 -0
  114. package/esm/bridge/core/adapter-registry.d.ts.map +1 -0
  115. package/esm/bridge/core/bridge-factory.d.ts +199 -0
  116. package/esm/bridge/core/bridge-factory.d.ts.map +1 -0
  117. package/esm/bridge/core/index.d.ts +10 -0
  118. package/esm/bridge/core/index.d.ts.map +1 -0
  119. package/esm/bridge/index.d.ts +62 -0
  120. package/esm/bridge/index.d.ts.map +1 -0
  121. package/esm/bridge/index.js +2487 -0
  122. package/esm/bridge/runtime/iife-generator.d.ts +62 -0
  123. package/esm/bridge/runtime/iife-generator.d.ts.map +1 -0
  124. package/esm/bridge/runtime/index.d.ts +10 -0
  125. package/esm/bridge/runtime/index.d.ts.map +1 -0
  126. package/esm/bridge/types.d.ts +386 -0
  127. package/esm/bridge/types.d.ts.map +1 -0
  128. package/esm/bundler/bundler.d.ts +208 -0
  129. package/esm/bundler/bundler.d.ts.map +1 -0
  130. package/esm/bundler/cache.d.ts +173 -0
  131. package/esm/bundler/cache.d.ts.map +1 -0
  132. package/esm/bundler/file-cache/component-builder.d.ts +167 -0
  133. package/esm/bundler/file-cache/component-builder.d.ts.map +1 -0
  134. package/esm/bundler/file-cache/hash-calculator.d.ts +155 -0
  135. package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  136. package/esm/bundler/file-cache/index.d.ts +12 -0
  137. package/esm/bundler/file-cache/index.d.ts.map +1 -0
  138. package/esm/bundler/file-cache/storage/filesystem.d.ts +149 -0
  139. package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  140. package/esm/bundler/file-cache/storage/index.d.ts +11 -0
  141. package/esm/bundler/file-cache/storage/index.d.ts.map +1 -0
  142. package/esm/bundler/file-cache/storage/interface.d.ts +152 -0
  143. package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -0
  144. package/esm/bundler/file-cache/storage/redis.d.ts +139 -0
  145. package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -0
  146. package/esm/bundler/index.d.ts +43 -0
  147. package/esm/bundler/index.d.ts.map +1 -0
  148. package/esm/bundler/index.js +3640 -0
  149. package/esm/bundler/sandbox/enclave-adapter.d.ts +121 -0
  150. package/esm/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  151. package/esm/bundler/sandbox/executor.d.ts +14 -0
  152. package/esm/bundler/sandbox/executor.d.ts.map +1 -0
  153. package/esm/bundler/sandbox/policy.d.ts +62 -0
  154. package/esm/bundler/sandbox/policy.d.ts.map +1 -0
  155. package/esm/bundler/types.d.ts +702 -0
  156. package/esm/bundler/types.d.ts.map +1 -0
  157. package/esm/components/alert.d.ts +66 -0
  158. package/esm/components/alert.d.ts.map +1 -0
  159. package/esm/components/alert.schema.d.ts +98 -0
  160. package/esm/components/alert.schema.d.ts.map +1 -0
  161. package/esm/components/avatar.d.ts +77 -0
  162. package/esm/components/avatar.d.ts.map +1 -0
  163. package/esm/components/avatar.schema.d.ts +170 -0
  164. package/esm/components/avatar.schema.d.ts.map +1 -0
  165. package/esm/components/badge.d.ts +64 -0
  166. package/esm/components/badge.d.ts.map +1 -0
  167. package/esm/components/badge.schema.d.ts +91 -0
  168. package/esm/components/badge.schema.d.ts.map +1 -0
  169. package/esm/components/button.d.ts +100 -0
  170. package/esm/components/button.d.ts.map +1 -0
  171. package/esm/components/button.schema.d.ts +120 -0
  172. package/esm/components/button.schema.d.ts.map +1 -0
  173. package/esm/components/card.d.ts +53 -0
  174. package/esm/components/card.d.ts.map +1 -0
  175. package/esm/components/card.schema.d.ts +93 -0
  176. package/esm/components/card.schema.d.ts.map +1 -0
  177. package/esm/components/form.d.ts +212 -0
  178. package/esm/components/form.d.ts.map +1 -0
  179. package/esm/components/form.schema.d.ts +365 -0
  180. package/esm/components/form.schema.d.ts.map +1 -0
  181. package/esm/components/index.d.ts +29 -0
  182. package/esm/components/index.d.ts.map +1 -0
  183. package/esm/components/index.js +2396 -0
  184. package/esm/components/list.d.ts +121 -0
  185. package/esm/components/list.d.ts.map +1 -0
  186. package/esm/components/list.schema.d.ts +129 -0
  187. package/esm/components/list.schema.d.ts.map +1 -0
  188. package/esm/components/modal.d.ts +100 -0
  189. package/esm/components/modal.d.ts.map +1 -0
  190. package/esm/components/modal.schema.d.ts +151 -0
  191. package/esm/components/modal.schema.d.ts.map +1 -0
  192. package/esm/components/table.d.ts +91 -0
  193. package/esm/components/table.d.ts.map +1 -0
  194. package/esm/components/table.schema.d.ts +123 -0
  195. package/esm/components/table.schema.d.ts.map +1 -0
  196. package/esm/index.d.ts +40 -0
  197. package/esm/index.d.ts.map +1 -0
  198. package/esm/index.js +8326 -0
  199. package/esm/layouts/base.d.ts +86 -0
  200. package/esm/layouts/base.d.ts.map +1 -0
  201. package/esm/layouts/index.d.ts +8 -0
  202. package/esm/layouts/index.d.ts.map +1 -0
  203. package/esm/layouts/index.js +409 -0
  204. package/esm/layouts/presets.d.ts +134 -0
  205. package/esm/layouts/presets.d.ts.map +1 -0
  206. package/esm/package.json +72 -0
  207. package/esm/pages/consent.d.ts +117 -0
  208. package/esm/pages/consent.d.ts.map +1 -0
  209. package/esm/pages/error.d.ts +101 -0
  210. package/esm/pages/error.d.ts.map +1 -0
  211. package/esm/pages/index.d.ts +9 -0
  212. package/esm/pages/index.d.ts.map +1 -0
  213. package/esm/pages/index.js +1036 -0
  214. package/esm/react/Alert.d.ts +101 -0
  215. package/esm/react/Alert.d.ts.map +1 -0
  216. package/esm/react/Badge.d.ts +100 -0
  217. package/esm/react/Badge.d.ts.map +1 -0
  218. package/esm/react/Button.d.ts +108 -0
  219. package/esm/react/Button.d.ts.map +1 -0
  220. package/esm/react/Card.d.ts +103 -0
  221. package/esm/react/Card.d.ts.map +1 -0
  222. package/esm/react/hooks/context.d.ts +179 -0
  223. package/esm/react/hooks/context.d.ts.map +1 -0
  224. package/esm/react/hooks/index.d.ts +42 -0
  225. package/esm/react/hooks/index.d.ts.map +1 -0
  226. package/esm/react/hooks/tools.d.ts +284 -0
  227. package/esm/react/hooks/tools.d.ts.map +1 -0
  228. package/esm/react/index.d.ts +80 -0
  229. package/esm/react/index.d.ts.map +1 -0
  230. package/esm/react/index.js +3124 -0
  231. package/esm/react/types.d.ts +105 -0
  232. package/esm/react/types.d.ts.map +1 -0
  233. package/esm/react/utils.d.ts +43 -0
  234. package/esm/react/utils.d.ts.map +1 -0
  235. package/esm/render/index.d.ts +8 -0
  236. package/esm/render/index.d.ts.map +1 -0
  237. package/esm/render/index.js +45 -0
  238. package/esm/render/prerender.d.ts +57 -0
  239. package/esm/render/prerender.d.ts.map +1 -0
  240. package/esm/renderers/index.d.ts +21 -0
  241. package/esm/renderers/index.d.ts.map +1 -0
  242. package/esm/renderers/index.js +381 -0
  243. package/esm/renderers/react.adapter.d.ts +70 -0
  244. package/esm/renderers/react.adapter.d.ts.map +1 -0
  245. package/esm/renderers/react.renderer.d.ts +96 -0
  246. package/esm/renderers/react.renderer.d.ts.map +1 -0
  247. package/esm/universal/UniversalApp.d.ts +108 -0
  248. package/esm/universal/UniversalApp.d.ts.map +1 -0
  249. package/esm/universal/cached-runtime.d.ts +115 -0
  250. package/esm/universal/cached-runtime.d.ts.map +1 -0
  251. package/esm/universal/context.d.ts +122 -0
  252. package/esm/universal/context.d.ts.map +1 -0
  253. package/esm/universal/index.d.ts +57 -0
  254. package/esm/universal/index.d.ts.map +1 -0
  255. package/esm/universal/index.js +1755 -0
  256. package/esm/universal/renderers/html.renderer.d.ts +37 -0
  257. package/esm/universal/renderers/html.renderer.d.ts.map +1 -0
  258. package/esm/universal/renderers/index.d.ts +112 -0
  259. package/esm/universal/renderers/index.d.ts.map +1 -0
  260. package/esm/universal/renderers/markdown.renderer.d.ts +33 -0
  261. package/esm/universal/renderers/markdown.renderer.d.ts.map +1 -0
  262. package/esm/universal/renderers/mdx.renderer.d.ts +38 -0
  263. package/esm/universal/renderers/mdx.renderer.d.ts.map +1 -0
  264. package/esm/universal/renderers/react.renderer.d.ts +46 -0
  265. package/esm/universal/renderers/react.renderer.d.ts.map +1 -0
  266. package/esm/universal/runtime-builder.d.ts +33 -0
  267. package/esm/universal/runtime-builder.d.ts.map +1 -0
  268. package/esm/universal/store.d.ts +135 -0
  269. package/esm/universal/store.d.ts.map +1 -0
  270. package/esm/universal/types.d.ts +199 -0
  271. package/esm/universal/types.d.ts.map +1 -0
  272. package/esm/web-components/core/attribute-parser.d.ts +82 -0
  273. package/esm/web-components/core/attribute-parser.d.ts.map +1 -0
  274. package/esm/web-components/core/base-element.d.ts +197 -0
  275. package/esm/web-components/core/base-element.d.ts.map +1 -0
  276. package/esm/web-components/core/index.d.ts +9 -0
  277. package/esm/web-components/core/index.d.ts.map +1 -0
  278. package/esm/web-components/elements/fmcp-alert.d.ts +46 -0
  279. package/esm/web-components/elements/fmcp-alert.d.ts.map +1 -0
  280. package/esm/web-components/elements/fmcp-badge.d.ts +47 -0
  281. package/esm/web-components/elements/fmcp-badge.d.ts.map +1 -0
  282. package/esm/web-components/elements/fmcp-button.d.ts +117 -0
  283. package/esm/web-components/elements/fmcp-button.d.ts.map +1 -0
  284. package/esm/web-components/elements/fmcp-card.d.ts +53 -0
  285. package/esm/web-components/elements/fmcp-card.d.ts.map +1 -0
  286. package/esm/web-components/elements/fmcp-input.d.ts +96 -0
  287. package/esm/web-components/elements/fmcp-input.d.ts.map +1 -0
  288. package/esm/web-components/elements/fmcp-select.d.ts +100 -0
  289. package/esm/web-components/elements/fmcp-select.d.ts.map +1 -0
  290. package/esm/web-components/elements/index.d.ts +13 -0
  291. package/esm/web-components/elements/index.d.ts.map +1 -0
  292. package/esm/web-components/index.d.ts +50 -0
  293. package/esm/web-components/index.d.ts.map +1 -0
  294. package/esm/web-components/index.js +1993 -0
  295. package/esm/web-components/register.d.ts +57 -0
  296. package/esm/web-components/register.d.ts.map +1 -0
  297. package/esm/web-components/types.d.ts +122 -0
  298. package/esm/web-components/types.d.ts.map +1 -0
  299. package/esm/widgets/index.d.ts +8 -0
  300. package/esm/widgets/index.d.ts.map +1 -0
  301. package/esm/widgets/index.js +883 -0
  302. package/esm/widgets/progress.d.ts +133 -0
  303. package/esm/widgets/progress.d.ts.map +1 -0
  304. package/esm/widgets/resource.d.ts +163 -0
  305. package/esm/widgets/resource.d.ts.map +1 -0
  306. package/index.d.ts +40 -0
  307. package/index.d.ts.map +1 -0
  308. package/index.js +8526 -0
  309. package/layouts/base.d.ts +86 -0
  310. package/layouts/base.d.ts.map +1 -0
  311. package/layouts/index.d.ts +8 -0
  312. package/layouts/index.d.ts.map +1 -0
  313. package/layouts/index.js +437 -0
  314. package/layouts/presets.d.ts +134 -0
  315. package/layouts/presets.d.ts.map +1 -0
  316. package/package.json +33 -110
  317. package/pages/consent.d.ts +117 -0
  318. package/pages/consent.d.ts.map +1 -0
  319. package/pages/error.d.ts +101 -0
  320. package/pages/error.d.ts.map +1 -0
  321. package/pages/index.d.ts +9 -0
  322. package/pages/index.d.ts.map +1 -0
  323. package/pages/index.js +1065 -0
  324. package/react/Alert.d.ts +101 -0
  325. package/react/Alert.d.ts.map +1 -0
  326. package/react/Badge.d.ts +100 -0
  327. package/react/Badge.d.ts.map +1 -0
  328. package/react/Button.d.ts +108 -0
  329. package/react/Button.d.ts.map +1 -0
  330. package/react/Card.d.ts +103 -0
  331. package/react/Card.d.ts.map +1 -0
  332. package/react/hooks/context.d.ts +179 -0
  333. package/react/hooks/context.d.ts.map +1 -0
  334. package/react/hooks/index.d.ts +42 -0
  335. package/react/hooks/index.d.ts.map +1 -0
  336. package/react/hooks/tools.d.ts +284 -0
  337. package/react/hooks/tools.d.ts.map +1 -0
  338. package/react/index.d.ts +80 -0
  339. package/react/index.d.ts.map +1 -0
  340. package/react/index.js +3160 -0
  341. package/react/types.d.ts +105 -0
  342. package/react/types.d.ts.map +1 -0
  343. package/react/utils.d.ts +43 -0
  344. package/react/utils.d.ts.map +1 -0
  345. package/render/index.d.ts +8 -0
  346. package/render/index.d.ts.map +1 -0
  347. package/render/index.js +77 -0
  348. package/render/prerender.d.ts +57 -0
  349. package/render/prerender.d.ts.map +1 -0
  350. package/renderers/index.d.ts +21 -0
  351. package/renderers/index.d.ts.map +1 -0
  352. package/renderers/index.js +416 -0
  353. package/renderers/react.adapter.d.ts +70 -0
  354. package/renderers/react.adapter.d.ts.map +1 -0
  355. package/renderers/react.renderer.d.ts +96 -0
  356. package/renderers/react.renderer.d.ts.map +1 -0
  357. package/universal/UniversalApp.d.ts +108 -0
  358. package/universal/UniversalApp.d.ts.map +1 -0
  359. package/universal/cached-runtime.d.ts +115 -0
  360. package/universal/cached-runtime.d.ts.map +1 -0
  361. package/universal/context.d.ts +122 -0
  362. package/universal/context.d.ts.map +1 -0
  363. package/universal/index.d.ts +57 -0
  364. package/universal/index.d.ts.map +1 -0
  365. package/universal/index.js +1841 -0
  366. package/universal/renderers/html.renderer.d.ts +37 -0
  367. package/universal/renderers/html.renderer.d.ts.map +1 -0
  368. package/universal/renderers/index.d.ts +112 -0
  369. package/universal/renderers/index.d.ts.map +1 -0
  370. package/universal/renderers/markdown.renderer.d.ts +33 -0
  371. package/universal/renderers/markdown.renderer.d.ts.map +1 -0
  372. package/universal/renderers/mdx.renderer.d.ts +38 -0
  373. package/universal/renderers/mdx.renderer.d.ts.map +1 -0
  374. package/universal/renderers/react.renderer.d.ts +46 -0
  375. package/universal/renderers/react.renderer.d.ts.map +1 -0
  376. package/universal/runtime-builder.d.ts +33 -0
  377. package/universal/runtime-builder.d.ts.map +1 -0
  378. package/universal/store.d.ts +135 -0
  379. package/universal/store.d.ts.map +1 -0
  380. package/universal/types.d.ts +199 -0
  381. package/universal/types.d.ts.map +1 -0
  382. package/web-components/core/attribute-parser.d.ts +82 -0
  383. package/web-components/core/attribute-parser.d.ts.map +1 -0
  384. package/web-components/core/base-element.d.ts +197 -0
  385. package/web-components/core/base-element.d.ts.map +1 -0
  386. package/web-components/core/index.d.ts +9 -0
  387. package/web-components/core/index.d.ts.map +1 -0
  388. package/web-components/elements/fmcp-alert.d.ts +46 -0
  389. package/web-components/elements/fmcp-alert.d.ts.map +1 -0
  390. package/web-components/elements/fmcp-badge.d.ts +47 -0
  391. package/web-components/elements/fmcp-badge.d.ts.map +1 -0
  392. package/web-components/elements/fmcp-button.d.ts +117 -0
  393. package/web-components/elements/fmcp-button.d.ts.map +1 -0
  394. package/web-components/elements/fmcp-card.d.ts +53 -0
  395. package/web-components/elements/fmcp-card.d.ts.map +1 -0
  396. package/web-components/elements/fmcp-input.d.ts +96 -0
  397. package/web-components/elements/fmcp-input.d.ts.map +1 -0
  398. package/web-components/elements/fmcp-select.d.ts +100 -0
  399. package/web-components/elements/fmcp-select.d.ts.map +1 -0
  400. package/web-components/elements/index.d.ts +13 -0
  401. package/web-components/elements/index.d.ts.map +1 -0
  402. package/web-components/index.d.ts +50 -0
  403. package/web-components/index.d.ts.map +1 -0
  404. package/web-components/index.js +2028 -0
  405. package/web-components/register.d.ts +57 -0
  406. package/web-components/register.d.ts.map +1 -0
  407. package/web-components/types.d.ts +122 -0
  408. package/web-components/types.d.ts.map +1 -0
  409. package/widgets/index.d.ts +8 -0
  410. package/widgets/index.d.ts.map +1 -0
  411. package/widgets/index.js +910 -0
  412. package/widgets/progress.d.ts +133 -0
  413. package/widgets/progress.d.ts.map +1 -0
  414. package/widgets/resource.d.ts +163 -0
  415. package/widgets/resource.d.ts.map +1 -0
  416. package/src/adapters/index.d.ts +0 -10
  417. package/src/adapters/index.js +0 -18
  418. package/src/adapters/index.js.map +0 -1
  419. package/src/adapters/platform-meta.d.ts +0 -165
  420. package/src/adapters/platform-meta.js +0 -310
  421. package/src/adapters/platform-meta.js.map +0 -1
  422. package/src/base-template/bridge.d.ts +0 -89
  423. package/src/base-template/bridge.js +0 -452
  424. package/src/base-template/bridge.js.map +0 -1
  425. package/src/base-template/default-base-template.d.ts +0 -91
  426. package/src/base-template/default-base-template.js +0 -435
  427. package/src/base-template/default-base-template.js.map +0 -1
  428. package/src/base-template/index.d.ts +0 -14
  429. package/src/base-template/index.js +0 -30
  430. package/src/base-template/index.js.map +0 -1
  431. package/src/base-template/polyfills.d.ts +0 -30
  432. package/src/base-template/polyfills.js +0 -190
  433. package/src/base-template/polyfills.js.map +0 -1
  434. package/src/base-template/theme-styles.d.ts +0 -73
  435. package/src/base-template/theme-styles.js +0 -95
  436. package/src/base-template/theme-styles.js.map +0 -1
  437. package/src/bridge/adapters/base-adapter.d.ts +0 -103
  438. package/src/bridge/adapters/base-adapter.js +0 -314
  439. package/src/bridge/adapters/base-adapter.js.map +0 -1
  440. package/src/bridge/adapters/claude.adapter.d.ts +0 -66
  441. package/src/bridge/adapters/claude.adapter.js +0 -145
  442. package/src/bridge/adapters/claude.adapter.js.map +0 -1
  443. package/src/bridge/adapters/ext-apps.adapter.d.ts +0 -142
  444. package/src/bridge/adapters/ext-apps.adapter.js +0 -416
  445. package/src/bridge/adapters/ext-apps.adapter.js.map +0 -1
  446. package/src/bridge/adapters/gemini.adapter.d.ts +0 -63
  447. package/src/bridge/adapters/gemini.adapter.js +0 -160
  448. package/src/bridge/adapters/gemini.adapter.js.map +0 -1
  449. package/src/bridge/adapters/generic.adapter.d.ts +0 -55
  450. package/src/bridge/adapters/generic.adapter.js +0 -108
  451. package/src/bridge/adapters/generic.adapter.js.map +0 -1
  452. package/src/bridge/adapters/index.d.ts +0 -25
  453. package/src/bridge/adapters/index.js +0 -65
  454. package/src/bridge/adapters/index.js.map +0 -1
  455. package/src/bridge/adapters/openai.adapter.d.ts +0 -64
  456. package/src/bridge/adapters/openai.adapter.js +0 -194
  457. package/src/bridge/adapters/openai.adapter.js.map +0 -1
  458. package/src/bridge/core/adapter-registry.d.ts +0 -121
  459. package/src/bridge/core/adapter-registry.js +0 -271
  460. package/src/bridge/core/adapter-registry.js.map +0 -1
  461. package/src/bridge/core/bridge-factory.d.ts +0 -198
  462. package/src/bridge/core/bridge-factory.js +0 -428
  463. package/src/bridge/core/bridge-factory.js.map +0 -1
  464. package/src/bridge/core/index.d.ts +0 -9
  465. package/src/bridge/core/index.js +0 -22
  466. package/src/bridge/core/index.js.map +0 -1
  467. package/src/bridge/index.d.ts +0 -61
  468. package/src/bridge/index.js +0 -94
  469. package/src/bridge/index.js.map +0 -1
  470. package/src/bridge/runtime/iife-generator.d.ts +0 -61
  471. package/src/bridge/runtime/iife-generator.js +0 -940
  472. package/src/bridge/runtime/iife-generator.js.map +0 -1
  473. package/src/bridge/runtime/index.d.ts +0 -8
  474. package/src/bridge/runtime/index.js +0 -16
  475. package/src/bridge/runtime/index.js.map +0 -1
  476. package/src/bridge/types.d.ts +0 -385
  477. package/src/bridge/types.js +0 -11
  478. package/src/bridge/types.js.map +0 -1
  479. package/src/build/cdn-resources.d.ts +0 -140
  480. package/src/build/cdn-resources.js +0 -314
  481. package/src/build/cdn-resources.js.map +0 -1
  482. package/src/build/index.d.ts +0 -294
  483. package/src/build/index.js +0 -325
  484. package/src/build/index.js.map +0 -1
  485. package/src/build/widget-manifest.d.ts +0 -212
  486. package/src/build/widget-manifest.js +0 -652
  487. package/src/build/widget-manifest.js.map +0 -1
  488. package/src/bundler/bundler.d.ts +0 -110
  489. package/src/bundler/bundler.js +0 -432
  490. package/src/bundler/bundler.js.map +0 -1
  491. package/src/bundler/cache.d.ts +0 -172
  492. package/src/bundler/cache.js +0 -250
  493. package/src/bundler/cache.js.map +0 -1
  494. package/src/bundler/index.d.ts +0 -41
  495. package/src/bundler/index.js +0 -73
  496. package/src/bundler/index.js.map +0 -1
  497. package/src/bundler/sandbox/enclave-adapter.d.ts +0 -120
  498. package/src/bundler/sandbox/enclave-adapter.js +0 -339
  499. package/src/bundler/sandbox/enclave-adapter.js.map +0 -1
  500. package/src/bundler/sandbox/executor.d.ts +0 -13
  501. package/src/bundler/sandbox/executor.js +0 -22
  502. package/src/bundler/sandbox/executor.js.map +0 -1
  503. package/src/bundler/sandbox/policy.d.ts +0 -61
  504. package/src/bundler/sandbox/policy.js +0 -238
  505. package/src/bundler/sandbox/policy.js.map +0 -1
  506. package/src/bundler/types.d.ts +0 -347
  507. package/src/bundler/types.js +0 -132
  508. package/src/bundler/types.js.map +0 -1
  509. package/src/components/alert.d.ts +0 -71
  510. package/src/components/alert.js +0 -189
  511. package/src/components/alert.js.map +0 -1
  512. package/src/components/alert.schema.d.ts +0 -114
  513. package/src/components/alert.schema.js +0 -105
  514. package/src/components/alert.schema.js.map +0 -1
  515. package/src/components/avatar.d.ts +0 -76
  516. package/src/components/avatar.js +0 -176
  517. package/src/components/avatar.js.map +0 -1
  518. package/src/components/avatar.schema.d.ts +0 -169
  519. package/src/components/avatar.schema.js +0 -103
  520. package/src/components/avatar.schema.js.map +0 -1
  521. package/src/components/badge.d.ts +0 -70
  522. package/src/components/badge.js +0 -149
  523. package/src/components/badge.js.map +0 -1
  524. package/src/components/badge.schema.d.ts +0 -109
  525. package/src/components/badge.schema.js +0 -96
  526. package/src/components/badge.schema.js.map +0 -1
  527. package/src/components/button.d.ts +0 -111
  528. package/src/components/button.js +0 -336
  529. package/src/components/button.js.map +0 -1
  530. package/src/components/button.schema.d.ts +0 -148
  531. package/src/components/button.schema.js +0 -121
  532. package/src/components/button.schema.js.map +0 -1
  533. package/src/components/card.d.ts +0 -60
  534. package/src/components/card.js +0 -117
  535. package/src/components/card.js.map +0 -1
  536. package/src/components/card.schema.d.ts +0 -113
  537. package/src/components/card.schema.js +0 -98
  538. package/src/components/card.schema.js.map +0 -1
  539. package/src/components/form.d.ts +0 -239
  540. package/src/components/form.js +0 -420
  541. package/src/components/form.js.map +0 -1
  542. package/src/components/form.schema.d.ts +0 -441
  543. package/src/components/form.schema.js +0 -406
  544. package/src/components/form.schema.js.map +0 -1
  545. package/src/components/index.d.ts +0 -29
  546. package/src/components/index.js +0 -98
  547. package/src/components/index.js.map +0 -1
  548. package/src/components/list.d.ts +0 -127
  549. package/src/components/list.js +0 -279
  550. package/src/components/list.js.map +0 -1
  551. package/src/components/list.schema.d.ts +0 -134
  552. package/src/components/list.schema.js +0 -168
  553. package/src/components/list.schema.js.map +0 -1
  554. package/src/components/modal.d.ts +0 -111
  555. package/src/components/modal.js +0 -260
  556. package/src/components/modal.js.map +0 -1
  557. package/src/components/modal.schema.d.ts +0 -186
  558. package/src/components/modal.schema.js +0 -167
  559. package/src/components/modal.schema.js.map +0 -1
  560. package/src/components/table.d.ts +0 -105
  561. package/src/components/table.js +0 -283
  562. package/src/components/table.js.map +0 -1
  563. package/src/components/table.schema.d.ts +0 -159
  564. package/src/components/table.schema.js +0 -173
  565. package/src/components/table.schema.js.map +0 -1
  566. package/src/handlebars/helpers.d.ts +0 -348
  567. package/src/handlebars/helpers.js +0 -605
  568. package/src/handlebars/helpers.js.map +0 -1
  569. package/src/handlebars/index.d.ts +0 -193
  570. package/src/handlebars/index.js +0 -350
  571. package/src/handlebars/index.js.map +0 -1
  572. package/src/index.d.ts +0 -50
  573. package/src/index.js +0 -192
  574. package/src/index.js.map +0 -1
  575. package/src/layouts/base.d.ts +0 -88
  576. package/src/layouts/base.js +0 -227
  577. package/src/layouts/base.js.map +0 -1
  578. package/src/layouts/index.d.ts +0 -7
  579. package/src/layouts/index.js +0 -25
  580. package/src/layouts/index.js.map +0 -1
  581. package/src/layouts/presets.d.ts +0 -133
  582. package/src/layouts/presets.js +0 -277
  583. package/src/layouts/presets.js.map +0 -1
  584. package/src/pages/consent.d.ts +0 -116
  585. package/src/pages/consent.js +0 -218
  586. package/src/pages/consent.js.map +0 -1
  587. package/src/pages/error.d.ts +0 -100
  588. package/src/pages/error.js +0 -263
  589. package/src/pages/error.js.map +0 -1
  590. package/src/pages/index.d.ts +0 -8
  591. package/src/pages/index.js +0 -27
  592. package/src/pages/index.js.map +0 -1
  593. package/src/react/Alert.d.ts +0 -101
  594. package/src/react/Alert.js +0 -51
  595. package/src/react/Alert.js.map +0 -1
  596. package/src/react/Badge.d.ts +0 -100
  597. package/src/react/Badge.js +0 -55
  598. package/src/react/Badge.js.map +0 -1
  599. package/src/react/Button.d.ts +0 -108
  600. package/src/react/Button.js +0 -52
  601. package/src/react/Button.js.map +0 -1
  602. package/src/react/Card.d.ts +0 -103
  603. package/src/react/Card.js +0 -55
  604. package/src/react/Card.js.map +0 -1
  605. package/src/react/hooks/context.d.ts +0 -178
  606. package/src/react/hooks/context.js +0 -287
  607. package/src/react/hooks/context.js.map +0 -1
  608. package/src/react/hooks/index.d.ts +0 -41
  609. package/src/react/hooks/index.js +0 -61
  610. package/src/react/hooks/index.js.map +0 -1
  611. package/src/react/hooks/tools.d.ts +0 -283
  612. package/src/react/hooks/tools.js +0 -465
  613. package/src/react/hooks/tools.js.map +0 -1
  614. package/src/react/index.d.ts +0 -80
  615. package/src/react/index.js +0 -113
  616. package/src/react/index.js.map +0 -1
  617. package/src/react/types.d.ts +0 -105
  618. package/src/react/types.js +0 -12
  619. package/src/react/types.js.map +0 -1
  620. package/src/react/utils.d.ts +0 -42
  621. package/src/react/utils.js +0 -99
  622. package/src/react/utils.js.map +0 -1
  623. package/src/registry/index.d.ts +0 -45
  624. package/src/registry/index.js +0 -67
  625. package/src/registry/index.js.map +0 -1
  626. package/src/registry/render-template.d.ts +0 -86
  627. package/src/registry/render-template.js +0 -239
  628. package/src/registry/render-template.js.map +0 -1
  629. package/src/registry/tool-ui.registry.d.ts +0 -260
  630. package/src/registry/tool-ui.registry.js +0 -438
  631. package/src/registry/tool-ui.registry.js.map +0 -1
  632. package/src/registry/uri-utils.d.ts +0 -55
  633. package/src/registry/uri-utils.js +0 -97
  634. package/src/registry/uri-utils.js.map +0 -1
  635. package/src/render/index.d.ts +0 -7
  636. package/src/render/index.js +0 -14
  637. package/src/render/index.js.map +0 -1
  638. package/src/render/prerender.d.ts +0 -56
  639. package/src/render/prerender.js +0 -98
  640. package/src/render/prerender.js.map +0 -1
  641. package/src/renderers/cache.d.ts +0 -144
  642. package/src/renderers/cache.js +0 -240
  643. package/src/renderers/cache.js.map +0 -1
  644. package/src/renderers/html.renderer.d.ts +0 -122
  645. package/src/renderers/html.renderer.js +0 -204
  646. package/src/renderers/html.renderer.js.map +0 -1
  647. package/src/renderers/index.d.ts +0 -35
  648. package/src/renderers/index.js +0 -70
  649. package/src/renderers/index.js.map +0 -1
  650. package/src/renderers/mdx.renderer.d.ts +0 -119
  651. package/src/renderers/mdx.renderer.js +0 -305
  652. package/src/renderers/mdx.renderer.js.map +0 -1
  653. package/src/renderers/react.renderer.d.ts +0 -95
  654. package/src/renderers/react.renderer.js +0 -260
  655. package/src/renderers/react.renderer.js.map +0 -1
  656. package/src/renderers/registry.d.ts +0 -133
  657. package/src/renderers/registry.js +0 -232
  658. package/src/renderers/registry.js.map +0 -1
  659. package/src/renderers/types.d.ts +0 -341
  660. package/src/renderers/types.js +0 -9
  661. package/src/renderers/types.js.map +0 -1
  662. package/src/renderers/utils/detect.d.ts +0 -106
  663. package/src/renderers/utils/detect.js +0 -267
  664. package/src/renderers/utils/detect.js.map +0 -1
  665. package/src/renderers/utils/hash.d.ts +0 -39
  666. package/src/renderers/utils/hash.js +0 -75
  667. package/src/renderers/utils/hash.js.map +0 -1
  668. package/src/renderers/utils/index.d.ts +0 -8
  669. package/src/renderers/utils/index.js +0 -28
  670. package/src/renderers/utils/index.js.map +0 -1
  671. package/src/renderers/utils/transpiler.d.ts +0 -88
  672. package/src/renderers/utils/transpiler.js +0 -215
  673. package/src/renderers/utils/transpiler.js.map +0 -1
  674. package/src/runtime/adapters/html.adapter.d.ts +0 -58
  675. package/src/runtime/adapters/html.adapter.js +0 -131
  676. package/src/runtime/adapters/html.adapter.js.map +0 -1
  677. package/src/runtime/adapters/index.d.ts +0 -25
  678. package/src/runtime/adapters/index.js +0 -54
  679. package/src/runtime/adapters/index.js.map +0 -1
  680. package/src/runtime/adapters/mdx.adapter.d.ts +0 -72
  681. package/src/runtime/adapters/mdx.adapter.js +0 -241
  682. package/src/runtime/adapters/mdx.adapter.js.map +0 -1
  683. package/src/runtime/adapters/react.adapter.d.ts +0 -69
  684. package/src/runtime/adapters/react.adapter.js +0 -245
  685. package/src/runtime/adapters/react.adapter.js.map +0 -1
  686. package/src/runtime/adapters/types.d.ts +0 -94
  687. package/src/runtime/adapters/types.js +0 -11
  688. package/src/runtime/adapters/types.js.map +0 -1
  689. package/src/runtime/csp.d.ts +0 -37
  690. package/src/runtime/csp.js +0 -140
  691. package/src/runtime/csp.js.map +0 -1
  692. package/src/runtime/index.d.ts +0 -16
  693. package/src/runtime/index.js +0 -72
  694. package/src/runtime/index.js.map +0 -1
  695. package/src/runtime/mcp-bridge.d.ts +0 -100
  696. package/src/runtime/mcp-bridge.js +0 -581
  697. package/src/runtime/mcp-bridge.js.map +0 -1
  698. package/src/runtime/renderer-runtime.d.ts +0 -132
  699. package/src/runtime/renderer-runtime.js +0 -389
  700. package/src/runtime/renderer-runtime.js.map +0 -1
  701. package/src/runtime/sanitizer.d.ts +0 -171
  702. package/src/runtime/sanitizer.js +0 -318
  703. package/src/runtime/sanitizer.js.map +0 -1
  704. package/src/runtime/types.d.ts +0 -414
  705. package/src/runtime/types.js +0 -12
  706. package/src/runtime/types.js.map +0 -1
  707. package/src/runtime/wrapper.d.ts +0 -375
  708. package/src/runtime/wrapper.js +0 -1793
  709. package/src/runtime/wrapper.js.map +0 -1
  710. package/src/styles/index.d.ts +0 -7
  711. package/src/styles/index.js +0 -11
  712. package/src/styles/index.js.map +0 -1
  713. package/src/styles/variants.d.ts +0 -50
  714. package/src/styles/variants.js +0 -175
  715. package/src/styles/variants.js.map +0 -1
  716. package/src/theme/cdn.d.ts +0 -194
  717. package/src/theme/cdn.js +0 -375
  718. package/src/theme/cdn.js.map +0 -1
  719. package/src/theme/index.d.ts +0 -17
  720. package/src/theme/index.js +0 -57
  721. package/src/theme/index.js.map +0 -1
  722. package/src/theme/platforms.d.ts +0 -106
  723. package/src/theme/platforms.js +0 -161
  724. package/src/theme/platforms.js.map +0 -1
  725. package/src/theme/presets/github-openai.d.ts +0 -49
  726. package/src/theme/presets/github-openai.js +0 -189
  727. package/src/theme/presets/github-openai.js.map +0 -1
  728. package/src/theme/presets/index.d.ts +0 -10
  729. package/src/theme/presets/index.js +0 -17
  730. package/src/theme/presets/index.js.map +0 -1
  731. package/src/theme/theme.d.ts +0 -395
  732. package/src/theme/theme.js +0 -332
  733. package/src/theme/theme.js.map +0 -1
  734. package/src/tool-template/builder.d.ts +0 -212
  735. package/src/tool-template/builder.js +0 -397
  736. package/src/tool-template/builder.js.map +0 -1
  737. package/src/tool-template/index.d.ts +0 -15
  738. package/src/tool-template/index.js +0 -38
  739. package/src/tool-template/index.js.map +0 -1
  740. package/src/types/index.d.ts +0 -13
  741. package/src/types/index.js +0 -26
  742. package/src/types/index.js.map +0 -1
  743. package/src/types/ui-config.d.ts +0 -357
  744. package/src/types/ui-config.js +0 -12
  745. package/src/types/ui-config.js.map +0 -1
  746. package/src/types/ui-runtime.d.ts +0 -965
  747. package/src/types/ui-runtime.js +0 -117
  748. package/src/types/ui-runtime.js.map +0 -1
  749. package/src/validation/error-box.d.ts +0 -55
  750. package/src/validation/error-box.js +0 -75
  751. package/src/validation/error-box.js.map +0 -1
  752. package/src/validation/index.d.ts +0 -12
  753. package/src/validation/index.js +0 -21
  754. package/src/validation/index.js.map +0 -1
  755. package/src/validation/wrapper.d.ts +0 -96
  756. package/src/validation/wrapper.js +0 -117
  757. package/src/validation/wrapper.js.map +0 -1
  758. package/src/web-components/core/attribute-parser.d.ts +0 -85
  759. package/src/web-components/core/attribute-parser.js +0 -189
  760. package/src/web-components/core/attribute-parser.js.map +0 -1
  761. package/src/web-components/core/base-element.d.ts +0 -197
  762. package/src/web-components/core/base-element.js +0 -289
  763. package/src/web-components/core/base-element.js.map +0 -1
  764. package/src/web-components/core/index.d.ts +0 -8
  765. package/src/web-components/core/index.js +0 -18
  766. package/src/web-components/core/index.js.map +0 -1
  767. package/src/web-components/elements/fmcp-alert.d.ts +0 -45
  768. package/src/web-components/elements/fmcp-alert.js +0 -93
  769. package/src/web-components/elements/fmcp-alert.js.map +0 -1
  770. package/src/web-components/elements/fmcp-badge.d.ts +0 -46
  771. package/src/web-components/elements/fmcp-badge.js +0 -99
  772. package/src/web-components/elements/fmcp-badge.js.map +0 -1
  773. package/src/web-components/elements/fmcp-button.d.ts +0 -124
  774. package/src/web-components/elements/fmcp-button.js +0 -233
  775. package/src/web-components/elements/fmcp-button.js.map +0 -1
  776. package/src/web-components/elements/fmcp-card.d.ts +0 -52
  777. package/src/web-components/elements/fmcp-card.js +0 -115
  778. package/src/web-components/elements/fmcp-card.js.map +0 -1
  779. package/src/web-components/elements/fmcp-input.d.ts +0 -95
  780. package/src/web-components/elements/fmcp-input.js +0 -248
  781. package/src/web-components/elements/fmcp-input.js.map +0 -1
  782. package/src/web-components/elements/fmcp-select.d.ts +0 -99
  783. package/src/web-components/elements/fmcp-select.js +0 -243
  784. package/src/web-components/elements/fmcp-select.js.map +0 -1
  785. package/src/web-components/elements/index.d.ts +0 -12
  786. package/src/web-components/elements/index.js +0 -34
  787. package/src/web-components/elements/index.js.map +0 -1
  788. package/src/web-components/index.d.ts +0 -49
  789. package/src/web-components/index.js +0 -75
  790. package/src/web-components/index.js.map +0 -1
  791. package/src/web-components/register.d.ts +0 -56
  792. package/src/web-components/register.js +0 -80
  793. package/src/web-components/register.js.map +0 -1
  794. package/src/web-components/types.d.ts +0 -121
  795. package/src/web-components/types.js +0 -25
  796. package/src/web-components/types.js.map +0 -1
  797. package/src/widgets/index.d.ts +0 -7
  798. package/src/widgets/index.js +0 -24
  799. package/src/widgets/index.js.map +0 -1
  800. package/src/widgets/progress.d.ts +0 -132
  801. package/src/widgets/progress.js +0 -303
  802. package/src/widgets/progress.js.map +0 -1
  803. package/src/widgets/resource.d.ts +0 -162
  804. package/src/widgets/resource.js +0 -340
  805. package/src/widgets/resource.js.map +0 -1
@@ -1,239 +0,0 @@
1
- "use strict";
2
- /**
3
- * Template Rendering
4
- *
5
- * Executes tool UI templates with proper context and helpers.
6
- * Supports sync rendering for HTML strings/template functions,
7
- * async rendering for React components via SSR, and MDX rendering.
8
- *
9
- * @packageDocumentation
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.containsMdxSyntax = containsMdxSyntax;
13
- exports.isReactComponent = isReactComponent;
14
- exports.renderToolTemplate = renderToolTemplate;
15
- exports.hasUIConfig = hasUIConfig;
16
- exports.renderToolTemplateAsync = renderToolTemplateAsync;
17
- const wrapper_1 = require("../runtime/wrapper");
18
- /**
19
- * Check if a string contains MDX syntax (Markdown + JSX).
20
- *
21
- * Looks for:
22
- * - JSX component tags (PascalCase): `<Component />`
23
- * - JS expressions: `{variable}` or `{items.map(...)}`
24
- * - Import/export statements
25
- * - Frontmatter: `---\n...\n---`
26
- */
27
- function containsMdxSyntax(source) {
28
- // Has JSX component tags (PascalCase)
29
- if (/<[A-Z][a-zA-Z0-9]*/.test(source)) {
30
- return true;
31
- }
32
- // Has import/export statements (ESM)
33
- if (/^(import|export)\s/m.test(source)) {
34
- return true;
35
- }
36
- // Has JSX-specific attributes (className, onClick, etc.)
37
- // These are only valid in JSX, not in regular HTML
38
- if (/\s(className|onClick|onChange|onSubmit|htmlFor|dangerouslySetInnerHTML)=/.test(source)) {
39
- return true;
40
- }
41
- // Has JS expressions in curly braces (not just HTML attributes)
42
- if (/\{[^}"'\n]*\}/.test(source) && !/=\s*["'][^"']*\{/.test(source)) {
43
- return true;
44
- }
45
- // Has frontmatter
46
- if (/^---[\s\S]*?---/m.test(source)) {
47
- return true;
48
- }
49
- // Has Markdown headers with JSX or expressions
50
- if (/^#{1,6}\s.*\{.*\}/m.test(source)) {
51
- return true;
52
- }
53
- // Has JSX fragments
54
- if (/<>|<\/>/.test(source)) {
55
- return true;
56
- }
57
- return false;
58
- }
59
- /**
60
- * Render MDX content to HTML string.
61
- *
62
- * Uses the MDX renderer from @frontmcp/ui.
63
- * Falls back to plain text if MDX rendering is not available.
64
- */
65
- async function renderMdxContent(mdxContent, context,
66
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
67
- mdxComponents) {
68
- try {
69
- // Import the MDX renderer from renderers module
70
- const { mdxRenderer } = await import('../renderers/index.js');
71
- // Render MDX to HTML with custom components
72
- const html = await mdxRenderer.render(mdxContent, context, { mdxComponents });
73
- return html;
74
- }
75
- catch (error) {
76
- // If MDX rendering fails, warn and return escaped content
77
- console.error('[@frontmcp/ui] MDX rendering failed:', error instanceof Error ? error.stack || error.message : String(error));
78
- // Return the raw MDX as escaped HTML (fallback)
79
- const escaped = mdxContent.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
80
- return `<pre class="mdx-fallback">${escaped}</pre>`;
81
- }
82
- }
83
- /**
84
- * Check if a template is a React component (not a template builder function).
85
- *
86
- * React components are distinguished from template builder functions by:
87
- * - Having $$typeof symbol (React.memo, forwardRef, etc.)
88
- * - Having prototype.isReactComponent (class components)
89
- * - PascalCase naming convention (function components)
90
- *
91
- * Template builder functions take (ctx) and return a string, while
92
- * React components take props and return JSX.Element.
93
- */
94
- function isReactComponent(template) {
95
- if (typeof template !== 'function')
96
- return false;
97
- // Template builder functions take (ctx) and return string
98
- // React components have different signatures
99
- // Check for React component markers
100
- const fn = template;
101
- // React.memo, forwardRef, etc. have $$typeof
102
- if (fn.$$typeof)
103
- return true;
104
- // Class components have prototype.isReactComponent
105
- if (fn.prototype?.isReactComponent)
106
- return true;
107
- // Function components: PascalCase name convention
108
- // This is a heuristic - function names starting with uppercase are likely React components
109
- if (fn.name && /^[A-Z]/.test(fn.name))
110
- return true;
111
- return false;
112
- }
113
- /**
114
- * Render a tool UI template.
115
- *
116
- * @param options - Template and context data
117
- * @returns Rendered HTML string
118
- * @throws Error if template execution fails
119
- */
120
- function renderToolTemplate(options) {
121
- const { template, input, output, structuredContent } = options;
122
- // If template is already a string, return it directly
123
- if (typeof template === 'string') {
124
- return template;
125
- }
126
- // Create template context with helpers
127
- const ctx = {
128
- input,
129
- output,
130
- structuredContent,
131
- helpers: (0, wrapper_1.createTemplateHelpers)(),
132
- };
133
- // Execute the template function
134
- try {
135
- return template(ctx);
136
- }
137
- catch (error) {
138
- const message = error instanceof Error ? error.message : String(error);
139
- throw new Error(`Template rendering failed: ${message}`);
140
- }
141
- }
142
- /**
143
- * Check if a tool has UI configuration.
144
- * Uses loose typing to handle variance issues with generic tool metadata.
145
- */
146
- function hasUIConfig(metadata) {
147
- const ui = metadata.ui;
148
- return ui !== undefined && ui.template !== undefined;
149
- }
150
- /**
151
- * Render a tool UI template asynchronously.
152
- *
153
- * This version supports:
154
- * - React components via SSR
155
- * - MDX strings (Markdown + JSX) via @mdx-js/mdx
156
- * - HTML strings and template builder functions
157
- *
158
- * For React components:
159
- * - Dynamically imports react and react-dom/server
160
- * - Uses renderToString for SSR
161
- * - React components receive the template context as props
162
- *
163
- * For MDX templates:
164
- * - Detects MDX syntax (Markdown headers, JSX components, expressions)
165
- * - Compiles and renders via @frontmcp/ui's MDX renderer
166
- *
167
- * @param options - Template and context data
168
- * @returns Promise resolving to rendered HTML string
169
- * @throws Error if template execution or rendering fails
170
- */
171
- async function renderToolTemplateAsync(options) {
172
- const { template, input, output, structuredContent, mdxComponents } = options;
173
- // Create template context with helpers
174
- const ctx = {
175
- input,
176
- output,
177
- structuredContent,
178
- helpers: (0, wrapper_1.createTemplateHelpers)(),
179
- };
180
- // If template is already a string, check if it's MDX
181
- if (typeof template === 'string') {
182
- if (containsMdxSyntax(template)) {
183
- return renderMdxContent(template, ctx, mdxComponents);
184
- }
185
- return template;
186
- }
187
- // Check if it's a React component
188
- if (isReactComponent(template)) {
189
- // Get component name for error reporting
190
- const componentName = template.displayName || template.name || 'UnknownComponent';
191
- try {
192
- // Dynamically import React and ReactDOMServer
193
- // This allows UI package to work without React as a hard dependency
194
- const [React, ReactDOMServer] = await Promise.all([
195
- import('react').catch(() => {
196
- throw new Error('React is required for React component templates. Install react as a dependency.');
197
- }),
198
- import('react-dom/server').catch(() => {
199
- throw new Error('react-dom/server is required for React component templates. Install react-dom as a dependency.');
200
- }),
201
- ]);
202
- // React components receive props, which is our context
203
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
204
- const element = React.createElement(template, ctx);
205
- return ReactDOMServer.renderToString(element);
206
- }
207
- catch (error) {
208
- const errorMessage = error instanceof Error ? error.message : String(error);
209
- const errorStack = error instanceof Error ? error.stack : undefined;
210
- // Log detailed error for debugging
211
- if (process.env['DEBUG'] || process.env['NODE_ENV'] === 'development') {
212
- console.error('[FrontMCP] React SSR Error:', {
213
- component: componentName,
214
- error: errorMessage,
215
- stack: errorStack,
216
- propsKeys: Object.keys(ctx),
217
- hasInput: 'input' in ctx,
218
- hasOutput: 'output' in ctx,
219
- hasStructuredContent: 'structuredContent' in ctx,
220
- });
221
- }
222
- throw new Error(`React template rendering failed for "${componentName}": ${errorMessage}`);
223
- }
224
- }
225
- // Execute as regular template builder function
226
- try {
227
- const result = template(ctx);
228
- // Check if the result is an MDX string (template function returned MDX)
229
- if (typeof result === 'string' && containsMdxSyntax(result)) {
230
- return renderMdxContent(result, ctx, mdxComponents);
231
- }
232
- return result;
233
- }
234
- catch (error) {
235
- const message = error instanceof Error ? error.message : String(error);
236
- throw new Error(`Template rendering failed: ${message}`);
237
- }
238
- }
239
- //# sourceMappingURL=render-template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"render-template.js","sourceRoot":"","sources":["../../../src/registry/render-template.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Template Rendering\n *\n * Executes tool UI templates with proper context and helpers.\n * Supports sync rendering for HTML strings/template functions,\n * async rendering for React components via SSR, and MDX rendering.\n *\n * @packageDocumentation\n */\n\nimport type { UITemplateConfig, TemplateContext, TemplateBuilderFn } from '../types';\nimport { createTemplateHelpers } from '../runtime/wrapper';\n\n/**\n * Check if a string contains MDX syntax (Markdown + JSX).\n *\n * Looks for:\n * - JSX component tags (PascalCase): `<Component />`\n * - JS expressions: `{variable}` or `{items.map(...)}`\n * - Import/export statements\n * - Frontmatter: `---\\n...\\n---`\n */\nexport function containsMdxSyntax(source: string): boolean {\n // Has JSX component tags (PascalCase)\n if (/<[A-Z][a-zA-Z0-9]*/.test(source)) {\n return true;\n }\n\n // Has import/export statements (ESM)\n if (/^(import|export)\\s/m.test(source)) {\n return true;\n }\n\n // Has JSX-specific attributes (className, onClick, etc.)\n // These are only valid in JSX, not in regular HTML\n if (/\\s(className|onClick|onChange|onSubmit|htmlFor|dangerouslySetInnerHTML)=/.test(source)) {\n return true;\n }\n\n // Has JS expressions in curly braces (not just HTML attributes)\n if (/\\{[^}\"'\\n]*\\}/.test(source) && !/=\\s*[\"'][^\"']*\\{/.test(source)) {\n return true;\n }\n\n // Has frontmatter\n if (/^---[\\s\\S]*?---/m.test(source)) {\n return true;\n }\n\n // Has Markdown headers with JSX or expressions\n if (/^#{1,6}\\s.*\\{.*\\}/m.test(source)) {\n return true;\n }\n\n // Has JSX fragments\n if (/<>|<\\/>/.test(source)) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Render MDX content to HTML string.\n *\n * Uses the MDX renderer from @frontmcp/ui.\n * Falls back to plain text if MDX rendering is not available.\n */\nasync function renderMdxContent<In, Out>(\n mdxContent: string,\n context: TemplateContext<In, Out>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mdxComponents?: Record<string, any>,\n): Promise<string> {\n try {\n // Import the MDX renderer from renderers module\n const { mdxRenderer } = await import('../renderers/index.js');\n\n // Render MDX to HTML with custom components\n const html = await mdxRenderer.render(mdxContent, context, { mdxComponents });\n return html;\n } catch (error) {\n // If MDX rendering fails, warn and return escaped content\n console.error(\n '[@frontmcp/ui] MDX rendering failed:',\n error instanceof Error ? error.stack || error.message : String(error),\n );\n\n // Return the raw MDX as escaped HTML (fallback)\n const escaped = mdxContent.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n return `<pre class=\"mdx-fallback\">${escaped}</pre>`;\n }\n}\n\n/**\n * Check if a template is a React component (not a template builder function).\n *\n * React components are distinguished from template builder functions by:\n * - Having $$typeof symbol (React.memo, forwardRef, etc.)\n * - Having prototype.isReactComponent (class components)\n * - PascalCase naming convention (function components)\n *\n * Template builder functions take (ctx) and return a string, while\n * React components take props and return JSX.Element.\n */\nexport function isReactComponent(template: unknown): boolean {\n if (typeof template !== 'function') return false;\n\n // Template builder functions take (ctx) and return string\n // React components have different signatures\n\n // Check for React component markers\n const fn = template as Function & {\n $$typeof?: symbol;\n displayName?: string;\n render?: Function;\n prototype?: { isReactComponent?: boolean };\n };\n\n // React.memo, forwardRef, etc. have $$typeof\n if (fn.$$typeof) return true;\n\n // Class components have prototype.isReactComponent\n if (fn.prototype?.isReactComponent) return true;\n\n // Function components: PascalCase name convention\n // This is a heuristic - function names starting with uppercase are likely React components\n if (fn.name && /^[A-Z]/.test(fn.name)) return true;\n\n return false;\n}\n\n/**\n * Options for rendering a tool template.\n */\nexport interface RenderTemplateOptions {\n /** The template configuration from the tool */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: TemplateBuilderFn<unknown, unknown> | string | ((props: any) => any);\n /** Tool input arguments */\n input: Record<string, unknown>;\n /** Tool output (raw result from execute) */\n output: unknown;\n /** Structured content parsed from output */\n structuredContent?: unknown;\n /** Custom MDX components to use in MDX templates */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mdxComponents?: Record<string, any>;\n}\n\n/**\n * Render a tool UI template.\n *\n * @param options - Template and context data\n * @returns Rendered HTML string\n * @throws Error if template execution fails\n */\nexport function renderToolTemplate(options: RenderTemplateOptions): string {\n const { template, input, output, structuredContent } = options;\n\n // If template is already a string, return it directly\n if (typeof template === 'string') {\n return template;\n }\n\n // Create template context with helpers\n const ctx: TemplateContext<Record<string, unknown>, unknown> = {\n input,\n output,\n structuredContent,\n helpers: createTemplateHelpers(),\n };\n\n // Execute the template function\n try {\n return template(ctx);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Template rendering failed: ${message}`);\n }\n}\n\n/**\n * Check if a tool has UI configuration.\n * Uses loose typing to handle variance issues with generic tool metadata.\n */\nexport function hasUIConfig(metadata: { ui?: unknown }): metadata is { ui: UITemplateConfig<unknown, unknown> } {\n const ui = metadata.ui as UITemplateConfig<unknown, unknown> | undefined;\n return ui !== undefined && ui.template !== undefined;\n}\n\n/**\n * Render a tool UI template asynchronously.\n *\n * This version supports:\n * - React components via SSR\n * - MDX strings (Markdown + JSX) via @mdx-js/mdx\n * - HTML strings and template builder functions\n *\n * For React components:\n * - Dynamically imports react and react-dom/server\n * - Uses renderToString for SSR\n * - React components receive the template context as props\n *\n * For MDX templates:\n * - Detects MDX syntax (Markdown headers, JSX components, expressions)\n * - Compiles and renders via @frontmcp/ui's MDX renderer\n *\n * @param options - Template and context data\n * @returns Promise resolving to rendered HTML string\n * @throws Error if template execution or rendering fails\n */\nexport async function renderToolTemplateAsync(options: RenderTemplateOptions): Promise<string> {\n const { template, input, output, structuredContent, mdxComponents } = options;\n\n // Create template context with helpers\n const ctx: TemplateContext<Record<string, unknown>, unknown> = {\n input,\n output,\n structuredContent,\n helpers: createTemplateHelpers(),\n };\n\n // If template is already a string, check if it's MDX\n if (typeof template === 'string') {\n if (containsMdxSyntax(template)) {\n return renderMdxContent(template, ctx, mdxComponents);\n }\n return template;\n }\n\n // Check if it's a React component\n if (isReactComponent(template)) {\n // Get component name for error reporting\n const componentName =\n (template as React.ComponentType).displayName || (template as React.ComponentType).name || 'UnknownComponent';\n\n try {\n // Dynamically import React and ReactDOMServer\n // This allows UI package to work without React as a hard dependency\n const [React, ReactDOMServer] = await Promise.all([\n import('react').catch(() => {\n throw new Error('React is required for React component templates. Install react as a dependency.');\n }),\n import('react-dom/server').catch(() => {\n throw new Error(\n 'react-dom/server is required for React component templates. Install react-dom as a dependency.',\n );\n }),\n ]);\n\n // React components receive props, which is our context\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const element = React.createElement(template as React.ComponentType<any>, ctx);\n return ReactDOMServer.renderToString(element);\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n const errorStack = error instanceof Error ? error.stack : undefined;\n\n // Log detailed error for debugging\n if (process.env['DEBUG'] || process.env['NODE_ENV'] === 'development') {\n console.error('[FrontMCP] React SSR Error:', {\n component: componentName,\n error: errorMessage,\n stack: errorStack,\n propsKeys: Object.keys(ctx),\n hasInput: 'input' in ctx,\n hasOutput: 'output' in ctx,\n hasStructuredContent: 'structuredContent' in ctx,\n });\n }\n\n throw new Error(`React template rendering failed for \"${componentName}\": ${errorMessage}`);\n }\n }\n\n // Execute as regular template builder function\n try {\n const result = (template as TemplateBuilderFn<unknown, unknown>)(ctx);\n\n // Check if the result is an MDX string (template function returned MDX)\n if (typeof result === 'string' && containsMdxSyntax(result)) {\n return renderMdxContent(result, ctx, mdxComponents);\n }\n\n return result;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Template rendering failed: ${message}`);\n }\n}\n"]}
@@ -1,260 +0,0 @@
1
- /**
2
- * Tool UI Registry
3
- *
4
- * Manages UI template rendering for tool responses.
5
- * Provides platform-specific metadata generation for MCP clients.
6
- *
7
- * Three serving modes:
8
- * - **inline**: HTML is rendered per-request and embedded in _meta['ui/html']
9
- * - **static**: Static widget is pre-compiled at startup, client fetches via resources/read
10
- * - **hybrid**: Shell (React + renderer) cached at startup, component + data in response
11
- *
12
- * @packageDocumentation
13
- */
14
- import type { UITemplateConfig, WidgetManifest, BuildManifestResult } from '../types';
15
- import type { AIPlatformType, UIMetadata } from '../adapters';
16
- /**
17
- * Options for renderAndRegisterAsync (inline mode).
18
- */
19
- export interface RenderOptions {
20
- /** Tool name */
21
- toolName: string;
22
- /** Unique request identifier */
23
- requestId: string;
24
- /** Tool input arguments */
25
- input: Record<string, unknown>;
26
- /** Raw tool output */
27
- output: unknown;
28
- /** Structured content (parsed from output) */
29
- structuredContent?: unknown;
30
- /** Tool UI configuration */
31
- uiConfig: UITemplateConfig;
32
- /** Detected platform type */
33
- platformType: AIPlatformType;
34
- /** Widget access token (optional) */
35
- token?: string;
36
- /** Direct URL for widget serving (optional) */
37
- directUrl?: string;
38
- }
39
- /**
40
- * Result of rendering UI for inline mode.
41
- */
42
- export interface UIRenderResult {
43
- /** Rendered HTML content */
44
- html: string;
45
- /** Platform-specific metadata for _meta field */
46
- meta: UIMetadata;
47
- }
48
- /**
49
- * ToolUIRegistry manages UI template rendering for tool responses.
50
- *
51
- * It provides:
52
- * - Static widget compilation for static mode (pre-compiled at startup)
53
- * - Per-request HTML rendering for inline mode (embedded in _meta)
54
- * - Platform-specific _meta generation
55
- * - Widget manifest management
56
- *
57
- * @example
58
- * ```typescript
59
- * const registry = new ToolUIRegistry();
60
- *
61
- * // For inline mode: render HTML per-request
62
- * const result = await registry.renderAndRegisterAsync({
63
- * toolName: 'get_weather',
64
- * requestId: 'abc123',
65
- * input: { location: 'London' },
66
- * output: { temp: 72, conditions: 'Sunny' },
67
- * uiConfig: tool.metadata.ui,
68
- * platformType: 'openai',
69
- * });
70
- *
71
- * // result.meta can be spread into tool result _meta
72
- * return { content: [...], _meta: { ...result.meta } };
73
- * ```
74
- */
75
- /**
76
- * Options for compiling a static widget.
77
- */
78
- export interface CompileStaticWidgetOptions {
79
- /** Tool name (used for cache key and URI) */
80
- toolName: string;
81
- /** The template to compile (React component, HTML string, or builder function) */
82
- template: UITemplateConfig['template'];
83
- /** Tool UI configuration */
84
- uiConfig: UITemplateConfig;
85
- }
86
- /**
87
- * Payload for hybrid mode component delivery.
88
- * Sent in `_meta['ui/component']` at tool call time.
89
- */
90
- export interface HybridComponentPayload {
91
- /** Transpiled component JavaScript code (ES module format) */
92
- code: string;
93
- /** Renderer type for the component */
94
- type: 'react' | 'mdx' | 'html';
95
- /** Tool name for identification */
96
- toolName: string;
97
- /** Content hash for cache validation */
98
- hash: string;
99
- }
100
- /**
101
- * Options for building a hybrid component payload.
102
- */
103
- export interface BuildHybridComponentPayloadOptions {
104
- /** Tool name */
105
- toolName: string;
106
- /** The template to transpile */
107
- template: UITemplateConfig['template'];
108
- /** Tool UI configuration */
109
- uiConfig: UITemplateConfig;
110
- }
111
- export declare class ToolUIRegistry {
112
- /**
113
- * Cache for static widgets (keyed by tool name).
114
- * Static widgets are pre-compiled at server startup for tools with servingMode: 'static'.
115
- * These widgets read data from the FrontMCP Bridge at runtime (window.openai.toolOutput).
116
- */
117
- private readonly staticWidgetCache;
118
- /**
119
- * Cache for widget manifests (keyed by tool name).
120
- * Manifests describe the widget's renderer type, CSP, and other metadata.
121
- */
122
- private readonly manifestCache;
123
- /**
124
- * Cache for build results (keyed by tool name).
125
- * Includes HTML, manifest, and hash for cache validation.
126
- */
127
- private readonly buildResultCache;
128
- /**
129
- * Compile a static widget template for a tool at server startup.
130
- *
131
- * For tools with `servingMode: 'static'`, the widget HTML is pre-compiled
132
- * WITHOUT embedded data. The widget reads data from the FrontMCP Bridge at runtime
133
- * (via window.openai.toolOutput or window.__frontmcp.toolOutput).
134
- *
135
- * This is called during tool registration, not during tool calls.
136
- *
137
- * @param options - Static widget compilation options
138
- */
139
- compileStaticWidgetAsync(options: CompileStaticWidgetOptions): Promise<void>;
140
- /**
141
- * Compile a lean widget shell for inline mode tools at server startup.
142
- *
143
- * For tools with `servingMode: 'inline'`, we create a minimal HTML shell that:
144
- * - Contains only HTML structure, theme CSS, and fonts
145
- * - NO React runtime, NO component code, NO bridge
146
- * - OpenAI caches this at discovery time
147
- * - The actual React widget comes in each tool response with embedded data
148
- *
149
- * @param options - Options for lean widget compilation
150
- */
151
- compileLeanWidgetAsync(options: {
152
- toolName: string;
153
- uiConfig: UITemplateConfig;
154
- }): void;
155
- /**
156
- * Compile a hybrid widget shell at server startup.
157
- *
158
- * For tools with `servingMode: 'hybrid'`, we create a shell that:
159
- * - Contains React 19 runtime from esm.sh CDN
160
- * - Contains FrontMCP Bridge (universal)
161
- * - Contains all FrontMCP hooks (useMcpBridgeContext, useToolOutput, etc.)
162
- * - Contains all FrontMCP UI components (Card, Badge, Button)
163
- * - Contains dynamic renderer script that imports components via blob URL
164
- * - NO component code (comes at tool call time via `_meta['ui/component']`)
165
- *
166
- * The shell listens for `ui/component` in tool response metadata and dynamically
167
- * imports the transpiled component code, then renders it with tool output data.
168
- *
169
- * @param options - Options for hybrid widget compilation
170
- */
171
- compileHybridWidgetAsync(options: {
172
- toolName: string;
173
- uiConfig: UITemplateConfig;
174
- }): void;
175
- /**
176
- * Build a component payload for hybrid mode tool responses.
177
- *
178
- * For tools with `servingMode: 'hybrid'`, this method is called at tool call time
179
- * to build the transpiled component code that gets delivered in `_meta['ui/component']`.
180
- *
181
- * The component code is in ES module format so it can be dynamically imported
182
- * via blob URL in the hybrid shell's renderer.
183
- *
184
- * @param options - Options for building the component payload
185
- * @returns The hybrid component payload, or undefined if template is not a function
186
- */
187
- buildHybridComponentPayload(options: BuildHybridComponentPayloadOptions): HybridComponentPayload | undefined;
188
- /**
189
- * Get the pre-compiled static widget HTML for a tool.
190
- *
191
- * @param toolName - The tool name to look up
192
- * @returns Pre-compiled widget HTML, or undefined if not cached
193
- */
194
- getStaticWidget(toolName: string): string | undefined;
195
- /**
196
- * Check if a tool has a pre-compiled static widget.
197
- *
198
- * @param toolName - The tool name to check
199
- * @returns true if the tool has a cached static widget
200
- */
201
- hasStaticWidget(toolName: string): boolean;
202
- /**
203
- * Get the widget manifest for a tool.
204
- *
205
- * @param toolName - The tool name to look up
206
- * @returns Widget manifest, or undefined if not cached
207
- */
208
- getManifest(toolName: string): WidgetManifest | undefined;
209
- /**
210
- * Check if a tool has a cached manifest.
211
- *
212
- * @param toolName - The tool name to check
213
- * @returns true if the tool has a cached manifest
214
- */
215
- hasManifest(toolName: string): boolean;
216
- /**
217
- * Get the full build result for a tool.
218
- *
219
- * @param toolName - The tool name to look up
220
- * @returns Build result, or undefined if not cached
221
- */
222
- getBuildResult(toolName: string): BuildManifestResult | undefined;
223
- /**
224
- * Detect the UI type for a template.
225
- *
226
- * @param template - The template to analyze
227
- * @returns Detected UI type
228
- */
229
- detectUIType(template: UITemplateConfig['template']): string;
230
- /**
231
- * Render a tool's UI template for inline mode.
232
- *
233
- * This version supports all template types including React components.
234
- * The rendered HTML is embedded directly in _meta['ui/html'] for the client.
235
- *
236
- * For React/MDX components, the output is wrapped using wrapStaticWidgetUniversal
237
- * which includes the React 19 CDN, client-side rendering script, and all the
238
- * FrontMCP hooks/components. This provides the same rendering capability as
239
- * static mode, but with data embedded in each response.
240
- *
241
- * @param options - Rendering options
242
- * @returns Promise resolving to render result with HTML and metadata
243
- */
244
- renderAndRegisterAsync(options: RenderOptions): Promise<UIRenderResult>;
245
- /**
246
- * Build component code string for embedding in widget HTML.
247
- *
248
- * @param template - The React component
249
- * @param toolName - Tool name for naming the component
250
- * @returns JavaScript code string that defines and registers the component
251
- */
252
- private buildComponentCode;
253
- /**
254
- * Check if a template requires async rendering (e.g., React components).
255
- *
256
- * @param template - The template to check
257
- * @returns true if the template requires async rendering
258
- */
259
- requiresAsyncRendering(template: UITemplateConfig['template']): boolean;
260
- }