@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
@@ -0,0 +1,88 @@
1
+ import { resource, tapEffect } from "@assistant-ui/tap";
2
+ import {
3
+ ThreadListItemEventType,
4
+ ThreadListItemRuntime,
5
+ } from "../api/ThreadListItemRuntime";
6
+ import { ThreadListItemStatus, Unsubscribe } from "../types";
7
+ import { tapApi } from "../utils/tap-store";
8
+ import { tapSubscribable } from "./util-hooks/tapSubscribable";
9
+ import { EventManagerActions } from "./EventManagerClient";
10
+
11
+ export type ThreadListItemClientState = {
12
+ readonly id: string;
13
+ readonly remoteId: string | undefined;
14
+ readonly externalId: string | undefined;
15
+ readonly title?: string | undefined;
16
+ readonly status: ThreadListItemStatus;
17
+ };
18
+
19
+ export type ThreadListItemClientActions = {
20
+ switchTo(): void;
21
+ rename(newTitle: string): void;
22
+ archive(): void;
23
+ unarchive(): void;
24
+ delete(): void;
25
+ generateTitle(): void;
26
+ initialize(): Promise<{ remoteId: string; externalId: string | undefined }>;
27
+ detach(): void;
28
+
29
+ /** @internal */
30
+ __internal_getRuntime(): ThreadListItemRuntime;
31
+ };
32
+
33
+ export const ThreadListItemClient = resource(
34
+ ({
35
+ runtime,
36
+ events,
37
+ }: {
38
+ runtime: ThreadListItemRuntime;
39
+ events: EventManagerActions;
40
+ }) => {
41
+ const runtimeState = tapSubscribable(runtime);
42
+
43
+ // Bind thread list item events to event manager
44
+ tapEffect(() => {
45
+ const unsubscribers: Unsubscribe[] = [];
46
+
47
+ // Subscribe to thread list item events
48
+ const threadListItemEvents: ThreadListItemEventType[] = [
49
+ "switched-to",
50
+ "switched-away",
51
+ ];
52
+
53
+ for (const event of threadListItemEvents) {
54
+ const unsubscribe = runtime.unstable_on(event, () => {
55
+ events.emit(`thread-list-item.${event}`, {
56
+ threadId: runtime.getState()!.id,
57
+ });
58
+ });
59
+ unsubscribers.push(unsubscribe);
60
+ }
61
+
62
+ return () => {
63
+ for (const unsub of unsubscribers) unsub();
64
+ };
65
+ }, [runtime, events]);
66
+
67
+ const api = tapApi<ThreadListItemClientState, ThreadListItemClientActions>(
68
+ runtimeState,
69
+ {
70
+ switchTo: runtime.switchTo,
71
+ rename: runtime.rename,
72
+ archive: runtime.archive,
73
+ unarchive: runtime.unarchive,
74
+ delete: runtime.delete,
75
+ generateTitle: runtime.generateTitle,
76
+ initialize: runtime.initialize,
77
+ detach: runtime.detach,
78
+ __internal_getRuntime: () => runtime,
79
+ },
80
+ );
81
+
82
+ return {
83
+ state: runtimeState,
84
+ api,
85
+ key: runtimeState.id,
86
+ };
87
+ },
88
+ );
@@ -0,0 +1,31 @@
1
+ import { ResourceElement, tapResources } from "@assistant-ui/tap";
2
+ import { ActionsObject } from "../../utils/tap-store";
3
+ import { StoreApi } from "../../utils/tap-store/tap-store-api";
4
+
5
+ export const tapLookupResources = <TState, TActions extends ActionsObject>(
6
+ elements: ResourceElement<{
7
+ key: string | undefined;
8
+ state: TState;
9
+ api: StoreApi<TState, TActions>;
10
+ }>[],
11
+ ) => {
12
+ const resources = tapResources(elements);
13
+
14
+ return {
15
+ state: resources.map((r) => r.state),
16
+ api: (lookup: { index: number } | { key: string }) => {
17
+ const value =
18
+ "index" in lookup
19
+ ? resources[lookup.index]?.api
20
+ : resources.find((r) => r.key === lookup.key)?.api;
21
+
22
+ if (!value) {
23
+ throw new Error(
24
+ `tapLookupResources: Resource not found for lookup: ${JSON.stringify(lookup)}`,
25
+ );
26
+ }
27
+
28
+ return value;
29
+ },
30
+ };
31
+ };
@@ -0,0 +1,16 @@
1
+ import { tapState, tapEffect } from "@assistant-ui/tap";
2
+ import { SubscribableWithState } from "../../api/subscribable/Subscribable";
3
+
4
+ export const tapSubscribable = <T>(
5
+ subscribable: Omit<SubscribableWithState<T, any>, "path">,
6
+ ) => {
7
+ const [, setState] = tapState(subscribable.getState);
8
+ tapEffect(() => {
9
+ setState(subscribable.getState());
10
+ return subscribable.subscribe(() => {
11
+ setState(subscribable.getState());
12
+ });
13
+ }, [subscribable]);
14
+
15
+ return subscribable.getState();
16
+ };
@@ -1,10 +1,8 @@
1
1
  import { RefObject, useState } from "react";
