@assistant-ui/react 0.14.16 → 0.14.19

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 (380) hide show
  1. package/dist/client/ExternalThread.d.ts +5 -3
  2. package/dist/client/ExternalThread.d.ts.map +1 -1
  3. package/dist/client/ExternalThread.js +745 -255
  4. package/dist/client/ExternalThread.js.map +1 -1
  5. package/dist/client/InMemoryThreadList.d.ts +1 -1
  6. package/dist/client/InMemoryThreadList.d.ts.map +1 -1
  7. package/dist/client/InMemoryThreadList.js +299 -113
  8. package/dist/client/InMemoryThreadList.js.map +1 -1
  9. package/dist/client/SingleThreadList.d.ts +1 -6
  10. package/dist/client/SingleThreadList.d.ts.map +1 -1
  11. package/dist/client/SingleThreadList.js +143 -55
  12. package/dist/client/SingleThreadList.js.map +1 -1
  13. package/dist/context/ReadonlyStore.js.map +1 -1
  14. package/dist/context/providers/MessageProvider.js +38 -5
  15. package/dist/context/providers/MessageProvider.js.map +1 -1
  16. package/dist/context/providers/ThreadViewportProvider.js +76 -20
  17. package/dist/context/providers/ThreadViewportProvider.js.map +1 -1
  18. package/dist/context/react/ThreadViewportContext.js.map +1 -1
  19. package/dist/context/react/utils/createContextHook.js.map +1 -1
  20. package/dist/context/react/utils/createContextStoreHook.js +17 -2
  21. package/dist/context/react/utils/createContextStoreHook.js.map +1 -1
  22. package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
  23. package/dist/context/react/utils/ensureBinding.js.map +1 -1
  24. package/dist/context/react/utils/useRuntimeState.js +18 -2
  25. package/dist/context/react/utils/useRuntimeState.js.map +1 -1
  26. package/dist/context/stores/ThreadViewport.js.map +1 -1
  27. package/dist/devtools/DevToolsHooks.js.map +1 -1
  28. package/dist/hooks/useMessageQuote.js.map +1 -1
  29. package/dist/hooks/useMessageTiming.js +4 -1
  30. package/dist/hooks/useMessageTiming.js.map +1 -1
  31. package/dist/hooks/useToolCallElapsed.d.ts +23 -0
  32. package/dist/hooks/useToolCallElapsed.d.ts.map +1 -0
  33. package/dist/hooks/useToolCallElapsed.js +72 -0
  34. package/dist/hooks/useToolCallElapsed.js.map +1 -0
  35. package/dist/index.d.ts +6 -2
  36. package/dist/index.js +5 -1
  37. package/dist/internal.js.map +1 -1
  38. package/dist/legacy-runtime/AssistantRuntimeProvider.js +46 -10
  39. package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
  40. package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
  41. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js +27 -6
  42. package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js.map +1 -1
  43. package/dist/legacy-runtime/hooks/AssistantContext.js +13 -2
  44. package/dist/legacy-runtime/hooks/AssistantContext.js.map +1 -1
  45. package/dist/legacy-runtime/hooks/AttachmentContext.js +9 -1
  46. package/dist/legacy-runtime/hooks/AttachmentContext.js.map +1 -1
  47. package/dist/legacy-runtime/hooks/ComposerContext.js +9 -1
  48. package/dist/legacy-runtime/hooks/ComposerContext.js.map +1 -1
  49. package/dist/legacy-runtime/hooks/MessageContext.js +12 -2
  50. package/dist/legacy-runtime/hooks/MessageContext.js.map +1 -1
  51. package/dist/legacy-runtime/hooks/MessagePartContext.js +9 -1
  52. package/dist/legacy-runtime/hooks/MessagePartContext.js.map +1 -1
  53. package/dist/legacy-runtime/hooks/ThreadContext.js +33 -5
  54. package/dist/legacy-runtime/hooks/ThreadContext.js.map +1 -1
  55. package/dist/legacy-runtime/hooks/ThreadListItemContext.js +9 -1
  56. package/dist/legacy-runtime/hooks/ThreadListItemContext.js.map +1 -1
  57. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js +3 -3
  58. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js.map +1 -1
  59. package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js +71 -31
  60. package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js.map +1 -1
  61. package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js.map +1 -1
  62. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +24 -16
  63. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
  64. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js +17 -12
  65. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js.map +1 -1
  66. package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js +17 -3
  67. package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js.map +1 -1
  68. package/dist/mcp-apps/McpAppRenderer.d.ts +2 -10
  69. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  70. package/dist/mcp-apps/McpAppRenderer.js +9 -8
  71. package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
  72. package/dist/mcp-apps/McpAppsRemoteHost.d.ts +1 -8
  73. package/dist/mcp-apps/McpAppsRemoteHost.d.ts.map +1 -1
  74. package/dist/mcp-apps/McpAppsRemoteHost.js +6 -5
  75. package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
  76. package/dist/mcp-apps/app-frame.js +33 -14
  77. package/dist/mcp-apps/app-frame.js.map +1 -1
  78. package/dist/mcp-apps/bridge.js.map +1 -1
  79. package/dist/mcp-apps/types.js.map +1 -1
  80. package/dist/mcp-apps/utils.js.map +1 -1
  81. package/dist/model-context/frame/useAssistantFrameHost.js +32 -14
  82. package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -1
  83. package/dist/model-context/makeAssistantVisible.js +64 -26
  84. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  85. package/dist/primitives/actionBar/ActionBarCopy.js +94 -20
  86. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  87. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  88. package/dist/primitives/actionBar/ActionBarExportMarkdown.js +105 -37
  89. package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -1
  90. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +60 -11
  91. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  92. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +60 -11
  93. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  94. package/dist/primitives/actionBar/ActionBarInteractionContext.js +3 -1
  95. package/dist/primitives/actionBar/ActionBarInteractionContext.js.map +1 -1
  96. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  97. package/dist/primitives/actionBar/ActionBarRoot.js +84 -25
  98. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  99. package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
  100. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +45 -14
  101. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
  102. package/dist/primitives/actionBar/useActionBarFloatStatus.js +22 -10
  103. package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
  104. package/dist/primitives/actionBar.js.map +1 -1
  105. package/dist/primitives/actionBarMore/ActionBarMoreContent.js +44 -7
  106. package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
  107. package/dist/primitives/actionBarMore/ActionBarMoreItem.js +28 -6
  108. package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -1
  109. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +103 -36
  110. package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -1
  111. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +28 -6
  112. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -1
  113. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +28 -6
  114. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -1
  115. package/dist/primitives/actionBarMore/scope.js.map +1 -1
  116. package/dist/primitives/actionBarMore.js.map +1 -1
  117. package/dist/primitives/assistantModal/AssistantModalAnchor.js +27 -6
  118. package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
  119. package/dist/primitives/assistantModal/AssistantModalContent.js +71 -10
  120. package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
  121. package/dist/primitives/assistantModal/AssistantModalRoot.js +93 -26
  122. package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
  123. package/dist/primitives/assistantModal/AssistantModalTrigger.js +27 -6
  124. package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
  125. package/dist/primitives/assistantModal/scope.js.map +1 -1
  126. package/dist/primitives/assistantModal.js.map +1 -1
  127. package/dist/primitives/attachment/AttachmentName.js +13 -1
  128. package/dist/primitives/attachment/AttachmentName.js.map +1 -1
  129. package/dist/primitives/attachment/AttachmentRemove.js +11 -4
  130. package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
  131. package/dist/primitives/attachment/AttachmentRoot.js +13 -4
  132. package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
  133. package/dist/primitives/attachment/AttachmentThumb.js +20 -9
  134. package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
  135. package/dist/primitives/attachment.js.map +1 -1
  136. package/dist/primitives/branchPicker/BranchPickerCount.js +14 -2
  137. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
  138. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  139. package/dist/primitives/branchPicker/BranchPickerNumber.js +14 -2
  140. package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
  141. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  142. package/dist/primitives/branchPicker/BranchPickerRoot.js +34 -6
  143. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  144. package/dist/primitives/branchPicker.js.map +1 -1
  145. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +16 -5
  146. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
  147. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +13 -4
  148. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
  149. package/dist/primitives/chainOfThought.js.map +1 -1
  150. package/dist/primitives/composer/ComposerAddAttachment.js +37 -24
  151. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  152. package/dist/primitives/composer/ComposerAttachmentDropzone.js +124 -49
  153. package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
  154. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  155. package/dist/primitives/composer/ComposerDictate.js.map +1 -1
  156. package/dist/primitives/composer/ComposerDictationTranscript.js +32 -7
  157. package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
  158. package/dist/primitives/composer/ComposerInput.js +29 -29
  159. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  160. package/dist/primitives/composer/ComposerInputPluginContext.js +71 -25
  161. package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -1
  162. package/dist/primitives/composer/ComposerQuote.js +92 -23
  163. package/dist/primitives/composer/ComposerQuote.js.map +1 -1
  164. package/dist/primitives/composer/ComposerRoot.js +45 -11
  165. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  166. package/dist/primitives/composer/ComposerSend.js +9 -2
  167. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  168. package/dist/primitives/composer/ComposerStopDictation.js +15 -5
  169. package/dist/primitives/composer/ComposerStopDictation.js.map +1 -1
  170. package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
  171. package/dist/primitives/composer/trigger/TriggerPopover.js +215 -75
  172. package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
  173. package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
  174. package/dist/primitives/composer/trigger/TriggerPopoverBack.js +35 -7
  175. package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -1
  176. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +134 -28
  177. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
  178. package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -1
  179. package/dist/primitives/composer/trigger/TriggerPopoverItems.js +132 -28
  180. package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
  181. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts +2 -10
  182. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -1
  183. package/dist/primitives/composer/trigger/TriggerPopoverResource.js +126 -53
  184. package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -1
  185. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +181 -78
  186. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
  187. package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -1
  188. package/dist/primitives/composer/trigger/index.js.map +1 -1
  189. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts +2 -6
  190. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -1
  191. package/dist/primitives/composer/trigger/triggerDetectionResource.js +30 -15
  192. package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -1
  193. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts +2 -17
  194. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -1
  195. package/dist/primitives/composer/trigger/triggerKeyboardResource.js +117 -59
  196. package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -1
  197. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts +2 -10
  198. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -1
  199. package/dist/primitives/composer/trigger/triggerNavigationResource.js +204 -71
  200. package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -1
  201. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts +2 -10
  202. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
  203. package/dist/primitives/composer/trigger/triggerSelectionResource.js +51 -14
  204. package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
  205. package/dist/primitives/composer.js.map +1 -1
  206. package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -1
  207. package/dist/primitives/error/ErrorMessage.js +28 -6
  208. package/dist/primitives/error/ErrorMessage.js.map +1 -1
  209. package/dist/primitives/error/ErrorRoot.js +14 -5
  210. package/dist/primitives/error/ErrorRoot.js.map +1 -1
  211. package/dist/primitives/error.js.map +1 -1
  212. package/dist/primitives/message/MessageError.js +2 -1
  213. package/dist/primitives/message/MessageError.js.map +1 -1
  214. package/dist/primitives/message/MessageIf.js +50 -20
  215. package/dist/primitives/message/MessageIf.js.map +1 -1
  216. package/dist/primitives/message/MessageParts.js +41 -7
  217. package/dist/primitives/message/MessageParts.js.map +1 -1
  218. package/dist/primitives/message/MessagePartsGrouped.js +399 -94
  219. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  220. package/dist/primitives/message/MessageRoot.js +197 -65
  221. package/dist/primitives/message/MessageRoot.js.map +1 -1
  222. package/dist/primitives/message.js.map +1 -1
  223. package/dist/primitives/messagePart/MessagePartImage.js +15 -5
  224. package/dist/primitives/messagePart/MessagePartImage.js.map +1 -1
  225. package/dist/primitives/messagePart/MessagePartText.d.ts +5 -2
  226. package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -1
  227. package/dist/primitives/messagePart/MessagePartText.js +35 -7
  228. package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
  229. package/dist/primitives/messagePart/useMessagePartData.js +5 -4
  230. package/dist/primitives/messagePart/useMessagePartData.js.map +1 -1
  231. package/dist/primitives/messagePart/useMessagePartFile.js +5 -4
  232. package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
  233. package/dist/primitives/messagePart/useMessagePartImage.js +5 -4
  234. package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
  235. package/dist/primitives/messagePart/useMessagePartReasoning.js +5 -4
  236. package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
  237. package/dist/primitives/messagePart/useMessagePartSource.js +5 -4
  238. package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
  239. package/dist/primitives/messagePart/useMessagePartText.js +5 -4
  240. package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
  241. package/dist/primitives/messagePart.js.map +1 -1
  242. package/dist/primitives/queueItem/QueueItemRemove.js +11 -4
  243. package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
  244. package/dist/primitives/queueItem/QueueItemSteer.js +11 -4
  245. package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
  246. package/dist/primitives/queueItem/QueueItemText.js +20 -6
  247. package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
  248. package/dist/primitives/queueItem.js.map +1 -1
  249. package/dist/primitives/reasoning/useScrollLock.js +61 -34
  250. package/dist/primitives/reasoning/useScrollLock.js.map +1 -1
  251. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +56 -16
  252. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -1
  253. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +120 -59
  254. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
  255. package/dist/primitives/selectionToolbar.js.map +1 -1
  256. package/dist/primitives/suggestion/SuggestionDescription.js +20 -6
  257. package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
  258. package/dist/primitives/suggestion/SuggestionTitle.js +20 -6
  259. package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
  260. package/dist/primitives/suggestion/SuggestionTrigger.js +39 -26
  261. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
  262. package/dist/primitives/suggestion.js.map +1 -1
  263. package/dist/primitives/thread/ThreadEmpty.js +6 -2
  264. package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
  265. package/dist/primitives/thread/ThreadIf.js +32 -10
  266. package/dist/primitives/thread/ThreadIf.js.map +1 -1
  267. package/dist/primitives/thread/ThreadRoot.js +13 -4
  268. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  269. package/dist/primitives/thread/ThreadScrollToBottom.js +24 -6
  270. package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
  271. package/dist/primitives/thread/ThreadSuggestion.js +18 -6
  272. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  273. package/dist/primitives/thread/ThreadViewport.js +185 -47
  274. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  275. package/dist/primitives/thread/ThreadViewportFooter.js +22 -9
  276. package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
  277. package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js.map +1 -1
  278. package/dist/primitives/thread/topAnchor/createReserveObservers.js.map +1 -1
  279. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -1
  280. package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -1
  281. package/dist/primitives/thread/topAnchor/topAnchorUtils.js.map +1 -1
  282. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +19 -4
  283. package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -1
  284. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
  285. package/dist/primitives/thread/useThreadViewportAutoScroll.js +21 -16
  286. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  287. package/dist/primitives/thread.js.map +1 -1
  288. package/dist/primitives/threadList/ThreadListLoadMore.js.map +1 -1
  289. package/dist/primitives/threadList/ThreadListNew.js +53 -11
  290. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  291. package/dist/primitives/threadList/ThreadListRoot.js +13 -4
  292. package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
  293. package/dist/primitives/threadList.js.map +1 -1
  294. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
  295. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
  296. package/dist/primitives/threadListItem/ThreadListItemRoot.js +26 -7
  297. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  298. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  299. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
  300. package/dist/primitives/threadListItem.js.map +1 -1
  301. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +44 -7
  302. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
  303. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +28 -6
  304. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -1
  305. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +25 -5
  306. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
  307. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +28 -6
  308. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -1
  309. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +28 -6
  310. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
  311. package/dist/primitives/threadListItemMore/scope.js.map +1 -1
  312. package/dist/primitives/threadListItemMore.js.map +1 -1
  313. package/dist/sandbox-host/SandboxHost.js.map +1 -1
  314. package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
  315. package/dist/tests/setup.js.map +1 -1
  316. package/dist/unstable/useComposerInputHistory.d.ts +30 -0
  317. package/dist/unstable/useComposerInputHistory.d.ts.map +1 -0
  318. package/dist/unstable/useComposerInputHistory.js +117 -0
  319. package/dist/unstable/useComposerInputHistory.js.map +1 -0
  320. package/dist/unstable/useMentionAdapter.js.map +1 -1
  321. package/dist/unstable/useMessageStallDetection.d.ts +29 -0
  322. package/dist/unstable/useMessageStallDetection.d.ts.map +1 -0
  323. package/dist/unstable/useMessageStallDetection.js +69 -0
  324. package/dist/unstable/useMessageStallDetection.js.map +1 -0
  325. package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
  326. package/dist/utils/Primitive.js +57 -12
  327. package/dist/utils/Primitive.js.map +1 -1
  328. package/dist/utils/createActionButton.js +23 -7
  329. package/dist/utils/createActionButton.js.map +1 -1
  330. package/dist/utils/getSelectionMessageId.js.map +1 -1
  331. package/dist/utils/hooks/useManagedRef.js +16 -8
  332. package/dist/utils/hooks/useManagedRef.js.map +1 -1
  333. package/dist/utils/hooks/useMediaQuery.js +25 -10
  334. package/dist/utils/hooks/useMediaQuery.js.map +1 -1
  335. package/dist/utils/hooks/useOnResizeContent.js +29 -19
  336. package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
  337. package/dist/utils/hooks/useOnScrollToBottom.js +20 -4
  338. package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
  339. package/dist/utils/hooks/useSizeHandle.js +23 -15
  340. package/dist/utils/hooks/useSizeHandle.js.map +1 -1
  341. package/dist/utils/json/is-json-equal.js.map +1 -1
  342. package/dist/utils/json/is-json.js.map +1 -1
  343. package/dist/utils/smooth/SmoothContext.js +41 -11
  344. package/dist/utils/smooth/SmoothContext.js.map +1 -1
  345. package/dist/utils/smooth/useSmooth.d.ts +40 -2
  346. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  347. package/dist/utils/smooth/useSmooth.js +52 -13
  348. package/dist/utils/smooth/useSmooth.js.map +1 -1
  349. package/dist/utils/useToolArgsFieldStatus.d.ts +2 -2
  350. package/dist/utils/useToolArgsFieldStatus.d.ts.map +1 -1
  351. package/dist/utils/useToolArgsFieldStatus.js +13 -5
  352. package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
  353. package/package.json +6 -6
  354. package/src/client/ExternalThread.ts +146 -74
  355. package/src/client/InMemoryThreadList.ts +23 -21
  356. package/src/client/SingleThreadList.ts +29 -27
  357. package/src/hooks/useToolCallElapsed.ts +52 -0
  358. package/src/index.ts +19 -0
  359. package/src/mcp-apps/McpAppRenderer.tsx +5 -3
  360. package/src/mcp-apps/McpAppsRemoteHost.ts +5 -3
  361. package/src/primitives/composer/ComposerInput.test.tsx +1 -1
  362. package/src/primitives/composer/ComposerInput.tsx +3 -3
  363. package/src/primitives/composer/trigger/TriggerPopover.tsx +4 -5
  364. package/src/primitives/composer/trigger/TriggerPopoverResource.ts +5 -3
  365. package/src/primitives/composer/trigger/triggerDetectionResource.ts +21 -21
  366. package/src/primitives/composer/trigger/triggerKeyboardResource.test.ts +5 -4
  367. package/src/primitives/composer/trigger/triggerKeyboardResource.ts +99 -101
  368. package/src/primitives/composer/trigger/triggerNavigationResource.ts +92 -98
  369. package/src/primitives/composer/trigger/triggerSelectionResource.ts +76 -76
  370. package/src/primitives/messagePart/MessagePartText.tsx +3 -2
  371. package/src/primitives/reasoning/useScrollLock.ts +25 -2
  372. package/src/primitives/thread/useThreadViewportAutoScroll.ts +8 -0
  373. package/src/tests/external-thread-branches.test.tsx +160 -0
  374. package/src/tests/shouldContinue.test.ts +33 -0
  375. package/src/tests/toolCallTiming.test.tsx +221 -0
  376. package/src/unstable/useComposerInputHistory.test.tsx +201 -0
  377. package/src/unstable/useComposerInputHistory.ts +160 -0
  378. package/src/unstable/useMessageStallDetection.ts +91 -0
  379. package/src/utils/smooth/useSmooth.test.tsx +95 -0
  380. package/src/utils/smooth/useSmooth.ts +82 -10
