@frontmcp/ui 0.5.1 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (805) hide show
  1. package/README.md +140 -362
  2. package/bridge/adapters/base-adapter.d.ts +104 -0
  3. package/bridge/adapters/base-adapter.d.ts.map +1 -0
  4. package/bridge/adapters/claude.adapter.d.ts +67 -0
  5. package/bridge/adapters/claude.adapter.d.ts.map +1 -0
  6. package/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  7. package/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  8. package/bridge/adapters/gemini.adapter.d.ts +64 -0
  9. package/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  10. package/bridge/adapters/generic.adapter.d.ts +56 -0
  11. package/bridge/adapters/generic.adapter.d.ts.map +1 -0
  12. package/bridge/adapters/index.d.ts +26 -0
  13. package/bridge/adapters/index.d.ts.map +1 -0
  14. package/bridge/adapters/openai.adapter.d.ts +65 -0
  15. package/bridge/adapters/openai.adapter.d.ts.map +1 -0
  16. package/bridge/core/adapter-registry.d.ts +122 -0
  17. package/bridge/core/adapter-registry.d.ts.map +1 -0
  18. package/bridge/core/bridge-factory.d.ts +199 -0
  19. package/bridge/core/bridge-factory.d.ts.map +1 -0
  20. package/bridge/core/index.d.ts +10 -0
  21. package/bridge/core/index.d.ts.map +1 -0
  22. package/bridge/index.d.ts +62 -0
  23. package/bridge/index.d.ts.map +1 -0
  24. package/bridge/index.js +2540 -0
  25. package/bridge/runtime/iife-generator.d.ts +62 -0
  26. package/bridge/runtime/iife-generator.d.ts.map +1 -0
  27. package/bridge/runtime/index.d.ts +10 -0
  28. package/bridge/runtime/index.d.ts.map +1 -0
  29. package/bridge/types.d.ts +386 -0
  30. package/bridge/types.d.ts.map +1 -0
  31. package/bundler/bundler.d.ts +208 -0
  32. package/bundler/bundler.d.ts.map +1 -0
  33. package/bundler/cache.d.ts +173 -0
  34. package/bundler/cache.d.ts.map +1 -0
  35. package/bundler/file-cache/component-builder.d.ts +167 -0
  36. package/bundler/file-cache/component-builder.d.ts.map +1 -0
  37. package/bundler/file-cache/hash-calculator.d.ts +155 -0
  38. package/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  39. package/bundler/file-cache/index.d.ts +12 -0
  40. package/bundler/file-cache/index.d.ts.map +1 -0
  41. package/bundler/file-cache/storage/filesystem.d.ts +149 -0
  42. package/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  43. package/bundler/file-cache/storage/index.d.ts +11 -0
  44. package/bundler/file-cache/storage/index.d.ts.map +1 -0
  45. package/bundler/file-cache/storage/interface.d.ts +152 -0
  46. package/bundler/file-cache/storage/interface.d.ts.map +1 -0
  47. package/bundler/file-cache/storage/redis.d.ts +139 -0
  48. package/bundler/file-cache/storage/redis.d.ts.map +1 -0
  49. package/bundler/index.d.ts +43 -0
  50. package/bundler/index.d.ts.map +1 -0
  51. package/bundler/index.js +3707 -0
  52. package/bundler/sandbox/enclave-adapter.d.ts +121 -0
  53. package/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  54. package/bundler/sandbox/executor.d.ts +14 -0
  55. package/bundler/sandbox/executor.d.ts.map +1 -0
  56. package/bundler/sandbox/policy.d.ts +62 -0
  57. package/bundler/sandbox/policy.d.ts.map +1 -0
  58. package/bundler/types.d.ts +702 -0
  59. package/bundler/types.d.ts.map +1 -0
  60. package/components/alert.d.ts +66 -0
  61. package/components/alert.d.ts.map +1 -0
  62. package/components/alert.schema.d.ts +98 -0
  63. package/components/alert.schema.d.ts.map +1 -0
  64. package/components/avatar.d.ts +77 -0
  65. package/components/avatar.d.ts.map +1 -0
  66. package/components/avatar.schema.d.ts +170 -0
  67. package/components/avatar.schema.d.ts.map +1 -0
  68. package/components/badge.d.ts +64 -0
  69. package/components/badge.d.ts.map +1 -0
  70. package/components/badge.schema.d.ts +91 -0
  71. package/components/badge.schema.d.ts.map +1 -0
  72. package/components/button.d.ts +100 -0
  73. package/components/button.d.ts.map +1 -0
  74. package/components/button.schema.d.ts +120 -0
  75. package/components/button.schema.d.ts.map +1 -0
  76. package/components/card.d.ts +53 -0
  77. package/components/card.d.ts.map +1 -0
  78. package/components/card.schema.d.ts +93 -0
  79. package/components/card.schema.d.ts.map +1 -0
  80. package/components/form.d.ts +212 -0
  81. package/components/form.d.ts.map +1 -0
  82. package/components/form.schema.d.ts +365 -0
  83. package/components/form.schema.d.ts.map +1 -0
  84. package/components/index.d.ts +29 -0
  85. package/components/index.d.ts.map +1 -0
  86. package/components/index.js +2525 -0
  87. package/components/list.d.ts +121 -0
  88. package/components/list.d.ts.map +1 -0
  89. package/components/list.schema.d.ts +129 -0
  90. package/components/list.schema.d.ts.map +1 -0
  91. package/components/modal.d.ts +100 -0
  92. package/components/modal.d.ts.map +1 -0
  93. package/components/modal.schema.d.ts +151 -0
  94. package/components/modal.schema.d.ts.map +1 -0
  95. package/components/table.d.ts +91 -0
  96. package/components/table.d.ts.map +1 -0
  97. package/components/table.schema.d.ts +123 -0
  98. package/components/table.schema.d.ts.map +1 -0
  99. package/esm/bridge/adapters/base-adapter.d.ts +104 -0
  100. package/esm/bridge/adapters/base-adapter.d.ts.map +1 -0
  101. package/esm/bridge/adapters/claude.adapter.d.ts +67 -0
  102. package/esm/bridge/adapters/claude.adapter.d.ts.map +1 -0
  103. package/esm/bridge/adapters/ext-apps.adapter.d.ts +143 -0
  104. package/esm/bridge/adapters/ext-apps.adapter.d.ts.map +1 -0
  105. package/esm/bridge/adapters/gemini.adapter.d.ts +64 -0
  106. package/esm/bridge/adapters/gemini.adapter.d.ts.map +1 -0
  107. package/esm/bridge/adapters/generic.adapter.d.ts +56 -0
  108. package/esm/bridge/adapters/generic.adapter.d.ts.map +1 -0
  109. package/esm/bridge/adapters/index.d.ts +26 -0
  110. package/esm/bridge/adapters/index.d.ts.map +1 -0
  111. package/esm/bridge/adapters/openai.adapter.d.ts +65 -0
  112. package/esm/bridge/adapters/openai.adapter.d.ts.map +1 -0
  113. package/esm/bridge/core/adapter-registry.d.ts +122 -0
  114. package/esm/bridge/core/adapter-registry.d.ts.map +1 -0
  115. package/esm/bridge/core/bridge-factory.d.ts +199 -0
  116. package/esm/bridge/core/bridge-factory.d.ts.map +1 -0
  117. package/esm/bridge/core/index.d.ts +10 -0
  118. package/esm/bridge/core/index.d.ts.map +1 -0
  119. package/esm/bridge/index.d.ts +62 -0
  120. package/esm/bridge/index.d.ts.map +1 -0
  121. package/esm/bridge/index.js +2487 -0
  122. package/esm/bridge/runtime/iife-generator.d.ts +62 -0
  123. package/esm/bridge/runtime/iife-generator.d.ts.map +1 -0
  124. package/esm/bridge/runtime/index.d.ts +10 -0
  125. package/esm/bridge/runtime/index.d.ts.map +1 -0
  126. package/esm/bridge/types.d.ts +386 -0
  127. package/esm/bridge/types.d.ts.map +1 -0
  128. package/esm/bundler/bundler.d.ts +208 -0
  129. package/esm/bundler/bundler.d.ts.map +1 -0
  130. package/esm/bundler/cache.d.ts +173 -0
  131. package/esm/bundler/cache.d.ts.map +1 -0
  132. package/esm/bundler/file-cache/component-builder.d.ts +167 -0
  133. package/esm/bundler/file-cache/component-builder.d.ts.map +1 -0
  134. package/esm/bundler/file-cache/hash-calculator.d.ts +155 -0
  135. package/esm/bundler/file-cache/hash-calculator.d.ts.map +1 -0
  136. package/esm/bundler/file-cache/index.d.ts +12 -0
  137. package/esm/bundler/file-cache/index.d.ts.map +1 -0
  138. package/esm/bundler/file-cache/storage/filesystem.d.ts +149 -0
  139. package/esm/bundler/file-cache/storage/filesystem.d.ts.map +1 -0
  140. package/esm/bundler/file-cache/storage/index.d.ts +11 -0
  141. package/esm/bundler/file-cache/storage/index.d.ts.map +1 -0
  142. package/esm/bundler/file-cache/storage/interface.d.ts +152 -0
  143. package/esm/bundler/file-cache/storage/interface.d.ts.map +1 -0
  144. package/esm/bundler/file-cache/storage/redis.d.ts +139 -0
  145. package/esm/bundler/file-cache/storage/redis.d.ts.map +1 -0
  146. package/esm/bundler/index.d.ts +43 -0
  147. package/esm/bundler/index.d.ts.map +1 -0
  148. package/esm/bundler/index.js +3640 -0
  149. package/esm/bundler/sandbox/enclave-adapter.d.ts +121 -0
  150. package/esm/bundler/sandbox/enclave-adapter.d.ts.map +1 -0
  151. package/esm/bundler/sandbox/executor.d.ts +14 -0
  152. package/esm/bundler/sandbox/executor.d.ts.map +1 -0
  153. package/esm/bundler/sandbox/policy.d.ts +62 -0
  154. package/esm/bundler/sandbox/policy.d.ts.map +1 -0
  155. package/esm/bundler/types.d.ts +702 -0
  156. package/esm/bundler/types.d.ts.map +1 -0
  157. package/esm/components/alert.d.ts +66 -0
  158. package/esm/components/alert.d.ts.map +1 -0
  159. package/esm/components/alert.schema.d.ts +98 -0
  160. package/esm/components/alert.schema.d.ts.map +1 -0
  161. package/esm/components/avatar.d.ts +77 -0
  162. package/esm/components/avatar.d.ts.map +1 -0
  163. package/esm/components/avatar.schema.d.ts +170 -0
  164. package/esm/components/avatar.schema.d.ts.map +1 -0
  165. package/esm/components/badge.d.ts +64 -0
  166. package/esm/components/badge.d.ts.map +1 -0
  167. package/esm/components/badge.schema.d.ts +91 -0
  168. package/esm/components/badge.schema.d.ts.map +1 -0
  169. package/esm/components/button.d.ts +100 -0
  170. package/esm/components/button.d.ts.map +1 -0
  171. package/esm/components/button.schema.d.ts +120 -0
  172. package/esm/components/button.schema.d.ts.map +1 -0
  173. package/esm/components/card.d.ts +53 -0
  174. package/esm/components/card.d.ts.map +1 -0
  175. package/esm/components/card.schema.d.ts +93 -0
  176. package/esm/components/card.schema.d.ts.map +1 -0
  177. package/esm/components/form.d.ts +212 -0
  178. package/esm/components/form.d.ts.map +1 -0
  179. package/esm/components/form.schema.d.ts +365 -0
  180. package/esm/components/form.schema.d.ts.map +1 -0
  181. package/esm/components/index.d.ts +29 -0
  182. package/esm/components/index.d.ts.map +1 -0
  183. package/esm/components/index.js +2396 -0
  184. package/esm/components/list.d.ts +121 -0
  185. package/esm/components/list.d.ts.map +1 -0
  186. package/esm/components/list.schema.d.ts +129 -0
  187. package/esm/components/list.schema.d.ts.map +1 -0
  188. package/esm/components/modal.d.ts +100 -0
  189. package/esm/components/modal.d.ts.map +1 -0
  190. package/esm/components/modal.schema.d.ts +151 -0
  191. package/esm/components/modal.schema.d.ts.map +1 -0
  192. package/esm/components/table.d.ts +91 -0
  193. package/esm/components/table.d.ts.map +1 -0
  194. package/esm/components/table.schema.d.ts +123 -0
  195. package/esm/components/table.schema.d.ts.map +1 -0
  196. package/esm/index.d.ts +40 -0
  197. package/esm/index.d.ts.map +1 -0
  198. package/esm/index.js +8326 -0
  199. package/esm/layouts/base.d.ts +86 -0
  200. package/esm/layouts/base.d.ts.map +1 -0
  201. package/esm/layouts/index.d.ts +8 -0
  202. package/esm/layouts/index.d.ts.map +1 -0
  203. package/esm/layouts/index.js +409 -0
  204. package/esm/layouts/presets.d.ts +134 -0
  205. package/esm/layouts/presets.d.ts.map +1 -0
  206. package/esm/package.json +72 -0
  207. package/esm/pages/consent.d.ts +117 -0
  208. package/esm/pages/consent.d.ts.map +1 -0
  209. package/esm/pages/error.d.ts +101 -0
  210. package/esm/pages/error.d.ts.map +1 -0
  211. package/esm/pages/index.d.ts +9 -0
  212. package/esm/pages/index.d.ts.map +1 -0
  213. package/esm/pages/index.js +1036 -0
  214. package/esm/react/Alert.d.ts +101 -0
  215. package/esm/react/Alert.d.ts.map +1 -0
  216. package/esm/react/Badge.d.ts +100 -0
  217. package/esm/react/Badge.d.ts.map +1 -0
  218. package/esm/react/Button.d.ts +108 -0
  219. package/esm/react/Button.d.ts.map +1 -0
  220. package/esm/react/Card.d.ts +103 -0
  221. package/esm/react/Card.d.ts.map +1 -0
  222. package/esm/react/hooks/context.d.ts +179 -0
  223. package/esm/react/hooks/context.d.ts.map +1 -0
  224. package/esm/react/hooks/index.d.ts +42 -0
  225. package/esm/react/hooks/index.d.ts.map +1 -0
  226. package/esm/react/hooks/tools.d.ts +284 -0
  227. package/esm/react/hooks/tools.d.ts.map +1 -0
  228. package/esm/react/index.d.ts +80 -0
  229. package/esm/react/index.d.ts.map +1 -0
  230. package/esm/react/index.js +3124 -0
  231. package/esm/react/types.d.ts +105 -0
  232. package/esm/react/types.d.ts.map +1 -0
  233. package/esm/react/utils.d.ts +43 -0
  234. package/esm/react/utils.d.ts.map +1 -0
  235. package/esm/render/index.d.ts +8 -0
  236. package/esm/render/index.d.ts.map +1 -0
  237. package/esm/render/index.js +45 -0
  238. package/esm/render/prerender.d.ts +57 -0
  239. package/esm/render/prerender.d.ts.map +1 -0
  240. package/esm/renderers/index.d.ts +21 -0
  241. package/esm/renderers/index.d.ts.map +1 -0
  242. package/esm/renderers/index.js +381 -0
  243. package/esm/renderers/react.adapter.d.ts +70 -0
  244. package/esm/renderers/react.adapter.d.ts.map +1 -0
  245. package/esm/renderers/react.renderer.d.ts +96 -0
  246. package/esm/renderers/react.renderer.d.ts.map +1 -0
  247. package/esm/universal/UniversalApp.d.ts +108 -0
  248. package/esm/universal/UniversalApp.d.ts.map +1 -0
  249. package/esm/universal/cached-runtime.d.ts +115 -0
  250. package/esm/universal/cached-runtime.d.ts.map +1 -0
  251. package/esm/universal/context.d.ts +122 -0
  252. package/esm/universal/context.d.ts.map +1 -0
  253. package/esm/universal/index.d.ts +57 -0
  254. package/esm/universal/index.d.ts.map +1 -0
  255. package/esm/universal/index.js +1755 -0
  256. package/esm/universal/renderers/html.renderer.d.ts +37 -0
  257. package/esm/universal/renderers/html.renderer.d.ts.map +1 -0
  258. package/esm/universal/renderers/index.d.ts +112 -0
  259. package/esm/universal/renderers/index.d.ts.map +1 -0
  260. package/esm/universal/renderers/markdown.renderer.d.ts +33 -0
  261. package/esm/universal/renderers/markdown.renderer.d.ts.map +1 -0
  262. package/esm/universal/renderers/mdx.renderer.d.ts +38 -0
  263. package/esm/universal/renderers/mdx.renderer.d.ts.map +1 -0
  264. package/esm/universal/renderers/react.renderer.d.ts +46 -0
  265. package/esm/universal/renderers/react.renderer.d.ts.map +1 -0
  266. package/esm/universal/runtime-builder.d.ts +33 -0
  267. package/esm/universal/runtime-builder.d.ts.map +1 -0
  268. package/esm/universal/store.d.ts +135 -0
  269. package/esm/universal/store.d.ts.map +1 -0
  270. package/esm/universal/types.d.ts +199 -0
  271. package/esm/universal/types.d.ts.map +1 -0
  272. package/esm/web-components/core/attribute-parser.d.ts +82 -0
  273. package/esm/web-components/core/attribute-parser.d.ts.map +1 -0
  274. package/esm/web-components/core/base-element.d.ts +197 -0
  275. package/esm/web-components/core/base-element.d.ts.map +1 -0
  276. package/esm/web-components/core/index.d.ts +9 -0
  277. package/esm/web-components/core/index.d.ts.map +1 -0
  278. package/esm/web-components/elements/fmcp-alert.d.ts +46 -0
  279. package/esm/web-components/elements/fmcp-alert.d.ts.map +1 -0
  280. package/esm/web-components/elements/fmcp-badge.d.ts +47 -0
  281. package/esm/web-components/elements/fmcp-badge.d.ts.map +1 -0
  282. package/esm/web-components/elements/fmcp-button.d.ts +117 -0
  283. package/esm/web-components/elements/fmcp-button.d.ts.map +1 -0
  284. package/esm/web-components/elements/fmcp-card.d.ts +53 -0
  285. package/esm/web-components/elements/fmcp-card.d.ts.map +1 -0
  286. package/esm/web-components/elements/fmcp-input.d.ts +96 -0
  287. package/esm/web-components/elements/fmcp-input.d.ts.map +1 -0
  288. package/esm/web-components/elements/fmcp-select.d.ts +100 -0
  289. package/esm/web-components/elements/fmcp-select.d.ts.map +1 -0
  290. package/esm/web-components/elements/index.d.ts +13 -0
  291. package/esm/web-components/elements/index.d.ts.map +1 -0
  292. package/esm/web-components/index.d.ts +50 -0
  293. package/esm/web-components/index.d.ts.map +1 -0
  294. package/esm/web-components/index.js +1993 -0
  295. package/esm/web-components/register.d.ts +57 -0
  296. package/esm/web-components/register.d.ts.map +1 -0
  297. package/esm/web-components/types.d.ts +122 -0
  298. package/esm/web-components/types.d.ts.map +1 -0
  299. package/esm/widgets/index.d.ts +8 -0
  300. package/esm/widgets/index.d.ts.map +1 -0
  301. package/esm/widgets/index.js +883 -0
  302. package/esm/widgets/progress.d.ts +133 -0
  303. package/esm/widgets/progress.d.ts.map +1 -0
  304. package/esm/widgets/resource.d.ts +163 -0
  305. package/esm/widgets/resource.d.ts.map +1 -0
  306. package/index.d.ts +40 -0
  307. package/index.d.ts.map +1 -0
  308. package/index.js +8526 -0
  309. package/layouts/base.d.ts +86 -0
  310. package/layouts/base.d.ts.map +1 -0
  311. package/layouts/index.d.ts +8 -0
  312. package/layouts/index.d.ts.map +1 -0
  313. package/layouts/index.js +437 -0
  314. package/layouts/presets.d.ts +134 -0
  315. package/layouts/presets.d.ts.map +1 -0
  316. package/package.json +33 -110
  317. package/pages/consent.d.ts +117 -0
  318. package/pages/consent.d.ts.map +1 -0
  319. package/pages/error.d.ts +101 -0
  320. package/pages/error.d.ts.map +1 -0
  321. package/pages/index.d.ts +9 -0
  322. package/pages/index.d.ts.map +1 -0
  323. package/pages/index.js +1065 -0
  324. package/react/Alert.d.ts +101 -0
  325. package/react/Alert.d.ts.map +1 -0
  326. package/react/Badge.d.ts +100 -0
  327. package/react/Badge.d.ts.map +1 -0
  328. package/react/Button.d.ts +108 -0
  329. package/react/Button.d.ts.map +1 -0
  330. package/react/Card.d.ts +103 -0
  331. package/react/Card.d.ts.map +1 -0
  332. package/react/hooks/context.d.ts +179 -0
  333. package/react/hooks/context.d.ts.map +1 -0
  334. package/react/hooks/index.d.ts +42 -0
  335. package/react/hooks/index.d.ts.map +1 -0
  336. package/react/hooks/tools.d.ts +284 -0
  337. package/react/hooks/tools.d.ts.map +1 -0
  338. package/react/index.d.ts +80 -0
  339. package/react/index.d.ts.map +1 -0
  340. package/react/index.js +3160 -0
  341. package/react/types.d.ts +105 -0
  342. package/react/types.d.ts.map +1 -0
  343. package/react/utils.d.ts +43 -0
  344. package/react/utils.d.ts.map +1 -0
  345. package/render/index.d.ts +8 -0
  346. package/render/index.d.ts.map +1 -0
  347. package/render/index.js +77 -0
  348. package/render/prerender.d.ts +57 -0
  349. package/render/prerender.d.ts.map +1 -0
  350. package/renderers/index.d.ts +21 -0
  351. package/renderers/index.d.ts.map +1 -0
  352. package/renderers/index.js +416 -0
  353. package/renderers/react.adapter.d.ts +70 -0
  354. package/renderers/react.adapter.d.ts.map +1 -0
  355. package/renderers/react.renderer.d.ts +96 -0
  356. package/renderers/react.renderer.d.ts.map +1 -0
  357. package/universal/UniversalApp.d.ts +108 -0
  358. package/universal/UniversalApp.d.ts.map +1 -0
  359. package/universal/cached-runtime.d.ts +115 -0
  360. package/universal/cached-runtime.d.ts.map +1 -0
  361. package/universal/context.d.ts +122 -0
  362. package/universal/context.d.ts.map +1 -0
  363. package/universal/index.d.ts +57 -0
  364. package/universal/index.d.ts.map +1 -0
  365. package/universal/index.js +1841 -0
  366. package/universal/renderers/html.renderer.d.ts +37 -0
  367. package/universal/renderers/html.renderer.d.ts.map +1 -0
  368. package/universal/renderers/index.d.ts +112 -0
  369. package/universal/renderers/index.d.ts.map +1 -0
  370. package/universal/renderers/markdown.renderer.d.ts +33 -0
  371. package/universal/renderers/markdown.renderer.d.ts.map +1 -0
  372. package/universal/renderers/mdx.renderer.d.ts +38 -0
  373. package/universal/renderers/mdx.renderer.d.ts.map +1 -0
  374. package/universal/renderers/react.renderer.d.ts +46 -0
  375. package/universal/renderers/react.renderer.d.ts.map +1 -0
  376. package/universal/runtime-builder.d.ts +33 -0
  377. package/universal/runtime-builder.d.ts.map +1 -0
  378. package/universal/store.d.ts +135 -0
  379. package/universal/store.d.ts.map +1 -0
  380. package/universal/types.d.ts +199 -0
  381. package/universal/types.d.ts.map +1 -0
  382. package/web-components/core/attribute-parser.d.ts +82 -0
  383. package/web-components/core/attribute-parser.d.ts.map +1 -0
  384. package/web-components/core/base-element.d.ts +197 -0
  385. package/web-components/core/base-element.d.ts.map +1 -0
  386. package/web-components/core/index.d.ts +9 -0
  387. package/web-components/core/index.d.ts.map +1 -0
  388. package/web-components/elements/fmcp-alert.d.ts +46 -0
  389. package/web-components/elements/fmcp-alert.d.ts.map +1 -0
  390. package/web-components/elements/fmcp-badge.d.ts +47 -0
  391. package/web-components/elements/fmcp-badge.d.ts.map +1 -0
  392. package/web-components/elements/fmcp-button.d.ts +117 -0
  393. package/web-components/elements/fmcp-button.d.ts.map +1 -0
  394. package/web-components/elements/fmcp-card.d.ts +53 -0
  395. package/web-components/elements/fmcp-card.d.ts.map +1 -0
  396. package/web-components/elements/fmcp-input.d.ts +96 -0
  397. package/web-components/elements/fmcp-input.d.ts.map +1 -0
  398. package/web-components/elements/fmcp-select.d.ts +100 -0
  399. package/web-components/elements/fmcp-select.d.ts.map +1 -0
  400. package/web-components/elements/index.d.ts +13 -0
  401. package/web-components/elements/index.d.ts.map +1 -0
  402. package/web-components/index.d.ts +50 -0
  403. package/web-components/index.d.ts.map +1 -0
  404. package/web-components/index.js +2028 -0
  405. package/web-components/register.d.ts +57 -0
  406. package/web-components/register.d.ts.map +1 -0
  407. package/web-components/types.d.ts +122 -0
  408. package/web-components/types.d.ts.map +1 -0
  409. package/widgets/index.d.ts +8 -0
  410. package/widgets/index.d.ts.map +1 -0
  411. package/widgets/index.js +910 -0
  412. package/widgets/progress.d.ts +133 -0
  413. package/widgets/progress.d.ts.map +1 -0
  414. package/widgets/resource.d.ts +163 -0
  415. package/widgets/resource.d.ts.map +1 -0
  416. package/src/adapters/index.d.ts +0 -10
  417. package/src/adapters/index.js +0 -18
  418. package/src/adapters/index.js.map +0 -1
  419. package/src/adapters/platform-meta.d.ts +0 -165
  420. package/src/adapters/platform-meta.js +0 -310
  421. package/src/adapters/platform-meta.js.map +0 -1
  422. package/src/base-template/bridge.d.ts +0 -89
  423. package/src/base-template/bridge.js +0 -452
  424. package/src/base-template/bridge.js.map +0 -1
  425. package/src/base-template/default-base-template.d.ts +0 -91
  426. package/src/base-template/default-base-template.js +0 -435
  427. package/src/base-template/default-base-template.js.map +0 -1
  428. package/src/base-template/index.d.ts +0 -14
  429. package/src/base-template/index.js +0 -30
  430. package/src/base-template/index.js.map +0 -1
  431. package/src/base-template/polyfills.d.ts +0 -30
  432. package/src/base-template/polyfills.js +0 -190
  433. package/src/base-template/polyfills.js.map +0 -1
  434. package/src/base-template/theme-styles.d.ts +0 -73
  435. package/src/base-template/theme-styles.js +0 -95
  436. package/src/base-template/theme-styles.js.map +0 -1
  437. package/src/bridge/adapters/base-adapter.d.ts +0 -103
  438. package/src/bridge/adapters/base-adapter.js +0 -314
  439. package/src/bridge/adapters/base-adapter.js.map +0 -1
  440. package/src/bridge/adapters/claude.adapter.d.ts +0 -66
  441. package/src/bridge/adapters/claude.adapter.js +0 -145
  442. package/src/bridge/adapters/claude.adapter.js.map +0 -1
  443. package/src/bridge/adapters/ext-apps.adapter.d.ts +0 -142
  444. package/src/bridge/adapters/ext-apps.adapter.js +0 -416
  445. package/src/bridge/adapters/ext-apps.adapter.js.map +0 -1
  446. package/src/bridge/adapters/gemini.adapter.d.ts +0 -63
  447. package/src/bridge/adapters/gemini.adapter.js +0 -160
  448. package/src/bridge/adapters/gemini.adapter.js.map +0 -1
  449. package/src/bridge/adapters/generic.adapter.d.ts +0 -55
  450. package/src/bridge/adapters/generic.adapter.js +0 -108
  451. package/src/bridge/adapters/generic.adapter.js.map +0 -1
  452. package/src/bridge/adapters/index.d.ts +0 -25
  453. package/src/bridge/adapters/index.js +0 -65
  454. package/src/bridge/adapters/index.js.map +0 -1
  455. package/src/bridge/adapters/openai.adapter.d.ts +0 -64
  456. package/src/bridge/adapters/openai.adapter.js +0 -194
  457. package/src/bridge/adapters/openai.adapter.js.map +0 -1
  458. package/src/bridge/core/adapter-registry.d.ts +0 -121
  459. package/src/bridge/core/adapter-registry.js +0 -271
  460. package/src/bridge/core/adapter-registry.js.map +0 -1
  461. package/src/bridge/core/bridge-factory.d.ts +0 -198
  462. package/src/bridge/core/bridge-factory.js +0 -428
  463. package/src/bridge/core/bridge-factory.js.map +0 -1
  464. package/src/bridge/core/index.d.ts +0 -9
  465. package/src/bridge/core/index.js +0 -22
  466. package/src/bridge/core/index.js.map +0 -1
  467. package/src/bridge/index.d.ts +0 -61
  468. package/src/bridge/index.js +0 -94
  469. package/src/bridge/index.js.map +0 -1
  470. package/src/bridge/runtime/iife-generator.d.ts +0 -61
  471. package/src/bridge/runtime/iife-generator.js +0 -940
  472. package/src/bridge/runtime/iife-generator.js.map +0 -1
  473. package/src/bridge/runtime/index.d.ts +0 -8
  474. package/src/bridge/runtime/index.js +0 -16
  475. package/src/bridge/runtime/index.js.map +0 -1
  476. package/src/bridge/types.d.ts +0 -385
  477. package/src/bridge/types.js +0 -11
  478. package/src/bridge/types.js.map +0 -1
  479. package/src/build/cdn-resources.d.ts +0 -140
  480. package/src/build/cdn-resources.js +0 -314
  481. package/src/build/cdn-resources.js.map +0 -1
  482. package/src/build/index.d.ts +0 -294
  483. package/src/build/index.js +0 -325
  484. package/src/build/index.js.map +0 -1
  485. package/src/build/widget-manifest.d.ts +0 -212
  486. package/src/build/widget-manifest.js +0 -652
  487. package/src/build/widget-manifest.js.map +0 -1
  488. package/src/bundler/bundler.d.ts +0 -110
  489. package/src/bundler/bundler.js +0 -432
  490. package/src/bundler/bundler.js.map +0 -1
  491. package/src/bundler/cache.d.ts +0 -172
  492. package/src/bundler/cache.js +0 -250
  493. package/src/bundler/cache.js.map +0 -1
  494. package/src/bundler/index.d.ts +0 -41
  495. package/src/bundler/index.js +0 -73
  496. package/src/bundler/index.js.map +0 -1
  497. package/src/bundler/sandbox/enclave-adapter.d.ts +0 -120
  498. package/src/bundler/sandbox/enclave-adapter.js +0 -339
  499. package/src/bundler/sandbox/enclave-adapter.js.map +0 -1
  500. package/src/bundler/sandbox/executor.d.ts +0 -13
  501. package/src/bundler/sandbox/executor.js +0 -22
  502. package/src/bundler/sandbox/executor.js.map +0 -1
  503. package/src/bundler/sandbox/policy.d.ts +0 -61
  504. package/src/bundler/sandbox/policy.js +0 -238
  505. package/src/bundler/sandbox/policy.js.map +0 -1
  506. package/src/bundler/types.d.ts +0 -347
  507. package/src/bundler/types.js +0 -132
  508. package/src/bundler/types.js.map +0 -1
  509. package/src/components/alert.d.ts +0 -71
  510. package/src/components/alert.js +0 -189
  511. package/src/components/alert.js.map +0 -1
  512. package/src/components/alert.schema.d.ts +0 -114
  513. package/src/components/alert.schema.js +0 -105
  514. package/src/components/alert.schema.js.map +0 -1
  515. package/src/components/avatar.d.ts +0 -76
  516. package/src/components/avatar.js +0 -176
  517. package/src/components/avatar.js.map +0 -1
  518. package/src/components/avatar.schema.d.ts +0 -169
  519. package/src/components/avatar.schema.js +0 -103
  520. package/src/components/avatar.schema.js.map +0 -1
  521. package/src/components/badge.d.ts +0 -70
  522. package/src/components/badge.js +0 -149
  523. package/src/components/badge.js.map +0 -1
  524. package/src/components/badge.schema.d.ts +0 -109
  525. package/src/components/badge.schema.js +0 -96
  526. package/src/components/badge.schema.js.map +0 -1
  527. package/src/components/button.d.ts +0 -111
  528. package/src/components/button.js +0 -336
  529. package/src/components/button.js.map +0 -1
  530. package/src/components/button.schema.d.ts +0 -148
  531. package/src/components/button.schema.js +0 -121
  532. package/src/components/button.schema.js.map +0 -1
  533. package/src/components/card.d.ts +0 -60
  534. package/src/components/card.js +0 -117
  535. package/src/components/card.js.map +0 -1
  536. package/src/components/card.schema.d.ts +0 -113
  537. package/src/components/card.schema.js +0 -98
  538. package/src/components/card.schema.js.map +0 -1
  539. package/src/components/form.d.ts +0 -239
  540. package/src/components/form.js +0 -420
  541. package/src/components/form.js.map +0 -1
  542. package/src/components/form.schema.d.ts +0 -441
  543. package/src/components/form.schema.js +0 -406
  544. package/src/components/form.schema.js.map +0 -1
  545. package/src/components/index.d.ts +0 -29
  546. package/src/components/index.js +0 -98
  547. package/src/components/index.js.map +0 -1
  548. package/src/components/list.d.ts +0 -127
  549. package/src/components/list.js +0 -279
  550. package/src/components/list.js.map +0 -1
  551. package/src/components/list.schema.d.ts +0 -134
  552. package/src/components/list.schema.js +0 -168
  553. package/src/components/list.schema.js.map +0 -1
  554. package/src/components/modal.d.ts +0 -111
  555. package/src/components/modal.js +0 -260
  556. package/src/components/modal.js.map +0 -1
  557. package/src/components/modal.schema.d.ts +0 -186
  558. package/src/components/modal.schema.js +0 -167
  559. package/src/components/modal.schema.js.map +0 -1
  560. package/src/components/table.d.ts +0 -105
  561. package/src/components/table.js +0 -283
  562. package/src/components/table.js.map +0 -1
  563. package/src/components/table.schema.d.ts +0 -159
  564. package/src/components/table.schema.js +0 -173
  565. package/src/components/table.schema.js.map +0 -1
  566. package/src/handlebars/helpers.d.ts +0 -348
  567. package/src/handlebars/helpers.js +0 -605
  568. package/src/handlebars/helpers.js.map +0 -1
  569. package/src/handlebars/index.d.ts +0 -193
  570. package/src/handlebars/index.js +0 -350
  571. package/src/handlebars/index.js.map +0 -1
  572. package/src/index.d.ts +0 -50
  573. package/src/index.js +0 -192
  574. package/src/index.js.map +0 -1
  575. package/src/layouts/base.d.ts +0 -88
  576. package/src/layouts/base.js +0 -227
  577. package/src/layouts/base.js.map +0 -1
  578. package/src/layouts/index.d.ts +0 -7
  579. package/src/layouts/index.js +0 -25
  580. package/src/layouts/index.js.map +0 -1
  581. package/src/layouts/presets.d.ts +0 -133
  582. package/src/layouts/presets.js +0 -277
  583. package/src/layouts/presets.js.map +0 -1
  584. package/src/pages/consent.d.ts +0 -116
  585. package/src/pages/consent.js +0 -218
  586. package/src/pages/consent.js.map +0 -1
  587. package/src/pages/error.d.ts +0 -100
  588. package/src/pages/error.js +0 -263
  589. package/src/pages/error.js.map +0 -1
  590. package/src/pages/index.d.ts +0 -8
  591. package/src/pages/index.js +0 -27
  592. package/src/pages/index.js.map +0 -1
  593. package/src/react/Alert.d.ts +0 -101
  594. package/src/react/Alert.js +0 -51
  595. package/src/react/Alert.js.map +0 -1
  596. package/src/react/Badge.d.ts +0 -100
  597. package/src/react/Badge.js +0 -55
  598. package/src/react/Badge.js.map +0 -1
  599. package/src/react/Button.d.ts +0 -108
  600. package/src/react/Button.js +0 -52
  601. package/src/react/Button.js.map +0 -1
  602. package/src/react/Card.d.ts +0 -103
  603. package/src/react/Card.js +0 -55
  604. package/src/react/Card.js.map +0 -1
  605. package/src/react/hooks/context.d.ts +0 -178
  606. package/src/react/hooks/context.js +0 -287
  607. package/src/react/hooks/context.js.map +0 -1
  608. package/src/react/hooks/index.d.ts +0 -41
  609. package/src/react/hooks/index.js +0 -61
  610. package/src/react/hooks/index.js.map +0 -1
  611. package/src/react/hooks/tools.d.ts +0 -283
  612. package/src/react/hooks/tools.js +0 -465
  613. package/src/react/hooks/tools.js.map +0 -1
  614. package/src/react/index.d.ts +0 -80
  615. package/src/react/index.js +0 -113
  616. package/src/react/index.js.map +0 -1
  617. package/src/react/types.d.ts +0 -105
  618. package/src/react/types.js +0 -12
  619. package/src/react/types.js.map +0 -1
  620. package/src/react/utils.d.ts +0 -42
  621. package/src/react/utils.js +0 -99
  622. package/src/react/utils.js.map +0 -1
  623. package/src/registry/index.d.ts +0 -45
  624. package/src/registry/index.js +0 -67
  625. package/src/registry/index.js.map +0 -1
  626. package/src/registry/render-template.d.ts +0 -86
  627. package/src/registry/render-template.js +0 -239
  628. package/src/registry/render-template.js.map +0 -1
  629. package/src/registry/tool-ui.registry.d.ts +0 -260
  630. package/src/registry/tool-ui.registry.js +0 -438
  631. package/src/registry/tool-ui.registry.js.map +0 -1
  632. package/src/registry/uri-utils.d.ts +0 -55
  633. package/src/registry/uri-utils.js +0 -97
  634. package/src/registry/uri-utils.js.map +0 -1
  635. package/src/render/index.d.ts +0 -7
  636. package/src/render/index.js +0 -14
  637. package/src/render/index.js.map +0 -1
  638. package/src/render/prerender.d.ts +0 -56
  639. package/src/render/prerender.js +0 -98
  640. package/src/render/prerender.js.map +0 -1
  641. package/src/renderers/cache.d.ts +0 -144
  642. package/src/renderers/cache.js +0 -240
  643. package/src/renderers/cache.js.map +0 -1
  644. package/src/renderers/html.renderer.d.ts +0 -122
  645. package/src/renderers/html.renderer.js +0 -204
  646. package/src/renderers/html.renderer.js.map +0 -1
  647. package/src/renderers/index.d.ts +0 -35
  648. package/src/renderers/index.js +0 -70
  649. package/src/renderers/index.js.map +0 -1
  650. package/src/renderers/mdx.renderer.d.ts +0 -119
  651. package/src/renderers/mdx.renderer.js +0 -305
  652. package/src/renderers/mdx.renderer.js.map +0 -1
  653. package/src/renderers/react.renderer.d.ts +0 -95
  654. package/src/renderers/react.renderer.js +0 -260
  655. package/src/renderers/react.renderer.js.map +0 -1
  656. package/src/renderers/registry.d.ts +0 -133
  657. package/src/renderers/registry.js +0 -232
  658. package/src/renderers/registry.js.map +0 -1
  659. package/src/renderers/types.d.ts +0 -341
  660. package/src/renderers/types.js +0 -9
  661. package/src/renderers/types.js.map +0 -1
  662. package/src/renderers/utils/detect.d.ts +0 -106
  663. package/src/renderers/utils/detect.js +0 -267
  664. package/src/renderers/utils/detect.js.map +0 -1
  665. package/src/renderers/utils/hash.d.ts +0 -39
  666. package/src/renderers/utils/hash.js +0 -75
  667. package/src/renderers/utils/hash.js.map +0 -1
  668. package/src/renderers/utils/index.d.ts +0 -8
  669. package/src/renderers/utils/index.js +0 -28
  670. package/src/renderers/utils/index.js.map +0 -1
  671. package/src/renderers/utils/transpiler.d.ts +0 -88
  672. package/src/renderers/utils/transpiler.js +0 -215
  673. package/src/renderers/utils/transpiler.js.map +0 -1
  674. package/src/runtime/adapters/html.adapter.d.ts +0 -58
  675. package/src/runtime/adapters/html.adapter.js +0 -131
  676. package/src/runtime/adapters/html.adapter.js.map +0 -1
  677. package/src/runtime/adapters/index.d.ts +0 -25
  678. package/src/runtime/adapters/index.js +0 -54
  679. package/src/runtime/adapters/index.js.map +0 -1
  680. package/src/runtime/adapters/mdx.adapter.d.ts +0 -72
  681. package/src/runtime/adapters/mdx.adapter.js +0 -241
  682. package/src/runtime/adapters/mdx.adapter.js.map +0 -1
  683. package/src/runtime/adapters/react.adapter.d.ts +0 -69
  684. package/src/runtime/adapters/react.adapter.js +0 -245
  685. package/src/runtime/adapters/react.adapter.js.map +0 -1
  686. package/src/runtime/adapters/types.d.ts +0 -94
  687. package/src/runtime/adapters/types.js +0 -11
  688. package/src/runtime/adapters/types.js.map +0 -1
  689. package/src/runtime/csp.d.ts +0 -37
  690. package/src/runtime/csp.js +0 -140
  691. package/src/runtime/csp.js.map +0 -1
  692. package/src/runtime/index.d.ts +0 -16
  693. package/src/runtime/index.js +0 -72
  694. package/src/runtime/index.js.map +0 -1
  695. package/src/runtime/mcp-bridge.d.ts +0 -100
  696. package/src/runtime/mcp-bridge.js +0 -581
  697. package/src/runtime/mcp-bridge.js.map +0 -1
  698. package/src/runtime/renderer-runtime.d.ts +0 -132
  699. package/src/runtime/renderer-runtime.js +0 -389
  700. package/src/runtime/renderer-runtime.js.map +0 -1
  701. package/src/runtime/sanitizer.d.ts +0 -171
  702. package/src/runtime/sanitizer.js +0 -318
  703. package/src/runtime/sanitizer.js.map +0 -1
  704. package/src/runtime/types.d.ts +0 -414
  705. package/src/runtime/types.js +0 -12
  706. package/src/runtime/types.js.map +0 -1
  707. package/src/runtime/wrapper.d.ts +0 -375
  708. package/src/runtime/wrapper.js +0 -1793
  709. package/src/runtime/wrapper.js.map +0 -1
  710. package/src/styles/index.d.ts +0 -7
  711. package/src/styles/index.js +0 -11
  712. package/src/styles/index.js.map +0 -1
  713. package/src/styles/variants.d.ts +0 -50
  714. package/src/styles/variants.js +0 -175
  715. package/src/styles/variants.js.map +0 -1
  716. package/src/theme/cdn.d.ts +0 -194
  717. package/src/theme/cdn.js +0 -375
  718. package/src/theme/cdn.js.map +0 -1
  719. package/src/theme/index.d.ts +0 -17
  720. package/src/theme/index.js +0 -57
  721. package/src/theme/index.js.map +0 -1
  722. package/src/theme/platforms.d.ts +0 -106
  723. package/src/theme/platforms.js +0 -161
  724. package/src/theme/platforms.js.map +0 -1
  725. package/src/theme/presets/github-openai.d.ts +0 -49
  726. package/src/theme/presets/github-openai.js +0 -189
  727. package/src/theme/presets/github-openai.js.map +0 -1
  728. package/src/theme/presets/index.d.ts +0 -10
  729. package/src/theme/presets/index.js +0 -17
  730. package/src/theme/presets/index.js.map +0 -1
  731. package/src/theme/theme.d.ts +0 -395
  732. package/src/theme/theme.js +0 -332
  733. package/src/theme/theme.js.map +0 -1
  734. package/src/tool-template/builder.d.ts +0 -212
  735. package/src/tool-template/builder.js +0 -397
  736. package/src/tool-template/builder.js.map +0 -1
  737. package/src/tool-template/index.d.ts +0 -15
  738. package/src/tool-template/index.js +0 -38
  739. package/src/tool-template/index.js.map +0 -1
  740. package/src/types/index.d.ts +0 -13
  741. package/src/types/index.js +0 -26
  742. package/src/types/index.js.map +0 -1
  743. package/src/types/ui-config.d.ts +0 -357
  744. package/src/types/ui-config.js +0 -12
  745. package/src/types/ui-config.js.map +0 -1
  746. package/src/types/ui-runtime.d.ts +0 -965
  747. package/src/types/ui-runtime.js +0 -117
  748. package/src/types/ui-runtime.js.map +0 -1
  749. package/src/validation/error-box.d.ts +0 -55
  750. package/src/validation/error-box.js +0 -75
  751. package/src/validation/error-box.js.map +0 -1
  752. package/src/validation/index.d.ts +0 -12
  753. package/src/validation/index.js +0 -21
  754. package/src/validation/index.js.map +0 -1
  755. package/src/validation/wrapper.d.ts +0 -96
  756. package/src/validation/wrapper.js +0 -117
  757. package/src/validation/wrapper.js.map +0 -1
  758. package/src/web-components/core/attribute-parser.d.ts +0 -85
  759. package/src/web-components/core/attribute-parser.js +0 -189
  760. package/src/web-components/core/attribute-parser.js.map +0 -1
  761. package/src/web-components/core/base-element.d.ts +0 -197
  762. package/src/web-components/core/base-element.js +0 -289
  763. package/src/web-components/core/base-element.js.map +0 -1
  764. package/src/web-components/core/index.d.ts +0 -8
  765. package/src/web-components/core/index.js +0 -18
  766. package/src/web-components/core/index.js.map +0 -1
  767. package/src/web-components/elements/fmcp-alert.d.ts +0 -45
  768. package/src/web-components/elements/fmcp-alert.js +0 -93
  769. package/src/web-components/elements/fmcp-alert.js.map +0 -1
  770. package/src/web-components/elements/fmcp-badge.d.ts +0 -46
  771. package/src/web-components/elements/fmcp-badge.js +0 -99
  772. package/src/web-components/elements/fmcp-badge.js.map +0 -1
  773. package/src/web-components/elements/fmcp-button.d.ts +0 -124
  774. package/src/web-components/elements/fmcp-button.js +0 -233
  775. package/src/web-components/elements/fmcp-button.js.map +0 -1
  776. package/src/web-components/elements/fmcp-card.d.ts +0 -52
  777. package/src/web-components/elements/fmcp-card.js +0 -115
  778. package/src/web-components/elements/fmcp-card.js.map +0 -1
  779. package/src/web-components/elements/fmcp-input.d.ts +0 -95
  780. package/src/web-components/elements/fmcp-input.js +0 -248
  781. package/src/web-components/elements/fmcp-input.js.map +0 -1
  782. package/src/web-components/elements/fmcp-select.d.ts +0 -99
  783. package/src/web-components/elements/fmcp-select.js +0 -243
  784. package/src/web-components/elements/fmcp-select.js.map +0 -1
  785. package/src/web-components/elements/index.d.ts +0 -12
  786. package/src/web-components/elements/index.js +0 -34
  787. package/src/web-components/elements/index.js.map +0 -1
  788. package/src/web-components/index.d.ts +0 -49
  789. package/src/web-components/index.js +0 -75
  790. package/src/web-components/index.js.map +0 -1
  791. package/src/web-components/register.d.ts +0 -56
  792. package/src/web-components/register.js +0 -80
  793. package/src/web-components/register.js.map +0 -1
  794. package/src/web-components/types.d.ts +0 -121
  795. package/src/web-components/types.js +0 -25
  796. package/src/web-components/types.js.map +0 -1
  797. package/src/widgets/index.d.ts +0 -7
  798. package/src/widgets/index.js +0 -24
  799. package/src/widgets/index.js.map +0 -1
  800. package/src/widgets/progress.d.ts +0 -132
  801. package/src/widgets/progress.js +0 -303
  802. package/src/widgets/progress.js.map +0 -1
  803. package/src/widgets/resource.d.ts +0 -162
  804. package/src/widgets/resource.js +0 -340
  805. package/src/widgets/resource.js.map +0 -1
