@frontmcp/ui 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1134) hide show
  1. package/adapters/index.d.ts +13 -0
  2. package/adapters/index.d.ts.map +1 -0
  3. package/adapters/index.js +462 -0
  4. package/adapters/platform-meta.d.ts +166 -0
  5. package/adapters/platform-meta.d.ts.map +1 -0
  6. package/adapters/response-builder.d.ts +108 -0
  7. package/adapters/response-builder.d.ts.map +1 -0
  8. package/adapters/serving-mode.d.ts +107 -0
  9. package/adapters/serving-mode.d.ts.map +1 -0
  10. package/base-template/bridge.d.ts +90 -0
  11. package/base-template/bridge.d.ts.map +1 -0
  12. package/base-template/default-base-template.d.ts +92 -0
  13. package/base-template/default-base-template.d.ts.map +1 -0
  14. package/base-template/index.d.ts +15 -0
  15. package/base-template/index.d.ts.map +1 -0
  16. package/base-template/index.js +1398 -0
  17. package/base-template/polyfills.d.ts +31 -0
  18. package/base-template/polyfills.d.ts.map +1 -0
  19. package/base-template/theme-styles.d.ts +74 -0
  20. package/base-template/theme-styles.d.ts.map +1 -0
  21. package/bridge/adapters/base-adapter.d.ts +104 -0
  22. package/bridge/adapters/base-adapter.d.ts.map +1 -0
  23. package/bridge/adapters/claude.adapter.d.ts +67 -0
  24. package/bridge/adapters/claude.adapter.d.ts.map +1 -0
  25. package/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  26. package/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  27. package/bridge/adapters/gemini.adapter.d.ts +64 -0
  28. package/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  29. package/bridge/adapters/generic.adapter.d.ts +56 -0
  30. package/bridge/adapters/generic.adapter.d.ts.map +1 -0
  31. package/bridge/adapters/index.d.ts +26 -0
  32. package/bridge/adapters/index.d.ts.map +1 -0
  33. package/bridge/adapters/openai.adapter.d.ts +65 -0
  34. package/bridge/adapters/openai.adapter.d.ts.map +1 -0
  35. package/bridge/core/adapter-registry.d.ts +122 -0
  36. package/bridge/core/adapter-registry.d.ts.map +1 -0
  37. package/bridge/core/bridge-factory.d.ts +199 -0
  38. package/bridge/core/bridge-factory.d.ts.map +1 -0
  39. package/bridge/core/index.d.ts +10 -0
  40. package/bridge/core/index.d.ts.map +1 -0
  41. package/bridge/index.d.ts +62 -0
  42. package/bridge/index.d.ts.map +1 -0
  43. package/bridge/index.js +2540 -0
  44. package/bridge/runtime/iife-generator.d.ts +62 -0
  45. package/bridge/runtime/iife-generator.d.ts.map +1 -0
  46. package/bridge/runtime/index.d.ts +9 -0
  47. package/bridge/runtime/index.d.ts.map +1 -0
  48. package/bridge/types.d.ts +386 -0
  49. package/bridge/types.d.ts.map +1 -0
  50. package/build/cdn-resources.d.ts +243 -0
  51. package/build/cdn-resources.d.ts.map +1 -0
  52. package/build/index.d.ts +295 -0
  53. package/build/index.d.ts.map +1 -0
  54. package/build/index.js +7096 -0
  55. package/build/widget-manifest.d.ts +362 -0
  56. package/build/widget-manifest.d.ts.map +1 -0
  57. package/bundler/bundler.d.ts +208 -0
  58. package/bundler/bundler.d.ts.map +1 -0
  59. package/bundler/cache.d.ts +173 -0
  60. package/bundler/cache.d.ts.map +1 -0
  61. package/bundler/file-cache/component-builder.d.ts +167 -0
  62. package/bundler/file-cache/component-builder.d.ts.map +1 -0
  63. package/bundler/file-cache/hash-calculator.d.ts +155 -0
  64. package/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  65. package/bundler/file-cache/index.d.ts +12 -0
  66. package/bundler/file-cache/index.d.ts.map +1 -0
  67. package/bundler/file-cache/storage/filesystem.d.ts +149 -0
  68. package/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  69. package/bundler/file-cache/storage/index.d.ts +11 -0
  70. package/bundler/file-cache/storage/index.d.ts.map +1 -0
  71. package/bundler/file-cache/storage/interface.d.ts +152 -0
  72. package/bundler/file-cache/storage/interface.d.ts.map +1 -0
  73. package/bundler/file-cache/storage/redis.d.ts +139 -0
  74. package/bundler/file-cache/storage/redis.d.ts.map +1 -0
  75. package/bundler/index.d.ts +43 -0
  76. package/bundler/index.d.ts.map +1 -0
  77. package/bundler/index.js +4754 -0
  78. package/bundler/sandbox/enclave-adapter.d.ts +121 -0
  79. package/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  80. package/bundler/sandbox/executor.d.ts +14 -0
  81. package/bundler/sandbox/executor.d.ts.map +1 -0
  82. package/bundler/sandbox/policy.d.ts +62 -0
  83. package/bundler/sandbox/policy.d.ts.map +1 -0
  84. package/bundler/types.d.ts +702 -0
  85. package/bundler/types.d.ts.map +1 -0
  86. package/components/alert.d.ts +66 -0
  87. package/components/alert.d.ts.map +1 -0
  88. package/components/alert.schema.d.ts +98 -0
  89. package/components/alert.schema.d.ts.map +1 -0
  90. package/components/avatar.d.ts +77 -0
  91. package/components/avatar.d.ts.map +1 -0
  92. package/components/avatar.schema.d.ts +170 -0
  93. package/components/avatar.schema.d.ts.map +1 -0
  94. package/components/badge.d.ts +64 -0
  95. package/components/badge.d.ts.map +1 -0
  96. package/components/badge.schema.d.ts +91 -0
  97. package/components/badge.schema.d.ts.map +1 -0
  98. package/components/button.d.ts +100 -0
  99. package/components/button.d.ts.map +1 -0
  100. package/components/button.schema.d.ts +120 -0
  101. package/components/button.schema.d.ts.map +1 -0
  102. package/components/card.d.ts +53 -0
  103. package/components/card.d.ts.map +1 -0
  104. package/components/card.schema.d.ts +93 -0
  105. package/components/card.schema.d.ts.map +1 -0
  106. package/components/form.d.ts +212 -0
  107. package/components/form.d.ts.map +1 -0
  108. package/components/form.schema.d.ts +365 -0
  109. package/components/form.schema.d.ts.map +1 -0
  110. package/components/index.d.ts +29 -0
  111. package/components/index.d.ts.map +1 -0
  112. package/components/index.js +2595 -0
  113. package/components/list.d.ts +121 -0
  114. package/components/list.d.ts.map +1 -0
  115. package/components/list.schema.d.ts +129 -0
  116. package/components/list.schema.d.ts.map +1 -0
  117. package/components/modal.d.ts +100 -0
  118. package/components/modal.d.ts.map +1 -0
  119. package/components/modal.schema.d.ts +151 -0
  120. package/components/modal.schema.d.ts.map +1 -0
  121. package/components/table.d.ts +91 -0
  122. package/components/table.d.ts.map +1 -0
  123. package/components/table.schema.d.ts +123 -0
  124. package/components/table.schema.d.ts.map +1 -0
  125. package/dependency/cdn-registry.d.ts +98 -0
  126. package/dependency/cdn-registry.d.ts.map +1 -0
  127. package/dependency/import-map.d.ts +186 -0
  128. package/dependency/import-map.d.ts.map +1 -0
  129. package/dependency/import-parser.d.ts +82 -0
  130. package/dependency/import-parser.d.ts.map +1 -0
  131. package/dependency/index.d.ts +17 -0
  132. package/dependency/index.d.ts.map +1 -0
  133. package/dependency/resolver.d.ts +164 -0
  134. package/dependency/resolver.d.ts.map +1 -0
  135. package/dependency/schemas.d.ts +486 -0
  136. package/dependency/schemas.d.ts.map +1 -0
  137. package/dependency/template-loader.d.ts +204 -0
  138. package/dependency/template-loader.d.ts.map +1 -0
  139. package/dependency/template-processor.d.ts +118 -0
  140. package/dependency/template-processor.d.ts.map +1 -0
  141. package/dependency/types.d.ts +739 -0
  142. package/dependency/types.d.ts.map +1 -0
  143. package/esm/adapters/index.d.ts +13 -0
  144. package/esm/adapters/index.d.ts.map +1 -0
  145. package/esm/adapters/index.js +427 -0
  146. package/esm/adapters/platform-meta.d.ts +166 -0
  147. package/esm/adapters/platform-meta.d.ts.map +1 -0
  148. package/esm/adapters/response-builder.d.ts +108 -0
  149. package/esm/adapters/response-builder.d.ts.map +1 -0
  150. package/esm/adapters/serving-mode.d.ts +107 -0
  151. package/esm/adapters/serving-mode.d.ts.map +1 -0
  152. package/esm/base-template/bridge.d.ts +90 -0
  153. package/esm/base-template/bridge.d.ts.map +1 -0
  154. package/esm/base-template/default-base-template.d.ts +92 -0
  155. package/esm/base-template/default-base-template.d.ts.map +1 -0
  156. package/esm/base-template/index.d.ts +15 -0
  157. package/esm/base-template/index.d.ts.map +1 -0
  158. package/esm/base-template/index.js +1364 -0
  159. package/esm/base-template/polyfills.d.ts +31 -0
  160. package/esm/base-template/polyfills.d.ts.map +1 -0
  161. package/esm/base-template/theme-styles.d.ts +74 -0
  162. package/esm/base-template/theme-styles.d.ts.map +1 -0
  163. package/esm/bridge/adapters/base-adapter.d.ts +104 -0
  164. package/esm/bridge/adapters/base-adapter.d.ts.map +1 -0
  165. package/esm/bridge/adapters/claude.adapter.d.ts +67 -0
  166. package/esm/bridge/adapters/claude.adapter.d.ts.map +1 -0
  167. package/esm/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  168. package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  169. package/esm/bridge/adapters/gemini.adapter.d.ts +64 -0
  170. package/esm/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  171. package/esm/bridge/adapters/generic.adapter.d.ts +56 -0
  172. package/esm/bridge/adapters/generic.adapter.d.ts.map +1 -0
  173. package/esm/bridge/adapters/index.d.ts +26 -0
  174. package/esm/bridge/adapters/index.d.ts.map +1 -0
  175. package/esm/bridge/adapters/openai.adapter.d.ts +65 -0
  176. package/esm/bridge/adapters/openai.adapter.d.ts.map +1 -0
  177. package/esm/bridge/core/adapter-registry.d.ts +122 -0
  178. package/esm/bridge/core/adapter-registry.d.ts.map +1 -0
  179. package/esm/bridge/core/bridge-factory.d.ts +199 -0
  180. package/esm/bridge/core/bridge-factory.d.ts.map +1 -0
  181. package/esm/bridge/core/index.d.ts +10 -0
  182. package/esm/bridge/core/index.d.ts.map +1 -0
  183. package/esm/bridge/index.d.ts +62 -0
  184. package/esm/bridge/index.d.ts.map +1 -0
  185. package/esm/bridge/index.js +2487 -0
  186. package/esm/bridge/runtime/iife-generator.d.ts +62 -0
  187. package/esm/bridge/runtime/iife-generator.d.ts.map +1 -0
  188. package/esm/bridge/runtime/index.d.ts +9 -0
  189. package/esm/bridge/runtime/index.d.ts.map +1 -0
  190. package/esm/bridge/types.d.ts +386 -0
  191. package/esm/bridge/types.d.ts.map +1 -0
  192. package/esm/build/cdn-resources.d.ts +243 -0
  193. package/esm/build/cdn-resources.d.ts.map +1 -0
  194. package/esm/build/index.d.ts +295 -0
  195. package/esm/build/index.d.ts.map +1 -0
  196. package/esm/build/index.js +7021 -0
  197. package/esm/build/widget-manifest.d.ts +362 -0
  198. package/esm/build/widget-manifest.d.ts.map +1 -0
  199. package/esm/bundler/bundler.d.ts +208 -0
  200. package/esm/bundler/bundler.d.ts.map +1 -0
  201. package/esm/bundler/cache.d.ts +173 -0
  202. package/esm/bundler/cache.d.ts.map +1 -0
  203. package/esm/bundler/file-cache/component-builder.d.ts +167 -0
  204. package/esm/bundler/file-cache/component-builder.d.ts.map +1 -0
  205. package/esm/bundler/file-cache/hash-calculator.d.ts +155 -0
  206. package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  207. package/esm/bundler/file-cache/index.d.ts +12 -0
  208. package/esm/bundler/file-cache/index.d.ts.map +1 -0
  209. package/esm/bundler/file-cache/storage/filesystem.d.ts +149 -0
  210. package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  211. package/esm/bundler/file-cache/storage/index.d.ts +11 -0
  212. package/esm/bundler/file-cache/storage/index.d.ts.map +1 -0
  213. package/esm/bundler/file-cache/storage/interface.d.ts +152 -0
  214. package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -0
  215. package/esm/bundler/file-cache/storage/redis.d.ts +139 -0
  216. package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -0
  217. package/esm/bundler/index.d.ts +43 -0
  218. package/esm/bundler/index.d.ts.map +1 -0
  219. package/esm/bundler/index.js +4687 -0
  220. package/esm/bundler/sandbox/enclave-adapter.d.ts +121 -0
  221. package/esm/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  222. package/esm/bundler/sandbox/executor.d.ts +14 -0
  223. package/esm/bundler/sandbox/executor.d.ts.map +1 -0
  224. package/esm/bundler/sandbox/policy.d.ts +62 -0
  225. package/esm/bundler/sandbox/policy.d.ts.map +1 -0
  226. package/esm/bundler/types.d.ts +702 -0
  227. package/esm/bundler/types.d.ts.map +1 -0
  228. package/esm/components/alert.d.ts +66 -0
  229. package/esm/components/alert.d.ts.map +1 -0
  230. package/esm/components/alert.schema.d.ts +98 -0
  231. package/esm/components/alert.schema.d.ts.map +1 -0
  232. package/esm/components/avatar.d.ts +77 -0
  233. package/esm/components/avatar.d.ts.map +1 -0
  234. package/esm/components/avatar.schema.d.ts +170 -0
  235. package/esm/components/avatar.schema.d.ts.map +1 -0
  236. package/esm/components/badge.d.ts +64 -0
  237. package/esm/components/badge.d.ts.map +1 -0
  238. package/esm/components/badge.schema.d.ts +91 -0
  239. package/esm/components/badge.schema.d.ts.map +1 -0
  240. package/esm/components/button.d.ts +100 -0
  241. package/esm/components/button.d.ts.map +1 -0
  242. package/esm/components/button.schema.d.ts +120 -0
  243. package/esm/components/button.schema.d.ts.map +1 -0
  244. package/esm/components/card.d.ts +53 -0
  245. package/esm/components/card.d.ts.map +1 -0
  246. package/esm/components/card.schema.d.ts +93 -0
  247. package/esm/components/card.schema.d.ts.map +1 -0
  248. package/esm/components/form.d.ts +212 -0
  249. package/esm/components/form.d.ts.map +1 -0
  250. package/esm/components/form.schema.d.ts +365 -0
  251. package/esm/components/form.schema.d.ts.map +1 -0
  252. package/esm/components/index.d.ts +29 -0
  253. package/esm/components/index.d.ts.map +1 -0
  254. package/esm/components/index.js +2456 -0
  255. package/esm/components/list.d.ts +121 -0
  256. package/esm/components/list.d.ts.map +1 -0
  257. package/esm/components/list.schema.d.ts +129 -0
  258. package/esm/components/list.schema.d.ts.map +1 -0
  259. package/esm/components/modal.d.ts +100 -0
  260. package/esm/components/modal.d.ts.map +1 -0
  261. package/esm/components/modal.schema.d.ts +151 -0
  262. package/esm/components/modal.schema.d.ts.map +1 -0
  263. package/esm/components/table.d.ts +91 -0
  264. package/esm/components/table.d.ts.map +1 -0
  265. package/esm/components/table.schema.d.ts +123 -0
  266. package/esm/components/table.schema.d.ts.map +1 -0
  267. package/esm/dependency/cdn-registry.d.ts +98 -0
  268. package/esm/dependency/cdn-registry.d.ts.map +1 -0
  269. package/esm/dependency/import-map.d.ts +186 -0
  270. package/esm/dependency/import-map.d.ts.map +1 -0
  271. package/esm/dependency/import-parser.d.ts +82 -0
  272. package/esm/dependency/import-parser.d.ts.map +1 -0
  273. package/esm/dependency/index.d.ts +17 -0
  274. package/esm/dependency/index.d.ts.map +1 -0
  275. package/esm/dependency/resolver.d.ts +164 -0
  276. package/esm/dependency/resolver.d.ts.map +1 -0
  277. package/esm/dependency/schemas.d.ts +486 -0
  278. package/esm/dependency/schemas.d.ts.map +1 -0
  279. package/esm/dependency/template-loader.d.ts +204 -0
  280. package/esm/dependency/template-loader.d.ts.map +1 -0
  281. package/esm/dependency/template-processor.d.ts +118 -0
  282. package/esm/dependency/template-processor.d.ts.map +1 -0
  283. package/esm/dependency/types.d.ts +739 -0
  284. package/esm/dependency/types.d.ts.map +1 -0
  285. package/esm/handlebars/expression-extractor.d.ts +147 -0
  286. package/esm/handlebars/expression-extractor.d.ts.map +1 -0
  287. package/esm/handlebars/helpers.d.ts +339 -0
  288. package/esm/handlebars/helpers.d.ts.map +1 -0
  289. package/esm/handlebars/index.d.ts +195 -0
  290. package/esm/handlebars/index.d.ts.map +1 -0
  291. package/esm/handlebars/index.js +587 -0
  292. package/esm/index.d.ts +56 -0
  293. package/esm/index.d.ts.map +1 -0
  294. package/esm/index.js +20511 -0
  295. package/esm/layouts/base.d.ts +86 -0
  296. package/esm/layouts/base.d.ts.map +1 -0
  297. package/esm/layouts/index.d.ts +8 -0
  298. package/esm/layouts/index.d.ts.map +1 -0
  299. package/esm/layouts/index.js +892 -0
  300. package/esm/layouts/presets.d.ts +134 -0
  301. package/esm/layouts/presets.d.ts.map +1 -0
  302. package/esm/package.json +90 -0
  303. package/esm/pages/consent.d.ts +117 -0
  304. package/esm/pages/consent.d.ts.map +1 -0
  305. package/esm/pages/error.d.ts +101 -0
  306. package/esm/pages/error.d.ts.map +1 -0
  307. package/esm/pages/index.d.ts +9 -0
  308. package/esm/pages/index.d.ts.map +1 -0
  309. package/esm/pages/index.js +1563 -0
  310. package/esm/react/Alert.d.ts +102 -0
  311. package/esm/react/Alert.d.ts.map +1 -0
  312. package/esm/react/Badge.d.ts +101 -0
  313. package/esm/react/Badge.d.ts.map +1 -0
  314. package/esm/react/Button.d.ts +109 -0
  315. package/esm/react/Button.d.ts.map +1 -0
  316. package/esm/react/Card.d.ts +104 -0
  317. package/esm/react/Card.d.ts.map +1 -0
  318. package/esm/react/hooks/context.d.ts +179 -0
  319. package/esm/react/hooks/context.d.ts.map +1 -0
  320. package/esm/react/hooks/index.d.ts +42 -0
  321. package/esm/react/hooks/index.d.ts.map +1 -0
  322. package/esm/react/hooks/tools.d.ts +284 -0
  323. package/esm/react/hooks/tools.d.ts.map +1 -0
  324. package/esm/react/index.d.ts +81 -0
  325. package/esm/react/index.d.ts.map +1 -0
  326. package/esm/react/index.js +1372 -0
  327. package/esm/react/types.d.ts +106 -0
  328. package/esm/react/types.d.ts.map +1 -0
  329. package/esm/react/utils.d.ts +43 -0
  330. package/esm/react/utils.d.ts.map +1 -0
  331. package/esm/registry/index.d.ts +46 -0
  332. package/esm/registry/index.d.ts.map +1 -0
  333. package/esm/registry/index.js +6422 -0
  334. package/esm/registry/render-template.d.ts +91 -0
  335. package/esm/registry/render-template.d.ts.map +1 -0
  336. package/esm/registry/tool-ui.registry.d.ts +294 -0
  337. package/esm/registry/tool-ui.registry.d.ts.map +1 -0
  338. package/esm/registry/uri-utils.d.ts +56 -0
  339. package/esm/registry/uri-utils.d.ts.map +1 -0
  340. package/esm/render/index.d.ts +8 -0
  341. package/esm/render/index.d.ts.map +1 -0
  342. package/esm/render/index.js +45 -0
  343. package/esm/render/prerender.d.ts +57 -0
  344. package/esm/render/prerender.d.ts.map +1 -0
  345. package/esm/renderers/cache.d.ts +145 -0
  346. package/esm/renderers/cache.d.ts.map +1 -0
  347. package/esm/renderers/html.renderer.d.ts +123 -0
  348. package/esm/renderers/html.renderer.d.ts.map +1 -0
  349. package/esm/renderers/index.d.ts +36 -0
  350. package/esm/renderers/index.d.ts.map +1 -0
  351. package/esm/renderers/index.js +1827 -0
  352. package/esm/renderers/mdx.renderer.d.ts +120 -0
  353. package/esm/renderers/mdx.renderer.d.ts.map +1 -0
  354. package/esm/renderers/react.renderer.d.ts +96 -0
  355. package/esm/renderers/react.renderer.d.ts.map +1 -0
  356. package/esm/renderers/registry.d.ts +134 -0
  357. package/esm/renderers/registry.d.ts.map +1 -0
  358. package/esm/renderers/types.d.ts +342 -0
  359. package/esm/renderers/types.d.ts.map +1 -0
  360. package/esm/renderers/utils/detect.d.ts +107 -0
  361. package/esm/renderers/utils/detect.d.ts.map +1 -0
  362. package/esm/renderers/utils/hash.d.ts +40 -0
  363. package/esm/renderers/utils/hash.d.ts.map +1 -0
  364. package/esm/renderers/utils/index.d.ts +9 -0
  365. package/esm/renderers/utils/index.d.ts.map +1 -0
  366. package/esm/renderers/utils/transpiler.d.ts +89 -0
  367. package/esm/renderers/utils/transpiler.d.ts.map +1 -0
  368. package/esm/runtime/adapters/html.adapter.d.ts +59 -0
  369. package/esm/runtime/adapters/html.adapter.d.ts.map +1 -0
  370. package/esm/runtime/adapters/index.d.ts +26 -0
  371. package/esm/runtime/adapters/index.d.ts.map +1 -0
  372. package/esm/runtime/adapters/mdx.adapter.d.ts +73 -0
  373. package/esm/runtime/adapters/mdx.adapter.d.ts.map +1 -0
  374. package/esm/runtime/adapters/react.adapter.d.ts +70 -0
  375. package/esm/runtime/adapters/react.adapter.d.ts.map +1 -0
  376. package/esm/runtime/adapters/types.d.ts +95 -0
  377. package/esm/runtime/adapters/types.d.ts.map +1 -0
  378. package/esm/runtime/csp.d.ts +48 -0
  379. package/esm/runtime/csp.d.ts.map +1 -0
  380. package/esm/runtime/index.d.ts +17 -0
  381. package/esm/runtime/index.d.ts.map +1 -0
  382. package/esm/runtime/index.js +5186 -0
  383. package/esm/runtime/mcp-bridge.d.ts +101 -0
  384. package/esm/runtime/mcp-bridge.d.ts.map +1 -0
  385. package/esm/runtime/renderer-runtime.d.ts +133 -0
  386. package/esm/runtime/renderer-runtime.d.ts.map +1 -0
  387. package/esm/runtime/sanitizer.d.ts +172 -0
  388. package/esm/runtime/sanitizer.d.ts.map +1 -0
  389. package/esm/runtime/types.d.ts +415 -0
  390. package/esm/runtime/types.d.ts.map +1 -0
  391. package/esm/runtime/wrapper.d.ts +421 -0
  392. package/esm/runtime/wrapper.d.ts.map +1 -0
  393. package/esm/styles/index.d.ts +8 -0
  394. package/esm/styles/index.d.ts.map +1 -0
  395. package/esm/styles/index.js +171 -0
  396. package/esm/styles/variants.d.ts +51 -0
  397. package/esm/styles/variants.d.ts.map +1 -0
  398. package/esm/theme/cdn.d.ts +195 -0
  399. package/esm/theme/cdn.d.ts.map +1 -0
  400. package/esm/theme/index.d.ts +18 -0
  401. package/esm/theme/index.d.ts.map +1 -0
  402. package/esm/theme/index.js +700 -0
  403. package/esm/theme/platforms.d.ts +107 -0
  404. package/esm/theme/platforms.d.ts.map +1 -0
  405. package/esm/theme/presets/github-openai.d.ts +50 -0
  406. package/esm/theme/presets/github-openai.d.ts.map +1 -0
  407. package/esm/theme/presets/index.d.ts +11 -0
  408. package/esm/theme/presets/index.d.ts.map +1 -0
  409. package/esm/theme/theme.d.ts +396 -0
  410. package/esm/theme/theme.d.ts.map +1 -0
  411. package/esm/tool-template/builder.d.ts +213 -0
  412. package/esm/tool-template/builder.d.ts.map +1 -0
  413. package/esm/tool-template/index.d.ts +16 -0
  414. package/esm/tool-template/index.d.ts.map +1 -0
  415. package/esm/tool-template/index.js +3515 -0
  416. package/esm/types/index.d.ts +14 -0
  417. package/esm/types/index.d.ts.map +1 -0
  418. package/esm/types/index.js +75 -0
  419. package/esm/types/ui-config.d.ts +639 -0
  420. package/esm/types/ui-config.d.ts.map +1 -0
  421. package/esm/types/ui-runtime.d.ts +1007 -0
  422. package/esm/types/ui-runtime.d.ts.map +1 -0
  423. package/esm/typings/cache/cache-adapter.d.ts +125 -0
  424. package/esm/typings/cache/cache-adapter.d.ts.map +1 -0
  425. package/esm/typings/cache/index.d.ts +10 -0
  426. package/esm/typings/cache/index.d.ts.map +1 -0
  427. package/esm/typings/cache/memory-cache.d.ts +92 -0
  428. package/esm/typings/cache/memory-cache.d.ts.map +1 -0
  429. package/esm/typings/dts-parser.d.ts +90 -0
  430. package/esm/typings/dts-parser.d.ts.map +1 -0
  431. package/esm/typings/index.d.ts +48 -0
  432. package/esm/typings/index.d.ts.map +1 -0
  433. package/esm/typings/schemas.d.ts +232 -0
  434. package/esm/typings/schemas.d.ts.map +1 -0
  435. package/esm/typings/type-fetcher.d.ts +89 -0
  436. package/esm/typings/type-fetcher.d.ts.map +1 -0
  437. package/esm/typings/types.d.ts +320 -0
  438. package/esm/typings/types.d.ts.map +1 -0
  439. package/esm/universal/UniversalApp.d.ts +108 -0
  440. package/esm/universal/UniversalApp.d.ts.map +1 -0
  441. package/esm/universal/cached-runtime.d.ts +115 -0
  442. package/esm/universal/cached-runtime.d.ts.map +1 -0
  443. package/esm/universal/context.d.ts +122 -0
  444. package/esm/universal/context.d.ts.map +1 -0
  445. package/esm/universal/index.d.ts +57 -0
  446. package/esm/universal/index.d.ts.map +1 -0
  447. package/esm/universal/renderers/html.renderer.d.ts +37 -0
  448. package/esm/universal/renderers/html.renderer.d.ts.map +1 -0
  449. package/esm/universal/renderers/index.d.ts +112 -0
  450. package/esm/universal/renderers/index.d.ts.map +1 -0
  451. package/esm/universal/renderers/markdown.renderer.d.ts +33 -0
  452. package/esm/universal/renderers/markdown.renderer.d.ts.map +1 -0
  453. package/esm/universal/renderers/mdx.renderer.d.ts +38 -0
  454. package/esm/universal/renderers/mdx.renderer.d.ts.map +1 -0
  455. package/esm/universal/renderers/react.renderer.d.ts +46 -0
  456. package/esm/universal/renderers/react.renderer.d.ts.map +1 -0
  457. package/esm/universal/runtime-builder.d.ts +33 -0
  458. package/esm/universal/runtime-builder.d.ts.map +1 -0
  459. package/esm/universal/store.d.ts +135 -0
  460. package/esm/universal/store.d.ts.map +1 -0
  461. package/esm/universal/types.d.ts +199 -0
  462. package/esm/universal/types.d.ts.map +1 -0
  463. package/esm/utils/escape-html.d.ts +58 -0
  464. package/esm/utils/escape-html.d.ts.map +1 -0
  465. package/esm/utils/index.d.ts +10 -0
  466. package/esm/utils/index.d.ts.map +1 -0
  467. package/esm/utils/index.js +40 -0
  468. package/esm/utils/safe-stringify.d.ts +30 -0
  469. package/esm/utils/safe-stringify.d.ts.map +1 -0
  470. package/esm/validation/error-box.d.ts +56 -0
  471. package/esm/validation/error-box.d.ts.map +1 -0
  472. package/esm/validation/index.d.ts +13 -0
  473. package/esm/validation/index.d.ts.map +1 -0
  474. package/esm/validation/index.js +562 -0
  475. package/esm/validation/schema-paths.d.ts +118 -0
  476. package/esm/validation/schema-paths.d.ts.map +1 -0
  477. package/esm/validation/template-validator.d.ts +143 -0
  478. package/esm/validation/template-validator.d.ts.map +1 -0
  479. package/esm/validation/wrapper.d.ts +97 -0
  480. package/esm/validation/wrapper.d.ts.map +1 -0
  481. package/esm/web-components/core/attribute-parser.d.ts +82 -0
  482. package/esm/web-components/core/attribute-parser.d.ts.map +1 -0
  483. package/esm/web-components/core/base-element.d.ts +197 -0
  484. package/esm/web-components/core/base-element.d.ts.map +1 -0
  485. package/esm/web-components/core/index.d.ts +9 -0
  486. package/esm/web-components/core/index.d.ts.map +1 -0
  487. package/esm/web-components/elements/fmcp-alert.d.ts +46 -0
  488. package/esm/web-components/elements/fmcp-alert.d.ts.map +1 -0
  489. package/esm/web-components/elements/fmcp-badge.d.ts +47 -0
  490. package/esm/web-components/elements/fmcp-badge.d.ts.map +1 -0
  491. package/esm/web-components/elements/fmcp-button.d.ts +117 -0
  492. package/esm/web-components/elements/fmcp-button.d.ts.map +1 -0
  493. package/esm/web-components/elements/fmcp-card.d.ts +53 -0
  494. package/esm/web-components/elements/fmcp-card.d.ts.map +1 -0
  495. package/esm/web-components/elements/fmcp-input.d.ts +96 -0
  496. package/esm/web-components/elements/fmcp-input.d.ts.map +1 -0
  497. package/esm/web-components/elements/fmcp-select.d.ts +100 -0
  498. package/esm/web-components/elements/fmcp-select.d.ts.map +1 -0
  499. package/esm/web-components/elements/index.d.ts +13 -0
  500. package/esm/web-components/elements/index.d.ts.map +1 -0
  501. package/esm/web-components/index.d.ts +50 -0
  502. package/esm/web-components/index.d.ts.map +1 -0
  503. package/esm/web-components/index.js +2048 -0
  504. package/esm/web-components/register.d.ts +57 -0
  505. package/esm/web-components/register.d.ts.map +1 -0
  506. package/esm/web-components/types.d.ts +122 -0
  507. package/esm/web-components/types.d.ts.map +1 -0
  508. package/esm/widgets/index.d.ts +8 -0
  509. package/esm/widgets/index.d.ts.map +1 -0
  510. package/esm/widgets/index.js +941 -0
  511. package/esm/widgets/progress.d.ts +133 -0
  512. package/esm/widgets/progress.d.ts.map +1 -0
  513. package/esm/widgets/resource.d.ts +163 -0
  514. package/esm/widgets/resource.d.ts.map +1 -0
  515. package/handlebars/expression-extractor.d.ts +147 -0
  516. package/handlebars/expression-extractor.d.ts.map +1 -0
  517. package/handlebars/helpers.d.ts +339 -0
  518. package/handlebars/helpers.d.ts.map +1 -0
  519. package/handlebars/index.d.ts +195 -0
  520. package/handlebars/index.d.ts.map +1 -0
  521. package/handlebars/index.js +666 -0
  522. package/index.d.ts +56 -0
  523. package/index.d.ts.map +1 -0
  524. package/index.js +20942 -0
  525. package/layouts/base.d.ts +86 -0
  526. package/layouts/base.d.ts.map +1 -0
  527. package/layouts/index.d.ts +8 -0
  528. package/layouts/index.d.ts.map +1 -0
  529. package/layouts/index.js +930 -0
  530. package/layouts/presets.d.ts +134 -0
  531. package/layouts/presets.d.ts.map +1 -0
  532. package/package.json +28 -87
  533. package/pages/consent.d.ts +117 -0
  534. package/pages/consent.d.ts.map +1 -0
  535. package/pages/error.d.ts +101 -0
  536. package/pages/error.d.ts.map +1 -0
  537. package/pages/index.d.ts +9 -0
  538. package/pages/index.d.ts.map +1 -0
  539. package/pages/index.js +1602 -0
  540. package/react/Alert.d.ts +102 -0
  541. package/react/Alert.d.ts.map +1 -0
  542. package/react/Badge.d.ts +101 -0
  543. package/react/Badge.d.ts.map +1 -0
  544. package/react/Button.d.ts +109 -0
  545. package/react/Button.d.ts.map +1 -0
  546. package/react/Card.d.ts +104 -0
  547. package/react/Card.d.ts.map +1 -0
  548. package/react/hooks/context.d.ts +179 -0
  549. package/react/hooks/context.d.ts.map +1 -0
  550. package/react/hooks/index.d.ts +42 -0
  551. package/react/hooks/index.d.ts.map +1 -0
  552. package/react/hooks/tools.d.ts +284 -0
  553. package/react/hooks/tools.d.ts.map +1 -0
  554. package/react/index.d.ts +81 -0
  555. package/react/index.d.ts.map +1 -0
  556. package/react/index.js +1430 -0
  557. package/react/types.d.ts +106 -0
  558. package/react/types.d.ts.map +1 -0
  559. package/react/utils.d.ts +43 -0
  560. package/react/utils.d.ts.map +1 -0
  561. package/registry/index.d.ts +46 -0
  562. package/registry/index.d.ts.map +1 -0
  563. package/registry/index.js +6465 -0
  564. package/registry/render-template.d.ts +91 -0
  565. package/registry/render-template.d.ts.map +1 -0
  566. package/registry/tool-ui.registry.d.ts +294 -0
  567. package/registry/tool-ui.registry.d.ts.map +1 -0
  568. package/registry/uri-utils.d.ts +56 -0
  569. package/registry/uri-utils.d.ts.map +1 -0
  570. package/render/index.d.ts +8 -0
  571. package/render/index.d.ts.map +1 -0
  572. package/render/index.js +77 -0
  573. package/render/prerender.d.ts +57 -0
  574. package/render/prerender.d.ts.map +1 -0
  575. package/renderers/cache.d.ts +145 -0
  576. package/renderers/cache.d.ts.map +1 -0
  577. package/renderers/html.renderer.d.ts +123 -0
  578. package/renderers/html.renderer.d.ts.map +1 -0
  579. package/renderers/index.d.ts +36 -0
  580. package/renderers/index.d.ts.map +1 -0
  581. package/renderers/index.js +1882 -0
  582. package/renderers/mdx.renderer.d.ts +120 -0
  583. package/renderers/mdx.renderer.d.ts.map +1 -0
  584. package/renderers/react.renderer.d.ts +96 -0
  585. package/renderers/react.renderer.d.ts.map +1 -0
  586. package/renderers/registry.d.ts +134 -0
  587. package/renderers/registry.d.ts.map +1 -0
  588. package/renderers/types.d.ts +342 -0
  589. package/renderers/types.d.ts.map +1 -0
  590. package/renderers/utils/detect.d.ts +107 -0
  591. package/renderers/utils/detect.d.ts.map +1 -0
  592. package/renderers/utils/hash.d.ts +40 -0
  593. package/renderers/utils/hash.d.ts.map +1 -0
  594. package/renderers/utils/index.d.ts +9 -0
  595. package/renderers/utils/index.d.ts.map +1 -0
  596. package/renderers/utils/transpiler.d.ts +89 -0
  597. package/renderers/utils/transpiler.d.ts.map +1 -0
  598. package/runtime/adapters/html.adapter.d.ts +59 -0
  599. package/runtime/adapters/html.adapter.d.ts.map +1 -0
  600. package/runtime/adapters/index.d.ts +26 -0
  601. package/runtime/adapters/index.d.ts.map +1 -0
  602. package/runtime/adapters/mdx.adapter.d.ts +73 -0
  603. package/runtime/adapters/mdx.adapter.d.ts.map +1 -0
  604. package/runtime/adapters/react.adapter.d.ts +70 -0
  605. package/runtime/adapters/react.adapter.d.ts.map +1 -0
  606. package/runtime/adapters/types.d.ts +95 -0
  607. package/runtime/adapters/types.d.ts.map +1 -0
  608. package/runtime/csp.d.ts +48 -0
  609. package/runtime/csp.d.ts.map +1 -0
  610. package/runtime/index.d.ts +17 -0
  611. package/runtime/index.d.ts.map +1 -0
  612. package/runtime/index.js +5264 -0
  613. package/runtime/mcp-bridge.d.ts +101 -0
  614. package/runtime/mcp-bridge.d.ts.map +1 -0
  615. package/runtime/renderer-runtime.d.ts +133 -0
  616. package/runtime/renderer-runtime.d.ts.map +1 -0
  617. package/runtime/sanitizer.d.ts +172 -0
  618. package/runtime/sanitizer.d.ts.map +1 -0
  619. package/runtime/types.d.ts +415 -0
  620. package/runtime/types.d.ts.map +1 -0
  621. package/runtime/wrapper.d.ts +421 -0
  622. package/runtime/wrapper.d.ts.map +1 -0
  623. package/styles/index.d.ts +8 -0
  624. package/styles/index.d.ts.map +1 -0
  625. package/styles/index.js +222 -0
  626. package/styles/variants.d.ts +51 -0
  627. package/styles/variants.d.ts.map +1 -0
  628. package/theme/cdn.d.ts +195 -0
  629. package/theme/cdn.d.ts.map +1 -0
  630. package/theme/index.d.ts +18 -0
  631. package/theme/index.d.ts.map +1 -0
  632. package/theme/index.js +757 -0
  633. package/theme/platforms.d.ts +107 -0
  634. package/theme/platforms.d.ts.map +1 -0
  635. package/theme/presets/github-openai.d.ts +50 -0
  636. package/theme/presets/github-openai.d.ts.map +1 -0
  637. package/theme/presets/index.d.ts +11 -0
  638. package/theme/presets/index.d.ts.map +1 -0
  639. package/theme/theme.d.ts +396 -0
  640. package/theme/theme.d.ts.map +1 -0
  641. package/tool-template/builder.d.ts +213 -0
  642. package/tool-template/builder.d.ts.map +1 -0
  643. package/tool-template/index.d.ts +16 -0
  644. package/tool-template/index.d.ts.map +1 -0
  645. package/tool-template/index.js +3559 -0
  646. package/types/index.d.ts +14 -0
  647. package/types/index.d.ts.map +1 -0
  648. package/types/index.js +108 -0
  649. package/types/ui-config.d.ts +639 -0
  650. package/types/ui-config.d.ts.map +1 -0
  651. package/types/ui-runtime.d.ts +1007 -0
  652. package/types/ui-runtime.d.ts.map +1 -0
  653. package/typings/cache/cache-adapter.d.ts +125 -0
  654. package/typings/cache/cache-adapter.d.ts.map +1 -0
  655. package/typings/cache/index.d.ts +10 -0
  656. package/typings/cache/index.d.ts.map +1 -0
  657. package/typings/cache/memory-cache.d.ts +92 -0
  658. package/typings/cache/memory-cache.d.ts.map +1 -0
  659. package/typings/dts-parser.d.ts +90 -0
  660. package/typings/dts-parser.d.ts.map +1 -0
  661. package/typings/index.d.ts +48 -0
  662. package/typings/index.d.ts.map +1 -0
  663. package/typings/schemas.d.ts +232 -0
  664. package/typings/schemas.d.ts.map +1 -0
  665. package/typings/type-fetcher.d.ts +89 -0
  666. package/typings/type-fetcher.d.ts.map +1 -0
  667. package/typings/types.d.ts +320 -0
  668. package/typings/types.d.ts.map +1 -0
  669. package/universal/UniversalApp.d.ts +108 -0
  670. package/universal/UniversalApp.d.ts.map +1 -0
  671. package/universal/cached-runtime.d.ts +115 -0
  672. package/universal/cached-runtime.d.ts.map +1 -0
  673. package/universal/context.d.ts +122 -0
  674. package/universal/context.d.ts.map +1 -0
  675. package/universal/index.d.ts +57 -0
  676. package/universal/index.d.ts.map +1 -0
  677. package/universal/renderers/html.renderer.d.ts +37 -0
  678. package/universal/renderers/html.renderer.d.ts.map +1 -0
  679. package/universal/renderers/index.d.ts +112 -0
  680. package/universal/renderers/index.d.ts.map +1 -0
  681. package/universal/renderers/markdown.renderer.d.ts +33 -0
  682. package/universal/renderers/markdown.renderer.d.ts.map +1 -0
  683. package/universal/renderers/mdx.renderer.d.ts +38 -0
  684. package/universal/renderers/mdx.renderer.d.ts.map +1 -0
  685. package/universal/renderers/react.renderer.d.ts +46 -0
  686. package/universal/renderers/react.renderer.d.ts.map +1 -0
  687. package/universal/runtime-builder.d.ts +33 -0
  688. package/universal/runtime-builder.d.ts.map +1 -0
  689. package/universal/store.d.ts +135 -0
  690. package/universal/store.d.ts.map +1 -0
  691. package/universal/types.d.ts +199 -0
  692. package/universal/types.d.ts.map +1 -0
  693. package/utils/escape-html.d.ts +58 -0
  694. package/utils/escape-html.d.ts.map +1 -0
  695. package/utils/index.d.ts +10 -0
  696. package/utils/index.d.ts.map +1 -0
  697. package/utils/index.js +70 -0
  698. package/utils/safe-stringify.d.ts +30 -0
  699. package/utils/safe-stringify.d.ts.map +1 -0
  700. package/validation/error-box.d.ts +56 -0
  701. package/validation/error-box.d.ts.map +1 -0
  702. package/validation/index.d.ts +13 -0
  703. package/validation/index.d.ts.map +1 -0
  704. package/validation/index.js +603 -0
  705. package/validation/schema-paths.d.ts +118 -0
  706. package/validation/schema-paths.d.ts.map +1 -0
  707. package/validation/template-validator.d.ts +143 -0
  708. package/validation/template-validator.d.ts.map +1 -0
  709. package/validation/wrapper.d.ts +97 -0
  710. package/validation/wrapper.d.ts.map +1 -0
  711. package/web-components/core/attribute-parser.d.ts +82 -0
  712. package/web-components/core/attribute-parser.d.ts.map +1 -0
  713. package/web-components/core/base-element.d.ts +197 -0
  714. package/web-components/core/base-element.d.ts.map +1 -0
  715. package/web-components/core/index.d.ts +9 -0
  716. package/web-components/core/index.d.ts.map +1 -0
  717. package/web-components/elements/fmcp-alert.d.ts +46 -0
  718. package/web-components/elements/fmcp-alert.d.ts.map +1 -0
  719. package/web-components/elements/fmcp-badge.d.ts +47 -0
  720. package/web-components/elements/fmcp-badge.d.ts.map +1 -0
  721. package/web-components/elements/fmcp-button.d.ts +117 -0
  722. package/web-components/elements/fmcp-button.d.ts.map +1 -0
  723. package/web-components/elements/fmcp-card.d.ts +53 -0
  724. package/web-components/elements/fmcp-card.d.ts.map +1 -0
  725. package/web-components/elements/fmcp-input.d.ts +96 -0
  726. package/web-components/elements/fmcp-input.d.ts.map +1 -0
  727. package/web-components/elements/fmcp-select.d.ts +100 -0
  728. package/web-components/elements/fmcp-select.d.ts.map +1 -0
  729. package/web-components/elements/index.d.ts +13 -0
  730. package/web-components/elements/index.d.ts.map +1 -0
  731. package/web-components/index.d.ts +50 -0
  732. package/web-components/index.d.ts.map +1 -0
  733. package/web-components/index.js +2093 -0
  734. package/web-components/register.d.ts +57 -0
  735. package/web-components/register.d.ts.map +1 -0
  736. package/web-components/types.d.ts +122 -0
  737. package/web-components/types.d.ts.map +1 -0
  738. package/widgets/index.d.ts +8 -0
  739. package/widgets/index.d.ts.map +1 -0
  740. package/widgets/index.js +978 -0
  741. package/widgets/progress.d.ts +133 -0
  742. package/widgets/progress.d.ts.map +1 -0
  743. package/widgets/resource.d.ts +163 -0
  744. package/widgets/resource.d.ts.map +1 -0
  745. package/src/adapters/index.d.ts +0 -10
  746. package/src/adapters/index.js +0 -18
  747. package/src/adapters/index.js.map +0 -1
  748. package/src/adapters/platform-meta.d.ts +0 -165
  749. package/src/adapters/platform-meta.js +0 -310
  750. package/src/adapters/platform-meta.js.map +0 -1
  751. package/src/base-template/bridge.d.ts +0 -89
  752. package/src/base-template/bridge.js +0 -452
  753. package/src/base-template/bridge.js.map +0 -1
  754. package/src/base-template/default-base-template.d.ts +0 -91
  755. package/src/base-template/default-base-template.js +0 -435
  756. package/src/base-template/default-base-template.js.map +0 -1
  757. package/src/base-template/index.d.ts +0 -14
  758. package/src/base-template/index.js +0 -30
  759. package/src/base-template/index.js.map +0 -1
  760. package/src/base-template/polyfills.d.ts +0 -30
  761. package/src/base-template/polyfills.js +0 -190
  762. package/src/base-template/polyfills.js.map +0 -1
  763. package/src/base-template/theme-styles.d.ts +0 -73
  764. package/src/base-template/theme-styles.js +0 -95
  765. package/src/base-template/theme-styles.js.map +0 -1
  766. package/src/bridge/adapters/base-adapter.d.ts +0 -103
  767. package/src/bridge/adapters/base-adapter.js +0 -314
  768. package/src/bridge/adapters/base-adapter.js.map +0 -1
  769. package/src/bridge/adapters/claude.adapter.d.ts +0 -66
  770. package/src/bridge/adapters/claude.adapter.js +0 -145
  771. package/src/bridge/adapters/claude.adapter.js.map +0 -1
  772. package/src/bridge/adapters/ext-apps.adapter.d.ts +0 -142
  773. package/src/bridge/adapters/ext-apps.adapter.js +0 -416
  774. package/src/bridge/adapters/ext-apps.adapter.js.map +0 -1
  775. package/src/bridge/adapters/gemini.adapter.d.ts +0 -63
  776. package/src/bridge/adapters/gemini.adapter.js +0 -160
  777. package/src/bridge/adapters/gemini.adapter.js.map +0 -1
  778. package/src/bridge/adapters/generic.adapter.d.ts +0 -55
  779. package/src/bridge/adapters/generic.adapter.js +0 -108
  780. package/src/bridge/adapters/generic.adapter.js.map +0 -1
  781. package/src/bridge/adapters/index.d.ts +0 -25
  782. package/src/bridge/adapters/index.js +0 -65
  783. package/src/bridge/adapters/index.js.map +0 -1
  784. package/src/bridge/adapters/openai.adapter.d.ts +0 -64
  785. package/src/bridge/adapters/openai.adapter.js +0 -194
  786. package/src/bridge/adapters/openai.adapter.js.map +0 -1
  787. package/src/bridge/core/adapter-registry.d.ts +0 -121
  788. package/src/bridge/core/adapter-registry.js +0 -271
  789. package/src/bridge/core/adapter-registry.js.map +0 -1
  790. package/src/bridge/core/bridge-factory.d.ts +0 -198
  791. package/src/bridge/core/bridge-factory.js +0 -428
  792. package/src/bridge/core/bridge-factory.js.map +0 -1
  793. package/src/bridge/core/index.d.ts +0 -9
  794. package/src/bridge/core/index.js +0 -22
  795. package/src/bridge/core/index.js.map +0 -1
  796. package/src/bridge/index.d.ts +0 -61
  797. package/src/bridge/index.js +0 -94
  798. package/src/bridge/index.js.map +0 -1
  799. package/src/bridge/runtime/iife-generator.d.ts +0 -61
  800. package/src/bridge/runtime/iife-generator.js +0 -940
  801. package/src/bridge/runtime/iife-generator.js.map +0 -1
  802. package/src/bridge/runtime/index.d.ts +0 -8
  803. package/src/bridge/runtime/index.js +0 -16
  804. package/src/bridge/runtime/index.js.map +0 -1
  805. package/src/bridge/types.d.ts +0 -385
  806. package/src/bridge/types.js +0 -11
  807. package/src/bridge/types.js.map +0 -1
  808. package/src/build/cdn-resources.d.ts +0 -140
  809. package/src/build/cdn-resources.js +0 -314
  810. package/src/build/cdn-resources.js.map +0 -1
  811. package/src/build/index.d.ts +0 -294
  812. package/src/build/index.js +0 -325
  813. package/src/build/index.js.map +0 -1
  814. package/src/build/widget-manifest.d.ts +0 -212
  815. package/src/build/widget-manifest.js +0 -652
  816. package/src/build/widget-manifest.js.map +0 -1
  817. package/src/bundler/bundler.d.ts +0 -110
  818. package/src/bundler/bundler.js +0 -432
  819. package/src/bundler/bundler.js.map +0 -1
  820. package/src/bundler/cache.d.ts +0 -172
  821. package/src/bundler/cache.js +0 -250
  822. package/src/bundler/cache.js.map +0 -1
  823. package/src/bundler/index.d.ts +0 -41
  824. package/src/bundler/index.js +0 -73
  825. package/src/bundler/index.js.map +0 -1
  826. package/src/bundler/sandbox/enclave-adapter.d.ts +0 -120
  827. package/src/bundler/sandbox/enclave-adapter.js +0 -339
  828. package/src/bundler/sandbox/enclave-adapter.js.map +0 -1
  829. package/src/bundler/sandbox/executor.d.ts +0 -13
  830. package/src/bundler/sandbox/executor.js +0 -22
  831. package/src/bundler/sandbox/executor.js.map +0 -1
  832. package/src/bundler/sandbox/policy.d.ts +0 -61
  833. package/src/bundler/sandbox/policy.js +0 -238
  834. package/src/bundler/sandbox/policy.js.map +0 -1
  835. package/src/bundler/types.d.ts +0 -347
  836. package/src/bundler/types.js +0 -132
  837. package/src/bundler/types.js.map +0 -1
  838. package/src/components/alert.d.ts +0 -71
  839. package/src/components/alert.js +0 -189
  840. package/src/components/alert.js.map +0 -1
  841. package/src/components/alert.schema.d.ts +0 -114
  842. package/src/components/alert.schema.js +0 -105
  843. package/src/components/alert.schema.js.map +0 -1
  844. package/src/components/avatar.d.ts +0 -76
  845. package/src/components/avatar.js +0 -176
  846. package/src/components/avatar.js.map +0 -1
  847. package/src/components/avatar.schema.d.ts +0 -169
  848. package/src/components/avatar.schema.js +0 -103
  849. package/src/components/avatar.schema.js.map +0 -1
  850. package/src/components/badge.d.ts +0 -70
  851. package/src/components/badge.js +0 -149
  852. package/src/components/badge.js.map +0 -1
  853. package/src/components/badge.schema.d.ts +0 -109
  854. package/src/components/badge.schema.js +0 -96
  855. package/src/components/badge.schema.js.map +0 -1
  856. package/src/components/button.d.ts +0 -111
  857. package/src/components/button.js +0 -336
  858. package/src/components/button.js.map +0 -1
  859. package/src/components/button.schema.d.ts +0 -148
  860. package/src/components/button.schema.js +0 -121
  861. package/src/components/button.schema.js.map +0 -1
  862. package/src/components/card.d.ts +0 -60
  863. package/src/components/card.js +0 -117
  864. package/src/components/card.js.map +0 -1
  865. package/src/components/card.schema.d.ts +0 -113
  866. package/src/components/card.schema.js +0 -98
  867. package/src/components/card.schema.js.map +0 -1
  868. package/src/components/form.d.ts +0 -239
  869. package/src/components/form.js +0 -420
  870. package/src/components/form.js.map +0 -1
  871. package/src/components/form.schema.d.ts +0 -441
  872. package/src/components/form.schema.js +0 -406
  873. package/src/components/form.schema.js.map +0 -1
  874. package/src/components/index.d.ts +0 -29
  875. package/src/components/index.js +0 -98
  876. package/src/components/index.js.map +0 -1
  877. package/src/components/list.d.ts +0 -127
  878. package/src/components/list.js +0 -279
  879. package/src/components/list.js.map +0 -1
  880. package/src/components/list.schema.d.ts +0 -134
  881. package/src/components/list.schema.js +0 -168
  882. package/src/components/list.schema.js.map +0 -1
  883. package/src/components/modal.d.ts +0 -111
  884. package/src/components/modal.js +0 -260
  885. package/src/components/modal.js.map +0 -1
  886. package/src/components/modal.schema.d.ts +0 -186
  887. package/src/components/modal.schema.js +0 -167
  888. package/src/components/modal.schema.js.map +0 -1
  889. package/src/components/table.d.ts +0 -105
  890. package/src/components/table.js +0 -283
  891. package/src/components/table.js.map +0 -1
  892. package/src/components/table.schema.d.ts +0 -159
  893. package/src/components/table.schema.js +0 -173
  894. package/src/components/table.schema.js.map +0 -1
  895. package/src/handlebars/helpers.d.ts +0 -348
  896. package/src/handlebars/helpers.js +0 -605
  897. package/src/handlebars/helpers.js.map +0 -1
  898. package/src/handlebars/index.d.ts +0 -193
  899. package/src/handlebars/index.js +0 -350
  900. package/src/handlebars/index.js.map +0 -1
  901. package/src/index.d.ts +0 -50
  902. package/src/index.js +0 -192
  903. package/src/index.js.map +0 -1
  904. package/src/layouts/base.d.ts +0 -88
  905. package/src/layouts/base.js +0 -227
  906. package/src/layouts/base.js.map +0 -1
  907. package/src/layouts/index.d.ts +0 -7
  908. package/src/layouts/index.js +0 -25
  909. package/src/layouts/index.js.map +0 -1
  910. package/src/layouts/presets.d.ts +0 -133
  911. package/src/layouts/presets.js +0 -277
  912. package/src/layouts/presets.js.map +0 -1
  913. package/src/pages/consent.d.ts +0 -116
  914. package/src/pages/consent.js +0 -218
  915. package/src/pages/consent.js.map +0 -1
  916. package/src/pages/error.d.ts +0 -100
  917. package/src/pages/error.js +0 -263
  918. package/src/pages/error.js.map +0 -1
  919. package/src/pages/index.d.ts +0 -8
  920. package/src/pages/index.js +0 -27
  921. package/src/pages/index.js.map +0 -1
  922. package/src/react/Alert.d.ts +0 -101
  923. package/src/react/Alert.js +0 -51
  924. package/src/react/Alert.js.map +0 -1
  925. package/src/react/Badge.d.ts +0 -100
  926. package/src/react/Badge.js +0 -55
  927. package/src/react/Badge.js.map +0 -1
  928. package/src/react/Button.d.ts +0 -108
  929. package/src/react/Button.js +0 -52
  930. package/src/react/Button.js.map +0 -1
  931. package/src/react/Card.d.ts +0 -103
  932. package/src/react/Card.js +0 -55
  933. package/src/react/Card.js.map +0 -1
  934. package/src/react/hooks/context.d.ts +0 -178
  935. package/src/react/hooks/context.js +0 -287
  936. package/src/react/hooks/context.js.map +0 -1
  937. package/src/react/hooks/index.d.ts +0 -41
  938. package/src/react/hooks/index.js +0 -61
  939. package/src/react/hooks/index.js.map +0 -1
  940. package/src/react/hooks/tools.d.ts +0 -283
  941. package/src/react/hooks/tools.js +0 -465
  942. package/src/react/hooks/tools.js.map +0 -1
  943. package/src/react/index.d.ts +0 -80
  944. package/src/react/index.js +0 -113
  945. package/src/react/index.js.map +0 -1
  946. package/src/react/types.d.ts +0 -105
  947. package/src/react/types.js +0 -12
  948. package/src/react/types.js.map +0 -1
  949. package/src/react/utils.d.ts +0 -42
  950. package/src/react/utils.js +0 -99
  951. package/src/react/utils.js.map +0 -1
  952. package/src/registry/index.d.ts +0 -45
  953. package/src/registry/index.js +0 -67
  954. package/src/registry/index.js.map +0 -1
  955. package/src/registry/render-template.d.ts +0 -86
  956. package/src/registry/render-template.js +0 -239
  957. package/src/registry/render-template.js.map +0 -1
  958. package/src/registry/tool-ui.registry.d.ts +0 -260
  959. package/src/registry/tool-ui.registry.js +0 -438
  960. package/src/registry/tool-ui.registry.js.map +0 -1
  961. package/src/registry/uri-utils.d.ts +0 -55
  962. package/src/registry/uri-utils.js +0 -97
  963. package/src/registry/uri-utils.js.map +0 -1
  964. package/src/render/index.d.ts +0 -7
  965. package/src/render/index.js +0 -14
  966. package/src/render/index.js.map +0 -1
  967. package/src/render/prerender.d.ts +0 -56
  968. package/src/render/prerender.js +0 -98
  969. package/src/render/prerender.js.map +0 -1
  970. package/src/renderers/cache.d.ts +0 -144
  971. package/src/renderers/cache.js +0 -240
  972. package/src/renderers/cache.js.map +0 -1
  973. package/src/renderers/html.renderer.d.ts +0 -122
  974. package/src/renderers/html.renderer.js +0 -204
  975. package/src/renderers/html.renderer.js.map +0 -1
  976. package/src/renderers/index.d.ts +0 -35
  977. package/src/renderers/index.js +0 -70
  978. package/src/renderers/index.js.map +0 -1
  979. package/src/renderers/mdx.renderer.d.ts +0 -119
  980. package/src/renderers/mdx.renderer.js +0 -305
  981. package/src/renderers/mdx.renderer.js.map +0 -1
  982. package/src/renderers/react.renderer.d.ts +0 -95
  983. package/src/renderers/react.renderer.js +0 -260
  984. package/src/renderers/react.renderer.js.map +0 -1
  985. package/src/renderers/registry.d.ts +0 -133
  986. package/src/renderers/registry.js +0 -232
  987. package/src/renderers/registry.js.map +0 -1
  988. package/src/renderers/types.d.ts +0 -341
  989. package/src/renderers/types.js +0 -9
  990. package/src/renderers/types.js.map +0 -1
  991. package/src/renderers/utils/detect.d.ts +0 -106
  992. package/src/renderers/utils/detect.js +0 -267
  993. package/src/renderers/utils/detect.js.map +0 -1
  994. package/src/renderers/utils/hash.d.ts +0 -39
  995. package/src/renderers/utils/hash.js +0 -75
  996. package/src/renderers/utils/hash.js.map +0 -1
  997. package/src/renderers/utils/index.d.ts +0 -8
  998. package/src/renderers/utils/index.js +0 -28
  999. package/src/renderers/utils/index.js.map +0 -1
  1000. package/src/renderers/utils/transpiler.d.ts +0 -88
  1001. package/src/renderers/utils/transpiler.js +0 -215
  1002. package/src/renderers/utils/transpiler.js.map +0 -1
  1003. package/src/runtime/adapters/html.adapter.d.ts +0 -58
  1004. package/src/runtime/adapters/html.adapter.js +0 -131
  1005. package/src/runtime/adapters/html.adapter.js.map +0 -1
  1006. package/src/runtime/adapters/index.d.ts +0 -25
  1007. package/src/runtime/adapters/index.js +0 -54
  1008. package/src/runtime/adapters/index.js.map +0 -1
  1009. package/src/runtime/adapters/mdx.adapter.d.ts +0 -72
  1010. package/src/runtime/adapters/mdx.adapter.js +0 -241
  1011. package/src/runtime/adapters/mdx.adapter.js.map +0 -1
  1012. package/src/runtime/adapters/react.adapter.d.ts +0 -69
  1013. package/src/runtime/adapters/react.adapter.js +0 -245
  1014. package/src/runtime/adapters/react.adapter.js.map +0 -1
  1015. package/src/runtime/adapters/types.d.ts +0 -94
  1016. package/src/runtime/adapters/types.js +0 -11
  1017. package/src/runtime/adapters/types.js.map +0 -1
  1018. package/src/runtime/csp.d.ts +0 -37
  1019. package/src/runtime/csp.js +0 -140
  1020. package/src/runtime/csp.js.map +0 -1
  1021. package/src/runtime/index.d.ts +0 -16
  1022. package/src/runtime/index.js +0 -72
  1023. package/src/runtime/index.js.map +0 -1
  1024. package/src/runtime/mcp-bridge.d.ts +0 -100
  1025. package/src/runtime/mcp-bridge.js +0 -581
  1026. package/src/runtime/mcp-bridge.js.map +0 -1
  1027. package/src/runtime/renderer-runtime.d.ts +0 -132
  1028. package/src/runtime/renderer-runtime.js +0 -389
  1029. package/src/runtime/renderer-runtime.js.map +0 -1
  1030. package/src/runtime/sanitizer.d.ts +0 -171
  1031. package/src/runtime/sanitizer.js +0 -318
  1032. package/src/runtime/sanitizer.js.map +0 -1
  1033. package/src/runtime/types.d.ts +0 -414
  1034. package/src/runtime/types.js +0 -12
  1035. package/src/runtime/types.js.map +0 -1
  1036. package/src/runtime/wrapper.d.ts +0 -375
  1037. package/src/runtime/wrapper.js +0 -1793
  1038. package/src/runtime/wrapper.js.map +0 -1
  1039. package/src/styles/index.d.ts +0 -7
  1040. package/src/styles/index.js +0 -11
  1041. package/src/styles/index.js.map +0 -1
  1042. package/src/styles/variants.d.ts +0 -50
  1043. package/src/styles/variants.js +0 -175
  1044. package/src/styles/variants.js.map +0 -1
  1045. package/src/theme/cdn.d.ts +0 -194
  1046. package/src/theme/cdn.js +0 -375
  1047. package/src/theme/cdn.js.map +0 -1
  1048. package/src/theme/index.d.ts +0 -17
  1049. package/src/theme/index.js +0 -57
  1050. package/src/theme/index.js.map +0 -1
  1051. package/src/theme/platforms.d.ts +0 -106
  1052. package/src/theme/platforms.js +0 -161
  1053. package/src/theme/platforms.js.map +0 -1
  1054. package/src/theme/presets/github-openai.d.ts +0 -49
  1055. package/src/theme/presets/github-openai.js +0 -189
  1056. package/src/theme/presets/github-openai.js.map +0 -1
  1057. package/src/theme/presets/index.d.ts +0 -10
  1058. package/src/theme/presets/index.js +0 -17
  1059. package/src/theme/presets/index.js.map +0 -1
  1060. package/src/theme/theme.d.ts +0 -395
  1061. package/src/theme/theme.js +0 -332
  1062. package/src/theme/theme.js.map +0 -1
  1063. package/src/tool-template/builder.d.ts +0 -212
  1064. package/src/tool-template/builder.js +0 -397
  1065. package/src/tool-template/builder.js.map +0 -1
  1066. package/src/tool-template/index.d.ts +0 -15
  1067. package/src/tool-template/index.js +0 -38
  1068. package/src/tool-template/index.js.map +0 -1
  1069. package/src/types/index.d.ts +0 -13
  1070. package/src/types/index.js +0 -26
  1071. package/src/types/index.js.map +0 -1
  1072. package/src/types/ui-config.d.ts +0 -357
  1073. package/src/types/ui-config.js +0 -12
  1074. package/src/types/ui-config.js.map +0 -1
  1075. package/src/types/ui-runtime.d.ts +0 -965
  1076. package/src/types/ui-runtime.js +0 -117
  1077. package/src/types/ui-runtime.js.map +0 -1
  1078. package/src/validation/error-box.d.ts +0 -55
  1079. package/src/validation/error-box.js +0 -75
  1080. package/src/validation/error-box.js.map +0 -1
  1081. package/src/validation/index.d.ts +0 -12
  1082. package/src/validation/index.js +0 -21
  1083. package/src/validation/index.js.map +0 -1
  1084. package/src/validation/wrapper.d.ts +0 -96
  1085. package/src/validation/wrapper.js +0 -117
  1086. package/src/validation/wrapper.js.map +0 -1
  1087. package/src/web-components/core/attribute-parser.d.ts +0 -85
  1088. package/src/web-components/core/attribute-parser.js +0 -189
  1089. package/src/web-components/core/attribute-parser.js.map +0 -1
  1090. package/src/web-components/core/base-element.d.ts +0 -197
  1091. package/src/web-components/core/base-element.js +0 -289
  1092. package/src/web-components/core/base-element.js.map +0 -1
  1093. package/src/web-components/core/index.d.ts +0 -8
  1094. package/src/web-components/core/index.js +0 -18
  1095. package/src/web-components/core/index.js.map +0 -1
  1096. package/src/web-components/elements/fmcp-alert.d.ts +0 -45
  1097. package/src/web-components/elements/fmcp-alert.js +0 -93
  1098. package/src/web-components/elements/fmcp-alert.js.map +0 -1
  1099. package/src/web-components/elements/fmcp-badge.d.ts +0 -46
  1100. package/src/web-components/elements/fmcp-badge.js +0 -99
  1101. package/src/web-components/elements/fmcp-badge.js.map +0 -1
  1102. package/src/web-components/elements/fmcp-button.d.ts +0 -124
  1103. package/src/web-components/elements/fmcp-button.js +0 -233
  1104. package/src/web-components/elements/fmcp-button.js.map +0 -1
  1105. package/src/web-components/elements/fmcp-card.d.ts +0 -52
  1106. package/src/web-components/elements/fmcp-card.js +0 -115
  1107. package/src/web-components/elements/fmcp-card.js.map +0 -1
  1108. package/src/web-components/elements/fmcp-input.d.ts +0 -95
  1109. package/src/web-components/elements/fmcp-input.js +0 -248
  1110. package/src/web-components/elements/fmcp-input.js.map +0 -1
  1111. package/src/web-components/elements/fmcp-select.d.ts +0 -99
  1112. package/src/web-components/elements/fmcp-select.js +0 -243
  1113. package/src/web-components/elements/fmcp-select.js.map +0 -1
  1114. package/src/web-components/elements/index.d.ts +0 -12
  1115. package/src/web-components/elements/index.js +0 -34
  1116. package/src/web-components/elements/index.js.map +0 -1
  1117. package/src/web-components/index.d.ts +0 -49
  1118. package/src/web-components/index.js +0 -75
  1119. package/src/web-components/index.js.map +0 -1
  1120. package/src/web-components/register.d.ts +0 -56
  1121. package/src/web-components/register.js +0 -80
  1122. package/src/web-components/register.js.map +0 -1
  1123. package/src/web-components/types.d.ts +0 -121
  1124. package/src/web-components/types.js +0 -25
  1125. package/src/web-components/types.js.map +0 -1
  1126. package/src/widgets/index.d.ts +0 -7
  1127. package/src/widgets/index.js +0 -24
  1128. package/src/widgets/index.js.map +0 -1
  1129. package/src/widgets/progress.d.ts +0 -132
  1130. package/src/widgets/progress.js +0 -303
  1131. package/src/widgets/progress.js.map +0 -1
  1132. package/src/widgets/resource.d.ts +0 -162
  1133. package/src/widgets/resource.js +0 -340
  1134. package/src/widgets/resource.js.map +0 -1