@@ -1 +1 @@
1
- {"version":3,"file":"InMemoryThreadList.js","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"sourcesContent":["import { useState, useMemo } from \"react\";\nimport { resource, withKey, type ResourceElement } from \"@assistant-ui/tap\";\nimport {\n type ClientOutput,\n useClientLookup,\n Derived,\n attachTransformScopes,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\n\nexport type InMemoryThreadListProps = {\n thread: (threadId: string) => ResourceElement<ClientOutput<\"thread\">>;\n onSwitchToThread?: (threadId: string) => void;\n onSwitchToNewThread?: () => void;\n};\n\ntype ThreadData = {\n id: string;\n title?: string;\n status: \"regular\" | \"archived\";\n custom?: Record<string, unknown> | undefined;\n};\n\n// ThreadListItem Client\nconst ThreadListItemClient = resource(function ThreadListItemClient(props: {\n data: ThreadData;\n onSwitchTo: () => void;\n onUpdateCustom: (custom: Record<string, unknown> | undefined) => void;\n onArchive: () => void;\n onUnarchive: () => void;\n onDelete: () => void;\n}): ClientOutput<\"threadListItem\"> {\n const { data, onSwitchTo, onUpdateCustom, onArchive, onUnarchive, onDelete } =\n props;\n const state = useMemo(\n () => ({\n id: data.id,\n remoteId: undefined,\n externalId: undefined,\n title: data.title,\n status: data.status,\n custom: data.custom,\n }),\n [data.id, data.title, data.status, data.custom],\n );\n\n return {\n getState: () => state,\n switchTo: onSwitchTo,\n rename: () => {},\n updateCustom: onUpdateCustom,\n archive: onArchive,\n unarchive: onUnarchive,\n delete: onDelete,\n generateTitle: () => {},\n initialize: async () => ({ remoteId: data.id, externalId: undefined }),\n detach: () => {},\n };\n});\n\n// InMemoryThreadList Client\nexport const InMemoryThreadList = resource(function InMemoryThreadList(\n props: InMemoryThreadListProps,\n): ClientOutput<\"threads\"> {\n const {\n thread: threadFactory,\n onSwitchToThread,\n onSwitchToNewThread,\n } = props;\n\n const [mainThreadId, setMainThreadId] = useState(\"main\");\n const [threads, setThreads] = useState<readonly ThreadData[]>(() => [\n { id: \"main\", title: \"Main Thread\", status: \"regular\" },\n ]);\n\n const handleSwitchToThread = (threadId: string) => {\n setMainThreadId(threadId);\n onSwitchToThread?.(threadId);\n };\n\n const handleArchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"archived\" as const } : t,\n ),\n );\n };\n\n const handleUnarchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"regular\" as const } : t,\n ),\n );\n };\n\n const handleUpdateCustom = (\n threadId: string,\n custom: Record<string, unknown> | undefined,\n ) => {\n setThreads((prev) =>\n prev.map((t) => (t.id === threadId ? { ...t, custom } : t)),\n );\n };\n\n const handleDelete = (threadId: string) => {\n setThreads((prev) => prev.filter((t) => t.id !== threadId));\n if (mainThreadId === threadId) {\n const remaining = threads.filter((t) => t.id !== threadId);\n setMainThreadId(remaining[0]?.id || \"main\");\n }\n };\n\n const handleSwitchToNewThread = () => {\n const newId = `thread-${Date.now()}`;\n setThreads((prev) => [\n ...prev,\n { id: newId, title: \"New Thread\", status: \"regular\" },\n ]);\n setMainThreadId(newId);\n onSwitchToNewThread?.();\n };\n\n const threadListItems = useClientLookup(\n () =>\n threads.map((t) =>\n withKey(\n t.id,\n ThreadListItemClient({\n data: t,\n onSwitchTo: () => handleSwitchToThread(t.id),\n onUpdateCustom: (custom) => handleUpdateCustom(t.id, custom),\n onArchive: () => handleArchive(t.id),\n onUnarchive: () => handleUnarchive(t.id),\n onDelete: () => handleDelete(t.id),\n }),\n ),\n ),\n [threads],\n );\n\n // Create the main thread\n const mainThreadClient = useClientResource(threadFactory(mainThreadId));\n\n const state = useMemo(() => {\n const regularThreads = threads.filter((t) => t.status === \"regular\");\n const archivedThreads = threads.filter((t) => t.status === \"archived\");\n\n return {\n mainThreadId,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: regularThreads.map((t) => t.id),\n archivedThreadIds: archivedThreads.map((t) => t.id),\n threadItems: threadListItems.state,\n main: mainThreadClient.state,\n };\n }, [mainThreadId, threads, threadListItems.state, mainThreadClient.state]);\n\n return {\n getState: () => state,\n switchToThread: handleSwitchToThread,\n switchToNewThread: handleSwitchToNewThread,\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (selector === \"main\") {\n const index = threads.findIndex((t) => t.id === mainThreadId);\n return threadListItems.get({ index: index === -1 ? 0 : index });\n }\n if (\"id\" in selector) {\n const index = threads.findIndex((t) => t.id === selector.id);\n return threadListItems.get({ index });\n }\n return threadListItems.get(selector);\n },\n thread: () => mainThreadClient.methods,\n };\n});\n\nattachTransformScopes(InMemoryThreadList, (scopes, parent) => {\n scopes.thread ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().thread(\"main\"),\n });\n scopes.threadListItem ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().item(\"main\"),\n });\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.threads().thread(\"main\").composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"InMemoryThreadList.js","names":["useState","useMemo","resource","withKey","ResourceElement","ClientOutput","useClientLookup","Derived","attachTransformScopes","useClientResource","ModelContext","Suggestions","Tools","DataRenderers","RESOLVED_PROMISE","Promise","resolve","InMemoryThreadListProps","thread","threadId","onSwitchToThread","onSwitchToNewThread","ThreadData","id","title","status","custom","Record","useThreadListItemClient","props","$","_c","data","onSwitchTo","onUpdateCustom","onArchive","onUnarchive","onDelete","t0","remoteId","undefined","externalId","state","t1","t2","t3","getState","switchTo","rename","_temp","updateCustom","archive","unarchive","delete","generateTitle","_temp2","initialize","detach","_temp3","ThreadListItemClient","useInMemoryThreadList","threadFactory","mainThreadId","setMainThreadId","threads","setThreads","_temp4","handleSwitchToThread","Symbol","for","threadId_0","prev","map","t","const","handleArchive","threadId_1","prev_0","t_0","handleUnarchive","threadId_2","prev_1","t_1","handleUpdateCustom","t4","threadId_3","prev_2","filter","t_2","remaining","t_3","handleDelete","t5","newId","Date","now","prev_3","handleSwitchToNewThread","t6","t7","t_4","custom_0","threadListItems","mainThreadClient","t10","t11","t12","t13","t14","t8","t9","regularThreads","_temp5","archivedThreads","_temp6","_temp7","_temp8","t15","newThreadId","isLoading","isLoadingMore","hasMore","threadIds","archivedThreadIds","threadItems","main","t16","t17","selector","index","findIndex","t_9","get","index_0","t_10","t18","methods","t19","switchToThread","switchToNewThread","getLoadThreadsPromise","_temp9","reload","_temp0","loadMore","_temp1","item","InMemoryThreadList","scopes","parent","source","query","type","aui","threadListItem","composer","modelContext","tools","dataRenderers","suggestions","t_5","t_6","t_7","t_8"],"sources":["../../src/client/InMemoryThreadList.ts"],"sourcesContent":["import { useState, useMemo } from \"react\";\nimport { resource, withKey, type ResourceElement } from \"@assistant-ui/tap\";\nimport {\n type ClientOutput,\n useClientLookup,\n Derived,\n attachTransformScopes,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\n\nexport type InMemoryThreadListProps = {\n thread: (threadId: string) => ResourceElement<ClientOutput<\"thread\">>;\n onSwitchToThread?: (threadId: string) => void;\n onSwitchToNewThread?: () => void;\n};\n\ntype ThreadData = {\n id: string;\n title?: string;\n status: \"regular\" | \"archived\";\n custom?: Record<string, unknown> | undefined;\n};\n\n// ThreadListItem Client\nconst useThreadListItemClient = (props: {\n data: ThreadData;\n onSwitchTo: () => void;\n onUpdateCustom: (custom: Record<string, unknown> | undefined) => void;\n onArchive: () => void;\n onUnarchive: () => void;\n onDelete: () => void;\n}): ClientOutput<\"threadListItem\"> => {\n const { data, onSwitchTo, onUpdateCustom, onArchive, onUnarchive, onDelete } =\n props;\n const state = useMemo(\n () => ({\n id: data.id,\n remoteId: undefined,\n externalId: undefined,\n title: data.title,\n status: data.status,\n custom: data.custom,\n }),\n [data.id, data.title, data.status, data.custom],\n );\n\n return {\n getState: () => state,\n switchTo: onSwitchTo,\n rename: () => {},\n updateCustom: onUpdateCustom,\n archive: onArchive,\n unarchive: onUnarchive,\n delete: onDelete,\n generateTitle: () => {},\n initialize: async () => ({ remoteId: data.id, externalId: undefined }),\n detach: () => {},\n };\n};\n\nconst ThreadListItemClient = resource(useThreadListItemClient);\n\n// InMemoryThreadList Client\nconst useInMemoryThreadList = (\n props: InMemoryThreadListProps,\n): ClientOutput<\"threads\"> => {\n const {\n thread: threadFactory,\n onSwitchToThread,\n onSwitchToNewThread,\n } = props;\n\n const [mainThreadId, setMainThreadId] = useState(\"main\");\n const [threads, setThreads] = useState<readonly ThreadData[]>(() => [\n { id: \"main\", title: \"Main Thread\", status: \"regular\" },\n ]);\n\n const handleSwitchToThread = (threadId: string) => {\n setMainThreadId(threadId);\n onSwitchToThread?.(threadId);\n };\n\n const handleArchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"archived\" as const } : t,\n ),\n );\n };\n\n const handleUnarchive = (threadId: string) => {\n setThreads((prev) =>\n prev.map((t) =>\n t.id === threadId ? { ...t, status: \"regular\" as const } : t,\n ),\n );\n };\n\n const handleUpdateCustom = (\n threadId: string,\n custom: Record<string, unknown> | undefined,\n ) => {\n setThreads((prev) =>\n prev.map((t) => (t.id === threadId ? { ...t, custom } : t)),\n );\n };\n\n const handleDelete = (threadId: string) => {\n setThreads((prev) => prev.filter((t) => t.id !== threadId));\n if (mainThreadId === threadId) {\n const remaining = threads.filter((t) => t.id !== threadId);\n setMainThreadId(remaining[0]?.id || \"main\");\n }\n };\n\n const handleSwitchToNewThread = () => {\n const newId = `thread-${Date.now()}`;\n setThreads((prev) => [\n ...prev,\n { id: newId, title: \"New Thread\", status: \"regular\" },\n ]);\n setMainThreadId(newId);\n onSwitchToNewThread?.();\n };\n\n const threadListItems = useClientLookup(\n threads.map((t) =>\n withKey(\n t.id,\n ThreadListItemClient({\n data: t,\n onSwitchTo: () => handleSwitchToThread(t.id),\n onUpdateCustom: (custom) => handleUpdateCustom(t.id, custom),\n onArchive: () => handleArchive(t.id),\n onUnarchive: () => handleUnarchive(t.id),\n onDelete: () => handleDelete(t.id),\n }),\n ),\n ),\n );\n\n // Create the main thread\n const mainThreadClient = useClientResource(threadFactory(mainThreadId));\n\n const state = useMemo(() => {\n const regularThreads = threads.filter((t) => t.status === \"regular\");\n const archivedThreads = threads.filter((t) => t.status === \"archived\");\n\n return {\n mainThreadId,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: regularThreads.map((t) => t.id),\n archivedThreadIds: archivedThreads.map((t) => t.id),\n threadItems: threadListItems.state,\n main: mainThreadClient.state,\n };\n }, [mainThreadId, threads, threadListItems.state, mainThreadClient.state]);\n\n return {\n getState: () => state,\n switchToThread: handleSwitchToThread,\n switchToNewThread: handleSwitchToNewThread,\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (selector === \"main\") {\n const index = threads.findIndex((t) => t.id === mainThreadId);\n return threadListItems.get({ index: index === -1 ? 0 : index });\n }\n if (\"id\" in selector) {\n const index = threads.findIndex((t) => t.id === selector.id);\n return threadListItems.get({ index });\n }\n return threadListItems.get(selector);\n },\n thread: () => mainThreadClient.methods,\n };\n};\n\nexport const InMemoryThreadList = resource(useInMemoryThreadList);\n\nattachTransformScopes(useInMemoryThreadList, (scopes, parent) => {\n scopes.thread ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().thread(\"main\"),\n });\n scopes.threadListItem ??= Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().item(\"main\"),\n });\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.threads().thread(\"main\").composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":"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"}
@@ -4,12 +4,7 @@ import { ClientElement, ClientOutput } from "@assistant-ui/store";
4
4
  type SingleThreadListProps = {
5
5
  thread: ClientElement<"thread">;
6
6
  };
