@ulearning/ai-sdk 0.0.0-stage → 1.0.0-next.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 (1133) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -2
  3. package/dist/_virtual/_rolldown/runtime.js +12 -0
  4. package/dist/adapters/OpenAIRealtimeVoiceAdapter.d.ts +22 -0
  5. package/dist/adapters/OpenAIRealtimeVoiceAdapter.d.ts.map +1 -0
  6. package/dist/adapters/OpenAIRealtimeVoiceAdapter.js +296 -0
  7. package/dist/adapters/OpenAIRealtimeVoiceAdapter.js.map +1 -0
  8. package/dist/assistant-transport.d.ts +33 -0
  9. package/dist/assistant-transport.d.ts.map +1 -0
  10. package/dist/assistant-transport.js +18 -0
  11. package/dist/assistant-transport.js.map +1 -0
  12. package/dist/augmentations.d.ts +33 -0
  13. package/dist/augmentations.d.ts.map +1 -0
  14. package/dist/augmentations.js +0 -0
  15. package/dist/context/ReadonlyStore.d.ts +4 -0
  16. package/dist/context/ReadonlyStore.d.ts.map +1 -0
  17. package/dist/context/ReadonlyStore.js +7 -0
  18. package/dist/context/ReadonlyStore.js.map +1 -0
  19. package/dist/context/index.d.ts +13 -0
  20. package/dist/context/index.d.ts.map +1 -0
  21. package/dist/context/index.js +12 -0
  22. package/dist/context/providers/AttachmentByIndexProvider.d.ts +2 -0
  23. package/dist/context/providers/AttachmentByIndexProvider.d.ts.map +1 -0
  24. package/dist/context/providers/AttachmentByIndexProvider.js +2 -0
  25. package/dist/context/providers/ChainOfThoughtByIndicesProvider.d.ts +2 -0
  26. package/dist/context/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -0
  27. package/dist/context/providers/ChainOfThoughtByIndicesProvider.js +2 -0
  28. package/dist/context/providers/MessageByIndexProvider.d.ts +2 -0
  29. package/dist/context/providers/MessageByIndexProvider.d.ts.map +1 -0
  30. package/dist/context/providers/MessageByIndexProvider.js +2 -0
  31. package/dist/context/providers/MessageProvider.d.ts +3 -0
  32. package/dist/context/providers/MessageProvider.d.ts.map +1 -0
  33. package/dist/context/providers/MessageProvider.js +25 -0
  34. package/dist/context/providers/MessageProvider.js.map +1 -0
  35. package/dist/context/providers/PartByIndexProvider.d.ts +2 -0
  36. package/dist/context/providers/PartByIndexProvider.d.ts.map +1 -0
  37. package/dist/context/providers/PartByIndexProvider.js +2 -0
  38. package/dist/context/providers/SuggestionByIndexProvider.d.ts +2 -0
  39. package/dist/context/providers/SuggestionByIndexProvider.d.ts.map +1 -0
  40. package/dist/context/providers/SuggestionByIndexProvider.js +2 -0
  41. package/dist/context/providers/TextMessagePartProvider.d.ts +2 -0
  42. package/dist/context/providers/TextMessagePartProvider.d.ts.map +1 -0
  43. package/dist/context/providers/TextMessagePartProvider.js +2 -0
  44. package/dist/context/providers/ThreadListItemProvider.d.ts +2 -0
  45. package/dist/context/providers/ThreadListItemProvider.d.ts.map +1 -0
  46. package/dist/context/providers/ThreadListItemProvider.js +2 -0
  47. package/dist/context/providers/ThreadViewportProvider.d.ts +6 -0
  48. package/dist/context/providers/ThreadViewportProvider.d.ts.map +1 -0
  49. package/dist/context/providers/ThreadViewportProvider.js +32 -0
  50. package/dist/context/providers/ThreadViewportProvider.js.map +1 -0
  51. package/dist/context/stores/ThreadViewport.d.ts +88 -0
  52. package/dist/context/stores/ThreadViewport.d.ts.map +1 -0
  53. package/dist/context/stores/ThreadViewport.js +130 -0
  54. package/dist/context/stores/ThreadViewport.js.map +1 -0
  55. package/dist/context/vue/ThreadViewportContext.d.ts +24 -0
  56. package/dist/context/vue/ThreadViewportContext.d.ts.map +1 -0
  57. package/dist/context/vue/ThreadViewportContext.js +10 -0
  58. package/dist/context/vue/ThreadViewportContext.js.map +1 -0
  59. package/dist/context/vue/utils/createContextHook.d.ts +11 -0
  60. package/dist/context/vue/utils/createContextHook.d.ts.map +1 -0
  61. package/dist/context/vue/utils/createContextHook.js +20 -0
  62. package/dist/context/vue/utils/createContextHook.js.map +1 -0
  63. package/dist/context/vue/utils/createContextStoreHook.d.ts +22 -0
  64. package/dist/context/vue/utils/createContextStoreHook.d.ts.map +1 -0
  65. package/dist/context/vue/utils/createContextStoreHook.js +48 -0
  66. package/dist/context/vue/utils/createContextStoreHook.js.map +1 -0
  67. package/dist/devtools/DevToolsHooks.d.ts +32 -0
  68. package/dist/devtools/DevToolsHooks.d.ts.map +1 -0
  69. package/dist/devtools/DevToolsHooks.js +84 -0
  70. package/dist/devtools/DevToolsHooks.js.map +1 -0
  71. package/dist/hooks/useMessageQuote.d.ts +17 -0
  72. package/dist/hooks/useMessageQuote.d.ts.map +1 -0
  73. package/dist/hooks/useMessageQuote.js +23 -0
  74. package/dist/hooks/useMessageQuote.js.map +1 -0
  75. package/dist/hooks/useMessageTiming.d.ts +17 -0
  76. package/dist/hooks/useMessageTiming.d.ts.map +1 -0
  77. package/dist/hooks/useMessageTiming.js +22 -0
  78. package/dist/hooks/useMessageTiming.js.map +1 -0
  79. package/dist/hooks/useToolCallElapsed.d.ts +22 -0
  80. package/dist/hooks/useToolCallElapsed.d.ts.map +1 -0
  81. package/dist/hooks/useToolCallElapsed.js +54 -0
  82. package/dist/hooks/useToolCallElapsed.js.map +1 -0
  83. package/dist/index.d.ts +155 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +64 -0
  86. package/dist/internal.d.ts +9 -0
  87. package/dist/internal.d.ts.map +1 -0
  88. package/dist/internal.js +24 -0
  89. package/dist/internal.js.map +1 -0
  90. package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts +13 -0
  91. package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts.map +1 -0
  92. package/dist/legacy-runtime/AssistantRuntimeProvider.js +37 -0
  93. package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -0
  94. package/dist/mcp-apps/McpAppRenderer.d.ts +60 -0
  95. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -0
  96. package/dist/mcp-apps/McpAppRenderer.js +223 -0
  97. package/dist/mcp-apps/McpAppRenderer.js.map +1 -0
  98. package/dist/mcp-apps/McpAppsRemoteHost.d.ts +3 -0
  99. package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -0
  100. package/dist/mcp-apps/McpAppsRemoteHost.js +101 -0
  101. package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -0
  102. package/dist/mcp-apps/app-frame.d.ts +3 -0
  103. package/dist/mcp-apps/app-frame.d.ts.map +1 -0
  104. package/dist/mcp-apps/app-frame.js +213 -0
  105. package/dist/mcp-apps/app-frame.js.map +1 -0
  106. package/dist/mcp-apps/bridge.d.ts +18 -0
  107. package/dist/mcp-apps/bridge.d.ts.map +1 -0
  108. package/dist/mcp-apps/bridge.js +319 -0
  109. package/dist/mcp-apps/bridge.js.map +1 -0
  110. package/dist/mcp-apps/csp.d.ts +4 -0
  111. package/dist/mcp-apps/csp.d.ts.map +1 -0
  112. package/dist/mcp-apps/csp.js +92 -0
  113. package/dist/mcp-apps/csp.js.map +1 -0
  114. package/dist/mcp-apps/index.d.ts +5 -0
  115. package/dist/mcp-apps/index.d.ts.map +1 -0
  116. package/dist/mcp-apps/index.js +4 -0
  117. package/dist/mcp-apps/types.d.ts +161 -0
  118. package/dist/mcp-apps/types.d.ts.map +1 -0
  119. package/dist/mcp-apps/types.js +6 -0
  120. package/dist/mcp-apps/types.js.map +1 -0
  121. package/dist/mcp-apps/utils.d.ts +12 -0
  122. package/dist/mcp-apps/utils.d.ts.map +1 -0
  123. package/dist/mcp-apps/utils.js +18 -0
  124. package/dist/mcp-apps/utils.js.map +1 -0
  125. package/dist/model-context/frame/useAssistantFrameHost.d.ts +35 -0
  126. package/dist/model-context/frame/useAssistantFrameHost.d.ts.map +1 -0
  127. package/dist/model-context/frame/useAssistantFrameHost.js +109 -0
  128. package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -0
  129. package/dist/model-context/makeAssistantVisible.d.ts +11 -0
  130. package/dist/model-context/makeAssistantVisible.d.ts.map +1 -0
  131. package/dist/model-context/makeAssistantVisible.js +102 -0
  132. package/dist/model-context/makeAssistantVisible.js.map +1 -0
  133. package/dist/primitives/actionBar/ActionBarCopy.d.ts +45 -0
  134. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -0
  135. package/dist/primitives/actionBar/ActionBarCopy.js +71 -0
  136. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -0
  137. package/dist/primitives/actionBar/ActionBarEdit.d.ts +55 -0
  138. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -0
  139. package/dist/primitives/actionBar/ActionBarEdit.js +47 -0
  140. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -0
  141. package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts +26 -0
  142. package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts.map +1 -0
  143. package/dist/primitives/actionBar/ActionBarExportMarkdown.js +39 -0
  144. package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -0
  145. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts +13 -0
  146. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -0
  147. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +28 -0
  148. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -0
  149. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts +13 -0
  150. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -0
  151. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +28 -0
  152. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -0
  153. package/dist/primitives/actionBar/ActionBarInteractionContext.d.ts +7 -0
  154. package/dist/primitives/actionBar/ActionBarInteractionContext.d.ts.map +1 -0
  155. package/dist/primitives/actionBar/ActionBarInteractionContext.js +8 -0
  156. package/dist/primitives/actionBar/ActionBarInteractionContext.js.map +1 -0
  157. package/dist/primitives/actionBar/ActionBarReload.d.ts +56 -0
  158. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -0
  159. package/dist/primitives/actionBar/ActionBarReload.js +48 -0
  160. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -0
  161. package/dist/primitives/actionBar/ActionBarRoot.d.ts +78 -0
  162. package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -0
  163. package/dist/primitives/actionBar/ActionBarRoot.js +69 -0
  164. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -0
  165. package/dist/primitives/actionBar/ActionBarSpeak.d.ts +17 -0
  166. package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -0
  167. package/dist/primitives/actionBar/ActionBarSpeak.js +13 -0
  168. package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -0
  169. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts +17 -0
  170. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -0
  171. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +13 -0
  172. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -0
  173. package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts +15 -0
  174. package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts.map +1 -0
  175. package/dist/primitives/actionBar/useActionBarFloatStatus.js +24 -0
  176. package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -0
  177. package/dist/primitives/actionBar.d.ts +10 -0
  178. package/dist/primitives/actionBar.d.ts.map +1 -0
  179. package/dist/primitives/actionBar.js +25 -0
  180. package/dist/primitives/actionBar.js.map +1 -0
  181. package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts +47 -0
  182. package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts.map +1 -0
  183. package/dist/primitives/actionBarMore/ActionBarMoreContent.js +29 -0
  184. package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -0
  185. package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts +19 -0
  186. package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts.map +1 -0
  187. package/dist/primitives/actionBarMore/ActionBarMoreItem.js +24 -0
  188. package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -0
  189. package/dist/primitives/actionBarMore/ActionBarMoreRoot.d.ts +10 -0
  190. package/dist/primitives/actionBarMore/ActionBarMoreRoot.d.ts.map +1 -0
  191. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +39 -0
  192. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -0
  193. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts +16 -0
  194. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts.map +1 -0
  195. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +24 -0
  196. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -0
  197. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts +17 -0
  198. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts.map +1 -0
  199. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +24 -0
  200. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -0
  201. package/dist/primitives/actionBarMore/scope.d.ts +5 -0
  202. package/dist/primitives/actionBarMore/scope.d.ts.map +1 -0
  203. package/dist/primitives/actionBarMore/scope.js +7 -0
  204. package/dist/primitives/actionBarMore/scope.js.map +1 -0
  205. package/dist/primitives/actionBarMore.d.ts +6 -0
  206. package/dist/primitives/actionBarMore.d.ts.map +1 -0
  207. package/dist/primitives/actionBarMore.js +17 -0
  208. package/dist/primitives/actionBarMore.js.map +1 -0
  209. package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts +17 -0
  210. package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts.map +1 -0
  211. package/dist/primitives/assistantModal/AssistantModalAnchor.js +24 -0
  212. package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -0
  213. package/dist/primitives/assistantModal/AssistantModalContent.d.ts +50 -0
  214. package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -0
  215. package/dist/primitives/assistantModal/AssistantModalContent.js +42 -0
  216. package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -0
  217. package/dist/primitives/assistantModal/AssistantModalRoot.d.ts +14 -0
  218. package/dist/primitives/assistantModal/AssistantModalRoot.d.ts.map +1 -0
  219. package/dist/primitives/assistantModal/AssistantModalRoot.js +35 -0
  220. package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -0
  221. package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts +16 -0
  222. package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts.map +1 -0
  223. package/dist/primitives/assistantModal/AssistantModalTrigger.js +24 -0
  224. package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -0
  225. package/dist/primitives/assistantModal/popoverRenderPrimitives.d.ts +139 -0
  226. package/dist/primitives/assistantModal/popoverRenderPrimitives.d.ts.map +1 -0
  227. package/dist/primitives/assistantModal/popoverRenderPrimitives.js +9 -0
  228. package/dist/primitives/assistantModal/popoverRenderPrimitives.js.map +1 -0
  229. package/dist/primitives/assistantModal/scope.d.ts +5 -0
  230. package/dist/primitives/assistantModal/scope.d.ts.map +1 -0
  231. package/dist/primitives/assistantModal/scope.js +7 -0
  232. package/dist/primitives/assistantModal/scope.js.map +1 -0
  233. package/dist/primitives/assistantModal.d.ts +5 -0
  234. package/dist/primitives/assistantModal.d.ts.map +1 -0
  235. package/dist/primitives/assistantModal.js +15 -0
  236. package/dist/primitives/assistantModal.js.map +1 -0
  237. package/dist/primitives/attachment/AttachmentName.d.ts +5 -0
  238. package/dist/primitives/attachment/AttachmentName.d.ts.map +1 -0
  239. package/dist/primitives/attachment/AttachmentName.js +14 -0
  240. package/dist/primitives/attachment/AttachmentName.js.map +1 -0
  241. package/dist/primitives/attachment/AttachmentRemove.d.ts +17 -0
  242. package/dist/primitives/attachment/AttachmentRemove.d.ts.map +1 -0
  243. package/dist/primitives/attachment/AttachmentRemove.js +15 -0
  244. package/dist/primitives/attachment/AttachmentRemove.js.map +1 -0
  245. package/dist/primitives/attachment/AttachmentRoot.d.ts +30 -0
  246. package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -0
  247. package/dist/primitives/attachment/AttachmentRoot.js +40 -0
  248. package/dist/primitives/attachment/AttachmentRoot.js.map +1 -0
  249. package/dist/primitives/attachment/AttachmentThumb.d.ts +12 -0
  250. package/dist/primitives/attachment/AttachmentThumb.d.ts.map +1 -0
  251. package/dist/primitives/attachment/AttachmentThumb.js +32 -0
  252. package/dist/primitives/attachment/AttachmentThumb.js.map +1 -0
  253. package/dist/primitives/attachment.d.ts +7 -0
  254. package/dist/primitives/attachment.d.ts.map +1 -0
  255. package/dist/primitives/attachment.js +15 -0
  256. package/dist/primitives/attachment.js.map +1 -0
  257. package/dist/primitives/branchPicker/BranchPickerCount.d.ts +22 -0
  258. package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -0
  259. package/dist/primitives/branchPicker/BranchPickerCount.js +27 -0
  260. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -0
  261. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +34 -0
  262. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -0
  263. package/dist/primitives/branchPicker/BranchPickerNext.js +26 -0
  264. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -0
  265. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts +5 -0
  266. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts.map +1 -0
  267. package/dist/primitives/branchPicker/BranchPickerNumber.js +14 -0
  268. package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -0
  269. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +34 -0
  270. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -0
  271. package/dist/primitives/branchPicker/BranchPickerPrevious.js +26 -0
  272. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -0
  273. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +43 -0
  274. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -0
  275. package/dist/primitives/branchPicker/BranchPickerRoot.js +46 -0
  276. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -0
  277. package/dist/primitives/branchPicker.d.ts +6 -0
  278. package/dist/primitives/branchPicker.d.ts.map +1 -0
  279. package/dist/primitives/branchPicker.js +17 -0
  280. package/dist/primitives/branchPicker.js.map +1 -0
  281. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts +30 -0
  282. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -0
  283. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +49 -0
  284. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -0
  285. package/dist/primitives/chainOfThought/ChainOfThoughtParts.d.ts +2 -0
  286. package/dist/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -0
  287. package/dist/primitives/chainOfThought/ChainOfThoughtParts.js +2 -0
  288. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts +12 -0
  289. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts.map +1 -0
  290. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +26 -0
  291. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -0
  292. package/dist/primitives/chainOfThought.d.ts +4 -0
  293. package/dist/primitives/chainOfThought.d.ts.map +1 -0
  294. package/dist/primitives/chainOfThought.js +13 -0
  295. package/dist/primitives/chainOfThought.js.map +1 -0
  296. package/dist/primitives/composer/ComposerAddAttachment.d.ts +26 -0
  297. package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -0
  298. package/dist/primitives/composer/ComposerAddAttachment.js +56 -0
  299. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -0
  300. package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts +16 -0
  301. package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts.map +1 -0
  302. package/dist/primitives/composer/ComposerAttachmentDropzone.js +66 -0
  303. package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -0
  304. package/dist/primitives/composer/ComposerAttachments.d.ts +2 -0
  305. package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -0
  306. package/dist/primitives/composer/ComposerAttachments.js +2 -0
  307. package/dist/primitives/composer/ComposerCancel.d.ts +37 -0
  308. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -0
  309. package/dist/primitives/composer/ComposerCancel.js +32 -0
  310. package/dist/primitives/composer/ComposerCancel.js.map +1 -0
  311. package/dist/primitives/composer/ComposerCompactContext.d.ts +7 -0
  312. package/dist/primitives/composer/ComposerCompactContext.d.ts.map +1 -0
  313. package/dist/primitives/composer/ComposerCompactContext.js +8 -0
  314. package/dist/primitives/composer/ComposerCompactContext.js.map +1 -0
  315. package/dist/primitives/composer/ComposerDictate.d.ts +29 -0
  316. package/dist/primitives/composer/ComposerDictate.d.ts.map +1 -0
  317. package/dist/primitives/composer/ComposerDictate.js +25 -0
  318. package/dist/primitives/composer/ComposerDictate.js.map +1 -0
  319. package/dist/primitives/composer/ComposerDictationTranscript.d.ts +27 -0
  320. package/dist/primitives/composer/ComposerDictationTranscript.d.ts.map +1 -0
  321. package/dist/primitives/composer/ComposerDictationTranscript.js +42 -0
  322. package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -0
  323. package/dist/primitives/composer/ComposerIf.d.ts +3 -0
  324. package/dist/primitives/composer/ComposerIf.d.ts.map +1 -0
  325. package/dist/primitives/composer/ComposerIf.js +2 -0
  326. package/dist/primitives/composer/ComposerInput.d.ts +132 -0
  327. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -0
  328. package/dist/primitives/composer/ComposerInput.js +239 -0
  329. package/dist/primitives/composer/ComposerInput.js.map +1 -0
  330. package/dist/primitives/composer/ComposerInputPluginContext.d.ts +40 -0
  331. package/dist/primitives/composer/ComposerInputPluginContext.d.ts.map +1 -0
  332. package/dist/primitives/composer/ComposerInputPluginContext.js +30 -0
  333. package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -0
  334. package/dist/primitives/composer/ComposerQueue.d.ts +2 -0
  335. package/dist/primitives/composer/ComposerQueue.d.ts.map +1 -0
  336. package/dist/primitives/composer/ComposerQueue.js +2 -0
  337. package/dist/primitives/composer/ComposerQuote.d.ts +58 -0
  338. package/dist/primitives/composer/ComposerQuote.d.ts.map +1 -0
  339. package/dist/primitives/composer/ComposerQuote.js +95 -0
  340. package/dist/primitives/composer/ComposerQuote.js.map +1 -0
  341. package/dist/primitives/composer/ComposerResume.d.ts +27 -0
  342. package/dist/primitives/composer/ComposerResume.d.ts.map +1 -0
  343. package/dist/primitives/composer/ComposerResume.js +24 -0
  344. package/dist/primitives/composer/ComposerResume.js.map +1 -0
  345. package/dist/primitives/composer/ComposerRoot.d.ts +56 -0
  346. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -0
  347. package/dist/primitives/composer/ComposerRoot.js +96 -0
  348. package/dist/primitives/composer/ComposerRoot.js.map +1 -0
  349. package/dist/primitives/composer/ComposerSend.d.ts +34 -0
  350. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -0
  351. package/dist/primitives/composer/ComposerSend.js +28 -0
  352. package/dist/primitives/composer/ComposerSend.js.map +1 -0
  353. package/dist/primitives/composer/ComposerStopDictation.d.ts +29 -0
  354. package/dist/primitives/composer/ComposerStopDictation.d.ts.map +1 -0
  355. package/dist/primitives/composer/ComposerStopDictation.js +29 -0
  356. package/dist/primitives/composer/ComposerStopDictation.js.map +1 -0
  357. package/dist/primitives/composer/composerInputSelector.d.ts +3 -0
  358. package/dist/primitives/composer/composerInputSelector.d.ts.map +1 -0
  359. package/dist/primitives/composer/composerInputSelector.js +6 -0
  360. package/dist/primitives/composer/composerInputSelector.js.map +1 -0
  361. package/dist/primitives/composer/trigger/TriggerPopover.d.ts +63 -0
  362. package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -0
  363. package/dist/primitives/composer/trigger/TriggerPopover.js +161 -0
  364. package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -0
  365. package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts +30 -0
  366. package/dist/primitives/composer/trigger/TriggerPopoverAction.d.ts.map +1 -0
  367. package/dist/primitives/composer/trigger/TriggerPopoverAction.js +49 -0
  368. package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -0
  369. package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts +16 -0
  370. package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts.map +1 -0
  371. package/dist/primitives/composer/trigger/TriggerPopoverBack.js +34 -0
  372. package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -0
  373. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts +34 -0
  374. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -0
  375. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +70 -0
  376. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -0
  377. package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts +27 -0
  378. package/dist/primitives/composer/trigger/TriggerPopoverDirective.d.ts.map +1 -0
  379. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js +41 -0
  380. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -0
  381. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts +36 -0
  382. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -0
  383. package/dist/primitives/composer/trigger/TriggerPopoverItems.js +71 -0
  384. package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -0
  385. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +48 -0
  386. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -0
  387. package/dist/primitives/composer/trigger/TriggerPopoverResource.js +67 -0
  388. package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -0
  389. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts +58 -0
  390. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.d.ts.map +1 -0
  391. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +128 -0
  392. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -0
  393. package/dist/primitives/composer/trigger/detectTrigger.d.ts +18 -0
  394. package/dist/primitives/composer/trigger/detectTrigger.d.ts.map +1 -0
  395. package/dist/primitives/composer/trigger/detectTrigger.js +39 -0
  396. package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -0
  397. package/dist/primitives/composer/trigger/index.d.ts +20 -0
  398. package/dist/primitives/composer/trigger/index.d.ts.map +1 -0
  399. package/dist/primitives/composer/trigger/index.js +15 -0
  400. package/dist/primitives/composer/trigger/index.js.map +1 -0
  401. package/dist/primitives/composer/trigger/matchesTriggerItemQuery.d.ts +3 -0
  402. package/dist/primitives/composer/trigger/matchesTriggerItemQuery.d.ts.map +1 -0
  403. package/dist/primitives/composer/trigger/matchesTriggerItemQuery.js +8 -0
  404. package/dist/primitives/composer/trigger/matchesTriggerItemQuery.js.map +1 -0
  405. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts +17 -0
  406. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -0
  407. package/dist/primitives/composer/trigger/triggerDetectionResource.js +25 -0
  408. package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -0
  409. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts +30 -0
  410. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -0
  411. package/dist/primitives/composer/trigger/triggerKeyboardResource.js +85 -0
  412. package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -0
  413. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts +23 -0
  414. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -0
  415. package/dist/primitives/composer/trigger/triggerNavigationResource.js +88 -0
  416. package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -0
  417. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts +37 -0
  418. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -0
  419. package/dist/primitives/composer/trigger/triggerSelectionResource.js +52 -0
  420. package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -0
  421. package/dist/primitives/composer/useComposerCancelWithFocus.d.ts +2 -0
  422. package/dist/primitives/composer/useComposerCancelWithFocus.d.ts.map +1 -0
  423. package/dist/primitives/composer/useComposerCancelWithFocus.js +31 -0
  424. package/dist/primitives/composer/useComposerCancelWithFocus.js.map +1 -0
  425. package/dist/primitives/composer/useComposerInputState.d.ts +11 -0
  426. package/dist/primitives/composer/useComposerInputState.d.ts.map +1 -0
  427. package/dist/primitives/composer/useComposerInputState.js +33 -0
  428. package/dist/primitives/composer/useComposerInputState.js.map +1 -0
  429. package/dist/primitives/composer/useTextareaAutosize.d.ts +13 -0
  430. package/dist/primitives/composer/useTextareaAutosize.d.ts.map +1 -0
  431. package/dist/primitives/composer/useTextareaAutosize.js +113 -0
  432. package/dist/primitives/composer/useTextareaAutosize.js.map +1 -0
  433. package/dist/primitives/composer.d.ts +73 -0
  434. package/dist/primitives/composer.d.ts.map +1 -0
  435. package/dist/primitives/composer.js +64 -0
  436. package/dist/primitives/composer.js.map +1 -0
  437. package/dist/primitives/dropdownMenuRenderPrimitives.d.ts +173 -0
  438. package/dist/primitives/dropdownMenuRenderPrimitives.d.ts.map +1 -0
  439. package/dist/primitives/dropdownMenuRenderPrimitives.js +10 -0
  440. package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -0
  441. package/dist/primitives/error/ErrorMessage.d.ts +12 -0
  442. package/dist/primitives/error/ErrorMessage.d.ts.map +1 -0
  443. package/dist/primitives/error/ErrorMessage.js +27 -0
  444. package/dist/primitives/error/ErrorMessage.js.map +1 -0
  445. package/dist/primitives/error/ErrorRoot.d.ts +12 -0
  446. package/dist/primitives/error/ErrorRoot.d.ts.map +1 -0
  447. package/dist/primitives/error/ErrorRoot.js +27 -0
  448. package/dist/primitives/error/ErrorRoot.js.map +1 -0
  449. package/dist/primitives/error.d.ts +3 -0
  450. package/dist/primitives/error.d.ts.map +1 -0
  451. package/dist/primitives/error.js +11 -0
  452. package/dist/primitives/error.js.map +1 -0
  453. package/dist/primitives/message/MessageAttachments.d.ts +2 -0
  454. package/dist/primitives/message/MessageAttachments.d.ts.map +1 -0
  455. package/dist/primitives/message/MessageAttachments.js +2 -0
  456. package/dist/primitives/message/MessageError.d.ts +7 -0
  457. package/dist/primitives/message/MessageError.d.ts.map +1 -0
  458. package/dist/primitives/message/MessageError.js +14 -0
  459. package/dist/primitives/message/MessageError.js.map +1 -0
  460. package/dist/primitives/message/MessageIf.d.ts +27 -0
  461. package/dist/primitives/message/MessageIf.d.ts.map +1 -0
  462. package/dist/primitives/message/MessageIf.js +54 -0
  463. package/dist/primitives/message/MessageIf.js.map +1 -0
  464. package/dist/primitives/message/MessageParts.d.ts +7 -0
  465. package/dist/primitives/message/MessageParts.d.ts.map +1 -0
  466. package/dist/primitives/message/MessageParts.js +40 -0
  467. package/dist/primitives/message/MessageParts.js.map +1 -0
  468. package/dist/primitives/message/MessagePartsGrouped.d.ts +153 -0
  469. package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -0
  470. package/dist/primitives/message/MessagePartsGrouped.js +114 -0
  471. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -0
  472. package/dist/primitives/message/MessageRoot.d.ts +35 -0
  473. package/dist/primitives/message/MessageRoot.d.ts.map +1 -0
  474. package/dist/primitives/message/MessageRoot.js +104 -0
  475. package/dist/primitives/message/MessageRoot.js.map +1 -0
  476. package/dist/primitives/message.d.ts +13 -0
  477. package/dist/primitives/message.d.ts.map +1 -0
  478. package/dist/primitives/message.js +27 -0
  479. package/dist/primitives/message.js.map +1 -0
  480. package/dist/primitives/messagePart/MessagePartImage.d.ts +12 -0
  481. package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -0
  482. package/dist/primitives/messagePart/MessagePartImage.js +27 -0
  483. package/dist/primitives/messagePart/MessagePartImage.js.map +1 -0
  484. package/dist/primitives/messagePart/MessagePartInProgress.d.ts +2 -0
  485. package/dist/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -0
  486. package/dist/primitives/messagePart/MessagePartInProgress.js +2 -0
  487. package/dist/primitives/messagePart/MessagePartText.d.ts +19 -0
  488. package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -0
  489. package/dist/primitives/messagePart/MessagePartText.js +33 -0
  490. package/dist/primitives/messagePart/MessagePartText.js.map +1 -0
  491. package/dist/primitives/messagePart/useMessagePartData.d.ts +18 -0
  492. package/dist/primitives/messagePart/useMessagePartData.d.ts.map +1 -0
  493. package/dist/primitives/messagePart/useMessagePartData.js +32 -0
  494. package/dist/primitives/messagePart/useMessagePartData.js.map +1 -0
  495. package/dist/primitives/messagePart/useMessagePartFile.d.ts +19 -0
  496. package/dist/primitives/messagePart/useMessagePartFile.d.ts.map +1 -0
  497. package/dist/primitives/messagePart/useMessagePartFile.js +33 -0
  498. package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -0
  499. package/dist/primitives/messagePart/useMessagePartImage.d.ts +19 -0
  500. package/dist/primitives/messagePart/useMessagePartImage.d.ts.map +1 -0
  501. package/dist/primitives/messagePart/useMessagePartImage.js +32 -0
  502. package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -0
  503. package/dist/primitives/messagePart/useMessagePartReasoning.d.ts +19 -0
  504. package/dist/primitives/messagePart/useMessagePartReasoning.d.ts.map +1 -0
  505. package/dist/primitives/messagePart/useMessagePartReasoning.js +32 -0
  506. package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -0
  507. package/dist/primitives/messagePart/useMessagePartSource.d.ts +39 -0
  508. package/dist/primitives/messagePart/useMessagePartSource.d.ts.map +1 -0
  509. package/dist/primitives/messagePart/useMessagePartSource.js +34 -0
  510. package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -0
  511. package/dist/primitives/messagePart/useMessagePartText.d.ts +21 -0
  512. package/dist/primitives/messagePart/useMessagePartText.d.ts.map +1 -0
  513. package/dist/primitives/messagePart/useMessagePartText.js +32 -0
  514. package/dist/primitives/messagePart/useMessagePartText.js.map +1 -0
  515. package/dist/primitives/messagePart.d.ts +5 -0
  516. package/dist/primitives/messagePart.d.ts.map +1 -0
  517. package/dist/primitives/messagePart.js +15 -0
  518. package/dist/primitives/messagePart.js.map +1 -0
  519. package/dist/primitives/queueItem/QueueItemRemove.d.ts +25 -0
  520. package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -0
  521. package/dist/primitives/queueItem/QueueItemRemove.js +23 -0
  522. package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -0
  523. package/dist/primitives/queueItem/QueueItemSteer.d.ts +25 -0
  524. package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -0
  525. package/dist/primitives/queueItem/QueueItemSteer.js +23 -0
  526. package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -0
  527. package/dist/primitives/queueItem/QueueItemText.d.ts +20 -0
  528. package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -0
  529. package/dist/primitives/queueItem/QueueItemText.js +35 -0
  530. package/dist/primitives/queueItem/QueueItemText.js.map +1 -0
  531. package/dist/primitives/queueItem.d.ts +4 -0
  532. package/dist/primitives/queueItem.d.ts.map +1 -0
  533. package/dist/primitives/queueItem.js +13 -0
  534. package/dist/primitives/queueItem.js.map +1 -0
  535. package/dist/primitives/reasoning/useScrollLock.d.ts +29 -0
  536. package/dist/primitives/reasoning/useScrollLock.d.ts.map +1 -0
  537. package/dist/primitives/reasoning/useScrollLock.js +108 -0
  538. package/dist/primitives/reasoning/useScrollLock.js.map +1 -0
  539. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.d.ts +13 -0
  540. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.d.ts.map +1 -0
  541. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +43 -0
  542. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -0
  543. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts +20 -0
  544. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts.map +1 -0
  545. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +147 -0
  546. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -0
  547. package/dist/primitives/selectionToolbar.d.ts +3 -0
  548. package/dist/primitives/selectionToolbar.d.ts.map +1 -0
  549. package/dist/primitives/selectionToolbar.js +11 -0
  550. package/dist/primitives/selectionToolbar.js.map +1 -0
  551. package/dist/primitives/suggestion/SuggestionDescription.d.ts +13 -0
  552. package/dist/primitives/suggestion/SuggestionDescription.d.ts.map +1 -0
  553. package/dist/primitives/suggestion/SuggestionDescription.js +28 -0
  554. package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -0
  555. package/dist/primitives/suggestion/SuggestionTitle.d.ts +20 -0
  556. package/dist/primitives/suggestion/SuggestionTitle.d.ts.map +1 -0
  557. package/dist/primitives/suggestion/SuggestionTitle.js +35 -0
  558. package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -0
  559. package/dist/primitives/suggestion/SuggestionTrigger.d.ts +72 -0
  560. package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -0
  561. package/dist/primitives/suggestion/SuggestionTrigger.js +29 -0
  562. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -0
  563. package/dist/primitives/suggestion.d.ts +4 -0
  564. package/dist/primitives/suggestion.d.ts.map +1 -0
  565. package/dist/primitives/suggestion.js +13 -0
  566. package/dist/primitives/suggestion.js.map +1 -0
  567. package/dist/primitives/thread/ThreadEmpty.d.ts +11 -0
  568. package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -0
  569. package/dist/primitives/thread/ThreadEmpty.js +17 -0
  570. package/dist/primitives/thread/ThreadEmpty.js.map +1 -0
  571. package/dist/primitives/thread/ThreadIf.d.ts +19 -0
  572. package/dist/primitives/thread/ThreadIf.d.ts.map +1 -0
  573. package/dist/primitives/thread/ThreadIf.js +33 -0
  574. package/dist/primitives/thread/ThreadIf.js.map +1 -0
  575. package/dist/primitives/thread/ThreadLoadEarlier.d.ts +23 -0
  576. package/dist/primitives/thread/ThreadLoadEarlier.d.ts.map +1 -0
  577. package/dist/primitives/thread/ThreadLoadEarlier.js +23 -0
  578. package/dist/primitives/thread/ThreadLoadEarlier.js.map +1 -0
  579. package/dist/primitives/thread/ThreadMessages.d.ts +2 -0
  580. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -0
  581. package/dist/primitives/thread/ThreadMessages.js +2 -0
  582. package/dist/primitives/thread/ThreadRoot.d.ts +37 -0
  583. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -0
  584. package/dist/primitives/thread/ThreadRoot.js +84 -0
  585. package/dist/primitives/thread/ThreadRoot.js.map +1 -0
  586. package/dist/primitives/thread/ThreadRootElementContext.d.ts +4 -0
  587. package/dist/primitives/thread/ThreadRootElementContext.d.ts.map +1 -0
  588. package/dist/primitives/thread/ThreadRootElementContext.js +8 -0
  589. package/dist/primitives/thread/ThreadRootElementContext.js.map +1 -0
  590. package/dist/primitives/thread/ThreadScrollToBottom.d.ts +22 -0
  591. package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -0
  592. package/dist/primitives/thread/ThreadScrollToBottom.js +17 -0
  593. package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -0
  594. package/dist/primitives/thread/ThreadSuggestion.d.ts +80 -0
  595. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -0
  596. package/dist/primitives/thread/ThreadSuggestion.js +23 -0
  597. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -0
  598. package/dist/primitives/thread/ThreadSuggestions.d.ts +2 -0
  599. package/dist/primitives/thread/ThreadSuggestions.d.ts.map +1 -0
  600. package/dist/primitives/thread/ThreadSuggestions.js +2 -0
  601. package/dist/primitives/thread/ThreadViewport.d.ts +115 -0
  602. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -0
  603. package/dist/primitives/thread/ThreadViewport.js +96 -0
  604. package/dist/primitives/thread/ThreadViewport.js.map +1 -0
  605. package/dist/primitives/thread/ThreadViewportFooter.d.ts +13 -0
  606. package/dist/primitives/thread/ThreadViewportFooter.d.ts.map +1 -0
  607. package/dist/primitives/thread/ThreadViewportFooter.js +39 -0
  608. package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -0
  609. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.d.ts +22 -0
  610. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.d.ts.map +1 -0
  611. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js +51 -0
  612. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js.map +1 -0
  613. package/dist/primitives/thread/topAnchor/createReserveObservers.d.ts +5 -0
  614. package/dist/primitives/thread/topAnchor/createReserveObservers.d.ts.map +1 -0
  615. package/dist/primitives/thread/topAnchor/createReserveObservers.js +37 -0
  616. package/dist/primitives/thread/topAnchor/createReserveObservers.js.map +1 -0
  617. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.d.ts +26 -0
  618. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.d.ts.map +1 -0
  619. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js +139 -0
  620. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -0
  621. package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts +27 -0
  622. package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts.map +1 -0
  623. package/dist/primitives/thread/topAnchor/topAnchorTurn.js +30 -0
  624. package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -0
  625. package/dist/primitives/thread/topAnchor/topAnchorUtils.d.ts +15 -0
  626. package/dist/primitives/thread/topAnchor/topAnchorUtils.d.ts.map +1 -0
  627. package/dist/primitives/thread/topAnchor/topAnchorUtils.js +46 -0
  628. package/dist/primitives/thread/topAnchor/topAnchorUtils.js.map +1 -0
  629. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.d.ts +8 -0
  630. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.d.ts.map +1 -0
  631. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +21 -0
  632. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -0
  633. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts +32 -0
  634. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -0
  635. package/dist/primitives/thread/useThreadViewportAutoScroll.js +74 -0
  636. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -0
  637. package/dist/primitives/thread.d.ts +15 -0
  638. package/dist/primitives/thread.d.ts.map +1 -0
  639. package/dist/primitives/thread.js +33 -0
  640. package/dist/primitives/thread.js.map +1 -0
  641. package/dist/primitives/threadList/ThreadListItems.d.ts +2 -0
  642. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -0
  643. package/dist/primitives/threadList/ThreadListItems.js +2 -0
  644. package/dist/primitives/threadList/ThreadListLoadMore.d.ts +17 -0
  645. package/dist/primitives/threadList/ThreadListLoadMore.d.ts.map +1 -0
  646. package/dist/primitives/threadList/ThreadListLoadMore.js +13 -0
  647. package/dist/primitives/threadList/ThreadListLoadMore.js.map +1 -0
  648. package/dist/primitives/threadList/ThreadListNew.d.ts +11 -0
  649. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -0
  650. package/dist/primitives/threadList/ThreadListNew.js +29 -0
  651. package/dist/primitives/threadList/ThreadListNew.js.map +1 -0
  652. package/dist/primitives/threadList/ThreadListRoot.d.ts +12 -0
  653. package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -0
  654. package/dist/primitives/threadList/ThreadListRoot.js +25 -0
  655. package/dist/primitives/threadList/ThreadListRoot.js.map +1 -0
  656. package/dist/primitives/threadList.d.ts +6 -0
  657. package/dist/primitives/threadList.d.ts.map +1 -0
  658. package/dist/primitives/threadList.js +16 -0
  659. package/dist/primitives/threadList.js.map +1 -0
  660. package/dist/primitives/threadListFocusGroup.d.ts +28 -0
  661. package/dist/primitives/threadListFocusGroup.d.ts.map +1 -0
  662. package/dist/primitives/threadListFocusGroup.js +64 -0
  663. package/dist/primitives/threadListFocusGroup.js.map +1 -0
  664. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +17 -0
  665. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -0
  666. package/dist/primitives/threadListItem/ThreadListItemArchive.js +12 -0
  667. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -0
  668. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +17 -0
  669. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -0
  670. package/dist/primitives/threadListItem/ThreadListItemDelete.js +12 -0
  671. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -0
  672. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts +12 -0
  673. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -0
  674. package/dist/primitives/threadListItem/ThreadListItemRoot.js +61 -0
  675. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -0
  676. package/dist/primitives/threadListItem/ThreadListItemTitle.d.ts +2 -0
  677. package/dist/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -0
  678. package/dist/primitives/threadListItem/ThreadListItemTitle.js +2 -0
  679. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +13 -0
  680. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -0
  681. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +35 -0
  682. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -0
  683. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +17 -0
  684. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -0
  685. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +13 -0
  686. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -0
  687. package/dist/primitives/threadListItem.d.ts +7 -0
  688. package/dist/primitives/threadListItem.d.ts.map +1 -0
  689. package/dist/primitives/threadListItem.js +19 -0
  690. package/dist/primitives/threadListItem.js.map +1 -0
  691. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts +47 -0
  692. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts.map +1 -0
  693. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +48 -0
  694. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -0
  695. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts +19 -0
  696. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts.map +1 -0
  697. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +24 -0
  698. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -0
  699. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.d.ts +19 -0
  700. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.d.ts.map +1 -0
  701. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +45 -0
  702. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -0
  703. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts +16 -0
  704. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts.map +1 -0
  705. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +24 -0
  706. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -0
  707. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts +17 -0
  708. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts.map +1 -0
  709. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +42 -0
  710. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -0
  711. package/dist/primitives/threadListItemMore/scope.d.ts +5 -0
  712. package/dist/primitives/threadListItemMore/scope.d.ts.map +1 -0
  713. package/dist/primitives/threadListItemMore/scope.js +7 -0
  714. package/dist/primitives/threadListItemMore/scope.js.map +1 -0
  715. package/dist/primitives/threadListItemMore.d.ts +6 -0
  716. package/dist/primitives/threadListItemMore.d.ts.map +1 -0
  717. package/dist/primitives/threadListItemMore.js +17 -0
  718. package/dist/primitives/threadListItemMore.js.map +1 -0
  719. package/dist/sandbox-host/SandboxHost.d.ts +38 -0
  720. package/dist/sandbox-host/SandboxHost.d.ts.map +1 -0
  721. package/dist/sandbox-host/SandboxHost.js +146 -0
  722. package/dist/sandbox-host/SandboxHost.js.map +1 -0
  723. package/dist/unstable/useComposerInput.d.ts +87 -0
  724. package/dist/unstable/useComposerInput.d.ts.map +1 -0
  725. package/dist/unstable/useComposerInput.js +77 -0
  726. package/dist/unstable/useComposerInput.js.map +1 -0
  727. package/dist/unstable/useComposerInputHistory.d.ts +27 -0
  728. package/dist/unstable/useComposerInputHistory.d.ts.map +1 -0
  729. package/dist/unstable/useComposerInputHistory.js +125 -0
  730. package/dist/unstable/useComposerInputHistory.js.map +1 -0
  731. package/dist/unstable/useLiveCompletionAdapter.d.ts +52 -0
  732. package/dist/unstable/useLiveCompletionAdapter.d.ts.map +1 -0
  733. package/dist/unstable/useLiveCompletionAdapter.js +184 -0
  734. package/dist/unstable/useLiveCompletionAdapter.js.map +1 -0
  735. package/dist/unstable/useMentionAdapter.d.ts +95 -0
  736. package/dist/unstable/useMentionAdapter.d.ts.map +1 -0
  737. package/dist/unstable/useMentionAdapter.js +129 -0
  738. package/dist/unstable/useMentionAdapter.js.map +1 -0
  739. package/dist/unstable/useMessageStallDetection.d.ts +30 -0
  740. package/dist/unstable/useMessageStallDetection.d.ts.map +1 -0
  741. package/dist/unstable/useMessageStallDetection.js +92 -0
  742. package/dist/unstable/useMessageStallDetection.js.map +1 -0
  743. package/dist/unstable/useModelContextSnapshot.d.ts +32 -0
  744. package/dist/unstable/useModelContextSnapshot.d.ts.map +1 -0
  745. package/dist/unstable/useModelContextSnapshot.js +46 -0
  746. package/dist/unstable/useModelContextSnapshot.js.map +1 -0
  747. package/dist/unstable/useSlashCommandAdapter.d.ts +53 -0
  748. package/dist/unstable/useSlashCommandAdapter.d.ts.map +1 -0
  749. package/dist/unstable/useSlashCommandAdapter.js +84 -0
  750. package/dist/unstable/useSlashCommandAdapter.js.map +1 -0
  751. package/dist/unstable/webmcp/WebMcpRegistrationResource.d.ts +12 -0
  752. package/dist/unstable/webmcp/WebMcpRegistrationResource.d.ts.map +1 -0
  753. package/dist/unstable/webmcp/WebMcpRegistrationResource.js +47 -0
  754. package/dist/unstable/webmcp/WebMcpRegistrationResource.js.map +1 -0
  755. package/dist/unstable/webmcp/convertTools.d.ts +18 -0
  756. package/dist/unstable/webmcp/convertTools.d.ts.map +1 -0
  757. package/dist/unstable/webmcp/convertTools.js +160 -0
  758. package/dist/unstable/webmcp/convertTools.js.map +1 -0
  759. package/dist/unstable/webmcp/useWebMcpProvider.d.ts +23 -0
  760. package/dist/unstable/webmcp/useWebMcpProvider.d.ts.map +1 -0
  761. package/dist/unstable/webmcp/useWebMcpProvider.js +111 -0
  762. package/dist/unstable/webmcp/useWebMcpProvider.js.map +1 -0
  763. package/dist/unstable/webmcp/webmcp-host.d.ts +36 -0
  764. package/dist/unstable/webmcp/webmcp-host.d.ts.map +1 -0
  765. package/dist/unstable/webmcp/webmcp-host.js +28 -0
  766. package/dist/unstable/webmcp/webmcp-host.js.map +1 -0
  767. package/dist/utils/Primitive.d.ts +28 -0
  768. package/dist/utils/Primitive.d.ts.map +1 -0
  769. package/dist/utils/Primitive.js +229 -0
  770. package/dist/utils/Primitive.js.map +1 -0
  771. package/dist/utils/RequireAtLeastOne.d.ts +4 -0
  772. package/dist/utils/RequireAtLeastOne.d.ts.map +1 -0
  773. package/dist/utils/RequireAtLeastOne.js +0 -0
  774. package/dist/utils/createActionButton.d.ts +18 -0
  775. package/dist/utils/createActionButton.d.ts.map +1 -0
  776. package/dist/utils/createActionButton.js +39 -0
  777. package/dist/utils/createActionButton.js.map +1 -0
  778. package/dist/utils/getSelectionMessageId.d.ts +2 -0
  779. package/dist/utils/getSelectionMessageId.d.ts.map +1 -0
  780. package/dist/utils/getSelectionMessageId.js +84 -0
  781. package/dist/utils/getSelectionMessageId.js.map +1 -0
  782. package/dist/utils/hooks/useManagedRef.d.ts +2 -0
  783. package/dist/utils/hooks/useManagedRef.d.ts.map +1 -0
  784. package/dist/utils/hooks/useManagedRef.js +15 -0
  785. package/dist/utils/hooks/useManagedRef.js.map +1 -0
  786. package/dist/utils/hooks/useMediaQuery.d.ts +3 -0
  787. package/dist/utils/hooks/useMediaQuery.d.ts.map +1 -0
  788. package/dist/utils/hooks/useMediaQuery.js +33 -0
  789. package/dist/utils/hooks/useMediaQuery.js.map +1 -0
  790. package/dist/utils/hooks/useOnScrollToBottom.d.ts +7 -0
  791. package/dist/utils/hooks/useOnScrollToBottom.d.ts.map +1 -0
  792. package/dist/utils/hooks/useOnScrollToBottom.js +15 -0
  793. package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -0
  794. package/dist/utils/hooks/useSizeHandle.d.ts +12 -0
  795. package/dist/utils/hooks/useSizeHandle.d.ts.map +1 -0
  796. package/dist/utils/hooks/useSizeHandle.js +33 -0
  797. package/dist/utils/hooks/useSizeHandle.js.map +1 -0
  798. package/dist/utils/isCompositionKey.d.ts +2 -0
  799. package/dist/utils/isCompositionKey.d.ts.map +1 -0
  800. package/dist/utils/isCompositionKey.js +5 -0
  801. package/dist/utils/isCompositionKey.js.map +1 -0
  802. package/dist/utils/smooth/SmoothContext.d.ts +117 -0
  803. package/dist/utils/smooth/SmoothContext.d.ts.map +1 -0
  804. package/dist/utils/smooth/SmoothContext.js +40 -0
  805. package/dist/utils/smooth/SmoothContext.js.map +1 -0
  806. package/dist/utils/smooth/useSmooth.d.ts +63 -0
  807. package/dist/utils/smooth/useSmooth.d.ts.map +1 -0
  808. package/dist/utils/smooth/useSmooth.js +144 -0
  809. package/dist/utils/smooth/useSmooth.js.map +1 -0
  810. package/dist/utils/useIsomorphicLayoutEffect.d.ts +2 -0
  811. package/dist/utils/useIsomorphicLayoutEffect.d.ts.map +1 -0
  812. package/dist/utils/useIsomorphicLayoutEffect.js +1 -0
  813. package/package.json +115 -3
  814. package/src/adapters/OpenAIRealtimeVoiceAdapter.test.ts +761 -0
  815. package/src/adapters/OpenAIRealtimeVoiceAdapter.ts +388 -0
  816. package/src/assistant-transport.ts +98 -0
  817. package/src/augmentations.ts +35 -0
  818. package/src/context/ReadonlyStore.ts +7 -0
  819. package/src/context/index.ts +23 -0
  820. package/src/context/providers/AttachmentByIndexProvider.tsx +6 -0
  821. package/src/context/providers/ChainOfThoughtByIndicesProvider.tsx +3 -0
  822. package/src/context/providers/MessageByIndexProvider.tsx +3 -0
  823. package/src/context/providers/MessageProvider.tsx +34 -0
  824. package/src/context/providers/PartByIndexProvider.tsx +3 -0
  825. package/src/context/providers/SuggestionByIndexProvider.tsx +6 -0
  826. package/src/context/providers/TextMessagePartProvider.tsx +3 -0
  827. package/src/context/providers/ThreadListItemProvider.tsx +6 -0
  828. package/src/context/providers/ThreadViewportProvider.tsx +49 -0
  829. package/src/context/providers/vue-providers.test.tsx +326 -0
  830. package/src/context/stores/ThreadViewport.test.ts +29 -0
  831. package/src/context/stores/ThreadViewport.ts +278 -0
  832. package/src/context/vue/ThreadViewportContext.ts +22 -0
  833. package/src/context/vue/utils/createContextHook.ts +26 -0
  834. package/src/context/vue/utils/createContextStoreHook.ts +93 -0
  835. package/src/devtools/DevToolsHooks.test.ts +40 -0
  836. package/src/devtools/DevToolsHooks.ts +142 -0
  837. package/src/hooks/message-readers.test.ts +128 -0
  838. package/src/hooks/useMessageQuote.ts +25 -0
  839. package/src/hooks/useMessageTiming.ts +26 -0
  840. package/src/hooks/useToolCallElapsed.test.tsx +172 -0
  841. package/src/hooks/useToolCallElapsed.ts +65 -0
  842. package/src/index.ts +623 -0
  843. package/src/internal.ts +33 -0
  844. package/src/legacy-runtime/AssistantRuntimeProvider.tsx +61 -0
  845. package/src/mcp-apps/McpAppRenderer.composer.test.tsx +129 -0
  846. package/src/mcp-apps/McpAppRenderer.test.tsx +906 -0
  847. package/src/mcp-apps/McpAppRenderer.tsx +411 -0
  848. package/src/mcp-apps/McpAppsRemoteHost.concurrent.test.tsx +226 -0
  849. package/src/mcp-apps/McpAppsRemoteHost.test.ts +152 -0
  850. package/src/mcp-apps/McpAppsRemoteHost.ts +160 -0
  851. package/src/mcp-apps/app-frame.test.tsx +648 -0
  852. package/src/mcp-apps/app-frame.tsx +351 -0
  853. package/src/mcp-apps/bridge.test.ts +836 -0
  854. package/src/mcp-apps/bridge.ts +538 -0
  855. package/src/mcp-apps/csp.test.ts +112 -0
  856. package/src/mcp-apps/csp.ts +124 -0
  857. package/src/mcp-apps/index.ts +23 -0
  858. package/src/mcp-apps/types.ts +176 -0
  859. package/src/mcp-apps/utils.ts +23 -0
  860. package/src/model-context/frame/SPEC_AssistantFrame.md +105 -0
  861. package/src/model-context/frame/useAssistantFrameHost.detach.test.tsx +155 -0
  862. package/src/model-context/frame/useAssistantFrameHost.reload.test.tsx +116 -0
  863. package/src/model-context/frame/useAssistantFrameHost.test.tsx +43 -0
  864. package/src/model-context/frame/useAssistantFrameHost.ts +137 -0
  865. package/src/model-context/makeAssistantVisible.test.tsx +460 -0
  866. package/src/model-context/makeAssistantVisible.tsx +184 -0
  867. package/src/model-context/registry/SPEC_ModelContextRegistry.md +40 -0
  868. package/src/primitives/actionBar/ActionBarCopy.test.tsx +28 -0
  869. package/src/primitives/actionBar/ActionBarCopy.tsx +100 -0
  870. package/src/primitives/actionBar/ActionBarEdit.ts +63 -0
  871. package/src/primitives/actionBar/ActionBarExportMarkdown.test.tsx +83 -0
  872. package/src/primitives/actionBar/ActionBarExportMarkdown.tsx +65 -0
  873. package/src/primitives/actionBar/ActionBarFeedback.test.tsx +59 -0
  874. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +48 -0
  875. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +48 -0
  876. package/src/primitives/actionBar/ActionBarInteractionContext.ts +13 -0
  877. package/src/primitives/actionBar/ActionBarReload.ts +64 -0
  878. package/src/primitives/actionBar/ActionBarRoot.tsx +119 -0
  879. package/src/primitives/actionBar/ActionBarSpeak.ts +25 -0
  880. package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +24 -0
  881. package/src/primitives/actionBar/useActionBarFloatStatus.ts +48 -0
  882. package/src/primitives/actionBar.ts +9 -0
  883. package/src/primitives/actionBarMore/ActionBarMoreContent.tsx +45 -0
  884. package/src/primitives/actionBarMore/ActionBarMoreItem.tsx +22 -0
  885. package/src/primitives/actionBarMore/ActionBarMoreRoot.test.ts +70 -0
  886. package/src/primitives/actionBarMore/ActionBarMoreRoot.tsx +46 -0
  887. package/src/primitives/actionBarMore/ActionBarMoreSeparator.tsx +26 -0
  888. package/src/primitives/actionBarMore/ActionBarMoreTrigger.tsx +26 -0
  889. package/src/primitives/actionBarMore/scope.ts +6 -0
  890. package/src/primitives/actionBarMore.ts +5 -0
  891. package/src/primitives/assistantModal/AssistantModalAnchor.tsx +22 -0
  892. package/src/primitives/assistantModal/AssistantModalContent.tsx +85 -0
  893. package/src/primitives/assistantModal/AssistantModalRoot.test.tsx +153 -0
  894. package/src/primitives/assistantModal/AssistantModalRoot.tsx +48 -0
  895. package/src/primitives/assistantModal/AssistantModalTrigger.test.tsx +65 -0
  896. package/src/primitives/assistantModal/AssistantModalTrigger.tsx +22 -0
  897. package/src/primitives/assistantModal/popoverRenderPrimitives.ts +6 -0
  898. package/src/primitives/assistantModal/scope.ts +6 -0
  899. package/src/primitives/assistantModal.ts +4 -0
  900. package/src/primitives/attachment/AttachmentName.tsx +16 -0
  901. package/src/primitives/attachment/AttachmentRemove.ts +28 -0
  902. package/src/primitives/attachment/AttachmentRoot.tsx +52 -0
  903. package/src/primitives/attachment/AttachmentThumb.test.tsx +179 -0
  904. package/src/primitives/attachment/AttachmentThumb.tsx +41 -0
  905. package/src/primitives/attachment.ts +7 -0
  906. package/src/primitives/branchPicker/BranchPickerCount.tsx +33 -0
  907. package/src/primitives/branchPicker/BranchPickerNext.ts +42 -0
  908. package/src/primitives/branchPicker/BranchPickerNumber.tsx +16 -0
  909. package/src/primitives/branchPicker/BranchPickerPrevious.ts +42 -0
  910. package/src/primitives/branchPicker/BranchPickerRoot.tsx +64 -0
  911. package/src/primitives/branchPicker.ts +5 -0
  912. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.test.tsx +116 -0
  913. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.tsx +63 -0
  914. package/src/primitives/chainOfThought/ChainOfThoughtParts.tsx +3 -0
  915. package/src/primitives/chainOfThought/ChainOfThoughtRoot.tsx +33 -0
  916. package/src/primitives/chainOfThought.ts +14 -0
  917. package/src/primitives/composer/ComposerAddAttachment.test.tsx +101 -0
  918. package/src/primitives/composer/ComposerAddAttachment.thread-scope.test.tsx +225 -0
  919. package/src/primitives/composer/ComposerAddAttachment.ts +88 -0
  920. package/src/primitives/composer/ComposerAttachmentDropzone.test.tsx +351 -0
  921. package/src/primitives/composer/ComposerAttachmentDropzone.tsx +109 -0
  922. package/src/primitives/composer/ComposerAttachments.tsx +6 -0
  923. package/src/primitives/composer/ComposerCancel.focus.test.tsx +324 -0
  924. package/src/primitives/composer/ComposerCancel.ts +52 -0
  925. package/src/primitives/composer/ComposerCompactContext.tsx +10 -0
  926. package/src/primitives/composer/ComposerDictate.ts +37 -0
  927. package/src/primitives/composer/ComposerDictationTranscript.tsx +55 -0
  928. package/src/primitives/composer/ComposerDisabledThread.test.tsx +118 -0
  929. package/src/primitives/composer/ComposerIf.ts +4 -0
  930. package/src/primitives/composer/ComposerInput.focus-on-run-start.test.tsx +145 -0
  931. package/src/primitives/composer/ComposerInput.test.tsx +712 -0
  932. package/src/primitives/composer/ComposerInput.text-change.test.tsx +77 -0
  933. package/src/primitives/composer/ComposerInput.thread-scope.test.tsx +83 -0
  934. package/src/primitives/composer/ComposerInput.tsx +462 -0
  935. package/src/primitives/composer/ComposerInputPluginContext.tsx +80 -0
  936. package/src/primitives/composer/ComposerPreview.native.test.ts +157 -0
  937. package/src/primitives/composer/ComposerQueue.tsx +3 -0
  938. package/src/primitives/composer/ComposerQuote.tsx +143 -0
  939. package/src/primitives/composer/ComposerResume.ts +35 -0
  940. package/src/primitives/composer/ComposerRoot.test.tsx +429 -0
  941. package/src/primitives/composer/ComposerRoot.tsx +155 -0
  942. package/src/primitives/composer/ComposerSend.ts +43 -0
  943. package/src/primitives/composer/ComposerStopDictation.ts +43 -0
  944. package/src/primitives/composer/composerInputSelector.ts +4 -0
  945. package/src/primitives/composer/trigger/TriggerPopover.native.test.ts +309 -0
  946. package/src/primitives/composer/trigger/TriggerPopover.tsx +248 -0
  947. package/src/primitives/composer/trigger/TriggerPopoverAction.tsx +61 -0
  948. package/src/primitives/composer/trigger/TriggerPopoverBack.tsx +51 -0
  949. package/src/primitives/composer/trigger/TriggerPopoverBehavior.test.tsx +113 -0
  950. package/src/primitives/composer/trigger/TriggerPopoverCategories.tsx +123 -0
  951. package/src/primitives/composer/trigger/TriggerPopoverDirective.tsx +55 -0
  952. package/src/primitives/composer/trigger/TriggerPopoverExports.test.ts +61 -0
  953. package/src/primitives/composer/trigger/TriggerPopoverItems.tsx +121 -0
  954. package/src/primitives/composer/trigger/TriggerPopoverResource.ts +146 -0
  955. package/src/primitives/composer/trigger/TriggerPopoverRootContext.test.tsx +159 -0
  956. package/src/primitives/composer/trigger/TriggerPopoverRootContext.tsx +236 -0
  957. package/src/primitives/composer/trigger/detectTrigger.test.ts +197 -0
  958. package/src/primitives/composer/trigger/detectTrigger.ts +78 -0
  959. package/src/primitives/composer/trigger/index.ts +33 -0
  960. package/src/primitives/composer/trigger/matchesTriggerItemQuery.test.ts +52 -0
  961. package/src/primitives/composer/trigger/matchesTriggerItemQuery.ts +13 -0
  962. package/src/primitives/composer/trigger/triggerDetectionResource.ts +47 -0
  963. package/src/primitives/composer/trigger/triggerKeyboardResource.test.ts +233 -0
  964. package/src/primitives/composer/trigger/triggerKeyboardResource.ts +150 -0
  965. package/src/primitives/composer/trigger/triggerNavigationResource.ts +129 -0
  966. package/src/primitives/composer/trigger/triggerSelectionResource.test.ts +173 -0
  967. package/src/primitives/composer/trigger/triggerSelectionResource.ts +133 -0
  968. package/src/primitives/composer/useAuiState.composer.test.tsx +93 -0
  969. package/src/primitives/composer/useComposerCancelWithFocus.ts +51 -0
  970. package/src/primitives/composer/useComposerInputState.ts +58 -0
  971. package/src/primitives/composer/useTextareaAutosize.ts +140 -0
  972. package/src/primitives/composer.ts +88 -0
  973. package/src/primitives/dropdownMenuRenderPrimitives.test.tsx +64 -0
  974. package/src/primitives/dropdownMenuRenderPrimitives.ts +14 -0
  975. package/src/primitives/error/ErrorMessage.tsx +39 -0
  976. package/src/primitives/error/ErrorRoot.tsx +34 -0
  977. package/src/primitives/error.ts +2 -0
  978. package/src/primitives/message/MessageAttachments.tsx +6 -0
  979. package/src/primitives/message/MessageError.ts +13 -0
  980. package/src/primitives/message/MessageIf.test.tsx +83 -0
  981. package/src/primitives/message/MessageIf.ts +110 -0
  982. package/src/primitives/message/MessageParts.test.tsx +119 -0
  983. package/src/primitives/message/MessageParts.tsx +64 -0
  984. package/src/primitives/message/MessagePartsGrouped.test.tsx +682 -0
  985. package/src/primitives/message/MessagePartsGrouped.tool-interaction.test.tsx +97 -0
  986. package/src/primitives/message/MessagePartsGrouped.tsx +374 -0
  987. package/src/primitives/message/MessageRoot.anchors.test.ts +167 -0
  988. package/src/primitives/message/MessageRoot.test.tsx +272 -0
  989. package/src/primitives/message/MessageRoot.tsx +145 -0
  990. package/src/primitives/message.ts +15 -0
  991. package/src/primitives/messagePart/MessagePartImage.tsx +29 -0
  992. package/src/primitives/messagePart/MessagePartInProgress.ts +3 -0
  993. package/src/primitives/messagePart/MessagePartText.test.tsx +114 -0
  994. package/src/primitives/messagePart/MessagePartText.tsx +54 -0
  995. package/src/primitives/messagePart/useMessagePartData.test.ts +118 -0
  996. package/src/primitives/messagePart/useMessagePartData.ts +34 -0
  997. package/src/primitives/messagePart/useMessagePartFile.ts +42 -0
  998. package/src/primitives/messagePart/useMessagePartImage.ts +41 -0
  999. package/src/primitives/messagePart/useMessagePartReasoning.ts +42 -0
  1000. package/src/primitives/messagePart/useMessagePartSource.ts +43 -0
  1001. package/src/primitives/messagePart/useMessagePartText.ts +45 -0
  1002. package/src/primitives/messagePart.ts +4 -0
  1003. package/src/primitives/native-action-bindings.test.ts +181 -0
  1004. package/src/primitives/native-display-bindings.test.ts +159 -0
  1005. package/src/primitives/queueItem/QueueItemRemove.ts +36 -0
  1006. package/src/primitives/queueItem/QueueItemSteer.ts +36 -0
  1007. package/src/primitives/queueItem/QueueItemText.tsx +48 -0
  1008. package/src/primitives/queueItem.ts +3 -0
  1009. package/src/primitives/reasoning/useScrollLock.test.tsx +296 -0
  1010. package/src/primitives/reasoning/useScrollLock.ts +160 -0
  1011. package/src/primitives/selectionToolbar/SelectionToolbarQuote.tsx +56 -0
  1012. package/src/primitives/selectionToolbar/SelectionToolbarRoot.test.tsx +439 -0
  1013. package/src/primitives/selectionToolbar/SelectionToolbarRoot.tsx +206 -0
  1014. package/src/primitives/selectionToolbar.ts +8 -0
  1015. package/src/primitives/suggestion/SuggestionDescription.tsx +35 -0
  1016. package/src/primitives/suggestion/SuggestionTitle.tsx +43 -0
  1017. package/src/primitives/suggestion/SuggestionTrigger.ts +59 -0
  1018. package/src/primitives/suggestion.ts +3 -0
  1019. package/src/primitives/thread/ThreadEmpty.ts +19 -0
  1020. package/src/primitives/thread/ThreadIf.ts +42 -0
  1021. package/src/primitives/thread/ThreadLoadEarlier.tsx +34 -0
  1022. package/src/primitives/thread/ThreadMessages.tsx +9 -0
  1023. package/src/primitives/thread/ThreadRoot.test.tsx +419 -0
  1024. package/src/primitives/thread/ThreadRoot.tsx +119 -0
  1025. package/src/primitives/thread/ThreadRootElementContext.ts +9 -0
  1026. package/src/primitives/thread/ThreadScrollToBottom.ts +45 -0
  1027. package/src/primitives/thread/ThreadSuggestion.ts +55 -0
  1028. package/src/primitives/thread/ThreadSuggestions.tsx +7 -0
  1029. package/src/primitives/thread/ThreadViewport.thread-scope.test.tsx +58 -0
  1030. package/src/primitives/thread/ThreadViewport.tsx +219 -0
  1031. package/src/primitives/thread/ThreadViewportFooter.tsx +46 -0
  1032. package/src/primitives/thread/topAnchor/computeTopAnchorSlack.test.ts +131 -0
  1033. package/src/primitives/thread/topAnchor/computeTopAnchorSlack.ts +94 -0
  1034. package/src/primitives/thread/topAnchor/createReserveObservers.ts +50 -0
  1035. package/src/primitives/thread/topAnchor/mountTopAnchorReserve.test.ts +570 -0
  1036. package/src/primitives/thread/topAnchor/mountTopAnchorReserve.ts +221 -0
  1037. package/src/primitives/thread/topAnchor/topAnchorTurn.test.ts +115 -0
  1038. package/src/primitives/thread/topAnchor/topAnchorTurn.ts +59 -0
  1039. package/src/primitives/thread/topAnchor/topAnchorUtils.ts +58 -0
  1040. package/src/primitives/thread/topAnchor/useTopAnchorReserve.ts +23 -0
  1041. package/src/primitives/thread/useThreadViewportAutoScroll.test.tsx +1887 -0
  1042. package/src/primitives/thread/useThreadViewportAutoScroll.ts +140 -0
  1043. package/src/primitives/thread.ts +17 -0
  1044. package/src/primitives/threadList/ThreadListItems.tsx +6 -0
  1045. package/src/primitives/threadList/ThreadListLoadMore.tsx +25 -0
  1046. package/src/primitives/threadList/ThreadListNew.tsx +47 -0
  1047. package/src/primitives/threadList/ThreadListRoot.tsx +29 -0
  1048. package/src/primitives/threadList.ts +5 -0
  1049. package/src/primitives/threadListFocusGroup.ts +91 -0
  1050. package/src/primitives/threadListItem/ThreadListItemArchive.ts +23 -0
  1051. package/src/primitives/threadListItem/ThreadListItemDelete.ts +23 -0
  1052. package/src/primitives/threadListItem/ThreadListItemRoot.tsx +100 -0
  1053. package/src/primitives/threadListItem/ThreadListItemTitle.test.tsx +63 -0
  1054. package/src/primitives/threadListItem/ThreadListItemTitle.tsx +3 -0
  1055. package/src/primitives/threadListItem/ThreadListItemTrigger.tsx +51 -0
  1056. package/src/primitives/threadListItem/ThreadListItemUnarchive.test.tsx +55 -0
  1057. package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +25 -0
  1058. package/src/primitives/threadListItem/ThreadListKeyboardNav.test.tsx +348 -0
  1059. package/src/primitives/threadListItem.ts +6 -0
  1060. package/src/primitives/threadListItemMore/ThreadListItemMoreContent.tsx +81 -0
  1061. package/src/primitives/threadListItemMore/ThreadListItemMoreItem.tsx +22 -0
  1062. package/src/primitives/threadListItemMore/ThreadListItemMoreRoot.tsx +79 -0
  1063. package/src/primitives/threadListItemMore/ThreadListItemMoreSeparator.tsx +26 -0
  1064. package/src/primitives/threadListItemMore/ThreadListItemMoreTrigger.tsx +62 -0
  1065. package/src/primitives/threadListItemMore/scope.ts +6 -0
  1066. package/src/primitives/threadListItemMore.ts +5 -0
  1067. package/src/sandbox-host/SandboxHost.test.tsx +579 -0
  1068. package/src/sandbox-host/SandboxHost.tsx +271 -0
  1069. package/src/tests/DataRenderers.test.tsx +218 -0
  1070. package/src/tests/MessageParts.loading.test.tsx +105 -0
  1071. package/src/tests/MessageParts.rendererOptions.test.tsx +125 -0
  1072. package/src/tests/RemoteThreadListRuntime.adapterProvider.test.tsx +187 -0
  1073. package/src/tests/RemoteThreadListRuntime.deferredProvider.test.tsx +99 -0
  1074. package/src/tests/RemoteThreadListRuntime.reloadMainThread.test.tsx +113 -0
  1075. package/src/tests/augmentations.test.ts +95 -0
  1076. package/src/tests/generative-ui.primitive.test.tsx +176 -0
  1077. package/src/tests/generative-ui.test.tsx +130 -0
  1078. package/src/tests/in-memory-thread-list.test.tsx +142 -0
  1079. package/src/tests/local-runtime-queue.test.tsx +506 -0
  1080. package/src/tests/messageAction.ts +67 -0
  1081. package/src/tests/messagePartSwitchRace.test.tsx +222 -0
  1082. package/src/tests/messagePartTypeMismatch.test.tsx +153 -0
  1083. package/src/tests/remote-thread-list-test-helpers.ts +40 -0
  1084. package/src/tests/setup.ts +5 -0
  1085. package/src/tests/threadListItemIsRunning.test.tsx +215 -0
  1086. package/src/tests/threadMessageById.test.tsx +293 -0
  1087. package/src/tests/toolCallTiming.test.tsx +324 -0
  1088. package/src/tests/vue.ts +124 -0
  1089. package/src/unstable/useComposerInput.test.tsx +201 -0
  1090. package/src/unstable/useComposerInput.ts +125 -0
  1091. package/src/unstable/useComposerInputHistory.test.tsx +207 -0
  1092. package/src/unstable/useComposerInputHistory.thread-scope.test.tsx +128 -0
  1093. package/src/unstable/useComposerInputHistory.ts +163 -0
  1094. package/src/unstable/useLiveCompletionAdapter.test.tsx +760 -0
  1095. package/src/unstable/useLiveCompletionAdapter.ts +217 -0
  1096. package/src/unstable/useMentionAdapter.test.tsx +380 -0
  1097. package/src/unstable/useMentionAdapter.ts +276 -0
  1098. package/src/unstable/useMessageStallDetection.lifecycle.test.ts +120 -0
  1099. package/src/unstable/useMessageStallDetection.test.tsx +59 -0
  1100. package/src/unstable/useMessageStallDetection.ts +147 -0
  1101. package/src/unstable/useModelContextSnapshot.test.tsx +181 -0
  1102. package/src/unstable/useModelContextSnapshot.ts +85 -0
  1103. package/src/unstable/useSlashCommandAdapter.test.tsx +172 -0
  1104. package/src/unstable/useSlashCommandAdapter.ts +145 -0
  1105. package/src/unstable/webmcp/WebMcpRegistrationResource.test.ts +150 -0
  1106. package/src/unstable/webmcp/WebMcpRegistrationResource.ts +92 -0
  1107. package/src/unstable/webmcp/__tests__/webmcp.fake.tsx +177 -0
  1108. package/src/unstable/webmcp/convertTools.test.ts +605 -0
  1109. package/src/unstable/webmcp/convertTools.ts +256 -0
  1110. package/src/unstable/webmcp/useWebMcpProvider.test.tsx +543 -0
  1111. package/src/unstable/webmcp/useWebMcpProvider.ts +185 -0
  1112. package/src/unstable/webmcp/webmcp-host.test.ts +142 -0
  1113. package/src/unstable/webmcp/webmcp-host.ts +83 -0
  1114. package/src/utils/Primitive.test.tsx +551 -0
  1115. package/src/utils/Primitive.tsx +363 -0
  1116. package/src/utils/RequireAtLeastOne.ts +7 -0
  1117. package/src/utils/createActionButton.child-cancel.test.tsx +82 -0
  1118. package/src/utils/createActionButton.test.tsx +114 -0
  1119. package/src/utils/createActionButton.tsx +75 -0
  1120. package/src/utils/getSelectionMessageId.test.ts +609 -0
  1121. package/src/utils/getSelectionMessageId.ts +133 -0
  1122. package/src/utils/hooks/useManagedRef.ts +19 -0
  1123. package/src/utils/hooks/useMediaQuery.test.tsx +60 -0
  1124. package/src/utils/hooks/useMediaQuery.ts +44 -0
  1125. package/src/utils/hooks/useOnScrollToBottom.ts +23 -0
  1126. package/src/utils/hooks/useSizeHandle.ts +39 -0
  1127. package/src/utils/isCompositionKey.ts +5 -0
  1128. package/src/utils/smooth/SmoothContext.test.tsx +224 -0
  1129. package/src/utils/smooth/SmoothContext.tsx +82 -0
  1130. package/src/utils/smooth/useSmooth.test.tsx +499 -0
  1131. package/src/utils/smooth/useSmooth.ts +266 -0
  1132. package/src/utils/useIsomorphicLayoutEffect.test.tsx +25 -0
  1133. package/src/utils/useIsomorphicLayoutEffect.ts +1 -0
