@assistant-ui/react 0.15.30 → 0.15.32

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 (550) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +1 -2
  2. package/dist/adapters/OpenAIRealtimeVoiceAdapter.js +1 -2
  3. package/dist/assistant-transport.js +1 -2
  4. package/dist/cloud-renderer/CloudRendererHost.d.ts.map +1 -1
  5. package/dist/cloud-renderer/CloudRendererHost.js +2 -4
  6. package/dist/cloud-renderer/CloudRendererHost.js.map +1 -1
  7. package/dist/context/ReadonlyStore.js +1 -2
  8. package/dist/context/providers/AttachmentByIndexProvider.js +1 -2
  9. package/dist/context/providers/ChainOfThoughtByIndicesProvider.js +1 -2
  10. package/dist/context/providers/MessageByIndexProvider.js +1 -2
  11. package/dist/context/providers/MessageProvider.js +1 -2
  12. package/dist/context/providers/PartByIndexProvider.js +1 -2
  13. package/dist/context/providers/SuggestionByIndexProvider.js +1 -2
  14. package/dist/context/providers/TextMessagePartProvider.js +1 -2
  15. package/dist/context/providers/ThreadListItemProvider.js +1 -2
  16. package/dist/context/providers/ThreadViewportProvider.js +1 -2
  17. package/dist/context/react/ThreadViewportContext.js +1 -2
  18. package/dist/context/react/utils/createContextHook.js +1 -2
  19. package/dist/context/react/utils/createContextStoreHook.js +1 -2
  20. package/dist/context/stores/ThreadViewport.js +1 -2
  21. package/dist/devtools/DevToolsHooks.js +1 -2
  22. package/dist/hooks/useMessageQuote.js +1 -2
  23. package/dist/hooks/useMessageTiming.js +1 -2
  24. package/dist/hooks/useToolCallElapsed.js +1 -2
  25. package/dist/index.d.ts +9 -8
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +2 -9
  28. package/dist/internal.d.ts +1 -1
  29. package/dist/internal.d.ts.map +1 -1
  30. package/dist/internal.js +2 -3
  31. package/dist/internal.js.map +1 -1
  32. package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts +1 -1
  33. package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts.map +1 -1
  34. package/dist/legacy-runtime/AssistantRuntimeProvider.js +1 -2
  35. package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
  36. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  37. package/dist/mcp-apps/McpAppRenderer.js +3 -3
  38. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  39. package/dist/mcp-apps/McpAppsRemoteHost.js +1 -2
  40. package/dist/mcp-apps/app-frame.js +1 -2
  41. package/dist/mcp-apps/bridge.js +1 -2
  42. package/dist/mcp-apps/csp.js +1 -2
  43. package/dist/mcp-apps/types.js +1 -2
  44. package/dist/mcp-apps/utils.js +1 -2
  45. package/dist/model-context/frame/useAssistantFrameHost.js +1 -2
  46. package/dist/model-context/makeAssistantVisible.js +1 -2
  47. package/dist/primitives/actionBar/ActionBarCopy.d.ts +1 -1
  48. package/dist/primitives/actionBar/ActionBarCopy.js +1 -2
  49. package/dist/primitives/actionBar/ActionBarEdit.d.ts +1 -1
  50. package/dist/primitives/actionBar/ActionBarEdit.js +1 -2
  51. package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts +1 -1
  52. package/dist/primitives/actionBar/ActionBarExportMarkdown.js +1 -2
  53. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts +1 -1
  54. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +1 -2
  55. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts +1 -1
  56. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +1 -2
  57. package/dist/primitives/actionBar/ActionBarInteractionContext.js +1 -2
  58. package/dist/primitives/actionBar/ActionBarReload.d.ts +1 -1
  59. package/dist/primitives/actionBar/ActionBarReload.js +1 -2
  60. package/dist/primitives/actionBar/ActionBarRoot.d.ts +1 -1
  61. package/dist/primitives/actionBar/ActionBarRoot.js +1 -2
  62. package/dist/primitives/actionBar/ActionBarSpeak.d.ts +1 -1
  63. package/dist/primitives/actionBar/ActionBarSpeak.js +1 -2
  64. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts +1 -1
  65. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +1 -2
  66. package/dist/primitives/actionBar/useActionBarFloatStatus.js +1 -2
  67. package/dist/primitives/actionBar.js +1 -2
  68. package/dist/primitives/actionBarMore/ActionBarMoreContent.js +1 -2
  69. package/dist/primitives/actionBarMore/ActionBarMoreItem.js +1 -2
  70. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +1 -2
  71. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +1 -2
  72. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +1 -2
  73. package/dist/primitives/actionBarMore/scope.js +1 -2
  74. package/dist/primitives/actionBarMore.js +1 -2
  75. package/dist/primitives/assistantModal/AssistantModalAnchor.js +1 -2
  76. package/dist/primitives/assistantModal/AssistantModalContent.js +1 -2
  77. package/dist/primitives/assistantModal/AssistantModalRoot.js +1 -2
  78. package/dist/primitives/assistantModal/AssistantModalTrigger.js +1 -2
  79. package/dist/primitives/assistantModal/popoverRenderPrimitives.js +1 -2
  80. package/dist/primitives/assistantModal/scope.js +1 -2
  81. package/dist/primitives/assistantModal.js +1 -2
  82. package/dist/primitives/attachment/AttachmentName.js +1 -2
  83. package/dist/primitives/attachment/AttachmentRemove.d.ts +1 -1
  84. package/dist/primitives/attachment/AttachmentRemove.js +1 -2
  85. package/dist/primitives/attachment/AttachmentRoot.d.ts +1 -1
  86. package/dist/primitives/attachment/AttachmentRoot.js +1 -2
  87. package/dist/primitives/attachment/AttachmentThumb.d.ts +1 -1
  88. package/dist/primitives/attachment/AttachmentThumb.js +1 -2
  89. package/dist/primitives/attachment.js +1 -2
  90. package/dist/primitives/branchPicker/BranchPickerCount.js +1 -2
  91. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +1 -1
  92. package/dist/primitives/branchPicker/BranchPickerNext.js +1 -2
  93. package/dist/primitives/branchPicker/BranchPickerNumber.js +1 -2
  94. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +1 -1
  95. package/dist/primitives/branchPicker/BranchPickerPrevious.js +1 -2
  96. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +1 -1
  97. package/dist/primitives/branchPicker/BranchPickerRoot.js +1 -2
  98. package/dist/primitives/branchPicker.js +1 -2
  99. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts +6 -5
  100. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -1
  101. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +57 -20
  102. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
  103. package/dist/primitives/chainOfThought/ChainOfThoughtParts.js +1 -2
  104. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts +1 -1
  105. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +1 -2
  106. package/dist/primitives/chainOfThought.js +1 -2
  107. package/dist/primitives/composer/ComposerAddAttachment.d.ts +1 -1
  108. package/dist/primitives/composer/ComposerAddAttachment.js +1 -2
  109. package/dist/primitives/composer/ComposerAttachmentDropzone.js +1 -2
  110. package/dist/primitives/composer/ComposerAttachments.js +1 -2
  111. package/dist/primitives/composer/ComposerCancel.d.ts +1 -1
  112. package/dist/primitives/composer/ComposerCancel.js +1 -2
  113. package/dist/primitives/composer/ComposerCompactContext.js +1 -2
  114. package/dist/primitives/composer/ComposerDictate.d.ts +1 -1
  115. package/dist/primitives/composer/ComposerDictate.js +1 -2
  116. package/dist/primitives/composer/ComposerDictationTranscript.d.ts +1 -1
  117. package/dist/primitives/composer/ComposerDictationTranscript.js +1 -2
  118. package/dist/primitives/composer/ComposerIf.js +1 -2
  119. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  120. package/dist/primitives/composer/ComposerInput.js +4 -5
  121. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  122. package/dist/primitives/composer/ComposerInputPluginContext.js +1 -2
  123. package/dist/primitives/composer/ComposerQueue.js +1 -2
  124. package/dist/primitives/composer/ComposerQuote.d.ts +3 -3
  125. package/dist/primitives/composer/ComposerQuote.js +1 -2
  126. package/dist/primitives/composer/ComposerResume.d.ts +1 -1
  127. package/dist/primitives/composer/ComposerResume.js +1 -2
  128. package/dist/primitives/composer/ComposerRoot.d.ts +1 -1
  129. package/dist/primitives/composer/ComposerRoot.js +1 -2
  130. package/dist/primitives/composer/ComposerSend.d.ts +1 -1
  131. package/dist/primitives/composer/ComposerSend.js +1 -2
  132. package/dist/primitives/composer/ComposerStopDictation.d.ts +1 -1
  133. package/dist/primitives/composer/ComposerStopDictation.js +1 -2
  134. package/dist/primitives/composer/composerInputSelector.js +1 -2
  135. package/dist/primitives/composer/trigger/TriggerPopover.d.ts +1 -1
  136. package/dist/primitives/composer/trigger/TriggerPopover.js +1 -2
  137. package/dist/primitives/composer/trigger/TriggerPopoverAction.js +1 -2
  138. package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts +1 -1
  139. package/dist/primitives/composer/trigger/TriggerPopoverBack.js +1 -2
  140. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts +2 -2
  141. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +1 -2
  142. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js +1 -2
  143. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts +2 -2
  144. package/dist/primitives/composer/trigger/TriggerPopoverItems.js +1 -2
  145. package/dist/primitives/composer/trigger/TriggerPopoverResource.js +1 -2
  146. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +1 -2
  147. package/dist/primitives/composer/trigger/detectTrigger.js +1 -2
  148. package/dist/primitives/composer/trigger/index.d.ts +1 -1
  149. package/dist/primitives/composer/trigger/index.js +1 -2
  150. package/dist/primitives/composer/trigger/matchesTriggerItemQuery.js +1 -2
  151. package/dist/primitives/composer/trigger/triggerDetectionResource.js +1 -2
  152. package/dist/primitives/composer/trigger/triggerKeyboardResource.js +1 -2
  153. package/dist/primitives/composer/trigger/triggerNavigationResource.js +1 -2
  154. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
  155. package/dist/primitives/composer/trigger/triggerSelectionResource.js +3 -4
  156. package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
  157. package/dist/primitives/composer/useComposerCancelWithFocus.js +1 -2
  158. package/dist/primitives/composer/useComposerInputState.js +1 -2
  159. package/dist/primitives/composer.js +1 -2
  160. package/dist/primitives/dropdownMenuRenderPrimitives.js +1 -2
  161. package/dist/primitives/error/ErrorMessage.d.ts +1 -1
  162. package/dist/primitives/error/ErrorMessage.js +1 -2
  163. package/dist/primitives/error/ErrorRoot.d.ts +1 -1
  164. package/dist/primitives/error/ErrorRoot.js +1 -2
  165. package/dist/primitives/error.js +1 -2
  166. package/dist/primitives/message/MessageAttachments.js +1 -2
  167. package/dist/primitives/message/MessageError.js +1 -2
  168. package/dist/primitives/message/MessageIf.js +1 -2
  169. package/dist/primitives/message/MessageParts.js +1 -2
  170. package/dist/primitives/message/MessagePartsGrouped.js +1 -2
  171. package/dist/primitives/message/MessageRoot.d.ts +1 -1
  172. package/dist/primitives/message/MessageRoot.js +1 -2
  173. package/dist/primitives/message.js +1 -2
  174. package/dist/primitives/messagePart/MessagePartImage.d.ts +1 -1
  175. package/dist/primitives/messagePart/MessagePartImage.js +1 -2
  176. package/dist/primitives/messagePart/MessagePartInProgress.js +1 -2
  177. package/dist/primitives/messagePart/MessagePartText.d.ts +1 -1
  178. package/dist/primitives/messagePart/MessagePartText.js +1 -2
  179. package/dist/primitives/messagePart/useMessagePartData.js +1 -2
  180. package/dist/primitives/messagePart/useMessagePartFile.js +1 -2
  181. package/dist/primitives/messagePart/useMessagePartImage.js +1 -2
  182. package/dist/primitives/messagePart/useMessagePartReasoning.js +1 -2
  183. package/dist/primitives/messagePart/useMessagePartSource.js +1 -2
  184. package/dist/primitives/messagePart/useMessagePartText.js +1 -2
  185. package/dist/primitives/messagePart.js +1 -2
  186. package/dist/primitives/queueItem/QueueItemRemove.d.ts +1 -1
  187. package/dist/primitives/queueItem/QueueItemRemove.js +1 -2
  188. package/dist/primitives/queueItem/QueueItemSteer.d.ts +1 -1
  189. package/dist/primitives/queueItem/QueueItemSteer.js +1 -2
  190. package/dist/primitives/queueItem/QueueItemText.d.ts +1 -1
  191. package/dist/primitives/queueItem/QueueItemText.js +1 -2
  192. package/dist/primitives/queueItem.js +1 -2
  193. package/dist/primitives/reasoning/useScrollLock.d.ts.map +1 -1
  194. package/dist/primitives/reasoning/useScrollLock.js +41 -25
  195. package/dist/primitives/reasoning/useScrollLock.js.map +1 -1
  196. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.d.ts +1 -1
  197. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +1 -2
  198. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts +1 -1
  199. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +1 -2
  200. package/dist/primitives/selectionToolbar.js +1 -2
  201. package/dist/primitives/suggestion/SuggestionDescription.d.ts +1 -1
  202. package/dist/primitives/suggestion/SuggestionDescription.js +1 -2
  203. package/dist/primitives/suggestion/SuggestionTitle.d.ts +1 -1
  204. package/dist/primitives/suggestion/SuggestionTitle.js +1 -2
  205. package/dist/primitives/suggestion/SuggestionTrigger.d.ts +1 -1
  206. package/dist/primitives/suggestion/SuggestionTrigger.js +1 -2
  207. package/dist/primitives/suggestion.js +1 -2
  208. package/dist/primitives/thread/ThreadEmpty.js +1 -2
  209. package/dist/primitives/thread/ThreadIf.js +1 -2
  210. package/dist/primitives/thread/ThreadLoadEarlier.d.ts +1 -1
  211. package/dist/primitives/thread/ThreadLoadEarlier.js +1 -2
  212. package/dist/primitives/thread/ThreadMessages.js +1 -2
  213. package/dist/primitives/thread/ThreadRoot.d.ts +1 -1
  214. package/dist/primitives/thread/ThreadRoot.js +1 -2
  215. package/dist/primitives/thread/ThreadRootElementContext.js +1 -2
  216. package/dist/primitives/thread/ThreadScrollToBottom.d.ts +1 -1
  217. package/dist/primitives/thread/ThreadScrollToBottom.js +1 -2
  218. package/dist/primitives/thread/ThreadSuggestion.d.ts +1 -1
  219. package/dist/primitives/thread/ThreadSuggestion.js +1 -2
  220. package/dist/primitives/thread/ThreadSuggestions.js +1 -2
  221. package/dist/primitives/thread/ThreadViewport.d.ts +1 -1
  222. package/dist/primitives/thread/ThreadViewport.js +1 -2
  223. package/dist/primitives/thread/ThreadViewportFooter.d.ts +1 -1
  224. package/dist/primitives/thread/ThreadViewportFooter.js +1 -2
  225. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js +1 -2
  226. package/dist/primitives/thread/topAnchor/createReserveObservers.js +1 -2
  227. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js +1 -2
  228. package/dist/primitives/thread/topAnchor/topAnchorTurn.js +1 -2
  229. package/dist/primitives/thread/topAnchor/topAnchorUtils.js +1 -2
  230. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +1 -2
  231. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
  232. package/dist/primitives/thread/useThreadViewportAutoScroll.js +7 -5
  233. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  234. package/dist/primitives/thread.js +1 -2
  235. package/dist/primitives/threadList/ThreadListItems.js +1 -2
  236. package/dist/primitives/threadList/ThreadListLoadMore.d.ts +1 -1
  237. package/dist/primitives/threadList/ThreadListLoadMore.js +1 -2
  238. package/dist/primitives/threadList/ThreadListNew.d.ts +1 -1
  239. package/dist/primitives/threadList/ThreadListNew.js +1 -2
  240. package/dist/primitives/threadList/ThreadListRoot.d.ts +1 -1
  241. package/dist/primitives/threadList/ThreadListRoot.js +1 -2
  242. package/dist/primitives/threadList.js +1 -2
  243. package/dist/primitives/threadListFocusGroup.d.ts +1 -1
  244. package/dist/primitives/threadListFocusGroup.d.ts.map +1 -1
  245. package/dist/primitives/threadListFocusGroup.js +1 -2
  246. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +1 -1
  247. package/dist/primitives/threadListItem/ThreadListItemArchive.js +1 -2
  248. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +1 -1
  249. package/dist/primitives/threadListItem/ThreadListItemDelete.js +1 -2
  250. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts +1 -1
  251. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
  252. package/dist/primitives/threadListItem/ThreadListItemRoot.js +2 -3
  253. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  254. package/dist/primitives/threadListItem/ThreadListItemTitle.js +1 -2
  255. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +1 -1
  256. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +1 -2
  257. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +2 -2
  258. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
  259. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +3 -4
  260. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
  261. package/dist/primitives/threadListItem.js +1 -2
  262. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +1 -2
  263. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +1 -2
  264. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +1 -2
  265. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +1 -2
  266. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +1 -2
  267. package/dist/primitives/threadListItemMore/scope.js +1 -2
  268. package/dist/primitives/threadListItemMore.js +1 -2
  269. package/dist/sandbox-host/SandboxHost.js +1 -2
  270. package/dist/unstable/useComposerInput.js +2 -3
  271. package/dist/unstable/useComposerInput.js.map +1 -1
  272. package/dist/unstable/useComposerInputHistory.d.ts.map +1 -1
  273. package/dist/unstable/useComposerInputHistory.js +3 -4
  274. package/dist/unstable/useComposerInputHistory.js.map +1 -1
  275. package/dist/unstable/useLiveCompletionAdapter.d.ts.map +1 -1
  276. package/dist/unstable/useLiveCompletionAdapter.js +4 -4
  277. package/dist/unstable/useLiveCompletionAdapter.js.map +1 -1
  278. package/dist/unstable/useMentionAdapter.js +1 -2
  279. package/dist/unstable/useMessageStallDetection.js +1 -2
  280. package/dist/unstable/useModelContextSnapshot.js +1 -2
  281. package/dist/unstable/useSlashCommandAdapter.js +1 -2
  282. package/dist/unstable/webmcp/WebMcpRegistrationResource.js +1 -2
  283. package/dist/unstable/webmcp/convertTools.js +1 -2
  284. package/dist/unstable/webmcp/useWebMcpProvider.js +1 -2
  285. package/dist/unstable/webmcp/webmcp-host.js +1 -2
  286. package/dist/utils/Primitive.d.ts +17 -17
  287. package/dist/utils/Primitive.js +1 -2
  288. package/dist/utils/createActionButton.d.ts +1 -1
  289. package/dist/utils/createActionButton.js +1 -2
  290. package/dist/utils/getSelectionMessageId.js +1 -2
  291. package/dist/utils/hooks/useManagedRef.js +1 -2
  292. package/dist/utils/hooks/useMediaQuery.js +1 -2
  293. package/dist/utils/hooks/useOnScrollToBottom.js +1 -2
  294. package/dist/utils/hooks/useSizeHandle.js +1 -2
  295. package/dist/utils/isCompositionKey.js +1 -2
  296. package/dist/utils/smooth/SmoothContext.js +1 -2
  297. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  298. package/dist/utils/smooth/useSmooth.js +11 -4
  299. package/dist/utils/smooth/useSmooth.js.map +1 -1
  300. package/dist/utils/useIsomorphicLayoutEffect.js +0 -1
  301. package/package.json +13 -13
  302. package/src/adapters/OpenAIRealtimeVoiceAdapter.test.ts +14 -1
  303. package/src/cloud-renderer/CloudRendererHost.tsx +4 -2
  304. package/src/index.ts +9 -8
  305. package/src/internal.ts +1 -1
  306. package/src/legacy-runtime/AssistantRuntimeProvider.tsx +1 -1
  307. package/src/mcp-apps/McpAppRenderer.composer.test.tsx +111 -0
  308. package/src/mcp-apps/McpAppRenderer.test.tsx +24 -23
  309. package/src/mcp-apps/McpAppRenderer.tsx +9 -1
  310. package/src/primitives/actionBar/ActionBarCopy.test.tsx +57 -0
  311. package/src/primitives/actionBar/ActionBarExportMarkdown.test.tsx +24 -5
  312. package/src/primitives/assistantModal/AssistantModalRoot.test.tsx +1 -1
  313. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.test.tsx +91 -0
  314. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.tsx +54 -0
  315. package/src/primitives/composer/ComposerInput.focus-on-run-start.test.tsx +1 -1
  316. package/src/primitives/composer/ComposerInput.test.tsx +1 -0
  317. package/src/primitives/composer/ComposerInput.text-change.test.tsx +68 -0
  318. package/src/primitives/composer/ComposerInput.thread-scope.test.tsx +82 -0
  319. package/src/primitives/composer/ComposerInput.tsx +4 -3
  320. package/src/primitives/composer/trigger/triggerSelectionResource.test.ts +6 -4
  321. package/src/primitives/composer/trigger/triggerSelectionResource.ts +2 -0
  322. package/src/primitives/reasoning/useScrollLock.test.tsx +71 -2
  323. package/src/primitives/reasoning/useScrollLock.ts +78 -51
  324. package/src/primitives/thread/ThreadRoot.test.tsx +1 -1
  325. package/src/primitives/thread/ThreadViewport.thread-scope.test.tsx +51 -0
  326. package/src/primitives/thread/useThreadViewportAutoScroll.ts +8 -2
  327. package/src/primitives/threadListItem/ThreadListItemRoot.tsx +4 -1
  328. package/src/primitives/threadListItem/ThreadListItemUnarchive.test.tsx +52 -0
  329. package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +2 -2
  330. package/src/primitives/threadListItem/ThreadListKeyboardNav.test.tsx +25 -0
  331. package/src/tests/DataRenderers.test.tsx +1 -1
  332. package/src/tests/MessageParts.loading.test.tsx +1 -1
  333. package/src/tests/RemoteThreadListRuntime.adapterProvider.test.tsx +1 -1
  334. package/src/tests/RemoteThreadListRuntime.deferredProvider.test.tsx +4 -2
  335. package/src/tests/RemoteThreadListRuntime.reloadMainThread.test.tsx +4 -2
  336. package/src/tests/generative-ui.primitive.test.tsx +1 -1
  337. package/src/tests/local-runtime-queue.test.tsx +2 -2
  338. package/src/tests/messagePartSwitchRace.test.tsx +2 -2
  339. package/src/tests/messagePartTypeMismatch.test.tsx +1 -1
  340. package/src/tests/threadListItemIsRunning.test.tsx +5 -3
  341. package/src/tests/toolCallTiming.test.tsx +1 -1
  342. package/src/unstable/useComposerInput.test.tsx +1 -1
  343. package/src/unstable/useComposerInput.ts +1 -1
  344. package/src/unstable/useComposerInputHistory.test.tsx +10 -7
  345. package/src/unstable/useComposerInputHistory.thread-scope.test.tsx +123 -0
  346. package/src/unstable/useComposerInputHistory.ts +3 -2
  347. package/src/unstable/useLiveCompletionAdapter.test.tsx +44 -0
  348. package/src/unstable/useLiveCompletionAdapter.ts +3 -2
  349. package/src/unstable/webmcp/convertTools.test.ts +11 -1
  350. package/src/utils/hooks/useMediaQuery.test.tsx +35 -0
  351. package/src/utils/smooth/useSmooth.test.tsx +150 -14
  352. package/src/utils/smooth/useSmooth.ts +16 -2
  353. package/dist/context/providers/ChainOfThoughtPartByIndexProvider.d.ts +0 -2
  354. package/dist/context/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +0 -1
  355. package/dist/context/providers/ChainOfThoughtPartByIndexProvider.js +0 -3
  356. package/dist/legacy-runtime/RuntimeAdapter.d.ts +0 -2
  357. package/dist/legacy-runtime/RuntimeAdapter.d.ts.map +0 -1
  358. package/dist/legacy-runtime/RuntimeAdapter.js +0 -2
  359. package/dist/legacy-runtime/cloud/AssistantCloudThreadHistoryAdapter.d.ts +0 -2
  360. package/dist/legacy-runtime/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +0 -1
  361. package/dist/legacy-runtime/cloud/AssistantCloudThreadHistoryAdapter.js +0 -3
  362. package/dist/legacy-runtime/runtime/AssistantRuntime.d.ts +0 -3
  363. package/dist/legacy-runtime/runtime/AssistantRuntime.d.ts.map +0 -1
  364. package/dist/legacy-runtime/runtime/AssistantRuntime.js +0 -2
  365. package/dist/legacy-runtime/runtime/AttachmentRuntime.d.ts +0 -3
  366. package/dist/legacy-runtime/runtime/AttachmentRuntime.d.ts.map +0 -1
  367. package/dist/legacy-runtime/runtime/AttachmentRuntime.js +0 -2
  368. package/dist/legacy-runtime/runtime/ComposerRuntime.d.ts +0 -4
  369. package/dist/legacy-runtime/runtime/ComposerRuntime.d.ts.map +0 -1
  370. package/dist/legacy-runtime/runtime/ComposerRuntime.js +0 -2
  371. package/dist/legacy-runtime/runtime/RuntimeBindings.d.ts +0 -3
  372. package/dist/legacy-runtime/runtime/RuntimeBindings.d.ts.map +0 -1
  373. package/dist/legacy-runtime/runtime/RuntimeBindings.js +0 -0
  374. package/dist/legacy-runtime/runtime/RuntimePathTypes.d.ts +0 -2
  375. package/dist/legacy-runtime/runtime/RuntimePathTypes.d.ts.map +0 -1
  376. package/dist/legacy-runtime/runtime/RuntimePathTypes.js +0 -0
  377. package/dist/legacy-runtime/runtime/ThreadListItemRuntime.d.ts +0 -5
  378. package/dist/legacy-runtime/runtime/ThreadListItemRuntime.d.ts.map +0 -1
  379. package/dist/legacy-runtime/runtime/ThreadListItemRuntime.js +0 -2
  380. package/dist/legacy-runtime/runtime/ThreadRuntime.d.ts +0 -4
  381. package/dist/legacy-runtime/runtime/ThreadRuntime.d.ts.map +0 -1
  382. package/dist/legacy-runtime/runtime/ThreadRuntime.js +0 -2
  383. package/dist/legacy-runtime/runtime-cores/adapters/RuntimeAdapterProvider.d.ts +0 -2
  384. package/dist/legacy-runtime/runtime-cores/adapters/RuntimeAdapterProvider.d.ts.map +0 -1
  385. package/dist/legacy-runtime/runtime-cores/adapters/RuntimeAdapterProvider.js +0 -3
  386. package/dist/legacy-runtime/runtime-cores/adapters/attachment/CloudFileAttachmentAdapter.d.ts +0 -2
  387. package/dist/legacy-runtime/runtime-cores/adapters/attachment/CloudFileAttachmentAdapter.d.ts.map +0 -1
  388. package/dist/legacy-runtime/runtime-cores/adapters/attachment/CloudFileAttachmentAdapter.js +0 -3
  389. package/dist/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.d.ts +0 -2
  390. package/dist/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.d.ts.map +0 -1
  391. package/dist/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.js +0 -2
  392. package/dist/legacy-runtime/runtime-cores/composer/DefaultEditComposerRuntimeCore.d.ts +0 -2
  393. package/dist/legacy-runtime/runtime-cores/composer/DefaultEditComposerRuntimeCore.d.ts.map +0 -1
  394. package/dist/legacy-runtime/runtime-cores/composer/DefaultEditComposerRuntimeCore.js +0 -2
  395. package/dist/legacy-runtime/runtime-cores/composer/DefaultThreadComposerRuntimeCore.d.ts +0 -2
  396. package/dist/legacy-runtime/runtime-cores/composer/DefaultThreadComposerRuntimeCore.d.ts.map +0 -1
  397. package/dist/legacy-runtime/runtime-cores/composer/DefaultThreadComposerRuntimeCore.js +0 -2
  398. package/dist/legacy-runtime/runtime-cores/core/AssistantRuntimeCore.d.ts +0 -2
  399. package/dist/legacy-runtime/runtime-cores/core/AssistantRuntimeCore.d.ts.map +0 -1
  400. package/dist/legacy-runtime/runtime-cores/core/AssistantRuntimeCore.js +0 -0
  401. package/dist/legacy-runtime/runtime-cores/core/BaseAssistantRuntimeCore.d.ts +0 -2
  402. package/dist/legacy-runtime/runtime-cores/core/BaseAssistantRuntimeCore.d.ts.map +0 -1
  403. package/dist/legacy-runtime/runtime-cores/core/BaseAssistantRuntimeCore.js +0 -2
  404. package/dist/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.d.ts +0 -2
  405. package/dist/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.d.ts.map +0 -1
  406. package/dist/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.js +0 -2
  407. package/dist/legacy-runtime/runtime-cores/core/ComposerRuntimeCore.d.ts +0 -2
  408. package/dist/legacy-runtime/runtime-cores/core/ComposerRuntimeCore.d.ts.map +0 -1
  409. package/dist/legacy-runtime/runtime-cores/core/ComposerRuntimeCore.js +0 -0
  410. package/dist/legacy-runtime/runtime-cores/core/ThreadListRuntimeCore.d.ts +0 -2
  411. package/dist/legacy-runtime/runtime-cores/core/ThreadListRuntimeCore.d.ts.map +0 -1
  412. package/dist/legacy-runtime/runtime-cores/core/ThreadListRuntimeCore.js +0 -0
  413. package/dist/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.d.ts +0 -2
  414. package/dist/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.d.ts.map +0 -1
  415. package/dist/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.js +0 -0
  416. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreAdapter.d.ts +0 -2
  417. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreAdapter.d.ts.map +0 -1
  418. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreAdapter.js +0 -0
  419. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreRuntimeCore.d.ts +0 -2
  420. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreRuntimeCore.d.ts.map +0 -1
  421. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreRuntimeCore.js +0 -2
  422. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadListRuntimeCore.d.ts +0 -3
  423. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +0 -1
  424. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadListRuntimeCore.js +0 -2
  425. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadRuntimeCore.d.ts +0 -2
  426. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +0 -1
  427. package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadRuntimeCore.js +0 -2
  428. package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageConverter.d.ts +0 -3
  429. package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageConverter.d.ts.map +0 -1
  430. package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageConverter.js +0 -2
  431. package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageLike.d.ts +0 -3
  432. package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageLike.d.ts.map +0 -1
  433. package/dist/legacy-runtime/runtime-cores/external-store/ThreadMessageLike.js +0 -2
  434. package/dist/legacy-runtime/runtime-cores/external-store/auto-status.d.ts +0 -2
  435. package/dist/legacy-runtime/runtime-cores/external-store/auto-status.d.ts.map +0 -1
  436. package/dist/legacy-runtime/runtime-cores/external-store/auto-status.js +0 -2
  437. package/dist/legacy-runtime/runtime-cores/external-store/createMessageConverter.d.ts +0 -2
  438. package/dist/legacy-runtime/runtime-cores/external-store/createMessageConverter.d.ts.map +0 -1
  439. package/dist/legacy-runtime/runtime-cores/external-store/createMessageConverter.js +0 -3
  440. package/dist/legacy-runtime/runtime-cores/external-store/external-message-converter.d.ts +0 -2
  441. package/dist/legacy-runtime/runtime-cores/external-store/external-message-converter.d.ts.map +0 -1
  442. package/dist/legacy-runtime/runtime-cores/external-store/external-message-converter.js +0 -3
  443. package/dist/legacy-runtime/runtime-cores/external-store/useExternalStoreRuntime.d.ts +0 -2
  444. package/dist/legacy-runtime/runtime-cores/external-store/useExternalStoreRuntime.d.ts.map +0 -1
  445. package/dist/legacy-runtime/runtime-cores/external-store/useExternalStoreRuntime.js +0 -3
  446. package/dist/legacy-runtime/runtime-cores/local/ChatModelAdapter.d.ts +0 -2
  447. package/dist/legacy-runtime/runtime-cores/local/ChatModelAdapter.d.ts.map +0 -1
  448. package/dist/legacy-runtime/runtime-cores/local/ChatModelAdapter.js +0 -0
  449. package/dist/legacy-runtime/runtime-cores/local/LocalRuntimeCore.d.ts +0 -2
  450. package/dist/legacy-runtime/runtime-cores/local/LocalRuntimeCore.d.ts.map +0 -1
  451. package/dist/legacy-runtime/runtime-cores/local/LocalRuntimeCore.js +0 -2
  452. package/dist/legacy-runtime/runtime-cores/local/LocalRuntimeOptions.d.ts +0 -4
  453. package/dist/legacy-runtime/runtime-cores/local/LocalRuntimeOptions.d.ts.map +0 -1
  454. package/dist/legacy-runtime/runtime-cores/local/LocalRuntimeOptions.js +0 -2
  455. package/dist/legacy-runtime/runtime-cores/local/LocalThreadListRuntimeCore.d.ts +0 -3
  456. package/dist/legacy-runtime/runtime-cores/local/LocalThreadListRuntimeCore.d.ts.map +0 -1
  457. package/dist/legacy-runtime/runtime-cores/local/LocalThreadListRuntimeCore.js +0 -2
  458. package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.d.ts +0 -2
  459. package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.d.ts.map +0 -1
  460. package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.js +0 -2
  461. package/dist/legacy-runtime/runtime-cores/local/shouldContinue.d.ts +0 -2
  462. package/dist/legacy-runtime/runtime-cores/local/shouldContinue.d.ts.map +0 -1
  463. package/dist/legacy-runtime/runtime-cores/local/shouldContinue.js +0 -2
  464. package/dist/legacy-runtime/runtime-cores/local/useLocalRuntime.d.ts +0 -2
  465. package/dist/legacy-runtime/runtime-cores/local/useLocalRuntime.d.ts.map +0 -1
  466. package/dist/legacy-runtime/runtime-cores/local/useLocalRuntime.js +0 -3
  467. package/dist/legacy-runtime/runtime-cores/remote-thread-list/BaseSubscribable.d.ts +0 -2
  468. package/dist/legacy-runtime/runtime-cores/remote-thread-list/BaseSubscribable.d.ts.map +0 -1
  469. package/dist/legacy-runtime/runtime-cores/remote-thread-list/BaseSubscribable.js +0 -2
  470. package/dist/legacy-runtime/runtime-cores/remote-thread-list/EMPTY_THREAD_CORE.d.ts +0 -2
  471. package/dist/legacy-runtime/runtime-cores/remote-thread-list/EMPTY_THREAD_CORE.d.ts.map +0 -1
  472. package/dist/legacy-runtime/runtime-cores/remote-thread-list/EMPTY_THREAD_CORE.js +0 -2
  473. package/dist/legacy-runtime/runtime-cores/remote-thread-list/OptimisticState.d.ts +0 -2
  474. package/dist/legacy-runtime/runtime-cores/remote-thread-list/OptimisticState.d.ts.map +0 -1
  475. package/dist/legacy-runtime/runtime-cores/remote-thread-list/OptimisticState.js +0 -2
  476. package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts +0 -2
  477. package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +0 -1
  478. package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.js +0 -3
  479. package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +0 -2
  480. package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +0 -1
  481. package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +0 -3
  482. package/dist/legacy-runtime/runtime-cores/remote-thread-list/adapter/cloud.d.ts +0 -2
  483. package/dist/legacy-runtime/runtime-cores/remote-thread-list/adapter/cloud.d.ts.map +0 -1
  484. package/dist/legacy-runtime/runtime-cores/remote-thread-list/adapter/cloud.js +0 -3
  485. package/dist/legacy-runtime/runtime-cores/remote-thread-list/adapter/in-memory.d.ts +0 -2
  486. package/dist/legacy-runtime/runtime-cores/remote-thread-list/adapter/in-memory.d.ts.map +0 -1
  487. package/dist/legacy-runtime/runtime-cores/remote-thread-list/adapter/in-memory.js +0 -2
  488. package/dist/legacy-runtime/runtime-cores/remote-thread-list/types.d.ts +0 -2
  489. package/dist/legacy-runtime/runtime-cores/remote-thread-list/types.d.ts.map +0 -1
  490. package/dist/legacy-runtime/runtime-cores/remote-thread-list/types.js +0 -0
  491. package/dist/legacy-runtime/runtime-cores/remote-thread-list/useRemoteThreadListRuntime.d.ts +0 -2
  492. package/dist/legacy-runtime/runtime-cores/remote-thread-list/useRemoteThreadListRuntime.d.ts.map +0 -1
  493. package/dist/legacy-runtime/runtime-cores/remote-thread-list/useRemoteThreadListRuntime.js +0 -3
  494. package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.d.ts +0 -4
  495. package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.d.ts.map +0 -1
  496. package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.js +0 -3
  497. package/dist/utils/hooks/useOnResizeContent.d.ts +0 -2
  498. package/dist/utils/hooks/useOnResizeContent.d.ts.map +0 -1
  499. package/dist/utils/hooks/useOnResizeContent.js +0 -21
  500. package/dist/utils/hooks/useOnResizeContent.js.map +0 -1
  501. package/src/context/providers/ChainOfThoughtPartByIndexProvider.tsx +0 -3
  502. package/src/legacy-runtime/RuntimeAdapter.ts +0 -1
  503. package/src/legacy-runtime/cloud/AssistantCloudThreadHistoryAdapter.ts +0 -3
  504. package/src/legacy-runtime/runtime/AssistantRuntime.ts +0 -2
  505. package/src/legacy-runtime/runtime/AttachmentRuntime.ts +0 -7
  506. package/src/legacy-runtime/runtime/ComposerRuntime.ts +0 -20
  507. package/src/legacy-runtime/runtime/RuntimeBindings.ts +0 -12
  508. package/src/legacy-runtime/runtime/RuntimePathTypes.ts +0 -8
  509. package/src/legacy-runtime/runtime/ThreadListItemRuntime.ts +0 -10
  510. package/src/legacy-runtime/runtime/ThreadRuntime.ts +0 -14
  511. package/src/legacy-runtime/runtime-cores/adapters/RuntimeAdapterProvider.tsx +0 -7
  512. package/src/legacy-runtime/runtime-cores/adapters/attachment/CloudFileAttachmentAdapter.ts +0 -3
  513. package/src/legacy-runtime/runtime-cores/composer/BaseComposerRuntimeCore.ts +0 -1
  514. package/src/legacy-runtime/runtime-cores/composer/DefaultEditComposerRuntimeCore.ts +0 -1
  515. package/src/legacy-runtime/runtime-cores/composer/DefaultThreadComposerRuntimeCore.ts +0 -1
  516. package/src/legacy-runtime/runtime-cores/core/AssistantRuntimeCore.ts +0 -1
  517. package/src/legacy-runtime/runtime-cores/core/BaseAssistantRuntimeCore.ts +0 -1
  518. package/src/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.ts +0 -1
  519. package/src/legacy-runtime/runtime-cores/core/ComposerRuntimeCore.ts +0 -6
  520. package/src/legacy-runtime/runtime-cores/core/ThreadListRuntimeCore.ts +0 -4
  521. package/src/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.ts +0 -13
  522. package/src/legacy-runtime/runtime-cores/external-store/ExternalStoreAdapter.ts +0 -6
  523. package/src/legacy-runtime/runtime-cores/external-store/ExternalStoreRuntimeCore.ts +0 -1
  524. package/src/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadListRuntimeCore.ts +0 -2
  525. package/src/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadRuntimeCore.ts +0 -4
  526. package/src/legacy-runtime/runtime-cores/external-store/ThreadMessageConverter.ts +0 -2
  527. package/src/legacy-runtime/runtime-cores/external-store/ThreadMessageLike.ts +0 -2
  528. package/src/legacy-runtime/runtime-cores/external-store/auto-status.ts +0 -1
  529. package/src/legacy-runtime/runtime-cores/external-store/createMessageConverter.ts +0 -2
  530. package/src/legacy-runtime/runtime-cores/external-store/external-message-converter.ts +0 -7
  531. package/src/legacy-runtime/runtime-cores/external-store/useExternalStoreRuntime.ts +0 -3
  532. package/src/legacy-runtime/runtime-cores/local/ChatModelAdapter.ts +0 -7
  533. package/src/legacy-runtime/runtime-cores/local/LocalRuntimeCore.ts +0 -1
  534. package/src/legacy-runtime/runtime-cores/local/LocalRuntimeOptions.ts +0 -3
  535. package/src/legacy-runtime/runtime-cores/local/LocalThreadListRuntimeCore.ts +0 -2
  536. package/src/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.ts +0 -1
  537. package/src/legacy-runtime/runtime-cores/local/shouldContinue.ts +0 -1
  538. package/src/legacy-runtime/runtime-cores/local/useLocalRuntime.ts +0 -3
  539. package/src/legacy-runtime/runtime-cores/remote-thread-list/BaseSubscribable.ts +0 -1
  540. package/src/legacy-runtime/runtime-cores/remote-thread-list/EMPTY_THREAD_CORE.ts +0 -1
  541. package/src/legacy-runtime/runtime-cores/remote-thread-list/OptimisticState.ts +0 -1
  542. package/src/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +0 -3
  543. package/src/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +0 -3
  544. package/src/legacy-runtime/runtime-cores/remote-thread-list/adapter/cloud.tsx +0 -3
  545. package/src/legacy-runtime/runtime-cores/remote-thread-list/adapter/in-memory.ts +0 -1
  546. package/src/legacy-runtime/runtime-cores/remote-thread-list/types.ts +0 -7
  547. package/src/legacy-runtime/runtime-cores/remote-thread-list/useRemoteThreadListRuntime.ts +0 -3
  548. package/src/legacy-runtime/runtime-cores/utils/MessageRepository.ts +0 -3
  549. package/src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.ts +0 -49
  550. package/src/utils/hooks/useOnResizeContent.ts +0 -15