7
- /**
8
- * A minimal threads scope that wraps a single thread.
9
- * Automatically provided by ExternalThread when no threads scope exists.
10
- * Mounts the provided thread resource element.
11
- */
12
- declare const SingleThreadList: (props: SingleThreadListProps) => import("@assistant-ui/tap").ResourceElement<ClientOutput<"threads">, SingleThreadListProps>;
7
+ declare const SingleThreadList: import("@assistant-ui/tap").Resource<ClientOutput<"threads">, [SingleThreadListProps]>;
13
8
  //#endregion
14
9
  export { SingleThreadList };
15
10
  //# sourceMappingURL=SingleThreadList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SingleThreadList.d.ts","names":[],"sources":["../../src/client/SingleThreadList.ts"],"mappings":";;;KAqCK,qBAAA;EACH,MAAA,EAAQ,aAAa;AAAA;;;;AAAA;AAQvB;cAAa,gBAAA,GAAgB,KAAA,EAAA,qBAAA,iCAAA,eAAA,CAAA,YAAA,aAAA,qBAAA"}
1
+ {"version":3,"file":"SingleThreadList.d.ts","names":[],"sources":["../../src/client/SingleThreadList.ts"],"mappings":";;;KAqCK,qBAAA;EACH,MAAA,EAAQ,aAAa;AAAA;AAAA,cAuEV,gBAAA,8BAAgB,QAAA,CAAA,YAAA,cAAA,qBAAA"}
@@ -1,74 +1,162 @@
1
1
  import { useClientResource } from "@assistant-ui/store";