2
- import { useThreadListItemRuntime } from "../context";
3
2
  import { ThreadHistoryAdapter } from "../runtimes/adapters/thread-history/ThreadHistoryAdapter";
4
3
  import { ExportedMessageRepositoryItem } from "../runtimes/utils/MessageRepository";
5
4
  import { AssistantCloud } from "assistant-cloud";
6
5
  import { auiV0Decode, auiV0Encode } from "./auiV0";
7
- import { ThreadListItemRuntime } from "../api";
8
6
  import {
9
7
  MessageFormatAdapter,
10
8
  MessageFormatItem,
@@ -13,6 +11,11 @@ import {
13
11
  } from "../runtimes/adapters/thread-history/MessageFormatAdapter";
14
12
  import { GenericThreadHistoryAdapter } from "../runtimes/adapters/thread-history/ThreadHistoryAdapter";
15
13
  import { ReadonlyJSONObject } from "assistant-stream/utils";
14
+ import {
15
+ AssistantApi,
16
+ useAssistantApi,
17
+ } from "../context/react/AssistantApiContext";
18
+ import { ThreadListItemRuntime } from "../api";
16
19
 
17
20
  // Global WeakMap to store message ID mappings across adapter instances
18
21
  const globalMessageIdMapping = new WeakMap<
@@ -55,14 +58,23 @@ class FormattedThreadHistoryAdapter<TMessage, TStorageFormat>
55
58
  class AssistantCloudThreadHistoryAdapter implements ThreadHistoryAdapter {
56
59
  constructor(
57
60
  private cloudRef: RefObject<AssistantCloud>,
58
- private threadListItemRuntime: ThreadListItemRuntime,
61
+ private store: AssistantApi,
59
62
  ) {}
60
63
 
61
64
  private get _getIdForLocalId(): Record<string, string | Promise<string>> {
62
- if (!globalMessageIdMapping.has(this.threadListItemRuntime)) {
63
- globalMessageIdMapping.set(this.threadListItemRuntime, {});
65
+ if (
66
+ !globalMessageIdMapping.has(
67
+ this.store.threadListItem().__internal_getRuntime(),
68
+ )
69
+ ) {
70
+ globalMessageIdMapping.set(
71
+ this.store.threadListItem().__internal_getRuntime(),
72
+ {},
73
+ );
64
74
  }
65
- return globalMessageIdMapping.get(this.threadListItemRuntime)!;
75
+ return globalMessageIdMapping.get(
76
+ this.store.threadListItem().__internal_getRuntime(),
77
+ )!;
66
78
  }
67
79
 
68
80
  withFormat<TMessage, TStorageFormat>(
@@ -72,7 +84,7 @@ class AssistantCloudThreadHistoryAdapter implements ThreadHistoryAdapter {
72
84
  }
73
85
 
74
86
  async append({ parentId, message }: ExportedMessageRepositoryItem) {
75
- const { remoteId } = await this.threadListItemRuntime.initialize();
87
+ const { remoteId } = await this.store.threadListItem().initialize();
76
88
  const task = this.cloudRef.current.threads.messages
77
89
  .create(remoteId, {
78
90
  parent_id: parentId
@@ -92,7 +104,7 @@ class AssistantCloudThreadHistoryAdapter implements ThreadHistoryAdapter {
92
104
  }
93
105
 
94
106
  async load() {
95
- const remoteId = this.threadListItemRuntime.getState().remoteId;
107
+ const remoteId = this.store.threadListItem().getState().remoteId;
96
108
  if (!remoteId) return { messages: [] };
97
109
  const { messages } = await this.cloudRef.current.threads.messages.list(
98
110
  remoteId,
@@ -118,7 +130,7 @@ class AssistantCloudThreadHistoryAdapter implements ThreadHistoryAdapter {
118
130
  format: string,
119
131
  content: T,
120
132
  ) {
121
- const { remoteId } = await this.threadListItemRuntime.initialize();
133
+ const { remoteId } = await this.store.threadListItem().initialize();
122
134
 
123
135
  const task = this.cloudRef.current.threads.messages
124
136
  .create(remoteId, {
@@ -144,7 +156,7 @@ class AssistantCloudThreadHistoryAdapter implements ThreadHistoryAdapter {
144
156
  message: MessageStorageEntry<TStorageFormat>,
145
157
  ) => MessageFormatItem<TMessage>,
146
158
  ): Promise<MessageFormatRepository<TMessage>> {
147
- const remoteId = this.threadListItemRuntime.getState().remoteId;
159
+ const remoteId = this.store.threadListItem().getState().remoteId;
148
160
  if (!remoteId) return { messages: [] };
149
161
 
150
162
  const { messages } = await this.cloudRef.current.threads.messages.list(
@@ -173,10 +185,9 @@ class AssistantCloudThreadHistoryAdapter implements ThreadHistoryAdapter {
173
185
  export const useAssistantCloudThreadHistoryAdapter = (
174
186
  cloudRef: RefObject<AssistantCloud>,
175
187
  ): ThreadHistoryAdapter => {
176
- const threadListItemRuntime = useThreadListItemRuntime();
188
+ const store = useAssistantApi();
177
189
  const [adapter] = useState(
178
- () =>
179
- new AssistantCloudThreadHistoryAdapter(cloudRef, threadListItemRuntime),
190
+ () => new AssistantCloudThreadHistoryAdapter(cloudRef, store),
180
191
  );
181
192
 
182
193
  return adapter;
@@ -1,23 +1,14 @@
1
1
  "use client";
2
2
 
3
- import {
4
- FC,
5
- PropsWithChildren,
6
- memo,
7
- useEffect,
8
- useMemo,
9
- useState,
10
- } from "react";
11
- import { AssistantContext } from "../react/AssistantContext";
12
- import { makeAssistantToolUIsStore } from "../stores/AssistantToolUIs";
13
- import { ThreadRuntimeProvider } from "./ThreadRuntimeProvider";
3
+ import { FC, memo, PropsWithChildren } from "react";
4
+ import { AssistantApiProvider } from "../react/AssistantApiContext";
14
5
  import { AssistantRuntime } from "../../api/AssistantRuntime";
15
- import { create } from "zustand";
16
- import { writableStore } from "../ReadonlyStore";
17
6
  import { AssistantRuntimeCore } from "../../runtimes/core/AssistantRuntimeCore";
18
- import { ensureBinding } from "../react/utils/ensureBinding";
7
+ import { useAssistantRuntimeClient } from "../../client/AssistantRuntimeClient";
19
8
 
20
- export namespace AssistantRuntimeProvider {
9
+ import { ThreadViewportProvider } from "./ThreadViewportProvider";
10
+
11
+ export namespace AssistantProvider {
21
12
  export type Props = PropsWithChildren<{
22
13
  /**
23
14
  * The runtime to provide to the rest of your app.
@@ -26,52 +17,37 @@ export namespace AssistantRuntimeProvider {
26
17
  }>;
27
18
  }
28
19
 
29
- const useAssistantRuntimeStore = (runtime: AssistantRuntime) => {
30
- const [store] = useState(() => create(() => runtime));
31
-
32
- useEffect(() => {
33
- ensureBinding(runtime);
34
- ensureBinding(runtime.threads);
35
-
36
- writableStore(store).setState(runtime, true);
37
- }, [runtime, store]);
38
-
39
- return store;
40
- };
41
-
42
- const useAssistantToolUIsStore = () => {
43
- return useMemo(() => makeAssistantToolUIsStore(), []);
44
- };
45
-
46
20
  const getRenderComponent = (runtime: AssistantRuntime) => {
47
21
  return (runtime as { _core?: AssistantRuntimeCore })._core?.RenderComponent;
48
22
  };
49
23
 
50
- export const AssistantRuntimeProviderImpl: FC<
51
- AssistantRuntimeProvider.Props
52
- > = ({ children, runtime }) => {
53
- const useAssistantRuntime = useAssistantRuntimeStore(runtime);
54
- const useToolUIs = useAssistantToolUIsStore();
55
- const [context] = useState(() => {
56
- return {
57
- useToolUIs,
58
- useAssistantRuntime,
59
- };
60
- });
24
+ export const AssistantRuntimeProviderImpl: FC<AssistantProvider.Props> = ({
25
+ children,
26
+ runtime,
27
+ }) => {
28
+ const api = useAssistantRuntimeClient(runtime);
61
29
 
62
30
  const RenderComponent = getRenderComponent(runtime);
63
31
 
64
32
  return (
65
- <AssistantContext.Provider value={context}>
33
+ <AssistantProvider api={api}>
66
34
  {RenderComponent && <RenderComponent />}
67
- <ThreadRuntimeProvider
68
- runtime={runtime.thread}
69
- listItemRuntime={runtime.threads.mainItem}
70
- >
71
- {children}
72
- </ThreadRuntimeProvider>
73
- </AssistantContext.Provider>
35
+
36
+ {children}
37
+ </AssistantProvider>
74
38
  );
75
39
  };
76
40
 
77
41
  export const AssistantRuntimeProvider = memo(AssistantRuntimeProviderImpl);
42
+
43
+ const AssistantProvider: FC<
44
+ PropsWithChildren<{ api: ReturnType<typeof useAssistantRuntimeClient> }>
45
+ > = ({ children, api }) => {
46
+ return (
47
+ <AssistantApiProvider api={api}>
48
+ {/* TODO temporarily allow accessing viewport state from outside the viewport */}
49
+ {/* TODO figure out if this behavior should be deprecated, since it is quite hacky */}
50
+ <ThreadViewportProvider>{children}</ThreadViewportProvider>
51
+ </AssistantApiProvider>
52
+ );
53
+ };
@@ -0,0 +1,48 @@
1
+ "use client";
2
+
3
+ import { useMemo, type FC, type PropsWithChildren } from "react";
4
+
5
+ import {
6
+ AssistantApi,
7
+ AssistantApiProvider,
8
+ useAssistantApi,
9
+ createAssistantApiField,
10
+ } from "../react/AssistantApiContext";
11
+
12
+ export const MessageAttachmentByIndexProvider: FC<
13
+ PropsWithChildren<{
14
+ index: number;
15
+ }>
16
+ > = ({ index, children }) => {
17
+ const api = useAssistantApi();
18
+ const api2 = useMemo(() => {
19
+ return {
20
+ attachment: createAssistantApiField({
21
+ source: "message",
22
+ query: { type: "index", index },
23
+ get: () => api.message().attachment({ index }),
24
+ }),
25
+ } satisfies Partial<AssistantApi>;
26
+ }, [api, index]);
27
+
28
+ return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;
29
+ };
30
+
31
+ export const ComposerAttachmentByIndexProvider: FC<
32
+ PropsWithChildren<{
33
+ index: number;
34
+ }>
35
+ > = ({ index, children }) => {
36
+ const api = useAssistantApi();
37
+ const api2 = useMemo(() => {
38
+ return {
39
+ attachment: createAssistantApiField({
40
+ source: "composer",
41
+ query: { type: "index", index },
42
+ get: () => api.composer().attachment({ index }),
43
+ }),
44
+ } satisfies Partial<AssistantApi>;
45
+ }, [api, index]);
46
+
47
+ return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;
48
+ };
@@ -0,0 +1,57 @@
1
+ "use client";
2
+
3
+ import { useMemo, type FC, type PropsWithChildren } from "react";
4
+ import {
5
+ AssistantApi,
6
+ AssistantApiProvider,
7
+ useAssistantApi,
8
+ createAssistantApiField,
9
+ } from "../react/AssistantApiContext";
10
+ import { AssistantEvents, AssistantEventSelector } from "../../types";
11
+ import { Unsubscribe } from "@assistant-ui/tap";
12
+ import {
13
+ checkEventScope,
14
+ normalizeEventSelector,
15
+ } from "../../types/EventTypes";
16
+
17
+ export const MessageByIndexProvider: FC<
18
+ PropsWithChildren<{
19
+ index: number;
20
+ }>
21
+ > = ({ index, children }) => {
22
+ const api = useAssistantApi();
23
+ const api2 = useMemo(() => {
24
+ const getMessage = () => api.thread().message({ index });
25
+ return {
26
+ message: createAssistantApiField({
27
+ source: "thread",
28
+ query: { type: "index", index },
29
+ get: () => getMessage(),
30
+ }),
31
+ composer: createAssistantApiField({
32
+ source: "message",
33
+ query: {},
34
+ get: () => getMessage().composer,
35
+ }),
36
+ on<TEvent extends keyof AssistantEvents>(
37
+ selector: AssistantEventSelector<TEvent>,
38
+ callback: (e: AssistantEvents[TEvent]) => void,
39
+ ): Unsubscribe {
40
+ const { event, scope } = normalizeEventSelector(selector);
41
+ if (
42
+ !checkEventScope("composer", scope, event) &&
43
+ !checkEventScope("message", scope, event)
44
+ )
45
+ return api.on(selector, callback);
46
+
47
+ return api.on({ scope: "thread", event }, (e) => {
48
+ if (e.messageId === getMessage().getState().id) {
49
+ callback(e);
50
+ }
51
+ });
52
+ },
53
+ } satisfies Partial<AssistantApi>;
54
+ }, [api, index]);
55
+
56
+ return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;
57
+ };
@@ -0,0 +1,28 @@
1
+ "use client";
2
+
3
+ import { useMemo, type FC, type PropsWithChildren } from "react";
4
+ import {
5
+ AssistantApi,
6
+ AssistantApiProvider,
7
+ useAssistantApi,
8
+ createAssistantApiField,
9
+ } from "../react/AssistantApiContext";
10
+
11
+ export const PartByIndexProvider: FC<
12
+ PropsWithChildren<{
13
+ index: number;
14
+ }>
15
+ > = ({ index, children }) => {
16
+ const api = useAssistantApi();
17
+ const api2 = useMemo(() => {
18
+ return {
19
+ part: createAssistantApiField({
20
+ source: "message",
21
+ query: { type: "index", index },
22
+ get: () => api.message().part({ index }),
23
+ }),
24
+ } satisfies Partial<AssistantApi>;
25
+ }, [api, index]);
26
+
27
+ return <AssistantApiProvider api={api2}>{children}</AssistantApiProvider>;
28
+ };
@@ -1,90 +1,65 @@
1
1
  "use client";
2
2
 
3
- import { FC, PropsWithChildren, useEffect, useState } from "react";
4
- import { create, StoreApi, UseBoundStore } from "zustand";
3
+ import { useMemo, type FC, type PropsWithChildren } from "react";
5
4
  import {
6
- MessagePartContext,
7
- MessagePartContextValue,
8
- } from "../react/MessagePartContext";
9
- import { MessagePartStatus } from "../../types/AssistantTypes";
10
- import { writableStore } from "../ReadonlyStore";
5
+ AssistantApiProvider,
6
+ AssistantApi,
7
+ createAssistantApiField,
8
+ } from "../react/AssistantApiContext";
11
9
  import {
12
- MessagePartRuntimeImpl,
13
- MessagePartState,
14
- } from "../../api/MessagePartRuntime";
15
- import { ensureBinding } from "../react/utils/ensureBinding";
10
+ MessagePartClientActions,
11
+ MessagePartClientState,
12
+ } from "../../client/MessagePartClient";
13
+ import { resource, tapMemo } from "@assistant-ui/tap";
14
+ import { useResource } from "@assistant-ui/tap/react";
15
+ import { asStore, tapApi } from "../../utils/tap-store";
16
16
 
17
- export namespace TextMessagePartProvider {
18
- export type Props = PropsWithChildren<{
19
- text: string;
20
- isRunning?: boolean | undefined;
21
- }>;
22
- }
23
-
24
- const COMPLETE_STATUS: MessagePartStatus = {
25
- type: "complete",
26
- };
27
-
28
- const RUNNING_STATUS: MessagePartStatus = {
29
- type: "running",
30
- };
31
-
32
- export const TextMessagePartProvider: FC<TextMessagePartProvider.Props> = ({
33
- children,
34
- text,
35
- isRunning,
36
- }) => {
37
- const [context] = useState<
38
- MessagePartContextValue & {
39
- useMessagePart: UseBoundStore<
40
- StoreApi<MessagePartState & { type: "text" }>
41
- >;
42
- }
43
- >(() => {
44
- const useMessagePart = create<MessagePartState & { type: "text" }>(() => ({
45
- status: isRunning ? RUNNING_STATUS : COMPLETE_STATUS,
46
- type: "text",
47
- text,
48
- }));
49
-
50
- const MessagePartRuntime = new MessagePartRuntimeImpl({
51
- path: {
52
- ref: "text",
53
- threadSelector: { type: "main" },
54
- messageSelector: { type: "messageId", messageId: "" },
55
- messagePartSelector: { type: "index", index: 0 },
56
- },
57
- getState: useMessagePart.getState,
58
- subscribe: useMessagePart.subscribe,
59
- });
60
- ensureBinding(MessagePartRuntime);
61
-
62
- const useMessagePartRuntime = create(() => MessagePartRuntime);
17
+ const TextMessagePartActions = new Proxy({} as MessagePartClientActions, {
18
+ get() {
19
+ throw new Error("Not implemented");
20
+ },
21
+ });
63
22
 
64
- return { useMessagePartRuntime, useMessagePart };
65
- });
66
-
67
- useEffect(() => {
68
- const state = context.useMessagePart.getState();
69
- const textUpdated = state.text !== text;
70
- const targetStatus = isRunning ? RUNNING_STATUS : COMPLETE_STATUS;
71
- const statusUpdated = state.status !== targetStatus;
72
-
73
- if (!textUpdated && !statusUpdated) return;
74
-
75
- writableStore(context.useMessagePart).setState(
76
- {
23
+ const TextMessagePartClient = resource(
24
+ ({ text, isRunning }: { text: string; isRunning: boolean }) => {
25
+ const state = tapMemo<MessagePartClientState>(
26
+ () => ({
77
27
  type: "text",
78
28
  text,
79
- status: targetStatus,
80
- } satisfies MessagePartState,
81
- true,
29
+ status: isRunning ? { type: "running" } : { type: "complete" },
30
+ }),
31
+ [text, isRunning],
82
32
  );
83
- }, [context, isRunning, text]);
84
33
 
85
- return (
86
- <MessagePartContext.Provider value={context}>
87
- {children}
88
- </MessagePartContext.Provider>
34
+ const api = tapApi(state, TextMessagePartActions);
35
+
36
+ return {
37
+ state,
38
+ api,
39
+ };
40
+ },
41
+ );
42
+
43
+ export const TextMessagePartProvider: FC<
44
+ PropsWithChildren<{
45
+ text: string;
46
+ isRunning?: boolean;
47
+ }>
48
+ > = ({ text, isRunning = false, children }) => {
49
+ const store = useResource(
50
+ asStore(TextMessagePartClient({ text, isRunning })),
89
51
  );
52
+ const api = useMemo(() => {
53
+ return {
54
+ part: createAssistantApiField({
55
+ source: "root",
56
+ query: {},
57
+ get: () => store.getApi(),
58
+ }),
59
+ subscribe: store.subscribe,
60
+ // flushSync: store.flushSync,
61
+ } satisfies Partial<AssistantApi>;
62
+ }, [store]);
63
+
64
+ return <AssistantApiProvider api={api}>{children}</AssistantApiProvider>;
90
65
  };