@@ -7,7 +7,7 @@ import { AssistantRuntimeProvider } from "../context";
7
7
  import * as MessagePartPrimitive from "../primitives/messagePart";
8
8
  import * as MessagePrimitive from "../primitives/message";
9
9
  import * as ThreadPrimitive from "../primitives/thread";
10
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
10
+ import { useLocalRuntime } from "@assistant-ui/core/react";
11
11
  import type { ChatModelAdapter, ThreadMessageLike } from "../index";
12
12
 
13
13
  const noOpAdapter: ChatModelAdapter = {
@@ -8,9 +8,9 @@ import {
8
8
  useRemoteThreadListRuntime,
9
9
  useRuntimeAdapters,
10
10
  type RuntimeAdapters as RuntimeAdaptersShape,
11
+ useLocalRuntime,
11
12
  } from "@assistant-ui/core/react";
12
13
  import { makeAdapter } from "./remote-thread-list-test-helpers";
13
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
14
14
  import { AssistantRuntimeProvider } from "../context";
15
15
  import type { ChatModelAdapter, RemoteThreadListAdapter } from "../index";
16
16
  import type { ThreadHistoryAdapter } from "@assistant-ui/core";
@@ -3,12 +3,14 @@
3
3
  import { act, render } from "@testing-library/react";
4
4
  import { type FC, type PropsWithChildren, useState } from "react";
5
5
  import { afterEach, describe, expect, it, vi } from "vitest";
6
- import { useRemoteThreadListRuntime } from "@assistant-ui/core/react";
6
+ import {
7
+ useRemoteThreadListRuntime,
8
+ useLocalRuntime,
9
+ } from "@assistant-ui/core/react";
7
10
  import { makeAdapter } from "./remote-thread-list-test-helpers";
8
11
  import type { AssistantRuntime } from "@assistant-ui/core";
9
12
  import { useAui } from "@assistant-ui/store";
10
13
  import { AssistantRuntimeProvider } from "../context";
11
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
12
14
  import type { ChatModelAdapter, RemoteThreadListAdapter } from "../index";
13
15
 
14
16
  const noOpAdapter: ChatModelAdapter = {
@@ -4,12 +4,14 @@ import { act, render, waitFor } from "@testing-library/react";
4
4
  import { type FC, useEffect } from "react";
5
5
  import { describe, expect, it } from "vitest";
6
6
  import type { AssistantRuntime } from "@assistant-ui/core";
7
- import { useRemoteThreadListRuntime } from "@assistant-ui/core/react";
7
+ import {
8
+ useRemoteThreadListRuntime,
9
+ useLocalRuntime,
10
+ } from "@assistant-ui/core/react";
8
11
  import {
9
12
  makeAdapter,
10
13
  settleOutsideAct,
11
14
  } from "./remote-thread-list-test-helpers";
12
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
13
15
  import { AssistantRuntimeProvider } from "../context";
14
16
  import type { ChatModelAdapter } from "../index";
15
17
 
@@ -6,7 +6,7 @@ import { describe, expect, it, vi } from "vitest";
6
6
  import { AssistantRuntimeProvider } from "../context";
7
7
  import * as MessagePrimitive from "../primitives/message";
8
8
  import * as ThreadPrimitive from "../primitives/thread";
9
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
9
+ import { useLocalRuntime } from "@assistant-ui/core/react";
10
10
  import type {
11
11
  ChatModelAdapter,
12
12
  GenerativeUISpec,
@@ -5,8 +5,8 @@ import type { FC } from "react";
5
5
  import { describe, it, expect } from "vitest";
6
6
  import { useAui } from "@assistant-ui/store";
7
7
  import { AssistantRuntimeProvider } from "../context";
8
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
9
- import type { ChatModelAdapter } from "../legacy-runtime/runtime-cores/local/ChatModelAdapter";
8
+ import { useLocalRuntime } from "@assistant-ui/core/react";
9
+ import type { ChatModelAdapter } from "@assistant-ui/core";
10
10
 
11
11
  const flush = () => new Promise<void>((resolve) => setTimeout(resolve, 0));
12
12
 
@@ -6,8 +6,8 @@ import { Component, useEffect, useState, type FC, type ReactNode } from "react";
6
6
  import { afterEach, describe, expect, it, vi } from "vitest";
7
7
  import { useAui, useAuiState } from "@assistant-ui/store";
8
8
  import { AssistantRuntimeProvider, PartByIndexProvider } from "../context";
9
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
10
- import type { ChatModelAdapter } from "../legacy-runtime/runtime-cores/local/ChatModelAdapter";
9
+ import { useLocalRuntime } from "@assistant-ui/core/react";
10
+ import type { ChatModelAdapter } from "@assistant-ui/core";
11
11
  import * as ThreadPrimitive from "../primitives/thread";
12
12
  import * as MessagePrimitive from "../primitives/message";
13
13
  import { useMessagePartText } from "../primitives/messagePart/useMessagePartText";
@@ -7,7 +7,7 @@ import { AssistantRuntimeProvider } from "../context";
7
7
  import * as MessagePartPrimitive from "../primitives/messagePart";
8
8
  import * as MessagePrimitive from "../primitives/message";
9
9
  import * as ThreadPrimitive from "../primitives/thread";
10
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
10
+ import { useLocalRuntime } from "@assistant-ui/core/react";
11
11
  import {
12
12
  useMessagePartReasoning,
13
13
  useMessagePartSource,
@@ -4,7 +4,11 @@ import { act, render, screen, waitFor } from "@testing-library/react";
4
4
  import { type FC, useEffect, useReducer } from "react";
5
5
  import { describe, expect, it } from "vitest";
6
6
  import type { ThreadMessage } from "@assistant-ui/core";
7
- import { useRemoteThreadListRuntime } from "@assistant-ui/core/react";
7
+ import {
8
+ useRemoteThreadListRuntime,
9
+ useLocalRuntime,
10
+ useExternalStoreRuntime,
11
+ } from "@assistant-ui/core/react";
8
12
  import {
9
13
  makeAdapter,
10
14
  settleOutsideAct,
@@ -17,8 +21,6 @@ import {
17
21
  type AssistantRuntime,
18
22
  type ChatModelAdapter,
19
23
  } from "../index";
20
- import { useExternalStoreRuntime } from "../legacy-runtime/runtime-cores/external-store/useExternalStoreRuntime";
21
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
22
24
 
23
25
  const Probe: FC = () => {
24
26
  const id = useAuiState((s) => s.threadListItem.id);
@@ -6,7 +6,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
6
6
  import { AssistantRuntimeProvider } from "../context";
7
7
  import * as MessagePrimitive from "../primitives/message";
8
8
  import * as ThreadPrimitive from "../primitives/thread";
9
- import { useLocalRuntime } from "../legacy-runtime/runtime-cores/local/useLocalRuntime";
9
+ import { useLocalRuntime } from "@assistant-ui/core/react";
10
10
  import {
11
11
  type ChatModelAdapter,
12
12
  type ThreadMessageLike,
@@ -100,7 +100,7 @@ describe("unstable_useComposerInput", () => {
100
100
  it("writes text via flushTapSync when editing", () => {
101
101
  renderInput()().setText("world");
102
102
  expect(flushTapSync).toHaveBeenCalledTimes(1);
103
- expect(composerSetText).toHaveBeenCalledWith("world");
103
+ expect(composerSetText).toHaveBeenCalledWith("world", { origin: "user" });
104
104
  });
105
105
 
106
106
  it("ignores setText when the composer is not editing (editing guard)", () => {
@@ -89,7 +89,7 @@ export function unstable_useComposerInput(
89
89
  (text: string) => {
90
90
  if (!aui.composer.getState().isEditing) return;
91
91
  flushTapSync(() => {
92
- aui.composer.setText(text);
92
+ aui.composer.setText(text, { origin: "user" });
93
93
  });
94
94
  },
95
95
  [aui],
@@ -12,6 +12,7 @@ const setText = vi.fn();
12
12
 
13
13
  vi.mock("@assistant-ui/store", () => ({
14
14
  useAui: () => ({
15
+ optional: { threads: {} },
15
16
  composer: {
16
17
  getState: () => ({ type: fixture.composerType }),
17
18
  setText,
@@ -81,7 +82,7 @@ describe("unstable_useComposerInputHistory", () => {
81
82
  const { textarea } = setup("");
82
83
  const notPrevented = arrow(textarea, "ArrowUp");
83
84
  expect(notPrevented).toBe(false);
84
- expect(setText).toHaveBeenCalledWith("second");
85
+ expect(setText).toHaveBeenCalledWith("second", { origin: "recall" });
85
86
  });
86
87
 
87
88
  it("steps to older entries and consumes the key at the oldest", () => {
@@ -89,7 +90,7 @@ describe("unstable_useComposerInputHistory", () => {
89
90
  arrow(textarea, "ArrowUp");
90
91
  textarea.value = "second";
91
92
  arrow(textarea, "ArrowUp");
92
- expect(setText).toHaveBeenLastCalledWith("first");
93
+ expect(setText).toHaveBeenLastCalledWith("first", { origin: "recall" });
93
94
 
94
95
  textarea.value = "first";
95
96
  const notPrevented = arrow(textarea, "ArrowUp");
@@ -102,7 +103,7 @@ describe("unstable_useComposerInputHistory", () => {
102
103
  arrow(textarea, "ArrowUp");
103
104
  textarea.value = "second";
104
105
  arrow(textarea, "ArrowDown");
105
- expect(setText).toHaveBeenLastCalledWith(" ");
106
+ expect(setText).toHaveBeenLastCalledWith(" ", { origin: "recall" });
106
107
 
107
108
  textarea.value = " ";
108
109
  const notPrevented = arrow(textarea, "ArrowDown");
@@ -121,7 +122,9 @@ describe("unstable_useComposerInputHistory", () => {
121
122
  fixture.messages = [user("other"), user("line1\nline2")];
122
123
  const { textarea } = setup("");
123
124
  arrow(textarea, "ArrowUp");
124
- expect(setText).toHaveBeenLastCalledWith("line1\nline2");
125
+ expect(setText).toHaveBeenLastCalledWith("line1\nline2", {
126
+ origin: "recall",
127
+ });
125
128
  textarea.value = "line1\nline2";
126
129
  textarea.setSelectionRange(8, 8);
127
130
  const notPrevented = arrow(textarea, "ArrowUp");
@@ -164,10 +167,10 @@ describe("unstable_useComposerInputHistory", () => {
164
167
  ];
165
168
  const { textarea } = setup("");
166
169
  arrow(textarea, "ArrowUp");
167
- expect(setText).toHaveBeenLastCalledWith("second");
170
+ expect(setText).toHaveBeenLastCalledWith("second", { origin: "recall" });
168
171
  textarea.value = "second";
169
172
  arrow(textarea, "ArrowUp");
170
- expect(setText).toHaveBeenLastCalledWith("first");
173
+ expect(setText).toHaveBeenLastCalledWith("first", { origin: "recall" });
171
174
  textarea.value = "first";
172
175
  arrow(textarea, "ArrowUp");
173
176
  expect(setText).toHaveBeenCalledTimes(2);
@@ -179,7 +182,7 @@ describe("unstable_useComposerInputHistory", () => {
179
182
  fixture.messages = [...fixture.messages, user("third")];
180
183
  textarea.value = "";
181
184
  arrow(textarea, "ArrowUp");
182
- expect(setText).toHaveBeenLastCalledWith("third");
185
+ expect(setText).toHaveBeenLastCalledWith("third", { origin: "recall" });
183
186
  });
184
187
 
185
188
  it("is inert on edit composers", () => {
@@ -0,0 +1,123 @@
1
+ // @vitest-environment jsdom
2
+
3
+ import {
4
+ act,
5
+ cleanup,
6
+ fireEvent,
7
+ render,
8
+ screen,
9
+ waitFor,
10
+ } from "@testing-library/react";
11
+ import { afterEach, expect, it } from "vitest";
12
+ import {
13
+ AuiConfig,
14
+ AuiProvider,
15
+ Derived,
16
+ useAui,
17
+ useAuiState,
18
+ } from "@assistant-ui/store";
19
+ import { ExternalThread, InMemoryThreadList } from "@assistant-ui/core/store";
20
+ import { resource, useResource } from "@assistant-ui/tap";
21
+ import type { ThreadMessage } from "@assistant-ui/core";
22
+ import { unstable_useComposerInputHistory } from "./useComposerInputHistory";
23
+
24
+ const messages: ThreadMessage[] = [
25
+ {
26
+ id: "user-1",
27
+ role: "user",
28
+ createdAt: new Date(0),
29
+ content: [{ type: "text", text: "Previous question" }],
30
+ attachments: [],
31
+ metadata: { custom: {} },
32
+ },
33
+ ];
34
+ const StandaloneThread = resource(function useStandaloneThread() {
35
+ return useResource(ExternalThread({ messages }));
36
+ });
37
+ const Input = () => {
38
+ const aui = useAui();
39
+ const value = useAuiState((s) => s.composer.text);
40
+ const history = unstable_useComposerInputHistory();
41
+ return (
42
+ <textarea
43
+ aria-label="Composer"
44
+ value={value}
45
+ onChange={(e) => aui.composer.setText(e.target.value)}
46
+ {...history}
47
+ />
48
+ );
49
+ };
50
+ const StandaloneApp = () => {
51
+ const config = AuiConfig({
52
+ thread: StandaloneThread(),
53
+ composer: Derived({
54
+ source: "thread",
55
+ query: {},
56
+ get: (aui) => aui.thread.composer(),
57
+ }),
58
+ });
59
+ return (
60
+ <AuiProvider config={config}>
61
+ <Input />
62
+ </AuiProvider>
63
+ );
64
+ };
65
+
66
+ afterEach(cleanup);
67
+
68
+ it("recalls history without a thread-list scope", async () => {
69
+ render(<StandaloneApp />);
70
+ const input = screen.getByRole("textbox", {
71
+ name: "Composer",
72
+ }) as HTMLTextAreaElement;
73
+ await act(async () => {
74
+ fireEvent.keyDown(input, { key: "ArrowUp" });
75
+ });
76
+ expect(input.value).toBe("Previous question");
77
+ await act(async () => {
78
+ fireEvent.keyDown(input, { key: "ArrowDown" });
79
+ });
80
+ expect(input.value).toBe("");
81
+ });
82
+
83
+ it("resets browsing when the thread switches without remounting the input", async () => {
84
+ let captured!: ReturnType<typeof useAui>;
85
+ const App = () => {
86
+ const aui = useAui({
87
+ threads: InMemoryThreadList({
88
+ thread: () => ExternalThread({ messages }),
89
+ }),
90
+ });
91
+ captured = aui;
92
+ return (
93
+ <AuiProvider value={aui}>
94
+ <Input />
95
+ </AuiProvider>
96
+ );
97
+ };
98
+ render(<App />);
99
+ const input = screen.getByRole("textbox", {
100
+ name: "Composer",
101
+ }) as HTMLTextAreaElement;
102
+ await act(async () => {
103
+ fireEvent.keyDown(input, { key: "ArrowUp" });
104
+ });
105
+ expect(input.value).toBe("Previous question");
106
+
107
+ const oldId = captured.threads.getState().mainThreadId;
108
+ await act(async () => {
109
+ captured.threads.switchToNewThread();
110
+ });
111
+ await waitFor(() =>
112
+ expect(captured.threads.getState().mainThreadId).not.toBe(oldId),
113
+ );
114
+ await act(async () => {
115
+ fireEvent.change(input, { target: { value: "Previous question" } });
116
+ });
117
+ input.setSelectionRange(input.value.length, input.value.length);
118
+ await act(async () => {
119
+ fireEvent.keyDown(input, { key: "ArrowDown" });
120
+ });
121
+ expect(screen.getByRole("textbox", { name: "Composer" })).toBe(input);
122
+ expect(input.value).toBe("Previous question");
123
+ });
@@ -71,7 +71,8 @@ export function unstable_useComposerInputHistory(): Unstable_ComposerInputHistor
71
71
  const browseRef = useRef<BrowseState | null>(null);
72
72
 
73
73
  useEffect(() => {
74
- if (aui.composer.getState().type !== "thread") return undefined;
74
+ if (aui.composer.getState().type !== "thread" || !aui.optional.threads)
75
+ return undefined;
75
76
 
76
77
  return aui.on("threads.selectionChanged", () => {
77
78
  browseRef.current = null;
@@ -97,7 +98,7 @@ export function unstable_useComposerInputHistory(): Unstable_ComposerInputHistor
97
98
  const browse = browseRef.current;
98
99
 
99
100
  const commitText = (text: string): void => {
100
- flushTapSync(() => aui.composer.setText(text));
101
+ flushTapSync(() => aui.composer.setText(text, { origin: "recall" }));
101
102
  // React's controlled-value commit restores the pre-recall caret;
102
103
  // reposition after the commit, before paint.
103
104
  requestAnimationFrame(() => {
@@ -243,6 +243,50 @@ describe("unstable_useLiveCompletionAdapter", () => {
243
243
  expect(result.current.isLoading).toBe(false);
244
244
  });
245
245
 
246
+ it.each(["queued", "debounced"] as const)(
247
+ "cancels a %s search when disabled and allows searching after re-enabling",
248
+ async (phase) => {
249
+ const fetcher = vi.fn(async () => [item("alice")]);
250
+ const { result, rerender } = renderHook(
251
+ ({ enabled }) =>
252
+ unstable_useLiveCompletionAdapter({
253
+ fetcher,
254
+ enabled,
255
+ debounceMs: 50,
256
+ }),
257
+ { initialProps: { enabled: true } },
258
+ );
259
+
260
+ if (phase === "debounced") {
261
+ await act(async () => {
262
+ result.current.adapter.search!("alice");
263
+ });
264
+ rerender({ enabled: false });
265
+ } else {
266
+ act(() => {
267
+ result.current.adapter.search!("alice");
268
+ rerender({ enabled: false });
269
+ });
270
+ }
271
+ await act(async () => {
272
+ await vi.advanceTimersByTimeAsync(50);
273
+ });
274
+
275
+ expect(fetcher).not.toHaveBeenCalled();
276
+ expect(result.current.adapter.search!("alice")).toEqual([]);
277
+ expect(result.current.isLoading).toBe(false);
278
+
279
+ rerender({ enabled: true });
280
+ await act(async () => {
281
+ result.current.adapter.search!("alice");
282
+ await vi.advanceTimersByTimeAsync(50);
283
+ });
284
+ expect(fetcher).toHaveBeenCalledExactlyOnceWith("alice");
285
+ expect(result.current.adapter.search!("alice")).toEqual([item("alice")]);
286
+ expect(result.current.isLoading).toBe(false);
287
+ },
288
+ );
289
+
246
290
  it("drops a stale in-flight result when the query changes", async () => {
247
291
  const resolvers: Record<
248
292
  string,
@@ -192,10 +192,11 @@ export function unstable_useLiveCompletionAdapter(
192
192
  categories: () => [],
193
193
  categoryItems: () => [],
194
194
  search: (query: string) => {
195
+ if (!enabled) return [];
195
196
  // search() runs inside the popover's render; defer state updates with
196
197
  // queueMicrotask so they are not dispatched while another component renders.
197
198
  if (query !== state.query || retryableQueryRef.current === query) {
198
- queueMicrotask(() => scheduleFetch(query));
199
+ queueMicrotask(() => scheduleFetchRef.current(query));
199
200
  } else {
200
201
  queueMicrotask(() => {
201
202
  if (
@@ -215,7 +216,7 @@ export function unstable_useLiveCompletionAdapter(
215
216
  return state.items;
216
217
  },
217
218
  }),
218
- [state, scheduleFetch, invalidatePending],
219
+ [enabled, state, invalidatePending],
219
220
  );
220
221
 
221
222
  return { adapter, isLoading };
@@ -466,15 +466,25 @@ describe("toWebMcpTool cancellation", () => {
466
466
  const caller = new AbortController();
467
467
  const callerRemove = vi.spyOn(caller.signal, "removeEventListener");
468
468
  const lifecycleRemove = vi.spyOn(lifecycle.signal, "removeEventListener");
469
+ const onAbort = vi.fn();
469
470
 
470
471
  const result = await descriptorFor(
471
- { execute: async () => "ok" },
472
+ {
473
+ execute: async (_args, context) => {
474
+ context.abortSignal.addEventListener("abort", onAbort);
475
+ return "ok";
476
+ },
477
+ },
472
478
  lifecycle.signal,
473
479
  ).execute({}, { signal: caller.signal });
474
480
 
475
481
  expect(result).toEqual({ content: [text("ok")] });
476
482
  expect(callerRemove).toHaveBeenCalledTimes(1);
477
483
  expect(lifecycleRemove).toHaveBeenCalledTimes(1);
484
+
485
+ caller.abort();
486
+ lifecycle.abort();
487
+ expect(onAbort).not.toHaveBeenCalled();
478
488
  });
479
489
 
480
490
  it("merges a caller signal that is not a native AbortSignal", async () => {
@@ -0,0 +1,35 @@
1
+ // @vitest-environment jsdom
2
+
3
+ import { act, cleanup, renderHook } from "@testing-library/react";
4
+ import { afterEach, expect, it, vi } from "vitest";
5
+ import { useMediaQuery } from "./useMediaQuery";
6
+
7
+ afterEach(() => {
8
+ cleanup();
9
+ vi.unstubAllGlobals();
10
+ });
11
+
12
+ it("updates when a media query changes after mounting", () => {
13
+ const media = Object.assign(new EventTarget(), {
14
+ matches: false,
15
+ media: "(prefers-reduced-motion: reduce)",
16
+ });
17
+ vi.stubGlobal(
18
+ "matchMedia",
19
+ vi.fn(() => media),
20
+ );
21
+ const { result } = renderHook(() => useMediaQuery(media.media));
22
+ expect(result.current).toBe(false);
23
+
24
+ act(() => {
25
+ media.matches = true;
26
+ media.dispatchEvent(new Event("change"));
27
+ });
28
+ expect(result.current).toBe(true);
29
+
30
+ act(() => {
31
+ media.matches = false;
32
+ media.dispatchEvent(new Event("change"));
33
+ });
34
+ expect(result.current).toBe(false);
35
+ });