2
- import { useMemo, useState } from "@assistant-ui/tap/react-shim";
2
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
+ import { useState } from "@assistant-ui/tap/react-shim";
3
4
  import { resource } from "@assistant-ui/tap";
4
5
  //#region src/client/SingleThreadList.ts
5
6
  const RESOLVED_PROMISE = Promise.resolve();
6
7
  const THREAD_ID = "default";
7
- const SingleThreadListItem = resource(function SingleThreadListItem() {
8
+ const useSingleThreadListItem = () => {
9
+ const $ = c(2);
8
10
  const [custom, setCustom] = useState();
9
- return {
10
- getState: () => ({
11
- id: THREAD_ID,
12
- remoteId: void 0,
13
- externalId: void 0,
14
- title: void 0,
15
- status: "regular",
16
- custom
17
- }),
18
- switchTo: () => {},
19
- rename: () => {},
20
- updateCustom: setCustom,
21
- archive: () => {},
22
- unarchive: () => {},
23
- delete: () => {},
24
- generateTitle: () => {},
25
- initialize: async () => ({
26
- remoteId: THREAD_ID,
27
- externalId: void 0
28
- }),
29
- detach: () => {}
30
- };
31
- });
11
+ let t0;
12
+ if ($[0] !== custom) {
13
+ t0 = {
14
+ getState: () => ({
15
+ id: THREAD_ID,
16
+ remoteId: void 0,
17
+ externalId: void 0,
18
+ title: void 0,
19
+ status: "regular",
20
+ custom
21
+ }),
22
+ switchTo: _temp,
23
+ rename: _temp2,
24
+ updateCustom: setCustom,
25
+ archive: _temp3,
26
+ unarchive: _temp4,
27
+ delete: _temp5,
28
+ generateTitle: _temp6,
29
+ initialize: _temp7,
30
+ detach: _temp8
31
+ };
32
+ $[0] = custom;
33
+ $[1] = t0;
34
+ } else t0 = $[1];
35
+ return t0;
36
+ };
37
+ const SingleThreadListItem = resource(useSingleThreadListItem);
32
38
  /**
33
39
  * A minimal threads scope that wraps a single thread.
34
40
  * Automatically provided by ExternalThread when no threads scope exists.
35
41
  * Mounts the provided thread resource element.
36
42
  */
37
- const SingleThreadList = resource(function SingleThreadList({ thread }) {
38
- const itemClient = useClientResource(SingleThreadListItem());
43
+ const useSingleThreadList = (t0) => {
44
+ const $ = c(18);
45
+ const { thread } = t0;
46
+ let t1;
47
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
48
+ t1 = SingleThreadListItem();
49
+ $[0] = t1;
50
+ } else t1 = $[0];
51
+ const itemClient = useClientResource(t1);
39
52
  const threadClient = useClientResource(thread);
40
- const state = useMemo(() => ({
41
- mainThreadId: THREAD_ID,
42
- newThreadId: null,
43
- isLoading: false,
44
- isLoadingMore: false,
45
- hasMore: false,
46
- threadIds: [THREAD_ID],
47
- archivedThreadIds: [],
48
- threadItems: [itemClient.state],
49
- main: threadClient.state
50
- }), [itemClient.state, threadClient.state]);
51
- return {
52
- getState: () => state,
53
- switchToThread: () => {
54
- throw new Error("SingleThreadList does not support switchToThread");
55
- },
56
- switchToNewThread: () => {
57
- throw new Error("SingleThreadList does not support switchToNewThread");
58
- },
59
- getLoadThreadsPromise: () => RESOLVED_PROMISE,
60
- reload: () => RESOLVED_PROMISE,
61
- loadMore: () => RESOLVED_PROMISE,
62
- item: (selector) => {
53
+ let t2;
54
+ let t3;
55
+ if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
56
+ t2 = [THREAD_ID];
57
+ t3 = [];
58
+ $[1] = t2;
59
+ $[2] = t3;
60
+ } else {
61
+ t2 = $[1];
62
+ t3 = $[2];
63
+ }
64
+ let t4;
65
+ if ($[3] !== itemClient.state) {
66
+ t4 = [itemClient.state];
67
+ $[3] = itemClient.state;
68
+ $[4] = t4;
69
+ } else t4 = $[4];
70
+ let t5;
71
+ if ($[5] !== t4 || $[6] !== threadClient.state) {
72
+ t5 = {
73
+ mainThreadId: THREAD_ID,
74
+ newThreadId: null,
75
+ isLoading: false,
76
+ isLoadingMore: false,
77
+ hasMore: false,
78
+ threadIds: t2,
79
+ archivedThreadIds: t3,
80
+ threadItems: t4,
81
+ main: threadClient.state
82
+ };
83
+ $[5] = t4;
84
+ $[6] = threadClient.state;
85
+ $[7] = t5;
86
+ } else t5 = $[7];
87
+ const state = t5;
88
+ let t6;
89
+ if ($[8] !== state) {
90
+ t6 = () => state;
91
+ $[8] = state;
92
+ $[9] = t6;
93
+ } else t6 = $[9];
94
+ let t7;
95
+ if ($[10] !== itemClient.methods) {
96
+ t7 = (selector) => {
63
97
  if (selector !== "main" && !(typeof selector === "object" && "id" in selector && selector.id === THREAD_ID) && !(typeof selector === "object" && "index" in selector && selector.index === 0)) throw new Error(`SingleThreadList: unknown item selector ${JSON.stringify(selector)}`);
64
98
  return itemClient.methods;
65
- },
66
- thread: (selector) => {
67
- if (selector !== "main" && selector !== THREAD_ID) throw new Error(`SingleThreadList: unknown thread selector ${JSON.stringify(selector)}`);
99
+ };
100
+ $[10] = itemClient.methods;
101
+ $[11] = t7;
102
+ } else t7 = $[11];
103
+ let t8;
104
+ if ($[12] !== threadClient.methods) {
105
+ t8 = (selector_0) => {
106
+ if (selector_0 !== "main" && selector_0 !== THREAD_ID) throw new Error(`SingleThreadList: unknown thread selector ${JSON.stringify(selector_0)}`);
68
107
  return threadClient.methods;
69
- }
108
+ };
109
+ $[12] = threadClient.methods;
110
+ $[13] = t8;
111
+ } else t8 = $[13];
112
+ let t9;
113
+ if ($[14] !== t6 || $[15] !== t7 || $[16] !== t8) {
114
+ t9 = {
115
+ getState: t6,
116
+ switchToThread: _temp9,
117
+ switchToNewThread: _temp0,
118
+ getLoadThreadsPromise: _temp1,
119
+ reload: _temp10,
120
+ loadMore: _temp11,
121
+ item: t7,
122
+ thread: t8
123
+ };
124
+ $[14] = t6;
125
+ $[15] = t7;
126
+ $[16] = t8;
127
+ $[17] = t9;
128
+ } else t9 = $[17];
129
+ return t9;
130
+ };
131
+ const SingleThreadList = resource(useSingleThreadList);
132
+ function _temp() {}
133
+ function _temp2() {}
134
+ function _temp3() {}
135
+ function _temp4() {}
136
+ function _temp5() {}
137
+ function _temp6() {}
138
+ async function _temp7() {
139
+ return {
140
+ remoteId: THREAD_ID,
141
+ externalId: void 0
70
142
  };
71
- });
143
+ }
144
+ function _temp8() {}
145
+ function _temp9() {
146
+ throw new Error("SingleThreadList does not support switchToThread");
147
+ }
148
+ function _temp0() {
149
+ throw new Error("SingleThreadList does not support switchToNewThread");
150
+ }
151
+ function _temp1() {
152
+ return RESOLVED_PROMISE;
153
+ }
154
+ function _temp10() {
155
+ return RESOLVED_PROMISE;
156
+ }
157
+ function _temp11() {
158
+ return RESOLVED_PROMISE;
159
+ }
72
160
  //#endregion