@@ -1,314 +0,0 @@
1
- "use strict";
2
- /**
3
- * Base Platform Adapter
4
- *
5
- * Abstract base class for platform adapters with default implementations.
6
- * Extend this class to create custom adapters for new platforms.
7
- *
8
- * @packageDocumentation
9
- */
10
- Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.BaseAdapter = exports.DEFAULT_SAFE_AREA = exports.DEFAULT_CAPABILITIES = void 0;
12
- /**
13
- * Default adapter capabilities (most features disabled).
14
- */
15
- exports.DEFAULT_CAPABILITIES = {
16
- canCallTools: false,
17
- canSendMessages: false,
18
- canOpenLinks: false,
19
- canPersistState: true, // localStorage fallback
20
- hasNetworkAccess: true,
21
- supportsDisplayModes: false,
22
- supportsTheme: true,
23
- };
24
- /**
25
- * Default safe area insets (no insets).
26
- */
27
- exports.DEFAULT_SAFE_AREA = {
28
- top: 0,
29
- bottom: 0,
30
- left: 0,
31
- right: 0,
32
- };
33
- /**
34
- * Abstract base class for platform adapters.
35
- * Provides default implementations that can be overridden.
36
- */
37
- class BaseAdapter {
38
- _capabilities = { ...exports.DEFAULT_CAPABILITIES };
39
- _hostContext;
40
- _widgetState = {};
41
- _toolInput = {};
42
- _toolOutput = undefined;
43
- _structuredContent = undefined;
44
- _initialized = false;
45
- _contextListeners = new Set();
46
- _toolResultListeners = new Set();
47
- constructor() {
48
- this._hostContext = this._createDefaultHostContext();
49
- }
50
- get capabilities() {
51
- return this._capabilities;
52
- }
53
- async initialize() {
54
- if (this._initialized)
55
- return;
56
- // Load persisted widget state
57
- this._loadWidgetState();
58
- // Read injected tool data
59
- this._readInjectedData();
60
- this._initialized = true;
61
- }
62
- dispose() {
63
- this._contextListeners.clear();
64
- this._toolResultListeners.clear();
65
- this._initialized = false;
66
- }
67
- // ============================================
68
- // Data Access
69
- // ============================================
70
- getTheme() {
71
- return this._hostContext.theme;
72
- }
73
- getDisplayMode() {
74
- return this._hostContext.displayMode;
75
- }
76
- getUserAgent() {
77
- return this._hostContext.userAgent;
78
- }
79
- getLocale() {
80
- return this._hostContext.locale;
81
- }
82
- getToolInput() {
83
- return this._toolInput;
84
- }
85
- getToolOutput() {
86
- return this._toolOutput;
87
- }
88
- getStructuredContent() {
89
- return this._structuredContent;
90
- }
91
- getWidgetState() {
92
- return this._widgetState;
93
- }
94
- getSafeArea() {
95
- return this._hostContext.safeArea;
96
- }
97
- getViewport() {
98
- return this._hostContext.viewport;
99
- }
100
- getHostContext() {
101
- return { ...this._hostContext };
102
- }
103
- // ============================================
104
- // Actions (override in subclasses for real functionality)
105
- // ============================================
106
- async callTool(_name, _args) {
107
- if (!this._capabilities.canCallTools) {
108
- throw new Error(`Tool calls are not supported by ${this.name} adapter`);
109
- }
110
- throw new Error('callTool not implemented');
111
- }
112
- async sendMessage(_content) {
113
- if (!this._capabilities.canSendMessages) {
114
- throw new Error(`Sending messages is not supported by ${this.name} adapter`);
115
- }
116
- throw new Error('sendMessage not implemented');
117
- }
118
- async openLink(url) {
119
- if (!this._capabilities.canOpenLinks) {
120
- // Fallback: try window.open
121
- if (typeof window !== 'undefined') {
122
- window.open(url, '_blank', 'noopener,noreferrer');
123
- return;
124
- }
125
- throw new Error(`Opening links is not supported by ${this.name} adapter`);
126
- }
127
- throw new Error('openLink not implemented');
128
- }
129
- async requestDisplayMode(_mode) {
130
- if (!this._capabilities.supportsDisplayModes) {
131
- // Silently ignore on unsupported platforms
132
- return;
133
- }
134
- throw new Error('requestDisplayMode not implemented');
135
- }
136
- async requestClose() {
137
- // Default: no-op (host controls widget lifecycle)
138
- }
139
- setWidgetState(state) {
140
- this._widgetState = { ...this._widgetState, ...state };
141
- this._persistWidgetState();
142
- }
143
- // ============================================
144
- // Events
145
- // ============================================
146
- onContextChange(callback) {
147
- this._contextListeners.add(callback);
148
- return () => {
149
- this._contextListeners.delete(callback);
150
- };
151
- }
152
- onToolResult(callback) {
153
- this._toolResultListeners.add(callback);
154
- return () => {
155
- this._toolResultListeners.delete(callback);
156
- };
157
- }
158
- // ============================================
159
- // Protected Helpers
160
- // ============================================
161
- /**
162
- * Create default host context from environment detection.
163
- */
164
- _createDefaultHostContext() {
165
- return {
166
- theme: this._detectTheme(),
167
- displayMode: 'inline',
168
- locale: this._detectLocale(),
169
- userAgent: this._detectUserAgent(),
170
- safeArea: exports.DEFAULT_SAFE_AREA,
171
- viewport: this._detectViewport(),
172
- };
173
- }
174
- /**
175
- * Detect theme from CSS media query.
176
- */
177
- _detectTheme() {
178
- if (typeof window !== 'undefined' && window.matchMedia) {
179
- return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
180
- }
181
- return 'light';
182
- }
183
- /**
184
- * Detect locale from navigator.
185
- */
186
- _detectLocale() {
187
- if (typeof navigator !== 'undefined') {
188
- return navigator.language || 'en-US';
189
- }
190
- return 'en-US';
191
- }
192
- /**
193
- * Detect user agent capabilities.
194
- */
195
- _detectUserAgent() {
196
- if (typeof navigator === 'undefined') {
197
- return { type: 'web', hover: true, touch: false };
198
- }
199
- const ua = navigator.userAgent || '';
200
- const isMobile = /iPhone|iPad|iPod|Android/i.test(ua);
201
- const hasTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;
202
- const hasHover = typeof window !== 'undefined' && window.matchMedia && window.matchMedia('(hover: hover)').matches;
203
- return {
204
- type: isMobile ? 'mobile' : 'web',
205
- hover: hasHover !== false,
206
- touch: hasTouch,
207
- };
208
- }
209
- /**
210
- * Detect viewport dimensions.
211
- */
212
- _detectViewport() {
213
- if (typeof window !== 'undefined') {
214
- return {
215
- width: window.innerWidth,
216
- height: window.innerHeight,
217
- };
218
- }
219
- return undefined;
220
- }
221
- /**
222
- * Read injected tool data from window globals.
223
- */
224
- _readInjectedData() {
225
- if (typeof window === 'undefined')
226
- return;
227
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
228
- const win = window;
229
- if (win.__mcpToolInput) {
230
- this._toolInput = win.__mcpToolInput;
231
- }
232
- if (win.__mcpToolOutput) {
233
- this._toolOutput = win.__mcpToolOutput;
234
- }
235
- if (win.__mcpStructuredContent) {
236
- this._structuredContent = win.__mcpStructuredContent;
237
- }
238
- if (win.__mcpHostContext) {
239
- this._hostContext = { ...this._hostContext, ...win.__mcpHostContext };
240
- }
241
- }
242
- /**
243
- * Load widget state from localStorage.
244
- */
245
- _loadWidgetState() {
246
- if (typeof localStorage === 'undefined')
247
- return;
248
- try {
249
- const key = this._getStateKey();
250
- const stored = localStorage.getItem(key);
251
- if (stored) {
252
- this._widgetState = JSON.parse(stored);
253
- }
254
- }
255
- catch {
256
- // Ignore storage errors
257
- }
258
- }
259
- /**
260
- * Persist widget state to localStorage.
261
- */
262
- _persistWidgetState() {
263
- if (typeof localStorage === 'undefined')
264
- return;
265
- try {
266
- const key = this._getStateKey();
267
- localStorage.setItem(key, JSON.stringify(this._widgetState));
268
- }
269
- catch {
270
- // Ignore storage errors
271
- }
272
- }
273
- /**
274
- * Get localStorage key for widget state.
275
- */
276
- _getStateKey() {
277
- if (typeof window !== 'undefined') {
278
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
279
- const toolName = window.__mcpToolName || 'unknown';
280
- return `frontmcp:widget:${toolName}`;
281
- }
282
- return 'frontmcp:widget:unknown';
283
- }
284
- /**
285
- * Notify context change listeners.
286
- */
287
- _notifyContextChange(changes) {
288
- this._hostContext = { ...this._hostContext, ...changes };
289
- this._contextListeners.forEach((cb) => {
290
- try {
291
- cb(changes);
292
- }
293
- catch (e) {
294
- console.error('[FrontMcpBridge] Context change listener error:', e);
295
- }
296
- });
297
- }
298
- /**
299
- * Notify tool result listeners.
300
- */
301
- _notifyToolResult(result) {
302
- this._toolOutput = result;
303
- this._toolResultListeners.forEach((cb) => {
304
- try {
305
- cb(result);
306
- }
307
- catch (e) {
308
- console.error('[FrontMcpBridge] Tool result listener error:', e);
309
- }
310
- });
311
- }
312
- }
313
- exports.BaseAdapter = BaseAdapter;
314
- //# sourceMappingURL=base-adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-adapter.js","sourceRoot":"","sources":["../../../../src/bridge/adapters/base-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Base Platform Adapter\n *\n * Abstract base class for platform adapters with default implementations.\n * Extend this class to create custom adapters for new platforms.\n *\n * @packageDocumentation\n */\n\nimport type {\n PlatformAdapter,\n AdapterCapabilities,\n DisplayMode,\n UserAgentInfo,\n SafeAreaInsets,\n ViewportInfo,\n HostContext,\n} from '../types';\n\n/**\n * Default adapter capabilities (most features disabled).\n */\nexport const DEFAULT_CAPABILITIES: AdapterCapabilities = {\n canCallTools: false,\n canSendMessages: false,\n canOpenLinks: false,\n canPersistState: true, // localStorage fallback\n hasNetworkAccess: true,\n supportsDisplayModes: false,\n supportsTheme: true,\n};\n\n/**\n * Default safe area insets (no insets).\n */\nexport const DEFAULT_SAFE_AREA: SafeAreaInsets = {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n};\n\n/**\n * Abstract base class for platform adapters.\n * Provides default implementations that can be overridden.\n */\nexport abstract class BaseAdapter implements PlatformAdapter {\n abstract readonly id: string;\n abstract readonly name: string;\n abstract readonly priority: number;\n\n protected _capabilities: AdapterCapabilities = { ...DEFAULT_CAPABILITIES };\n protected _hostContext: HostContext;\n protected _widgetState: Record<string, unknown> = {};\n protected _toolInput: Record<string, unknown> = {};\n protected _toolOutput: unknown = undefined;\n protected _structuredContent: unknown = undefined;\n protected _initialized = false;\n\n protected _contextListeners: Set<(changes: Partial<HostContext>) => void> = new Set();\n protected _toolResultListeners: Set<(result: unknown) => void> = new Set();\n\n constructor() {\n this._hostContext = this._createDefaultHostContext();\n }\n\n get capabilities(): AdapterCapabilities {\n return this._capabilities;\n }\n\n // ============================================\n // Lifecycle (override in subclasses)\n // ============================================\n\n abstract canHandle(): boolean;\n\n async initialize(): Promise<void> {\n if (this._initialized) return;\n\n // Load persisted widget state\n this._loadWidgetState();\n\n // Read injected tool data\n this._readInjectedData();\n\n this._initialized = true;\n }\n\n dispose(): void {\n this._contextListeners.clear();\n this._toolResultListeners.clear();\n this._initialized = false;\n }\n\n // ============================================\n // Data Access\n // ============================================\n\n getTheme(): 'light' | 'dark' {\n return this._hostContext.theme;\n }\n\n getDisplayMode(): DisplayMode {\n return this._hostContext.displayMode;\n }\n\n getUserAgent(): UserAgentInfo {\n return this._hostContext.userAgent;\n }\n\n getLocale(): string {\n return this._hostContext.locale;\n }\n\n getToolInput(): Record<string, unknown> {\n return this._toolInput;\n }\n\n getToolOutput(): unknown {\n return this._toolOutput;\n }\n\n getStructuredContent(): unknown {\n return this._structuredContent;\n }\n\n getWidgetState(): Record<string, unknown> {\n return this._widgetState;\n }\n\n getSafeArea(): SafeAreaInsets {\n return this._hostContext.safeArea;\n }\n\n getViewport(): ViewportInfo | undefined {\n return this._hostContext.viewport;\n }\n\n getHostContext(): HostContext {\n return { ...this._hostContext };\n }\n\n // ============================================\n // Actions (override in subclasses for real functionality)\n // ============================================\n\n async callTool(_name: string, _args: Record<string, unknown>): Promise<unknown> {\n if (!this._capabilities.canCallTools) {\n throw new Error(`Tool calls are not supported by ${this.name} adapter`);\n }\n throw new Error('callTool not implemented');\n }\n\n async sendMessage(_content: string): Promise<void> {\n if (!this._capabilities.canSendMessages) {\n throw new Error(`Sending messages is not supported by ${this.name} adapter`);\n }\n throw new Error('sendMessage not implemented');\n }\n\n async openLink(url: string): Promise<void> {\n if (!this._capabilities.canOpenLinks) {\n // Fallback: try window.open\n if (typeof window !== 'undefined') {\n window.open(url, '_blank', 'noopener,noreferrer');\n return;\n }\n throw new Error(`Opening links is not supported by ${this.name} adapter`);\n }\n throw new Error('openLink not implemented');\n }\n\n async requestDisplayMode(_mode: DisplayMode): Promise<void> {\n if (!this._capabilities.supportsDisplayModes) {\n // Silently ignore on unsupported platforms\n return;\n }\n throw new Error('requestDisplayMode not implemented');\n }\n\n async requestClose(): Promise<void> {\n // Default: no-op (host controls widget lifecycle)\n }\n\n setWidgetState(state: Record<string, unknown>): void {\n this._widgetState = { ...this._widgetState, ...state };\n this._persistWidgetState();\n }\n\n // ============================================\n // Events\n // ============================================\n\n onContextChange(callback: (changes: Partial<HostContext>) => void): () => void {\n this._contextListeners.add(callback);\n return () => {\n this._contextListeners.delete(callback);\n };\n }\n\n onToolResult(callback: (result: unknown) => void): () => void {\n this._toolResultListeners.add(callback);\n return () => {\n this._toolResultListeners.delete(callback);\n };\n }\n\n // ============================================\n // Protected Helpers\n // ============================================\n\n /**\n * Create default host context from environment detection.\n */\n protected _createDefaultHostContext(): HostContext {\n return {\n theme: this._detectTheme(),\n displayMode: 'inline',\n locale: this._detectLocale(),\n userAgent: this._detectUserAgent(),\n safeArea: DEFAULT_SAFE_AREA,\n viewport: this._detectViewport(),\n };\n }\n\n /**\n * Detect theme from CSS media query.\n */\n protected _detectTheme(): 'light' | 'dark' {\n if (typeof window !== 'undefined' && window.matchMedia) {\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n }\n return 'light';\n }\n\n /**\n * Detect locale from navigator.\n */\n protected _detectLocale(): string {\n if (typeof navigator !== 'undefined') {\n return navigator.language || 'en-US';\n }\n return 'en-US';\n }\n\n /**\n * Detect user agent capabilities.\n */\n protected _detectUserAgent(): UserAgentInfo {\n if (typeof navigator === 'undefined') {\n return { type: 'web', hover: true, touch: false };\n }\n\n const ua = navigator.userAgent || '';\n const isMobile = /iPhone|iPad|iPod|Android/i.test(ua);\n const hasTouch = 'ontouchstart' in window || navigator.maxTouchPoints > 0;\n const hasHover = typeof window !== 'undefined' && window.matchMedia && window.matchMedia('(hover: hover)').matches;\n\n return {\n type: isMobile ? 'mobile' : 'web',\n hover: hasHover !== false,\n touch: hasTouch,\n };\n }\n\n /**\n * Detect viewport dimensions.\n */\n protected _detectViewport(): ViewportInfo | undefined {\n if (typeof window !== 'undefined') {\n return {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n }\n return undefined;\n }\n\n /**\n * Read injected tool data from window globals.\n */\n protected _readInjectedData(): void {\n if (typeof window === 'undefined') return;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const win = window as any;\n\n if (win.__mcpToolInput) {\n this._toolInput = win.__mcpToolInput;\n }\n if (win.__mcpToolOutput) {\n this._toolOutput = win.__mcpToolOutput;\n }\n if (win.__mcpStructuredContent) {\n this._structuredContent = win.__mcpStructuredContent;\n }\n if (win.__mcpHostContext) {\n this._hostContext = { ...this._hostContext, ...win.__mcpHostContext };\n }\n }\n\n /**\n * Load widget state from localStorage.\n */\n protected _loadWidgetState(): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = this._getStateKey();\n const stored = localStorage.getItem(key);\n if (stored) {\n this._widgetState = JSON.parse(stored);\n }\n } catch {\n // Ignore storage errors\n }\n }\n\n /**\n * Persist widget state to localStorage.\n */\n protected _persistWidgetState(): void {\n if (typeof localStorage === 'undefined') return;\n\n try {\n const key = this._getStateKey();\n localStorage.setItem(key, JSON.stringify(this._widgetState));\n } catch {\n // Ignore storage errors\n }\n }\n\n /**\n * Get localStorage key for widget state.\n */\n protected _getStateKey(): string {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const toolName = (window as any).__mcpToolName || 'unknown';\n return `frontmcp:widget:${toolName}`;\n }\n return 'frontmcp:widget:unknown';\n }\n\n /**\n * Notify context change listeners.\n */\n protected _notifyContextChange(changes: Partial<HostContext>): void {\n this._hostContext = { ...this._hostContext, ...changes };\n this._contextListeners.forEach((cb) => {\n try {\n cb(changes);\n } catch (e) {\n console.error('[FrontMcpBridge] Context change listener error:', e);\n }\n });\n }\n\n /**\n * Notify tool result listeners.\n */\n protected _notifyToolResult(result: unknown): void {\n this._toolOutput = result;\n this._toolResultListeners.forEach((cb) => {\n try {\n cb(result);\n } catch (e) {\n console.error('[FrontMcpBridge] Tool result listener error:', e);\n }\n });\n }\n}\n"]}
@@ -1,66 +0,0 @@
1
- /**
2
- * Claude Platform Adapter
3
- *
4
- * Adapter for Claude (Anthropic) artifacts and widgets.
5
- * Claude artifacts have network restrictions - external fetches are blocked.
6
- * This adapter relies on injected data and localStorage for state.
7
- *
8
- * @packageDocumentation
9
- */
10
- import type { DisplayMode } from '../types';
11
- import { BaseAdapter } from './base-adapter';
12
- /**
13
- * Claude adapter for Anthropic's Claude AI.
14
- *
15
- * Features:
16
- * - Theme detection from system preferences
17
- * - Injected tool data via window globals
18
- * - LocalStorage persistence for widget state
19
- * - No external network access (blocked by Claude)
20
- *
21
- * @example
22
- * ```typescript
23
- * import { ClaudeAdapter } from '@frontmcp/ui/bridge';
24
- *
25
- * const adapter = new ClaudeAdapter();
26
- * if (adapter.canHandle()) {
27
- * await adapter.initialize();
28
- * const input = adapter.getToolInput();
29
- * }
30
- * ```
31
- */
32
- export declare class ClaudeAdapter extends BaseAdapter {
33
- readonly id = "claude";
34
- readonly name = "Claude (Anthropic)";
35
- readonly priority = 60;
36
- constructor();
37
- /**
38
- * Check if we're running in a Claude artifact/widget context.
39
- */
40
- canHandle(): boolean;
41
- /**
42
- * Initialize the Claude adapter.
43
- */
44
- initialize(): Promise<void>;
45
- /**
46
- * Open a link in a new tab.
47
- * This is one of the few actions available in Claude artifacts.
48
- */
49
- openLink(url: string): Promise<void>;
50
- /**
51
- * Request display mode change (no-op for Claude).
52
- */
53
- requestDisplayMode(_mode: DisplayMode): Promise<void>;
54
- /**
55
- * Request close (no-op for Claude).
56
- */
57
- requestClose(): Promise<void>;
58
- /**
59
- * Setup listener for system theme changes.
60
- */
61
- private _setupThemeListener;
62
- }
63
- /**
64
- * Factory function for creating Claude adapter instances.
65
- */
66
- export declare function createClaudeAdapter(): ClaudeAdapter;
@@ -1,145 +0,0 @@
1
- "use strict";
2
- /**
3
- * Claude Platform Adapter
4
- *
5
- * Adapter for Claude (Anthropic) artifacts and widgets.
6
- * Claude artifacts have network restrictions - external fetches are blocked.
7
- * This adapter relies on injected data and localStorage for state.
8
- *
9
- * @packageDocumentation
10
- */
11
- Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.ClaudeAdapter = void 0;
13
- exports.createClaudeAdapter = createClaudeAdapter;
14
- const base_adapter_1 = require("./base-adapter");
15
- /**
16
- * Claude adapter for Anthropic's Claude AI.
17
- *
18
- * Features:
19
- * - Theme detection from system preferences
20
- * - Injected tool data via window globals
21
- * - LocalStorage persistence for widget state
22
- * - No external network access (blocked by Claude)
23
- *
24
- * @example
25
- * ```typescript
26
- * import { ClaudeAdapter } from '@frontmcp/ui/bridge';
27
- *
28
- * const adapter = new ClaudeAdapter();
29
- * if (adapter.canHandle()) {
30
- * await adapter.initialize();
31
- * const input = adapter.getToolInput();
32
- * }
33
- * ```
34
- */
35
- class ClaudeAdapter extends base_adapter_1.BaseAdapter {
36
- id = 'claude';
37
- name = 'Claude (Anthropic)';
38
- priority = 60;
39
- constructor() {
40
- super();
41
- this._capabilities = {
42
- ...base_adapter_1.DEFAULT_CAPABILITIES,
43
- canCallTools: false, // Claude artifacts can't call tools
44
- canSendMessages: false, // Can't send messages back to conversation
45
- canOpenLinks: true, // Can open links via window.open
46
- canPersistState: true, // localStorage works
47
- hasNetworkAccess: false, // Network is blocked
48
- supportsDisplayModes: false, // No display mode control
49
- supportsTheme: true, // Can detect system theme
50
- };
51
- }
52
- /**
53
- * Check if we're running in a Claude artifact/widget context.
54
- */
55
- canHandle() {
56
- if (typeof window === 'undefined')
57
- return false;
58
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
59
- const win = window;
60
- // Check explicit platform marker
61
- if (win.__mcpPlatform === 'claude')
62
- return true;
63
- // Check for Claude-specific global
64
- if (win.claude)
65
- return true;
66
- // Check for Claude artifact markers
67
- if (win.__claudeArtifact)
68
- return true;
69
- // Check URL patterns for Claude
70
- if (typeof location !== 'undefined') {
71
- const href = location.href;
72
- if (href.includes('claude.ai') || href.includes('anthropic.com')) {
73
- return true;
74
- }
75
- }
76
- return false;
77
- }
78
- /**
79
- * Initialize the Claude adapter.
80
- */
81
- async initialize() {
82
- if (this._initialized)
83
- return;
84
- // Call base initialization (loads state, reads injected data)
85
- await super.initialize();
86
- // Setup theme detection listener
87
- this._setupThemeListener();
88
- }
89
- /**
90
- * Open a link in a new tab.
91
- * This is one of the few actions available in Claude artifacts.
92
- */
93
- async openLink(url) {
94
- if (typeof window !== 'undefined') {
95
- window.open(url, '_blank', 'noopener,noreferrer');
96
- }
97
- }
98
- /**
99
- * Request display mode change (no-op for Claude).
100
- */
101
- async requestDisplayMode(_mode) {
102
- // Claude doesn't support display mode changes
103
- // Silently ignore
104
- }
105
- /**
106
- * Request close (no-op for Claude).
107
- */
108
- async requestClose() {
109
- // Claude artifacts can't close themselves
110
- // Silently ignore
111
- }
112
- // ============================================
113
- // Private Helpers
114
- // ============================================
115
- /**
116
- * Setup listener for system theme changes.
117
- */
118
- _setupThemeListener() {
119
- if (typeof window === 'undefined' || !window.matchMedia)
120
- return;
121
- const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
122
- const handleChange = (e) => {
123
- const newTheme = e.matches ? 'dark' : 'light';
124
- if (newTheme !== this._hostContext.theme) {
125
- this._notifyContextChange({ theme: newTheme });
126
- }
127
- };
128
- // Use addEventListener if available (newer API)
129
- if (mediaQuery.addEventListener) {
130
- mediaQuery.addEventListener('change', handleChange);
131
- }
132
- else if (mediaQuery.addListener) {
133
- // Fallback for older browsers
134
- mediaQuery.addListener(handleChange);
135
- }
136
- }
137
- }
138
- exports.ClaudeAdapter = ClaudeAdapter;
139
- /**
140
- * Factory function for creating Claude adapter instances.
141
- */
142
- function createClaudeAdapter() {
143
- return new ClaudeAdapter();
144
- }
145
- //# sourceMappingURL=claude.adapter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude.adapter.js","sourceRoot":"","sources":["../../../../src/bridge/adapters/claude.adapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAgJH,kDAEC;AA/ID,iDAAmE;AAEnE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAa,aAAc,SAAQ,0BAAW;IACnC,EAAE,GAAG,QAAQ,CAAC;IACd,IAAI,GAAG,oBAAoB,CAAC;IAC5B,QAAQ,GAAG,EAAE,CAAC;IAEvB;QACE,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG;YACnB,GAAG,mCAAoB;YACvB,YAAY,EAAE,KAAK,EAAE,oCAAoC;YACzD,eAAe,EAAE,KAAK,EAAE,2CAA2C;YACnE,YAAY,EAAE,IAAI,EAAE,iCAAiC;YACrD,eAAe,EAAE,IAAI,EAAE,qBAAqB;YAC5C,gBAAgB,EAAE,KAAK,EAAE,qBAAqB;YAC9C,oBAAoB,EAAE,KAAK,EAAE,0BAA0B;YACvD,aAAa,EAAE,IAAI,EAAE,0BAA0B;SAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,OAAO,MAAM,KAAK,WAAW;YAAE,OAAO,KAAK,CAAC;QAEhD,8DAA8D;QAC9D,MAAM,GAAG,GAAG,MAAa,CAAC;QAE1B,iCAAiC;QACjC,IAAI,GAAG,CAAC,aAAa,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QAEhD,mCAAmC;QACnC,IAAI,GAAG,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC;QAE5B,oCAAoC;QACpC,IAAI,GAAG,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAEtC,gCAAgC;QAChC,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;gBACjE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,UAAU;QACvB,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAE9B,8DAA8D;QAC9D,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QAEzB,iCAAiC;QACjC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACM,KAAK,CAAC,QAAQ,CAAC,GAAW;QACjC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,kBAAkB,CAAC,KAAkB;QAClD,8CAA8C;QAC9C,kBAAkB;IACpB,CAAC;IAED;;OAEG;IACM,KAAK,CAAC,YAAY;QACzB,0CAA0C;QAC1C,kBAAkB;IACpB,CAAC;IAED,+CAA+C;IAC/C,kBAAkB;IAClB,+CAA+C;IAE/C;;OAEG;IACK,mBAAmB;QACzB,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,MAAM,CAAC,UAAU;YAAE,OAAO;QAEhE,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;QAErE,MAAM,YAAY,GAAG,CAAC,CAAuC,EAAE,EAAE;YAC/D,MAAM,QAAQ,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;YAC9C,IAAI,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;gBACzC,IAAI,CAAC,oBAAoB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC,CAAC;QAEF,gDAAgD;QAChD,IAAI,UAAU,CAAC,gBAAgB,EAAE,CAAC;YAChC,UAAU,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAClC,8BAA8B;YAC9B,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF;AAlHD,sCAkHC;AAED;;GAEG;AACH,SAAgB,mBAAmB;IACjC,OAAO,IAAI,aAAa,EAAE,CAAC;AAC7B,CAAC","sourcesContent":["/**\n * Claude Platform Adapter\n *\n * Adapter for Claude (Anthropic) artifacts and widgets.\n * Claude artifacts have network restrictions - external fetches are blocked.\n * This adapter relies on injected data and localStorage for state.\n *\n * @packageDocumentation\n */\n\nimport type { DisplayMode } from '../types';\nimport { BaseAdapter, DEFAULT_CAPABILITIES } from './base-adapter';\n\n/**\n * Claude adapter for Anthropic's Claude AI.\n *\n * Features:\n * - Theme detection from system preferences\n * - Injected tool data via window globals\n * - LocalStorage persistence for widget state\n * - No external network access (blocked by Claude)\n *\n * @example\n * ```typescript\n * import { ClaudeAdapter } from '@frontmcp/ui/bridge';\n *\n * const adapter = new ClaudeAdapter();\n * if (adapter.canHandle()) {\n * await adapter.initialize();\n * const input = adapter.getToolInput();\n * }\n * ```\n */\nexport class ClaudeAdapter extends BaseAdapter {\n readonly id = 'claude';\n readonly name = 'Claude (Anthropic)';\n readonly priority = 60;\n\n constructor() {\n super();\n this._capabilities = {\n ...DEFAULT_CAPABILITIES,\n canCallTools: false, // Claude artifacts can't call tools\n canSendMessages: false, // Can't send messages back to conversation\n canOpenLinks: true, // Can open links via window.open\n canPersistState: true, // localStorage works\n hasNetworkAccess: false, // Network is blocked\n supportsDisplayModes: false, // No display mode control\n supportsTheme: true, // Can detect system theme\n };\n }\n\n /**\n * Check if we're running in a Claude artifact/widget context.\n */\n canHandle(): boolean {\n if (typeof window === 'undefined') return false;\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const win = window as any;\n\n // Check explicit platform marker\n if (win.__mcpPlatform === 'claude') return true;\n\n // Check for Claude-specific global\n if (win.claude) return true;\n\n // Check for Claude artifact markers\n if (win.__claudeArtifact) return true;\n\n // Check URL patterns for Claude\n if (typeof location !== 'undefined') {\n const href = location.href;\n if (href.includes('claude.ai') || href.includes('anthropic.com')) {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Initialize the Claude adapter.\n */\n override async initialize(): Promise<void> {\n if (this._initialized) return;\n\n // Call base initialization (loads state, reads injected data)\n await super.initialize();\n\n // Setup theme detection listener\n this._setupThemeListener();\n }\n\n /**\n * Open a link in a new tab.\n * This is one of the few actions available in Claude artifacts.\n */\n override async openLink(url: string): Promise<void> {\n if (typeof window !== 'undefined') {\n window.open(url, '_blank', 'noopener,noreferrer');\n }\n }\n\n /**\n * Request display mode change (no-op for Claude).\n */\n override async requestDisplayMode(_mode: DisplayMode): Promise<void> {\n // Claude doesn't support display mode changes\n // Silently ignore\n }\n\n /**\n * Request close (no-op for Claude).\n */\n override async requestClose(): Promise<void> {\n // Claude artifacts can't close themselves\n // Silently ignore\n }\n\n // ============================================\n // Private Helpers\n // ============================================\n\n /**\n * Setup listener for system theme changes.\n */\n private _setupThemeListener(): void {\n if (typeof window === 'undefined' || !window.matchMedia) return;\n\n const mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n const handleChange = (e: MediaQueryListEvent | MediaQueryList) => {\n const newTheme = e.matches ? 'dark' : 'light';\n if (newTheme !== this._hostContext.theme) {\n this._notifyContextChange({ theme: newTheme });\n }\n };\n\n // Use addEventListener if available (newer API)\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener('change', handleChange);\n } else if (mediaQuery.addListener) {\n // Fallback for older browsers\n mediaQuery.addListener(handleChange);\n }\n }\n}\n\n/**\n * Factory function for creating Claude adapter instances.\n */\nexport function createClaudeAdapter(): ClaudeAdapter {\n return new ClaudeAdapter();\n}\n"]}