@@ -0,0 +1,213 @@
1
+ "use client";
2
+ import { useIsomorphicLayoutEffect } from "../utils/useIsomorphicLayoutEffect.js";
3
+ import { createMcpAppBridge } from "./bridge.js";
4
+ import { SandboxHost } from "../sandbox-host/SandboxHost.js";
5
+ import { applyMcpAppCsp } from "./csp.js";
6
+ import { defineComponent, h, shallowRef } from "vue";
7
+ import { isRecord } from "@ulearning/ai-core/internal";
8
+ // src/mcp-apps/app-frame.tsx
9
+ const DEFAULT_PRODUCT = "assistant-ui-mcp-app";
10
+ const INIT_TIMEOUT_MS = 5e3;
11
+ const DEFAULT_MAX_HEIGHT = 800;
12
+ const isPlainObject = (value) => {
13
+ if (!isRecord(value)) return false;
14
+ const prototype = Object.getPrototypeOf(value);
15
+ return prototype === null || prototype === Object.prototype;
16
+ };
17
+ const isSameHostContext = (a, b, depth = 0) => {
18
+ if (Object.is(a, b)) return true;
19
+ if (depth > 100) return false;
20
+ if (Array.isArray(a) || Array.isArray(b)) {
21
+ if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length) return false;
22
+ for (let i = 0; i < a.length; i++) if (!isSameHostContext(a[i], b[i], depth + 1)) return false;
23
+ return true;
24
+ }
25
+ if (!isPlainObject(a) || !isPlainObject(b)) return false;
26
+ const aKeys = Object.keys(a);
27
+ return aKeys.length === Object.keys(b).length && aKeys.every((key) => Object.hasOwn(b, key) && isSameHostContext(a[key], b[key], depth + 1));
28
+ };
29
+ function useBridgeNotify(readValue, bridgeRef, widgetReadyRef, pendingRef, lastSentRef, notify, isEqual = Object.is) {
30
+ useIsomorphicLayoutEffect(() => {
31
+ const value = readValue();
32
+ if (!bridgeRef.value) return;
33
+ if (value === void 0 || isEqual(lastSentRef.value, value)) {
34
+ pendingRef.value = void 0;
35
+ return;
36
+ }
37
+ if (!widgetReadyRef.value) {
38
+ pendingRef.value = value;
39
+ return;
40
+ }
41
+ notify(bridgeRef.value, value);
42
+ lastSentRef.value = value;
43
+ }, () => [readValue()]);
44
+ }
45
+ function buildLiveHandlers(initial, liveRef, lifecycle) {
46
+ const live = () => liveRef.value.handlers;
47
+ const has = (key) => initial?.[key] !== void 0;
48
+ const out = {};
49
+ Object.defineProperty(out, "allowedTools", {
50
+ get: () => live()?.allowedTools,
51
+ enumerable: true,
52
+ configurable: true
53
+ });
54
+ const liveCall = (key) => ((p) => {
55
+ const fn = live()?.[key];
56
+ if (!fn) throw new Error(`${key} handler is no longer available`);
57
+ return fn(p);
58
+ });
59
+ if (has("callTool")) out.callTool = liveCall("callTool");
60
+ if (has("readResource")) out.readResource = liveCall("readResource");
61
+ if (has("listResources")) out.listResources = liveCall("listResources");
62
+ if (has("openLink")) out.openLink = liveCall("openLink");
63
+ if (has("sendMessage")) out.sendMessage = liveCall("sendMessage");
64
+ if (has("updateModelContext")) out.updateModelContext = liveCall("updateModelContext");
65
+ if (has("requestDisplayMode")) out.requestDisplayMode = liveCall("requestDisplayMode");
66
+ out.onSizeChange = (p) => {
67
+ lifecycle.onSizeChange(p);
68
+ live()?.onSizeChange?.(p);
69
+ };
70
+ out.onInitialized = (params) => {
71
+ lifecycle.onInitialized();
72
+ live()?.onInitialized?.(params);
73
+ };
74
+ out.onRequestTeardown = (p) => live()?.onRequestTeardown?.(p);
75
+ out.onLog = (p) => live()?.onLog?.(p);
76
+ out.onError = (e) => live()?.onError?.(e);
77
+ return out;
78
+ }
79
+ const McpAppFrame = defineComponent(function McpAppFrame(props) {
80
+ const bridgeRef = shallowRef(null);
81
+ const lastSentInputRef = shallowRef(void 0);
82
+ const lastSentOutputRef = shallowRef(void 0);
83
+ const lastSentHostContextRef = shallowRef(void 0);
84
+ const widgetReadyRef = shallowRef(false);
85
+ const pendingInputRef = shallowRef(void 0);
86
+ const pendingOutputRef = shallowRef(void 0);
87
+ const pendingHostContextRef = shallowRef(void 0);
88
+ const liveRef = shallowRef({
89
+ handlers: props.handlers,
90
+ hostInfo: props.hostInfo,
91
+ hostContext: props.hostContext,
92
+ input: props.input,
93
+ output: props.output
94
+ });
95
+ useIsomorphicLayoutEffect(() => {
96
+ liveRef.value = {
97
+ handlers: props.handlers,
98
+ hostInfo: props.hostInfo,
99
+ hostContext: props.hostContext,
100
+ input: props.input,
101
+ output: props.output
102
+ };
103
+ }, () => [
104
+ props.handlers,
105
+ props.hostInfo,
106
+ props.hostContext,
107
+ props.input,
108
+ props.output
109
+ ]);
110
+ const createBridge = (frame, host) => {
111
+ const current = liveRef.value;
112
+ let initTimeoutId = null;
113
+ const flushPending = () => {
114
+ if (widgetReadyRef.value) return;
115
+ widgetReadyRef.value = true;
116
+ const b = bridgeRef.value;
117
+ if (!b) return;
118
+ if (pendingInputRef.value !== void 0) {
119
+ b.notifyToolInput(pendingInputRef.value);
120
+ lastSentInputRef.value = pendingInputRef.value;
121
+ pendingInputRef.value = void 0;
122
+ }
123
+ if (pendingOutputRef.value !== void 0) {
124
+ b.notifyToolResult(pendingOutputRef.value);
125
+ lastSentOutputRef.value = pendingOutputRef.value;
126
+ pendingOutputRef.value = void 0;
127
+ }
128
+ if (pendingHostContextRef.value !== void 0) {
129
+ b.notifyHostContextChanged(pendingHostContextRef.value);
130
+ lastSentHostContextRef.value = pendingHostContextRef.value;
131
+ pendingHostContextRef.value = void 0;
132
+ }
133
+ };
134
+ const wrappedHandlers = buildLiveHandlers(current.handlers, liveRef, {
135
+ onInitialized: () => {
136
+ if (initTimeoutId !== null) {
137
+ clearTimeout(initTimeoutId);
138
+ initTimeoutId = null;
139
+ }
140
+ flushPending();
141
+ },
142
+ onSizeChange: (p) => {
143
+ if (p.height != null) host.setHeight(p.height);
144
+ }
145
+ });
146
+ initTimeoutId = setTimeout(() => {
147
+ initTimeoutId = null;
148
+ flushPending();
149
+ }, INIT_TIMEOUT_MS);
150
+ const bridge = createMcpAppBridge({
151
+ frame,
152
+ handlers: wrappedHandlers,
153
+ hostInfo: current.hostInfo,
154
+ hostContext: current.hostContext
155
+ });
156
+ bridgeRef.value = bridge;
157
+ if (current.input !== void 0) pendingInputRef.value = current.input;
158
+ if (current.output !== void 0) pendingOutputRef.value = current.output;
159
+ lastSentHostContextRef.value = current.hostContext ?? {};
160
+ return {
161
+ onMessage: bridge.onMessage,
162
+ dispose: () => {
163
+ if (initTimeoutId !== null) {
164
+ clearTimeout(initTimeoutId);
165
+ initTimeoutId = null;
166
+ }
167
+ bridge.dispose();
168
+ bridgeRef.value = null;
169
+ lastSentInputRef.value = void 0;
170
+ lastSentOutputRef.value = void 0;
171
+ lastSentHostContextRef.value = void 0;
172
+ widgetReadyRef.value = false;
173
+ pendingInputRef.value = void 0;
174
+ pendingOutputRef.value = void 0;
175
+ pendingHostContextRef.value = void 0;
176
+ }
177
+ };
178
+ };
179
+ useBridgeNotify(() => props.input, bridgeRef, widgetReadyRef, pendingInputRef, lastSentInputRef, (b, v) => b.notifyToolInput(v));
180
+ useBridgeNotify(() => props.output, bridgeRef, widgetReadyRef, pendingOutputRef, lastSentOutputRef, (b, v) => b.notifyToolResult(v));
181
+ useBridgeNotify(() => props.hostContext, bridgeRef, widgetReadyRef, pendingHostContextRef, lastSentHostContextRef, (b, v) => b.notifyHostContextChanged(v), isSameHostContext);
182
+ return () => h(SandboxHost, {
183
+ content: { html: applyMcpAppCsp(props.resource.html, props.resource.meta?.csp) },
184
+ contentKey: props.app.serverId ? `${props.app.serverId} ${props.resource.uri}` : props.resource.uri,
185
+ sandbox: {
186
+ ...props.sandbox,
187
+ product: props.sandbox?.product ?? DEFAULT_PRODUCT
188
+ },
189
+ maxHeight: props.maxHeight ?? DEFAULT_MAX_HEIGHT,
190
+ createBridge,
191
+ onError: (error) => liveRef.value.handlers?.onError?.(error),
192
+ containerProps: {
193
+ "data-mcp-app-resource": props.app.resourceUri,
194
+ "data-mcp-app-prefers-border": props.resource.meta?.prefersBorder ? "" : void 0
195
+ }
196
+ });
197
+ }, {
198
+ name: "McpAppFrame",
199
+ props: [
200
+ "app",
201
+ "resource",
202
+ "input",
203
+ "output",
204
+ "sandbox",
205
+ "handlers",
206
+ "hostInfo",
207
+ "hostContext",
208
+ "maxHeight"
209
+ ]
210
+ });
211
+ export { McpAppFrame };
212
+
213
+ //# sourceMappingURL=app-frame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-frame.js","names":["defineComponent","h","shallowRef","ShallowRef","useIsomorphicLayoutEffect","McpAppBridge","createMcpAppBridge","SandboxHost","SandboxBridge","SandboxHostApi","SandboxHostFrame","McpAppBridgeHandlers","McpAppFrameProps","McpAppHostContext","isRecord","applyMcpAppCsp","DEFAULT_PRODUCT","INIT_TIMEOUT_MS","DEFAULT_MAX_HEIGHT","isPlainObject","value","Record","prototype","Object","getPrototypeOf","isSameHostContext","a","b","depth","is","Array","isArray","length","i","aKeys","keys","every","key","hasOwn","useBridgeNotify","readValue","T","bridgeRef","widgetReadyRef","pendingRef","lastSentRef","notify","bridge","v","isEqual","sent","next","undefined","LiveSnapshot","handlers","hostInfo","hostContext","input","output","FrameLifecycle","onInitialized","onSizeChange","params","width","height","buildLiveHandlers","initial","liveRef","lifecycle","live","has","K","out","defineProperty","get","allowedTools","enumerable","configurable","liveCall","NonNullable","p","fn","Error","callTool","readResource","listResources","openLink","sendMessage","updateModelContext","requestDisplayMode","onRequestTeardown","onLog","onError","e","McpAppFrame","props","lastSentInputRef","lastSentOutputRef","lastSentHostContextRef","pendingInputRef","pendingOutputRef","pendingHostContextRef","createBridge","frame","host","current","initTimeoutId","ReturnType","setTimeout","flushPending","notifyToolInput","notifyToolResult","notifyHostContextChanged","wrappedHandlers","clearTimeout","setHeight","onMessage","dispose","content","html","resource","meta","csp","contentKey","app","serverId","uri","sandbox","product","maxHeight","error","containerProps","resourceUri","prefersBorder","name"],"sources":["../../src/mcp-apps/app-frame.tsx"],"sourcesContent":["\"use client\";\n\nimport { defineComponent, h, shallowRef, type ShallowRef } from \"vue\";\nimport { useIsomorphicLayoutEffect } from \"../utils/useIsomorphicLayoutEffect\";\nimport { type McpAppBridge, createMcpAppBridge } from \"./bridge\";\nimport {\n SandboxHost,\n type SandboxBridge,\n type SandboxHostApi,\n type SandboxHostFrame,\n} from \"../sandbox-host/SandboxHost\";\nimport type {\n McpAppBridgeHandlers,\n McpAppFrameProps,\n McpAppHostContext,\n} from \"./types\";\nimport { isRecord } from \"@ulearning/ai-core/internal\";\nimport { applyMcpAppCsp } from \"./csp\";\n\nconst DEFAULT_PRODUCT = \"assistant-ui-mcp-app\";\nconst INIT_TIMEOUT_MS = 5000;\nconst DEFAULT_MAX_HEIGHT = 800;\n\n// Only a plain object can be compared by its own keys. Structured clone carries\n// a Date, Map, or class instance to the widget intact, and those expose no\n// enumerable keys, so walking them would report two different values as equal.\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (!isRecord(value)) return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === null || prototype === Object.prototype;\n};\n\n// Hosts commonly rebuild an equal context object on every render, and the\n// widget cannot tell a repeated notification apart from a real change. The\n// open index signature on McpAppHostContext admits values JSON rejects (an\n// undefined property value is enough), so leaves the walk cannot compare fall\n// back to identity rather than failing the whole comparison.\nconst isSameHostContext = (a: unknown, b: unknown, depth = 0): boolean => {\n if (Object.is(a, b)) return true;\n if (depth > 100) return false;\n if (Array.isArray(a) || Array.isArray(b)) {\n if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)\n return false;\n for (let i = 0; i < a.length; i++) {\n if (!isSameHostContext(a[i], b[i], depth + 1)) return false;\n }\n return true;\n }\n if (!isPlainObject(a) || !isPlainObject(b)) return false;\n const aKeys = Object.keys(a);\n return (\n aKeys.length === Object.keys(b).length &&\n aKeys.every(\n (key) =>\n Object.hasOwn(b, key) && isSameHostContext(a[key], b[key], depth + 1),\n )\n );\n};\n\nfunction useBridgeNotify<T>(\n readValue: () => T | undefined,\n bridgeRef: ShallowRef<McpAppBridge | null>,\n widgetReadyRef: ShallowRef<boolean>,\n pendingRef: ShallowRef<T | undefined>,\n lastSentRef: ShallowRef<T | undefined>,\n notify: (bridge: McpAppBridge, v: T) => void,\n isEqual: (sent: T | undefined, next: T) => boolean = Object.is,\n) {\n useIsomorphicLayoutEffect(\n () => {\n const value = readValue();\n if (!bridgeRef.value) return;\n // Nothing to deliver, either because there is no value or because the\n // widget already holds it; a queued value here is superseded and would\n // otherwise flush after initialization as a stale update.\n if (value === undefined || isEqual(lastSentRef.value, value)) {\n pendingRef.value = undefined;\n return;\n }\n if (!widgetReadyRef.value) {\n pendingRef.value = value;\n return;\n }\n notify(bridgeRef.value, value);\n lastSentRef.value = value;\n },\n () => [readValue()],\n );\n}\n\ntype LiveSnapshot = {\n handlers: McpAppBridgeHandlers | undefined;\n hostInfo: McpAppFrameProps[\"hostInfo\"];\n hostContext: McpAppFrameProps[\"hostContext\"];\n input: unknown;\n output: unknown;\n};\n\ntype FrameLifecycle = {\n onInitialized: () => void;\n onSizeChange: (params: { width?: number; height?: number }) => void;\n};\n\n// Proxy each per-call handler through liveRef so the bridge always dispatches\n// to the latest handler reference (e.g. inline callbacks closing over state).\n// Capability presence is snapshot at mount: a handler added later requires a\n// remount (keyed on resource URI) to expose the capability to the widget.\n// allowedTools is the exception: it is never advertised in the ui/initialize\n// response, so it stays a live getter, which means this object must reach the\n// bridge uncopied and the frame passes its lifecycle work in rather than\n// wrapping the result.\nfunction buildLiveHandlers(\n initial: McpAppBridgeHandlers | undefined,\n liveRef: { readonly value: LiveSnapshot },\n lifecycle: FrameLifecycle,\n): McpAppBridgeHandlers {\n const live = () => liveRef.value.handlers;\n const has = <K extends keyof McpAppBridgeHandlers>(key: K) =>\n initial?.[key] !== undefined;\n const out: McpAppBridgeHandlers = {};\n Object.defineProperty(out, \"allowedTools\", {\n get: () => live()?.allowedTools,\n enumerable: true,\n configurable: true,\n });\n const liveCall = <K extends keyof McpAppBridgeHandlers>(\n key: K,\n ): NonNullable<McpAppBridgeHandlers[K]> =>\n ((p: unknown) => {\n const fn = live()?.[key] as ((p: unknown) => unknown) | undefined;\n if (!fn) {\n throw new Error(`${key} handler is no longer available`);\n }\n return fn(p);\n }) as NonNullable<McpAppBridgeHandlers[K]>;\n if (has(\"callTool\")) out.callTool = liveCall(\"callTool\");\n if (has(\"readResource\")) out.readResource = liveCall(\"readResource\");\n if (has(\"listResources\")) out.listResources = liveCall(\"listResources\");\n if (has(\"openLink\")) out.openLink = liveCall(\"openLink\");\n if (has(\"sendMessage\")) out.sendMessage = liveCall(\"sendMessage\");\n if (has(\"updateModelContext\"))\n out.updateModelContext = liveCall(\"updateModelContext\");\n if (has(\"requestDisplayMode\"))\n out.requestDisplayMode = liveCall(\"requestDisplayMode\");\n out.onSizeChange = (p) => {\n lifecycle.onSizeChange(p);\n live()?.onSizeChange?.(p);\n };\n out.onInitialized = (params) => {\n lifecycle.onInitialized();\n live()?.onInitialized?.(params);\n };\n out.onRequestTeardown = (p) => live()?.onRequestTeardown?.(p);\n out.onLog = (p) => live()?.onLog?.(p);\n out.onError = (e) => live()?.onError?.(e);\n return out;\n}\n\nexport const McpAppFrame = defineComponent(\n function McpAppFrame(props: McpAppFrameProps) {\n const bridgeRef = shallowRef<McpAppBridge | null>(null);\n const lastSentInputRef = shallowRef<unknown>(undefined);\n const lastSentOutputRef = shallowRef<unknown>(undefined);\n const lastSentHostContextRef = shallowRef<McpAppHostContext | undefined>(\n undefined,\n );\n // Per MCP Apps spec, the host should defer notifications until the widget\n // signals readiness via `notifications/initialized`. Until then, we record\n // pending values and flush them on init.\n const widgetReadyRef = shallowRef(false);\n const pendingInputRef = shallowRef<unknown>(undefined);\n const pendingOutputRef = shallowRef<unknown>(undefined);\n const pendingHostContextRef = shallowRef<McpAppHostContext | undefined>(\n undefined,\n );\n\n const liveRef = shallowRef<LiveSnapshot>({\n handlers: props.handlers,\n hostInfo: props.hostInfo,\n hostContext: props.hostContext,\n input: props.input,\n output: props.output,\n });\n useIsomorphicLayoutEffect(\n () => {\n liveRef.value = {\n handlers: props.handlers,\n hostInfo: props.hostInfo,\n hostContext: props.hostContext,\n input: props.input,\n output: props.output,\n };\n },\n () => [\n props.handlers,\n props.hostInfo,\n props.hostContext,\n props.input,\n props.output,\n ],\n );\n\n const createBridge = (\n frame: SandboxHostFrame,\n host: SandboxHostApi,\n ): SandboxBridge => {\n const current = liveRef.value;\n let initTimeoutId: ReturnType<typeof setTimeout> | null = null;\n\n const flushPending = () => {\n if (widgetReadyRef.value) return;\n widgetReadyRef.value = true;\n const b = bridgeRef.value;\n if (!b) return;\n if (pendingInputRef.value !== undefined) {\n b.notifyToolInput(pendingInputRef.value);\n lastSentInputRef.value = pendingInputRef.value;\n pendingInputRef.value = undefined;\n }\n if (pendingOutputRef.value !== undefined) {\n b.notifyToolResult(pendingOutputRef.value);\n lastSentOutputRef.value = pendingOutputRef.value;\n pendingOutputRef.value = undefined;\n }\n if (pendingHostContextRef.value !== undefined) {\n b.notifyHostContextChanged(pendingHostContextRef.value);\n lastSentHostContextRef.value = pendingHostContextRef.value;\n pendingHostContextRef.value = undefined;\n }\n };\n\n const wrappedHandlers = buildLiveHandlers(current.handlers, liveRef, {\n onInitialized: () => {\n if (initTimeoutId !== null) {\n clearTimeout(initTimeoutId);\n initTimeoutId = null;\n }\n flushPending();\n },\n onSizeChange: (p) => {\n if (p.height != null) host.setHeight(p.height);\n },\n });\n\n // Safety net: if the widget never sends notifications/initialized (broken\n // or non-spec-compliant), flush the queue anyway so the host doesn't\n // appear hung.\n initTimeoutId = setTimeout(() => {\n initTimeoutId = null;\n flushPending();\n }, INIT_TIMEOUT_MS);\n\n const bridge = createMcpAppBridge({\n frame,\n handlers: wrappedHandlers,\n hostInfo: current.hostInfo,\n hostContext: current.hostContext,\n });\n bridgeRef.value = bridge;\n\n if (current.input !== undefined) pendingInputRef.value = current.input;\n if (current.output !== undefined) pendingOutputRef.value = current.output;\n // hostContext is delivered inside the ui/initialize response, where the\n // bridge defaults it to {}; recording that same normalized value keeps the\n // first later change from repeating what the widget already holds.\n lastSentHostContextRef.value = current.hostContext ?? {};\n\n return {\n onMessage: bridge.onMessage,\n dispose: () => {\n if (initTimeoutId !== null) {\n clearTimeout(initTimeoutId);\n initTimeoutId = null;\n }\n bridge.dispose();\n bridgeRef.value = null;\n lastSentInputRef.value = undefined;\n lastSentOutputRef.value = undefined;\n lastSentHostContextRef.value = undefined;\n widgetReadyRef.value = false;\n pendingInputRef.value = undefined;\n pendingOutputRef.value = undefined;\n pendingHostContextRef.value = undefined;\n },\n };\n };\n\n useBridgeNotify(\n () => props.input,\n bridgeRef,\n widgetReadyRef,\n pendingInputRef,\n lastSentInputRef,\n (b, v) => b.notifyToolInput(v),\n );\n useBridgeNotify(\n () => props.output,\n bridgeRef,\n widgetReadyRef,\n pendingOutputRef,\n lastSentOutputRef,\n (b, v) => b.notifyToolResult(v),\n );\n useBridgeNotify(\n () => props.hostContext,\n bridgeRef,\n widgetReadyRef,\n pendingHostContextRef,\n lastSentHostContextRef,\n (b, v) => b.notifyHostContextChanged(v),\n isSameHostContext,\n );\n\n return () =>\n h(SandboxHost, {\n content: {\n html: applyMcpAppCsp(props.resource.html, props.resource.meta?.csp),\n },\n contentKey: props.app.serverId\n ? `${props.app.serverId} ${props.resource.uri}`\n : props.resource.uri,\n sandbox: {\n ...props.sandbox,\n product: props.sandbox?.product ?? DEFAULT_PRODUCT,\n },\n maxHeight: props.maxHeight ?? DEFAULT_MAX_HEIGHT,\n createBridge,\n onError: (error: Error) => liveRef.value.handlers?.onError?.(error),\n containerProps: {\n \"data-mcp-app-resource\": props.app.resourceUri,\n \"data-mcp-app-prefers-border\": props.resource.meta?.prefersBorder\n ? \"\"\n : undefined,\n },\n });\n },\n {\n name: \"McpAppFrame\",\n props: [\n \"app\",\n \"resource\",\n \"input\",\n \"output\",\n \"sandbox\",\n \"handlers\",\n \"hostInfo\",\n \"hostContext\",\n \"maxHeight\",\n ],\n },\n);\n"],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { SandboxHostFrame } from "../sandbox-host/SandboxHost.js";
2
+ import { type McpAppBridgeHandlers, type McpAppHostContext, type McpAppHostInfo } from "./types.js";
3
+ export type McpAppBridgeFrame = SandboxHostFrame;
4
+ export type CreateMcpAppBridgeOptions = {
5
+ frame: McpAppBridgeFrame;
6
+ handlers?: McpAppBridgeHandlers | undefined;
7
+ hostInfo?: McpAppHostInfo | undefined;
8
+ hostContext?: McpAppHostContext | undefined;
9
+ };
10
+ export type McpAppBridge = {
11
+ onMessage: (event: MessageEvent) => void;
12
+ dispose: () => void;
13
+ notifyToolInput: (input: unknown) => void;
14
+ notifyToolResult: (result: unknown) => void;
15
+ notifyHostContextChanged: (hostContext: McpAppHostContext) => void;
16
+ };
17
+ export declare function createMcpAppBridge(opts: CreateMcpAppBridgeOptions): McpAppBridge;
18
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAA6B;AAEnE,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAMpB,MAAM,YAAS;AAqDhB,MAAM,MAAM,iBAAiB,GAAG,gBAAgB;AAEhD,MAAM,MAAM,yBAAyB,GAAG;IACtC,KAAK,EAAE,iBAAiB;IACxB,QAAQ,CAAC,EAAE,oBAAoB,GAAG,SAAS;IAC3C,QAAQ,CAAC,EAAE,cAAc,GAAG,SAAS;IACrC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS;CAC5C;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI;IACxC,OAAO,EAAE,MAAM,IAAI;IACnB,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI;IACzC,gBAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI;IAC3C,wBAAwB,EAAE,CAAC,WAAW,EAAE,iBAAiB,KAAK,IAAI;CACnE;AA+CD,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,yBAAyB,GAC9B,YAAY","names":[],"ignoreList":[],"sources":["../../src/mcp-apps/bridge.ts"],"sourcesContent":[null]}
@@ -0,0 +1,319 @@
1
+ import "./types.js";
2
+ import { invokeUserCallback, isRecord } from "@ulearning/ai-core/internal";
3
+ // src/mcp-apps/bridge.ts
4
+ const VALID_DISPLAY_MODES = [
5
+ "inline",
6
+ "fullscreen",
7
+ "pip"
8
+ ];
9
+ function isMcpAppDisplayMode(value) {
10
+ return VALID_DISPLAY_MODES.some((mode) => mode === value);
11
+ }
12
+ function isAppInfo(value) {
13
+ return isRecord(value) && typeof value.name === "string" && typeof value.version === "string";
14
+ }
15
+ function getAppCapabilities(value) {
16
+ if (!isRecord(value)) return void 0;
17
+ const { availableDisplayModes, ...rest } = value;
18
+ return {
19
+ ...rest,
20
+ ...Array.isArray(availableDisplayModes) ? { availableDisplayModes: Object.values(availableDisplayModes).filter(isMcpAppDisplayMode) } : {}
21
+ };
22
+ }
23
+ function getInitializeParams(params) {
24
+ if (!isRecord(params)) return {};
25
+ const appCapabilities = getAppCapabilities(params.appCapabilities);
26
+ return {
27
+ ...isAppInfo(params.appInfo) ? { appInfo: params.appInfo } : {},
28
+ ...appCapabilities ? { appCapabilities } : {},
29
+ ...typeof params.protocolVersion === "string" ? { protocolVersion: params.protocolVersion } : {}
30
+ };
31
+ }
32
+ const DEFAULT_HOST_INFO = {
33
+ name: "assistant-ui",
34
+ version: "0.1"
35
+ };
36
+ const METHOD_ALIASES = {
37
+ "ui/notifications/initialized": "notifications/initialized",
38
+ "ui/notifications/size-changed": "notifications/size_changed",
39
+ "ui/request-display-mode": "requestDisplayMode",
40
+ "ui/open-link": "openLink",
41
+ "ui/update-model-context": "updateModelContext",
42
+ "ui/message": "sendMessage",
43
+ "notifications/message": "notifications/log"
44
+ };
45
+ const normalizeMethod = (method) => METHOD_ALIASES[method] ?? method;
46
+ const JSONRPC_ERROR = {
47
+ parseError: -32700,
48
+ invalidRequest: -32600,
49
+ methodNotFound: -32601,
50
+ invalidParams: -32602,
51
+ internalError: -32603
52
+ };
53
+ function isJsonRpcMessage(value) {
54
+ if (!value || typeof value !== "object") return false;
55
+ const v = value;
56
+ return v.jsonrpc === "2.0" && typeof v.method === "string";
57
+ }
58
+ function isRequest(msg) {
59
+ return "id" in msg;
60
+ }
61
+ function isNotification(msg) {
62
+ return !("id" in msg);
63
+ }
64
+ function createMcpAppBridge(opts) {
65
+ const { frame, handlers = {}, hostInfo = DEFAULT_HOST_INFO, hostContext = {} } = opts;
66
+ let disposed = false;
67
+ let initializeParams = {};
68
+ const post = (msg) => {
69
+ if (disposed) return;
70
+ frame.sendMessage(msg);
71
+ };
72
+ const respond = (id, payload) => {
73
+ const res = {
74
+ jsonrpc: "2.0",
75
+ id,
76
+ ...payload
77
+ };
78
+ post(res);
79
+ };
80
+ const errorResponse = (id, code, message, data) => {
81
+ respond(id, { error: {
82
+ code,
83
+ message,
84
+ ...data !== void 0 ? { data } : {}
85
+ } });
86
+ };
87
+ const reportError = (error) => {
88
+ if (disposed) return;
89
+ invokeUserCallback("assistant-ui", "MCP App onError", handlers.onError?.bind(handlers), error);
90
+ };
91
+ const handleRequest = async (req) => {
92
+ try {
93
+ const params = req.params;
94
+ switch (normalizeMethod(req.method)) {
95
+ case "ui/initialize": {
96
+ initializeParams = getInitializeParams(params);
97
+ const requestedProtocolVersion = initializeParams.protocolVersion ?? "0.1";
98
+ respond(req.id, { result: {
99
+ protocolVersion: requestedProtocolVersion,
100
+ host: hostInfo,
101
+ hostInfo,
102
+ hostContext,
103
+ capabilities: {
104
+ tools: handlers.callTool ? {} : void 0,
105
+ resources: handlers.readResource || handlers.listResources ? {} : void 0,
106
+ ui: {
107
+ sendMessage: !!handlers.sendMessage,
108
+ openLink: !!handlers.openLink,
109
+ requestDisplayMode: !!handlers.requestDisplayMode,
110
+ updateModelContext: !!handlers.updateModelContext
111
+ }
112
+ },
113
+ hostCapabilities: {
114
+ ...handlers.openLink ? { openLinks: {} } : {},
115
+ ...handlers.callTool ? { serverTools: {} } : {},
116
+ ...handlers.readResource || handlers.listResources ? { serverResources: {} } : {},
117
+ ...handlers.updateModelContext ? { updateModelContext: { text: {} } } : {},
118
+ ...handlers.sendMessage ? { message: { text: {} } } : {},
119
+ ...handlers.onLog ? { logging: {} } : {}
120
+ }
121
+ } });
122
+ return;
123
+ }
124
+ case "tools/call": {
125
+ if (!handlers.callTool) {
126
+ errorResponse(req.id, JSONRPC_ERROR.methodNotFound, "tools/call is not supported by this host");
127
+ return;
128
+ }
129
+ const callParams = params ?? {};
130
+ if (typeof callParams.name !== "string") {
131
+ errorResponse(req.id, JSONRPC_ERROR.invalidParams, "tools/call requires a string 'name'");
132
+ return;
133
+ }
134
+ if (handlers.allowedTools && !handlers.allowedTools.includes(callParams.name)) {
135
+ errorResponse(req.id, JSONRPC_ERROR.invalidParams, `tool '${callParams.name}' is not allowed for this app`);
136
+ return;
137
+ }
138
+ let callArgs;
139
+ if (callParams.arguments !== void 0) {
140
+ if (callParams.arguments === null || typeof callParams.arguments !== "object" || Array.isArray(callParams.arguments)) {
141
+ errorResponse(req.id, JSONRPC_ERROR.invalidParams, "tools/call 'arguments' must be an object");
142
+ return;
143
+ }
144
+ callArgs = callParams.arguments;
145
+ }
146
+ const result = await handlers.callTool({
147
+ name: callParams.name,
148
+ ...callArgs !== void 0 ? { arguments: callArgs } : {}
149
+ });
150
+ respond(req.id, { result });
151
+ return;
152
+ }
153
+ case "resources/read": {
154
+ if (!handlers.readResource) {
155
+ errorResponse(req.id, JSONRPC_ERROR.methodNotFound, "resources/read is not supported by this host");
156
+ return;
157
+ }
158
+ const readParams = params ?? {};
159
+ if (typeof readParams.uri !== "string") {
160
+ errorResponse(req.id, JSONRPC_ERROR.invalidParams, "resources/read requires a string 'uri'");
161
+ return;
162
+ }
163
+ respond(req.id, { result: await handlers.readResource({ uri: readParams.uri }) });
164
+ return;
165
+ }
166
+ case "resources/list":
167
+ if (!handlers.listResources) {
168
+ errorResponse(req.id, JSONRPC_ERROR.methodNotFound, "resources/list is not supported by this host");
169
+ return;
170
+ }
171
+ respond(req.id, { result: await handlers.listResources(params) ?? null });
172
+ return;
173
+ case "openLink": {
174
+ if (!handlers.openLink) {
175
+ errorResponse(req.id, JSONRPC_ERROR.methodNotFound, "openLink is not supported by this host");
176
+ return;
177
+ }
178
+ const linkParams = params ?? {};
179
+ if (typeof linkParams.url !== "string") {
180
+ errorResponse(req.id, JSONRPC_ERROR.invalidParams, "openLink requires a string 'url'");
181
+ return;
182
+ }
183
+ let linkProtocol;
184
+ try {
185
+ linkProtocol = new URL(linkParams.url).protocol;
186
+ } catch {
187
+ errorResponse(req.id, JSONRPC_ERROR.invalidParams, "openLink requires a valid URL");
188
+ return;
189
+ }
190
+ if (linkProtocol !== "https:" && linkProtocol !== "http:") {
191
+ errorResponse(req.id, JSONRPC_ERROR.invalidParams, "openLink only accepts http(s) URLs");
192
+ return;
193
+ }
194
+ respond(req.id, { result: await handlers.openLink({ url: linkParams.url }) });
195
+ return;
196
+ }
197
+ case "sendMessage":
198
+ if (!handlers.sendMessage) {
199
+ errorResponse(req.id, JSONRPC_ERROR.methodNotFound, "sendMessage is not supported by this host");
200
+ return;
201
+ }
202
+ respond(req.id, { result: await handlers.sendMessage(params) ?? null });
203
+ return;
204
+ case "updateModelContext":
205
+ if (!handlers.updateModelContext) {
206
+ errorResponse(req.id, JSONRPC_ERROR.methodNotFound, "updateModelContext is not supported by this host");
207
+ return;
208
+ }
209
+ respond(req.id, { result: await handlers.updateModelContext(params) ?? null });
210
+ return;
211
+ case "requestDisplayMode": {
212
+ if (!handlers.requestDisplayMode) {
213
+ errorResponse(req.id, JSONRPC_ERROR.methodNotFound, "requestDisplayMode is not supported by this host");
214
+ return;
215
+ }
216
+ const modeParams = params ?? {};
217
+ if (!isMcpAppDisplayMode(modeParams.mode)) {
218
+ errorResponse(req.id, JSONRPC_ERROR.invalidParams, "requestDisplayMode requires a valid 'mode'");
219
+ return;
220
+ }
221
+ respond(req.id, { result: await handlers.requestDisplayMode({ mode: modeParams.mode }) });
222
+ return;
223
+ }
224
+ default: errorResponse(req.id, JSONRPC_ERROR.methodNotFound, `Unknown method: ${req.method}`);
225
+ }
226
+ } catch (err) {
227
+ const error = err instanceof Error ? err : new Error(String(err));
228
+ reportError(error);
229
+ errorResponse(req.id, JSONRPC_ERROR.internalError, error.message);
230
+ }
231
+ };
232
+ const handleNotification = (note) => {
233
+ try {
234
+ switch (normalizeMethod(note.method)) {
235
+ case "notifications/initialized":
236
+ handlers.onInitialized?.(initializeParams);
237
+ return;
238
+ case "notifications/size_changed": {
239
+ const p = note.params ?? {};
240
+ handlers.onSizeChange?.({
241
+ ...typeof p.width === "number" ? { width: p.width } : {},
242
+ ...typeof p.height === "number" ? { height: p.height } : {}
243
+ });
244
+ return;
245
+ }
246
+ case "notifications/log":
247
+ handlers.onLog?.(note.params);
248
+ return;
249
+ case "notifications/request_teardown":
250
+ handlers.onRequestTeardown?.(note.params);
251
+ return;
252
+ case "notifications/error": {
253
+ const p = note.params ?? {};
254
+ reportError(new Error(typeof p.message === "string" ? p.message : "Widget error"));
255
+ return;
256
+ }
257
+ default: return;
258
+ }
259
+ } catch (err) {
260
+ const error = err instanceof Error ? err : new Error(String(err));
261
+ reportError(error);
262
+ }
263
+ };
264
+ const onMessage = (event) => {
265
+ if (disposed) return;
266
+ if (!isJsonRpcMessage(event.data)) return;
267
+ const msg = event.data;
268
+ if (isRequest(msg)) handleRequest(msg);
269
+ else if (isNotification(msg)) handleNotification(msg);
270
+ };
271
+ return {
272
+ onMessage,
273
+ dispose: () => {
274
+ disposed = true;
275
+ },
276
+ notifyToolInput: (input) => {
277
+ post({
278
+ jsonrpc: "2.0",
279
+ method: "notifications/tools/call/input",
280
+ params: { input }
281
+ });
282
+ post({
283
+ jsonrpc: "2.0",
284
+ method: "ui/notifications/tool-input",
285
+ params: isRecord(input) ? { arguments: input } : {}
286
+ });
287
+ },
288
+ notifyToolResult: (result) => {
289
+ post({
290
+ jsonrpc: "2.0",
291
+ method: "notifications/tools/call/result",
292
+ params: { result }
293
+ });
294
+ post({
295
+ jsonrpc: "2.0",
296
+ method: "ui/notifications/tool-result",
297
+ params: isRecord(result) ? result : { content: [{
298
+ type: "text",
299
+ text: String(result)
300
+ }] }
301
+ });
302
+ },
303
+ notifyHostContextChanged: (ctx) => {
304
+ post({
305
+ jsonrpc: "2.0",
306
+ method: "notifications/host_context/changed",
307
+ params: ctx
308
+ });
309
+ post({
310
+ jsonrpc: "2.0",
311
+ method: "ui/notifications/host-context-changed",
312
+ params: ctx
313
+ });
314
+ }
315
+ };
316
+ }
317
+ export { createMcpAppBridge };
318
+
319
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","names":[],"sources":["../../src/mcp-apps/bridge.ts"],"sourcesContent":["import type { SandboxHostFrame } from \"../sandbox-host/SandboxHost\";\nimport { invokeUserCallback } from \"@ulearning/ai-core/internal\";\nimport {\n MCP_APP_PROTOCOL_VERSION,\n type McpAppBridgeHandlers,\n type McpAppDisplayMode,\n type McpAppHostContext,\n type McpAppHostInfo,\n type McpAppInitializeParams,\n type McpAppJsonRpcMessage,\n type McpAppJsonRpcNotification,\n type McpAppJsonRpcRequest,\n type McpAppJsonRpcResponse,\n} from \"./types\";\nimport { isRecord } from \"@ulearning/ai-core/internal\";\n\nconst VALID_DISPLAY_MODES = [\n \"inline\",\n \"fullscreen\",\n \"pip\",\n] as const satisfies readonly McpAppDisplayMode[];\n\nfunction isMcpAppDisplayMode(value: unknown): value is McpAppDisplayMode {\n return VALID_DISPLAY_MODES.some((mode) => mode === value);\n}\n\nfunction isAppInfo(\n value: unknown,\n): value is NonNullable<McpAppInitializeParams[\"appInfo\"]> {\n return (\n isRecord(value) &&\n typeof value.name === \"string\" &&\n typeof value.version === \"string\"\n );\n}\n\nfunction getAppCapabilities(\n value: unknown,\n): McpAppInitializeParams[\"appCapabilities\"] {\n if (!isRecord(value)) return undefined;\n const { availableDisplayModes, ...rest } = value;\n return {\n ...rest,\n // Object.values reads only the entries present, so a sparse list claiming a huge length stays cheap, and the list's own methods are never called.\n ...(Array.isArray(availableDisplayModes)\n ? {\n availableDisplayModes: Object.values(availableDisplayModes).filter(\n isMcpAppDisplayMode,\n ),\n }\n : {}),\n };\n}\n\nfunction getInitializeParams(params: unknown): McpAppInitializeParams {\n if (!isRecord(params)) return {};\n const appCapabilities = getAppCapabilities(params.appCapabilities);\n return {\n ...(isAppInfo(params.appInfo) ? { appInfo: params.appInfo } : {}),\n ...(appCapabilities ? { appCapabilities } : {}),\n ...(typeof params.protocolVersion === \"string\"\n ? { protocolVersion: params.protocolVersion }\n : {}),\n };\n}\n\nexport type McpAppBridgeFrame = SandboxHostFrame;\n\nexport type CreateMcpAppBridgeOptions = {\n frame: McpAppBridgeFrame;\n handlers?: McpAppBridgeHandlers | undefined;\n hostInfo?: McpAppHostInfo | undefined;\n hostContext?: McpAppHostContext | undefined;\n};\n\nexport type McpAppBridge = {\n onMessage: (event: MessageEvent) => void;\n dispose: () => void;\n notifyToolInput: (input: unknown) => void;\n notifyToolResult: (result: unknown) => void;\n notifyHostContextChanged: (hostContext: McpAppHostContext) => void;\n};\n\nconst DEFAULT_HOST_INFO: McpAppHostInfo = {\n name: \"assistant-ui\",\n version: \"0.1\",\n};\n\n// Accept both the legacy method names and the MCP-UI 2026-01-26 names that\n// `ui/*` capable widgets (e.g. xmcp's host-bridge) emit. Normalize on input\n// so downstream switch statements only need to know the legacy names.\nconst METHOD_ALIASES: Record<string, string> = {\n \"ui/notifications/initialized\": \"notifications/initialized\",\n \"ui/notifications/size-changed\": \"notifications/size_changed\",\n \"ui/request-display-mode\": \"requestDisplayMode\",\n \"ui/open-link\": \"openLink\",\n \"ui/update-model-context\": \"updateModelContext\",\n \"ui/message\": \"sendMessage\",\n \"notifications/message\": \"notifications/log\",\n};\n\nconst normalizeMethod = (method: string): string =>\n METHOD_ALIASES[method] ?? method;\n\nconst JSONRPC_ERROR = {\n parseError: -32700,\n invalidRequest: -32600,\n methodNotFound: -32601,\n invalidParams: -32602,\n internalError: -32603,\n} as const;\n\nfunction isJsonRpcMessage(value: unknown): value is McpAppJsonRpcMessage {\n if (!value || typeof value !== \"object\") return false;\n const v = value as Record<string, unknown>;\n return v.jsonrpc === \"2.0\" && typeof v.method === \"string\";\n}\n\nfunction isRequest(msg: McpAppJsonRpcMessage): msg is McpAppJsonRpcRequest {\n return \"id\" in msg;\n}\n\nfunction isNotification(\n msg: McpAppJsonRpcMessage,\n): msg is McpAppJsonRpcNotification {\n return !(\"id\" in msg);\n}\n\nexport function createMcpAppBridge(\n opts: CreateMcpAppBridgeOptions,\n): McpAppBridge {\n const {\n frame,\n handlers = {},\n hostInfo = DEFAULT_HOST_INFO,\n hostContext = {},\n } = opts;\n let disposed = false;\n let initializeParams: McpAppInitializeParams = {};\n\n const post = (msg: McpAppJsonRpcMessage) => {\n if (disposed) return;\n frame.sendMessage(msg);\n };\n\n const respond = (\n id: McpAppJsonRpcRequest[\"id\"],\n payload:\n | { result: unknown }\n | { error: { code: number; message: string; data?: unknown } },\n ) => {\n const res: McpAppJsonRpcResponse = {\n jsonrpc: \"2.0\",\n id,\n ...payload,\n };\n post(res);\n };\n\n const errorResponse = (\n id: McpAppJsonRpcRequest[\"id\"],\n code: number,\n message: string,\n data?: unknown,\n ) => {\n respond(id, {\n error: {\n code,\n message,\n ...(data !== undefined ? { data } : {}),\n },\n });\n };\n\n const reportError = (error: Error) => {\n if (disposed) return;\n invokeUserCallback(\n \"assistant-ui\",\n \"MCP App onError\",\n handlers.onError?.bind(handlers),\n error,\n );\n };\n\n const handleRequest = async (req: McpAppJsonRpcRequest) => {\n try {\n const params = req.params;\n\n switch (normalizeMethod(req.method)) {\n case \"ui/initialize\": {\n initializeParams = getInitializeParams(params);\n const requestedProtocolVersion =\n initializeParams.protocolVersion ?? MCP_APP_PROTOCOL_VERSION;\n respond(req.id, {\n result: {\n protocolVersion: requestedProtocolVersion,\n host: hostInfo,\n hostInfo,\n hostContext,\n capabilities: {\n tools: handlers.callTool ? {} : undefined,\n resources:\n handlers.readResource || handlers.listResources\n ? {}\n : undefined,\n ui: {\n sendMessage: !!handlers.sendMessage,\n openLink: !!handlers.openLink,\n requestDisplayMode: !!handlers.requestDisplayMode,\n updateModelContext: !!handlers.updateModelContext,\n },\n },\n hostCapabilities: {\n ...(handlers.openLink ? { openLinks: {} } : {}),\n ...(handlers.callTool ? { serverTools: {} } : {}),\n ...(handlers.readResource || handlers.listResources\n ? { serverResources: {} }\n : {}),\n ...(handlers.updateModelContext\n ? { updateModelContext: { text: {} } }\n : {}),\n ...(handlers.sendMessage ? { message: { text: {} } } : {}),\n ...(handlers.onLog ? { logging: {} } : {}),\n },\n },\n });\n return;\n }\n\n case \"tools/call\": {\n if (!handlers.callTool) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.methodNotFound,\n \"tools/call is not supported by this host\",\n );\n return;\n }\n const callParams = (params ?? {}) as {\n name?: unknown;\n arguments?: unknown;\n };\n if (typeof callParams.name !== \"string\") {\n errorResponse(\n req.id,\n JSONRPC_ERROR.invalidParams,\n \"tools/call requires a string 'name'\",\n );\n return;\n }\n if (\n handlers.allowedTools &&\n !handlers.allowedTools.includes(callParams.name)\n ) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.invalidParams,\n `tool '${callParams.name}' is not allowed for this app`,\n );\n return;\n }\n let callArgs: Record<string, unknown> | undefined;\n if (callParams.arguments !== undefined) {\n if (\n callParams.arguments === null ||\n typeof callParams.arguments !== \"object\" ||\n Array.isArray(callParams.arguments)\n ) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.invalidParams,\n \"tools/call 'arguments' must be an object\",\n );\n return;\n }\n callArgs = callParams.arguments as Record<string, unknown>;\n }\n const result = await handlers.callTool({\n name: callParams.name,\n ...(callArgs !== undefined ? { arguments: callArgs } : {}),\n });\n respond(req.id, { result });\n return;\n }\n\n case \"resources/read\": {\n if (!handlers.readResource) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.methodNotFound,\n \"resources/read is not supported by this host\",\n );\n return;\n }\n const readParams = (params ?? {}) as { uri?: unknown };\n if (typeof readParams.uri !== \"string\") {\n errorResponse(\n req.id,\n JSONRPC_ERROR.invalidParams,\n \"resources/read requires a string 'uri'\",\n );\n return;\n }\n respond(req.id, {\n result: await handlers.readResource({ uri: readParams.uri }),\n });\n return;\n }\n\n case \"resources/list\": {\n if (!handlers.listResources) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.methodNotFound,\n \"resources/list is not supported by this host\",\n );\n return;\n }\n respond(req.id, {\n result: (await handlers.listResources(params)) ?? null,\n });\n return;\n }\n\n case \"openLink\": {\n if (!handlers.openLink) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.methodNotFound,\n \"openLink is not supported by this host\",\n );\n return;\n }\n const linkParams = (params ?? {}) as { url?: unknown };\n if (typeof linkParams.url !== \"string\") {\n errorResponse(\n req.id,\n JSONRPC_ERROR.invalidParams,\n \"openLink requires a string 'url'\",\n );\n return;\n }\n let linkProtocol: string;\n try {\n linkProtocol = new URL(linkParams.url).protocol;\n } catch {\n errorResponse(\n req.id,\n JSONRPC_ERROR.invalidParams,\n \"openLink requires a valid URL\",\n );\n return;\n }\n if (linkProtocol !== \"https:\" && linkProtocol !== \"http:\") {\n errorResponse(\n req.id,\n JSONRPC_ERROR.invalidParams,\n \"openLink only accepts http(s) URLs\",\n );\n return;\n }\n respond(req.id, {\n result: await handlers.openLink({ url: linkParams.url }),\n });\n return;\n }\n\n case \"sendMessage\": {\n if (!handlers.sendMessage) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.methodNotFound,\n \"sendMessage is not supported by this host\",\n );\n return;\n }\n respond(req.id, {\n result: (await handlers.sendMessage(params)) ?? null,\n });\n return;\n }\n\n case \"updateModelContext\": {\n if (!handlers.updateModelContext) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.methodNotFound,\n \"updateModelContext is not supported by this host\",\n );\n return;\n }\n respond(req.id, {\n result: (await handlers.updateModelContext(params)) ?? null,\n });\n return;\n }\n\n case \"requestDisplayMode\": {\n if (!handlers.requestDisplayMode) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.methodNotFound,\n \"requestDisplayMode is not supported by this host\",\n );\n return;\n }\n const modeParams = (params ?? {}) as { mode?: unknown };\n if (!isMcpAppDisplayMode(modeParams.mode)) {\n errorResponse(\n req.id,\n JSONRPC_ERROR.invalidParams,\n \"requestDisplayMode requires a valid 'mode'\",\n );\n return;\n }\n respond(req.id, {\n result: await handlers.requestDisplayMode({\n mode: modeParams.mode,\n }),\n });\n return;\n }\n\n default: {\n errorResponse(\n req.id,\n JSONRPC_ERROR.methodNotFound,\n `Unknown method: ${req.method}`,\n );\n }\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n reportError(error);\n errorResponse(req.id, JSONRPC_ERROR.internalError, error.message);\n }\n };\n\n const handleNotification = (note: McpAppJsonRpcNotification) => {\n try {\n switch (normalizeMethod(note.method)) {\n case \"notifications/initialized\": {\n handlers.onInitialized?.(initializeParams);\n return;\n }\n case \"notifications/size_changed\": {\n const p = (note.params ?? {}) as { width?: number; height?: number };\n handlers.onSizeChange?.({\n ...(typeof p.width === \"number\" ? { width: p.width } : {}),\n ...(typeof p.height === \"number\" ? { height: p.height } : {}),\n });\n return;\n }\n case \"notifications/log\": {\n handlers.onLog?.(note.params);\n return;\n }\n case \"notifications/request_teardown\": {\n handlers.onRequestTeardown?.(note.params);\n return;\n }\n case \"notifications/error\": {\n const p = (note.params ?? {}) as { message?: string };\n reportError(\n new Error(\n typeof p.message === \"string\" ? p.message : \"Widget error\",\n ),\n );\n return;\n }\n default:\n return;\n }\n } catch (err) {\n const error = err instanceof Error ? err : new Error(String(err));\n reportError(error);\n }\n };\n\n // The host applies the cross-origin guard before delegating; this only\n // validates the JSON-RPC envelope.\n const onMessage = (event: MessageEvent) => {\n if (disposed) return;\n if (!isJsonRpcMessage(event.data)) return;\n\n const msg = event.data;\n if (isRequest(msg)) {\n void handleRequest(msg);\n } else if (isNotification(msg)) {\n handleNotification(msg);\n }\n };\n\n return {\n onMessage,\n dispose: () => {\n disposed = true;\n },\n notifyToolInput: (input: unknown) => {\n post({\n jsonrpc: \"2.0\",\n method: \"notifications/tools/call/input\",\n params: { input },\n });\n post({\n jsonrpc: \"2.0\",\n method: \"ui/notifications/tool-input\",\n params: isRecord(input) ? { arguments: input } : {},\n });\n },\n notifyToolResult: (result: unknown) => {\n post({\n jsonrpc: \"2.0\",\n method: \"notifications/tools/call/result\",\n params: { result },\n });\n post({\n jsonrpc: \"2.0\",\n method: \"ui/notifications/tool-result\",\n params: isRecord(result)\n ? result\n : { content: [{ type: \"text\", text: String(result) }] },\n });\n },\n notifyHostContextChanged: (ctx: McpAppHostContext) => {\n post({\n jsonrpc: \"2.0\",\n method: \"notifications/host_context/changed\",\n params: ctx,\n });\n post({\n jsonrpc: \"2.0\",\n method: \"ui/notifications/host-context-changed\",\n params: ctx,\n });\n },\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpAppResourceCSP } from "./types.js";
2
+ export declare const buildMcpAppCsp: (csp?: McpAppResourceCSP) => string;
3
+ export declare const applyMcpAppCsp: (html: string, csp?: McpAppResourceCSP) => string;
4
+ //# sourceMappingURL=csp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csp.d.ts","mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAS;AAyChD,eAAO,MAAM,cAAc,GAAI,MAAM,iBAAiB,KAAG,MAyBxD;AAiDD,eAAO,MAAM,cAAc,GACzB,MAAM,MAAM,EACZ,MAAM,iBAAiB,KACtB,MAKF","names":[],"ignoreList":[],"sources":["../../src/mcp-apps/csp.ts"],"sourcesContent":[null]}