73
161
  export { SingleThreadList };
74
162
 
@@ -1 +1 @@
1
- {"version":3,"file":"SingleThreadList.js","names":[],"sources":["../../src/client/SingleThreadList.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\nconst THREAD_ID = \"default\";\n\nconst SingleThreadListItem = resource(\n function SingleThreadListItem(): ClientOutput<\"threadListItem\"> {\n const [custom, setCustom] = useState<Record<string, unknown> | undefined>();\n\n return {\n getState: () => ({\n id: THREAD_ID,\n remoteId: undefined,\n externalId: undefined,\n title: undefined,\n status: \"regular\",\n custom,\n }),\n switchTo: () => {},\n rename: () => {},\n updateCustom: setCustom,\n archive: () => {},\n unarchive: () => {},\n delete: () => {},\n generateTitle: () => {},\n initialize: async () => ({ remoteId: THREAD_ID, externalId: undefined }),\n detach: () => {},\n };\n },\n);\n\ntype SingleThreadListProps = {\n thread: ClientElement<\"thread\">;\n};\n\n/**\n * A minimal threads scope that wraps a single thread.\n * Automatically provided by ExternalThread when no threads scope exists.\n * Mounts the provided thread resource element.\n */\nexport const SingleThreadList = resource(function SingleThreadList({\n thread,\n}: SingleThreadListProps): ClientOutput<\"threads\"> {\n const itemClient = useClientResource(SingleThreadListItem());\n const threadClient = useClientResource(thread);\n\n const state = useMemo(\n () => ({\n mainThreadId: THREAD_ID,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: [THREAD_ID],\n archivedThreadIds: [],\n threadItems: [itemClient.state],\n main: threadClient.state,\n }),\n [itemClient.state, threadClient.state],\n );\n\n return {\n getState: () => state,\n switchToThread: () => {\n throw new Error(\"SingleThreadList does not support switchToThread\");\n },\n switchToNewThread: () => {\n throw new Error(\"SingleThreadList does not support switchToNewThread\");\n },\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (\n selector !== \"main\" &&\n !(\n typeof selector === \"object\" &&\n \"id\" in selector &&\n selector.id === THREAD_ID\n ) &&\n !(\n typeof selector === \"object\" &&\n \"index\" in selector &&\n selector.index === 0\n )\n ) {\n throw new Error(\n `SingleThreadList: unknown item selector ${JSON.stringify(selector)}`,\n );\n }\n return itemClient.methods;\n },\n thread: (selector) => {\n if (selector !== \"main\" && selector !== THREAD_ID) {\n throw new Error(\n `SingleThreadList: unknown thread selector ${JSON.stringify(selector)}`,\n );\n }\n return threadClient.methods;\n },\n };\n});\n"],"mappings":";;;;AAQA,MAAM,mBAAmB,QAAQ,QAAQ;AACzC,MAAM,YAAY;AAElB,MAAM,uBAAuB,SAC3B,SAAS,uBAAuD;CAC9D,MAAM,CAAC,QAAQ,aAAa,SAA8C;CAE1E,OAAO;EACL,iBAAiB;GACf,IAAI;GACJ,UAAU,KAAA;GACV,YAAY,KAAA;GACZ,OAAO,KAAA;GACP,QAAQ;GACR;EACF;EACA,gBAAgB,CAAC;EACjB,cAAc,CAAC;EACf,cAAc;EACd,eAAe,CAAC;EAChB,iBAAiB,CAAC;EAClB,cAAc,CAAC;EACf,qBAAqB,CAAC;EACtB,YAAY,aAAa;GAAE,UAAU;GAAW,YAAY,KAAA;EAAU;EACtE,cAAc,CAAC;CACjB;AACF,CACF;;;;;;AAWA,MAAa,mBAAmB,SAAS,SAAS,iBAAiB,EACjE,UACiD;CACjD,MAAM,aAAa,kBAAkB,qBAAqB,CAAC;CAC3D,MAAM,eAAe,kBAAkB,MAAM;CAE7C,MAAM,QAAQ,eACL;EACL,cAAc;EACd,aAAa;EACb,WAAW;EACX,eAAe;EACf,SAAS;EACT,WAAW,CAAC,SAAS;EACrB,mBAAmB,CAAC;EACpB,aAAa,CAAC,WAAW,KAAK;EAC9B,MAAM,aAAa;CACrB,IACA,CAAC,WAAW,OAAO,aAAa,KAAK,CACvC;CAEA,OAAO;EACL,gBAAgB;EAChB,sBAAsB;GACpB,MAAM,IAAI,MAAM,kDAAkD;EACpE;EACA,yBAAyB;GACvB,MAAM,IAAI,MAAM,qDAAqD;EACvE;EACA,6BAA6B;EAC7B,cAAc;EACd,gBAAgB;EAChB,OAAO,aAAa;GAClB,IACE,aAAa,UACb,EACE,OAAO,aAAa,YACpB,QAAQ,YACR,SAAS,OAAO,cAElB,EACE,OAAO,aAAa,YACpB,WAAW,YACX,SAAS,UAAU,IAGrB,MAAM,IAAI,MACR,2CAA2C,KAAK,UAAU,QAAQ,GACpE;GAEF,OAAO,WAAW;EACpB;EACA,SAAS,aAAa;GACpB,IAAI,aAAa,UAAU,aAAa,WACtC,MAAM,IAAI,MACR,6CAA6C,KAAK,UAAU,QAAQ,GACtE;GAEF,OAAO,aAAa;EACtB;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"SingleThreadList.js","names":["useMemo","useState","resource","ClientElement","ClientOutput","useClientResource","RESOLVED_PROMISE","Promise","resolve","THREAD_ID","useSingleThreadListItem","$","_c","custom","setCustom","t0","getState","id","remoteId","undefined","externalId","title","status","switchTo","_temp","rename","_temp2","updateCustom","archive","_temp3","unarchive","_temp4","delete","_temp5","generateTitle","_temp6","initialize","_temp7","detach","_temp8","SingleThreadListItem","SingleThreadListProps","thread","useSingleThreadList","t1","Symbol","for","itemClient","threadClient","t2","t3","t4","state","t5","mainThreadId","newThreadId","isLoading","isLoadingMore","hasMore","threadIds","archivedThreadIds","threadItems","main","t6","t7","methods","selector","index","Error","JSON","stringify","t8","selector_0","t9","switchToThread","_temp9","switchToNewThread","_temp0","getLoadThreadsPromise","_temp1","reload","_temp10","loadMore","_temp11","item","SingleThreadList"],"sources":["../../src/client/SingleThreadList.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientResource,\n} from \"@assistant-ui/store\";\n\nconst RESOLVED_PROMISE = Promise.resolve();\nconst THREAD_ID = \"default\";\n\nconst useSingleThreadListItem = (): ClientOutput<\"threadListItem\"> => {\n const [custom, setCustom] = useState<Record<string, unknown> | undefined>();\n\n return {\n getState: () => ({\n id: THREAD_ID,\n remoteId: undefined,\n externalId: undefined,\n title: undefined,\n status: \"regular\",\n custom,\n }),\n switchTo: () => {},\n rename: () => {},\n updateCustom: setCustom,\n archive: () => {},\n unarchive: () => {},\n delete: () => {},\n generateTitle: () => {},\n initialize: async () => ({ remoteId: THREAD_ID, externalId: undefined }),\n detach: () => {},\n };\n};\n\nconst SingleThreadListItem = resource(useSingleThreadListItem);\n\ntype SingleThreadListProps = {\n thread: ClientElement<\"thread\">;\n};\n\n/**\n * A minimal threads scope that wraps a single thread.\n * Automatically provided by ExternalThread when no threads scope exists.\n * Mounts the provided thread resource element.\n */\nconst useSingleThreadList = ({\n thread,\n}: SingleThreadListProps): ClientOutput<\"threads\"> => {\n const itemClient = useClientResource(SingleThreadListItem());\n const threadClient = useClientResource(thread);\n\n const state = useMemo(\n () => ({\n mainThreadId: THREAD_ID,\n newThreadId: null,\n isLoading: false,\n isLoadingMore: false,\n hasMore: false,\n threadIds: [THREAD_ID],\n archivedThreadIds: [],\n threadItems: [itemClient.state],\n main: threadClient.state,\n }),\n [itemClient.state, threadClient.state],\n );\n\n return {\n getState: () => state,\n switchToThread: () => {\n throw new Error(\"SingleThreadList does not support switchToThread\");\n },\n switchToNewThread: () => {\n throw new Error(\"SingleThreadList does not support switchToNewThread\");\n },\n getLoadThreadsPromise: () => RESOLVED_PROMISE,\n reload: () => RESOLVED_PROMISE,\n loadMore: () => RESOLVED_PROMISE,\n item: (selector) => {\n if (\n selector !== \"main\" &&\n !(\n typeof selector === \"object\" &&\n \"id\" in selector &&\n selector.id === THREAD_ID\n ) &&\n !(\n typeof selector === \"object\" &&\n \"index\" in selector &&\n selector.index === 0\n )\n ) {\n throw new Error(\n `SingleThreadList: unknown item selector ${JSON.stringify(selector)}`,\n );\n }\n return itemClient.methods;\n },\n thread: (selector) => {\n if (selector !== \"main\" && selector !== THREAD_ID) {\n throw new Error(\n `SingleThreadList: unknown thread selector ${JSON.stringify(selector)}`,\n );\n }\n return threadClient.methods;\n },\n };\n};\n\nexport const SingleThreadList = resource(useSingleThreadList);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ReadonlyStore.js","names":[],"sources":["../../src/context/ReadonlyStore.ts"],"sourcesContent":["import type { StoreApi } from \"zustand\";\n\nexport type ReadonlyStore<T> = Omit<StoreApi<T>, \"setState\" | \"destroy\">;\n\nexport const writableStore = <T>(store: ReadonlyStore<T> | undefined) => {\n return store as unknown as StoreApi<T>;\n};\n"],"mappings":";AAIA,MAAa,iBAAoB,UAAwC;CACvE,OAAO;AACT"}
1
+ {"version":3,"file":"ReadonlyStore.js","names":["StoreApi","ReadonlyStore","Omit","T","writableStore","store"],"sources":["../../src/context/ReadonlyStore.ts"],"sourcesContent":["import type { StoreApi } from \"zustand\";\n\nexport type ReadonlyStore<T> = Omit<StoreApi<T>, \"setState\" | \"destroy\">;\n\nexport const writableStore = <T>(store: ReadonlyStore<T> | undefined) => {\n return store as unknown as StoreApi<T>;\n};\n"],"mappings":";AAIA,MAAaI,iBAAoBC,UAAwC;CACvE,OAAOA;AACT"}
@@ -1,13 +1,46 @@
1
1
  "use client";
