@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,6 @@
1
1
  "use client";
2
2
 
3
- import {
4
- useMessageRuntime,
5
- useMessageUtilsStore,
6
- } from "../../context/react/MessageContext";
7
- import { useThreadRuntime } from "../../context/react/ThreadContext";
8
- import { useCombinedStore } from "../../utils/combined/useCombinedStore";
3
+ import { useAssistantState } from "../../context";
9
4
 
10
5
  export enum HideAndFloatStatus {
11
6
  Hidden = "hidden",
@@ -24,32 +19,25 @@ export const useActionBarFloatStatus = ({
24
19
  autohide,
25
20
  autohideFloat,
26
21
  }: UseActionBarFloatStatusProps) => {
27
- const threadRuntime = useThreadRuntime();
28
- const messageRuntime = useMessageRuntime();
29
- const messageUtilsStore = useMessageUtilsStore();
30
-
31
- return useCombinedStore(
32
- [threadRuntime, messageRuntime, messageUtilsStore],
33
- (t, m, mu) => {
34
- if (hideWhenRunning && t.isRunning) return HideAndFloatStatus.Hidden;
35
-
36
- const autohideEnabled =
37
- autohide === "always" || (autohide === "not-last" && !m.isLast);
38
-
39
- // normal status
40
- if (!autohideEnabled) return HideAndFloatStatus.Normal;
41
-
42
- // hidden status
43
- if (!mu.isHovering) return HideAndFloatStatus.Hidden;
44
-
45
- // floating status
46
- if (
47
- autohideFloat === "always" ||
48
- (autohideFloat === "single-branch" && m.branchCount <= 1)
49
- )
50
- return HideAndFloatStatus.Floating;
51
-
52
- return HideAndFloatStatus.Normal;
53
- },
54
- );
22
+ return useAssistantState(({ thread, message }) => {
23
+ if (hideWhenRunning && thread.isRunning) return HideAndFloatStatus.Hidden;
24
+
25
+ const autohideEnabled =
26
+ autohide === "always" || (autohide === "not-last" && !message.isLast);
27
+
28
+ // normal status
29
+ if (!autohideEnabled) return HideAndFloatStatus.Normal;
30
+
31
+ // hidden status
32
+ if (!message.isHovering) return HideAndFloatStatus.Hidden;
33
+
34
+ // floating status
35
+ if (
36
+ autohideFloat === "always" ||
37
+ (autohideFloat === "single-branch" && message.branchCount <= 1)
38
+ )
39
+ return HideAndFloatStatus.Floating;
40
+
41
+ return HideAndFloatStatus.Normal;
42
+ });
55
43
  };
@@ -3,7 +3,7 @@
3
3
  import { FC, useEffect, useState } from "react";
4
4
  import * as PopoverPrimitive from "@radix-ui/react-popover";
5
5
  import { ScopedProps, usePopoverScope } from "./scope";
6
- import { useThreadRuntime } from "../../context";
6
+ import { useAssistantApi } from "../../context";
7
7
 
8
8
  export namespace AssistantModalPrimitiveRoot {
9
9
  export type Props = PopoverPrimitive.PopoverProps & {
@@ -21,14 +21,14 @@ const useAssistantModalOpenState = ({
21
21
  const state = useState(defaultOpen);
22
22
 
23
23
  const [, setOpen] = state;
24
- const threadRuntime = useThreadRuntime();
24
+ const api = useAssistantApi();
25
25
  useEffect(() => {
26
26
  if (!unstable_openOnRunStart) return undefined;
27
27
 
28
- return threadRuntime.unstable_on("run-start", () => {
28
+ return api.on("thread.run-start", () => {
29
29
  setOpen(true);
30
30
  });
31
- }, [unstable_openOnRunStart, setOpen, threadRuntime]);
31
+ }, [unstable_openOnRunStart, setOpen, api]);
32
32
 
33
33
  return state;
34
34
  };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import type { FC } from "react";
4
- import { useAttachment } from "../../context/react/AttachmentContext";
4
+ import { useAssistantState } from "../../context";
5
5
 
6
6
  export namespace AttachmentPrimitiveName {
7
7
  export type Props = Record<string, never>;
@@ -10,7 +10,7 @@ export namespace AttachmentPrimitiveName {
10
10
  export const AttachmentPrimitiveName: FC<
11
11
  AttachmentPrimitiveName.Props
12
12
  > = () => {
13
- const name = useAttachment((a) => a.name);
13
+ const name = useAssistantState(({ attachment }) => attachment.name);
14
14
  return <>{name}</>;
15
15
  };
16
16
 
@@ -6,14 +6,14 @@ import {
6
6
  createActionButton,
7
7
  } from "../../utils/createActionButton";
8
8
  import { useCallback } from "react";
9
- import { useAttachmentRuntime } from "../../context/react/AttachmentContext";
9
+ import { useAssistantApi } from "../../context";
10
10
 
11
11
  const useAttachmentRemove = () => {
12
- const attachmentRuntime = useAttachmentRuntime();
12
+ const api = useAssistantApi();
13
13
 
14
14
  const handleRemoveAttachment = useCallback(() => {
15
- attachmentRuntime.remove();
16
- }, [attachmentRuntime]);
15
+ api.attachment().remove();
16
+ }, [api]);
17
17
 
18
18
  return handleRemoveAttachment;
19
19
  };
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { ComponentPropsWithoutRef, forwardRef, type ComponentRef } from "react";
4
- import { useAttachment } from "../../context/react/AttachmentContext";
4
+ import { useAssistantState } from "../../context";
5
5
  import { Primitive } from "@radix-ui/react-primitive";
6
6
 
7
7
  type PrimitiveDivProps = ComponentPropsWithoutRef<typeof Primitive.div>;
@@ -15,7 +15,10 @@ export const AttachmentPrimitiveThumb = forwardRef<
15
15
  AttachmentPrimitiveThumb.Element,
16
16
  AttachmentPrimitiveThumb.Props
17
17
  >((props, ref) => {
18
- const ext = useAttachment((a) => a.name.split(".").pop());
18
+ const ext = useAssistantState(({ attachment }) => {
19
+ const parts = attachment.name.split(".");
20
+ return parts.length > 1 ? parts.pop()! : "";
21
+ });
19
22
  return (
20
23
  <Primitive.div {...props} ref={ref}>
21
24
  .{ext}
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
 
3
3
  import type { FC } from "react";
4
- import { useMessage } from "../../context/react/MessageContext";
4
+ import { useAssistantState } from "../../context";
5
5
 
6
6
  const useBranchPickerCount = () => {
7
- const branchCount = useMessage((s) => s.branchCount);
7
+ const branchCount = useAssistantState(({ message }) => message.branchCount);
8
8
  return branchCount;
9
9
  };
10
10
 
@@ -6,18 +6,17 @@ import {
6
6
  createActionButton,
7
7
  } from "../../utils/createActionButton";
8
8
  import { useCallback } from "react";
9
- import {
10
- useMessage,
11
- useMessageRuntime,
12
- } from "../../context/react/MessageContext";
9
+ import { useAssistantState, useAssistantApi } from "../../context";
13
10
 
14
11
  const useBranchPickerNext = () => {
15
- const messageRuntime = useMessageRuntime();
16
- const disabled = useMessage((m) => m.branchNumber >= m.branchCount);
12
+ const api = useAssistantApi();
13
+ const disabled = useAssistantState(
14
+ ({ message }) => message.branchNumber >= message.branchCount,
15
+ );
17
16
 
18
17
  const callback = useCallback(() => {
19
- messageRuntime.switchToBranch({ position: "next" });
20
- }, [messageRuntime]);
18
+ api.message().switchToBranch({ position: "next" });
19
+ }, [api]);
21
20
 
22
21
  if (disabled) return null;
23
22
  return callback;
@@ -1,10 +1,10 @@
1
1
  "use client";
2
2
 
3
3
  import type { FC } from "react";
4
- import { useMessage } from "../../context/react/MessageContext";
4
+ import { useAssistantState } from "../../context";
5
5
 
6
6
  const useBranchPickerNumber = () => {
7
- const branchNumber = useMessage((s) => s.branchNumber);
7
+ const branchNumber = useAssistantState(({ message }) => message.branchNumber);
8
8
  return branchNumber;
9
9
  };
10
10
 
@@ -6,10 +6,7 @@ import {
6
6
  createActionButton,
7
7
  } from "../../utils/createActionButton";
8
8
  import { useCallback } from "react";
9
- import {
10
- useMessage,
11
- useMessageRuntime,
12
- } from "../../context/react/MessageContext";
9
+ import { useAssistantState, useAssistantApi } from "../../context";
13
10
 
14
11
  /**
15
12
  * Hook that provides navigation to the previous branch functionality.
@@ -33,12 +30,14 @@ import {
33
30
  * ```
34
31
  */
35
32
  const useBranchPickerPrevious = () => {
36
- const messageRuntime = useMessageRuntime();
37
- const disabled = useMessage((m) => m.branchNumber <= 1);
33
+ const api = useAssistantApi();
34
+ const disabled = useAssistantState(
35
+ ({ message }) => message.branchNumber <= 1,
36
+ );
38
37
 
39
38
  const callback = useCallback(() => {
40
- messageRuntime.switchToBranch({ position: "previous" });
41
- }, [messageRuntime]);
39
+ api.message().switchToBranch({ position: "previous" });
40
+ }, [api]);
42
41
 
43
42
  if (disabled) return null;
44
43
  return callback;
@@ -6,7 +6,7 @@ import {
6
6
  createActionButton,
7
7
  } from "../../utils/createActionButton";
8
8
  import { useCallback } from "react";
9
- import { useComposer, useComposerRuntime } from "../../context";
9
+ import { useAssistantState, useAssistantApi } from "../../context";
10
10
 
11
11
  const useComposerAddAttachment = ({
12
12
  multiple = true,
@@ -14,16 +14,16 @@ const useComposerAddAttachment = ({
14
14
  /** allow selecting multiple files */
15
15
  multiple?: boolean | undefined;
16
16
  } = {}) => {
17
- const disabled = useComposer((c) => !c.isEditing);
17
+ const disabled = useAssistantState(({ composer }) => !composer.isEditing);
18
+ const api = useAssistantApi();
18
19
 
19
- const composerRuntime = useComposerRuntime();
20
20
  const callback = useCallback(() => {
21
21
  const input = document.createElement("input");
22
22
  input.type = "file";
23
23
  input.multiple = multiple;
24
24
  input.hidden = true;
25
25
 
26
- const attachmentAccept = composerRuntime.getAttachmentAccept();
26
+ const attachmentAccept = api.composer().getState().attachmentAccept;
27
27
  if (attachmentAccept !== "*") {
28
28
  input.accept = attachmentAccept;
29
29
  }
@@ -34,7 +34,7 @@ const useComposerAddAttachment = ({
34
34
  const fileList = (e.target as HTMLInputElement).files;
35
35
  if (!fileList) return;
36
36
  for (const file of fileList) {
37
- composerRuntime.addAttachment(file);
37
+ api.composer().addAttachment(file);
38
38
  }
39
39
 
40
40
  document.body.removeChild(input);
@@ -47,7 +47,7 @@ const useComposerAddAttachment = ({
47
47
  };
48
48
 
49
49
  input.click();
50
- }, [composerRuntime, multiple]);
50
+ }, [api, multiple]);
51
51
 
52
52
  if (disabled) return null;
53
53
  return callback;
@@ -2,7 +2,7 @@ import { forwardRef, useCallback, useState } from "react";
2
2
 
3
3
  import { Slot } from "@radix-ui/react-slot";
4
4
  import React from "react";
5
- import { useComposerRuntime } from "../../context";
5
+ import { useAssistantApi } from "../../context";
6
6
 
7
7
  export namespace ComposerAttachmentDropzonePrimitive {
8
8
  export type Element = HTMLDivElement;
@@ -17,7 +17,7 @@ export const ComposerAttachmentDropzone = forwardRef<
17
17
  ComposerAttachmentDropzonePrimitive.Props
18
18
  >(({ disabled, asChild = false, children, ...rest }, ref) => {
19
19
  const [isDragging, setIsDragging] = useState(false);
20
- const composerRuntime = useComposerRuntime();
20
+ const api = useAssistantApi();
21
21
 
22
22
  const handleDrag = useCallback(
23
23
  (e: React.DragEvent) => {
@@ -37,13 +37,13 @@ export const ComposerAttachmentDropzone = forwardRef<
37
37
  setIsDragging(false);
38
38
  for (const file of e.dataTransfer.files) {
39
39
  try {
40
- await composerRuntime.addAttachment(file);
40
+ await api.composer().addAttachment(file);
41
41
  } catch (error) {
42
42
  console.error("Failed to add attachment:", error);
43
43
  }
44
44
  }
45
45
  },
46
- [disabled, composerRuntime],
46
+ [disabled, api],
47
47
  );
48
48
 
49
49
  const dragProps = {
@@ -2,9 +2,10 @@
2
2
 
3
3
  import { ComponentType, type FC, memo, useMemo } from "react";
4
4
  import { Attachment } from "../../types";
5
- import { useComposer, useComposerRuntime } from "../../context";
6
- import { useThreadComposerAttachment } from "../../context/react/AttachmentContext";
7
- import { AttachmentRuntimeProvider } from "../../context/providers/AttachmentRuntimeProvider";
5
+ import {
6
+ useAssistantState,
7
+ ComposerAttachmentByIndexProvider,
8
+ } from "../../context";
8
9
 
9
10
  export namespace ComposerPrimitiveAttachments {
10
11
  export type Props = {
@@ -40,10 +41,10 @@ const getComponent = (
40
41
  const AttachmentComponent: FC<{
41
42
  components: ComposerPrimitiveAttachments.Props["components"];
42
43
  }> = ({ components }) => {
43
- const Component = useThreadComposerAttachment((a) =>
44
- getComponent(components, a),
45
- );
44
+ const attachment = useAssistantState(({ attachment }) => attachment);
45
+ if (!attachment) return null;
46
46
 
47
+ const Component = getComponent(components, attachment);
47
48
  if (!Component) return null;
48
49
  return <Component />;
49
50
  };
@@ -75,16 +76,10 @@ export namespace ComposerPrimitiveAttachmentByIndex {
75
76
  export const ComposerPrimitiveAttachmentByIndex: FC<ComposerPrimitiveAttachmentByIndex.Props> =
76
77
  memo(
77
78
  ({ index, components }) => {
78
- const composerRuntime = useComposerRuntime();
79
- const runtime = useMemo(
80
- () => composerRuntime.getAttachmentByIndex(index),
81
- [composerRuntime, index],
82
- );
83
-
84
79
  return (
85
- <AttachmentRuntimeProvider runtime={runtime}>
80
+ <ComposerAttachmentByIndexProvider index={index}>
86
81
  <AttachmentComponent components={components} />
87
- </AttachmentRuntimeProvider>
82
+ </ComposerAttachmentByIndexProvider>
88
83
  );
89
84
  },
90
85
  (prev, next) =>
@@ -101,7 +96,9 @@ ComposerPrimitiveAttachmentByIndex.displayName =
101
96
  export const ComposerPrimitiveAttachments: FC<
102
97
  ComposerPrimitiveAttachments.Props
103
98
  > = ({ components }) => {
104
- const attachmentsCount = useComposer((s) => s.attachments.length);
99
+ const attachmentsCount = useAssistantState(
100
+ (s) => s.composer.attachments.length,
101
+ );
105
102
 
106
103
  const attachmentElements = useMemo(() => {
107
104
  return Array.from({ length: attachmentsCount }, (_, index) => (
@@ -6,15 +6,15 @@ import {
6
6
  createActionButton,
7
7
  } from "../../utils/createActionButton";
8
8
  import { useCallback } from "react";
9
- import { useComposer, useComposerRuntime } from "../../context";
9
+ import { useAssistantState, useAssistantApi } from "../../context";
10
10
 
11
11
  const useComposerCancel = () => {
12
- const composerRuntime = useComposerRuntime();
13
- const disabled = useComposer((c) => !c.canCancel);
12
+ const api = useAssistantApi();
13
+ const disabled = useAssistantState(({ composer }) => !composer.canCancel);
14
14
 
15
15
  const callback = useCallback(() => {
16
- composerRuntime.cancel();
17
- }, [composerRuntime]);
16
+ api.composer().cancel();
17
+ }, [api]);
18
18
 
19
19
  if (disabled) return null;
20
20
  return callback;
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import type { FC, PropsWithChildren } from "react";
4
- import { useComposer } from "../../context/react/ComposerContext";
4
+ import { useAssistantState } from "../../context";
5
5
  import type { RequireAtLeastOne } from "../../utils/RequireAtLeastOne";
6
6
 
7
7
  type ComposerIfFilters = {
@@ -11,7 +11,7 @@ type ComposerIfFilters = {
11
11
  export type UseComposerIfProps = RequireAtLeastOne<ComposerIfFilters>;
12
12
 
13
13
  const useComposerIf = (props: UseComposerIfProps) => {
14
- return useComposer((composer) => {
14
+ return useAssistantState(({ composer }) => {
15
15
  if (props.editing === true && !composer.isEditing) return false;
16
16
  if (props.editing === false && composer.isEditing) return false;
17
17
 
@@ -14,14 +14,9 @@ import {
14
14
  import TextareaAutosize, {
15
15
  type TextareaAutosizeProps,
16
16
  } from "react-textarea-autosize";
17
- import {
18
- useComposer,
19
- useComposerRuntime,
20
- } from "../../context/react/ComposerContext";
21
- import { useThread, useThreadRuntime } from "../../context/react/ThreadContext";
22
17
  import { useEscapeKeydown } from "@radix-ui/react-use-escape-keydown";
23
18
  import { useOnScrollToBottom } from "../../utils/hooks/useOnScrollToBottom";
24
- import { useThreadListItemRuntime } from "../../context/react/ThreadListItemContext";
19
+ import { useAssistantState, useAssistantApi } from "../../context";
25
20
 
26
21
  export namespace ComposerPrimitiveInput {
27
22
  export type Element = HTMLTextAreaElement;
@@ -102,26 +97,26 @@ export const ComposerPrimitiveInput = forwardRef<
102
97
  },
103
98
  forwardedRef,
104
99
  ) => {
105
- const threadListItemRuntime = useThreadListItemRuntime();
106
- const threadRuntime = useThreadRuntime();
107
- const composerRuntime = useComposerRuntime();
100
+ const api = useAssistantApi();
108
101
 
109
- const value = useComposer((c) => {
110
- if (!c.isEditing) return "";
111
- return c.text;
102
+ const value = useAssistantState(({ composer }) => {
103
+ if (!composer.isEditing) return "";
104
+ return composer.text;
112
105
  });
113
106
 
114
107
  const Component = asChild ? Slot : TextareaAutosize;
115
108
 
116
- const isDisabled = Boolean(useThread((t) => t.isDisabled) || disabledProp);
109
+ const isDisabled =
110
+ useAssistantState(({ thread }) => thread.isDisabled) || disabledProp;
117
111
  const textareaRef = useRef<HTMLTextAreaElement>(null);
118
112
  const ref = useComposedRefs(forwardedRef, textareaRef);
119
113
 
120
114
  useEscapeKeydown((e) => {
121
115
  if (!cancelOnEscape) return;
122
116
 
123
- if (composerRuntime.getState().canCancel) {
124
- composerRuntime.cancel();
117
+ const composer = api.composer();
118
+ if (composer.getState().canCancel) {
119
+ composer.cancel();
125
120
  e.preventDefault();
126
121
  }
127
122
  });
@@ -133,7 +128,7 @@ export const ComposerPrimitiveInput = forwardRef<
133
128
  if (e.nativeEvent.isComposing) return;
134
129
 
135
130
  if (e.key === "Enter" && e.shiftKey === false) {
136
- const { isRunning } = threadRuntime.getState();
131
+ const isRunning = api.thread().getState().isRunning;
137
132
 
138
133
  if (!isRunning) {
139
134
  e.preventDefault();
@@ -145,14 +140,14 @@ export const ComposerPrimitiveInput = forwardRef<
145
140
 
146
141
  const handlePaste = async (e: ClipboardEvent<HTMLTextAreaElement>) => {
147
142
  if (!addAttachmentOnPaste) return;
148
- const threadCapabilities = threadRuntime.getState().capabilities;
143
+ const threadCapabilities = api.thread().getState().capabilities;
149
144
  const files = Array.from(e.clipboardData?.files || []);
150
145
 
151
146
  if (threadCapabilities.attachments && files.length > 0) {
152
147
  try {
153
148
  e.preventDefault();
154
149
  await Promise.all(
155
- files.map((file) => composerRuntime.addAttachment(file)),
150
+ files.map((file) => api.composer().addAttachment(file)),
156
151
  );
157
152
  } catch (error) {
158
153
  console.error("Error adding attachment:", error);
@@ -172,29 +167,33 @@ export const ComposerPrimitiveInput = forwardRef<
172
167
  useEffect(() => focus(), [focus]);
173
168
 
174
169
  useOnScrollToBottom(() => {
175
- if (composerRuntime.type === "thread" && unstable_focusOnScrollToBottom) {
170
+ if (
171
+ api.composer().getState().type === "thread" &&
172
+ unstable_focusOnScrollToBottom
173
+ ) {
176
174
  focus();
177
175
  }
178
176
  });
179
177
 
180
178
  useEffect(() => {
181
- if (composerRuntime.type !== "thread" || !unstable_focusOnRunStart)
179
+ if (
180
+ api.composer().getState().type !== "thread" ||
181
+ !unstable_focusOnRunStart
182
+ )
182
183
  return undefined;
183
184
 
184
- return threadRuntime.unstable_on("run-start", focus);
185
- }, [unstable_focusOnRunStart, focus, composerRuntime, threadRuntime]);
185
+ return api.on("thread.run-start", focus);
186
+ }, [unstable_focusOnRunStart, focus, api]);
186
187
 
187
188
  useEffect(() => {
188
- if (composerRuntime.type !== "thread" || !unstable_focusOnThreadSwitched)
189
+ if (
190
+ api.composer().getState().type !== "thread" ||
191
+ !unstable_focusOnThreadSwitched
192
+ )
189
193
  return undefined;
190
194
 
191
- return threadListItemRuntime.unstable_on("switched-to", focus);
192
- }, [
193
- unstable_focusOnThreadSwitched,
194
- focus,
195
- composerRuntime,
196
- threadListItemRuntime,
197
- ]);
195
+ return api.on("thread-list-item.switched-to", focus);
196
+ }, [unstable_focusOnThreadSwitched, focus, api]);
198
197
 
199
198
  return (
200
199
  <Component
@@ -204,8 +203,9 @@ export const ComposerPrimitiveInput = forwardRef<
204
203
  ref={ref as React.ForwardedRef<HTMLTextAreaElement>}
205
204
  disabled={isDisabled}
206
205
  onChange={composeEventHandlers(onChange, (e) => {
207
- if (!composerRuntime.getState().isEditing) return;
208
- return composerRuntime.setText(e.target.value);
206
+ if (!api.composer().getState().isEditing) return;
207
+ api.composer().setText(e.target.value);
208
+ api.flushSync();
209
209
  })}
210
210
  onKeyDown={composeEventHandlers(onKeyDown, handleKeyPress)}
211
211
  onPaste={composeEventHandlers(onPaste, handlePaste)}
@@ -6,22 +6,18 @@ import {
6
6
  createActionButton,
7
7
  } from "../../utils/createActionButton";
8
8
  import { useCallback } from "react";
9
- import { useCombinedStore } from "../../utils/combined/useCombinedStore";
10
- import { useThreadRuntime } from "../../context/react/ThreadContext";
11
- import { useComposerRuntime } from "../../context";
9
+ import { useAssistantState, useAssistantApi } from "../../context";
12
10
 
13
11
  export const useComposerSend = () => {
14
- const composerRuntime = useComposerRuntime();
15
- const threadRuntime = useThreadRuntime();
12
+ const api = useAssistantApi();
16
13
 
17
- const disabled = useCombinedStore(
18
- [threadRuntime, composerRuntime],
19
- (t, c) => t.isRunning || !c.isEditing || c.isEmpty,
14
+ const disabled = useAssistantState(
15
+ (s) => s.thread.isRunning || !s.composer.isEditing || s.composer.isEmpty,
20
16
  );
21
17
 
22
18
  const callback = useCallback(() => {
23
- composerRuntime.send();
24
- }, [composerRuntime]);
19
+ api.composer().send();
20
+ }, [api]);
25
21
 
26
22
  if (disabled) return null;
27
23
  return callback;
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { Primitive } from "@radix-ui/react-primitive";
4
4
  import { type ComponentRef, forwardRef, ComponentPropsWithoutRef } from "react";
5
- import { useMessage } from "../../context/react/MessageContext";
5
+ import { useAssistantState } from "../../context";
6
6
 
7
7
  export namespace ErrorPrimitiveMessage {
8
8
  export type Element = ComponentRef<typeof Primitive.span>;
@@ -13,9 +13,10 @@ export const ErrorPrimitiveMessage = forwardRef<
13
13
  ErrorPrimitiveMessage.Element,
14
14
  ErrorPrimitiveMessage.Props
15
15
  >(({ children, ...props }, forwardRef) => {
16
- const error = useMessage((m) => {
17
- return m.status?.type === "incomplete" && m.status.reason === "error"
18
- ? m.status.error
16
+ const error = useAssistantState(({ message }) => {
17
+ return message.status?.type === "incomplete" &&
18
+ message.status.reason === "error"
19
+ ? message.status.error
19
20
  : undefined;
20
21
  });
21
22
 
@@ -1,9 +1,10 @@
1
1
  "use client";
2
2
 
3
3
  import { ComponentType, type FC, memo, useMemo } from "react";
4
- import { useMessage, useMessageRuntime } from "../../context";
5
- import { useMessageAttachment } from "../../context/react/AttachmentContext";
6
- import { AttachmentRuntimeProvider } from "../../context/providers/AttachmentRuntimeProvider";
4
+ import {
5
+ useAssistantState,
6
+ MessageAttachmentByIndexProvider,
7
+ } from "../../context";
7
8
  import { CompleteAttachment } from "../../types";
8
9
 
9
10
  export namespace MessagePrimitiveAttachments {
@@ -40,8 +41,10 @@ const getComponent = (
40
41
  const AttachmentComponent: FC<{
41
42
  components: MessagePrimitiveAttachments.Props["components"];
42
43
  }> = ({ components }) => {
43
- const Component = useMessageAttachment((a) => getComponent(components, a));
44
+ const attachment = useAssistantState(({ attachment }) => attachment);
45
+ if (!attachment) return null;
44
46
 
47
+ const Component = getComponent(components, attachment as CompleteAttachment);
45
48
  if (!Component) return null;
46
49
  return <Component />;
47
50
  };
@@ -73,16 +76,10 @@ export namespace MessagePrimitiveAttachmentByIndex {
73
76
  export const MessagePrimitiveAttachmentByIndex: FC<MessagePrimitiveAttachmentByIndex.Props> =
74
77
  memo(
75
78
  ({ index, components }) => {
76
- const messageRuntime = useMessageRuntime();
77
- const runtime = useMemo(
78
- () => messageRuntime.getAttachmentByIndex(index),
79
- [messageRuntime, index],
80
- );
81
-
82
79
  return (
83
- <AttachmentRuntimeProvider runtime={runtime}>
80
+ <MessageAttachmentByIndexProvider index={index}>
84
81
  <AttachmentComponent components={components} />
85
- </AttachmentRuntimeProvider>
82
+ </MessageAttachmentByIndexProvider>
86
83
  );
87
84
  },
88
85
  (prev, next) =>
@@ -99,7 +96,7 @@ MessagePrimitiveAttachmentByIndex.displayName =
99
96
  export const MessagePrimitiveAttachments: FC<
100
97
  MessagePrimitiveAttachments.Props
101
98
  > = ({ components }) => {
102
- const attachmentsCount = useMessage((message) => {
99
+ const attachmentsCount = useAssistantState(({ message }) => {
103
100
  if (message.role !== "user") return 0;
104
101
  return message.attachments.length;
105
102
  });