@@ -0,0 +1,1882 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __esm = (fn, res) => function __init() {
9
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
10
+ };
11
+ var __export = (target, all) => {
12
+ for (var name in all)
13
+ __defProp(target, name, { get: all[name], enumerable: true });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from))
18
+ if (!__hasOwnProp.call(to, key) && key !== except)
19
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
20
+ }
21
+ return to;
22
+ };
23
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
24
+ // If the importer is in node compatibility mode or this is not an ESM
25
+ // file that has been converted to a CommonJS file using a Babel-
26
+ // compatible transform (i.e. "__esModule" has not been set), then set
27
+ // "default" to the CommonJS "module.exports" for node compatibility.
28
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
29
+ mod
30
+ ));
31
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
+
33
+ // libs/ui/src/utils/safe-stringify.ts
34
+ var init_safe_stringify = __esm({
35
+ "libs/ui/src/utils/safe-stringify.ts"() {
36
+ "use strict";
37
+ }
38
+ });
39
+
40
+ // libs/ui/src/utils/escape-html.ts
41
+ function escapeHtml(str) {
42
+ if (str === null || str === void 0) {
43
+ return "";
44
+ }
45
+ const s = String(str);
46
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
47
+ }
48
+ var init_escape_html = __esm({
49
+ "libs/ui/src/utils/escape-html.ts"() {
50
+ "use strict";
51
+ }
52
+ });
53
+
54
+ // libs/ui/src/utils/index.ts
55
+ var init_utils = __esm({
56
+ "libs/ui/src/utils/index.ts"() {
57
+ "use strict";
58
+ init_safe_stringify();
59
+ init_escape_html();
60
+ }
61
+ });
62
+
63
+ // libs/ui/src/handlebars/helpers.ts
64
+ function formatDate(date, format) {
65
+ if (date === null || date === void 0) {
66
+ return "";
67
+ }
68
+ let dateObj;
69
+ if (date instanceof Date) {
70
+ dateObj = date;
71
+ } else if (typeof date === "string" || typeof date === "number") {
72
+ dateObj = new Date(date);
73
+ } else {
74
+ return String(date);
75
+ }
76
+ if (isNaN(dateObj.getTime())) {
77
+ return String(date);
78
+ }
79
+ const options = {};
80
+ switch (format) {
81
+ case "short":
82
+ options.dateStyle = "short";
83
+ break;
84
+ case "medium":
85
+ options.dateStyle = "medium";
86
+ break;
87
+ case "long":
88
+ options.dateStyle = "long";
89
+ break;
90
+ case "full":
91
+ options.dateStyle = "full";
92
+ break;
93
+ case "time":
94
+ options.timeStyle = "short";
95
+ break;
96
+ case "datetime":
97
+ options.dateStyle = "medium";
98
+ options.timeStyle = "short";
99
+ break;
100
+ case "iso":
101
+ return dateObj.toISOString();
102
+ case "relative":
103
+ return formatRelativeDate(dateObj);
104
+ default:
105
+ options.dateStyle = "medium";
106
+ }
107
+ return new Intl.DateTimeFormat("en-US", options).format(dateObj);
108
+ }
109
+ function formatRelativeDate(date) {
110
+ const now = /* @__PURE__ */ new Date();
111
+ const diffMs = now.getTime() - date.getTime();
112
+ const diffSecs = Math.floor(diffMs / 1e3);
113
+ const diffMins = Math.floor(diffSecs / 60);
114
+ const diffHours = Math.floor(diffMins / 60);
115
+ const diffDays = Math.floor(diffHours / 24);
116
+ if (diffSecs < 60) {
117
+ return "just now";
118
+ } else if (diffMins < 60) {
119
+ return `${diffMins} minute${diffMins === 1 ? "" : "s"} ago`;
120
+ } else if (diffHours < 24) {
121
+ return `${diffHours} hour${diffHours === 1 ? "" : "s"} ago`;
122
+ } else if (diffDays < 7) {
123
+ return `${diffDays} day${diffDays === 1 ? "" : "s"} ago`;
124
+ } else {
125
+ return formatDate(date, "medium");
126
+ }
127
+ }
128
+ function formatCurrency(amount, currency) {
129
+ if (amount === null || amount === void 0) {
130
+ return "";
131
+ }
132
+ const num = typeof amount === "number" ? amount : parseFloat(String(amount));
133
+ if (isNaN(num)) {
134
+ return String(amount);
135
+ }
136
+ return new Intl.NumberFormat("en-US", {
137
+ style: "currency",
138
+ currency: typeof currency === "string" ? currency : "USD"
139
+ }).format(num);
140
+ }
141
+ function formatNumber(value, decimals) {
142
+ if (value === null || value === void 0) {
143
+ return "";
144
+ }
145
+ const num = typeof value === "number" ? value : parseFloat(String(value));
146
+ if (isNaN(num)) {
147
+ return String(value);
148
+ }
149
+ const options = {};
150
+ if (typeof decimals === "number") {
151
+ options.minimumFractionDigits = decimals;
152
+ options.maximumFractionDigits = decimals;
153
+ }
154
+ return new Intl.NumberFormat("en-US", options).format(num);
155
+ }
156
+ function jsonEmbed(data) {
157
+ const json2 = JSON.stringify(data ?? null);
158
+ return json2.replace(/</g, "\\u003c").replace(/>/g, "\\u003e").replace(/&/g, "\\u0026").replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029");
159
+ }
160
+ function json(data, pretty) {
161
+ return JSON.stringify(data ?? null, null, pretty ? 2 : void 0);
162
+ }
163
+ function eq(a, b) {
164
+ return a === b;
165
+ }
166
+ function ne(a, b) {
167
+ return a !== b;
168
+ }
169
+ function gt(a, b) {
170
+ return Number(a) > Number(b);
171
+ }
172
+ function gte(a, b) {
173
+ return Number(a) >= Number(b);
174
+ }
175
+ function lt(a, b) {
176
+ return Number(a) < Number(b);
177
+ }
178
+ function lte(a, b) {
179
+ return Number(a) <= Number(b);
180
+ }
181
+ function and(a, b) {
182
+ return Boolean(a) && Boolean(b);
183
+ }
184
+ function or(a, b) {
185
+ return Boolean(a) || Boolean(b);
186
+ }
187
+ function not(value) {
188
+ return !value;
189
+ }
190
+ function first(arr) {
191
+ if (!Array.isArray(arr)) return void 0;
192
+ return arr[0];
193
+ }
194
+ function last(arr) {
195
+ if (!Array.isArray(arr)) return void 0;
196
+ return arr[arr.length - 1];
197
+ }
198
+ function length(value) {
199
+ if (Array.isArray(value)) return value.length;
200
+ if (typeof value === "string") return value.length;
201
+ return 0;
202
+ }
203
+ function includes(arr, value) {
204
+ if (!Array.isArray(arr)) return false;
205
+ return arr.includes(value);
206
+ }
207
+ function join(arr, separator) {
208
+ if (!Array.isArray(arr)) return "";
209
+ return arr.join(typeof separator === "string" ? separator : ", ");
210
+ }
211
+ function uppercase(str) {
212
+ return String(str ?? "").toUpperCase();
213
+ }
214
+ function lowercase(str) {
215
+ return String(str ?? "").toLowerCase();
216
+ }
217
+ function capitalize(str) {
218
+ const s = String(str ?? "");
219
+ return s.charAt(0).toUpperCase() + s.slice(1).toLowerCase();
220
+ }
221
+ function truncate(str, maxLength, suffix) {
222
+ const s = String(str ?? "");
223
+ const len = typeof maxLength === "number" ? maxLength : 50;
224
+ const suf = typeof suffix === "string" ? suffix : "...";
225
+ if (s.length <= len) return s;
226
+ return s.slice(0, len - suf.length) + suf;
227
+ }
228
+ function defaultValue(value, defaultValue2) {
229
+ return value || defaultValue2;
230
+ }
231
+ function uniqueId(prefix) {
232
+ const id = ++idCounter;
233
+ return prefix ? `${prefix}-${id}` : `id-${id}`;
234
+ }
235
+ function resetUniqueIdCounter() {
236
+ idCounter = 0;
237
+ }
238
+ function classNames(...classes) {
239
+ return classes.filter(Boolean).map(String).join(" ");
240
+ }
241
+ var idCounter, builtinHelpers;
242
+ var init_helpers = __esm({
243
+ "libs/ui/src/handlebars/helpers.ts"() {
244
+ "use strict";
245
+ init_utils();
246
+ idCounter = 0;
247
+ builtinHelpers = {
248
+ // Escaping
249
+ escapeHtml,
250
+ // Formatting
251
+ formatDate,
252
+ formatCurrency,
253
+ formatNumber,
254
+ json,
255
+ jsonEmbed,
256
+ // Comparison
257
+ eq,
258
+ ne,
259
+ gt,
260
+ gte,
261
+ lt,
262
+ lte,
263
+ // Logical
264
+ and,
265
+ or,
266
+ not,
267
+ // Array
268
+ first,
269
+ last,
270
+ length,
271
+ includes,
272
+ join,
273
+ // String
274
+ uppercase,
275
+ lowercase,
276
+ capitalize,
277
+ truncate,
278
+ // Utility
279
+ default: defaultValue,
280
+ uniqueId,
281
+ classNames
282
+ };
283
+ }
284
+ });
285
+
286
+ // libs/ui/src/handlebars/expression-extractor.ts
287
+ function extractExpressions(template) {
288
+ const expressions = [];
289
+ const lines = template.split("\n");
290
+ const positionMap = buildPositionMap(template);
291
+ let match;
292
+ EXPRESSION_REGEX.lastIndex = 0;
293
+ while ((match = EXPRESSION_REGEX.exec(template)) !== null) {
294
+ const fullExpression = match[0];
295
+ const prefix = match[1];
296
+ const content = match[2].trim();
297
+ const position = positionMap.get(match.index) ?? { line: 1, column: 1 };
298
+ let type = "variable";
299
+ let helperName;
300
+ if (prefix === "/") {
301
+ type = "block-close";
302
+ helperName = content;
303
+ } else if (prefix === "#") {
304
+ type = "block";
305
+ const parts = content.split(/\s+/);
306
+ helperName = parts[0];
307
+ } else {
308
+ const parts = content.split(/\s+/);
309
+ if (parts.length > 1 && !content.startsWith("(")) {
310
+ const firstToken = parts[0];
311
+ if (!firstToken.includes(".") && !KEYWORDS.has(firstToken)) {
312
+ type = "helper";
313
+ helperName = firstToken;
314
+ }
315
+ }
316
+ }
317
+ const paths = extractPathsFromContent(content);
318
+ for (const path of paths) {
319
+ expressions.push({
320
+ path,
321
+ fullExpression,
322
+ line: position.line,
323
+ column: position.column,
324
+ type,
325
+ helperName
326
+ });
327
+ }
328
+ if (paths.length === 0 && type === "variable") {
329
+ const cleanContent = content.trim();
330
+ if (!KEYWORDS.has(cleanContent) && !cleanContent.includes(" ") && !cleanContent.startsWith("(")) {
331
+ }
332
+ }
333
+ }
334
+ return expressions;
335
+ }
336
+ function extractPathsFromContent(content) {
337
+ const paths = [];
338
+ let match;
339
+ const regex = new RegExp(PATH_REGEX.source, "g");
340
+ while ((match = regex.exec(content)) !== null) {
341
+ paths.push(match[0]);
342
+ }
343
+ return paths;
344
+ }
345
+ function buildPositionMap(template) {
346
+ const map = /* @__PURE__ */ new Map();
347
+ let line = 1;
348
+ let column = 1;
349
+ for (let i = 0; i < template.length; i++) {
350
+ map.set(i, { line, column });
351
+ if (template[i] === "\n") {
352
+ line++;
353
+ column = 1;
354
+ } else {
355
+ column++;
356
+ }
357
+ }
358
+ return map;
359
+ }
360
+ function extractVariablePaths(template) {
361
+ const expressions = extractExpressions(template);
362
+ const paths = new Set(expressions.map((e) => e.path));
363
+ return Array.from(paths);
364
+ }
365
+ function extractOutputPaths(template) {
366
+ return extractVariablePaths(template).filter((p) => p.startsWith("output."));
367
+ }
368
+ function extractInputPaths(template) {
369
+ return extractVariablePaths(template).filter((p) => p.startsWith("input."));
370
+ }
371
+ function extractStructuredContentPaths(template) {
372
+ return extractVariablePaths(template).filter((p) => p.startsWith("structuredContent."));
373
+ }
374
+ function extractAll(template) {
375
+ const expressions = extractExpressions(template);
376
+ const paths = [...new Set(expressions.map((e) => e.path))];
377
+ return {
378
+ expressions,
379
+ paths,
380
+ outputPaths: paths.filter((p) => p.startsWith("output.")),
381
+ inputPaths: paths.filter((p) => p.startsWith("input.")),
382
+ structuredContentPaths: paths.filter((p) => p.startsWith("structuredContent."))
383
+ };
384
+ }
385
+ function hasVariablePaths(template) {
386
+ return extractVariablePaths(template).length > 0;
387
+ }
388
+ function getExpressionAt(template, line, column) {
389
+ const expressions = extractExpressions(template);
390
+ return expressions.find((expr) => {
391
+ if (expr.line !== line) return false;
392
+ const exprEnd = expr.column + expr.fullExpression.length;
393
+ return column >= expr.column && column <= exprEnd;
394
+ });
395
+ }
396
+ function normalizePath(path) {
397
+ return path.replace(/\.\d+\./g, ".[].").replace(/\.\d+$/g, ".[]").replace(/\[\d+\]/g, ".[]");
398
+ }
399
+ var EXPRESSION_REGEX, PATH_REGEX, KEYWORDS;
400
+ var init_expression_extractor = __esm({
401
+ "libs/ui/src/handlebars/expression-extractor.ts"() {
402
+ "use strict";
403
+ EXPRESSION_REGEX = /\{\{\{?(?!!)(#|\/)?([^}]+?)\}?\}\}/g;
404
+ PATH_REGEX = /\b(output|input|structuredContent)(\.[a-zA-Z_$][a-zA-Z0-9_$]*|\.\[[^\]]+\])+/g;
405
+ KEYWORDS = /* @__PURE__ */ new Set(["this", "else", "@index", "@key", "@first", "@last", "@root"]);
406
+ }
407
+ });
408
+
409
+ // libs/ui/src/handlebars/index.ts
410
+ var handlebars_exports = {};
411
+ __export(handlebars_exports, {
412
+ HandlebarsRenderer: () => HandlebarsRenderer,
413
+ and: () => and,
414
+ builtinHelpers: () => builtinHelpers,
415
+ capitalize: () => capitalize,
416
+ classNames: () => classNames,
417
+ containsHandlebars: () => containsHandlebars,
418
+ createHandlebarsRenderer: () => createHandlebarsRenderer,
419
+ defaultValue: () => defaultValue,
420
+ eq: () => eq,
421
+ escapeHtml: () => escapeHtml,
422
+ extractAll: () => extractAll,
423
+ extractExpressions: () => extractExpressions,
424
+ extractInputPaths: () => extractInputPaths,
425
+ extractOutputPaths: () => extractOutputPaths,
426
+ extractStructuredContentPaths: () => extractStructuredContentPaths,
427
+ extractVariablePaths: () => extractVariablePaths,
428
+ first: () => first,
429
+ formatCurrency: () => formatCurrency,
430
+ formatDate: () => formatDate,
431
+ formatNumber: () => formatNumber,
432
+ getExpressionAt: () => getExpressionAt,
433
+ gt: () => gt,
434
+ gte: () => gte,
435
+ hasVariablePaths: () => hasVariablePaths,
436
+ includes: () => includes,
437
+ isHandlebarsAvailable: () => isHandlebarsAvailable,
438
+ join: () => join,
439
+ json: () => json,
440
+ jsonEmbed: () => jsonEmbed,
441
+ last: () => last,
442
+ length: () => length,
443
+ lowercase: () => lowercase,
444
+ lt: () => lt,
445
+ lte: () => lte,
446
+ ne: () => ne,
447
+ normalizePath: () => normalizePath,
448
+ not: () => not,
449
+ or: () => or,
450
+ renderTemplate: () => renderTemplate,
451
+ resetUniqueIdCounter: () => resetUniqueIdCounter,
452
+ truncate: () => truncate,
453
+ uniqueId: () => uniqueId,
454
+ uppercase: () => uppercase
455
+ });
456
+ async function loadHandlebars() {
457
+ if (Handlebars !== null) {
458
+ return Handlebars;
459
+ }
460
+ try {
461
+ Handlebars = await import("handlebars");
462
+ return Handlebars;
463
+ } catch {
464
+ throw new Error("Handlebars is required for template rendering. Install it: npm install handlebars");
465
+ }
466
+ }
467
+ async function isHandlebarsAvailable() {
468
+ try {
469
+ await loadHandlebars();
470
+ return true;
471
+ } catch {
472
+ return false;
473
+ }
474
+ }
475
+ function createHandlebarsRenderer(options) {
476
+ return new HandlebarsRenderer(options);
477
+ }
478
+ async function renderTemplate(template, context) {
479
+ const renderer = createHandlebarsRenderer();
480
+ return renderer.render(template, context);
481
+ }
482
+ function containsHandlebars(template) {
483
+ return HandlebarsRenderer.containsHandlebars(template);
484
+ }
485
+ var Handlebars, HandlebarsRenderer;
486
+ var init_handlebars = __esm({
487
+ "libs/ui/src/handlebars/index.ts"() {
488
+ "use strict";
489
+ init_helpers();
490
+ init_helpers();
491
+ init_expression_extractor();
492
+ Handlebars = null;
493
+ HandlebarsRenderer = class {
494
+ options;
495
+ compiledTemplates = /* @__PURE__ */ new Map();
496
+ initialized = false;
497
+ hbs = null;
498
+ constructor(options = {}) {
499
+ this.options = {
500
+ strict: false,
501
+ autoEscape: true,
502
+ ...options
503
+ };
504
+ }
505
+ /**
506
+ * Initialize the renderer with Handlebars.
507
+ */
508
+ async init() {
509
+ if (this.initialized) return;
510
+ this.hbs = await loadHandlebars();
511
+ for (const [name, helper] of Object.entries(builtinHelpers)) {
512
+ this.hbs.registerHelper(name, helper);
513
+ }
514
+ if (this.options.helpers) {
515
+ for (const [name, helper] of Object.entries(this.options.helpers)) {
516
+ this.hbs.registerHelper(name, helper);
517
+ }
518
+ }
519
+ if (this.options.partials) {
520
+ for (const [name, template] of Object.entries(this.options.partials)) {
521
+ this.hbs.registerPartial(name, template);
522
+ }
523
+ }
524
+ this.initialized = true;
525
+ }
526
+ /**
527
+ * Render a Handlebars template.
528
+ *
529
+ * @param template - Template string
530
+ * @param context - Render context with input/output
531
+ * @returns Rendered HTML string
532
+ */
533
+ async render(template, context) {
534
+ await this.init();
535
+ if (!this.hbs) {
536
+ throw new Error("Handlebars not initialized");
537
+ }
538
+ let compiled = this.compiledTemplates.get(template);
539
+ if (!compiled) {
540
+ compiled = this.hbs.compile(template, {
541
+ strict: this.options.strict,
542
+ noEscape: !this.options.autoEscape
543
+ });
544
+ this.compiledTemplates.set(template, compiled);
545
+ }
546
+ const data = {
547
+ input: context.input ?? {},
548
+ output: context.output ?? {},
549
+ structuredContent: context.structuredContent,
550
+ // Also expose at root level for convenience
551
+ ...context.input,
552
+ ...typeof context.output === "object" && context.output !== null ? context.output : {}
553
+ };
554
+ try {
555
+ return compiled(data);
556
+ } catch (error) {
557
+ throw new Error(`Template rendering failed: ${error instanceof Error ? error.message : String(error)}`);
558
+ }
559
+ }
560
+ /**
561
+ * Render a template synchronously.
562
+ *
563
+ * Note: Requires Handlebars to be pre-loaded. Use `render()` for async loading.
564
+ *
565
+ * @param template - Template string
566
+ * @param context - Render context
567
+ * @returns Rendered HTML string
568
+ */
569
+ renderSync(template, context) {
570
+ if (!this.initialized || !this.hbs) {
571
+ throw new Error("HandlebarsRenderer not initialized. Call render() first or use initSync().");
572
+ }
573
+ let compiled = this.compiledTemplates.get(template);
574
+ if (!compiled) {
575
+ compiled = this.hbs.compile(template, {
576
+ strict: this.options.strict,
577
+ noEscape: !this.options.autoEscape
578
+ });
579
+ this.compiledTemplates.set(template, compiled);
580
+ }
581
+ const data = {
582
+ input: context.input ?? {},
583
+ output: context.output ?? {},
584
+ structuredContent: context.structuredContent,
585
+ ...context.input,
586
+ ...typeof context.output === "object" && context.output !== null ? context.output : {}
587
+ };
588
+ return compiled(data);
589
+ }
590
+ /**
591
+ * Initialize synchronously (for environments where Handlebars is already loaded).
592
+ */
593
+ initSync(handlebars) {
594
+ this.hbs = handlebars;
595
+ for (const [name, helper] of Object.entries(builtinHelpers)) {
596
+ this.hbs.registerHelper(name, helper);
597
+ }
598
+ if (this.options.helpers) {
599
+ for (const [name, helper] of Object.entries(this.options.helpers)) {
600
+ this.hbs.registerHelper(name, helper);
601
+ }
602
+ }
603
+ if (this.options.partials) {
604
+ for (const [name, template] of Object.entries(this.options.partials)) {
605
+ this.hbs.registerPartial(name, template);
606
+ }
607
+ }
608
+ this.initialized = true;
609
+ }
610
+ /**
611
+ * Register a custom helper.
612
+ *
613
+ * @param name - Helper name
614
+ * @param fn - Helper function
615
+ */
616
+ registerHelper(name, fn) {
617
+ if (this.hbs) {
618
+ this.hbs.registerHelper(name, fn);
619
+ }
620
+ if (!this.options.helpers) {
621
+ this.options.helpers = {};
622
+ }
623
+ this.options.helpers[name] = fn;
624
+ }
625
+ /**
626
+ * Register a partial template.
627
+ *
628
+ * @param name - Partial name
629
+ * @param template - Partial template string
630
+ */
631
+ registerPartial(name, template) {
632
+ if (this.hbs) {
633
+ this.hbs.registerPartial(name, template);
634
+ }
635
+ if (!this.options.partials) {
636
+ this.options.partials = {};
637
+ }
638
+ this.options.partials[name] = template;
639
+ }
640
+ /**
641
+ * Clear compiled template cache.
642
+ */
643
+ clearCache() {
644
+ this.compiledTemplates.clear();
645
+ }
646
+ /**
647
+ * Check if a template string contains Handlebars syntax.
648
+ *
649
+ * @param template - Template string to check
650
+ * @returns true if contains {{...}} syntax
651
+ */
652
+ static containsHandlebars(template) {
653
+ return /\{\{(?!!)[\s\S]*?\}\}/.test(template);
654
+ }
655
+ /**
656
+ * Check if the renderer is initialized.
657
+ */
658
+ get isInitialized() {
659
+ return this.initialized;
660
+ }
661
+ };
662
+ }
663
+ });
664
+
665
+ // libs/ui/src/renderers/index.ts
666
+ var renderers_exports = {};
667
+ __export(renderers_exports, {
668
+ HtmlRenderer: () => HtmlRenderer,
669
+ MdxRenderer: () => MdxRenderer,
670
+ ReactRenderer: () => ReactRenderer,
671
+ RendererRegistry: () => RendererRegistry,
672
+ TranspileCache: () => TranspileCache,
673
+ buildHydrationScript: () => buildHydrationScript,
674
+ buildMdxHydrationScript: () => buildMdxHydrationScript,
675
+ containsJsx: () => containsJsx,
676
+ containsMdxSyntax: () => containsMdxSyntax,
677
+ detectTemplateType: () => detectTemplateType,
678
+ executeTranspiledCode: () => executeTranspiledCode,
679
+ hashCombined: () => hashCombined,
680
+ hashString: () => hashString,
681
+ htmlRenderer: () => htmlRenderer,
682
+ isHash: () => isHash,
683
+ isPlainHtml: () => isPlainHtml,
684
+ isReactComponent: () => isReactComponent,
685
+ isSwcAvailable: () => isSwcAvailable,
686
+ isTemplateBuilderFunction: () => isTemplateBuilderFunction,
687
+ mdxRenderer: () => mdxRenderer,
688
+ reactRenderer: () => reactRenderer,
689
+ renderCache: () => renderCache,
690
+ rendererRegistry: () => rendererRegistry,
691
+ transpileAndExecute: () => transpileAndExecute,
692
+ transpileCache: () => transpileCache,
693
+ transpileJsx: () => transpileJsx
694
+ });
695
+ module.exports = __toCommonJS(renderers_exports);
696
+
697
+ // libs/ui/src/renderers/utils/hash.ts
698
+ function hashString(source) {
699
+ let hash = 2166136261;
700
+ for (let i = 0; i < source.length; i++) {
701
+ hash ^= source.charCodeAt(i);
702
+ hash = hash * 16777619 >>> 0;
703
+ }
704
+ return hash.toString(36);
705
+ }
706
+ function hashCombined(...values) {
707
+ const combined = values.map((v) => {
708
+ if (typeof v === "string") return v;
709
+ if (v === null) return "null";
710
+ if (v === void 0) return "undefined";
711
+ try {
712
+ return JSON.stringify(v);
713
+ } catch {
714
+ return String(v);
715
+ }
716
+ }).join("|");
717
+ return hashString(combined);
718
+ }
719
+ function isHash(value) {
720
+ return /^[0-9a-z]{5,10}$/i.test(value);
721
+ }
722
+
723
+ // libs/ui/src/renderers/cache.ts
724
+ var TranspileCache = class {
725
+ cache = /* @__PURE__ */ new Map();
726
+ maxSize;
727
+ ttl;
728
+ /** Cache statistics */
729
+ stats = {
730
+ hits: 0,
731
+ misses: 0,
732
+ evictions: 0
733
+ };
734
+ constructor(options = {}) {
735
+ this.maxSize = options.maxSize ?? 500;
736
+ this.ttl = options.ttl ?? 0;
737
+ }
738
+ /**
739
+ * Get a cached transpile result by source content.
740
+ *
741
+ * @param source - Source code to look up
742
+ * @returns Cached result or undefined if not found/expired
743
+ */
744
+ get(source) {
745
+ const key = hashString(source);
746
+ return this.getByKey(key);
747
+ }
748
+ /**
749
+ * Get a cached transpile result by hash key.
750
+ *
751
+ * @param key - Hash key
752
+ * @returns Cached result or undefined if not found/expired
753
+ */
754
+ getByKey(key) {
755
+ const entry = this.cache.get(key);
756
+ if (!entry) {
757
+ this.stats.misses++;
758
+ return void 0;
759
+ }
760
+ if (this.ttl > 0 && Date.now() - entry.timestamp > this.ttl) {
761
+ this.cache.delete(key);
762
+ this.stats.misses++;
763
+ return void 0;
764
+ }
765
+ this.cache.delete(key);
766
+ entry.accessCount++;
767
+ this.cache.set(key, entry);
768
+ this.stats.hits++;
769
+ return entry.value;
770
+ }
771
+ /**
772
+ * Store a transpile result.
773
+ *
774
+ * @param source - Source code (used to generate key)
775
+ * @param value - Transpile result to cache
776
+ * @returns The hash key used for storage
777
+ */
778
+ set(source, value) {
779
+ const key = hashString(source);
780
+ this.setByKey(key, value);
781
+ return key;
782
+ }
783
+ /**
784
+ * Store a transpile result by hash key.
785
+ *
786
+ * @param key - Hash key
787
+ * @param value - Transpile result to cache
788
+ */
789
+ setByKey(key, value) {
790
+ if (this.cache.size >= this.maxSize && !this.cache.has(key)) {
791
+ const oldestKey = this.cache.keys().next().value;
792
+ if (oldestKey) {
793
+ this.cache.delete(oldestKey);
794
+ this.stats.evictions++;
795
+ }
796
+ }
797
+ this.cache.set(key, {
798
+ value,
799
+ timestamp: Date.now(),
800
+ accessCount: 1
801
+ });
802
+ }
803
+ /**
804
+ * Check if a source is cached.
805
+ *
806
+ * @param source - Source code to check
807
+ * @returns True if cached and not expired
808
+ */
809
+ has(source) {
810
+ const key = hashString(source);
811
+ return this.hasByKey(key);
812
+ }
813
+ /**
814
+ * Check if a key is cached.
815
+ *
816
+ * @param key - Hash key to check
817
+ * @returns True if cached and not expired
818
+ */
819
+ hasByKey(key) {
820
+ const entry = this.cache.get(key);
821
+ if (!entry) return false;
822
+ if (this.ttl > 0 && Date.now() - entry.timestamp > this.ttl) {
823
+ this.cache.delete(key);
824
+ return false;
825
+ }
826
+ return true;
827
+ }
828
+ /**
829
+ * Delete a cached entry by source.
830
+ *
831
+ * @param source - Source code to delete
832
+ * @returns True if entry was deleted
833
+ */
834
+ delete(source) {
835
+ const key = hashString(source);
836
+ return this.cache.delete(key);
837
+ }
838
+ /**
839
+ * Clear all cached entries.
840
+ */
841
+ clear() {
842
+ this.cache.clear();
843
+ this.stats = { hits: 0, misses: 0, evictions: 0 };
844
+ }
845
+ /**
846
+ * Get current cache size.
847
+ */
848
+ get size() {
849
+ return this.cache.size;
850
+ }
851
+ /**
852
+ * Get cache statistics.
853
+ */
854
+ getStats() {
855
+ const total = this.stats.hits + this.stats.misses;
856
+ return {
857
+ ...this.stats,
858
+ size: this.cache.size,
859
+ hitRate: total > 0 ? this.stats.hits / total : 0
860
+ };
861
+ }
862
+ };
863
+ var transpileCache = new TranspileCache({ maxSize: 500 });
864
+ var renderCache = new TranspileCache({
865
+ maxSize: 1e3,
866
+ ttl: 5 * 60 * 1e3
867
+ // 5 minutes
868
+ });
869
+ var ComponentCache = class {
870
+ cache = /* @__PURE__ */ new Map();
871
+ maxSize;
872
+ constructor(maxSize = 200) {
873
+ this.maxSize = maxSize;
874
+ }
875
+ get(key) {
876
+ const entry = this.cache.get(key);
877
+ if (!entry) return void 0;
878
+ this.cache.delete(key);
879
+ this.cache.set(key, entry);
880
+ return entry.value;
881
+ }
882
+ set(key, value) {
883
+ if (this.cache.size >= this.maxSize && !this.cache.has(key)) {
884
+ const oldestKey = this.cache.keys().next().value;
885
+ if (oldestKey) {
886
+ this.cache.delete(oldestKey);
887
+ }
888
+ }
889
+ this.cache.set(key, { value, timestamp: Date.now() });
890
+ }
891
+ has(key) {
892
+ return this.cache.has(key);
893
+ }
894
+ delete(key) {
895
+ return this.cache.delete(key);
896
+ }
897
+ clear() {
898
+ this.cache.clear();
899
+ }
900
+ get size() {
901
+ return this.cache.size;
902
+ }
903
+ };
904
+ var componentCache = new ComponentCache();
905
+
906
+ // libs/ui/src/theme/platforms.ts
907
+ var OPENAI_PLATFORM = {
908
+ id: "openai",
909
+ name: "OpenAI",
910
+ supportsWidgets: true,
911
+ supportsTailwind: true,
912
+ supportsHtmx: true,
913
+ networkMode: "full",
914
+ scriptStrategy: "cdn",
915
+ options: {
916
+ sdk: "apps-sdk",
917
+ version: "1.0"
918
+ }
919
+ };
920
+ var CLAUDE_PLATFORM = {
921
+ id: "claude",
922
+ name: "Claude (Artifacts)",
923
+ supportsWidgets: true,
924
+ supportsTailwind: true,
925
+ supportsHtmx: false,
926
+ // Network blocked, HTMX won't work for API calls
927
+ networkMode: "blocked",
928
+ scriptStrategy: "inline",
929
+ maxInlineSize: 100 * 1024,
930
+ // 100KB limit for artifacts
931
+ cspRestrictions: ["script-src 'unsafe-inline'", "connect-src 'none'"],
932
+ options: {
933
+ mode: "artifacts",
934
+ framework: "react"
935
+ // Claude artifacts prefer React
936
+ }
937
+ };
938
+
939
+ // libs/ui/src/renderers/utils/detect.ts
940
+ function isReactComponent(value) {
941
+ if (typeof value !== "function") {
942
+ return false;
943
+ }
944
+ const fn = value;
945
+ const typeofSymbol = fn.$$typeof;
946
+ if (typeofSymbol) {
947
+ const symbolString = typeofSymbol.toString();
948
+ return symbolString.includes("react.memo") || symbolString.includes("react.forward_ref") || symbolString.includes("react.lazy");
949
+ }
950
+ if (fn.prototype?.isReactComponent) {
951
+ return true;
952
+ }
953
+ if (fn.name && /^[A-Z]/.test(fn.name)) {
954
+ return true;
955
+ }
956
+ return false;
957
+ }
958
+ function isTemplateBuilderFunction(fn) {
959
+ if (isReactComponent(fn)) {
960
+ return false;
961
+ }
962
+ if (fn.name && /^[A-Z]/.test(fn.name)) {
963
+ return false;
964
+ }
965
+ return true;
966
+ }
967
+ function containsJsx(source) {
968
+ if (/<[A-Z][a-zA-Z0-9]*(\s|>|\/)/.test(source)) {
969
+ return true;
970
+ }
971
+ if (/<[A-Z][a-zA-Z0-9]*[^>]*\/>/.test(source)) {
972
+ return true;
973
+ }
974
+ if (/<[a-z]+[^>]*\{[^}]+\}/.test(source)) {
975
+ return true;
976
+ }
977
+ if (/\s(className|onClick|onChange|onSubmit|htmlFor)=/.test(source)) {
978
+ return true;
979
+ }
980
+ if (/<>|<\/>|<React\.Fragment>/.test(source)) {
981
+ return true;
982
+ }
983
+ if (/=>\s*\(?\s*</.test(source)) {
984
+ return true;
985
+ }
986
+ if (/return\s*\(?\s*</.test(source)) {
987
+ return true;
988
+ }
989
+ return false;
990
+ }
991
+ function containsMdxSyntax(source) {
992
+ if (/<[A-Z][a-zA-Z0-9]*/.test(source)) {
993
+ return true;
994
+ }
995
+ if (/^(import|export)\s/m.test(source)) {
996
+ return true;
997
+ }
998
+ if (/\s(className|onClick|onChange|onSubmit|htmlFor|dangerouslySetInnerHTML)=/.test(source)) {
999
+ return true;
1000
+ }
1001
+ if (/\{[^}"'\n]*\}/.test(source) && !/=\s*["'][^"']*\{/.test(source)) {
1002
+ return true;
1003
+ }
1004
+ if (/^---[\s\S]*?---/m.test(source)) {
1005
+ return true;
1006
+ }
1007
+ if (/<>|<\/>/.test(source)) {
1008
+ return true;
1009
+ }
1010
+ return false;
1011
+ }
1012
+ function isPlainHtml(source) {
1013
+ return !containsJsx(source) && !containsMdxSyntax(source);
1014
+ }
1015
+ function detectTemplateType(template) {
1016
+ if (typeof template === "function") {
1017
+ if (isReactComponent(template)) {
1018
+ return {
1019
+ type: "react",
1020
+ confidence: 0.9,
1021
+ reason: "Function detected as React component (PascalCase name or React symbols)"
1022
+ };
1023
+ }
1024
+ return {
1025
+ type: "html-function",
1026
+ confidence: 0.8,
1027
+ reason: "Function assumed to be HTML template builder"
1028
+ };
1029
+ }
1030
+ if (typeof template === "string") {
1031
+ if (containsMdxSyntax(template)) {
1032
+ const hasMarkdown = /^#{1,6}\s|^\*\s|^\d+\.\s|^-\s/m.test(template);
1033
+ if (hasMarkdown) {
1034
+ return {
1035
+ type: "mdx",
1036
+ confidence: 0.9,
1037
+ reason: "String contains Markdown with JSX components"
1038
+ };
1039
+ }
1040
+ return {
1041
+ type: "jsx-string",
1042
+ confidence: 0.8,
1043
+ reason: "String contains JSX syntax"
1044
+ };
1045
+ }
1046
+ if (containsJsx(template)) {
1047
+ return {
1048
+ type: "jsx-string",
1049
+ confidence: 0.85,
1050
+ reason: "String contains JSX component tags or expressions"
1051
+ };
1052
+ }
1053
+ return {
1054
+ type: "html-string",
1055
+ confidence: 1,
1056
+ reason: "Plain HTML string"
1057
+ };
1058
+ }
1059
+ return {
1060
+ type: "html-string",
1061
+ confidence: 0.5,
1062
+ reason: "Unknown template type, defaulting to HTML"
1063
+ };
1064
+ }
1065
+
1066
+ // libs/ui/src/renderers/html.renderer.ts
1067
+ var handlebarsRenderer = null;
1068
+ async function loadHandlebarsRenderer() {
1069
+ if (handlebarsRenderer !== null) {
1070
+ return handlebarsRenderer;
1071
+ }
1072
+ try {
1073
+ const handlebarsModule = await Promise.resolve().then(() => (init_handlebars(), handlebars_exports));
1074
+ const { HandlebarsRenderer: HandlebarsRenderer2 } = handlebarsModule;
1075
+ const renderer = new HandlebarsRenderer2();
1076
+ handlebarsRenderer = {
1077
+ render: (template, context) => renderer.render(template, {
1078
+ input: context.input ?? {},
1079
+ output: context.output,
1080
+ structuredContent: context.structuredContent
1081
+ }),
1082
+ containsHandlebars: (template) => HandlebarsRenderer2.containsHandlebars(template)
1083
+ };
1084
+ return handlebarsRenderer;
1085
+ } catch {
1086
+ return null;
1087
+ }
1088
+ }
1089
+ function containsHandlebars2(template) {
1090
+ return /\{\{(?!!)[\s\S]*?\}\}/.test(template);
1091
+ }
1092
+ var HtmlRenderer = class {
1093
+ type = "html";
1094
+ priority = 0;
1095
+ // Lowest priority - fallback renderer
1096
+ /**
1097
+ * Check if this renderer can handle the given template.
1098
+ *
1099
+ * Accepts:
1100
+ * - Any string (assumed to be HTML, with or without Handlebars)
1101
+ * - Functions that are template builders (not React components)
1102
+ */
1103
+ canHandle(template) {
1104
+ if (typeof template === "string") {
1105
+ return true;
1106
+ }
1107
+ if (typeof template === "function") {
1108
+ return isTemplateBuilderFunction(template);
1109
+ }
1110
+ return false;
1111
+ }
1112
+ /**
1113
+ * Check if a template uses Handlebars syntax.
1114
+ *
1115
+ * @param template - Template string to check
1116
+ * @returns true if template contains {{...}} syntax
1117
+ */
1118
+ usesHandlebars(template) {
1119
+ return containsHandlebars2(template);
1120
+ }
1121
+ /**
1122
+ * Transpile the template.
1123
+ *
1124
+ * For HTML templates, no transpilation is needed.
1125
+ * This method returns a dummy result for consistency.
1126
+ */
1127
+ async transpile(template, _options) {
1128
+ const source = typeof template === "string" ? template : template.toString();
1129
+ const hash = hashString(source);
1130
+ return {
1131
+ code: "",
1132
+ // No transpiled code needed
1133
+ hash,
1134
+ cached: true
1135
+ // Always "cached" since no work is done
1136
+ };
1137
+ }
1138
+ /**
1139
+ * Render the template to HTML string.
1140
+ *
1141
+ * For static strings without Handlebars, returns the string directly.
1142
+ * For strings with Handlebars syntax, processes with HandlebarsRenderer.
1143
+ * For functions, calls the function with the context.
1144
+ */
1145
+ async render(template, context, _options) {
1146
+ if (typeof template === "string") {
1147
+ if (containsHandlebars2(template)) {
1148
+ return this.renderHandlebars(template, context);
1149
+ }
1150
+ return template;
1151
+ }
1152
+ if (typeof template === "function") {
1153
+ const result = template(context);
1154
+ if (typeof result === "string" && containsHandlebars2(result)) {
1155
+ return this.renderHandlebars(result, context);
1156
+ }
1157
+ return result;
1158
+ }
1159
+ return String(template);
1160
+ }
1161
+ /**
1162
+ * Render Handlebars template with context.
1163
+ */
1164
+ async renderHandlebars(template, context) {
1165
+ const renderer = await loadHandlebarsRenderer();
1166
+ if (!renderer) {
1167
+ console.warn(
1168
+ "[@frontmcp/ui] Template contains Handlebars syntax but handlebars is not installed. Install it for template interpolation: npm install handlebars"
1169
+ );
1170
+ return template;
1171
+ }
1172
+ return renderer.render(template, {
1173
+ input: context.input,
1174
+ output: context.output,
1175
+ structuredContent: context.structuredContent
1176
+ });
1177
+ }
1178
+ /**
1179
+ * Get runtime scripts for client-side functionality.
1180
+ *
1181
+ * HTML templates don't need additional runtime scripts.
1182
+ */
1183
+ getRuntimeScripts(_platform) {
1184
+ return {
1185
+ headScripts: "",
1186
+ isInline: false
1187
+ };
1188
+ }
1189
+ };
1190
+ var htmlRenderer = new HtmlRenderer();
1191
+
1192
+ // libs/ui/src/renderers/registry.ts
1193
+ var RendererRegistry = class {
1194
+ renderers = /* @__PURE__ */ new Map();
1195
+ sortedRenderers = [];
1196
+ defaultRenderer = "html";
1197
+ debug;
1198
+ constructor(options = {}) {
1199
+ this.debug = options.debug ?? false;
1200
+ this.register(htmlRenderer);
1201
+ }
1202
+ /**
1203
+ * Register a renderer.
1204
+ *
1205
+ * Renderers are sorted by priority (highest first) for detection.
1206
+ *
1207
+ * @param renderer - Renderer to register
1208
+ */
1209
+ register(renderer) {
1210
+ this.renderers.set(renderer.type, renderer);
1211
+ this.updateSortedList();
1212
+ if (this.debug) {
1213
+ console.log(`[RendererRegistry] Registered renderer: ${renderer.type} (priority: ${renderer.priority})`);
1214
+ }
1215
+ }
1216
+ /**
1217
+ * Unregister a renderer.
1218
+ *
1219
+ * @param type - Type of renderer to remove
1220
+ * @returns True if renderer was removed
1221
+ */
1222
+ unregister(type) {
1223
+ const removed = this.renderers.delete(type);
1224
+ if (removed) {
1225
+ this.updateSortedList();
1226
+ }
1227
+ return removed;
1228
+ }
1229
+ /**
1230
+ * Get a renderer by type.
1231
+ *
1232
+ * @param type - Renderer type
1233
+ * @returns Renderer or undefined if not found
1234
+ */
1235
+ get(type) {
1236
+ return this.renderers.get(type);
1237
+ }
1238
+ /**
1239
+ * Check if a renderer type is registered.
1240
+ *
1241
+ * @param type - Renderer type
1242
+ * @returns True if registered
1243
+ */
1244
+ has(type) {
1245
+ return this.renderers.has(type);
1246
+ }
1247
+ /**
1248
+ * Get all registered renderer types.
1249
+ *
1250
+ * @returns Array of renderer types
1251
+ */
1252
+ getTypes() {
1253
+ return Array.from(this.renderers.keys());
1254
+ }
1255
+ /**
1256
+ * Auto-detect the renderer for a template.
1257
+ *
1258
+ * Checks renderers in priority order (highest first).
1259
+ * Returns HTML renderer as fallback.
1260
+ *
1261
+ * @param template - Template to detect
1262
+ * @returns Detection result with renderer and confidence
1263
+ */
1264
+ detect(template) {
1265
+ for (const renderer of this.sortedRenderers) {
1266
+ if (renderer.canHandle(template)) {
1267
+ const result = {
1268
+ renderer,
1269
+ confidence: renderer.priority / 100,
1270
+ // Normalize to 0-1
1271
+ reason: `Matched by ${renderer.type} renderer`
1272
+ };
1273
+ if (this.debug) {
1274
+ console.log(`[RendererRegistry] Detected template as ${renderer.type} (confidence: ${result.confidence})`);
1275
+ }
1276
+ return result;
1277
+ }
1278
+ }
1279
+ const fallback = this.renderers.get(this.defaultRenderer);
1280
+ if (!fallback) {
1281
+ throw new Error(`Default renderer '${this.defaultRenderer}' not found`);
1282
+ }
1283
+ return {
1284
+ renderer: fallback,
1285
+ confidence: 0.5,
1286
+ reason: "Fallback to default HTML renderer"
1287
+ };
1288
+ }
1289
+ /**
1290
+ * Render a template with auto-detection.
1291
+ *
1292
+ * @param template - Template to render (React, MDX, or HTML)
1293
+ * @param context - Template context with input/output
1294
+ * @param options - Render options
1295
+ * @returns Rendered result with HTML and metadata
1296
+ */
1297
+ async render(template, context, options = {}) {
1298
+ const platform = options.platform ?? OPENAI_PLATFORM;
1299
+ const detection = this.detect(template);
1300
+ const renderer = detection.renderer;
1301
+ if (this.debug) {
1302
+ console.log(`[RendererRegistry] Rendering with ${renderer.type} renderer`);
1303
+ }
1304
+ const transpileResult = await renderer.transpile(template);
1305
+ const html = await renderer.render(template, context, options);
1306
+ const runtimeScripts = renderer.getRuntimeScripts(platform);
1307
+ return {
1308
+ html,
1309
+ rendererType: renderer.type,
1310
+ transpileCached: transpileResult.cached,
1311
+ runtimeScripts
1312
+ };
1313
+ }
1314
+ /**
1315
+ * Render with a specific renderer type.
1316
+ *
1317
+ * @param type - Renderer type to use
1318
+ * @param template - Template to render
1319
+ * @param context - Template context
1320
+ * @param options - Render options
1321
+ * @returns Rendered result
1322
+ */
1323
+ async renderWith(type, template, context, options = {}) {
1324
+ const renderer = this.renderers.get(type);
1325
+ if (!renderer) {
1326
+ throw new Error(`Renderer '${type}' not registered`);
1327
+ }
1328
+ const platform = options.platform ?? OPENAI_PLATFORM;
1329
+ const transpileResult = await renderer.transpile(template);
1330
+ const html = await renderer.render(template, context, options);
1331
+ const runtimeScripts = renderer.getRuntimeScripts(platform);
1332
+ return {
1333
+ html,
1334
+ rendererType: type,
1335
+ transpileCached: transpileResult.cached,
1336
+ runtimeScripts
1337
+ };
1338
+ }
1339
+ /**
1340
+ * Update the sorted renderer list by priority.
1341
+ */
1342
+ updateSortedList() {
1343
+ this.sortedRenderers = Array.from(this.renderers.values()).sort((a, b) => b.priority - a.priority);
1344
+ }
1345
+ /**
1346
+ * Set the default renderer type.
1347
+ *
1348
+ * @param type - Renderer type to use as default
1349
+ */
1350
+ setDefault(type) {
1351
+ if (!this.renderers.has(type)) {
1352
+ throw new Error(`Cannot set default to unregistered renderer '${type}'`);
1353
+ }
1354
+ this.defaultRenderer = type;
1355
+ }
1356
+ /**
1357
+ * Get registry statistics.
1358
+ */
1359
+ getStats() {
1360
+ return {
1361
+ registeredRenderers: this.getTypes(),
1362
+ defaultRenderer: this.defaultRenderer,
1363
+ priorityOrder: this.sortedRenderers.map((r) => ({
1364
+ type: r.type,
1365
+ priority: r.priority
1366
+ }))
1367
+ };
1368
+ }
1369
+ };
1370
+ var rendererRegistry = new RendererRegistry();
1371
+
1372
+ // libs/ui/src/renderers/utils/transpiler.ts
1373
+ var DEFAULT_SWC_OPTIONS = {
1374
+ typescript: true,
1375
+ jsx: true,
1376
+ jsxRuntime: "automatic",
1377
+ development: false
1378
+ };
1379
+ var swcTransform = null;
1380
+ async function loadSwcTransform() {
1381
+ if (swcTransform !== null) {
1382
+ return swcTransform;
1383
+ }
1384
+ try {
1385
+ const swc = await import("@swc/core");
1386
+ swcTransform = swc.transform;
1387
+ return swcTransform;
1388
+ } catch {
1389
+ console.warn(
1390
+ "[@frontmcp/ui] @swc/core not available. Runtime JSX transpilation disabled. Install @swc/core to enable: npm install @swc/core"
1391
+ );
1392
+ return null;
1393
+ }
1394
+ }
1395
+ async function transpileJsx(source, options = {}) {
1396
+ const hash = hashString(source);
1397
+ const cached = transpileCache.getByKey(hash);
1398
+ if (cached) {
1399
+ return { ...cached, cached: true };
1400
+ }
1401
+ const transform = await loadSwcTransform();
1402
+ if (!transform) {
1403
+ throw new Error(
1404
+ "Runtime JSX transpilation requires @swc/core. Either install @swc/core or use pre-compiled React components."
1405
+ );
1406
+ }
1407
+ const opts = { ...DEFAULT_SWC_OPTIONS, ...options };
1408
+ const swcOptions = {
1409
+ jsc: {
1410
+ parser: {
1411
+ syntax: opts.typescript ? "typescript" : "ecmascript",
1412
+ tsx: opts.jsx,
1413
+ jsx: opts.jsx
1414
+ },
1415
+ transform: {
1416
+ react: {
1417
+ runtime: opts.jsxRuntime,
1418
+ development: opts.development
1419
+ }
1420
+ },
1421
+ target: "es2020"
1422
+ },
1423
+ module: {
1424
+ type: "commonjs"
1425
+ }
1426
+ };
1427
+ const result = await transform(source, swcOptions);
1428
+ const transpileResult = {
1429
+ code: result.code,
1430
+ hash,
1431
+ cached: false
1432
+ };
1433
+ transpileCache.setByKey(hash, transpileResult);
1434
+ return transpileResult;
1435
+ }
1436
+ async function isSwcAvailable() {
1437
+ const transform = await loadSwcTransform();
1438
+ return transform !== null;
1439
+ }
1440
+ async function executeTranspiledCode(code, context = {}) {
1441
+ let React;
1442
+ let jsxRuntime;
1443
+ try {
1444
+ React = await import("react");
1445
+ jsxRuntime = await import("react/jsx-runtime");
1446
+ } catch {
1447
+ throw new Error("React is required for JSX templates. Install react: npm install react react-dom");
1448
+ }
1449
+ const exports2 = {};
1450
+ const module2 = { exports: exports2 };
1451
+ const require2 = (id) => {
1452
+ switch (id) {
1453
+ case "react":
1454
+ return React;
1455
+ case "react/jsx-runtime":
1456
+ return jsxRuntime;
1457
+ case "react/jsx-dev-runtime":
1458
+ return jsxRuntime;
1459
+ default:
1460
+ if (context[id]) {
1461
+ return context[id];
1462
+ }
1463
+ throw new Error(`Module '${id}' not available in JSX template context`);
1464
+ }
1465
+ };
1466
+ try {
1467
+ const fn = new Function("exports", "require", "module", "__filename", "__dirname", "React", "context", code);
1468
+ fn(exports2, require2, module2, "template.js", "/", React, context);
1469
+ return module2.exports["default"] || module2.exports[Object.keys(module2.exports)[0]] || module2.exports;
1470
+ } catch (error) {
1471
+ throw new Error(`Failed to execute transpiled JSX: ${error instanceof Error ? error.message : String(error)}`);
1472
+ }
1473
+ }
1474
+ async function transpileAndExecute(source, context = {}) {
1475
+ const result = await transpileJsx(source);
1476
+ return executeTranspiledCode(result.code, context);
1477
+ }
1478
+
1479
+ // libs/ui/src/renderers/react.renderer.ts
1480
+ var REACT_CDN = {
1481
+ react: "https://esm.sh/react@19",
1482
+ reactDom: "https://esm.sh/react-dom@19/client"
1483
+ };
1484
+ var INLINE_REACT_PLACEHOLDER = `
1485
+ // React runtime not available inline yet.
1486
+ // For blocked-network platforms, use pre-rendered HTML templates.
1487
+ console.warn('[FrontMCP] React hydration not available on this platform.');
1488
+ `;
1489
+ var ReactRenderer = class {
1490
+ type = "react";
1491
+ priority = 20;
1492
+ // Higher priority than HTML
1493
+ /**
1494
+ * Lazy-loaded React modules.
1495
+ */
1496
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1497
+ React = null;
1498
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1499
+ ReactDOMServer = null;
1500
+ /**
1501
+ * Check if this renderer can handle the given template.
1502
+ *
1503
+ * Accepts:
1504
+ * - React component functions (imported, already transpiled)
1505
+ * - Strings containing JSX syntax
1506
+ */
1507
+ canHandle(template) {
1508
+ if (typeof template === "function" && isReactComponent(template)) {
1509
+ return true;
1510
+ }
1511
+ if (typeof template === "string" && containsJsx(template)) {
1512
+ return true;
1513
+ }
1514
+ return false;
1515
+ }
1516
+ /**
1517
+ * Transpile the template if needed.
1518
+ *
1519
+ * For imported React components, no transpilation is needed.
1520
+ * For JSX strings, SWC transpilation is performed.
1521
+ */
1522
+ async transpile(template, options) {
1523
+ if (typeof template === "function") {
1524
+ const hash = hashString(template.toString());
1525
+ return {
1526
+ code: "",
1527
+ // No transpiled code for already-compiled components
1528
+ hash,
1529
+ cached: true
1530
+ };
1531
+ }
1532
+ if (typeof template === "string") {
1533
+ return transpileJsx(template, {
1534
+ development: options?.sourceMaps ?? false
1535
+ });
1536
+ }
1537
+ throw new Error("Invalid template type for ReactRenderer");
1538
+ }
1539
+ /**
1540
+ * Render the template to HTML string using react-dom/server.
1541
+ */
1542
+ async render(template, context, options) {
1543
+ await this.loadReact();
1544
+ let Component;
1545
+ if (typeof template === "function") {
1546
+ Component = template;
1547
+ } else if (typeof template === "string") {
1548
+ const transpiled = await this.transpile(template);
1549
+ const cached = transpileCache.getByKey(`exec:${transpiled.hash}`);
1550
+ if (cached) {
1551
+ Component = cached.code;
1552
+ } else {
1553
+ Component = await executeTranspiledCode(transpiled.code, {
1554
+ // Provide any additional MDX components if specified
1555
+ ...options?.mdxComponents
1556
+ });
1557
+ transpileCache.setByKey(`exec:${transpiled.hash}`, {
1558
+ code: Component,
1559
+ hash: transpiled.hash,
1560
+ cached: false
1561
+ });
1562
+ }
1563
+ } else {
1564
+ throw new Error("Invalid template type for ReactRenderer");
1565
+ }
1566
+ const props = {
1567
+ input: context.input,
1568
+ output: context.output,
1569
+ structuredContent: context.structuredContent,
1570
+ helpers: context.helpers
1571
+ };
1572
+ const element = this.React.createElement(Component, props);
1573
+ const html = this.ReactDOMServer.renderToString(element);
1574
+ if (options?.hydrate) {
1575
+ const componentName = Component.name || "Component";
1576
+ const escapedProps = JSON.stringify(props).replace(/&/g, "&amp;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1577
+ return `<div data-hydrate="${componentName}" data-props='${escapedProps}'>${html}</div>`;
1578
+ }
1579
+ return html;
1580
+ }
1581
+ /**
1582
+ * Get runtime scripts for client-side functionality.
1583
+ */
1584
+ getRuntimeScripts(platform) {
1585
+ if (platform.networkMode === "blocked") {
1586
+ return {
1587
+ headScripts: "",
1588
+ inlineScripts: INLINE_REACT_PLACEHOLDER,
1589
+ isInline: true
1590
+ };
1591
+ }
1592
+ return {
1593
+ headScripts: `
1594
+ <script crossorigin src="${REACT_CDN.react}"></script>
1595
+ <script crossorigin src="${REACT_CDN.reactDom}"></script>
1596
+ `,
1597
+ isInline: false
1598
+ };
1599
+ }
1600
+ /**
1601
+ * Load React and ReactDOMServer modules.
1602
+ */
1603
+ async loadReact() {
1604
+ if (this.React && this.ReactDOMServer) {
1605
+ return;
1606
+ }
1607
+ try {
1608
+ this.React = await import("react");
1609
+ this.ReactDOMServer = await import("react-dom/server");
1610
+ } catch {
1611
+ throw new Error("React is required for ReactRenderer. Install react and react-dom: npm install react react-dom");
1612
+ }
1613
+ }
1614
+ };
1615
+ var reactRenderer = new ReactRenderer();
1616
+ function buildHydrationScript() {
1617
+ return `
1618
+ <script>
1619
+ (function() {
1620
+ // Wait for React to be available
1621
+ if (typeof React === 'undefined' || typeof ReactDOM === 'undefined') {
1622
+ console.warn('[FrontMCP] React not available for hydration');
1623
+ return;
1624
+ }
1625
+
1626
+ // Find all elements marked for hydration
1627
+ document.querySelectorAll('[data-hydrate]').forEach(function(root) {
1628
+ var componentName = root.getAttribute('data-hydrate');
1629
+ var propsJson = root.getAttribute('data-props');
1630
+ var props = propsJson ? JSON.parse(propsJson) : {};
1631
+
1632
+ // Look for the component in the global scope
1633
+ if (window.__frontmcp_components && window.__frontmcp_components[componentName]) {
1634
+ try {
1635
+ ReactDOM.hydrateRoot(root, React.createElement(
1636
+ window.__frontmcp_components[componentName],
1637
+ props
1638
+ ));
1639
+ } catch (e) {
1640
+ console.error('[FrontMCP] Hydration failed for', componentName, e);
1641
+ }
1642
+ }
1643
+ });
1644
+ })();
1645
+ </script>
1646
+ `;
1647
+ }
1648
+
1649
+ // libs/ui/src/renderers/mdx.renderer.ts
1650
+ var REACT_CDN2 = {
1651
+ react: "https://unpkg.com/react@18/umd/react.production.min.js",
1652
+ reactDom: "https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"
1653
+ };
1654
+ var INLINE_MDX_PLACEHOLDER = `
1655
+ // MDX runtime not available inline yet.
1656
+ // For blocked-network platforms, use pre-rendered HTML templates.
1657
+ console.warn('[FrontMCP] MDX hydration not available on this platform.');
1658
+ `;
1659
+ var MdxRenderer = class {
1660
+ type = "mdx";
1661
+ priority = 10;
1662
+ // Between HTML (0) and React (20)
1663
+ /**
1664
+ * Lazy-loaded modules.
1665
+ */
1666
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1667
+ React = null;
1668
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1669
+ ReactDOMServer = null;
1670
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1671
+ jsxRuntime = null;
1672
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1673
+ mdxEvaluate = null;
1674
+ /**
1675
+ * Check if this renderer can handle the given template.
1676
+ *
1677
+ * Accepts strings containing MDX syntax (Markdown + JSX).
1678
+ */
1679
+ canHandle(template) {
1680
+ if (typeof template !== "string") {
1681
+ return false;
1682
+ }
1683
+ return containsMdxSyntax(template);
1684
+ }
1685
+ /**
1686
+ * Transpile MDX to executable JavaScript.
1687
+ *
1688
+ * Uses @mdx-js/mdx to compile MDX source to a module.
1689
+ * Note: For MDX, we use evaluate() which combines compile + run,
1690
+ * so this method just returns the source hash for caching purposes.
1691
+ */
1692
+ async transpile(template, _options) {
1693
+ const hash = hashString(template);
1694
+ const cached = transpileCache.getByKey(hash);
1695
+ if (cached) {
1696
+ return { ...cached, cached: true };
1697
+ }
1698
+ const transpileResult = {
1699
+ code: template,
1700
+ // Store original MDX for evaluate()
1701
+ hash,
1702
+ cached: false
1703
+ };
1704
+ transpileCache.setByKey(hash, transpileResult);
1705
+ return transpileResult;
1706
+ }
1707
+ /**
1708
+ * Render MDX template to HTML string.
1709
+ *
1710
+ * Uses @mdx-js/mdx's evaluate() for clean compilation + execution,
1711
+ * then renders the resulting React component to HTML via SSR.
1712
+ */
1713
+ async render(template, context, options) {
1714
+ await this.loadReact();
1715
+ await this.loadMdx();
1716
+ if (!this.mdxEvaluate) {
1717
+ throw new Error("MDX compilation requires @mdx-js/mdx. Install it: npm install @mdx-js/mdx");
1718
+ }
1719
+ const templateHash = hashString(template);
1720
+ const cacheKey = `mdx-component:${templateHash}`;
1721
+ let Content = componentCache.get(cacheKey);
1722
+ if (!Content) {
1723
+ const result = await this.mdxEvaluate(template, {
1724
+ ...this.jsxRuntime,
1725
+ Fragment: this.React.Fragment,
1726
+ development: false
1727
+ });
1728
+ Content = result.default;
1729
+ componentCache.set(cacheKey, Content);
1730
+ }
1731
+ const mdxComponents = {
1732
+ // User-provided components from tool config
1733
+ ...options?.mdxComponents,
1734
+ // Wrapper that provides context to the content
1735
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
1736
+ wrapper: ({ children }) => {
1737
+ return this.React.createElement("div", { className: "mdx-content" }, children);
1738
+ }
1739
+ };
1740
+ const props = {
1741
+ input: context.input,
1742
+ output: context.output,
1743
+ structuredContent: context.structuredContent,
1744
+ helpers: context.helpers
1745
+ };
1746
+ const spreadProps = {
1747
+ ...props,
1748
+ ...typeof context.output === "object" && context.output !== null ? context.output : {}
1749
+ };
1750
+ const element = this.React.createElement(Content, {
1751
+ components: mdxComponents,
1752
+ ...spreadProps
1753
+ });
1754
+ const html = this.ReactDOMServer.renderToString(element);
1755
+ if (options?.hydrate) {
1756
+ const escapedProps = JSON.stringify(props).replace(/&/g, "&amp;").replace(/'/g, "&#39;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1757
+ return `<div data-mdx-hydrate="true" data-props='${escapedProps}'>${html}</div>`;
1758
+ }
1759
+ return html;
1760
+ }
1761
+ /**
1762
+ * Get runtime scripts for client-side functionality.
1763
+ */
1764
+ getRuntimeScripts(platform) {
1765
+ if (platform.networkMode === "blocked") {
1766
+ return {
1767
+ headScripts: "",
1768
+ inlineScripts: INLINE_MDX_PLACEHOLDER,
1769
+ isInline: true
1770
+ };
1771
+ }
1772
+ return {
1773
+ headScripts: `
1774
+ <script crossorigin src="${REACT_CDN2.react}"></script>
1775
+ <script crossorigin src="${REACT_CDN2.reactDom}"></script>
1776
+ `,
1777
+ isInline: false
1778
+ };
1779
+ }
1780
+ /**
1781
+ * Load React and ReactDOMServer modules.
1782
+ */
1783
+ async loadReact() {
1784
+ if (this.React && this.ReactDOMServer && this.jsxRuntime) {
1785
+ return;
1786
+ }
1787
+ try {
1788
+ const [react, reactDomServer, jsxRuntime] = await Promise.all([
1789
+ import("react"),
1790
+ import("react-dom/server"),
1791
+ import("react/jsx-runtime")
1792
+ ]);
1793
+ this.React = react;
1794
+ this.ReactDOMServer = reactDomServer;
1795
+ this.jsxRuntime = jsxRuntime;
1796
+ } catch {
1797
+ throw new Error("React is required for MdxRenderer. Install react and react-dom: npm install react react-dom");
1798
+ }
1799
+ }
1800
+ /**
1801
+ * Load @mdx-js/mdx evaluate function.
1802
+ *
1803
+ * evaluate() is the cleanest way to run MDX - it combines
1804
+ * compile and run in a single step, handling all the runtime
1805
+ * injection automatically.
1806
+ */
1807
+ async loadMdx() {
1808
+ if (this.mdxEvaluate) {
1809
+ return;
1810
+ }
1811
+ try {
1812
+ const mdx = await import("@mdx-js/mdx");
1813
+ this.mdxEvaluate = mdx.evaluate;
1814
+ } catch {
1815
+ console.warn(
1816
+ "[@frontmcp/ui] @mdx-js/mdx not available. MDX rendering disabled. Install @mdx-js/mdx to enable: npm install @mdx-js/mdx"
1817
+ );
1818
+ }
1819
+ }
1820
+ };
1821
+ var mdxRenderer = new MdxRenderer();
1822
+ function buildMdxHydrationScript() {
1823
+ return `
1824
+ <script>
1825
+ (function() {
1826
+ // MDX hydration requires React and component definitions
1827
+ if (typeof React === 'undefined' || typeof ReactDOM === 'undefined') {
1828
+ console.warn('[FrontMCP] React not available for MDX hydration');
1829
+ return;
1830
+ }
1831
+
1832
+ // Find all elements marked for MDX hydration
1833
+ document.querySelectorAll('[data-mdx-hydrate]').forEach(function(root) {
1834
+ var propsJson = root.getAttribute('data-props');
1835
+ var props = propsJson ? JSON.parse(propsJson) : {};
1836
+
1837
+ // MDX content is pre-rendered, hydration mainly attaches event handlers
1838
+ // For full interactivity, components need to be available client-side
1839
+ if (window.__frontmcp_mdx_content) {
1840
+ try {
1841
+ ReactDOM.hydrateRoot(root, React.createElement(
1842
+ window.__frontmcp_mdx_content,
1843
+ props
1844
+ ));
1845
+ } catch (e) {
1846
+ console.error('[FrontMCP] MDX hydration failed', e);
1847
+ }
1848
+ }
1849
+ });
1850
+ })();
1851
+ </script>
1852
+ `;
1853
+ }
1854
+ // Annotate the CommonJS export names for ESM import in node:
1855
+ 0 && (module.exports = {
1856
+ HtmlRenderer,
1857
+ MdxRenderer,
1858
+ ReactRenderer,
1859
+ RendererRegistry,
1860
+ TranspileCache,
1861
+ buildHydrationScript,
1862
+ buildMdxHydrationScript,
1863
+ containsJsx,
1864
+ containsMdxSyntax,
1865
+ detectTemplateType,
1866
+ executeTranspiledCode,
1867
+ hashCombined,
1868
+ hashString,
1869
+ htmlRenderer,
1870
+ isHash,
1871
+ isPlainHtml,
1872
+ isReactComponent,
1873
+ isSwcAvailable,
1874
+ isTemplateBuilderFunction,
1875
+ mdxRenderer,
1876
+ reactRenderer,
1877
+ renderCache,
1878
+ rendererRegistry,
1879
+ transpileAndExecute,
1880
+ transpileCache,
1881
+ transpileJsx
1882
+ });