2
2
  import { AuiProvider, useAui } from "@assistant-ui/store";
3
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
3
4
  import { jsx } from "react/jsx-runtime";
4
5
  import { ThreadMessageClient } from "@assistant-ui/core/store";
5
6
  //#region src/context/providers/MessageProvider.tsx
6
- const MessageProvider = ({ children, ...props }) => {
7
- return /* @__PURE__ */ jsx(AuiProvider, {
8
- value: useAui({ message: ThreadMessageClient(props) }),
9
- children
10
- });
7
+ const MessageProvider = (t0) => {
8
+ const $ = c(9);
9
+ let children;
10
+ let t1;
11
+ let t2;
12
+ if ($[0] !== t0) {
13
+ const { children: t3, ...props } = t0;
14
+ children = t3;
15
+ t2 = useAui;
16
+ t1 = ThreadMessageClient(props);
17
+ $[0] = t0;
18
+ $[1] = children;
19
+ $[2] = t1;
20
+ $[3] = t2;
21
+ } else {
22
+ children = $[1];
23
+ t1 = $[2];
24
+ t2 = $[3];
25
+ }
26
+ let t3;
27
+ if ($[4] !== t1) {
28
+ t3 = { message: t1 };
29
+ $[4] = t1;
30
+ $[5] = t3;
31
+ } else t3 = $[5];
32
+ const aui = t2(t3);
33
+ let t4;
34
+ if ($[6] !== aui || $[7] !== children) {
35
+ t4 = /* @__PURE__ */ jsx(AuiProvider, {
36
+ value: aui,
37
+ children
38
+ });
39
+ $[6] = aui;
40
+ $[7] = children;
41
+ $[8] = t4;
42
+ } else t4 = $[8];
43
+ return t4;
11
44
  };
12
45
  //#endregion
13
46
  export { MessageProvider };
@@ -1 +1 @@
1
- {"version":3,"file":"MessageProvider.js","names":[],"sources":["../../../src/context/providers/MessageProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC, PropsWithChildren } from \"react\";\nimport { useAui, AuiProvider } from \"@assistant-ui/store\";\nimport {\n type ThreadMessageClientProps,\n ThreadMessageClient,\n} from \"@assistant-ui/core/store\";\n\nexport const MessageProvider: FC<\n PropsWithChildren<ThreadMessageClientProps>\n> = ({ children, ...props }) => {\n const aui = useAui({\n message: ThreadMessageClient(props),\n });\n\n return <AuiProvider value={aui}>{children}</AuiProvider>;\n};\n"],"mappings":";;;;;AASA,MAAa,mBAER,EAAE,UAAU,GAAG,YAAY;CAK9B,OAAO,oBAAC,aAAD;EAAa,OAJR,OAAO,EACjB,SAAS,oBAAoB,KAAK,EACpC,CAE6B;EAAI;CAAsB,CAAA;AACzD"}
1
+ {"version":3,"file":"MessageProvider.js","names":["c","_c","FC","PropsWithChildren","useAui","AuiProvider","ThreadMessageClientProps","ThreadMessageClient","MessageProvider","t0","$","children","t1","t2","t3","props","message","aui","t4"],"sources":["../../../src/context/providers/MessageProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC, PropsWithChildren } from \"react\";\nimport { useAui, AuiProvider } from \"@assistant-ui/store\";\nimport {\n type ThreadMessageClientProps,\n ThreadMessageClient,\n} from \"@assistant-ui/core/store\";\n\nexport const MessageProvider: FC<\n PropsWithChildren<ThreadMessageClientProps>\n> = ({ children, ...props }) => {\n const aui = useAui({\n message: ThreadMessageClient(props),\n });\n\n return <AuiProvider value={aui}>{children}</AuiProvider>;\n};\n"],"mappings":";;;;;;AASA,MAAaQ,mBAETC,OAAA;CAAA,MAAAC,IAAAT,EAAA,CAAA;CAAA,IAAAU;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAH,EAAA,OAAAD,IAAA;EAAC,MAAA,EAAAE,UAAAG,IAAA,GAAAC,UAAAN;EAAAE,WAAAG;EACSV,KAAAA;EACDQ,KAAAL,oBAAoBQ,KAAK;EAACL,EAAA,KAAAD;EAAAC,EAAA,KAAAC;EAAAD,EAAA,KAAAE;EAAAF,EAAA,KAAAG;CAAA,OAAA;EAAAF,WAAAD,EAAA;EAAAE,KAAAF,EAAA;EAAAG,KAAAH,EAAA;CAAA;CAAA,IAAAI;CAAA,IAAAJ,EAAA,OAAAE,IAAA;EADlBE,KAAA,EAAAE,SACRJ,GACX;EAACF,EAAA,KAAAE;EAAAF,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAFD,MAAAO,MAAYb,GAAOU,EAElB;CAAE,IAAAI;CAAA,IAAAR,EAAA,OAAAO,OAAAP,EAAA,OAAAC,UAAA;EAEIO,KAAA,oBAAC,aAAD;GAAoBD,OAAAA;GAAMN;EAAd,CAAA;EAAqCD,EAAA,KAAAO;EAAAP,EAAA,KAAAC;EAAAD,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAAjDQ;AAAiD"}
@@ -2,34 +2,90 @@
2
2
  import { makeThreadViewportStore } from "../stores/ThreadViewport.js";
3
3
  import { ThreadViewportContext, useThreadViewportStore } from "../react/ThreadViewportContext.js";
4
4
  import { writableStore } from "../ReadonlyStore.js";
5
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
6
  import { useEffect, useState } from "@assistant-ui/tap/react-shim";
6
7
  import { jsx } from "react/jsx-runtime";
7
8
  //#region src/context/providers/ThreadViewportProvider.tsx
8
9
  const useThreadViewportStoreValue = (options) => {
9
- const outerViewport = useThreadViewportStore({ optional: true });
10
- const [store] = useState(() => makeThreadViewportStore(options));
11
- useEffect(() => {
12
- return outerViewport?.getState().onScrollToBottom(() => {
10
+ const $ = c(11);
11
+ let t0;
12
+ if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
13
+ t0 = { optional: true };
14
+ $[0] = t0;
15
+ } else t0 = $[0];
16
+ const outerViewport = useThreadViewportStore(t0);
17
+ let t1;
18
+ if ($[1] !== options) {
19
+ t1 = () => makeThreadViewportStore(options);
20
+ $[1] = options;
21
+ $[2] = t1;
22
+ } else t1 = $[2];
23
+ const [store] = useState(t1);
24
+ let t2;
25
+ let t3;
26
+ if ($[3] !== outerViewport || $[4] !== store) {
27
+ t2 = () => outerViewport?.getState().onScrollToBottom(() => {
13
28
  store.getState().scrollToBottom();
14
29
  });
15
- }, [outerViewport, store]);
16
- useEffect(() => {
17
- if (!outerViewport) return;
18
- return store.subscribe((state) => {
19
- if (outerViewport.getState().isAtBottom !== state.isAtBottom) writableStore(outerViewport).setState({ isAtBottom: state.isAtBottom });
20
- });
21
- }, [store, outerViewport]);
30
+ t3 = [outerViewport, store];
31
+ $[3] = outerViewport;
32
+ $[4] = store;
33
+ $[5] = t2;
34
+ $[6] = t3;
35
+ } else {
36
+ t2 = $[5];
37
+ t3 = $[6];
38
+ }
39
+ useEffect(t2, t3);
40
+ let t4;
41
+ let t5;
42
+ if ($[7] !== outerViewport || $[8] !== store) {
43
+ t4 = () => {
44
+ if (!outerViewport) return;
45
+ return store.subscribe((state) => {
46
+ if (outerViewport.getState().isAtBottom !== state.isAtBottom) writableStore(outerViewport).setState({ isAtBottom: state.isAtBottom });
47
+ });
48
+ };
49
+ t5 = [store, outerViewport];
50
+ $[7] = outerViewport;
51
+ $[8] = store;
52
+ $[9] = t4;
53
+ $[10] = t5;
54
+ } else {
55
+ t4 = $[9];
56
+ t5 = $[10];
57
+ }
58
+ useEffect(t4, t5);
22
59
  return store;
23
60
  };
24
- const ThreadPrimitiveViewportProvider = ({ children, options = {} }) => {
25
- const useThreadViewport = useThreadViewportStoreValue(options);
26
- const [context] = useState(() => {
27
- return { useThreadViewport };
28
- });
29
- return /* @__PURE__ */ jsx(ThreadViewportContext.Provider, {
30
- value: context,
31
- children
32
- });
61
+ const ThreadPrimitiveViewportProvider = (t0) => {
62
+ const $ = c(7);
63
+ const { children, options: t1 } = t0;
64
+ let t2;
65
+ if ($[0] !== t1) {
66
+ t2 = t1 === void 0 ? {} : t1;
67
+ $[0] = t1;
68
+ $[1] = t2;
69
+ } else t2 = $[1];
70
+ const useThreadViewport = useThreadViewportStoreValue(t2);
71
+ let t3;
72
+ if ($[2] !== useThreadViewport) {
73
+ t3 = () => ({ useThreadViewport });
74
+ $[2] = useThreadViewport;
75
+ $[3] = t3;
76
+ } else t3 = $[3];
77
+ const [context] = useState(t3);
78
+ let t4;
79
+ if ($[4] !== children || $[5] !== context) {
80
+ t4 = /* @__PURE__ */ jsx(ThreadViewportContext.Provider, {
81
+ value: context,
82
+ children
83
+ });
84
+ $[4] = children;
85
+ $[5] = context;
86
+ $[6] = t4;
87
+ } else t4 = $[6];
88
+ return t4;
33
89
  };
34
90
  //#endregion
35
91
  export { ThreadPrimitiveViewportProvider };
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadViewportProvider.js","names":[],"sources":["../../../src/context/providers/ThreadViewportProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { type FC, type PropsWithChildren, useEffect, useState } from \"react\";\n\nimport {\n makeThreadViewportStore,\n type ThreadViewportStoreOptions,\n} from \"../stores/ThreadViewport\";\nimport {\n ThreadViewportContext,\n type ThreadViewportContextValue,\n useThreadViewportStore,\n} from \"../react/ThreadViewportContext\";\nimport { writableStore } from \"../ReadonlyStore\";\n\nexport type ThreadViewportProviderProps = PropsWithChildren<{\n options?: ThreadViewportStoreOptions;\n}>;\n\nconst useThreadViewportStoreValue = (options: ThreadViewportStoreOptions) => {\n const outerViewport = useThreadViewportStore({ optional: true });\n // Viewport options are initial configuration. Keeping them non-reactive avoids\n // fanout through every message in long threads when anchoring config changes.\n const [store] = useState(() => makeThreadViewportStore(options));\n\n // Forward scrollToBottom from outer viewport to inner viewport\n useEffect(() => {\n return outerViewport?.getState().onScrollToBottom(() => {\n store.getState().scrollToBottom();\n });\n }, [outerViewport, store]);\n\n useEffect(() => {\n if (!outerViewport) return;\n return store.subscribe((state) => {\n if (outerViewport.getState().isAtBottom !== state.isAtBottom) {\n writableStore(outerViewport).setState({ isAtBottom: state.isAtBottom });\n }\n });\n }, [store, outerViewport]);\n\n return store;\n};\n\nexport const ThreadPrimitiveViewportProvider: FC<\n ThreadViewportProviderProps\n> = ({ children, options = {} }) => {\n const useThreadViewport = useThreadViewportStoreValue(options);\n\n const [context] = useState<ThreadViewportContextValue>(() => {\n return {\n useThreadViewport,\n };\n });\n\n return (\n <ThreadViewportContext.Provider value={context}>\n {children}\n </ThreadViewportContext.Provider>\n );\n};\n"],"mappings":";;;;;;;AAmBA,MAAM,+BAA+B,YAAwC;CAC3E,MAAM,gBAAgB,uBAAuB,EAAE,UAAU,KAAK,CAAC;CAG/D,MAAM,CAAC,SAAS,eAAe,wBAAwB,OAAO,CAAC;CAG/D,gBAAgB;EACd,OAAO,eAAe,SAAS,CAAC,CAAC,uBAAuB;GACtD,MAAM,SAAS,CAAC,CAAC,eAAe;EAClC,CAAC;CACH,GAAG,CAAC,eAAe,KAAK,CAAC;CAEzB,gBAAgB;EACd,IAAI,CAAC,eAAe;EACpB,OAAO,MAAM,WAAW,UAAU;GAChC,IAAI,cAAc,SAAS,CAAC,CAAC,eAAe,MAAM,YAChD,cAAc,aAAa,CAAC,CAAC,SAAS,EAAE,YAAY,MAAM,WAAW,CAAC;EAE1E,CAAC;CACH,GAAG,CAAC,OAAO,aAAa,CAAC;CAEzB,OAAO;AACT;AAEA,MAAa,mCAER,EAAE,UAAU,UAAU,CAAC,QAAQ;CAClC,MAAM,oBAAoB,4BAA4B,OAAO;CAE7D,MAAM,CAAC,WAAW,eAA2C;EAC3D,OAAO,EACL,kBACF;CACF,CAAC;CAED,OACE,oBAAC,sBAAsB,UAAvB;EAAgC,OAAO;EACpC;CAC6B,CAAA;AAEpC"}
1
+ {"version":3,"file":"ThreadViewportProvider.js","names":["c","_c","FC","PropsWithChildren","useEffect","useState","makeThreadViewportStore","ThreadViewportStoreOptions","ThreadViewportContext","ThreadViewportContextValue","useThreadViewportStore","writableStore","ThreadViewportProviderProps","options","useThreadViewportStoreValue","$","t0","Symbol","for","optional","outerViewport","t1","store","t2","t3","getState","onScrollToBottom","scrollToBottom","t4","t5","subscribe","state","isAtBottom","setState","ThreadPrimitiveViewportProvider","children","undefined","useThreadViewport","context"],"sources":["../../../src/context/providers/ThreadViewportProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { type FC, type PropsWithChildren, useEffect, useState } from \"react\";\n\nimport {\n makeThreadViewportStore,\n type ThreadViewportStoreOptions,\n} from \"../stores/ThreadViewport\";\nimport {\n ThreadViewportContext,\n type ThreadViewportContextValue,\n useThreadViewportStore,\n} from \"../react/ThreadViewportContext\";\nimport { writableStore } from \"../ReadonlyStore\";\n\nexport type ThreadViewportProviderProps = PropsWithChildren<{\n options?: ThreadViewportStoreOptions;\n}>;\n\nconst useThreadViewportStoreValue = (options: ThreadViewportStoreOptions) => {\n const outerViewport = useThreadViewportStore({ optional: true });\n // Viewport options are initial configuration. Keeping them non-reactive avoids\n // fanout through every message in long threads when anchoring config changes.\n const [store] = useState(() => makeThreadViewportStore(options));\n\n // Forward scrollToBottom from outer viewport to inner viewport\n useEffect(() => {\n return outerViewport?.getState().onScrollToBottom(() => {\n store.getState().scrollToBottom();\n });\n }, [outerViewport, store]);\n\n useEffect(() => {\n if (!outerViewport) return;\n return store.subscribe((state) => {\n if (outerViewport.getState().isAtBottom !== state.isAtBottom) {\n writableStore(outerViewport).setState({ isAtBottom: state.isAtBottom });\n }\n });\n }, [store, outerViewport]);\n\n return store;\n};\n\nexport const ThreadPrimitiveViewportProvider: FC<\n ThreadViewportProviderProps\n> = ({ children, options = {} }) => {\n const useThreadViewport = useThreadViewportStoreValue(options);\n\n const [context] = useState<ThreadViewportContextValue>(() => {\n return {\n useThreadViewport,\n };\n });\n\n return (\n <ThreadViewportContext.Provider value={context}>\n {children}\n </ThreadViewportContext.Provider>\n );\n};\n"],"mappings":";;;;;;;;AAmBA,MAAMc,+BAA8BD,YAAA;CAAA,MAAAE,IAAAd,EAAA,EAAA;CAAA,IAAAe;CAAA,IAAAD,EAAA,OAAAE,OAAAC,IAAA,2BAAA,GAAA;EACWF,KAAA,EAAAG,UAAY,KAAK;EAACJ,EAAA,KAAAC;CAAA,OAAAA,KAAAD,EAAA;CAA/D,MAAAK,gBAAsBV,uBAAuBM,EAAkB;CAAE,IAAAK;CAAA,IAAAN,EAAA,OAAAF,SAAA;EAGxCQ,WAAMf,wBAAwBO,OAAO;EAACE,EAAA,KAAAF;EAAAE,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAA/D,MAAA,CAAAO,SAAgBjB,SAASgB,EAAsC;CAAE,IAAAE;CAAA,IAAAC;CAAA,IAAAT,EAAA,OAAAK,iBAAAL,EAAA,OAAAO,OAAA;EAGvDC,WACDH,eAAaK,SAA4B,CAAC,CAAAC,uBAAC;GAChDJ,MAAKG,SAAU,CAAC,CAAAE,eAAgB;EAAC,CAClC;EACAH,KAAA,CAACJ,eAAeE,KAAK;EAACP,EAAA,KAAAK;EAAAL,EAAA,KAAAO;EAAAP,EAAA,KAAAQ;EAAAR,EAAA,KAAAS;CAAA,OAAA;EAAAD,KAAAR,EAAA;EAAAS,KAAAT,EAAA;CAAA;CAJzBX,UAAUmB,IAIPC,EAAsB;CAAC,IAAAI;CAAA,IAAAC;CAAA,IAAAd,EAAA,OAAAK,iBAAAL,EAAA,OAAAO,OAAA;EAEhBM,WAAA;GACR,IAAI,CAACR,eAAa;GAAS,OACpBE,MAAKQ,WAAWC,UAAA;IACrB,IAAIX,cAAaK,SAAU,CAAC,CAAAO,eAAgBD,MAAKC,YAC/CrB,cAAcS,aAAa,CAAC,CAAAa,SAAU,EAAAD,YAAcD,MAAKC,WAAY,CAAC;GACvE,CACF;EAAC;EACDH,KAAA,CAACP,OAAOF,aAAa;EAACL,EAAA,KAAAK;EAAAL,EAAA,KAAAO;EAAAP,EAAA,KAAAa;EAAAb,EAAA,MAAAc;CAAA,OAAA;EAAAD,KAAAb,EAAA;EAAAc,KAAAd,EAAA;CAAA;CAPzBX,UAAUwB,IAOPC,EAAsB;CAAC,OAEnBP;AAAK;AAGd,MAAaY,mCAETlB,OAAA;CAAA,MAAAD,IAAAd,EAAA,CAAA;CAAC,MAAA,EAAAkC,UAAAtB,SAAAQ,OAAAL;CAA0B,IAAAO;CAAA,IAAAR,EAAA,OAAAM,IAAA;EAAdE,KAAAF,OAAAe,KAAAA,IAAA,CAAW,IAAXf;EAAYN,EAAA,KAAAM;EAAAN,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAC3B,MAAAsB,oBAA0BvB,4BAA4BD,EAAO;CAAE,IAAAW;CAAA,IAAAT,EAAA,OAAAsB,mBAAA;EAERb,YAC9C,EAAAa,kBAEP;EACDtB,EAAA,KAAAsB;EAAAtB,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAJD,MAAA,CAAAuB,WAAkBjC,SAAqCmB,EAItD;CAAE,IAAAI;CAAA,IAAAb,EAAA,OAAAoB,YAAApB,EAAA,OAAAuB,SAAA;EAGDV,KAAA,oBAAA,sBAAA,UAAA;GAAuCU,OAAAA;GACpCH;EACH,CAAA;EAAiCpB,EAAA,KAAAoB;EAAApB,EAAA,KAAAuB;EAAAvB,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,OAFjCa;AAEiC"}
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadViewportContext.js","names":[],"sources":["../../../src/context/react/ThreadViewportContext.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext } from \"react\";\nimport type { ReadonlyStore } from \"../ReadonlyStore\";\nimport type { UseBoundStore } from \"zustand\";\nimport { createContextHook } from \"./utils/createContextHook\";\nimport { createContextStoreHook } from \"./utils/createContextStoreHook\";\nimport type { ThreadViewportState } from \"../stores/ThreadViewport\";\n\nexport type ThreadViewportContextValue = {\n useThreadViewport: UseBoundStore<ReadonlyStore<ThreadViewportState>>;\n};\n\nexport const ThreadViewportContext =\n createContext<ThreadViewportContextValue | null>(null);\n\nconst useThreadViewportContext = createContextHook(\n ThreadViewportContext,\n \"ThreadPrimitive.Viewport\",\n);\n\nexport const { useThreadViewport, useThreadViewportStore } =\n createContextStoreHook(useThreadViewportContext, \"useThreadViewport\");\n"],"mappings":";;;;;AAaA,MAAa,wBACX,cAAiD,IAAI;AAOvD,MAAa,EAAE,mBAAmB,2BAChC,uBAN+B,kBAC/B,uBACA,0BAIuB,GAA0B,mBAAmB"}
1
+ {"version":3,"file":"ThreadViewportContext.js","names":["createContext","ReadonlyStore","UseBoundStore","createContextHook","createContextStoreHook","ThreadViewportState","ThreadViewportContextValue","useThreadViewport","ThreadViewportContext","useThreadViewportContext","useThreadViewportStore"],"sources":["../../../src/context/react/ThreadViewportContext.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext } from \"react\";\nimport type { ReadonlyStore } from \"../ReadonlyStore\";\nimport type { UseBoundStore } from \"zustand\";\nimport { createContextHook } from \"./utils/createContextHook\";\nimport { createContextStoreHook } from \"./utils/createContextStoreHook\";\nimport type { ThreadViewportState } from \"../stores/ThreadViewport\";\n\nexport type ThreadViewportContextValue = {\n useThreadViewport: UseBoundStore<ReadonlyStore<ThreadViewportState>>;\n};\n\nexport const ThreadViewportContext =\n createContext<ThreadViewportContextValue | null>(null);\n\nconst useThreadViewportContext = createContextHook(\n ThreadViewportContext,\n \"ThreadPrimitive.Viewport\",\n);\n\nexport const { useThreadViewport, useThreadViewportStore } =\n createContextStoreHook(useThreadViewportContext, \"useThreadViewport\");\n"],"mappings":";;;;;AAaA,MAAaQ,wBACXR,cAAiD,IAAI;AAOvD,MAAa,EAAEO,mBAAmBG,2BAChCN,uBAN+BD,kBAC/BK,uBACA,0BAIuBC,GAA0B,mBAAmB"}
@@ -1 +1 @@
1
- {"version":3,"file":"createContextHook.js","names":[],"sources":["../../../../src/context/react/utils/createContextHook.ts"],"sourcesContent":["\"use client\";\n\nimport { useContext, type Context } from \"react\";\n\n/**\n * Creates a context hook with optional support.\n * @param context - The React context to consume.\n * @param providerName - The name of the provider for error messages.\n * @returns A hook function that provides the context value.\n */\nexport function createContextHook<T>(\n context: Context<T | null>,\n providerName: string,\n) {\n function useContextHook(options?: {\n optional?: boolean | undefined;\n }): T | null {\n const contextValue = useContext(context);\n if (!options?.optional && !contextValue) {\n throw new Error(`This component must be used within ${providerName}.`);\n }\n return contextValue;\n }\n\n return useContextHook;\n}\n"],"mappings":";;;;;;;;;AAUA,SAAgB,kBACd,SACA,cACA;CACA,SAAS,eAAe,SAEX;EACX,MAAM,eAAe,WAAW,OAAO;EACvC,IAAI,CAAC,SAAS,YAAY,CAAC,cACzB,MAAM,IAAI,MAAM,sCAAsC,aAAa,EAAE;EAEvE,OAAO;CACT;CAEA,OAAO;AACT"}
1
+ {"version":3,"file":"createContextHook.js","names":["useContext","Context","createContextHook","context","T","providerName","useContextHook","options","contextValue","optional","Error"],"sources":["../../../../src/context/react/utils/createContextHook.ts"],"sourcesContent":["\"use client\";\n\nimport { useContext, type Context } from \"react\";\n\n/**\n * Creates a context hook with optional support.\n * @param context - The React context to consume.\n * @param providerName - The name of the provider for error messages.\n * @returns A hook function that provides the context value.\n */\nexport function createContextHook<T>(\n context: Context<T | null>,\n providerName: string,\n) {\n function useContextHook(options?: {\n optional?: boolean | undefined;\n }): T | null {\n const contextValue = useContext(context);\n if (!options?.optional && !contextValue) {\n throw new Error(`This component must be used within ${providerName}.`);\n }\n return contextValue;\n }\n\n return useContextHook;\n}\n"],"mappings":";;;;;;;;;AAUA,SAAgBE,kBACdC,SACAE,cACA;CACA,SAAAC,eAAAC,SAAA;EAGE,MAAAC,eAAqBR,WAAWG,OAAO;EACvC,IAAI,CAACI,SAAOE,YAAR,CAAuBD,cACzB,MAAM,IAAIE,MAAM,sCAAsCL,aAAY,EAAG;EACtE,OACMG;CAAY;CAGrB,OAAOF;AACT"}
@@ -1,3 +1,4 @@
1
+ import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
1
2
  //#region src/context/react/utils/createContextStoreHook.ts
