@frontmcp/ui 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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 +26 -85
  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
@@ -1,294 +0,0 @@
1
- /**
2
- * Build-Time API for Tool UI
3
- *
4
- * Provides pre-compilation capabilities for tool UI templates.
5
- * Produces a **universal HTML document** that works across all platforms:
6
- * - OpenAI ChatGPT (Apps SDK)
7
- * - Anthropic Claude
8
- * - MCP Apps (ext-apps / SEP-1865)
9
- * - Google Gemini
10
- * - Any MCP-compatible host
11
- *
12
- * The build embeds the FrontMCP Bridge which auto-detects the host
13
- * at runtime and adapts its communication protocol accordingly.
14
- *
15
- * @packageDocumentation
16
- */
17
- import type { UITemplateConfig } from '../types';
18
- import type { ThemeConfig, DeepPartial } from '../theme';
19
- /**
20
- * Network access mode for the target environment.
21
- *
22
- * - `'open'`: Can fetch external resources (CDN scripts, fonts)
23
- * - `'blocked'`: Network is sandboxed, must inline everything
24
- */
25
- export type NetworkMode = 'open' | 'blocked';
26
- /**
27
- * Script loading strategy.
28
- *
29
- * - `'cdn'`: Load scripts from CDN (smaller HTML, requires network)
30
- * - `'inline'`: Embed scripts in HTML (larger, works offline)
31
- * - `'auto'`: Choose based on network mode
32
- */
33
- export type ScriptStrategy = 'cdn' | 'inline' | 'auto';
34
- /**
35
- * Build configuration options.
36
- * Capability-based rather than platform-specific.
37
- */
38
- export interface BuildConfig {
39
- /**
40
- * Network access mode.
41
- * @default 'open'
42
- */
43
- network?: NetworkMode;
44
- /**
45
- * Script loading strategy.
46
- * @default 'auto' (uses 'inline' if network is 'blocked')
47
- */
48
- scripts?: ScriptStrategy;
49
- /**
50
- * Whether to include the FrontMCP Bridge runtime.
51
- * The bridge auto-detects the host platform at runtime.
52
- * @default true
53
- */
54
- includeBridge?: boolean;
55
- /**
56
- * Whether to minify the output HTML.
57
- * @default false
58
- */
59
- minify?: boolean;
60
- }
61
- /**
62
- * Options for building a tool UI template.
63
- *
64
- * @example
65
- * ```typescript
66
- * const result = await buildToolUI({
67
- * template: {
68
- * template: (ctx) => `<div>${ctx.output.value}</div>`,
69
- * widgetAccessible: true,
70
- * },
71
- * toolName: 'my_tool',
72
- * input: { query: 'hello' },
73
- * output: { value: 'world' },
74
- * });
75
- *
76
- * // Universal HTML that works on any platform
77
- * console.log(result.html);
78
- * ```
79
- */
80
- export interface BuildOptions<In = unknown, Out = unknown> {
81
- /**
82
- * UI template configuration.
83
- */
84
- template: UITemplateConfig<In, Out>;
85
- /**
86
- * Name of the tool this UI is for.
87
- */
88
- toolName: string;
89
- /**
90
- * Tool input arguments.
91
- */
92
- input?: In;
93
- /**
94
- * Tool output/result data.
95
- */
96
- output?: Out;
97
- /**
98
- * Theme configuration override.
99
- */
100
- theme?: DeepPartial<ThemeConfig>;
101
- /**
102
- * Build configuration.
103
- * Controls network mode, script strategy, etc.
104
- */
105
- config?: BuildConfig;
106
- /**
107
- * Title for the HTML document.
108
- */
109
- title?: string;
110
- /** @deprecated Use `input` instead */
111
- sampleInput?: In;
112
- /** @deprecated Use `output` instead */
113
- sampleOutput?: Out;
114
- /** @deprecated Use `config.includeBridge` instead */
115
- injectAdapters?: boolean;
116
- /** @deprecated Use `config.minify` instead */
117
- minify?: boolean;
118
- /** @deprecated Platform is now auto-detected at runtime */
119
- platform?: string;
120
- }
121
- /**
122
- * MIME types for different host platforms.
123
- * Returned as suggestions - the MCP server response layer decides which to use.
124
- */
125
- export interface MimeTypes {
126
- /** For OpenAI ChatGPT Apps SDK */
127
- openai: 'text/html+skybridge';
128
- /** For Claude, MCP Apps, and standard MCP hosts */
129
- mcp: 'text/html+mcp';
130
- /** Generic HTML (fallback) */
131
- html: 'text/html';
132
- }
133
- /**
134
- * Result of building a tool UI template.
135
- */
136
- export interface BuildResult {
137
- /**
138
- * Complete HTML document string.
139
- * This is universal - works on all platforms.
140
- */
141
- html: string;
142
- /**
143
- * Size of the HTML in bytes.
144
- */
145
- size: number;
146
- /**
147
- * Size of the gzipped HTML in bytes (estimated).
148
- */
149
- gzipSize: number;
150
- /**
151
- * SHA-256 hash of the HTML content.
152
- */
153
- hash: string;
154
- /**
155
- * Suggested MIME types for different hosts.
156
- * The MCP server response layer should select based on detected client.
157
- */
158
- mimeTypes: MimeTypes;
159
- /**
160
- * Renderer type used (html, react, mdx).
161
- */
162
- rendererType: string;
163
- /**
164
- * Build timestamp (ISO 8601).
165
- */
166
- buildTime: string;
167
- /**
168
- * Build configuration used.
169
- */
170
- config: Required<BuildConfig>;
171
- }
172
- /**
173
- * Build a tool UI template into a universal HTML document.
174
- *
175
- * The output HTML:
176
- * - Works on ALL platforms (OpenAI, Claude, MCP Apps, Gemini, etc.)
177
- * - Includes FrontMCP Bridge that auto-detects the host at runtime
178
- * - Adapts communication protocol based on detected platform
179
- *
180
- * @example Basic usage
181
- * ```typescript
182
- * import { buildToolUI } from '@frontmcp/ui/build';
183
- *
184
- * const result = await buildToolUI({
185
- * template: { template: WeatherWidget },
186
- * toolName: 'get_weather',
187
- * output: { temperature: 72, conditions: 'sunny' },
188
- * });
189
- *
190
- * // Upload to CDN - works everywhere
191
- * await uploadToCDN('widgets/get_weather.html', result.html);
192
- * ```
193
- *
194
- * @example With blocked network (for Claude Artifacts)
195
- * ```typescript
196
- * const result = await buildToolUI({
197
- * template: { template: WeatherWidget },
198
- * toolName: 'get_weather',
199
- * config: { network: 'blocked' }, // Inlines all scripts
200
- * });
201
- * ```
202
- *
203
- * @example MCP server response
204
- * ```typescript
205
- * const result = await buildToolUI({ template, toolName, output });
206
- *
207
- * // In MCP server - choose MIME type based on client
208
- * const mimeType = isOpenAIClient(clientInfo)
209
- * ? result.mimeTypes.openai // 'text/html+skybridge'
210
- * : result.mimeTypes.mcp; // 'text/html+mcp'
211
- *
212
- * return { content: [{ type: mimeType, data: result.html }] };
213
- * ```
214
- */
215
- export declare function buildToolUI<In = unknown, Out = unknown>(options: BuildOptions<In, Out>): Promise<BuildResult>;
216
- /**
217
- * Options for building a static widget that reads from host at runtime.
218
- */
219
- export interface StaticWidgetOptions<In = unknown, Out = unknown> {
220
- /**
221
- * UI template configuration.
222
- */
223
- template: UITemplateConfig<In, Out>;
224
- /**
225
- * Name of the tool this UI is for.
226
- */
227
- toolName: string;
228
- /**
229
- * Theme configuration override.
230
- */
231
- theme?: DeepPartial<ThemeConfig>;
232
- /**
233
- * Build configuration.
234
- */
235
- config?: BuildConfig;
236
- /**
237
- * Title for the HTML document.
238
- */
239
- title?: string;
240
- }
241
- /**
242
- * Build a static widget that reads data from the host platform at runtime.
243
- *
244
- * Unlike buildToolUI which pre-renders with data, this creates a widget
245
- * that waits for data from the host platform via the FrontMCP Bridge.
246
- *
247
- * @example
248
- * ```typescript
249
- * import { buildStaticWidget } from '@frontmcp/ui/build';
250
- *
251
- * const widget = await buildStaticWidget({
252
- * template: {
253
- * template: (ctx) => `<div id="weather">${ctx.output?.temperature || 'Loading...'}</div>`,
254
- * },
255
- * toolName: 'get_weather',
256
- * });
257
- *
258
- * // This widget will receive data via FrontMCP Bridge
259
- * await uploadToCDN('widgets/get_weather.html', widget.html);
260
- * ```
261
- */
262
- export declare function buildStaticWidget<In = unknown, Out = unknown>(options: StaticWidgetOptions<In, Out>): Promise<BuildResult>;
263
- /**
264
- * @deprecated Use BuildConfig instead
265
- */
266
- export type BuildTargetPlatform = 'chatgpt' | 'claude' | 'mcp-apps' | 'universal';
267
- /**
268
- * @deprecated Use BuildOptions with config instead
269
- */
270
- export interface MultiBuildOptions<In = unknown, Out = unknown> extends Omit<BuildOptions<In, Out>, 'platform'> {
271
- platforms?: BuildTargetPlatform[];
272
- }
273
- /**
274
- * @deprecated Use BuildResult instead (same result for all platforms now)
275
- */
276
- export interface MultiBuildResult {
277
- bundles: Record<string, BuildResult>;
278
- totalTime: number;
279
- }
280
- /**
281
- * @deprecated Use buildToolUI with config.network instead
282
- */
283
- export declare function buildToolUIMulti<In = unknown, Out = unknown>(options: MultiBuildOptions<In, Out>): Promise<MultiBuildResult>;
284
- export { createTemplateHelpers } from '../runtime/wrapper';
285
- export type { UITemplateConfig, UITemplate, TemplateContext, TemplateHelpers, TemplateBuilderFn, UIContentSecurityPolicy, WidgetServingMode, WidgetDisplayMode, } from '../types';
286
- export type { ThemeConfig, PlatformCapabilities, DeepPartial } from '../theme';
287
- export { DEFAULT_THEME, OPENAI_PLATFORM, CLAUDE_PLATFORM } from '../theme';
288
- export { buildToolWidgetManifest, batchBuildWidgets, detectUIType, buildCSPForType, buildCSPMetaContent, getRendererAssets, buildToolResponseMeta, getOutputModeForClient, } from './widget-manifest';
289
- export type { BatchBuildOptions, BatchBuildResult, BuildMetaOptions } from './widget-manifest';
290
- export type { UIType, BundlingMode, DisplayMode, OutputMode, CSPDirectives, RendererAssets, WidgetManifest, WidgetConfig, BuildManifestResult, BuildManifestOptions, UIMetaFields, OpenAIMetaFields, ToolResponseMeta, RuntimePayload, } from '../types/ui-runtime';
291
- export { DEFAULT_CSP_BY_TYPE, DEFAULT_RENDERER_ASSETS, isUIType, isBundlingMode, isDisplayMode, isResourceMode, isOutputMode, } from '../types/ui-runtime';
292
- export type { ResourceMode, CDNResource } from '../types/ui-runtime';
293
- export { REACT_CDN, REACT_DOM_CDN, MARKED_CDN, HANDLEBARS_CDN, MDX_RUNTIME_CDN, TAILWIND_CDN, getDefaultAssets, buildCDNScriptTag, buildScriptsForUIType, buildTailwindScriptTag, hasInlineScripts, getURLsToPreFetch, buildCDNInfoForUIType, } from './cdn-resources';
294
- export type { CDNInfo } from './cdn-resources';
@@ -1,325 +0,0 @@
1
- "use strict";
2
- /**
3
- * Build-Time API for Tool UI
4
- *
5
- * Provides pre-compilation capabilities for tool UI templates.
6
- * Produces a **universal HTML document** that works across all platforms:
7
- * - OpenAI ChatGPT (Apps SDK)
8
- * - Anthropic Claude
9
- * - MCP Apps (ext-apps / SEP-1865)
10
- * - Google Gemini
11
- * - Any MCP-compatible host
12
- *
13
- * The build embeds the FrontMCP Bridge which auto-detects the host
14
- * at runtime and adapts its communication protocol accordingly.
15
- *
16
- * @packageDocumentation
17
- */
18
- Object.defineProperty(exports, "__esModule", { value: true });
19
- exports.buildCDNInfoForUIType = exports.getURLsToPreFetch = exports.hasInlineScripts = exports.buildTailwindScriptTag = exports.buildScriptsForUIType = exports.buildCDNScriptTag = exports.getDefaultAssets = exports.TAILWIND_CDN = exports.MDX_RUNTIME_CDN = exports.HANDLEBARS_CDN = exports.MARKED_CDN = exports.REACT_DOM_CDN = exports.REACT_CDN = exports.isOutputMode = exports.isResourceMode = exports.isDisplayMode = exports.isBundlingMode = exports.isUIType = exports.DEFAULT_RENDERER_ASSETS = exports.DEFAULT_CSP_BY_TYPE = exports.getOutputModeForClient = exports.buildToolResponseMeta = exports.getRendererAssets = exports.buildCSPMetaContent = exports.buildCSPForType = exports.detectUIType = exports.batchBuildWidgets = exports.buildToolWidgetManifest = exports.CLAUDE_PLATFORM = exports.OPENAI_PLATFORM = exports.DEFAULT_THEME = exports.createTemplateHelpers = void 0;
20
- exports.buildToolUI = buildToolUI;
21
- exports.buildStaticWidget = buildStaticWidget;
22
- exports.buildToolUIMulti = buildToolUIMulti;
23
- const wrapper_1 = require("../runtime/wrapper");
24
- const registry_1 = require("../renderers/registry");
25
- const renderers_1 = require("../renderers");
26
- // ============================================
27
- // Build Functions
28
- // ============================================
29
- /**
30
- * Build a tool UI template into a universal HTML document.
31
- *
32
- * The output HTML:
33
- * - Works on ALL platforms (OpenAI, Claude, MCP Apps, Gemini, etc.)
34
- * - Includes FrontMCP Bridge that auto-detects the host at runtime
35
- * - Adapts communication protocol based on detected platform
36
- *
37
- * @example Basic usage
38
- * ```typescript
39
- * import { buildToolUI } from '@frontmcp/ui/build';
40
- *
41
- * const result = await buildToolUI({
42
- * template: { template: WeatherWidget },
43
- * toolName: 'get_weather',
44
- * output: { temperature: 72, conditions: 'sunny' },
45
- * });
46
- *
47
- * // Upload to CDN - works everywhere
48
- * await uploadToCDN('widgets/get_weather.html', result.html);
49
- * ```
50
- *
51
- * @example With blocked network (for Claude Artifacts)
52
- * ```typescript
53
- * const result = await buildToolUI({
54
- * template: { template: WeatherWidget },
55
- * toolName: 'get_weather',
56
- * config: { network: 'blocked' }, // Inlines all scripts
57
- * });
58
- * ```
59
- *
60
- * @example MCP server response
61
- * ```typescript
62
- * const result = await buildToolUI({ template, toolName, output });
63
- *
64
- * // In MCP server - choose MIME type based on client
65
- * const mimeType = isOpenAIClient(clientInfo)
66
- * ? result.mimeTypes.openai // 'text/html+skybridge'
67
- * : result.mimeTypes.mcp; // 'text/html+mcp'
68
- *
69
- * return { content: [{ type: mimeType, data: result.html }] };
70
- * ```
71
- */
72
- async function buildToolUI(options) {
73
- const startTime = Date.now();
74
- // Normalize options (handle legacy aliases)
75
- const { template: uiConfig, toolName, input = options.sampleInput ?? {}, output = options.sampleOutput ?? {}, theme, title, config: userConfig = {}, injectAdapters, minify: legacyMinify, } = options;
76
- // Build final config with defaults
77
- const config = {
78
- network: userConfig.network ?? 'open',
79
- scripts: userConfig.scripts ?? 'auto',
80
- includeBridge: userConfig.includeBridge ?? injectAdapters ?? true,
81
- minify: userConfig.minify ?? legacyMinify ?? false,
82
- };
83
- // Resolve script strategy
84
- const useInlineScripts = config.scripts === 'inline' || (config.scripts === 'auto' && config.network === 'blocked');
85
- // Build template context
86
- const ctx = buildTemplateContext(input, output);
87
- // Render the template content
88
- const { html: content, rendererType } = await renderTemplate(uiConfig.template, ctx, {
89
- mdxComponents: uiConfig.mdxComponents,
90
- });
91
- // Wrap in universal HTML document
92
- const html = (0, wrapper_1.wrapToolUIUniversal)({
93
- content,
94
- toolName,
95
- input: input,
96
- output,
97
- csp: uiConfig.csp,
98
- widgetAccessible: uiConfig.widgetAccessible,
99
- title: title || `${toolName} Widget`,
100
- theme,
101
- includeBridge: config.includeBridge,
102
- inlineScripts: useInlineScripts,
103
- rendererType,
104
- });
105
- // Optionally minify
106
- const finalHtml = config.minify ? minifyHtml(html) : html;
107
- // Calculate size and hash
108
- const size = Buffer.byteLength(finalHtml, 'utf8');
109
- const gzipSize = estimateGzipSize(finalHtml);
110
- const hash = await calculateHash(finalHtml);
111
- return {
112
- html: finalHtml,
113
- size,
114
- gzipSize,
115
- hash,
116
- mimeTypes: {
117
- openai: 'text/html+skybridge',
118
- mcp: 'text/html+mcp',
119
- html: 'text/html',
120
- },
121
- rendererType,
122
- buildTime: new Date(startTime).toISOString(),
123
- config,
124
- };
125
- }
126
- // ============================================
127
- // Helper Functions
128
- // ============================================
129
- /**
130
- * Build template context from input/output.
131
- */
132
- function buildTemplateContext(input, output, structuredContent) {
133
- return {
134
- input,
135
- output,
136
- structuredContent,
137
- helpers: (0, wrapper_1.createTemplateHelpers)(),
138
- };
139
- }
140
- /**
141
- * Render a template using the appropriate renderer.
142
- */
143
- async function renderTemplate(template, ctx, options) {
144
- // Detect template type
145
- const detection = (0, renderers_1.detectTemplateType)(template);
146
- // For simple HTML templates, use direct execution (sync, faster)
147
- if (detection.type === 'html-function' || detection.type === 'html-string') {
148
- const html = typeof template === 'function'
149
- ? template(ctx)
150
- : template;
151
- return { html, rendererType: 'html' };
152
- }
153
- // For React/MDX, use the renderer registry
154
- try {
155
- const result = await registry_1.rendererRegistry.render(template, ctx, {
156
- mdxComponents: options?.mdxComponents,
157
- });
158
- return { html: result.html, rendererType: result.rendererType };
159
- }
160
- catch (error) {
161
- // Fallback to HTML if renderer fails
162
- console.warn(`[@frontmcp/ui/build] Renderer failed for ${detection.type}, falling back to HTML:`, error instanceof Error ? error.message : error);
163
- if (typeof template === 'function') {
164
- try {
165
- const html = template(ctx);
166
- return { html, rendererType: 'html-fallback' };
167
- }
168
- catch {
169
- return {
170
- html: `<div class="error">Template rendering failed</div>`,
171
- rendererType: 'error',
172
- };
173
- }
174
- }
175
- return { html: String(template), rendererType: 'html-fallback' };
176
- }
177
- }
178
- /**
179
- * Simple HTML minification (remove whitespace between tags).
180
- */
181
- function minifyHtml(html) {
182
- return html
183
- .replace(/>\s+</g, '><') // Remove whitespace between tags
184
- .replace(/\s{2,}/g, ' ') // Collapse multiple spaces
185
- .trim();
186
- }
187
- /**
188
- * Estimate gzipped size (rough approximation).
189
- */
190
- function estimateGzipSize(content) {
191
- // Rough estimate: gzip typically achieves 70-90% compression on HTML
192
- // We use 75% as a middle ground
193
- return Math.round(Buffer.byteLength(content, 'utf8') * 0.25);
194
- }
195
- /**
196
- * Calculate SHA-256 hash of content.
197
- */
198
- async function calculateHash(content) {
199
- // Use Web Crypto API if available, otherwise fallback to simple hash
200
- if (typeof crypto !== 'undefined' && crypto.subtle) {
201
- const encoder = new TextEncoder();
202
- const data = encoder.encode(content);
203
- const hashBuffer = await crypto.subtle.digest('SHA-256', data);
204
- const hashArray = Array.from(new Uint8Array(hashBuffer));
205
- return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');
206
- }
207
- // Simple fallback hash (not cryptographically secure, but good enough for cache keys)
208
- let hash = 0;
209
- for (let i = 0; i < content.length; i++) {
210
- const char = content.charCodeAt(i);
211
- hash = (hash << 5) - hash + char;
212
- hash = hash & hash; // Convert to 32-bit integer
213
- }
214
- return Math.abs(hash).toString(16).padStart(8, '0');
215
- }
216
- /**
217
- * Build a static widget that reads data from the host platform at runtime.
218
- *
219
- * Unlike buildToolUI which pre-renders with data, this creates a widget
220
- * that waits for data from the host platform via the FrontMCP Bridge.
221
- *
222
- * @example
223
- * ```typescript
224
- * import { buildStaticWidget } from '@frontmcp/ui/build';
225
- *
226
- * const widget = await buildStaticWidget({
227
- * template: {
228
- * template: (ctx) => `<div id="weather">${ctx.output?.temperature || 'Loading...'}</div>`,
229
- * },
230
- * toolName: 'get_weather',
231
- * });
232
- *
233
- * // This widget will receive data via FrontMCP Bridge
234
- * await uploadToCDN('widgets/get_weather.html', widget.html);
235
- * ```
236
- */
237
- async function buildStaticWidget(options) {
238
- const { template, toolName, theme, config, title } = options;
239
- // Build with empty data - the widget will receive data from host at runtime
240
- return buildToolUI({
241
- template,
242
- toolName,
243
- input: {},
244
- output: {},
245
- theme,
246
- config,
247
- title: title || `${toolName} Widget`,
248
- });
249
- }
250
- /**
251
- * @deprecated Use buildToolUI with config.network instead
252
- */
253
- async function buildToolUIMulti(options) {
254
- const startTime = Date.now();
255
- const { platforms = ['chatgpt', 'claude'], ...buildOptions } = options;
256
- // For backwards compatibility, build once and return same result for all platforms
257
- const result = await buildToolUI(buildOptions);
258
- const bundles = {};
259
- for (const platform of platforms) {
260
- bundles[platform] = {
261
- ...result,
262
- // Add legacy mimeType field for compatibility
263
- mimeType: platform === 'chatgpt' ? 'text/html+skybridge' : 'text/html+mcp',
264
- };
265
- }
266
- return {
267
- bundles,
268
- totalTime: Date.now() - startTime,
269
- };
270
- }
271
- // ============================================
272
- // Re-exports for Convenience
273
- // ============================================
274
- var wrapper_2 = require("../runtime/wrapper");
275
- Object.defineProperty(exports, "createTemplateHelpers", { enumerable: true, get: function () { return wrapper_2.createTemplateHelpers; } });
276
- var theme_1 = require("../theme");
277
- Object.defineProperty(exports, "DEFAULT_THEME", { enumerable: true, get: function () { return theme_1.DEFAULT_THEME; } });
278
- Object.defineProperty(exports, "OPENAI_PLATFORM", { enumerable: true, get: function () { return theme_1.OPENAI_PLATFORM; } });
279
- Object.defineProperty(exports, "CLAUDE_PLATFORM", { enumerable: true, get: function () { return theme_1.CLAUDE_PLATFORM; } });
280
- // ============================================
281
- // Widget Manifest Builder (New API)
282
- // ============================================
283
- var widget_manifest_1 = require("./widget-manifest");
284
- // Main builder
285
- Object.defineProperty(exports, "buildToolWidgetManifest", { enumerable: true, get: function () { return widget_manifest_1.buildToolWidgetManifest; } });
286
- Object.defineProperty(exports, "batchBuildWidgets", { enumerable: true, get: function () { return widget_manifest_1.batchBuildWidgets; } });
287
- // Detection utilities
288
- Object.defineProperty(exports, "detectUIType", { enumerable: true, get: function () { return widget_manifest_1.detectUIType; } });
289
- // CSP utilities
290
- Object.defineProperty(exports, "buildCSPForType", { enumerable: true, get: function () { return widget_manifest_1.buildCSPForType; } });
291
- Object.defineProperty(exports, "buildCSPMetaContent", { enumerable: true, get: function () { return widget_manifest_1.buildCSPMetaContent; } });
292
- // Asset utilities
293
- Object.defineProperty(exports, "getRendererAssets", { enumerable: true, get: function () { return widget_manifest_1.getRendererAssets; } });
294
- // _meta field builders (NEW)
295
- Object.defineProperty(exports, "buildToolResponseMeta", { enumerable: true, get: function () { return widget_manifest_1.buildToolResponseMeta; } });
296
- Object.defineProperty(exports, "getOutputModeForClient", { enumerable: true, get: function () { return widget_manifest_1.getOutputModeForClient; } });
297
- var ui_runtime_1 = require("../types/ui-runtime");
298
- Object.defineProperty(exports, "DEFAULT_CSP_BY_TYPE", { enumerable: true, get: function () { return ui_runtime_1.DEFAULT_CSP_BY_TYPE; } });
299
- Object.defineProperty(exports, "DEFAULT_RENDERER_ASSETS", { enumerable: true, get: function () { return ui_runtime_1.DEFAULT_RENDERER_ASSETS; } });
300
- Object.defineProperty(exports, "isUIType", { enumerable: true, get: function () { return ui_runtime_1.isUIType; } });
301
- Object.defineProperty(exports, "isBundlingMode", { enumerable: true, get: function () { return ui_runtime_1.isBundlingMode; } });
302
- Object.defineProperty(exports, "isDisplayMode", { enumerable: true, get: function () { return ui_runtime_1.isDisplayMode; } });
303
- Object.defineProperty(exports, "isResourceMode", { enumerable: true, get: function () { return ui_runtime_1.isResourceMode; } });
304
- Object.defineProperty(exports, "isOutputMode", { enumerable: true, get: function () { return ui_runtime_1.isOutputMode; } });
305
- // ============================================
306
- // CDN Resource Utilities
307
- // ============================================
308
- var cdn_resources_1 = require("./cdn-resources");
309
- // CDN URL Constants
310
- Object.defineProperty(exports, "REACT_CDN", { enumerable: true, get: function () { return cdn_resources_1.REACT_CDN; } });
311
- Object.defineProperty(exports, "REACT_DOM_CDN", { enumerable: true, get: function () { return cdn_resources_1.REACT_DOM_CDN; } });
312
- Object.defineProperty(exports, "MARKED_CDN", { enumerable: true, get: function () { return cdn_resources_1.MARKED_CDN; } });
313
- Object.defineProperty(exports, "HANDLEBARS_CDN", { enumerable: true, get: function () { return cdn_resources_1.HANDLEBARS_CDN; } });
314
- Object.defineProperty(exports, "MDX_RUNTIME_CDN", { enumerable: true, get: function () { return cdn_resources_1.MDX_RUNTIME_CDN; } });
315
- Object.defineProperty(exports, "TAILWIND_CDN", { enumerable: true, get: function () { return cdn_resources_1.TAILWIND_CDN; } });
316
- // Helper Functions
317
- Object.defineProperty(exports, "getDefaultAssets", { enumerable: true, get: function () { return cdn_resources_1.getDefaultAssets; } });
318
- Object.defineProperty(exports, "buildCDNScriptTag", { enumerable: true, get: function () { return cdn_resources_1.buildCDNScriptTag; } });
319
- Object.defineProperty(exports, "buildScriptsForUIType", { enumerable: true, get: function () { return cdn_resources_1.buildScriptsForUIType; } });
320
- Object.defineProperty(exports, "buildTailwindScriptTag", { enumerable: true, get: function () { return cdn_resources_1.buildTailwindScriptTag; } });
321
- Object.defineProperty(exports, "hasInlineScripts", { enumerable: true, get: function () { return cdn_resources_1.hasInlineScripts; } });
322
- Object.defineProperty(exports, "getURLsToPreFetch", { enumerable: true, get: function () { return cdn_resources_1.getURLsToPreFetch; } });
323
- // CDN Info for tools/list _meta
324
- Object.defineProperty(exports, "buildCDNInfoForUIType", { enumerable: true, get: function () { return cdn_resources_1.buildCDNInfoForUIType; } });
325
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/build/index.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Build-Time API for Tool UI\n *\n * Provides pre-compilation capabilities for tool UI templates.\n * Produces a **universal HTML document** that works across all platforms:\n * - OpenAI ChatGPT (Apps SDK)\n * - Anthropic Claude\n * - MCP Apps (ext-apps / SEP-1865)\n * - Google Gemini\n * - Any MCP-compatible host\n *\n * The build embeds the FrontMCP Bridge which auto-detects the host\n * at runtime and adapts its communication protocol accordingly.\n *\n * @packageDocumentation\n */\n\nimport type { UITemplateConfig, TemplateContext } from '../types';\nimport type { ThemeConfig, DeepPartial } from '../theme';\nimport { wrapToolUIUniversal, createTemplateHelpers } from '../runtime/wrapper';\nimport { rendererRegistry } from '../renderers/registry';\nimport { detectTemplateType } from '../renderers';\nimport type { TemplateBuilderFn } from '../types';\n\n// ============================================\n// Build Types\n// ============================================\n\n/**\n * Network access mode for the target environment.\n *\n * - `'open'`: Can fetch external resources (CDN scripts, fonts)\n * - `'blocked'`: Network is sandboxed, must inline everything\n */\nexport type NetworkMode = 'open' | 'blocked';\n\n/**\n * Script loading strategy.\n *\n * - `'cdn'`: Load scripts from CDN (smaller HTML, requires network)\n * - `'inline'`: Embed scripts in HTML (larger, works offline)\n * - `'auto'`: Choose based on network mode\n */\nexport type ScriptStrategy = 'cdn' | 'inline' | 'auto';\n\n/**\n * Build configuration options.\n * Capability-based rather than platform-specific.\n */\nexport interface BuildConfig {\n /**\n * Network access mode.\n * @default 'open'\n */\n network?: NetworkMode;\n\n /**\n * Script loading strategy.\n * @default 'auto' (uses 'inline' if network is 'blocked')\n */\n scripts?: ScriptStrategy;\n\n /**\n * Whether to include the FrontMCP Bridge runtime.\n * The bridge auto-detects the host platform at runtime.\n * @default true\n */\n includeBridge?: boolean;\n\n /**\n * Whether to minify the output HTML.\n * @default false\n */\n minify?: boolean;\n}\n\n/**\n * Options for building a tool UI template.\n *\n * @example\n * ```typescript\n * const result = await buildToolUI({\n * template: {\n * template: (ctx) => `<div>${ctx.output.value}</div>`,\n * widgetAccessible: true,\n * },\n * toolName: 'my_tool',\n * input: { query: 'hello' },\n * output: { value: 'world' },\n * });\n *\n * // Universal HTML that works on any platform\n * console.log(result.html);\n * ```\n */\nexport interface BuildOptions<In = unknown, Out = unknown> {\n /**\n * UI template configuration.\n */\n template: UITemplateConfig<In, Out>;\n\n /**\n * Name of the tool this UI is for.\n */\n toolName: string;\n\n /**\n * Tool input arguments.\n */\n input?: In;\n\n /**\n * Tool output/result data.\n */\n output?: Out;\n\n /**\n * Theme configuration override.\n */\n theme?: DeepPartial<ThemeConfig>;\n\n /**\n * Build configuration.\n * Controls network mode, script strategy, etc.\n */\n config?: BuildConfig;\n\n /**\n * Title for the HTML document.\n */\n title?: string;\n\n // Legacy aliases for backwards compatibility\n /** @deprecated Use `input` instead */\n sampleInput?: In;\n /** @deprecated Use `output` instead */\n sampleOutput?: Out;\n /** @deprecated Use `config.includeBridge` instead */\n injectAdapters?: boolean;\n /** @deprecated Use `config.minify` instead */\n minify?: boolean;\n /** @deprecated Platform is now auto-detected at runtime */\n platform?: string;\n}\n\n/**\n * MIME types for different host platforms.\n * Returned as suggestions - the MCP server response layer decides which to use.\n */\nexport interface MimeTypes {\n /** For OpenAI ChatGPT Apps SDK */\n openai: 'text/html+skybridge';\n /** For Claude, MCP Apps, and standard MCP hosts */\n mcp: 'text/html+mcp';\n /** Generic HTML (fallback) */\n html: 'text/html';\n}\n\n/**\n * Result of building a tool UI template.\n */\nexport interface BuildResult {\n /**\n * Complete HTML document string.\n * This is universal - works on all platforms.\n */\n html: string;\n\n /**\n * Size of the HTML in bytes.\n */\n size: number;\n\n /**\n * Size of the gzipped HTML in bytes (estimated).\n */\n gzipSize: number;\n\n /**\n * SHA-256 hash of the HTML content.\n */\n hash: string;\n\n /**\n * Suggested MIME types for different hosts.\n * The MCP server response layer should select based on detected client.\n */\n mimeTypes: MimeTypes;\n\n /**\n * Renderer type used (html, react, mdx).\n */\n rendererType: string;\n\n /**\n * Build timestamp (ISO 8601).\n */\n buildTime: string;\n\n /**\n * Build configuration used.\n */\n config: Required<BuildConfig>;\n}\n\n// ============================================\n// Build Functions\n// ============================================\n\n/**\n * Build a tool UI template into a universal HTML document.\n *\n * The output HTML:\n * - Works on ALL platforms (OpenAI, Claude, MCP Apps, Gemini, etc.)\n * - Includes FrontMCP Bridge that auto-detects the host at runtime\n * - Adapts communication protocol based on detected platform\n *\n * @example Basic usage\n * ```typescript\n * import { buildToolUI } from '@frontmcp/ui/build';\n *\n * const result = await buildToolUI({\n * template: { template: WeatherWidget },\n * toolName: 'get_weather',\n * output: { temperature: 72, conditions: 'sunny' },\n * });\n *\n * // Upload to CDN - works everywhere\n * await uploadToCDN('widgets/get_weather.html', result.html);\n * ```\n *\n * @example With blocked network (for Claude Artifacts)\n * ```typescript\n * const result = await buildToolUI({\n * template: { template: WeatherWidget },\n * toolName: 'get_weather',\n * config: { network: 'blocked' }, // Inlines all scripts\n * });\n * ```\n *\n * @example MCP server response\n * ```typescript\n * const result = await buildToolUI({ template, toolName, output });\n *\n * // In MCP server - choose MIME type based on client\n * const mimeType = isOpenAIClient(clientInfo)\n * ? result.mimeTypes.openai // 'text/html+skybridge'\n * : result.mimeTypes.mcp; // 'text/html+mcp'\n *\n * return { content: [{ type: mimeType, data: result.html }] };\n * ```\n */\nexport async function buildToolUI<In = unknown, Out = unknown>(\n options: BuildOptions<In, Out>\n): Promise<BuildResult> {\n const startTime = Date.now();\n\n // Normalize options (handle legacy aliases)\n const {\n template: uiConfig,\n toolName,\n input = options.sampleInput ?? ({} as In),\n output = options.sampleOutput ?? ({} as Out),\n theme,\n title,\n config: userConfig = {},\n injectAdapters,\n minify: legacyMinify,\n } = options;\n\n // Build final config with defaults\n const config: Required<BuildConfig> = {\n network: userConfig.network ?? 'open',\n scripts: userConfig.scripts ?? 'auto',\n includeBridge: userConfig.includeBridge ?? injectAdapters ?? true,\n minify: userConfig.minify ?? legacyMinify ?? false,\n };\n\n // Resolve script strategy\n const useInlineScripts =\n config.scripts === 'inline' || (config.scripts === 'auto' && config.network === 'blocked');\n\n // Build template context\n const ctx = buildTemplateContext(input, output);\n\n // Render the template content\n const { html: content, rendererType } = await renderTemplate(uiConfig.template, ctx, {\n mdxComponents: uiConfig.mdxComponents,\n });\n\n // Wrap in universal HTML document\n const html = wrapToolUIUniversal({\n content,\n toolName,\n input: input as Record<string, unknown>,\n output,\n csp: uiConfig.csp,\n widgetAccessible: uiConfig.widgetAccessible,\n title: title || `${toolName} Widget`,\n theme,\n includeBridge: config.includeBridge,\n inlineScripts: useInlineScripts,\n rendererType,\n });\n\n // Optionally minify\n const finalHtml = config.minify ? minifyHtml(html) : html;\n\n // Calculate size and hash\n const size = Buffer.byteLength(finalHtml, 'utf8');\n const gzipSize = estimateGzipSize(finalHtml);\n const hash = await calculateHash(finalHtml);\n\n return {\n html: finalHtml,\n size,\n gzipSize,\n hash,\n mimeTypes: {\n openai: 'text/html+skybridge',\n mcp: 'text/html+mcp',\n html: 'text/html',\n },\n rendererType,\n buildTime: new Date(startTime).toISOString(),\n config,\n };\n}\n\n// ============================================\n// Helper Functions\n// ============================================\n\n/**\n * Build template context from input/output.\n */\nfunction buildTemplateContext<In = unknown, Out = unknown>(\n input: In,\n output: Out,\n structuredContent?: unknown\n): TemplateContext<In, Out> {\n return {\n input,\n output,\n structuredContent,\n helpers: createTemplateHelpers(),\n };\n}\n\n/**\n * Render a template using the appropriate renderer.\n */\nasync function renderTemplate<In = unknown, Out = unknown>(\n template: UITemplateConfig<In, Out>['template'],\n ctx: TemplateContext<In, Out>,\n options?: {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n mdxComponents?: Record<string, any>;\n }\n): Promise<{ html: string; rendererType: string }> {\n // Detect template type\n const detection = detectTemplateType(template);\n\n // For simple HTML templates, use direct execution (sync, faster)\n if (detection.type === 'html-function' || detection.type === 'html-string') {\n const html =\n typeof template === 'function'\n ? (template as TemplateBuilderFn<In, Out>)(ctx)\n : (template as string);\n\n return { html, rendererType: 'html' };\n }\n\n // For React/MDX, use the renderer registry\n try {\n const result = await rendererRegistry.render(template, ctx, {\n mdxComponents: options?.mdxComponents,\n });\n\n return { html: result.html, rendererType: result.rendererType };\n } catch (error) {\n // Fallback to HTML if renderer fails\n console.warn(\n `[@frontmcp/ui/build] Renderer failed for ${detection.type}, falling back to HTML:`,\n error instanceof Error ? error.message : error\n );\n\n if (typeof template === 'function') {\n try {\n const html = (template as TemplateBuilderFn<In, Out>)(ctx);\n return { html, rendererType: 'html-fallback' };\n } catch {\n return {\n html: `<div class=\"error\">Template rendering failed</div>`,\n rendererType: 'error',\n };\n }\n }\n\n return { html: String(template), rendererType: 'html-fallback' };\n }\n}\n\n/**\n * Simple HTML minification (remove whitespace between tags).\n */\nfunction minifyHtml(html: string): string {\n return html\n .replace(/>\\s+</g, '><') // Remove whitespace between tags\n .replace(/\\s{2,}/g, ' ') // Collapse multiple spaces\n .trim();\n}\n\n/**\n * Estimate gzipped size (rough approximation).\n */\nfunction estimateGzipSize(content: string): number {\n // Rough estimate: gzip typically achieves 70-90% compression on HTML\n // We use 75% as a middle ground\n return Math.round(Buffer.byteLength(content, 'utf8') * 0.25);\n}\n\n/**\n * Calculate SHA-256 hash of content.\n */\nasync function calculateHash(content: string): Promise<string> {\n // Use Web Crypto API if available, otherwise fallback to simple hash\n if (typeof crypto !== 'undefined' && crypto.subtle) {\n const encoder = new TextEncoder();\n const data = encoder.encode(content);\n const hashBuffer = await crypto.subtle.digest('SHA-256', data);\n const hashArray = Array.from(new Uint8Array(hashBuffer));\n return hashArray.map((b) => b.toString(16).padStart(2, '0')).join('');\n }\n\n // Simple fallback hash (not cryptographically secure, but good enough for cache keys)\n let hash = 0;\n for (let i = 0; i < content.length; i++) {\n const char = content.charCodeAt(i);\n hash = (hash << 5) - hash + char;\n hash = hash & hash; // Convert to 32-bit integer\n }\n return Math.abs(hash).toString(16).padStart(8, '0');\n}\n\n// ============================================\n// Static Widget Builder\n// ============================================\n\n/**\n * Options for building a static widget that reads from host at runtime.\n */\nexport interface StaticWidgetOptions<In = unknown, Out = unknown> {\n /**\n * UI template configuration.\n */\n template: UITemplateConfig<In, Out>;\n\n /**\n * Name of the tool this UI is for.\n */\n toolName: string;\n\n /**\n * Theme configuration override.\n */\n theme?: DeepPartial<ThemeConfig>;\n\n /**\n * Build configuration.\n */\n config?: BuildConfig;\n\n /**\n * Title for the HTML document.\n */\n title?: string;\n}\n\n/**\n * Build a static widget that reads data from the host platform at runtime.\n *\n * Unlike buildToolUI which pre-renders with data, this creates a widget\n * that waits for data from the host platform via the FrontMCP Bridge.\n *\n * @example\n * ```typescript\n * import { buildStaticWidget } from '@frontmcp/ui/build';\n *\n * const widget = await buildStaticWidget({\n * template: {\n * template: (ctx) => `<div id=\"weather\">${ctx.output?.temperature || 'Loading...'}</div>`,\n * },\n * toolName: 'get_weather',\n * });\n *\n * // This widget will receive data via FrontMCP Bridge\n * await uploadToCDN('widgets/get_weather.html', widget.html);\n * ```\n */\nexport async function buildStaticWidget<In = unknown, Out = unknown>(\n options: StaticWidgetOptions<In, Out>\n): Promise<BuildResult> {\n const { template, toolName, theme, config, title } = options;\n\n // Build with empty data - the widget will receive data from host at runtime\n return buildToolUI({\n template,\n toolName,\n input: {} as In,\n output: {} as Out,\n theme,\n config,\n title: title || `${toolName} Widget`,\n });\n}\n\n// ============================================\n// Legacy Compatibility\n// ============================================\n\n/**\n * @deprecated Use BuildConfig instead\n */\nexport type BuildTargetPlatform = 'chatgpt' | 'claude' | 'mcp-apps' | 'universal';\n\n/**\n * @deprecated Use BuildOptions with config instead\n */\nexport interface MultiBuildOptions<In = unknown, Out = unknown>\n extends Omit<BuildOptions<In, Out>, 'platform'> {\n platforms?: BuildTargetPlatform[];\n}\n\n/**\n * @deprecated Use BuildResult instead (same result for all platforms now)\n */\nexport interface MultiBuildResult {\n bundles: Record<string, BuildResult>;\n totalTime: number;\n}\n\n/**\n * @deprecated Use buildToolUI with config.network instead\n */\nexport async function buildToolUIMulti<In = unknown, Out = unknown>(\n options: MultiBuildOptions<In, Out>\n): Promise<MultiBuildResult> {\n const startTime = Date.now();\n const { platforms = ['chatgpt', 'claude'], ...buildOptions } = options;\n\n // For backwards compatibility, build once and return same result for all platforms\n const result = await buildToolUI(buildOptions);\n\n const bundles: Record<string, BuildResult> = {};\n for (const platform of platforms) {\n bundles[platform] = {\n ...result,\n // Add legacy mimeType field for compatibility\n mimeType: platform === 'chatgpt' ? 'text/html+skybridge' : 'text/html+mcp',\n } as BuildResult & { mimeType: string };\n }\n\n return {\n bundles,\n totalTime: Date.now() - startTime,\n };\n}\n\n// ============================================\n// Re-exports for Convenience\n// ============================================\n\nexport { createTemplateHelpers } from '../runtime/wrapper';\nexport type {\n UITemplateConfig,\n UITemplate,\n TemplateContext,\n TemplateHelpers,\n TemplateBuilderFn,\n UIContentSecurityPolicy,\n WidgetServingMode,\n WidgetDisplayMode,\n} from '../types';\nexport type { ThemeConfig, PlatformCapabilities, DeepPartial } from '../theme';\nexport { DEFAULT_THEME, OPENAI_PLATFORM, CLAUDE_PLATFORM } from '../theme';\n\n// ============================================\n// Widget Manifest Builder (New API)\n// ============================================\n\nexport {\n // Main builder\n buildToolWidgetManifest,\n batchBuildWidgets,\n // Detection utilities\n detectUIType,\n // CSP utilities\n buildCSPForType,\n buildCSPMetaContent,\n // Asset utilities\n getRendererAssets,\n // _meta field builders (NEW)\n buildToolResponseMeta,\n getOutputModeForClient,\n} from './widget-manifest';\n\nexport type { BatchBuildOptions, BatchBuildResult, BuildMetaOptions } from './widget-manifest';\n\n// Re-export runtime types for convenience\nexport type {\n UIType,\n BundlingMode,\n DisplayMode,\n OutputMode,\n CSPDirectives,\n RendererAssets,\n WidgetManifest,\n WidgetConfig,\n BuildManifestResult,\n BuildManifestOptions,\n // _meta field types (NEW)\n UIMetaFields,\n OpenAIMetaFields,\n ToolResponseMeta,\n // Deprecated\n RuntimePayload,\n} from '../types/ui-runtime';\n\nexport {\n DEFAULT_CSP_BY_TYPE,\n DEFAULT_RENDERER_ASSETS,\n isUIType,\n isBundlingMode,\n isDisplayMode,\n isResourceMode,\n isOutputMode,\n} from '../types/ui-runtime';\n\nexport type { ResourceMode, CDNResource } from '../types/ui-runtime';\n\n// ============================================\n// CDN Resource Utilities\n// ============================================\n\nexport {\n // CDN URL Constants\n REACT_CDN,\n REACT_DOM_CDN,\n MARKED_CDN,\n HANDLEBARS_CDN,\n MDX_RUNTIME_CDN,\n TAILWIND_CDN,\n // Helper Functions\n getDefaultAssets,\n buildCDNScriptTag,\n buildScriptsForUIType,\n buildTailwindScriptTag,\n hasInlineScripts,\n getURLsToPreFetch,\n // CDN Info for tools/list _meta\n buildCDNInfoForUIType,\n} from './cdn-resources';\n\nexport type { CDNInfo } from './cdn-resources';\n"]}