@assistant-ui/react 0.10.50 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/dist/api/AttachmentRuntime.d.ts.map +1 -1
  2. package/dist/api/AttachmentRuntime.js +1 -0
  3. package/dist/api/AttachmentRuntime.js.map +1 -1
  4. package/dist/api/ComposerRuntime.d.ts +5 -2
  5. package/dist/api/ComposerRuntime.d.ts.map +1 -1
  6. package/dist/api/ComposerRuntime.js +4 -6
  7. package/dist/api/ComposerRuntime.js.map +1 -1
  8. package/dist/api/MessagePartRuntime.d.ts.map +1 -1
  9. package/dist/api/MessagePartRuntime.js +1 -0
  10. package/dist/api/MessagePartRuntime.js.map +1 -1
  11. package/dist/api/MessageRuntime.d.ts.map +1 -1
  12. package/dist/api/MessageRuntime.js +1 -0
  13. package/dist/api/MessageRuntime.js.map +1 -1
  14. package/dist/api/ThreadListItemRuntime.d.ts.map +1 -1
  15. package/dist/api/ThreadListItemRuntime.js +5 -0
  16. package/dist/api/ThreadListItemRuntime.js.map +1 -1
  17. package/dist/api/ThreadListRuntime.d.ts +2 -3
  18. package/dist/api/ThreadListRuntime.d.ts.map +1 -1
  19. package/dist/api/ThreadListRuntime.js +6 -7
  20. package/dist/api/ThreadListRuntime.js.map +1 -1
  21. package/dist/api/ThreadRuntime.d.ts +6 -6
  22. package/dist/api/ThreadRuntime.d.ts.map +1 -1
  23. package/dist/api/ThreadRuntime.js +5 -4
  24. package/dist/api/ThreadRuntime.js.map +1 -1
  25. package/dist/client/AssistantRuntimeClient.d.ts +86 -0
  26. package/dist/client/AssistantRuntimeClient.d.ts.map +1 -0
  27. package/dist/client/AssistantRuntimeClient.js +138 -0
  28. package/dist/client/AssistantRuntimeClient.js.map +1 -0
  29. package/dist/client/AttachmentClient.d.ts +6 -0
  30. package/dist/client/AttachmentClient.d.ts.map +1 -0
  31. package/dist/client/AttachmentClient.js +1 -0
  32. package/dist/client/AttachmentClient.js.map +1 -0
  33. package/dist/client/ComposerClient.d.ts +42 -0
  34. package/dist/client/ComposerClient.d.ts.map +1 -0
  35. package/dist/client/ComposerClient.js +76 -0
  36. package/dist/client/ComposerClient.js.map +1 -0
  37. package/dist/client/EventManagerClient.d.ts +9 -0
  38. package/dist/client/EventManagerClient.d.ts.map +1 -0
  39. package/dist/client/EventManagerClient.js +40 -0
  40. package/dist/client/EventManagerClient.js.map +1 -0
  41. package/dist/client/MessageClient.d.ts +67 -0
  42. package/dist/client/MessageClient.d.ts.map +1 -0
  43. package/dist/client/MessageClient.js +108 -0
  44. package/dist/client/MessageClient.js.map +1 -0
  45. package/dist/client/MessagePartClient.d.ts +21 -0
  46. package/dist/client/MessagePartClient.d.ts.map +1 -0
  47. package/dist/client/MessagePartClient.js +25 -0
  48. package/dist/client/MessagePartClient.js.map +1 -0
  49. package/dist/client/ThreadClient.d.ts +111 -0
  50. package/dist/client/ThreadClient.d.ts.map +1 -0
  51. package/dist/client/ThreadClient.js +126 -0
  52. package/dist/client/ThreadClient.js.map +1 -0
  53. package/dist/client/ThreadListClient.d.ts +33 -0
  54. package/dist/client/ThreadListClient.d.ts.map +1 -0
  55. package/dist/client/ThreadListClient.js +87 -0
  56. package/dist/client/ThreadListClient.js.map +1 -0
  57. package/dist/client/ThreadListItemClient.d.ts +32 -0
  58. package/dist/client/ThreadListItemClient.d.ts.map +1 -0
  59. package/dist/client/ThreadListItemClient.js +53 -0
  60. package/dist/client/ThreadListItemClient.js.map +1 -0
  61. package/dist/client/util-hooks/tapLookupResources.d.ts +16 -0
  62. package/dist/client/util-hooks/tapLookupResources.d.ts.map +1 -0
  63. package/dist/client/util-hooks/tapLookupResources.js +21 -0
  64. package/dist/client/util-hooks/tapLookupResources.js.map +1 -0
  65. package/dist/client/util-hooks/tapSubscribable.d.ts +3 -0
  66. package/dist/client/util-hooks/tapSubscribable.d.ts.map +1 -0
  67. package/dist/client/util-hooks/tapSubscribable.js +16 -0
  68. package/dist/client/util-hooks/tapSubscribable.js.map +1 -0
  69. package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  70. package/dist/cloud/AssistantCloudThreadHistoryAdapter.js +21 -12
  71. package/dist/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  72. package/dist/context/providers/AssistantRuntimeProvider.d.ts +3 -3
  73. package/dist/context/providers/AssistantRuntimeProvider.d.ts.map +1 -1
  74. package/dist/context/providers/AssistantRuntimeProvider.js +14 -42
  75. package/dist/context/providers/AssistantRuntimeProvider.js.map +1 -1
  76. package/dist/context/providers/AttachmentProvider.d.ts +8 -0
  77. package/dist/context/providers/AttachmentProvider.d.ts.map +1 -0
  78. package/dist/context/providers/AttachmentProvider.js +41 -0
  79. package/dist/context/providers/AttachmentProvider.js.map +1 -0
  80. package/dist/context/providers/MessageProvider.d.ts +5 -0
  81. package/dist/context/providers/MessageProvider.d.ts.map +1 -0
  82. package/dist/context/providers/MessageProvider.js +47 -0
  83. package/dist/context/providers/MessageProvider.js.map +1 -0
  84. package/dist/context/providers/PartProvider.d.ts +5 -0
  85. package/dist/context/providers/PartProvider.d.ts.map +1 -0
  86. package/dist/context/providers/PartProvider.js +27 -0
  87. package/dist/context/providers/PartProvider.js.map +1 -0
  88. package/dist/context/providers/TextMessagePartProvider.d.ts +5 -8
  89. package/dist/context/providers/TextMessagePartProvider.d.ts.map +1 -1
  90. package/dist/context/providers/TextMessagePartProvider.js +42 -53
  91. package/dist/context/providers/TextMessagePartProvider.js.map +1 -1
  92. package/dist/context/providers/ThreadListItemProvider.d.ts +9 -0
  93. package/dist/context/providers/ThreadListItemProvider.d.ts.map +1 -0
  94. package/dist/context/providers/ThreadListItemProvider.js +65 -0
  95. package/dist/context/providers/ThreadListItemProvider.js.map +1 -0
  96. package/dist/context/providers/index.d.ts +4 -1
  97. package/dist/context/providers/index.d.ts.map +1 -1
  98. package/dist/context/providers/index.js +17 -3
  99. package/dist/context/providers/index.js.map +1 -1
  100. package/dist/context/react/AssistantApiContext.d.ts +112 -0
  101. package/dist/context/react/AssistantApiContext.d.ts.map +1 -0
  102. package/dist/context/react/AssistantApiContext.js +197 -0
  103. package/dist/context/react/AssistantApiContext.js.map +1 -0
  104. package/dist/context/react/index.d.ts +9 -12
  105. package/dist/context/react/index.d.ts.map +1 -1
  106. package/dist/context/react/index.js +38 -33
  107. package/dist/context/react/index.js.map +1 -1
  108. package/dist/context/react/legacy/AssistantContext.d.ts +58 -0
  109. package/dist/context/react/legacy/AssistantContext.d.ts.map +1 -0
  110. package/dist/context/react/legacy/AssistantContext.js +20 -0
  111. package/dist/context/react/legacy/AssistantContext.js.map +1 -0
  112. package/dist/context/react/{AttachmentContext.d.ts → legacy/AttachmentContext.d.ts} +133 -139
  113. package/dist/context/react/legacy/AttachmentContext.d.ts.map +1 -0
  114. package/dist/context/react/{AttachmentContext.js → legacy/AttachmentContext.js} +9 -15
  115. package/dist/context/react/legacy/AttachmentContext.js.map +1 -0
  116. package/dist/context/react/{ComposerContext.d.ts → legacy/ComposerContext.d.ts} +12 -12
  117. package/dist/context/react/legacy/ComposerContext.d.ts.map +1 -0
  118. package/dist/context/react/legacy/ComposerContext.js +19 -0
  119. package/dist/context/react/legacy/ComposerContext.js.map +1 -0
  120. package/dist/context/react/{MessageContext.d.ts → legacy/MessageContext.d.ts} +23 -47
  121. package/dist/context/react/legacy/MessageContext.d.ts.map +1 -0
  122. package/dist/context/react/legacy/MessageContext.js +24 -0
  123. package/dist/context/react/legacy/MessageContext.js.map +1 -0
  124. package/dist/context/react/legacy/MessagePartContext.d.ts +35 -0
  125. package/dist/context/react/legacy/MessagePartContext.d.ts.map +1 -0
  126. package/dist/context/react/legacy/MessagePartContext.js +19 -0
  127. package/dist/context/react/legacy/MessagePartContext.js.map +1 -0
  128. package/dist/context/react/{ThreadContext.d.ts → legacy/ThreadContext.d.ts} +24 -30
  129. package/dist/context/react/legacy/ThreadContext.d.ts.map +1 -0
  130. package/dist/context/react/legacy/ThreadContext.js +33 -0
  131. package/dist/context/react/legacy/ThreadContext.js.map +1 -0
  132. package/dist/context/react/legacy/ThreadListItemContext.d.ts +35 -0
  133. package/dist/context/react/legacy/ThreadListItemContext.d.ts.map +1 -0
  134. package/dist/context/react/legacy/ThreadListItemContext.js +21 -0
  135. package/dist/context/react/legacy/ThreadListItemContext.js.map +1 -0
  136. package/dist/context/stores/index.d.ts +0 -2
  137. package/dist/context/stores/index.d.ts.map +1 -1
  138. package/dist/hooks/useAssistantEvent.d.ts +3 -0
  139. package/dist/hooks/useAssistantEvent.d.ts.map +1 -0
  140. package/dist/hooks/useAssistantEvent.js +22 -0
  141. package/dist/hooks/useAssistantEvent.js.map +1 -0
  142. package/dist/model-context/makeAssistantVisible.js +4 -4
  143. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  144. package/dist/model-context/useAssistantInstructions.js +4 -4
  145. package/dist/model-context/useAssistantInstructions.js.map +1 -1
  146. package/dist/model-context/useAssistantTool.d.ts.map +1 -1
  147. package/dist/model-context/useAssistantTool.js +7 -10
  148. package/dist/model-context/useAssistantTool.js.map +1 -1
  149. package/dist/model-context/useAssistantToolUI.js +5 -5
  150. package/dist/model-context/useAssistantToolUI.js.map +1 -1
  151. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
  152. package/dist/primitives/actionBar/ActionBarCopy.js +12 -17
  153. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  154. package/dist/primitives/actionBar/ActionBarEdit.js +5 -5
  155. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  156. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -1
  157. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +6 -7
  158. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
  159. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +6 -6
  160. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
  161. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  162. package/dist/primitives/actionBar/ActionBarReload.js +6 -10
  163. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  164. package/dist/primitives/actionBar/ActionBarSpeak.js +6 -6
  165. package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
  166. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -1
  167. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +5 -8
  168. package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
  169. package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts.map +1 -1
  170. package/dist/primitives/actionBar/useActionBarFloatStatus.js +10 -21
  171. package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
  172. package/dist/primitives/assistantModal/AssistantModalRoot.js +4 -4
  173. package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
  174. package/dist/primitives/attachment/AttachmentName.js +2 -2
  175. package/dist/primitives/attachment/AttachmentName.js.map +1 -1
  176. package/dist/primitives/attachment/AttachmentRemove.js +4 -4
  177. package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
  178. package/dist/primitives/attachment/AttachmentThumb.d.ts.map +1 -1
  179. package/dist/primitives/attachment/AttachmentThumb.js +5 -2
  180. package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
  181. package/dist/primitives/branchPicker/BranchPickerCount.js +2 -2
  182. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
  183. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  184. package/dist/primitives/branchPicker/BranchPickerNext.js +7 -8
  185. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  186. package/dist/primitives/branchPicker/BranchPickerNumber.js +2 -2
  187. package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
  188. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  189. package/dist/primitives/branchPicker/BranchPickerPrevious.js +7 -8
  190. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  191. package/dist/primitives/composer/ComposerAddAttachment.js +6 -6
  192. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  193. package/dist/primitives/composer/ComposerAttachmentDropzone.js +4 -4
  194. package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
  195. package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  196. package/dist/primitives/composer/ComposerAttachments.js +11 -13
  197. package/dist/primitives/composer/ComposerAttachments.js.map +1 -1
  198. package/dist/primitives/composer/ComposerCancel.js +5 -5
  199. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  200. package/dist/primitives/composer/ComposerIf.js +2 -2
  201. package/dist/primitives/composer/ComposerIf.js.map +1 -1
  202. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  203. package/dist/primitives/composer/ComposerInput.js +22 -32
  204. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  205. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  206. package/dist/primitives/composer/ComposerSend.js +6 -10
  207. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  208. package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
  209. package/dist/primitives/error/ErrorMessage.js +3 -3
  210. package/dist/primitives/error/ErrorMessage.js.map +1 -1
  211. package/dist/primitives/message/MessageAttachments.d.ts.map +1 -1
  212. package/dist/primitives/message/MessageAttachments.js +9 -11
  213. package/dist/primitives/message/MessageAttachments.js.map +1 -1
  214. package/dist/primitives/message/MessageError.d.ts.map +1 -1
  215. package/dist/primitives/message/MessageError.js +3 -3
  216. package/dist/primitives/message/MessageError.js.map +1 -1
  217. package/dist/primitives/message/MessageIf.d.ts.map +1 -1
  218. package/dist/primitives/message/MessageIf.js +28 -34
  219. package/dist/primitives/message/MessageIf.js.map +1 -1
  220. package/dist/primitives/message/MessageParts.d.ts.map +1 -1
  221. package/dist/primitives/message/MessageParts.js +25 -27
  222. package/dist/primitives/message/MessageParts.js.map +1 -1
  223. package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
  224. package/dist/primitives/message/MessagePartsGrouped.js +24 -26
  225. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  226. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  227. package/dist/primitives/message/MessageRoot.js +8 -7
  228. package/dist/primitives/message/MessageRoot.js.map +1 -1
  229. package/dist/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
  230. package/dist/primitives/messagePart/MessagePartInProgress.js +4 -2
  231. package/dist/primitives/messagePart/MessagePartInProgress.js.map +1 -1
  232. package/dist/primitives/messagePart/useMessagePartFile.js +4 -4
  233. package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
  234. package/dist/primitives/messagePart/useMessagePartImage.js +4 -4
  235. package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
  236. package/dist/primitives/messagePart/useMessagePartReasoning.js +4 -4
  237. package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
  238. package/dist/primitives/messagePart/useMessagePartSource.js +4 -4
  239. package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
  240. package/dist/primitives/messagePart/useMessagePartText.js +4 -4
  241. package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
  242. package/dist/primitives/thread/ThreadEmpty.js +2 -2
  243. package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
  244. package/dist/primitives/thread/ThreadIf.js +2 -2
  245. package/dist/primitives/thread/ThreadIf.js.map +1 -1
  246. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  247. package/dist/primitives/thread/ThreadMessages.js +9 -12
  248. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  249. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  250. package/dist/primitives/thread/ThreadSuggestion.js +8 -8
  251. package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
  252. package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
  253. package/dist/primitives/thread/useThreadViewportAutoScroll.js +3 -6
  254. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  255. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  256. package/dist/primitives/threadList/ThreadListItems.js +7 -10
  257. package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
  258. package/dist/primitives/threadList/ThreadListNew.d.ts +1 -3
  259. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
  260. package/dist/primitives/threadList/ThreadListNew.js +7 -11
  261. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  262. package/dist/primitives/threadListItem/ThreadListItemArchive.js +4 -4
  263. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
  264. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
  265. package/dist/primitives/threadListItem/ThreadListItemDelete.js +6 -5
  266. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
  267. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
  268. package/dist/primitives/threadListItem/ThreadListItemRoot.js +4 -2
  269. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  270. package/dist/primitives/threadListItem/ThreadListItemTitle.js +2 -2
  271. package/dist/primitives/threadListItem/ThreadListItemTitle.js.map +1 -1
  272. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
  273. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +6 -5
  274. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  275. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
  276. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +6 -5
  277. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
  278. package/dist/runtimes/adapters/attachment/index.js.map +1 -1
  279. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts +1 -1
  280. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
  281. package/dist/runtimes/composer/BaseComposerRuntimeCore.js +3 -3
  282. package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
  283. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +1 -1
  284. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
  285. package/dist/runtimes/core/BaseThreadRuntimeCore.js +5 -1
  286. package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
  287. package/dist/runtimes/core/ComposerRuntimeCore.d.ts +2 -2
  288. package/dist/runtimes/core/ComposerRuntimeCore.d.ts.map +1 -1
  289. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +5 -5
  290. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
  291. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +5 -2
  292. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
  293. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +6 -4
  294. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
  295. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +42 -7
  296. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
  297. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
  298. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +3 -0
  299. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
  300. package/dist/runtimes/external-store/createMessageConverter.d.ts +2 -2
  301. package/dist/runtimes/external-store/createMessageConverter.d.ts.map +1 -1
  302. package/dist/runtimes/external-store/createMessageConverter.js +9 -6
  303. package/dist/runtimes/external-store/createMessageConverter.js.map +1 -1
  304. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +10 -1
  305. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
  306. package/dist/runtimes/local/LocalThreadListRuntimeCore.js +15 -2
  307. package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
  308. package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.d.ts.map +1 -1
  309. package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js +3 -5
  310. package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js.map +1 -1
  311. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  312. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js +13 -19
  313. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -1
  314. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +11 -7
  315. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  316. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +41 -35
  317. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  318. package/dist/tests/setup.js +8 -8
  319. package/dist/tests/setup.js.map +1 -1
  320. package/dist/types/EventTypes.d.ts +49 -0
  321. package/dist/types/EventTypes.d.ts.map +1 -0
  322. package/dist/types/EventTypes.js +22 -0
  323. package/dist/types/EventTypes.js.map +1 -0
  324. package/dist/types/index.d.ts +1 -0
  325. package/dist/types/index.d.ts.map +1 -1
  326. package/dist/utils/smooth/SmoothContext.js +3 -3
  327. package/dist/utils/smooth/SmoothContext.js.map +1 -1
  328. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  329. package/dist/utils/smooth/useSmooth.js +2 -5
  330. package/dist/utils/smooth/useSmooth.js.map +1 -1
  331. package/dist/utils/tap-store/index.d.ts +3 -0
  332. package/dist/utils/tap-store/index.d.ts.map +1 -0
  333. package/dist/utils/tap-store/index.js +8 -0
  334. package/dist/utils/tap-store/index.js.map +1 -0
  335. package/dist/utils/tap-store/store.d.ts +21 -0
  336. package/dist/utils/tap-store/store.d.ts.map +1 -0
  337. package/dist/utils/tap-store/store.js +29 -0
  338. package/dist/utils/tap-store/store.js.map +1 -0
  339. package/dist/utils/tap-store/tap-store-api.d.ts +8 -0
  340. package/dist/utils/tap-store/tap-store-api.d.ts.map +1 -0
  341. package/dist/utils/tap-store/tap-store-api.js +57 -0
  342. package/dist/utils/tap-store/tap-store-api.js.map +1 -0
  343. package/dist/utils/useToolArgsFieldStatus.js +6 -6
  344. package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
  345. package/package.json +2 -1
  346. package/src/api/AttachmentRuntime.ts +3 -1
  347. package/src/api/ComposerRuntime.ts +16 -9
  348. package/src/api/MessagePartRuntime.ts +3 -1
  349. package/src/api/MessageRuntime.ts +2 -0
  350. package/src/api/ThreadListItemRuntime.ts +11 -1
  351. package/src/api/ThreadListRuntime.ts +9 -9
  352. package/src/api/ThreadRuntime.ts +9 -7
  353. package/src/client/AssistantRuntimeClient.ts +197 -0
  354. package/src/client/AttachmentClient.ts +11 -0
  355. package/src/client/ComposerClient.ts +133 -0
  356. package/src/client/EventManagerClient.ts +63 -0
  357. package/src/client/MessageClient.ts +196 -0
  358. package/src/client/MessagePartClient.ts +53 -0
  359. package/src/client/ThreadClient.ts +280 -0
  360. package/src/client/ThreadListClient.ts +135 -0
  361. package/src/client/ThreadListItemClient.ts +88 -0
  362. package/src/client/util-hooks/tapLookupResources.ts +31 -0
  363. package/src/client/util-hooks/tapSubscribable.ts +16 -0
  364. package/src/cloud/AssistantCloudThreadHistoryAdapter.tsx +24 -13
  365. package/src/context/providers/AssistantRuntimeProvider.tsx +27 -51
  366. package/src/context/providers/AttachmentProvider.tsx +48 -0
  367. package/src/context/providers/MessageProvider.tsx +57 -0
  368. package/src/context/providers/PartProvider.tsx +28 -0
  369. package/src/context/providers/TextMessagePartProvider.tsx +53 -78
  370. package/src/context/providers/ThreadListItemProvider.tsx +84 -0
  371. package/src/context/providers/index.ts +10 -3
  372. package/src/context/react/AssistantApiContext.tsx +392 -0
  373. package/src/context/react/index.ts +30 -37
  374. package/src/context/react/{AssistantContext.ts → legacy/AssistantContext.ts} +12 -31
  375. package/src/context/react/{AttachmentContext.ts → legacy/AttachmentContext.ts} +11 -22
  376. package/src/context/react/{ComposerContext.ts → legacy/ComposerContext.ts} +11 -9
  377. package/src/context/react/{MessageContext.ts → legacy/MessageContext.ts} +12 -29
  378. package/src/context/react/legacy/MessagePartContext.ts +24 -0
  379. package/src/context/react/{ThreadContext.ts → legacy/ThreadContext.ts} +15 -25
  380. package/src/context/react/legacy/ThreadListItemContext.ts +28 -0
  381. package/src/context/stores/index.ts +0 -2
  382. package/src/hooks/useAssistantEvent.ts +24 -0
  383. package/src/model-context/makeAssistantVisible.tsx +4 -4
  384. package/src/model-context/useAssistantInstructions.tsx +4 -4
  385. package/src/model-context/useAssistantTool.tsx +7 -12
  386. package/src/model-context/useAssistantToolUI.tsx +5 -5
  387. package/src/primitives/actionBar/ActionBarCopy.tsx +14 -20
  388. package/src/primitives/actionBar/ActionBarEdit.tsx +5 -5
  389. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +6 -7
  390. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +6 -6
  391. package/src/primitives/actionBar/ActionBarReload.tsx +9 -10
  392. package/src/primitives/actionBar/ActionBarSpeak.tsx +7 -7
  393. package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +5 -8
  394. package/src/primitives/actionBar/useActionBarFloatStatus.tsx +22 -34
  395. package/src/primitives/assistantModal/AssistantModalRoot.tsx +4 -4
  396. package/src/primitives/attachment/AttachmentName.tsx +2 -2
  397. package/src/primitives/attachment/AttachmentRemove.tsx +4 -4
  398. package/src/primitives/attachment/AttachmentThumb.tsx +5 -2
  399. package/src/primitives/branchPicker/BranchPickerCount.tsx +2 -2
  400. package/src/primitives/branchPicker/BranchPickerNext.tsx +7 -8
  401. package/src/primitives/branchPicker/BranchPickerNumber.tsx +2 -2
  402. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +7 -8
  403. package/src/primitives/composer/ComposerAddAttachment.tsx +6 -6
  404. package/src/primitives/composer/ComposerAttachmentDropzone.tsx +4 -4
  405. package/src/primitives/composer/ComposerAttachments.tsx +12 -15
  406. package/src/primitives/composer/ComposerCancel.tsx +5 -5
  407. package/src/primitives/composer/ComposerIf.tsx +2 -2
  408. package/src/primitives/composer/ComposerInput.tsx +32 -32
  409. package/src/primitives/composer/ComposerSend.tsx +6 -10
  410. package/src/primitives/error/ErrorMessage.tsx +5 -4
  411. package/src/primitives/message/MessageAttachments.tsx +10 -13
  412. package/src/primitives/message/MessageError.tsx +5 -3
  413. package/src/primitives/message/MessageIf.tsx +43 -52
  414. package/src/primitives/message/MessageParts.tsx +26 -31
  415. package/src/primitives/message/MessagePartsGrouped.tsx +25 -30
  416. package/src/primitives/message/MessageRoot.tsx +10 -8
  417. package/src/primitives/messagePart/MessagePartInProgress.tsx +4 -2
  418. package/src/primitives/messagePart/useMessagePartFile.tsx +4 -4
  419. package/src/primitives/messagePart/useMessagePartImage.tsx +4 -4
  420. package/src/primitives/messagePart/useMessagePartReasoning.tsx +4 -4
  421. package/src/primitives/messagePart/useMessagePartSource.tsx +4 -4
  422. package/src/primitives/messagePart/useMessagePartText.tsx +4 -4
  423. package/src/primitives/thread/ThreadEmpty.tsx +2 -2
  424. package/src/primitives/thread/ThreadIf.tsx +2 -2
  425. package/src/primitives/thread/ThreadMessages.tsx +10 -14
  426. package/src/primitives/thread/ThreadSuggestion.tsx +8 -8
  427. package/src/primitives/thread/useThreadViewportAutoScroll.tsx +3 -6
  428. package/src/primitives/threadList/ThreadListItems.tsx +8 -15
  429. package/src/primitives/threadList/ThreadListNew.tsx +9 -13
  430. package/src/primitives/threadListItem/ThreadListItemArchive.ts +4 -4
  431. package/src/primitives/threadListItem/ThreadListItemDelete.ts +6 -5
  432. package/src/primitives/threadListItem/ThreadListItemRoot.tsx +4 -2
  433. package/src/primitives/threadListItem/ThreadListItemTitle.tsx +2 -2
  434. package/src/primitives/threadListItem/ThreadListItemTrigger.ts +6 -5
  435. package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +6 -5
  436. package/src/runtimes/adapters/attachment/index.ts +1 -1
  437. package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +3 -3
  438. package/src/runtimes/core/BaseThreadRuntimeCore.tsx +5 -1
  439. package/src/runtimes/core/ComposerRuntimeCore.tsx +2 -2
  440. package/src/runtimes/core/ThreadListRuntimeCore.tsx +6 -4
  441. package/src/runtimes/external-store/ExternalStoreAdapter.tsx +5 -2
  442. package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +53 -12
  443. package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +4 -0
  444. package/src/runtimes/external-store/createMessageConverter.tsx +10 -6
  445. package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +16 -2
  446. package/src/runtimes/remote-thread-list/EMPTY_THREAD_CORE.tsx +3 -6
  447. package/src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +14 -19
  448. package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +50 -43
  449. package/src/types/EventTypes.ts +92 -0
  450. package/src/types/index.ts +6 -0
  451. package/src/utils/smooth/SmoothContext.tsx +3 -3
  452. package/src/utils/smooth/useSmooth.tsx +2 -5
  453. package/src/utils/tap-store/index.ts +2 -0
  454. package/src/utils/tap-store/store.ts +51 -0
  455. package/src/utils/tap-store/tap-store-api.ts +75 -0
  456. package/src/utils/useToolArgsFieldStatus.tsx +6 -6
  457. package/dist/context/providers/AttachmentRuntimeProvider.d.ts +0 -9
  458. package/dist/context/providers/AttachmentRuntimeProvider.d.ts.map +0 -1
  459. package/dist/context/providers/AttachmentRuntimeProvider.js +0 -33
  460. package/dist/context/providers/AttachmentRuntimeProvider.js.map +0 -1
  461. package/dist/context/providers/MessagePartRuntimeProvider.d.ts +0 -9
  462. package/dist/context/providers/MessagePartRuntimeProvider.d.ts.map +0 -1
  463. package/dist/context/providers/MessagePartRuntimeProvider.js +0 -28
  464. package/dist/context/providers/MessagePartRuntimeProvider.js.map +0 -1
  465. package/dist/context/providers/MessageRuntimeProvider.d.ts +0 -9
  466. package/dist/context/providers/MessageRuntimeProvider.d.ts.map +0 -1
  467. package/dist/context/providers/MessageRuntimeProvider.js +0 -37
  468. package/dist/context/providers/MessageRuntimeProvider.js.map +0 -1
  469. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts +0 -9
  470. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts.map +0 -1
  471. package/dist/context/providers/ThreadListItemRuntimeProvider.js +0 -30
  472. package/dist/context/providers/ThreadListItemRuntimeProvider.js.map +0 -1
  473. package/dist/context/providers/ThreadRuntimeProvider.d.ts +0 -10
  474. package/dist/context/providers/ThreadRuntimeProvider.d.ts.map +0 -1
  475. package/dist/context/providers/ThreadRuntimeProvider.js +0 -33
  476. package/dist/context/providers/ThreadRuntimeProvider.js.map +0 -1
  477. package/dist/context/react/AssistantContext.d.ts +0 -85
  478. package/dist/context/react/AssistantContext.d.ts.map +0 -1
  479. package/dist/context/react/AssistantContext.js +0 -34
  480. package/dist/context/react/AssistantContext.js.map +0 -1
  481. package/dist/context/react/AttachmentContext.d.ts.map +0 -1
  482. package/dist/context/react/AttachmentContext.js.map +0 -1
  483. package/dist/context/react/ComposerContext.d.ts.map +0 -1
  484. package/dist/context/react/ComposerContext.js +0 -17
  485. package/dist/context/react/ComposerContext.js.map +0 -1
  486. package/dist/context/react/MessageContext.d.ts.map +0 -1
  487. package/dist/context/react/MessageContext.js +0 -35
  488. package/dist/context/react/MessageContext.js.map +0 -1
  489. package/dist/context/react/MessagePartContext.d.ts +0 -41
  490. package/dist/context/react/MessagePartContext.d.ts.map +0 -1
  491. package/dist/context/react/MessagePartContext.js +0 -25
  492. package/dist/context/react/MessagePartContext.js.map +0 -1
  493. package/dist/context/react/ThreadContext.d.ts.map +0 -1
  494. package/dist/context/react/ThreadContext.js +0 -38
  495. package/dist/context/react/ThreadContext.js.map +0 -1
  496. package/dist/context/react/ThreadListItemContext.d.ts +0 -41
  497. package/dist/context/react/ThreadListItemContext.d.ts.map +0 -1
  498. package/dist/context/react/ThreadListItemContext.js +0 -25
  499. package/dist/context/react/ThreadListItemContext.js.map +0 -1
  500. package/dist/context/stores/AssistantToolUIs.d.ts +0 -14
  501. package/dist/context/stores/AssistantToolUIs.d.ts.map +0 -1
  502. package/dist/context/stores/AssistantToolUIs.js +0 -35
  503. package/dist/context/stores/AssistantToolUIs.js.map +0 -1
  504. package/dist/context/stores/MessageUtils.d.ts +0 -8
  505. package/dist/context/stores/MessageUtils.d.ts.map +0 -1
  506. package/dist/context/stores/MessageUtils.js +0 -18
  507. package/dist/context/stores/MessageUtils.js.map +0 -1
  508. package/dist/utils/combined/createCombinedStore.d.ts +0 -8
  509. package/dist/utils/combined/createCombinedStore.d.ts.map +0 -1
  510. package/dist/utils/combined/createCombinedStore.js +0 -22
  511. package/dist/utils/combined/createCombinedStore.js.map +0 -1
  512. package/dist/utils/combined/useCombinedStore.d.ts +0 -3
  513. package/dist/utils/combined/useCombinedStore.d.ts.map +0 -1
  514. package/dist/utils/combined/useCombinedStore.js +0 -15
  515. package/dist/utils/combined/useCombinedStore.js.map +0 -1
  516. package/src/context/providers/AttachmentRuntimeProvider.tsx +0 -44
  517. package/src/context/providers/MessagePartRuntimeProvider.tsx +0 -42
  518. package/src/context/providers/MessageRuntimeProvider.tsx +0 -50
  519. package/src/context/providers/ThreadListItemRuntimeProvider.tsx +0 -43
  520. package/src/context/providers/ThreadRuntimeProvider.tsx +0 -53
  521. package/src/context/react/MessagePartContext.ts +0 -37
  522. package/src/context/react/ThreadListItemContext.ts +0 -38
  523. package/src/context/stores/AssistantToolUIs.ts +0 -51
  524. package/src/context/stores/MessageUtils.ts +0 -23
  525. package/src/utils/combined/createCombinedStore.ts +0 -31
  526. package/src/utils/combined/useCombinedStore.ts +0 -17