2
3
  /**
3
4
  * Creates hooks for accessing a store within a context.
@@ -12,6 +13,7 @@ function createContextStoreHook(contextHook, contextKey) {
12
13
  return context[contextKey];
13
14
  }
14
15
  function useStoreHook(param) {
16
+ const $ = c(5);
15
17
  let optional = false;
16
18
  let selector;
17
19
  if (typeof param === "function") selector = param;
@@ -19,9 +21,22 @@ function createContextStoreHook(contextHook, contextKey) {
19
21
  optional = !!param.optional;
20
22
  selector = param.selector;
21
23
  }
22
- const store = useStoreStoreHook({ optional });
24
+ let t0;
25
+ if ($[0] !== optional) {
26
+ t0 = { optional };
27
+ $[0] = optional;
28
+ $[1] = t0;
29
+ } else t0 = $[1];
30
+ const store = useStoreStoreHook(t0);
23
31
  if (!store) return null;
24
- return selector ? store(selector) : store();
32
+ let t1;
33
+ if ($[2] !== selector || $[3] !== store) {
34
+ t1 = selector ? store(selector) : store();
35
+ $[2] = selector;
36
+ $[3] = store;
37
+ $[4] = t1;
38
+ } else t1 = $[4];
39
+ return t1;
25
40
  }
26
41
  return {
27
42
  [contextKey]: useStoreHook,