@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
@@ -1 +1 @@
1
- {"version":3,"file":"ChainOfThoughtAccordionTrigger.js","names":["c","_c","ActionButtonElement","ActionButtonProps","createActionButton","useCallback","useAuiState","useAui","useChainOfThoughtAccordionTrigger","$","aui","collapsed","_temp","t0","chainOfThought","setCollapsed","callback","ChainOfThoughtPrimitiveAccordionTrigger","Element","Props","s","_c","callback"],"sources":["../../../src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.ts"],"sourcesContent":["\"use client\";\n\nimport {\n type ActionButtonElement,\n type ActionButtonProps,\n createActionButton,\n} from \"../../utils/createActionButton\";\nimport { useCallback } from \"react\";\nimport { useAuiState, useAui } from \"@assistant-ui/store\";\n\nconst useChainOfThoughtAccordionTrigger = () => {\n const aui = useAui();\n const collapsed = useAuiState((s) => s.chainOfThought.collapsed);\n\n const callback = useCallback(() => {\n aui.chainOfThought.setCollapsed(!collapsed);\n }, [aui, collapsed]);\n\n return callback;\n};\n\nexport namespace ChainOfThoughtPrimitiveAccordionTrigger {\n export type Element = ActionButtonElement;\n /**\n * Props for the ChainOfThoughtPrimitive.AccordionTrigger component.\n * Inherits all button element props and action button functionality.\n */\n export type Props = ActionButtonProps<\n typeof useChainOfThoughtAccordionTrigger\n >;\n}\n\n/**\n * A button component that toggles the collapsed state of the chain of thought accordion.\n *\n * This component automatically handles the toggle functionality, expanding or collapsing\n * the chain of thought parts when clicked.\n *\n * @example\n * ```tsx\n * <ChainOfThoughtPrimitive.AccordionTrigger>\n * Toggle Reasoning\n * </ChainOfThoughtPrimitive.AccordionTrigger>\n * ```\n */\nexport const ChainOfThoughtPrimitiveAccordionTrigger = createActionButton(\n \"ChainOfThoughtPrimitive.AccordionTrigger\",\n useChainOfThoughtAccordionTrigger,\n);\n"],"mappings":";;;;;;AAUA,MAAMQ,0CAAoC;CAAA,MAAAC,IAAAR,EAAA,CAAA;CACxC,MAAAS,MAAYH,OAAO;CACnB,MAAAI,YAAkBL,YAAYM,KAAiC;CAAE,IAAAC;CAAA,IAAAJ,EAAA,OAAAC,IAAAI,kBAAAL,EAAA,OAAAE,WAAA;EAEpCE,WAAA;GAC3BH,IAAGI,eAAeC,aAAc,CAACJ,SAAS;EAAC;EAC5CF,EAAA,KAAAC,IAAAI;EAAAL,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAoB,OAEdO;AAAQ;;;;;;;;;;;;;;AA2BjB,MAAaC,0CAA0Cb,mBACrD,4CACAI,iCACF;AAtC0C,SAAAI,MAAAQ,GAAA;CAAA,OAEHA,EAACN,eAAeH;AAAU"}
1
+ {"version":3,"file":"ChainOfThoughtAccordionTrigger.js","names":["c","_c","ActionButtonElement","ComponentPropsWithoutRef","forwardRef","useCallback","useAuiState","useAui","composeEventHandlers","Primitive","ChainOfThoughtPrimitiveAccordionTrigger","Element","Props","button","t0","ref","$","onClick","props","aui","collapsed","_temp","t1","chainOfThought","setCollapsed","toggle","t2","t3","t4","displayName","s","_c","Primitive"],"sources":["../../../src/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.tsx"],"sourcesContent":["\"use client\";\n\nimport type { ActionButtonElement } from \"../../utils/createActionButton\";\nimport { type ComponentPropsWithoutRef, forwardRef, useCallback } from \"react\";\nimport { useAuiState, useAui } from \"@assistant-ui/store\";\nimport { composeEventHandlers } from \"radix-ui/internal\";\nimport { Primitive } from \"../../utils/Primitive\";\n\nexport namespace ChainOfThoughtPrimitiveAccordionTrigger {\n export type Element = ActionButtonElement;\n /**\n * Props for the ChainOfThoughtPrimitive.AccordionTrigger component.\n * Inherits all button element props and action button functionality.\n */\n export type Props = ComponentPropsWithoutRef<typeof Primitive.button>;\n}\n\n/**\n * A button component that toggles the collapsed state of the chain of thought accordion.\n *\n * This component automatically handles the toggle functionality, expanding or collapsing\n * the chain of thought parts when clicked.\n * Exposes the current disclosure state through `aria-expanded`.\n *\n * @example\n * ```tsx\n * <ChainOfThoughtPrimitive.AccordionTrigger>\n * Toggle Reasoning\n * </ChainOfThoughtPrimitive.AccordionTrigger>\n * ```\n */\nexport const ChainOfThoughtPrimitiveAccordionTrigger = forwardRef<\n ChainOfThoughtPrimitiveAccordionTrigger.Element,\n ChainOfThoughtPrimitiveAccordionTrigger.Props\n>(({ onClick, ...props }, ref) => {\n const aui = useAui();\n const collapsed = useAuiState((s) => s.chainOfThought.collapsed);\n const toggle = useCallback(() => {\n aui.chainOfThought.setCollapsed(!collapsed);\n }, [aui, collapsed]);\n\n return (\n <Primitive.button\n type=\"button\"\n {...props}\n ref={ref}\n aria-expanded={!collapsed}\n onClick={composeEventHandlers(onClick, toggle)}\n />\n );\n});\n\nChainOfThoughtPrimitiveAccordionTrigger.displayName =\n \"ChainOfThoughtPrimitive.AccordionTrigger\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AA+BA,MAAaU,0CAA0CN,YAGrDU,IAAAC,QAAA;CAAA,MAAAC,IAAAf,EAAA,EAAA;CAAA,IAAAgB;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,IAAA;EAAC,CAAA,CAAAG,SAAA,GAAAC,SAAAJ;EAAqBE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,UAAAD,EAAA;EAAAE,QAAAF,EAAA;CAAA;CACtB,MAAAG,MAAYZ,OAAO;CACnB,MAAAa,YAAkBd,YAAYe,KAAiC;CAAE,IAAAC;CAAA,IAAAN,EAAA,OAAAG,OAAAH,EAAA,OAAAI,WAAA;EACtCE,WAAA;GACzBH,IAAGI,eAAeC,aAAc,CAACJ,SAAS;EAAC;EAC5CJ,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAFD,MAAAS,SAAeH;CASI,MAAAI,KAAA,CAACN;CAAS,IAAAO;CAAA,IAAAX,EAAA,OAAAC,WAAAD,EAAA,OAAAS,QAAA;EAChBE,KAAAnB,qBAAqBS,SAASQ,MAAM;EAACT,EAAA,KAAAC;EAAAD,EAAA,KAAAS;EAAAT,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAE,SAAAF,EAAA,QAAAD,OAAAC,EAAA,QAAAU,MAAAV,EAAA,QAAAW,IAAA;EALhDC,KAAA,oBAAAI,YAAA,QAAA;GACO,MAAA;GAAQ,GACTd;GACCH;GACU,iBAAAW;GACN,SAAAC;EAAqC,CAAA;EAC9CX,EAAA,KAAAE;EAAAF,EAAA,MAAAD;EAAAC,EAAA,MAAAU;EAAAV,EAAA,MAAAW;EAAAX,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,OANFY;AAME,CAEL;AAEDlB,wCAAwCmB,cACtC;AAnBA,SAAAR,MAAAS,GAAA;CAAA,OAEqCA,EAACP,eAAeH;AAAU"}
@@ -1,3 +1,2 @@
1
1
  "use client";
2
- import { ChainOfThoughtPrimitiveParts } from "@assistant-ui/core/react";
3
- export { ChainOfThoughtPrimitiveParts };
2
+ export { ChainOfThoughtPrimitiveParts } from "@assistant-ui/core/react";
@@ -22,7 +22,7 @@ export declare namespace ChainOfThoughtPrimitiveRoot {
22
22
  * ```
23
23
  */
24
24
  export declare const ChainOfThoughtPrimitiveRoot: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
25
- asChild?: boolean;
25
+ asChild?: boolean | undefined;
26
26
  }, "ref"> & {
27
27
  render?: import("react").ReactElement | undefined;
28
28
  } & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -3,7 +3,7 @@ import { Primitive } from "../../utils/Primitive.js";
3
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  import { forwardRef } from "@assistant-ui/tap/react-shim";
5
5
  import { jsx } from "react/jsx-runtime";
6
- //#region src/primitives/chainOfThought/ChainOfThoughtRoot.tsx
6
+ // src/primitives/chainOfThought/ChainOfThoughtRoot.tsx
7
7
  /**
8
8
  * The root container for chain of thought components.
9
9
  *
@@ -35,7 +35,6 @@ const ChainOfThoughtPrimitiveRoot = forwardRef((props, ref) => {
35
35
  return t0;
36
36
  });
37
37
  ChainOfThoughtPrimitiveRoot.displayName = "ChainOfThoughtPrimitive.Root";
38
- //#endregion
39
38
  export { ChainOfThoughtPrimitiveRoot };
40
39
 
41
40
  //# sourceMappingURL=ChainOfThoughtRoot.js.map
@@ -2,13 +2,12 @@ import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
2
  import { ChainOfThoughtPrimitiveRoot } from "./chainOfThought/ChainOfThoughtRoot.js";
3
3
  import { ChainOfThoughtPrimitiveAccordionTrigger } from "./chainOfThought/ChainOfThoughtAccordionTrigger.js";
4
4
  import { ChainOfThoughtPrimitiveParts } from "./chainOfThought/ChainOfThoughtParts.js";
5
- //#region src/primitives/chainOfThought.ts
5
+ // src/primitives/chainOfThought.ts
6
6
  var chainOfThought_exports = /* @__PURE__ */ __exportAll({
7
7
  AccordionTrigger: () => ChainOfThoughtPrimitiveAccordionTrigger,
8
8
  Parts: () => ChainOfThoughtPrimitiveParts,
9
9
  Root: () => ChainOfThoughtPrimitiveRoot
10
10
  });
11
- //#endregion
12
11
  export { ChainOfThoughtPrimitiveAccordionTrigger as AccordionTrigger, ChainOfThoughtPrimitiveParts as Parts, ChainOfThoughtPrimitiveRoot as Root, chainOfThought_exports };
13
12
 
14
13
  //# sourceMappingURL=chainOfThought.js.map
@@ -8,7 +8,7 @@ export declare namespace ComposerPrimitiveAddAttachment {
8
8
  type Props = ActionButtonProps<typeof useComposerAddAttachment>;
9
9
  }
10
10
  export declare const ComposerPrimitiveAddAttachment: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
11
- asChild?: boolean;
11
+ asChild?: boolean | undefined;
12
12
  }, "ref"> & {
13
13
  render?: import("react").ReactElement | undefined;
14
14
  } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & {
@@ -4,7 +4,7 @@ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  import { useComposerAddAttachment } from "@assistant-ui/core/react";
5
5
  import { useInsertionEffect, useRef } from "@assistant-ui/tap/react-shim";
6
6
  import { useAui } from "@assistant-ui/store";
7
- //#region src/primitives/composer/ComposerAddAttachment.ts
7
+ // src/primitives/composer/ComposerAddAttachment.ts
8
8
  const useComposerAddAttachment$1 = (t0) => {
9
9
  const $ = c(10);
10
10
  let t1;
@@ -71,7 +71,6 @@ const useComposerAddAttachment$1 = (t0) => {
71
71
  return callback;
72
72
  };
73
73
  const ComposerPrimitiveAddAttachment = createActionButton("ComposerPrimitive.AddAttachment", useComposerAddAttachment$1, ["multiple"]);
74
- //#endregion
75
74
  export { ComposerPrimitiveAddAttachment };
76
75
 
77
76
  //# sourceMappingURL=ComposerAddAttachment.js.map
@@ -5,7 +5,7 @@ import { useAui, useAuiState } from "@assistant-ui/store";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  import { composeEventHandlers } from "radix-ui/internal";
7
7
  import { Slot } from "radix-ui";
8
- //#region src/primitives/composer/ComposerAttachmentDropzone.tsx
8
+ // src/primitives/composer/ComposerAttachmentDropzone.tsx
9
9
  const ComposerPrimitiveAttachmentDropzone = forwardRef(({ disabled, asChild = false, render, children, ...rest }, ref) => {
10
10
  const [isDragging, setIsDragging] = useState(false);
11
11
  const aui = useAui();
@@ -74,7 +74,6 @@ const ComposerPrimitiveAttachmentDropzone = forwardRef(({ disabled, asChild = fa
74
74
  });
75
75
  });
76
76
  ComposerPrimitiveAttachmentDropzone.displayName = "ComposerPrimitive.AttachmentDropzone";
77
- //#endregion
78
77
  export { ComposerPrimitiveAttachmentDropzone };
79
78
 
80
79
  //# sourceMappingURL=ComposerAttachmentDropzone.js.map
@@ -1,3 +1,2 @@
1
1
  "use client";
2
- import { ComposerPrimitiveAttachmentByIndex, ComposerPrimitiveAttachments } from "@assistant-ui/core/react";
3
- export { ComposerPrimitiveAttachmentByIndex, ComposerPrimitiveAttachments };
2
+ export { ComposerPrimitiveAttachmentByIndex, ComposerPrimitiveAttachments } from "@assistant-ui/core/react";
@@ -26,7 +26,7 @@ export declare namespace ComposerPrimitiveCancel {
26
26
  * ```
27
27
  */
28
28
  export declare const ComposerPrimitiveCancel: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
29
- asChild?: boolean;
29
+ asChild?: boolean | undefined;
30
30
  }, "ref"> & {
31
31
  render?: import("react").ReactElement | undefined;
32
32
  } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -3,7 +3,7 @@ import { createActionButton } from "../../utils/createActionButton.js";
3
3
  import { useComposerCancelWithFocus } from "./useComposerCancelWithFocus.js";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  import { useComposerCancel } from "@assistant-ui/core/react";
6
- //#region src/primitives/composer/ComposerCancel.ts
6
+ // src/primitives/composer/ComposerCancel.ts
7
7
  const useComposerCancel$1 = () => {
8
8
  const $ = c(2);
9
9
  const { disabled, cancel } = useComposerCancel();
@@ -34,7 +34,6 @@ const useComposerCancel$1 = () => {
34
34
  * ```
35
35
  */
36
36
  const ComposerPrimitiveCancel = createActionButton("ComposerPrimitive.Cancel", useComposerCancel$1);
37
- //#endregion
38
37
  export { ComposerPrimitiveCancel };
39
38
 
40
39
  //# sourceMappingURL=ComposerCancel.js.map
@@ -1,11 +1,10 @@
1
1
  "use client";
2
2
  import { createContext, useContext } from "@assistant-ui/tap/react-shim";
3
- //#region src/primitives/composer/ComposerCompactContext.tsx
3
+ // src/primitives/composer/ComposerCompactContext.tsx
4
4
  const ComposerCompactContext = createContext(null);
5
5
  const useComposerCompactContextOptional = () => {
6
6
  return useContext(ComposerCompactContext);
7
7
  };
8
- //#endregion
9
8
  export { ComposerCompactContext, useComposerCompactContextOptional };
10
9
 
11
10
  //# sourceMappingURL=ComposerCompactContext.js.map
@@ -17,7 +17,7 @@ export declare namespace ComposerPrimitiveDictate {
17
17
  * ```
18
18
  */
19
19
  export declare const ComposerPrimitiveDictate: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
20
- asChild?: boolean;
20
+ asChild?: boolean | undefined;
21
21
  }, "ref"> & {
22
22
  render?: import("react").ReactElement | undefined;
23
23
  } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { createActionButton } from "../../utils/createActionButton.js";
3
3
  import { useComposerDictate } from "@assistant-ui/core/react";
4
- //#region src/primitives/composer/ComposerDictate.ts
4
+ // src/primitives/composer/ComposerDictate.ts
5
5
  const useComposerDictate$1 = () => {
6
6
  const { disabled, startDictation } = useComposerDictate();
7
7
  if (disabled) return null;
@@ -20,7 +20,6 @@ const useComposerDictate$1 = () => {
20
20
  * ```
21
21
  */
22
22
  const ComposerPrimitiveDictate = createActionButton("ComposerPrimitive.Dictate", useComposerDictate$1);
23
- //#endregion
24
23
  export { ComposerPrimitiveDictate };
25
24
 
26
25
  //# sourceMappingURL=ComposerDictate.js.map
@@ -20,7 +20,7 @@ export declare namespace ComposerPrimitiveDictationTranscript {
20
20
  * ```
21
21
  */
22
22
  export declare const ComposerPrimitiveDictationTranscript: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLSpanElement> & import("react").HTMLAttributes<HTMLSpanElement> & {
23
- asChild?: boolean;
23
+ asChild?: boolean | undefined;
24
24
  }, "ref"> & {
25
25
  render?: import("react").ReactElement | undefined;
26
26
  } & import("react").RefAttributes<HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
@@ -4,7 +4,7 @@ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  import { forwardRef } from "@assistant-ui/tap/react-shim";
5
5
  import { useAuiState } from "@assistant-ui/store";
6
6
  import { jsx } from "react/jsx-runtime";
7
- //#region src/primitives/composer/ComposerDictationTranscript.tsx
7
+ // src/primitives/composer/ComposerDictationTranscript.tsx
8
8
  /**
9
9
  * Renders the current interim (partial) transcript while dictation is active.
10
10
  *
@@ -54,7 +54,6 @@ ComposerPrimitiveDictationTranscript.displayName = "ComposerPrimitive.DictationT
54
54
  function _temp(s) {
55
55
  return s.composer.dictation?.transcript;
56
56
  }
57
- //#endregion
58
57
  export { ComposerPrimitiveDictationTranscript };
59
58
 
60
59
  //# sourceMappingURL=ComposerDictationTranscript.js.map
@@ -1,3 +1,2 @@
1
1
  "use client";
2
- import { ComposerPrimitiveIf } from "@assistant-ui/core/react";
3
- export { ComposerPrimitiveIf };
2
+ export { ComposerPrimitiveIf } from "@assistant-ui/core/react";
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerInput.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerInput.tsx"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,YAAY,EAOlB,MAAM,OAAO,CAAC;AACf,OAAyB,EACvB,KAAK,qBAAqB,EAE3B,MAAM,yBAAyB,CAAC;AAoBjC,yBAAiB,sBAAsB,CAAC;IACtC,MAAM,MAAM,OAAO,GAAG,mBAAmB,CAAC;IAE1C,KAAK,SAAS,GAAG;QACf;;;WAGG;QACH,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC9B;;WAEG;QACH,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;QAClC;;;;;WAKG;QACH,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACrC;;;;;;;;;WASG;QACH,wBAAwB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC/C;;;;;;WAMG;QACH,8BAA8B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACrD;;;;;;WAMG;QACH,8BAA8B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACrD;;;;;;;;;WASG;QACH,kCAAkC,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACzD;;;WAGG;QACH,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAC5C,CAAC;IAEF,KAAK,eAAe,GAChB;QACE;;;;;;WAMG;QACH,UAAU,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;QACxD;;;WAGG;QACH,aAAa,CAAC,EAAE,KAAK,CAAC;KACvB,GACD;QACE,UAAU,CAAC,EAAE,KAAK,CAAC;QACnB;;;;WAIG;QACH,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACrC,CAAC;IAEN,MAAM,MAAM,KAAK,GAAG,qBAAqB,GAAG,SAAS,GAAG,eAAe,CAAC;;CACzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,sBAAsB,8HA0UlC,CAAC"}
1
+ {"version":3,"file":"ComposerInput.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerInput.tsx"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,YAAY,EAOlB,MAAM,OAAO,CAAC;AACf,OAAyB,EACvB,KAAK,qBAAqB,EAE3B,MAAM,yBAAyB,CAAC;AAoBjC,yBAAiB,sBAAsB,CAAC;IACtC,MAAM,MAAM,OAAO,GAAG,mBAAmB,CAAC;IAE1C,KAAK,SAAS,GAAG;QACf;;;WAGG;QACH,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC9B;;WAEG;QACH,MAAM,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;QAClC;;;;;WAKG;QACH,cAAc,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACrC;;;;;;;;;WASG;QACH,wBAAwB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC/C;;;;;;WAMG;QACH,8BAA8B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACrD;;;;;;WAMG;QACH,8BAA8B,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACrD;;;;;;;;;WASG;QACH,kCAAkC,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QACzD;;;WAGG;QACH,oBAAoB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KAC5C,CAAC;IAEF,KAAK,eAAe,GAChB;QACE;;;;;;WAMG;QACH,UAAU,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;QACxD;;;WAGG;QACH,aAAa,CAAC,EAAE,KAAK,CAAC;KACvB,GACD;QACE,UAAU,CAAC,EAAE,KAAK,CAAC;QACnB;;;;WAIG;QACH,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;KACrC,CAAC;IAEN,MAAM,MAAM,KAAK,GAAG,qBAAqB,GAAG,SAAS,GAAG,eAAe,CAAC;;CACzE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,sBAAsB,8HA2UlC,CAAC"}
@@ -15,7 +15,7 @@ import { jsx } from "react/jsx-runtime";
15
15
  import { composeEventHandlers, useComposedRefs, useEscapeKeydown } from "radix-ui/internal";
16
16
  import { Slot } from "radix-ui";
17
17
  import TextareaAutosize from "react-textarea-autosize";
18
- //#region src/primitives/composer/ComposerInput.tsx
18
+ // src/primitives/composer/ComposerInput.tsx
19
19
  const TOUCH_PRIMARY_QUERY = "(pointer: coarse) and (not (any-pointer: fine))";
20
20
  /**
21
21
  * A text input component for composing messages.
@@ -155,7 +155,7 @@ const ComposerPrimitiveInput = forwardRef(({ autoFocus = false, asChild, render,
155
155
  aui
156
156
  ]);
157
157
  useEffect(() => {
158
- if (aui.composer.getState().type !== "thread" || !unstable_focusOnThreadSwitched) return void 0;
158
+ if (aui.composer.getState().type !== "thread" || !unstable_focusOnThreadSwitched || !aui.optional.threads) return void 0;
159
159
  return aui.on("threads.selectionChanged", focus);
160
160
  }, [
161
161
  unstable_focusOnThreadSwitched,
@@ -179,7 +179,7 @@ const ComposerPrimitiveInput = forwardRef(({ autoFocus = false, asChild, render,
179
179
  if (compositionRef.current && !nativeIsComposing) compositionRef.current = false;
180
180
  const isComposing = nativeIsComposing || compositionRef.current;
181
181
  flushTapSync(() => {
182
- aui.composer.setText(e_2.target.value);
182
+ aui.composer.setText(e_2.target.value, { origin: "user" });
183
183
  });
184
184
  if (isComposing) return;
185
185
  const pos = e_2.target.selectionStart ?? e_2.target.value.length;
@@ -194,7 +194,7 @@ const ComposerPrimitiveInput = forwardRef(({ autoFocus = false, asChild, render,
194
194
  if (!aui.composer.getState().isEditing) return;
195
195
  const target = e_3.target;
196
196
  flushTapSync(() => {
197
- aui.composer.setText(target.value);
197
+ aui.composer.setText(target.value, { origin: "user" });
198
198
  });
199
199
  const pos_0 = target.selectionStart ?? target.value.length;
200
200
  if (pluginRegistry) for (const plugin_2 of pluginRegistry.getPlugins()) plugin_2.setCursorPosition(pos_0);
@@ -213,7 +213,6 @@ const ComposerPrimitiveInput = forwardRef(({ autoFocus = false, asChild, render,
213
213
  return /* @__PURE__ */ jsx(Component, { ...inputProps });
214
214
  });
215
215
  ComposerPrimitiveInput.displayName = "ComposerPrimitive.Input";
216
- //#endregion
217
216
  export { ComposerPrimitiveInput };
218
217
 
219
218
  //# sourceMappingURL=ComposerInput.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ComposerInput.js","names":["composeEventHandlers","useComposedRefs","Slot","ClipboardEvent","KeyboardEvent","ReactElement","ReactNode","forwardRef","useCallback","useEffect","useRef","isValidElement","TextareaAutosize","TextareaAutosizeProps","TextareaHeightChangeMeta","useEscapeKeydown","useOnScrollToBottom","useMediaQuery","renderSlot","isCompositionKey","useAui","flushTapSync","useComposerInputPluginRegistryOptional","useComposerCompactContextOptional","useComposerCancelWithFocus","useThreadRootElementRef","useComposerInputDisabled","useComposerInputValue","useTriggerPopoverAriaProps","TOUCH_PRIMARY_QUERY","ComposerPrimitiveInput","Element","HTMLTextAreaElement","BaseProps","asChild","render","cancelOnEscape","unstable_focusOnRunStart","unstable_focusOnScrollToBottom","unstable_focusOnThreadSwitched","unstable_insertNewlineOnTouchEnter","addAttachmentOnPaste","SubmitModeProps","submitMode","submitOnEnter","Props","autoFocus","disabled","disabledProp","onChange","onKeyDown","onPaste","onSelect","onHeightChange","rest","forwardedRef","aui","threadRootRef","pluginRegistry","compactContext","declaredSubmitMode","isTouchPrimary","effectiveSubmitMode","value","isDisabled","textareaRef","cancel","composer","ref","compositionRef","e","current","contains","target","Node","plugin","getPlugins","handleKeyDown","getState","canCancel","preventDefault","handleKeyPress","nativeEvent","key","threadState","thread","hasQueue","capabilities","queue","shiftKey","ctrlKey","metaKey","canSend","send","steer","isRunning","voice","undefined","shouldSubmit","closest","requestSubmit","handlePaste","threadCapabilities","files","Array","from","clipboardData","attachments","length","Promise","all","map","file","addAttachment","handleHeightChange","height","meta","el","cs","getComputedStyle","contentHeight","boxSizing","parseFloat","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","Math","round","rowHeight","setMultiline","autoFocusEnabled","focus","textarea","preventScroll","setSelectionRange","focusOnRunStart","doc","ownerDocument","active","activeElement","root","composerRoot","body","type","on","ariaComboboxProps","inputProps","name","const","React","ForwardedRef","ChangeEvent","isEditing","nativeIsComposing","isComposing","setText","pos","selectionStart","setCursorPosition","onCompositionStart","CompositionEventHandler","onCompositionEnd","CompositionEvent","SyntheticEvent","children","Component","Root","displayName"],"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"radix-ui/internal\";\nimport { useComposedRefs } from \"radix-ui/internal\";\nimport { Slot } from \"radix-ui\";\nimport {\n type ClipboardEvent,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n isValidElement,\n} from \"react\";\nimport TextareaAutosize, {\n type TextareaAutosizeProps,\n type TextareaHeightChangeMeta,\n} from \"react-textarea-autosize\";\nimport { useEscapeKeydown } from \"radix-ui/internal\";\nimport { useOnScrollToBottom } from \"../../utils/hooks/useOnScrollToBottom\";\nimport { useMediaQuery } from \"../../utils/hooks/useMediaQuery\";\nimport { renderSlot } from \"../../utils/Primitive\";\nimport { isCompositionKey } from \"../../utils/isCompositionKey\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { flushTapSync } from \"@assistant-ui/tap\";\nimport { useComposerInputPluginRegistryOptional } from \"./ComposerInputPluginContext\";\nimport { useComposerCompactContextOptional } from \"./ComposerCompactContext\";\nimport { useComposerCancelWithFocus } from \"./useComposerCancelWithFocus\";\nimport { useThreadRootElementRef } from \"../thread/ThreadRootElementContext\";\nimport {\n useComposerInputDisabled,\n useComposerInputValue,\n useTriggerPopoverAriaProps,\n} from \"./useComposerInputState\";\n\nconst TOUCH_PRIMARY_QUERY = \"(pointer: coarse) and (not (any-pointer: fine))\";\n\nexport namespace ComposerPrimitiveInput {\n export type Element = HTMLTextAreaElement;\n\n type BaseProps = {\n /**\n * Whether to render as a child component using Slot.\n * When true, the component will merge its props with its child.\n */\n asChild?: boolean | undefined;\n /**\n * A React element to use as the input container, with props merged in.\n */\n render?: ReactElement | undefined;\n /**\n * Whether to cancel message composition when Escape is pressed.\n * After cancelling an edit, focus returns to the main thread composer when\n * available, unless a handler has moved focus elsewhere.\n * @default true\n */\n cancelOnEscape?: boolean | undefined;\n /**\n * Whether to focus the input when a new run starts if nothing is focused\n * or focus is already inside the same thread or composer. Keeps the current\n * selection when the input is already focused. Applies when `autoFocus` is\n * enabled.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnRunStart?: boolean | undefined;\n /**\n * Whether to automatically focus the input when scrolling to bottom.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnScrollToBottom?: boolean | undefined;\n /**\n * Whether to automatically focus the input when switching threads.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnThreadSwitched?: boolean | undefined;\n /**\n * Whether plain Enter on a touch-primary device should insert a newline\n * instead of submitting, detected via\n * `(pointer: coarse) and (not (any-pointer: fine))`. Only takes effect\n * when `submitMode` resolves to `\"enter\"`.\n *\n * @deprecated Experimental since 2026-05-24. Not scheduled for removal; the API may change in any release.\n *\n * @default false\n */\n unstable_insertNewlineOnTouchEnter?: boolean | undefined;\n /**\n * Whether to automatically add pasted files as attachments.\n * @default true\n */\n addAttachmentOnPaste?: boolean | undefined;\n };\n\n type SubmitModeProps =\n | {\n /**\n * Controls how the Enter key submits messages.\n * - \"enter\": Plain Enter submits (Shift+Enter for newline)\n * - \"ctrlEnter\": Ctrl/Cmd+Enter submits (plain Enter for newline)\n * - \"none\": Keyboard submission disabled\n * @default \"enter\"\n */\n submitMode?: \"enter\" | \"ctrlEnter\" | \"none\" | undefined;\n /**\n * @deprecated Use `submitMode` instead\n * @ignore\n */\n submitOnEnter?: never;\n }\n | {\n submitMode?: never;\n /**\n * Whether to submit the message when Enter is pressed (without Shift).\n * @default true\n * @deprecated Use `submitMode` instead. Will be removed in a future version.\n */\n submitOnEnter?: boolean | undefined;\n };\n\n export type Props = TextareaAutosizeProps & BaseProps & SubmitModeProps;\n}\n\n/**\n * A text input component for composing messages.\n *\n * This component provides a rich text input experience with automatic resizing,\n * keyboard shortcuts, file paste support, and intelligent focus management.\n * It integrates with the composer context to manage message state and submission.\n *\n * When rendered inside `TriggerPopoverRoot` and a popover is open, the\n * underlying `<textarea>` automatically receives `aria-controls`,\n * `aria-expanded`, `aria-haspopup`, and `aria-activedescendant` for the\n * combobox relationship. These computed attributes override user-provided\n * values for those four ARIA props while the popover is open.\n *\n * @example\n * ```tsx\n * // Ctrl/Cmd+Enter to submit (plain Enter inserts newline)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitMode=\"ctrlEnter\"\n * />\n *\n * // Insert a newline on Enter on touch-primary devices.\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * unstable_insertNewlineOnTouchEnter\n * />\n *\n * // Old API (deprecated, still supported)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitOnEnter={true}\n * />\n * ```\n */\nexport const ComposerPrimitiveInput = forwardRef<\n ComposerPrimitiveInput.Element,\n ComposerPrimitiveInput.Props\n>(\n (\n {\n autoFocus = false,\n asChild,\n render,\n disabled: disabledProp,\n onChange,\n onKeyDown,\n onPaste,\n onSelect,\n submitOnEnter,\n submitMode,\n cancelOnEscape = true,\n unstable_focusOnRunStart = true,\n unstable_focusOnScrollToBottom = true,\n unstable_focusOnThreadSwitched = true,\n unstable_insertNewlineOnTouchEnter = false,\n addAttachmentOnPaste = true,\n onHeightChange,\n ...rest\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const threadRootRef = useThreadRootElementRef();\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n const compactContext = useComposerCompactContextOptional();\n\n const declaredSubmitMode =\n submitMode ?? (submitOnEnter === false ? \"none\" : \"enter\");\n const isTouchPrimary = useMediaQuery(\n unstable_insertNewlineOnTouchEnter ? TOUCH_PRIMARY_QUERY : null,\n );\n const effectiveSubmitMode =\n unstable_insertNewlineOnTouchEnter &&\n isTouchPrimary &&\n declaredSubmitMode === \"enter\"\n ? \"none\"\n : declaredSubmitMode;\n\n const value = useComposerInputValue();\n const isDisabled = useComposerInputDisabled(disabledProp);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const cancel = useComposerCancelWithFocus(\n useCallback(() => aui.composer.cancel(), [aui]),\n );\n const ref = useComposedRefs(forwardedRef, textareaRef);\n // suppress text/cursor broadcasts during IME composition\n const compositionRef = useRef(false);\n\n useEscapeKeydown((e) => {\n // Only handle ESC if it originated from within this input\n if (!textareaRef.current?.contains(e.target as Node)) return;\n\n // ignore IME composition events\n if (isCompositionKey(e)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle Escape first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (!cancelOnEscape) return;\n\n const composer = aui.composer;\n if (composer.getState().canCancel) {\n cancel(textareaRef.current);\n e.preventDefault();\n }\n });\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (isDisabled) return;\n\n // ignore IME composition events\n if (isCompositionKey(e.nativeEvent)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle keyboard events first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (e.key === \"Enter\") {\n const threadState = aui.thread.getState();\n const hasQueue = threadState.capabilities.queue;\n\n // Steer hotkey: Cmd/Ctrl+Shift+Enter (respects submitMode=\"none\" and canSend)\n if (\n e.shiftKey &&\n (e.ctrlKey || e.metaKey) &&\n hasQueue &&\n declaredSubmitMode !== \"none\" &&\n aui.composer.getState().canSend\n ) {\n e.preventDefault();\n aui.composer.send({ steer: true });\n return;\n }\n\n // Regular newline: Shift+Enter\n if (e.shiftKey) return;\n\n // Block submission when running unless queue is supported; a voice\n // session leaves the decision to canSend\n if (\n threadState.isRunning &&\n !hasQueue &&\n threadState.voice === undefined\n )\n return;\n\n let shouldSubmit = false;\n if (effectiveSubmitMode === \"ctrlEnter\") {\n shouldSubmit = e.ctrlKey || e.metaKey;\n } else if (effectiveSubmitMode === \"enter\") {\n shouldSubmit = true;\n }\n\n if (shouldSubmit) {\n e.preventDefault();\n textareaRef.current?.closest(\"form\")?.requestSubmit();\n }\n }\n };\n\n const handlePaste = async (e: ClipboardEvent<HTMLTextAreaElement>) => {\n if (!addAttachmentOnPaste) return;\n const threadCapabilities = aui.thread.getState().capabilities;\n const files = Array.from(e.clipboardData?.files || []);\n\n if (threadCapabilities.attachments && files.length > 0) {\n e.preventDefault();\n await Promise.all(\n files.map(async (file) => {\n try {\n await aui.composer.addAttachment(file);\n } catch {\n // The composer runtime emits composer.attachmentAddError before rejecting.\n }\n }),\n );\n }\n };\n\n const handleHeightChange = (\n height: number,\n meta: TextareaHeightChangeMeta,\n ) => {\n onHeightChange?.(height, meta);\n if (!compactContext) return;\n const el = textareaRef.current;\n if (!el || el.value === \"\") return;\n const cs = getComputedStyle(el);\n const contentHeight =\n cs.boxSizing === \"border-box\"\n ? height -\n parseFloat(cs.paddingTop) -\n parseFloat(cs.paddingBottom) -\n parseFloat(cs.borderTopWidth) -\n parseFloat(cs.borderBottomWidth)\n : height;\n if (Math.round(contentHeight / meta.rowHeight) > 1) {\n compactContext.setMultiline(true);\n }\n };\n\n const autoFocusEnabled = autoFocus && !isDisabled;\n const focus = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea || !autoFocusEnabled) return;\n\n textarea.focus({ preventScroll: true });\n textarea.setSelectionRange(textarea.value.length, textarea.value.length);\n }, [autoFocusEnabled]);\n\n const focusOnRunStart = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n const doc = textarea.ownerDocument;\n const active = doc.activeElement;\n if (active === textarea) return;\n\n const root = threadRootRef?.current;\n const composerRoot = textarea.closest(\"[data-aui-composer-type]\");\n if (\n active &&\n active !== doc.body &&\n !composerRoot?.contains(active) &&\n (!root?.contains(active) ||\n active.closest(\"[data-aui-thread-root]\") !== root)\n )\n return;\n\n focus();\n }, [focus, threadRootRef]);\n\n useEffect(() => focus(), [focus]);\n\n useOnScrollToBottom(() => {\n if (\n aui.composer.getState().type === \"thread\" &&\n unstable_focusOnScrollToBottom\n ) {\n focus();\n }\n });\n\n useEffect(() => {\n if (\n aui.composer.getState().type !== \"thread\" ||\n !unstable_focusOnRunStart\n )\n return undefined;\n\n return aui.on(\"thread.runStart\", focusOnRunStart);\n }, [unstable_focusOnRunStart, focusOnRunStart, aui]);\n\n useEffect(() => {\n if (\n aui.composer.getState().type !== \"thread\" ||\n !unstable_focusOnThreadSwitched\n )\n return undefined;\n\n return aui.on(\"threads.selectionChanged\", focus);\n }, [unstable_focusOnThreadSwitched, focus, aui]);\n\n useEffect(() => {\n if (value === \"\") compactContext?.setMultiline(false);\n }, [value, compactContext]);\n\n const ariaComboboxProps = useTriggerPopoverAriaProps();\n\n const inputProps = {\n name: \"input\" as const,\n value,\n ...rest,\n ...ariaComboboxProps,\n ref: ref as React.ForwardedRef<HTMLTextAreaElement>,\n disabled: isDisabled,\n onChange: composeEventHandlers(\n onChange,\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!aui.composer.getState().isEditing) return;\n const nativeIsComposing =\n (e.nativeEvent as { isComposing?: boolean }).isComposing === true;\n // recover stuck compositionRef when the browser drops compositionend\n if (compositionRef.current && !nativeIsComposing) {\n compositionRef.current = false;\n }\n const isComposing = nativeIsComposing || compositionRef.current;\n // Standalone tap roots need a synchronous flush while the input is composing.\n flushTapSync(() => {\n aui.composer.setText(e.target.value);\n });\n if (isComposing) return;\n const pos = e.target.selectionStart ?? e.target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyPress),\n onCompositionStart: composeEventHandlers(\n (rest as { onCompositionStart?: React.CompositionEventHandler })\n .onCompositionStart,\n () => {\n compositionRef.current = true;\n },\n ),\n onCompositionEnd: composeEventHandlers(\n (rest as { onCompositionEnd?: React.CompositionEventHandler })\n .onCompositionEnd,\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = false;\n if (!aui.composer.getState().isEditing) return;\n const target = e.target as HTMLTextAreaElement;\n flushTapSync(() => {\n aui.composer.setText(target.value);\n });\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onSelect: composeEventHandlers(\n onSelect,\n (e: React.SyntheticEvent<HTMLTextAreaElement>) => {\n if (compositionRef.current) return;\n const target = e.target as HTMLTextAreaElement;\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onPaste: composeEventHandlers(onPaste, handlePaste),\n ...(compactContext\n ? { onHeightChange: handleHeightChange }\n : onHeightChange !== undefined\n ? { onHeightChange }\n : {}),\n };\n\n if (render && isValidElement(render)) {\n return renderSlot(\n render,\n (rest as { children?: ReactNode }).children,\n inputProps,\n );\n }\n\n const Component = asChild ? Slot.Root : TextareaAutosize;\n return <Component {...inputProps} />;\n },\n);\n\nComposerPrimitiveInput.displayName = \"ComposerPrimitive.Input\";\n"],"mappings":"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"}
1
+ {"version":3,"file":"ComposerInput.js","names":["composeEventHandlers","useComposedRefs","Slot","ClipboardEvent","KeyboardEvent","ReactElement","ReactNode","forwardRef","useCallback","useEffect","useRef","isValidElement","TextareaAutosize","TextareaAutosizeProps","TextareaHeightChangeMeta","useEscapeKeydown","useOnScrollToBottom","useMediaQuery","renderSlot","isCompositionKey","useAui","flushTapSync","useComposerInputPluginRegistryOptional","useComposerCompactContextOptional","useComposerCancelWithFocus","useThreadRootElementRef","useComposerInputDisabled","useComposerInputValue","useTriggerPopoverAriaProps","TOUCH_PRIMARY_QUERY","ComposerPrimitiveInput","Element","HTMLTextAreaElement","BaseProps","asChild","render","cancelOnEscape","unstable_focusOnRunStart","unstable_focusOnScrollToBottom","unstable_focusOnThreadSwitched","unstable_insertNewlineOnTouchEnter","addAttachmentOnPaste","SubmitModeProps","submitMode","submitOnEnter","Props","autoFocus","disabled","disabledProp","onChange","onKeyDown","onPaste","onSelect","onHeightChange","rest","forwardedRef","aui","threadRootRef","pluginRegistry","compactContext","declaredSubmitMode","isTouchPrimary","effectiveSubmitMode","value","isDisabled","textareaRef","cancel","composer","ref","compositionRef","e","current","contains","target","Node","plugin","getPlugins","handleKeyDown","getState","canCancel","preventDefault","handleKeyPress","nativeEvent","key","threadState","thread","hasQueue","capabilities","queue","shiftKey","ctrlKey","metaKey","canSend","send","steer","isRunning","voice","undefined","shouldSubmit","closest","requestSubmit","handlePaste","threadCapabilities","files","Array","from","clipboardData","attachments","length","Promise","all","map","file","addAttachment","handleHeightChange","height","meta","el","cs","getComputedStyle","contentHeight","boxSizing","parseFloat","paddingTop","paddingBottom","borderTopWidth","borderBottomWidth","Math","round","rowHeight","setMultiline","autoFocusEnabled","focus","textarea","preventScroll","setSelectionRange","focusOnRunStart","doc","ownerDocument","active","activeElement","root","composerRoot","body","type","on","optional","threads","ariaComboboxProps","inputProps","name","const","React","ForwardedRef","ChangeEvent","isEditing","nativeIsComposing","isComposing","setText","origin","pos","selectionStart","setCursorPosition","onCompositionStart","CompositionEventHandler","onCompositionEnd","CompositionEvent","SyntheticEvent","children","Component","Root","displayName"],"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"radix-ui/internal\";\nimport { useComposedRefs } from \"radix-ui/internal\";\nimport { Slot } from \"radix-ui\";\nimport {\n type ClipboardEvent,\n type KeyboardEvent,\n type ReactElement,\n type ReactNode,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n isValidElement,\n} from \"react\";\nimport TextareaAutosize, {\n type TextareaAutosizeProps,\n type TextareaHeightChangeMeta,\n} from \"react-textarea-autosize\";\nimport { useEscapeKeydown } from \"radix-ui/internal\";\nimport { useOnScrollToBottom } from \"../../utils/hooks/useOnScrollToBottom\";\nimport { useMediaQuery } from \"../../utils/hooks/useMediaQuery\";\nimport { renderSlot } from \"../../utils/Primitive\";\nimport { isCompositionKey } from \"../../utils/isCompositionKey\";\nimport { useAui } from \"@assistant-ui/store\";\nimport { flushTapSync } from \"@assistant-ui/tap\";\nimport { useComposerInputPluginRegistryOptional } from \"./ComposerInputPluginContext\";\nimport { useComposerCompactContextOptional } from \"./ComposerCompactContext\";\nimport { useComposerCancelWithFocus } from \"./useComposerCancelWithFocus\";\nimport { useThreadRootElementRef } from \"../thread/ThreadRootElementContext\";\nimport {\n useComposerInputDisabled,\n useComposerInputValue,\n useTriggerPopoverAriaProps,\n} from \"./useComposerInputState\";\n\nconst TOUCH_PRIMARY_QUERY = \"(pointer: coarse) and (not (any-pointer: fine))\";\n\nexport namespace ComposerPrimitiveInput {\n export type Element = HTMLTextAreaElement;\n\n type BaseProps = {\n /**\n * Whether to render as a child component using Slot.\n * When true, the component will merge its props with its child.\n */\n asChild?: boolean | undefined;\n /**\n * A React element to use as the input container, with props merged in.\n */\n render?: ReactElement | undefined;\n /**\n * Whether to cancel message composition when Escape is pressed.\n * After cancelling an edit, focus returns to the main thread composer when\n * available, unless a handler has moved focus elsewhere.\n * @default true\n */\n cancelOnEscape?: boolean | undefined;\n /**\n * Whether to focus the input when a new run starts if nothing is focused\n * or focus is already inside the same thread or composer. Keeps the current\n * selection when the input is already focused. Applies when `autoFocus` is\n * enabled.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnRunStart?: boolean | undefined;\n /**\n * Whether to automatically focus the input when scrolling to bottom.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnScrollToBottom?: boolean | undefined;\n /**\n * Whether to automatically focus the input when switching threads.\n *\n * @deprecated Experimental since 2024-10-12. Not scheduled for removal; the API may change in any release.\n *\n * @default true\n */\n unstable_focusOnThreadSwitched?: boolean | undefined;\n /**\n * Whether plain Enter on a touch-primary device should insert a newline\n * instead of submitting, detected via\n * `(pointer: coarse) and (not (any-pointer: fine))`. Only takes effect\n * when `submitMode` resolves to `\"enter\"`.\n *\n * @deprecated Experimental since 2026-05-24. Not scheduled for removal; the API may change in any release.\n *\n * @default false\n */\n unstable_insertNewlineOnTouchEnter?: boolean | undefined;\n /**\n * Whether to automatically add pasted files as attachments.\n * @default true\n */\n addAttachmentOnPaste?: boolean | undefined;\n };\n\n type SubmitModeProps =\n | {\n /**\n * Controls how the Enter key submits messages.\n * - \"enter\": Plain Enter submits (Shift+Enter for newline)\n * - \"ctrlEnter\": Ctrl/Cmd+Enter submits (plain Enter for newline)\n * - \"none\": Keyboard submission disabled\n * @default \"enter\"\n */\n submitMode?: \"enter\" | \"ctrlEnter\" | \"none\" | undefined;\n /**\n * @deprecated Use `submitMode` instead\n * @ignore\n */\n submitOnEnter?: never;\n }\n | {\n submitMode?: never;\n /**\n * Whether to submit the message when Enter is pressed (without Shift).\n * @default true\n * @deprecated Use `submitMode` instead. Will be removed in a future version.\n */\n submitOnEnter?: boolean | undefined;\n };\n\n export type Props = TextareaAutosizeProps & BaseProps & SubmitModeProps;\n}\n\n/**\n * A text input component for composing messages.\n *\n * This component provides a rich text input experience with automatic resizing,\n * keyboard shortcuts, file paste support, and intelligent focus management.\n * It integrates with the composer context to manage message state and submission.\n *\n * When rendered inside `TriggerPopoverRoot` and a popover is open, the\n * underlying `<textarea>` automatically receives `aria-controls`,\n * `aria-expanded`, `aria-haspopup`, and `aria-activedescendant` for the\n * combobox relationship. These computed attributes override user-provided\n * values for those four ARIA props while the popover is open.\n *\n * @example\n * ```tsx\n * // Ctrl/Cmd+Enter to submit (plain Enter inserts newline)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitMode=\"ctrlEnter\"\n * />\n *\n * // Insert a newline on Enter on touch-primary devices.\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * unstable_insertNewlineOnTouchEnter\n * />\n *\n * // Old API (deprecated, still supported)\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitOnEnter={true}\n * />\n * ```\n */\nexport const ComposerPrimitiveInput = forwardRef<\n ComposerPrimitiveInput.Element,\n ComposerPrimitiveInput.Props\n>(\n (\n {\n autoFocus = false,\n asChild,\n render,\n disabled: disabledProp,\n onChange,\n onKeyDown,\n onPaste,\n onSelect,\n submitOnEnter,\n submitMode,\n cancelOnEscape = true,\n unstable_focusOnRunStart = true,\n unstable_focusOnScrollToBottom = true,\n unstable_focusOnThreadSwitched = true,\n unstable_insertNewlineOnTouchEnter = false,\n addAttachmentOnPaste = true,\n onHeightChange,\n ...rest\n },\n forwardedRef,\n ) => {\n const aui = useAui();\n const threadRootRef = useThreadRootElementRef();\n const pluginRegistry = useComposerInputPluginRegistryOptional();\n const compactContext = useComposerCompactContextOptional();\n\n const declaredSubmitMode =\n submitMode ?? (submitOnEnter === false ? \"none\" : \"enter\");\n const isTouchPrimary = useMediaQuery(\n unstable_insertNewlineOnTouchEnter ? TOUCH_PRIMARY_QUERY : null,\n );\n const effectiveSubmitMode =\n unstable_insertNewlineOnTouchEnter &&\n isTouchPrimary &&\n declaredSubmitMode === \"enter\"\n ? \"none\"\n : declaredSubmitMode;\n\n const value = useComposerInputValue();\n const isDisabled = useComposerInputDisabled(disabledProp);\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const cancel = useComposerCancelWithFocus(\n useCallback(() => aui.composer.cancel(), [aui]),\n );\n const ref = useComposedRefs(forwardedRef, textareaRef);\n // suppress text/cursor broadcasts during IME composition\n const compositionRef = useRef(false);\n\n useEscapeKeydown((e) => {\n // Only handle ESC if it originated from within this input\n if (!textareaRef.current?.contains(e.target as Node)) return;\n\n // ignore IME composition events\n if (isCompositionKey(e)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle Escape first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (!cancelOnEscape) return;\n\n const composer = aui.composer;\n if (composer.getState().canCancel) {\n cancel(textareaRef.current);\n e.preventDefault();\n }\n });\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (isDisabled) return;\n\n // ignore IME composition events\n if (isCompositionKey(e.nativeEvent)) return;\n\n // Let registered plugins (mention, slash command, etc.) handle keyboard events first\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n if (plugin.handleKeyDown(e)) return;\n }\n }\n\n if (e.key === \"Enter\") {\n const threadState = aui.thread.getState();\n const hasQueue = threadState.capabilities.queue;\n\n // Steer hotkey: Cmd/Ctrl+Shift+Enter (respects submitMode=\"none\" and canSend)\n if (\n e.shiftKey &&\n (e.ctrlKey || e.metaKey) &&\n hasQueue &&\n declaredSubmitMode !== \"none\" &&\n aui.composer.getState().canSend\n ) {\n e.preventDefault();\n aui.composer.send({ steer: true });\n return;\n }\n\n // Regular newline: Shift+Enter\n if (e.shiftKey) return;\n\n // Block submission when running unless queue is supported; a voice\n // session leaves the decision to canSend\n if (\n threadState.isRunning &&\n !hasQueue &&\n threadState.voice === undefined\n )\n return;\n\n let shouldSubmit = false;\n if (effectiveSubmitMode === \"ctrlEnter\") {\n shouldSubmit = e.ctrlKey || e.metaKey;\n } else if (effectiveSubmitMode === \"enter\") {\n shouldSubmit = true;\n }\n\n if (shouldSubmit) {\n e.preventDefault();\n textareaRef.current?.closest(\"form\")?.requestSubmit();\n }\n }\n };\n\n const handlePaste = async (e: ClipboardEvent<HTMLTextAreaElement>) => {\n if (!addAttachmentOnPaste) return;\n const threadCapabilities = aui.thread.getState().capabilities;\n const files = Array.from(e.clipboardData?.files || []);\n\n if (threadCapabilities.attachments && files.length > 0) {\n e.preventDefault();\n await Promise.all(\n files.map(async (file) => {\n try {\n await aui.composer.addAttachment(file);\n } catch {\n // The composer runtime emits composer.attachmentAddError before rejecting.\n }\n }),\n );\n }\n };\n\n const handleHeightChange = (\n height: number,\n meta: TextareaHeightChangeMeta,\n ) => {\n onHeightChange?.(height, meta);\n if (!compactContext) return;\n const el = textareaRef.current;\n if (!el || el.value === \"\") return;\n const cs = getComputedStyle(el);\n const contentHeight =\n cs.boxSizing === \"border-box\"\n ? height -\n parseFloat(cs.paddingTop) -\n parseFloat(cs.paddingBottom) -\n parseFloat(cs.borderTopWidth) -\n parseFloat(cs.borderBottomWidth)\n : height;\n if (Math.round(contentHeight / meta.rowHeight) > 1) {\n compactContext.setMultiline(true);\n }\n };\n\n const autoFocusEnabled = autoFocus && !isDisabled;\n const focus = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea || !autoFocusEnabled) return;\n\n textarea.focus({ preventScroll: true });\n textarea.setSelectionRange(textarea.value.length, textarea.value.length);\n }, [autoFocusEnabled]);\n\n const focusOnRunStart = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea) return;\n const doc = textarea.ownerDocument;\n const active = doc.activeElement;\n if (active === textarea) return;\n\n const root = threadRootRef?.current;\n const composerRoot = textarea.closest(\"[data-aui-composer-type]\");\n if (\n active &&\n active !== doc.body &&\n !composerRoot?.contains(active) &&\n (!root?.contains(active) ||\n active.closest(\"[data-aui-thread-root]\") !== root)\n )\n return;\n\n focus();\n }, [focus, threadRootRef]);\n\n useEffect(() => focus(), [focus]);\n\n useOnScrollToBottom(() => {\n if (\n aui.composer.getState().type === \"thread\" &&\n unstable_focusOnScrollToBottom\n ) {\n focus();\n }\n });\n\n useEffect(() => {\n if (\n aui.composer.getState().type !== \"thread\" ||\n !unstable_focusOnRunStart\n )\n return undefined;\n\n return aui.on(\"thread.runStart\", focusOnRunStart);\n }, [unstable_focusOnRunStart, focusOnRunStart, aui]);\n\n useEffect(() => {\n if (\n aui.composer.getState().type !== \"thread\" ||\n !unstable_focusOnThreadSwitched ||\n !aui.optional.threads\n )\n return undefined;\n\n return aui.on(\"threads.selectionChanged\", focus);\n }, [unstable_focusOnThreadSwitched, focus, aui]);\n\n useEffect(() => {\n if (value === \"\") compactContext?.setMultiline(false);\n }, [value, compactContext]);\n\n const ariaComboboxProps = useTriggerPopoverAriaProps();\n\n const inputProps = {\n name: \"input\" as const,\n value,\n ...rest,\n ...ariaComboboxProps,\n ref: ref as React.ForwardedRef<HTMLTextAreaElement>,\n disabled: isDisabled,\n onChange: composeEventHandlers(\n onChange,\n (e: React.ChangeEvent<HTMLTextAreaElement>) => {\n if (!aui.composer.getState().isEditing) return;\n const nativeIsComposing =\n (e.nativeEvent as { isComposing?: boolean }).isComposing === true;\n // recover stuck compositionRef when the browser drops compositionend\n if (compositionRef.current && !nativeIsComposing) {\n compositionRef.current = false;\n }\n const isComposing = nativeIsComposing || compositionRef.current;\n // Standalone tap roots need a synchronous flush while the input is composing.\n flushTapSync(() => {\n aui.composer.setText(e.target.value, { origin: \"user\" });\n });\n if (isComposing) return;\n const pos = e.target.selectionStart ?? e.target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onKeyDown: composeEventHandlers(onKeyDown, handleKeyPress),\n onCompositionStart: composeEventHandlers(\n (rest as { onCompositionStart?: React.CompositionEventHandler })\n .onCompositionStart,\n () => {\n compositionRef.current = true;\n },\n ),\n onCompositionEnd: composeEventHandlers(\n (rest as { onCompositionEnd?: React.CompositionEventHandler })\n .onCompositionEnd,\n (e: React.CompositionEvent<HTMLTextAreaElement>) => {\n compositionRef.current = false;\n if (!aui.composer.getState().isEditing) return;\n const target = e.target as HTMLTextAreaElement;\n flushTapSync(() => {\n aui.composer.setText(target.value, { origin: \"user\" });\n });\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onSelect: composeEventHandlers(\n onSelect,\n (e: React.SyntheticEvent<HTMLTextAreaElement>) => {\n if (compositionRef.current) return;\n const target = e.target as HTMLTextAreaElement;\n const pos = target.selectionStart ?? target.value.length;\n if (pluginRegistry) {\n for (const plugin of pluginRegistry.getPlugins()) {\n plugin.setCursorPosition(pos);\n }\n }\n },\n ),\n onPaste: composeEventHandlers(onPaste, handlePaste),\n ...(compactContext\n ? { onHeightChange: handleHeightChange }\n : onHeightChange !== undefined\n ? { onHeightChange }\n : {}),\n };\n\n if (render && isValidElement(render)) {\n return renderSlot(\n render,\n (rest as { children?: ReactNode }).children,\n inputProps,\n );\n }\n\n const Component = asChild ? Slot.Root : TextareaAutosize;\n return <Component {...inputProps} />;\n },\n);\n\nComposerPrimitiveInput.displayName = \"ComposerPrimitive.Input\";\n"],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
3
  import { createContext, useContext, useRef } from "@assistant-ui/tap/react-shim";
4
4
  import { jsx } from "react/jsx-runtime";
5
- //#region src/primitives/composer/ComposerInputPluginContext.tsx
5
+ // src/primitives/composer/ComposerInputPluginContext.tsx
6
6
  const ComposerInputPluginRegistryContext = createContext(null);
7
7
  const useComposerInputPluginRegistryOptional = () => {
8
8
  return useContext(ComposerInputPluginRegistryContext);
@@ -79,7 +79,6 @@ function _temp2(t0) {
79
79
  const [plugin] = t0;
80
80
  return plugin;
81
81
  }
82
- //#endregion
83
82
  export { ComposerInputPluginProvider, useComposerInputPluginRegistryOptional };
84
83
 
85
84
  //# sourceMappingURL=ComposerInputPluginContext.js.map
@@ -1,3 +1,2 @@
1
1
  "use client";
2
- import { ComposerPrimitiveQueue } from "@assistant-ui/core/react";
3
- export { ComposerPrimitiveQueue };
2
+ export { ComposerPrimitiveQueue } from "@assistant-ui/core/react";
@@ -17,7 +17,7 @@ export declare namespace ComposerPrimitiveQuote {
17
17
  * ```
18
18
  */
19
19
  export declare const ComposerPrimitiveQuote: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLDivElement> & import("react").HTMLAttributes<HTMLDivElement> & {
20
- asChild?: boolean;
20
+ asChild?: boolean | undefined;
21
21
  }, "ref"> & {
22
22
  render?: import("react").ReactElement | undefined;
23
23
  } & import("react").RefAttributes<HTMLDivElement>, "ref"> & import("react").RefAttributes<HTMLDivElement>>;
@@ -34,7 +34,7 @@ export declare namespace ComposerPrimitiveQuoteText {
34
34
  * ```
35
35
  */
36
36
  export declare const ComposerPrimitiveQuoteText: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLSpanElement> & import("react").HTMLAttributes<HTMLSpanElement> & {
37
- asChild?: boolean;
37
+ asChild?: boolean | undefined;
38
38
  }, "ref"> & {
39
39
  render?: import("react").ReactElement | undefined;
40
40
  } & import("react").RefAttributes<HTMLSpanElement>, "ref"> & import("react").RefAttributes<HTMLSpanElement>>;
@@ -51,7 +51,7 @@ export declare namespace ComposerPrimitiveQuoteDismiss {
51
51
  * ```
52
52
  */
53
53
  export declare const ComposerPrimitiveQuoteDismiss: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
54
- asChild?: boolean;
54
+ asChild?: boolean | undefined;
55
55
  }, "ref"> & {
56
56
  render?: import("react").ReactElement | undefined;
57
57
  } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -5,7 +5,7 @@ import { forwardRef } from "@assistant-ui/tap/react-shim";
5
5
  import { useAui, useAuiState } from "@assistant-ui/store";
6
6
  import { jsx } from "react/jsx-runtime";
7
7
  import { composeEventHandlers } from "radix-ui/internal";
8
- //#region src/primitives/composer/ComposerQuote.tsx
8
+ // src/primitives/composer/ComposerQuote.tsx
9
9
  /**
10
10
  * Renders a container for the quoted text preview in the composer.
11
11
  * Only renders when a quote is set.
@@ -133,7 +133,6 @@ function _temp(s) {
133
133
  function _temp2(s) {
134
134
  return s.composer.quote?.text;
135
135
  }
136
- //#endregion
137
136
  export { ComposerPrimitiveQuote, ComposerPrimitiveQuoteDismiss, ComposerPrimitiveQuoteText };
138
137
 
139
138
  //# sourceMappingURL=ComposerQuote.js.map
@@ -15,7 +15,7 @@ export declare namespace ComposerPrimitiveResume {
15
15
  * ```
16
16
  */
17
17
  export declare const ComposerPrimitiveResume: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
18
- asChild?: boolean;
18
+ asChild?: boolean | undefined;
19
19
  }, "ref"> & {
20
20
  render?: import("react").ReactElement | undefined;
21
21
  } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -3,7 +3,7 @@ import { createActionButton } from "../../utils/createActionButton.js";
3
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  import { useComposerResume } from "@assistant-ui/core/react";
5
5
  import "@assistant-ui/tap/react-shim";
6
- //#region src/primitives/composer/ComposerResume.ts
6
+ // src/primitives/composer/ComposerResume.ts
7
7
  const useComposerResume$1 = () => {
8
8
  const $ = c(2);
9
9
  const { disabled, resume } = useComposerResume();
@@ -28,7 +28,6 @@ const useComposerResume$1 = () => {
28
28
  * ```
29
29
  */
30
30
  const ComposerPrimitiveResume = createActionButton("ComposerPrimitive.Resume", useComposerResume$1);
31
- //#endregion
32
31
  export { ComposerPrimitiveResume };
33
32
 
34
33
  //# sourceMappingURL=ComposerResume.js.map
@@ -39,7 +39,7 @@ export declare namespace ComposerPrimitiveRoot {
39
39
  * ```
40
40
  */
41
41
  export declare const ComposerPrimitiveRoot: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLFormElement> & import("react").FormHTMLAttributes<HTMLFormElement> & {
42
- asChild?: boolean;
42
+ asChild?: boolean | undefined;
43
43
  }, "ref"> & {
44
44
  render?: import("react").ReactElement | undefined;
45
45
  } & import("react").RefAttributes<HTMLFormElement>, "ref"> & {
@@ -8,7 +8,7 @@ import { forwardRef, useState, version } from "@assistant-ui/tap/react-shim";
8
8
  import { useAuiState } from "@assistant-ui/store";
9
9
  import { jsx } from "react/jsx-runtime";
10
10
  import { composeEventHandlers } from "radix-ui/internal";
11
- //#region src/primitives/composer/ComposerRoot.tsx
11
+ // src/primitives/composer/ComposerRoot.tsx
12
12
  const INTERACTIVE_ELEMENT_SELECTOR = [
13
13
  "a",
14
14
  "audio[controls]",
@@ -160,7 +160,6 @@ function _temp2(e_0) {
160
160
  e_0.preventDefault();
161
161
  input.focus();
162
162
  }
163
- //#endregion
164
163
  export { ComposerPrimitiveRoot };
165
164
 
166
165
  //# sourceMappingURL=ComposerRoot.js.map
@@ -23,7 +23,7 @@ export declare namespace ComposerPrimitiveSend {
23
23
  * ```
24
24
  */
25
25
  export declare const ComposerPrimitiveSend: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
26
- asChild?: boolean;
26
+ asChild?: boolean | undefined;
27
27
  }, "ref"> & {
28
28
  render?: import("react").ReactElement | undefined;
29
29
  } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -3,7 +3,7 @@ import { createActionButton } from "../../utils/createActionButton.js";
3
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  import { useComposerSend as useComposerSend$1 } from "@assistant-ui/core/react";
5
5
  import "@assistant-ui/tap/react-shim";
6
- //#region src/primitives/composer/ComposerSend.ts
6
+ // src/primitives/composer/ComposerSend.ts
7
7
  const useComposerSend = () => {
8
8
  const $ = c(2);
9
9
  const { disabled, send } = useComposerSend$1();
@@ -32,7 +32,6 @@ const useComposerSend = () => {
32
32
  * ```
33
33
  */
34
34
  const ComposerPrimitiveSend = createActionButton("ComposerPrimitive.Send", useComposerSend);
35
- //#endregion
36
35
  export { ComposerPrimitiveSend, useComposerSend };
37
36
 
38
37
  //# sourceMappingURL=ComposerSend.js.map
@@ -17,7 +17,7 @@ export declare namespace ComposerPrimitiveStopDictation {
17
17
  * ```
18
18
  */
19
19
  export declare const ComposerPrimitiveStopDictation: import("react").ForwardRefExoticComponent<Omit<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
20
- asChild?: boolean;
20
+ asChild?: boolean | undefined;
21
21
  }, "ref"> & {
22
22
  render?: import("react").ReactElement | undefined;
23
23
  } & import("react").RefAttributes<HTMLButtonElement>, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -3,7 +3,7 @@ import { createActionButton } from "../../utils/createActionButton.js";
3
3
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
4
  import "@assistant-ui/tap/react-shim";
5
5
  import { useAui, useAuiState } from "@assistant-ui/store";
6
- //#region src/primitives/composer/ComposerStopDictation.ts
6
+ // src/primitives/composer/ComposerStopDictation.ts
7
7
  const useComposerStopDictation = () => {
8
8
  const $ = c(2);
9
9
  const aui = useAui();
@@ -36,7 +36,6 @@ const ComposerPrimitiveStopDictation = createActionButton("ComposerPrimitive.Sto
36
36
  function _temp(s) {
37
37
  return s.composer.dictation != null;
38
38
  }
39
- //#endregion
40
39
  export { ComposerPrimitiveStopDictation };
41
40
 
42
41
  //# sourceMappingURL=ComposerStopDictation.js.map
@@ -1,7 +1,6 @@
1
- //#region src/primitives/composer/composerInputSelector.ts
1
+ // src/primitives/composer/composerInputSelector.ts
2
2
  const CONTENT_EDITABLE_SELECTOR = "[contenteditable]:not([contenteditable='false'])";
3
3
  const COMPOSER_INPUT_SELECTOR = `textarea:not(:disabled), ${CONTENT_EDITABLE_SELECTOR}`;
4
- //#endregion
5
4
  export { COMPOSER_INPUT_SELECTOR, CONTENT_EDITABLE_SELECTOR };
6
5
 
7
6
  //# sourceMappingURL=composerInputSelector.js.map