@@ -1,11 +1,13 @@
1
1
  "use client";
2
2
 
3
3
  import { FC, PropsWithChildren } from "react";
4
- import { useMessage } from "../../context/react/MessageContext";
4
+ import { useAssistantState } from "../../context";
5
5
 
6
6
  export const MessagePrimitiveError: FC<PropsWithChildren> = ({ children }) => {
7
- const hasError = useMessage(
8
- (m) => m.status?.type === "incomplete" && m.status.reason === "error",
7
+ const hasError = useAssistantState(
8
+ ({ message }) =>
9
+ message.status?.type === "incomplete" &&
10
+ message.status.reason === "error",
9
11
  );
10
12
  return hasError ? <>{children}</> : null;
11
13
  };
@@ -1,12 +1,8 @@
1
1
  "use client";
2
2
 
3
3
  import type { FC, PropsWithChildren } from "react";
4
- import {
5
- useMessageRuntime,
6
- useMessageUtilsStore,
7
- } from "../../context/react/MessageContext";
4
+ import { useAssistantState } from "../../context";
8
5
  import type { RequireAtLeastOne } from "../../utils/RequireAtLeastOne";
9
- import { useCombinedStore } from "../../utils/combined/useCombinedStore";
10
6
 
11
7
  type MessageIfFilters = {
12
8
  user: boolean | undefined;
@@ -24,62 +20,57 @@ type MessageIfFilters = {
24
20
  type UseMessageIfProps = RequireAtLeastOne<MessageIfFilters>;
25
21
 
26
22
  const useMessageIf = (props: UseMessageIfProps) => {
27
- const messageRuntime = useMessageRuntime();
28
- const messageUtilsStore = useMessageUtilsStore();
23
+ return useAssistantState(({ message }) => {
24
+ const {
25
+ role,
26
+ attachments,
27
+ parts,
28
+ branchCount,
29
+ isLast,
30
+ speech,
31
+ submittedFeedback,
32
+ isCopied,
33
+ isHovering,
34
+ } = message;
29
35
 
30
- return useCombinedStore(
31
- [messageRuntime, messageUtilsStore],
32
- (
33
- {
34
- role,
35
- attachments,
36
- content,
37
- branchCount,
38
- isLast,
39
- speech,
40
- submittedFeedback,
41
- },
42
- { isCopied, isHovering },
43
- ) => {
44
- if (props.hasBranches === true && branchCount < 2) return false;
36
+ if (props.hasBranches === true && branchCount < 2) return false;
45
37
 
46
- if (props.user && role !== "user") return false;
47
- if (props.assistant && role !== "assistant") return false;
48
- if (props.system && role !== "system") return false;
38
+ if (props.user && role !== "user") return false;
39
+ if (props.assistant && role !== "assistant") return false;
40
+ if (props.system && role !== "system") return false;
49
41
 
50
- if (props.lastOrHover === true && !isHovering && !isLast) return false;
51
- if (props.last !== undefined && props.last !== isLast) return false;
42
+ if (props.lastOrHover === true && !isHovering && !isLast) return false;
43
+ if (props.last !== undefined && props.last !== isLast) return false;
52
44
 
53
- if (props.copied === true && !isCopied) return false;
54
- if (props.copied === false && isCopied) return false;
45
+ if (props.copied === true && !isCopied) return false;
46
+ if (props.copied === false && isCopied) return false;
55
47
 
56
- if (props.speaking === true && speech == null) return false;
57
- if (props.speaking === false && speech != null) return false;
48
+ if (props.speaking === true && speech == null) return false;
49
+ if (props.speaking === false && speech != null) return false;
58
50
 
59
- if (
60
- props.hasAttachments === true &&
61
- (role !== "user" || !attachments.length)
62
- )
63
- return false;
64
- if (
65
- props.hasAttachments === false &&
66
- role === "user" &&
67
- !!attachments.length
68
- )
69
- return false;
51
+ if (
52
+ props.hasAttachments === true &&
53
+ (role !== "user" || !attachments?.length)
54
+ )
55
+ return false;
56
+ if (
57
+ props.hasAttachments === false &&
58
+ role === "user" &&
59
+ !!attachments?.length
60
+ )
61
+ return false;
70
62
 
71
- if (props.hasContent === true && content.length === 0) return false;
72
- if (props.hasContent === false && content.length > 0) return false;
63
+ if (props.hasContent === true && parts.length === 0) return false;
64
+ if (props.hasContent === false && parts.length > 0) return false;
73
65
 
74
- if (
75
- props.submittedFeedback !== undefined &&
76
- (submittedFeedback?.type ?? null) !== props.submittedFeedback
77
- )
78
- return false;
66
+ if (
67
+ props.submittedFeedback !== undefined &&
68
+ (submittedFeedback?.type ?? null) !== props.submittedFeedback
69
+ )
70
+ return false;
79
71
 
80
- return true;
81
- },
82
- );
72
+ return true;
73
+ });
83
74
  };
84
75
 
85
76
  export namespace MessagePrimitiveIf {
@@ -8,16 +8,11 @@ import {
8
8
  useMemo,
9
9
  } from "react";
10
10
  import {
11
+ useAssistantState,
12
+ useAssistantApi,
13
+ PartByIndexProvider,
11
14
  TextMessagePartProvider,
12
- useMessagePart,
13
- useMessagePartRuntime,
14
- useToolUIs,
15
15
  } from "../../context";
16
- import {
17
- useMessage,
18
- useMessageRuntime,
19
- } from "../../context/react/MessageContext";
20
- import { MessagePartRuntimeProvider } from "../../context/providers/MessagePartRuntimeProvider";
21
16
  import { MessagePartPrimitiveText } from "../messagePart/MessagePartText";
22
17
  import { MessagePartPrimitiveImage } from "../messagePart/MessagePartImage";
23
18
  import type {
@@ -86,8 +81,8 @@ const groupMessageParts = (
86
81
  };
87
82
 
88
83
  const useMessagePartsGroups = (): MessagePartRange[] => {
89
- const messageTypes = useMessage(
90
- useShallow((m) => m.content.map((c) => c.type)),
84
+ const messageTypes = useAssistantState(
85
+ useShallow((s) => s.message.parts.map((c: any) => c.type)),
91
86
  );
92
87
 
93
88
  return useMemo(() => {
@@ -200,7 +195,11 @@ const ToolUIDisplay = ({
200
195
  }: {
201
196
  Fallback: ToolCallMessagePartComponent | undefined;
202
197
  } & ToolCallMessagePartProps) => {
203
- const Render = useToolUIs((s) => s.getToolUI(props.toolName)) ?? Fallback;
198
+ const Render = useAssistantState(({ toolUIs }) => {
199
+ const Render = toolUIs[props.toolName] ?? Fallback;
200
+ if (Array.isArray(Render)) return Render[0];
201
+ return Render;
202
+ });
204
203
  if (!Render) return null;
205
204
  return <Render {...props} />;
206
205
  };
@@ -237,20 +236,19 @@ const MessagePartComponent: FC<MessagePartComponentProps> = ({
237
236
  tools = {},
238
237
  } = {},
239
238
  }) => {
240
- const MessagePartRuntime = useMessagePartRuntime();
241
-
242
- const part = useMessagePart();
239
+ const api = useAssistantApi();
240
+ const part = useAssistantState(({ part }) => part);
243
241
 
244
242
  const type = part.type;
245
243
  if (type === "tool-call") {
246
- const addResult = (result: any) => MessagePartRuntime.addToolResult(result);
244
+ const addResult = (result: any) => api.part().addToolResult(result);
247
245
  if ("Override" in tools)
248
246
  return <tools.Override {...part} addResult={addResult} />;
249
247
  const Tool = tools.by_name?.[part.toolName] ?? tools.Fallback;
250
248
  return <ToolUIDisplay {...part} Fallback={Tool} addResult={addResult} />;
251
249
  }
252
250
 
253
- if (part.status.type === "requires-action")
251
+ if (part.status?.type === "requires-action")
254
252
  throw new Error("Encountered unexpected requires-action status");
255
253
 
256
254
  switch (type) {
@@ -306,16 +304,10 @@ export namespace MessagePrimitivePartByIndex {
306
304
  export const MessagePrimitivePartByIndex: FC<MessagePrimitivePartByIndex.Props> =
307
305
  memo(
308
306
  ({ index, components }) => {
309
- const messageRuntime = useMessageRuntime();
310
- const runtime = useMemo(
311
- () => messageRuntime.getMessagePartByIndex(index),
312
- [messageRuntime, index],
313
- );
314
-
315
307
  return (
316
- <MessagePartRuntimeProvider runtime={runtime}>
308
+ <PartByIndexProvider index={index}>
317
309
  <MessagePartComponent components={components} />
318
- </MessagePartRuntimeProvider>
310
+ </PartByIndexProvider>
319
311
  );
320
312
  },
321
313
  (prev, next) =>
@@ -332,10 +324,6 @@ export const MessagePrimitivePartByIndex: FC<MessagePrimitivePartByIndex.Props>
332
324
 
333
325
  MessagePrimitivePartByIndex.displayName = "MessagePrimitive.PartByIndex";
334
326
 
335
- const COMPLETE_STATUS: MessagePartStatus = Object.freeze({
336
- type: "complete",
337
- });
338
-
339
327
  const EmptyPartFallback: FC<{
340
328
  status: MessagePartStatus;
341
329
  component: TextMessagePartComponent;
@@ -347,9 +335,14 @@ const EmptyPartFallback: FC<{
347
335
  );
348
336
  };
349
337
 
338
+ const COMPLETE_STATUS: MessagePartStatus = Object.freeze({
339
+ type: "complete",
340
+ });
341
+
350
342
  const EmptyPartsImpl: FC<MessagePartComponentProps> = ({ components }) => {
351
- const status =
352
- useMessage((s) => s.status as MessagePartStatus) ?? COMPLETE_STATUS;
343
+ const status = useAssistantState(
344
+ (s) => (s.message.status ?? COMPLETE_STATUS) as MessagePartStatus,
345
+ );
353
346
 
354
347
  if (components?.Empty) return <components.Empty status={status} />;
355
348
 
@@ -395,7 +388,9 @@ const EmptyParts = memo(
395
388
  export const MessagePrimitiveParts: FC<MessagePrimitiveParts.Props> = ({
396
389
  components,
397
390
  }) => {
398
- const contentLength = useMessage((s) => s.content.length);
391
+ const contentLength = useAssistantState(
392
+ ({ message }) => message.parts.length,
393
+ );
399
394
  const messageRanges = useMessagePartsGroups();
400
395
 
401
396
  const partsElements = useMemo(() => {
@@ -8,16 +8,11 @@ import {
8
8
  useMemo,
9
9
  } from "react";
10
10
  import {
11
+ useAssistantState,
12
+ PartByIndexProvider,
13
+ useAssistantApi,
11
14
  TextMessagePartProvider,
12
- useMessagePart,
13
- useMessagePartRuntime,
14
- useToolUIs,
15
15
  } from "../../context";
16
- import {
17
- useMessage,
18
- useMessageRuntime,
19
- } from "../../context/react/MessageContext";
20
- import { MessagePartRuntimeProvider } from "../../context/providers/MessagePartRuntimeProvider";
21
16
  import { MessagePartPrimitiveText } from "../messagePart/MessagePartText";
22
17
  import { MessagePartPrimitiveImage } from "../messagePart/MessagePartImage";
23
18
  import type {
@@ -80,7 +75,7 @@ const groupMessagePartsByParentId: GroupingFunction = (
80
75
  const useMessagePartsGrouped = (
81
76
  groupingFunction: GroupingFunction,
82
77
  ): MessagePartGroup[] => {
83
- const parts = useMessage((m) => m.content);
78
+ const parts = useAssistantState(({ message }) => message.parts);
84
79
 
85
80
  return useMemo(() => {
86
81
  if (parts.length === 0) {
@@ -225,7 +220,11 @@ const ToolUIDisplay = ({
225
220
  }: {
226
221
  Fallback: ToolCallMessagePartComponent | undefined;
227
222
  } & ToolCallMessagePartProps) => {
228
- const Render = useToolUIs((s) => s.getToolUI(props.toolName)) ?? Fallback;
223
+ const Render = useAssistantState(({ toolUIs }) => {
224
+ const Render = toolUIs[props.toolName] ?? Fallback;
225
+ if (Array.isArray(Render)) return Render[0];
226
+ return Render;
227
+ });
229
228
  if (!Render) return null;
230
229
  return <Render {...props} />;
231
230
  };
@@ -262,20 +261,19 @@ const MessagePartComponent: FC<MessagePartComponentProps> = ({
262
261
  tools = {},
263
262
  } = {},
264
263
  }) => {
265
- const MessagePartRuntime = useMessagePartRuntime();
266
-
267
- const part = useMessagePart();
264
+ const api = useAssistantApi();
265
+ const part = useAssistantState(({ part }) => part);
268
266
 
269
267
  const type = part.type;
270
268
  if (type === "tool-call") {
271
- const addResult = (result: any) => MessagePartRuntime.addToolResult(result);
269
+ const addResult = (result: any) => api.part().addToolResult(result);
272
270
  if ("Override" in tools)
273
271
  return <tools.Override {...part} addResult={addResult} />;
274
272
  const Tool = tools.by_name?.[part.toolName] ?? tools.Fallback;
275
273
  return <ToolUIDisplay {...part} Fallback={Tool} addResult={addResult} />;
276
274
  }
277
275
 
278
- if (part.status.type === "requires-action")
276
+ if (part.status?.type === "requires-action")
279
277
  throw new Error("Encountered unexpected requires-action status");
280
278
 
281
279
  switch (type) {
@@ -310,16 +308,10 @@ type MessagePartProps = {
310
308
  };
311
309
 
312
310
  const MessagePartImpl: FC<MessagePartProps> = ({ partIndex, components }) => {
313
- const messageRuntime = useMessageRuntime();
314
- const runtime = useMemo(
315
- () => messageRuntime.getMessagePartByIndex(partIndex),
316
- [messageRuntime, partIndex],
317
- );
318
-
319
311
  return (
320
- <MessagePartRuntimeProvider runtime={runtime}>
312
+ <PartByIndexProvider index={partIndex}>
321
313
  <MessagePartComponent components={components} />
322
- </MessagePartRuntimeProvider>
314
+ </PartByIndexProvider>
323
315
  );
324
316
  };
325
317
 
@@ -337,10 +329,6 @@ const MessagePart = memo(
337
329
  prev.components?.Group === next.components?.Group,
338
330
  );
339
331
 
340
- const COMPLETE_STATUS: MessagePartStatus = Object.freeze({
341
- type: "complete",
342
- });
343
-
344
332
  const EmptyPartFallback: FC<{
345
333
  status: MessagePartStatus;
346
334
  component: TextMessagePartComponent;
@@ -352,9 +340,14 @@ const EmptyPartFallback: FC<{
352
340
  );
353
341
  };
354
342
 
343
+ const COMPLETE_STATUS: MessagePartStatus = Object.freeze({
344
+ type: "complete",
345
+ });
346
+
355
347
  const EmptyPartsImpl: FC<MessagePartComponentProps> = ({ components }) => {
356
- const status =
357
- useMessage((s) => s.status as MessagePartStatus) ?? COMPLETE_STATUS;
348
+ const status = useAssistantState(
349
+ (s) => (s.message.status ?? COMPLETE_STATUS) as MessagePartStatus,
350
+ );
358
351
 
359
352
  if (components?.Empty) return <components.Empty status={status} />;
360
353
 
@@ -424,7 +417,9 @@ const EmptyParts = memo(
424
417
  export const MessagePrimitiveUnstable_PartsGrouped: FC<
425
418
  MessagePrimitiveUnstable_PartsGrouped.Props
426
419
  > = ({ groupingFunction, components }) => {
427
- const contentLength = useMessage((s) => s.content.length);
420
+ const contentLength = useAssistantState(
421
+ ({ message }) => message.parts.length,
422
+ );
428
423
  const messageGroups = useMessagePartsGrouped(groupingFunction);
429
424
 
430
425
  const partsElements = useMemo(() => {
@@ -7,33 +7,35 @@ import {
7
7
  ComponentPropsWithoutRef,
8
8
  useCallback,
9
9
  } from "react";
10
- import { useMessageUtilsStore } from "../../context/react/MessageContext";
10
+ import { useAssistantApi, useAssistantState } from "../../context";
11
11
  import { useManagedRef } from "../../utils/hooks/useManagedRef";
12
12
  import { useComposedRefs } from "@radix-ui/react-compose-refs";
13
13
 
14
14
  const useIsHoveringRef = () => {
15
- const messageUtilsStore = useMessageUtilsStore();
15
+ const api = useAssistantApi();
16
+ const message = useAssistantState(() => api.message());
17
+
16
18
  const callbackRef = useCallback(
17
19
  (el: HTMLElement) => {
18
- const setIsHovering = messageUtilsStore.getState().setIsHovering;
19
-
20
20
  const handleMouseEnter = () => {
21
- setIsHovering(true);
21
+ message.setIsHovering(true);
22
22
  };
23
23
  const handleMouseLeave = () => {
24
- setIsHovering(false);
24
+ message.setIsHovering(false);
25
25
  };
26
26
 
27
27
  el.addEventListener("mouseenter", handleMouseEnter);
28
28
  el.addEventListener("mouseleave", handleMouseLeave);
29
29
 
30
+ if (el.matches(":hover")) message.setIsHovering(true);
31
+
30
32
  return () => {
31
33
  el.removeEventListener("mouseenter", handleMouseEnter);
32
34
  el.removeEventListener("mouseleave", handleMouseLeave);
33
- setIsHovering(false);
35
+ message.setIsHovering(false);
34
36
  };
35
37
  },
36
- [messageUtilsStore],
38
+ [message],
37
39
  );
38
40
 
39
41
  return useManagedRef(callbackRef);
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { FC, PropsWithChildren } from "react";
4
- import { useMessagePart } from "../../context";
4
+ import { useAssistantState } from "../../context";
5
5
 
6
6
  export namespace MessagePartPrimitiveInProgress {
7
7
  export type Props = PropsWithChildren;
@@ -11,7 +11,9 @@ export namespace MessagePartPrimitiveInProgress {
11
11
  export const MessagePartPrimitiveInProgress: FC<
12
12
  MessagePartPrimitiveInProgress.Props
13
13
  > = ({ children }) => {
14
- const isInProgress = useMessagePart((c) => c.status.type === "running");
14
+ const isInProgress = useAssistantState(
15
+ ({ part }) => part.status.type === "running",
16
+ );
15
17
 
16
18
  return isInProgress ? children : null;
17
19
  };
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
 
3
3
  import { MessagePartState } from "../../api/MessagePartRuntime";
4
- import { useMessagePart } from "../../context/react/MessagePartContext";
4
+ import { useAssistantState } from "../../context";
5
5
  import { FileMessagePart } from "../../types";
6
6
 
7
7
  export const useMessagePartFile = () => {
8
- const file = useMessagePart((c) => {
9
- if (c.type !== "file")
8
+ const file = useAssistantState(({ part }) => {
9
+ if (part.type !== "file")
10
10
  throw new Error(
11
11
  "MessagePartFile can only be used inside file message parts.",
12
12
  );
13
13
 
14
- return c as MessagePartState & FileMessagePart;
14
+ return part as MessagePartState & FileMessagePart;
15
15
  });
16
16
 
17
17
  return file;
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
 
3
3
  import { MessagePartState } from "../../api/MessagePartRuntime";
4
- import { useMessagePart } from "../../context/react/MessagePartContext";
4
+ import { useAssistantState } from "../../context";
5
5
  import { ImageMessagePart } from "../../types";
6
6
 
7
7
  export const useMessagePartImage = () => {
8
- const image = useMessagePart((c) => {
9
- if (c.type !== "image")
8
+ const image = useAssistantState(({ part }) => {
9
+ if (part.type !== "image")
10
10
  throw new Error(
11
11
  "MessagePartImage can only be used inside image message parts.",
12
12
  );
13
13
 
14
- return c as MessagePartState & ImageMessagePart;
14
+ return part as MessagePartState & ImageMessagePart;
15
15
  });
16
16
 
17
17
  return image;
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
 
3
3
  import { MessagePartState } from "../../api/MessagePartRuntime";
4
- import { useMessagePart } from "../../context/react/MessagePartContext";
4
+ import { useAssistantState } from "../../context";
5
5
  import { ReasoningMessagePart } from "../../types";
6
6
 
7
7
  export const useMessagePartReasoning = () => {
8
- const text = useMessagePart((c) => {
9
- if (c.type !== "reasoning")
8
+ const text = useAssistantState(({ part }) => {
9
+ if (part.type !== "reasoning")
10
10
  throw new Error(
11
11
  "MessagePartReasoning can only be used inside reasoning message parts.",
12
12
  );
13
13
 
14
- return c as MessagePartState & ReasoningMessagePart;
14
+ return part as MessagePartState & ReasoningMessagePart;
15
15
  });
16
16
 
17
17
  return text;
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
 
3
3
  import { MessagePartState } from "../../api/MessagePartRuntime";
4
- import { useMessagePart } from "../../context/react/MessagePartContext";
4
+ import { useAssistantState } from "../../context";
5
5
  import { SourceMessagePart } from "../../types";
6
6
 
7
7
  export const useMessagePartSource = () => {
8
- const source = useMessagePart((c) => {
9
- if (c.type !== "source")
8
+ const source = useAssistantState(({ part }) => {
9
+ if (part.type !== "source")
10
10
  throw new Error(
11
11
  "MessagePartSource can only be used inside source message parts.",
12
12
  );
13
13
 
14
- return c as MessagePartState & SourceMessagePart;
14
+ return part as MessagePartState & SourceMessagePart;
15
15
  });
16
16
 
17
17
  return source;
@@ -1,17 +1,17 @@
1
1
  "use client";
2
2
 
3
3
  import { MessagePartState } from "../../api/MessagePartRuntime";
4
- import { useMessagePart } from "../../context/react/MessagePartContext";
4
+ import { useAssistantState } from "../../context";
5
5
  import { TextMessagePart, ReasoningMessagePart } from "../../types";
6
6
 
7
7
  export const useMessagePartText = () => {
8
- const text = useMessagePart((c) => {
9
- if (c.type !== "text" && c.type !== "reasoning")
8
+ const text = useAssistantState(({ part }) => {
9
+ if (part.type !== "text" && part.type !== "reasoning")
10
10
  throw new Error(
11
11
  "MessagePartText can only be used inside text or reasoning message parts.",
12
12
  );
13
13
 
14
- return c as MessagePartState & (TextMessagePart | ReasoningMessagePart);
14
+ return part as MessagePartState & (TextMessagePart | ReasoningMessagePart);
15
15
  });
16
16
 
17
17
  return text;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import type { FC, PropsWithChildren } from "react";
4
- import { useThread } from "../../context";
4
+ import { useAssistantState } from "../../context";
5
5
 
6
6
  export namespace ThreadPrimitiveEmpty {
7
7
  export type Props = PropsWithChildren;
@@ -10,7 +10,7 @@ export namespace ThreadPrimitiveEmpty {
10
10
  export const ThreadPrimitiveEmpty: FC<ThreadPrimitiveEmpty.Props> = ({
11
11
  children,
12
12
  }) => {
13
- const empty = useThread((u) => u.messages.length === 0);
13
+ const empty = useAssistantState(({ thread }) => thread.messages.length === 0);
14
14
  return empty ? children : null;
15
15
  };
16
16
 
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import type { FC, PropsWithChildren } from "react";
4
- import { useThread } from "../../context";
4
+ import { useAssistantState } from "../../context";
5
5
  import type { RequireAtLeastOne } from "../../utils/RequireAtLeastOne";
6
6
 
7
7
  type ThreadIfFilters = {
@@ -13,7 +13,7 @@ type ThreadIfFilters = {
13
13
  type UseThreadIfProps = RequireAtLeastOne<ThreadIfFilters>;
14
14
 
15
15
  const useThreadIf = (props: UseThreadIfProps) => {
16
- return useThread((thread) => {
16
+ return useAssistantState(({ thread }) => {
17
17
  if (props.empty === true && thread.messages.length !== 0) return false;
18
18
  if (props.empty === false && thread.messages.length === 0) return false;
19
19
  if (props.running === true && !thread.isRunning) return false;
@@ -1,9 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { type ComponentType, type FC, memo, useMemo } from "react";
4
- import { useThread, useThreadRuntime } from "../../context/react/ThreadContext";
5
- import { MessageRuntimeProvider } from "../../context/providers/MessageRuntimeProvider";
6
- import { useEditComposer, useMessage } from "../../context";
4
+ import { useAssistantState, MessageByIndexProvider } from "../../context";
7
5
  import { ThreadMessage as ThreadMessageType } from "../../types";
8
6
 
9
7
  export namespace ThreadPrimitiveMessages {
@@ -130,8 +128,10 @@ type ThreadMessageComponentProps = {
130
128
  const ThreadMessageComponent: FC<ThreadMessageComponentProps> = ({
131
129
  components,
132
130
  }) => {
133
- const role = useMessage((m) => m.role);
134
- const isEditing = useEditComposer((c) => c.isEditing);
131
+ const role = useAssistantState(({ message }) => message.role);
132
+ const isEditing = useAssistantState(
133
+ ({ message }) => message.composer.isEditing,
134
+ );
135
135
  const Component = getComponent(components, role, isEditing);
136
136
 
137
137
  return <Component />;
@@ -163,16 +163,10 @@ export namespace ThreadPrimitiveMessageByIndex {
163
163
  export const ThreadPrimitiveMessageByIndex: FC<ThreadPrimitiveMessageByIndex.Props> =
164
164
  memo(
165
165
  ({ index, components }) => {
166
- const threadRuntime = useThreadRuntime();
167
- const runtime = useMemo(
168
- () => threadRuntime.getMesssageByIndex(index),
169
- [threadRuntime, index],
170
- );
171
-
172
166
  return (
173
- <MessageRuntimeProvider runtime={runtime}>
167
+ <MessageByIndexProvider index={index}>
174
168
  <ThreadMessageComponent components={components} />
175
- </MessageRuntimeProvider>
169
+ </MessageByIndexProvider>
176
170
  );
177
171
  },
178
172
  (prev, next) =>
@@ -203,7 +197,9 @@ ThreadPrimitiveMessageByIndex.displayName = "ThreadPrimitive.MessageByIndex";
203
197
  export const ThreadPrimitiveMessagesImpl: FC<ThreadPrimitiveMessages.Props> = ({
204
198
  components,
205
199
  }) => {
206
- const messagesLength = useThread((t) => t.messages.length);
200
+ const messagesLength = useAssistantState(
201
+ ({ thread }) => thread.messages.length,
202
+ );
207
203
 
208
204
  const messageElements = useMemo(() => {
209
205
  if (messagesLength === 0) return null;