@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,92 @@
1
+ // src/mcp-apps/csp.ts
2
+ const isAllowedOrigin = (value, allowWebSocket) => {
3
+ if (!(allowWebSocket ? /^(?:https?|wss?):\/\//i : /^https?:\/\//i).test(value) || /[\s;'"`,]/.test(value)) return false;
4
+ try {
5
+ const url = new URL(value.replace("://*.", "://wildcard."));
6
+ return url.username === "" && url.password === "" && url.pathname === "/" && url.search === "" && url.hash === "";
7
+ } catch {
8
+ return false;
9
+ }
10
+ };
11
+ const getAllowedOrigins = (values, allowWebSocket = false) => Array.isArray(values) ? [...new Set(values.filter((value) => typeof value === "string" && isAllowedOrigin(value, allowWebSocket)))] : [];
12
+ const directive = (name, values) => `${name} ${values.join(" ")}`;
13
+ const buildMcpAppCsp = (csp) => {
14
+ const connectDomains = getAllowedOrigins(csp?.connectDomains, true);
15
+ const resourceDomains = getAllowedOrigins(csp?.resourceDomains);
16
+ const frameDomains = getAllowedOrigins(csp?.frameDomains);
17
+ const baseUriDomains = getAllowedOrigins(csp?.baseUriDomains);
18
+ return [
19
+ "default-src 'none'",
20
+ directive("script-src", [
21
+ "'self'",
22
+ "'unsafe-inline'",
23
+ ...resourceDomains
24
+ ]),
25
+ directive("style-src", [
26
+ "'self'",
27
+ "'unsafe-inline'",
28
+ ...resourceDomains
29
+ ]),
30
+ directive("connect-src", connectDomains.length > 0 ? ["'self'", ...connectDomains] : ["'none'"]),
31
+ directive("img-src", [
32
+ "'self'",
33
+ "data:",
34
+ ...resourceDomains
35
+ ]),
36
+ directive("font-src", ["'self'", ...resourceDomains]),
37
+ directive("media-src", [
38
+ "'self'",
39
+ "data:",
40
+ ...resourceDomains
41
+ ]),
42
+ directive("frame-src", frameDomains.length > 0 ? frameDomains : ["'none'"]),
43
+ directive("base-uri", baseUriDomains.length > 0 ? baseUriDomains : ["'self'"]),
44
+ "object-src 'none'",
45
+ "form-action 'none'"
46
+ ].join("; ");
47
+ };
48
+ const findDoctypeEnd = (html) => {
49
+ let offset = 0;
50
+ while (offset < html.length) {
51
+ const whitespace = html.slice(offset).match(/^[\t\n\f\r ]+/)?.[0];
52
+ if (whitespace) {
53
+ offset += whitespace.length;
54
+ continue;
55
+ }
56
+ if (html.startsWith("<!--", offset)) {
57
+ if (html.startsWith("<!-->", offset)) {
58
+ offset += 5;
59
+ continue;
60
+ }
61
+ if (html.startsWith("<!--->", offset)) {
62
+ offset += 6;
63
+ continue;
64
+ }
65
+ const commentEnd = html.indexOf("-->", offset + 4);
66
+ const bangCommentEnd = html.indexOf("--!>", offset + 4);
67
+ if (commentEnd === -1 && bangCommentEnd === -1) return 0;
68
+ offset = bangCommentEnd !== -1 && (commentEnd === -1 || bangCommentEnd < commentEnd) ? bangCommentEnd + 4 : commentEnd + 3;
69
+ continue;
70
+ }
71
+ if (html.slice(offset, offset + 9).toLowerCase() === "<!doctype") break;
72
+ if (html.startsWith("<?", offset) || html.startsWith("<!", offset)) {
73
+ const bogusCommentEnd = html.indexOf(">", offset + 2);
74
+ if (bogusCommentEnd === -1) return 0;
75
+ offset = bogusCommentEnd + 1;
76
+ continue;
77
+ }
78
+ break;
79
+ }
80
+ if (html.slice(offset, offset + 9).toLowerCase() !== "<!doctype") return offset;
81
+ const end = html.indexOf(">", offset + 9);
82
+ return end === -1 ? 0 : end + 1;
83
+ };
84
+ const applyMcpAppCsp = (html, csp) => {
85
+ const normalizedHtml = html.charCodeAt(0) === 65279 ? html.slice(1) : html;
86
+ const meta = `<meta http-equiv="Content-Security-Policy" content="${buildMcpAppCsp(csp)}">`;
87
+ const insertionPoint = findDoctypeEnd(normalizedHtml);
88
+ return `${normalizedHtml.slice(0, insertionPoint)}${meta}${normalizedHtml.slice(insertionPoint)}`;
89
+ };
90
+ export { applyMcpAppCsp, buildMcpAppCsp };
91
+
92
+ //# sourceMappingURL=csp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"csp.js","names":[],"sources":["../../src/mcp-apps/csp.ts"],"sourcesContent":["import type { McpAppResourceCSP } from \"./types\";\n\nconst isAllowedOrigin = (value: string, allowWebSocket: boolean): boolean => {\n const scheme = allowWebSocket ? /^(?:https?|wss?):\\/\\//i : /^https?:\\/\\//i;\n if (!scheme.test(value) || /[\\s;'\"`,]/.test(value)) {\n return false;\n }\n\n try {\n const url = new URL(value.replace(\"://*.\", \"://wildcard.\"));\n return (\n url.username === \"\" &&\n url.password === \"\" &&\n url.pathname === \"/\" &&\n url.search === \"\" &&\n url.hash === \"\"\n );\n } catch {\n return false;\n }\n};\n\nconst getAllowedOrigins = (\n values: unknown,\n allowWebSocket = false,\n): string[] =>\n Array.isArray(values)\n ? [\n ...new Set(\n values.filter(\n (value): value is string =>\n typeof value === \"string\" &&\n isAllowedOrigin(value, allowWebSocket),\n ),\n ),\n ]\n : [];\n\nconst directive = (name: string, values: readonly string[]) =>\n `${name} ${values.join(\" \")}`;\n\nexport const buildMcpAppCsp = (csp?: McpAppResourceCSP): string => {\n const connectDomains = getAllowedOrigins(csp?.connectDomains, true);\n const resourceDomains = getAllowedOrigins(csp?.resourceDomains);\n const frameDomains = getAllowedOrigins(csp?.frameDomains);\n const baseUriDomains = getAllowedOrigins(csp?.baseUriDomains);\n\n return [\n \"default-src 'none'\",\n directive(\"script-src\", [\"'self'\", \"'unsafe-inline'\", ...resourceDomains]),\n directive(\"style-src\", [\"'self'\", \"'unsafe-inline'\", ...resourceDomains]),\n directive(\n \"connect-src\",\n connectDomains.length > 0 ? [\"'self'\", ...connectDomains] : [\"'none'\"],\n ),\n directive(\"img-src\", [\"'self'\", \"data:\", ...resourceDomains]),\n directive(\"font-src\", [\"'self'\", ...resourceDomains]),\n directive(\"media-src\", [\"'self'\", \"data:\", ...resourceDomains]),\n directive(\"frame-src\", frameDomains.length > 0 ? frameDomains : [\"'none'\"]),\n directive(\n \"base-uri\",\n baseUriDomains.length > 0 ? baseUriDomains : [\"'self'\"],\n ),\n \"object-src 'none'\",\n \"form-action 'none'\",\n ].join(\"; \");\n};\n\nconst findDoctypeEnd = (html: string): number => {\n let offset = 0;\n\n while (offset < html.length) {\n const whitespace = html.slice(offset).match(/^[\\t\\n\\f\\r ]+/)?.[0];\n if (whitespace) {\n offset += whitespace.length;\n continue;\n }\n if (html.startsWith(\"<!--\", offset)) {\n if (html.startsWith(\"<!-->\", offset)) {\n offset += 5;\n continue;\n }\n if (html.startsWith(\"<!--->\", offset)) {\n offset += 6;\n continue;\n }\n const commentEnd = html.indexOf(\"-->\", offset + 4);\n const bangCommentEnd = html.indexOf(\"--!>\", offset + 4);\n if (commentEnd === -1 && bangCommentEnd === -1) return 0;\n offset =\n bangCommentEnd !== -1 &&\n (commentEnd === -1 || bangCommentEnd < commentEnd)\n ? bangCommentEnd + 4\n : commentEnd + 3;\n continue;\n }\n if (html.slice(offset, offset + 9).toLowerCase() === \"<!doctype\") {\n break;\n }\n if (html.startsWith(\"<?\", offset) || html.startsWith(\"<!\", offset)) {\n const bogusCommentEnd = html.indexOf(\">\", offset + 2);\n if (bogusCommentEnd === -1) return 0;\n offset = bogusCommentEnd + 1;\n continue;\n }\n break;\n }\n\n if (html.slice(offset, offset + 9).toLowerCase() !== \"<!doctype\") {\n return offset;\n }\n const end = html.indexOf(\">\", offset + 9);\n return end === -1 ? 0 : end + 1;\n};\n\nexport const applyMcpAppCsp = (\n html: string,\n csp?: McpAppResourceCSP,\n): string => {\n const normalizedHtml = html.charCodeAt(0) === 0xfeff ? html.slice(1) : html;\n const meta = `<meta http-equiv=\"Content-Security-Policy\" content=\"${buildMcpAppCsp(csp)}\">`;\n const insertionPoint = findDoctypeEnd(normalizedHtml);\n return `${normalizedHtml.slice(0, insertionPoint)}${meta}${normalizedHtml.slice(insertionPoint)}`;\n};\n"],"mappings":";AAEA,MAAM,mBAAmB,OAAe,mBAAqC;CAE3E,IAAI,EADW,iBAAiB,2BAA2B,gBAAA,CAC/C,KAAK,KAAK,KAAK,YAAY,KAAK,KAAK,GAC/C,OAAO;CAGT,IAAI;EACF,MAAM,MAAM,IAAI,IAAI,MAAM,QAAQ,SAAS,cAAc,CAAC;EAC1D,OACE,IAAI,aAAa,MACjB,IAAI,aAAa,MACjB,IAAI,aAAa,OACjB,IAAI,WAAW,MACf,IAAI,SAAS;CAEjB,QAAQ;EACN,OAAO;CACT;AACF;AAEA,MAAM,qBACJ,QACA,iBAAiB,UAEjB,MAAM,QAAQ,MAAM,IAChB,CACE,GAAG,IAAI,IACL,OAAO,QACJ,UACC,OAAO,UAAU,YACjB,gBAAgB,OAAO,cAAc,CACzC,CACF,CACF,IACA,CAAC;AAEP,MAAM,aAAa,MAAc,WAC/B,GAAG,KAAK,GAAG,OAAO,KAAK,GAAG;AAE5B,MAAa,kBAAkB,QAAoC;CACjE,MAAM,iBAAiB,kBAAkB,KAAK,gBAAgB,IAAI;CAClE,MAAM,kBAAkB,kBAAkB,KAAK,eAAe;CAC9D,MAAM,eAAe,kBAAkB,KAAK,YAAY;CACxD,MAAM,iBAAiB,kBAAkB,KAAK,cAAc;CAE5D,OAAO;EACL;EACA,UAAU,cAAc;GAAC;GAAU;GAAmB,GAAG;EAAe,CAAC;EACzE,UAAU,aAAa;GAAC;GAAU;GAAmB,GAAG;EAAe,CAAC;EACxE,UACE,eACA,eAAe,SAAS,IAAI,CAAC,UAAU,GAAG,cAAc,IAAI,CAAC,QAAQ,CACvE;EACA,UAAU,WAAW;GAAC;GAAU;GAAS,GAAG;EAAe,CAAC;EAC5D,UAAU,YAAY,CAAC,UAAU,GAAG,eAAe,CAAC;EACpD,UAAU,aAAa;GAAC;GAAU;GAAS,GAAG;EAAe,CAAC;EAC9D,UAAU,aAAa,aAAa,SAAS,IAAI,eAAe,CAAC,QAAQ,CAAC;EAC1E,UACE,YACA,eAAe,SAAS,IAAI,iBAAiB,CAAC,QAAQ,CACxD;EACA;EACA;CACF,CAAC,CAAC,KAAK,IAAI;AACb;AAEA,MAAM,kBAAkB,SAAyB;CAC/C,IAAI,SAAS;CAEb,OAAO,SAAS,KAAK,QAAQ;EAC3B,MAAM,aAAa,KAAK,MAAM,MAAM,CAAC,CAAC,MAAM,eAAe,CAAC,GAAG;EAC/D,IAAI,YAAY;GACd,UAAU,WAAW;GACrB;EACF;EACA,IAAI,KAAK,WAAW,QAAQ,MAAM,GAAG;GACnC,IAAI,KAAK,WAAW,SAAS,MAAM,GAAG;IACpC,UAAU;IACV;GACF;GACA,IAAI,KAAK,WAAW,UAAU,MAAM,GAAG;IACrC,UAAU;IACV;GACF;GACA,MAAM,aAAa,KAAK,QAAQ,OAAO,SAAS,CAAC;GACjD,MAAM,iBAAiB,KAAK,QAAQ,QAAQ,SAAS,CAAC;GACtD,IAAI,eAAe,MAAM,mBAAmB,IAAI,OAAO;GACvD,SACE,mBAAmB,OAClB,eAAe,MAAM,iBAAiB,cACnC,iBAAiB,IACjB,aAAa;GACnB;EACF;EACA,IAAI,KAAK,MAAM,QAAQ,SAAS,CAAC,CAAC,CAAC,YAAY,MAAM,aACnD;EAEF,IAAI,KAAK,WAAW,MAAM,MAAM,KAAK,KAAK,WAAW,MAAM,MAAM,GAAG;GAClE,MAAM,kBAAkB,KAAK,QAAQ,KAAK,SAAS,CAAC;GACpD,IAAI,oBAAoB,IAAI,OAAO;GACnC,SAAS,kBAAkB;GAC3B;EACF;EACA;CACF;CAEA,IAAI,KAAK,MAAM,QAAQ,SAAS,CAAC,CAAC,CAAC,YAAY,MAAM,aACnD,OAAO;CAET,MAAM,MAAM,KAAK,QAAQ,KAAK,SAAS,CAAC;CACxC,OAAO,QAAQ,KAAK,IAAI,MAAM;AAChC;AAEA,MAAa,kBACX,MACA,QACW;CACX,MAAM,iBAAiB,KAAK,WAAW,CAAC,MAAM,QAAS,KAAK,MAAM,CAAC,IAAI;CACvE,MAAM,OAAO,uDAAuD,eAAe,GAAG,EAAE;CACxF,MAAM,iBAAiB,eAAe,cAAc;CACpD,OAAO,GAAG,eAAe,MAAM,GAAG,cAAc,IAAI,OAAO,eAAe,MAAM,cAAc;AAChG"}
@@ -0,0 +1,5 @@
1
+ export { McpAppRenderer, type McpAppPartOptions, type McpAppRendererOptions, } from "./McpAppRenderer.js";
2
+ export { McpAppsRemoteHost } from "./McpAppsRemoteHost.js";
3
+ export { getMcpAppFromToolPart } from "./utils.js";
4
+ export type { McpAppMetadata, McpAppResource, McpAppResourceMeta, McpAppResourceCSP, McpAppSandboxConfig, McpAppHostInfo, McpAppHostContext, McpAppDisplayMode, McpAppsHost, McpAppsRemoteHostOptions, McpAppToolCallParams, McpAppInitializeParams, McpAppBridgeHandlers, ToolCallMessagePartMcpMetadata, } from "./types.js";
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","mappings":"AAAA,OAAO,EACL,cAAc,EACd,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,GAC3B,MAAM,qBAAkB;AACzB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAqB;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAS;AAC/C,YAAY,EACV,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,8BAA8B,GAC/B,MAAM,YAAS","names":[],"ignoreList":[],"sources":["../../src/mcp-apps/index.ts"],"sourcesContent":[null]}
@@ -0,0 +1,4 @@
1
+ import { getMcpAppFromToolPart } from "./utils.js";
2
+ import { McpAppRenderer } from "./McpAppRenderer.js";
3
+ import { McpAppsRemoteHost } from "./McpAppsRemoteHost.js";
4
+ export { McpAppRenderer, McpAppsRemoteHost, getMcpAppFromToolPart };
@@ -0,0 +1,161 @@
1
+ import type { McpAppMetadata, ToolCallMessagePartMcpMetadata } from "@ulearning/ai-core";
2
+ import type { SandboxHostConfig } from "../sandbox-host/SandboxHost.js";
3
+ export type { McpAppMetadata, ToolCallMessagePartMcpMetadata };
4
+ export declare const MCP_APP_MIME_TYPE: "text/html;profile=mcp-app";
5
+ export declare const MCP_APP_PROTOCOL_VERSION: "0.1";
6
+ export type McpAppResourceCSP = {
7
+ connectDomains?: string[];
8
+ resourceDomains?: string[];
9
+ frameDomains?: string[];
10
+ baseUriDomains?: string[];
11
+ [k: string]: unknown;
12
+ };
13
+ export type McpAppResourceMeta = {
14
+ prefersBorder?: boolean;
15
+ csp?: McpAppResourceCSP;
16
+ permissions?: Record<string, unknown>;
17
+ [k: string]: unknown;
18
+ };
19
+ export type McpAppResource = {
20
+ uri: string;
21
+ mimeType: typeof MCP_APP_MIME_TYPE;
22
+ html: string;
23
+ meta?: McpAppResourceMeta;
24
+ };
25
+ export type McpAppDisplayMode = "inline" | "fullscreen" | "pip";
26
+ export type McpAppHostContext = {
27
+ theme?: "light" | "dark";
28
+ displayMode?: McpAppDisplayMode;
29
+ availableDisplayModes?: McpAppDisplayMode[];
30
+ [k: string]: unknown;
31
+ };
32
+ export type McpAppHostInfo = {
33
+ name: string;
34
+ version: string;
35
+ };
36
+ /**
37
+ * What `McpAppRenderer` needs from its host — the data-plane operations
38
+ * the widget can request. Provided by a host resource like
39
+ * `McpAppsRemoteHost`.
40
+ */
41
+ export type McpAppsHost = {
42
+ loadResource: (params: {
43
+ uri: string;
44
+ serverId?: string;
45
+ }) => Promise<McpAppResource>;
46
+ callTool: (params: McpAppToolCallParams & {
47
+ serverId?: string;
48
+ }) => Promise<unknown>;
49
+ readResource: (params: {
50
+ uri: string;
51
+ serverId?: string;
52
+ }) => Promise<unknown>;
53
+ listResources: (params?: unknown) => Promise<unknown>;
54
+ };
55
+ /**
56
+ * Options for `McpAppsRemoteHost`. The host POSTs `{ method, params }` to
57
+ * `url` and expects JSON responses. Params may carry `serverId` for host-side routing. Method names sent:
58
+ * - `mcp-apps/read-resource` (`{ uri, serverId? }`) → `McpAppResource`
59
+ * - `tools/call` (`{ name, arguments?, serverId? }`) → tool result
60
+ * - `resources/read` (`{ uri, serverId? }`) → resource read result
61
+ * - `resources/list` (`{ serverId?, ...params }?`) → list result
62
+ */
63
+ export type McpAppsRemoteHostOptions = {
64
+ url: string;
65
+ fetch?: typeof fetch;
66
+ headers?: Record<string, string> | (() => Record<string, string> | Promise<Record<string, string>>);
67
+ };
68
+ export type McpAppToolCallParams = {
69
+ name: string;
70
+ arguments?: Record<string, unknown>;
71
+ };
72
+ /**
73
+ * The params of the app's `ui/initialize` request, as `onInitialized`
74
+ * receives them. A field that fails validation is omitted, and
75
+ * `availableDisplayModes` keeps only the modes the bridge recognizes.
76
+ */
77
+ export type McpAppInitializeParams = {
78
+ appInfo?: {
79
+ name: string;
80
+ version: string;
81
+ [k: string]: unknown;
82
+ };
83
+ appCapabilities?: {
84
+ availableDisplayModes?: McpAppDisplayMode[];
85
+ [k: string]: unknown;
86
+ };
87
+ protocolVersion?: string;
88
+ };
89
+ export type McpAppBridgeHandlers = {
90
+ allowedTools?: readonly string[];
91
+ callTool?: (params: McpAppToolCallParams) => Promise<unknown> | unknown;
92
+ readResource?: (params: {
93
+ uri: string;
94
+ }) => Promise<unknown> | unknown;
95
+ listResources?: (params?: unknown) => Promise<unknown> | unknown;
96
+ openLink?: (params: {
97
+ url: string;
98
+ }) => Promise<unknown> | unknown;
99
+ sendMessage?: (params: unknown) => Promise<unknown> | unknown;
100
+ updateModelContext?: (params: unknown) => Promise<unknown> | unknown;
101
+ requestDisplayMode?: (params: {
102
+ mode: McpAppDisplayMode;
103
+ }) => Promise<{
104
+ mode: McpAppDisplayMode;
105
+ }> | {
106
+ mode: McpAppDisplayMode;
107
+ };
108
+ onSizeChange?: (params: {
109
+ width?: number;
110
+ height?: number;
111
+ }) => void;
112
+ onInitialized?: (params: McpAppInitializeParams) => void;
113
+ onRequestTeardown?: (params: unknown) => void;
114
+ onLog?: (params: unknown) => void;
115
+ onError?: (error: Error) => void;
116
+ };
117
+ export type McpAppSandboxConfig = SandboxHostConfig;
118
+ export type McpAppFrameProps = {
119
+ app: McpAppMetadata;
120
+ resource: McpAppResource;
121
+ input?: unknown;
122
+ output?: unknown;
123
+ sandbox?: McpAppSandboxConfig | undefined;
124
+ handlers?: McpAppBridgeHandlers | undefined;
125
+ hostInfo?: McpAppHostInfo | undefined;
126
+ hostContext?: McpAppHostContext | undefined;
127
+ /**
128
+ * Upper bound (in pixels) for the auto-resize height driven by the widget's
129
+ * `notifications/size_changed`. Defaults to 800.
130
+ */
131
+ maxHeight?: number | undefined;
132
+ };
133
+ export type McpAppJsonRpcRequest = {
134
+ jsonrpc: "2.0";
135
+ id: string | number;
136
+ method: string;
137
+ params?: unknown;
138
+ };
139
+ export type McpAppJsonRpcNotification = {
140
+ jsonrpc: "2.0";
141
+ method: string;
142
+ params?: unknown;
143
+ };
144
+ export type McpAppJsonRpcError = {
145
+ code: number;
146
+ message: string;
147
+ data?: unknown;
148
+ };
149
+ export type McpAppJsonRpcResponse = {
150
+ jsonrpc: "2.0";
151
+ id: string | number;
152
+ result: unknown;
153
+ error?: never;
154
+ } | {
155
+ jsonrpc: "2.0";
156
+ id: string | number;
157
+ result?: never;
158
+ error: McpAppJsonRpcError;
159
+ };
160
+ export type McpAppJsonRpcMessage = McpAppJsonRpcRequest | McpAppJsonRpcNotification | McpAppJsonRpcResponse;
161
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","mappings":"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","names":[],"ignoreList":[],"sources":["../../src/mcp-apps/types.ts"],"sourcesContent":[null]}
@@ -0,0 +1,6 @@
1
+ // src/mcp-apps/types.ts
2
+ const MCP_APP_MIME_TYPE = "text/html;profile=mcp-app";
3
+ const MCP_APP_PROTOCOL_VERSION = "0.1";
4
+ export { MCP_APP_MIME_TYPE, MCP_APP_PROTOCOL_VERSION };
5
+
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","names":[],"sources":["../../src/mcp-apps/types.ts"],"sourcesContent":["import type {\n McpAppMetadata,\n ToolCallMessagePartMcpMetadata,\n} from \"@ulearning/ai-core\";\nimport type { SandboxHostConfig } from \"../sandbox-host/SandboxHost\";\n\nexport type { McpAppMetadata, ToolCallMessagePartMcpMetadata };\n\nexport const MCP_APP_MIME_TYPE = \"text/html;profile=mcp-app\" as const;\n\nexport const MCP_APP_PROTOCOL_VERSION = \"0.1\" as const;\n\nexport type McpAppResourceCSP = {\n connectDomains?: string[];\n resourceDomains?: string[];\n frameDomains?: string[];\n baseUriDomains?: string[];\n [k: string]: unknown;\n};\n\nexport type McpAppResourceMeta = {\n prefersBorder?: boolean;\n csp?: McpAppResourceCSP;\n permissions?: Record<string, unknown>;\n [k: string]: unknown;\n};\n\nexport type McpAppResource = {\n uri: string;\n mimeType: typeof MCP_APP_MIME_TYPE;\n html: string;\n meta?: McpAppResourceMeta;\n};\n\nexport type McpAppDisplayMode = \"inline\" | \"fullscreen\" | \"pip\";\n\nexport type McpAppHostContext = {\n theme?: \"light\" | \"dark\";\n displayMode?: McpAppDisplayMode;\n availableDisplayModes?: McpAppDisplayMode[];\n [k: string]: unknown;\n};\n\nexport type McpAppHostInfo = {\n name: string;\n version: string;\n};\n\n/**\n * What `McpAppRenderer` needs from its host — the data-plane operations\n * the widget can request. Provided by a host resource like\n * `McpAppsRemoteHost`.\n */\nexport type McpAppsHost = {\n loadResource: (params: {\n uri: string;\n serverId?: string;\n }) => Promise<McpAppResource>;\n callTool: (\n params: McpAppToolCallParams & { serverId?: string },\n ) => Promise<unknown>;\n readResource: (params: {\n uri: string;\n serverId?: string;\n }) => Promise<unknown>;\n listResources: (params?: unknown) => Promise<unknown>;\n};\n\n/**\n * Options for `McpAppsRemoteHost`. The host POSTs `{ method, params }` to\n * `url` and expects JSON responses. Params may carry `serverId` for host-side routing. Method names sent:\n * - `mcp-apps/read-resource` (`{ uri, serverId? }`) → `McpAppResource`\n * - `tools/call` (`{ name, arguments?, serverId? }`) → tool result\n * - `resources/read` (`{ uri, serverId? }`) → resource read result\n * - `resources/list` (`{ serverId?, ...params }?`) → list result\n */\nexport type McpAppsRemoteHostOptions = {\n url: string;\n fetch?: typeof fetch;\n headers?:\n | Record<string, string>\n | (() => Record<string, string> | Promise<Record<string, string>>);\n};\n\nexport type McpAppToolCallParams = {\n name: string;\n arguments?: Record<string, unknown>;\n};\n\n/**\n * The params of the app's `ui/initialize` request, as `onInitialized`\n * receives them. A field that fails validation is omitted, and\n * `availableDisplayModes` keeps only the modes the bridge recognizes.\n */\nexport type McpAppInitializeParams = {\n appInfo?: { name: string; version: string; [k: string]: unknown };\n appCapabilities?: {\n availableDisplayModes?: McpAppDisplayMode[];\n [k: string]: unknown;\n };\n protocolVersion?: string;\n};\n\nexport type McpAppBridgeHandlers = {\n allowedTools?: readonly string[];\n callTool?: (params: McpAppToolCallParams) => Promise<unknown> | unknown;\n readResource?: (params: { uri: string }) => Promise<unknown> | unknown;\n listResources?: (params?: unknown) => Promise<unknown> | unknown;\n openLink?: (params: { url: string }) => Promise<unknown> | unknown;\n sendMessage?: (params: unknown) => Promise<unknown> | unknown;\n updateModelContext?: (params: unknown) => Promise<unknown> | unknown;\n requestDisplayMode?: (params: {\n mode: McpAppDisplayMode;\n }) => Promise<{ mode: McpAppDisplayMode }> | { mode: McpAppDisplayMode };\n onSizeChange?: (params: { width?: number; height?: number }) => void;\n onInitialized?: (params: McpAppInitializeParams) => void;\n onRequestTeardown?: (params: unknown) => void;\n onLog?: (params: unknown) => void;\n onError?: (error: Error) => void;\n};\n\nexport type McpAppSandboxConfig = SandboxHostConfig;\n\nexport type McpAppFrameProps = {\n app: McpAppMetadata;\n resource: McpAppResource;\n input?: unknown;\n output?: unknown;\n sandbox?: McpAppSandboxConfig | undefined;\n handlers?: McpAppBridgeHandlers | undefined;\n hostInfo?: McpAppHostInfo | undefined;\n hostContext?: McpAppHostContext | undefined;\n /**\n * Upper bound (in pixels) for the auto-resize height driven by the widget's\n * `notifications/size_changed`. Defaults to 800.\n */\n maxHeight?: number | undefined;\n};\n\nexport type McpAppJsonRpcRequest = {\n jsonrpc: \"2.0\";\n id: string | number;\n method: string;\n params?: unknown;\n};\n\nexport type McpAppJsonRpcNotification = {\n jsonrpc: \"2.0\";\n method: string;\n params?: unknown;\n};\n\nexport type McpAppJsonRpcError = {\n code: number;\n message: string;\n data?: unknown;\n};\n\nexport type McpAppJsonRpcResponse =\n | {\n jsonrpc: \"2.0\";\n id: string | number;\n result: unknown;\n error?: never;\n }\n | {\n jsonrpc: \"2.0\";\n id: string | number;\n result?: never;\n error: McpAppJsonRpcError;\n };\n\nexport type McpAppJsonRpcMessage =\n | McpAppJsonRpcRequest\n | McpAppJsonRpcNotification\n | McpAppJsonRpcResponse;\n"],"mappings":";AAQA,MAAa,oBAAoB;AAEjC,MAAa,2BAA2B"}
@@ -0,0 +1,12 @@
1
+ import { type McpAppMetadata, type ToolCallMessagePart } from "@ulearning/ai-core";
2
+ type ToolPartLike = Pick<ToolCallMessagePart, "mcp">;
3
+ /**
4
+ * Returns MCP app metadata for a tool-call part that points at a `ui://`
5
+ * resource.
6
+ *
7
+ * Returns `undefined` when the part has no MCP app metadata or the metadata
8
+ * does not reference an assistant-ui MCP app resource.
9
+ */
10
+ export declare function getMcpAppFromToolPart(part: ToolPartLike): McpAppMetadata | undefined;
11
+ export {};
12
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACzB,MAAM,oBAAoB;AAE3B,KAAK,YAAY,GAAG,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC;AAEpD;;;;;;;AAOA,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,YAAY,GACjB,cAAc,GAAG,SAAS","names":[],"ignoreList":[],"sources":["../../src/mcp-apps/utils.ts"],"sourcesContent":[null]}
@@ -0,0 +1,18 @@
1
+ import { isMcpAppUri } from "@ulearning/ai-core";
2
+ // src/mcp-apps/utils.ts
3
+ /**
4
+ * Returns MCP app metadata for a tool-call part that points at a `ui://`
5
+ * resource.
6
+ *
7
+ * Returns `undefined` when the part has no MCP app metadata or the metadata
8
+ * does not reference an assistant-ui MCP app resource.
9
+ */
10
+ function getMcpAppFromToolPart(part) {
11
+ const app = part.mcp?.app;
12
+ if (!app) return void 0;
13
+ if (!isMcpAppUri(app.resourceUri)) return void 0;
14
+ return app;
15
+ }
16
+ export { getMcpAppFromToolPart };
17
+
18
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","names":[],"sources":["../../src/mcp-apps/utils.ts"],"sourcesContent":["import {\n isMcpAppUri,\n type McpAppMetadata,\n type ToolCallMessagePart,\n} from \"@ulearning/ai-core\";\n\ntype ToolPartLike = Pick<ToolCallMessagePart, \"mcp\">;\n\n/**\n * Returns MCP app metadata for a tool-call part that points at a `ui://`\n * resource.\n *\n * Returns `undefined` when the part has no MCP app metadata or the metadata\n * does not reference an assistant-ui MCP app resource.\n */\nexport function getMcpAppFromToolPart(\n part: ToolPartLike,\n): McpAppMetadata | undefined {\n const app = part.mcp?.app;\n if (!app) return undefined;\n if (!isMcpAppUri(app.resourceUri)) return undefined;\n return app;\n}\n"],"mappings":";;;;;;;;;AAeA,SAAgB,sBACd,MAC4B;CAC5B,MAAM,MAAM,KAAK,KAAK;CACtB,IAAI,CAAC,KAAK,OAAO,KAAA;CACjB,IAAI,CAAC,YAAY,IAAI,WAAW,GAAG,OAAO,KAAA;CAC1C,OAAO;AACT"}
@@ -0,0 +1,35 @@
1
+ import type { Unsubscribe } from "@ulearning/ai-core";
2
+ import { type MaybeRefOrGetter, type Ref } from "vue";
3
+ import { AssistantFrameHost } from "@ulearning/ai-core";
4
+ type UseAssistantFrameHostOptions = {
5
+ iframeRef: Readonly<Ref<HTMLIFrameElement | null | undefined>>;
6
+ targetOrigin?: string;
7
+ register: (frameHost: AssistantFrameHost) => Unsubscribe;
8
+ };
9
+ /**
10
+ * Vue composable that manages the lifecycle of an AssistantFrameHost and its binding to the current AssistantRuntime.
11
+ *
12
+ * Usage example:
13
+ * ```tsx
14
+ * function setupFrame({
15
+ * trustedOrigin,
16
+ * register,
17
+ * }: {
18
+ * trustedOrigin: string;
19
+ * register: Parameters<typeof useAssistantFrameHost>[0]["register"];
20
+ * }) {
21
+ * const iframeRef = shallowRef<HTMLIFrameElement | null>(null);
22
+ *
23
+ * useAssistantFrameHost({
24
+ * iframeRef,
25
+ * targetOrigin: trustedOrigin,
26
+ * register,
27
+ * });
28
+ *
29
+ * return () => <iframe ref={iframeRef} src="..." />;
30
+ * }
31
+ * ```
32
+ */
33
+ export declare const useAssistantFrameHost: (options: MaybeRefOrGetter<UseAssistantFrameHostOptions>) => void;
34
+ export {};
35
+ //# sourceMappingURL=useAssistantFrameHost.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAssistantFrameHost.d.ts","mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB;AACrD,OAAO,EAAkB,KAAK,gBAAgB,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK;AAErE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB;AAEvD,KAAK,4BAA4B,GAAG;IAClC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAC9D,YAAY,CAAC,EAAE,MAAM;IACrB,QAAQ,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,WAAW;CACzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;AAwBA,eAAO,MAAM,qBAAqB,GAChC,SAAS,gBAAgB,CAAC,4BAA4B,CAAC,KACtD,IAiGF","names":[],"ignoreList":[],"sources":["../../../src/model-context/frame/useAssistantFrameHost.ts"],"sourcesContent":[null]}
@@ -0,0 +1,109 @@
1
+ "use client";
2
+ import { AssistantFrameHost } from "@ulearning/ai-core";
3
+ import { toValue, watch } from "vue";
4
+ import { useIsomorphicLayoutEffect } from "@ulearning/ai-store/internal";
5
+ // src/model-context/frame/useAssistantFrameHost.ts
6
+ /**
7
+ * Vue composable that manages the lifecycle of an AssistantFrameHost and its binding to the current AssistantRuntime.
8
+ *
9
+ * Usage example:
10
+ * ```tsx
11
+ * function setupFrame({
12
+ * trustedOrigin,
13
+ * register,
14
+ * }: {
15
+ * trustedOrigin: string;
16
+ * register: Parameters<typeof useAssistantFrameHost>[0]["register"];
17
+ * }) {
18
+ * const iframeRef = shallowRef<HTMLIFrameElement | null>(null);
19
+ *
20
+ * useAssistantFrameHost({
21
+ * iframeRef,
22
+ * targetOrigin: trustedOrigin,
23
+ * register,
24
+ * });
25
+ *
26
+ * return () => <iframe ref={iframeRef} src="..." />;
27
+ * }
28
+ * ```
29
+ */
30
+ const useAssistantFrameHost = (options) => {
31
+ useIsomorphicLayoutEffect(() => {
32
+ const { iframeRef, targetOrigin, register } = toValue(options);
33
+ let active;
34
+ const syncFrame = () => {
35
+ const iframe = iframeRef.value;
36
+ const iframeWindow = iframe?.isConnected === false ? null : iframe?.contentWindow;
37
+ if (active && active.iframe === iframe && active.window === iframeWindow) return;
38
+ const previous = active;
39
+ active = void 0;
40
+ let disposalFailed = false;
41
+ let disposalError;
42
+ try {
43
+ previous?.dispose();
44
+ } catch (error) {
45
+ disposalFailed = true;
46
+ disposalError = error;
47
+ }
48
+ if (iframe && iframeWindow) {
49
+ const frameHost = new AssistantFrameHost(iframeWindow, targetOrigin);
50
+ let unsubscribe;
51
+ try {
52
+ unsubscribe = register(frameHost);
53
+ } catch (error) {
54
+ frameHost.dispose();
55
+ throw error;
56
+ }
57
+ const onLoad = () => frameHost.frameLoaded();
58
+ iframe.addEventListener("load", onLoad);
59
+ active = {
60
+ iframe,
61
+ window: iframeWindow,
62
+ dispose: () => {
63
+ iframe.removeEventListener("load", onLoad);
64
+ let cleanupFailed = false;
65
+ let cleanupError;
66
+ try {
67
+ frameHost.dispose();
68
+ } catch (error) {
69
+ cleanupFailed = true;
70
+ cleanupError = error;
71
+ }
72
+ try {
73
+ unsubscribe();
74
+ } catch (error) {
75
+ if (cleanupFailed) console.error("[assistant-ui] AssistantFrameHost unregistration failed.", error);
76
+ else {
77
+ cleanupFailed = true;
78
+ cleanupError = error;
79
+ }
80
+ }
81
+ if (cleanupFailed) throw cleanupError;
82
+ }
83
+ };
84
+ }
85
+ if (disposalFailed) throw disposalError;
86
+ };
87
+ syncFrame();
88
+ watch(iframeRef, syncFrame, { flush: "post" });
89
+ const observer = new MutationObserver(syncFrame);
90
+ observer.observe(document, {
91
+ childList: true,
92
+ subtree: true
93
+ });
94
+ return () => {
95
+ observer.disconnect();
96
+ active?.dispose();
97
+ };
98
+ }, () => {
99
+ const { iframeRef, targetOrigin, register } = toValue(options);
100
+ return [
101
+ iframeRef,
102
+ targetOrigin,
103
+ register
104
+ ];
105
+ });
106
+ };
107
+ export { useAssistantFrameHost };
108
+
109
+ //# sourceMappingURL=useAssistantFrameHost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAssistantFrameHost.js","names":[],"sources":["../../../src/model-context/frame/useAssistantFrameHost.ts"],"sourcesContent":["\"use client\";\n\nimport type { Unsubscribe } from \"@ulearning/ai-core\";\nimport { toValue, watch, type MaybeRefOrGetter, type Ref } from \"vue\";\nimport { useIsomorphicLayoutEffect } from \"@ulearning/ai-store/internal\";\nimport { AssistantFrameHost } from \"@ulearning/ai-core\";\n\ntype UseAssistantFrameHostOptions = {\n iframeRef: Readonly<Ref<HTMLIFrameElement | null | undefined>>;\n targetOrigin?: string;\n register: (frameHost: AssistantFrameHost) => Unsubscribe;\n};\n\n/**\n * Vue composable that manages the lifecycle of an AssistantFrameHost and its binding to the current AssistantRuntime.\n *\n * Usage example:\n * ```tsx\n * function setupFrame({\n * trustedOrigin,\n * register,\n * }: {\n * trustedOrigin: string;\n * register: Parameters<typeof useAssistantFrameHost>[0][\"register\"];\n * }) {\n * const iframeRef = shallowRef<HTMLIFrameElement | null>(null);\n *\n * useAssistantFrameHost({\n * iframeRef,\n * targetOrigin: trustedOrigin,\n * register,\n * });\n *\n * return () => <iframe ref={iframeRef} src=\"...\" />;\n * }\n * ```\n */\nexport const useAssistantFrameHost = (\n options: MaybeRefOrGetter<UseAssistantFrameHostOptions>,\n): void => {\n useIsomorphicLayoutEffect(\n () => {\n const { iframeRef, targetOrigin, register } = toValue(options);\n let active:\n | {\n iframe: HTMLIFrameElement;\n window: Window;\n dispose: () => void;\n }\n | undefined;\n\n const syncFrame = () => {\n const iframe = iframeRef.value;\n const iframeWindow =\n iframe?.isConnected === false ? null : iframe?.contentWindow;\n if (\n active &&\n active.iframe === iframe &&\n active.window === iframeWindow\n )\n return;\n\n const previous = active;\n active = undefined;\n let disposalFailed = false;\n let disposalError: unknown;\n try {\n previous?.dispose();\n } catch (error) {\n disposalFailed = true;\n disposalError = error;\n }\n\n if (iframe && iframeWindow) {\n const frameHost = new AssistantFrameHost(iframeWindow, targetOrigin);\n let unsubscribe: Unsubscribe;\n try {\n unsubscribe = register(frameHost);\n } catch (error) {\n frameHost.dispose();\n throw error;\n }\n const onLoad = () => frameHost.frameLoaded();\n iframe.addEventListener(\"load\", onLoad);\n active = {\n iframe,\n window: iframeWindow,\n dispose: () => {\n iframe.removeEventListener(\"load\", onLoad);\n let cleanupFailed = false;\n let cleanupError: unknown;\n\n try {\n frameHost.dispose();\n } catch (error) {\n cleanupFailed = true;\n cleanupError = error;\n }\n\n try {\n unsubscribe();\n } catch (error) {\n if (cleanupFailed) {\n console.error(\n \"[assistant-ui] AssistantFrameHost unregistration failed.\",\n error,\n );\n } else {\n cleanupFailed = true;\n cleanupError = error;\n }\n }\n\n if (cleanupFailed) throw cleanupError;\n },\n };\n }\n\n if (disposalFailed) throw disposalError;\n };\n\n syncFrame();\n watch(iframeRef, syncFrame, { flush: \"post\" });\n const observer = new MutationObserver(syncFrame);\n observer.observe(document, { childList: true, subtree: true });\n\n return () => {\n observer.disconnect();\n active?.dispose();\n };\n },\n () => {\n const { iframeRef, targetOrigin, register } = toValue(options);\n return [iframeRef, targetOrigin, register];\n },\n );\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,MAAa,yBACX,YACS;CACT,gCACQ;EACJ,MAAM,EAAE,WAAW,cAAc,aAAa,QAAQ,OAAO;EAC7D,IAAI;EAQJ,MAAM,kBAAkB;GACtB,MAAM,SAAS,UAAU;GACzB,MAAM,eACJ,QAAQ,gBAAgB,QAAQ,OAAO,QAAQ;GACjD,IACE,UACA,OAAO,WAAW,UAClB,OAAO,WAAW,cAElB;GAEF,MAAM,WAAW;GACjB,SAAS,KAAA;GACT,IAAI,iBAAiB;GACrB,IAAI;GACJ,IAAI;IACF,UAAU,QAAQ;GACpB,SAAS,OAAO;IACd,iBAAiB;IACjB,gBAAgB;GAClB;GAEA,IAAI,UAAU,cAAc;IAC1B,MAAM,YAAY,IAAI,mBAAmB,cAAc,YAAY;IACnE,IAAI;IACJ,IAAI;KACF,cAAc,SAAS,SAAS;IAClC,SAAS,OAAO;KACd,UAAU,QAAQ;KAClB,MAAM;IACR;IACA,MAAM,eAAe,UAAU,YAAY;IAC3C,OAAO,iBAAiB,QAAQ,MAAM;IACtC,SAAS;KACP;KACA,QAAQ;KACR,eAAe;MACb,OAAO,oBAAoB,QAAQ,MAAM;MACzC,IAAI,gBAAgB;MACpB,IAAI;MAEJ,IAAI;OACF,UAAU,QAAQ;MACpB,SAAS,OAAO;OACd,gBAAgB;OAChB,eAAe;MACjB;MAEA,IAAI;OACF,YAAY;MACd,SAAS,OAAO;OACd,IAAI,eACF,QAAQ,MACN,4DACA,KACF;YACK;QACL,gBAAgB;QAChB,eAAe;OACjB;MACF;MAEA,IAAI,eAAe,MAAM;KAC3B;IACF;GACF;GAEA,IAAI,gBAAgB,MAAM;EAC5B;EAEA,UAAU;EACV,MAAM,WAAW,WAAW,EAAE,OAAO,OAAO,CAAC;EAC7C,MAAM,WAAW,IAAI,iBAAiB,SAAS;EAC/C,SAAS,QAAQ,UAAU;GAAE,WAAW;GAAM,SAAS;EAAK,CAAC;EAE7D,aAAa;GACX,SAAS,WAAW;GACpB,QAAQ,QAAQ;EAClB;CACF,SACM;EACJ,MAAM,EAAE,WAAW,cAAc,aAAa,QAAQ,OAAO;EAC7D,OAAO;GAAC;GAAW;GAAc;EAAQ;CAC3C,CACF;AACF"}
@@ -0,0 +1,11 @@
1
+ import { type Component, type FunctionalComponent } from "vue";
2
+ type ComponentProps<T extends Component> = T extends new (...args: never[]) => {
3
+ $props: infer P extends object;
4
+ } ? P : T extends FunctionalComponent<infer P extends object> ? P : Record<string, unknown>;
5
+ export declare const makeAssistantVisible: <T extends Component>(Component: T, config?: {
6
+ clickable?: boolean | undefined;
7
+ editable?: boolean | undefined;
8
+ settleDelayMs?: number | undefined;
9
+ }) => import("vue").DefineSetupFnComponent<ComponentProps<T>, {}, {}, ComponentProps<T> & {}, import("vue").PublicProps>;
10
+ export default makeAssistantVisible;
11
+ //# sourceMappingURL=makeAssistantVisible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"makeAssistantVisible.d.ts","mappings":"AAEA,OAAO,EAML,KAAK,SAAS,EACd,KAAK,mBAAmB,EAEzB,MAAM,KAAK;AAgGZ,KAAK,cAAc,CAAC,CAAC,SAAS,SAAS,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK;IAC7E,MAAM,EAAE,MAAM,CAAC,SAAS,MAAM;CAC/B,GACG,CAAC,GACD,CAAC,SAAS,mBAAmB,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACnD,CAAC,GACD,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;AAE7B,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,SAAS,EACtD,WAAW,CAAC,EACZ,SAAS;IACP,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS;IAC/B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS;IAC9B,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS;CACnC,uHA4DF;AAED,eAAe,oBAAoB","names":[],"ignoreList":[],"sources":["../../src/model-context/makeAssistantVisible.tsx"],"sourcesContent":[null]}
@@ -0,0 +1,102 @@
1
+ "use client";
2
+ import { tool } from "@ulearning/ai-core";
3
+ import { defineComponent, h, inject, provide, useId } from "vue";
4
+ import { useAui } from "@ulearning/ai-store";
5
+ import { useIsomorphicLayoutEffect } from "@ulearning/ai-store/internal";
6
+ import { useForwardExpose } from "reka-ui";
7
+ // src/model-context/makeAssistantVisible.tsx
8
+ const DEFAULT_ACTION_SETTLE_DELAY_MS = 2e3;
9
+ const MAX_ACTION_SETTLE_DELAY_MS = 2147483647;
10
+ const waitForSettle = async (settleDelayMs) => {
11
+ const delay = Number.isFinite(settleDelayMs) && settleDelayMs >= 0 && settleDelayMs <= MAX_ACTION_SETTLE_DELAY_MS ? settleDelayMs : DEFAULT_ACTION_SETTLE_DELAY_MS;
12
+ if (delay === 0) return;
13
+ await new Promise((resolve) => setTimeout(resolve, delay));
14
+ };
15
+ const readActionSettleDelay = (element) => {
16
+ const value = element.dataset.actionSettleDelay;
17
+ return value === void 0 || value.trim() === "" ? DEFAULT_ACTION_SETTLE_DELAY_MS : Number(value);
18
+ };
19
+ const click = tool({
20
+ parameters: {
21
+ type: "object",
22
+ properties: { clickId: { type: "string" } },
23
+ required: ["clickId"]
24
+ },
25
+ execute: async ({ clickId }) => {
26
+ const escapedClickId = CSS.escape(clickId);
27
+ const el = document.querySelector(`[data-click-id='${escapedClickId}']`);
28
+ if (el instanceof HTMLElement) {
29
+ el.click();
30
+ await waitForSettle(readActionSettleDelay(el));
31
+ return {};
32
+ } else return "Element not found";
33
+ }
34
+ });
35
+ const setNativeValue = (element, value) => {
36
+ const prototype = element instanceof HTMLInputElement ? HTMLInputElement.prototype : HTMLTextAreaElement.prototype;
37
+ const setter = Object.getOwnPropertyDescriptor(prototype, "value")?.set;
38
+ if (setter) setter.call(element, value);
39
+ else element.value = value;
40
+ };
41
+ const edit = tool({
42
+ parameters: {
43
+ type: "object",
44
+ properties: {
45
+ editId: { type: "string" },
46
+ value: { type: "string" }
47
+ },
48
+ required: ["editId", "value"]
49
+ },
50
+ execute: async ({ editId, value }) => {
51
+ const escapedEditId = CSS.escape(editId);
52
+ const el = document.querySelector(`[data-edit-id='${escapedEditId}']`);
53
+ if (el instanceof HTMLInputElement || el instanceof HTMLTextAreaElement) {
54
+ setNativeValue(el, value);
55
+ el.dispatchEvent(new Event("input", { bubbles: true }));
56
+ el.dispatchEvent(new Event("change", { bubbles: true }));
57
+ await waitForSettle(readActionSettleDelay(el));
58
+ return {};
59
+ } else return "Element not found";
60
+ }
61
+ });
62
+ const ReadableContext = Symbol("AssistantVisible");
63
+ const makeAssistantVisible = (Component, config) => {
64
+ const settleDelayMs = config?.settleDelayMs ?? DEFAULT_ACTION_SETTLE_DELAY_MS;
65
+ if (!Number.isFinite(settleDelayMs) || settleDelayMs < 0 || settleDelayMs > MAX_ACTION_SETTLE_DELAY_MS) throw new RangeError(`settleDelayMs must be between 0 and ${MAX_ACTION_SETTLE_DELAY_MS}`);
66
+ const WrappedComponent = Component;
67
+ return defineComponent(function AssistantVisible(props, { attrs, slots }) {
68
+ const isNestedReadable = inject(ReadableContext, false);
69
+ provide(ReadableContext, true);
70
+ const clickId = useId();
71
+ const { forwardRef, currentElement } = useForwardExpose();
72
+ const aui = useAui();
73
+ const { clickable, editable } = config ?? {};
74
+ useIsomorphicLayoutEffect(() => aui.modelContext.register({ getModelContext: () => ({
75
+ tools: {
76
+ ...clickable ? { click } : {},
77
+ ...editable ? { edit } : {}
78
+ },
79
+ system: !isNestedReadable && currentElement.value instanceof HTMLElement ? currentElement.value.outerHTML : void 0
80
+ }) }), () => [
81
+ isNestedReadable,
82
+ aui,
83
+ clickable,
84
+ editable
85
+ ]);
86
+ return () => h(WrappedComponent, {
87
+ ...attrs,
88
+ ...props,
89
+ ...clickable ? { "data-click-id": clickId } : {},
90
+ ...editable ? { "data-edit-id": clickId } : {},
91
+ ...config?.settleDelayMs !== void 0 && (clickable || editable) ? { "data-action-settle-delay": settleDelayMs } : {},
92
+ ref: forwardRef
93
+ }, slots);
94
+ }, {
95
+ name: Component.name ?? "AssistantVisible",
96
+ inheritAttrs: false,
97
+ props: []
98
+ });
99
+ };
100
+ export { makeAssistantVisible as default, makeAssistantVisible };
101
+
102
+ //# sourceMappingURL=makeAssistantVisible.js.map