@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
@@ -7,17 +7,15 @@ import {
7
7
  useRef,
8
8
  useEffect,
9
9
  memo,
10
- useMemo,
11
10
  PropsWithChildren,
12
11
  ComponentType,
13
12
  } from "react";
14
13
  import { UseBoundStore, StoreApi, create } from "zustand";
15
- import { useAssistantRuntime } from "../../context";
16
- import { ThreadListItemRuntimeProvider } from "../../context/providers/ThreadListItemRuntimeProvider";
17
14
  import {
18
- useThreadListItem,
19
- useThreadListItemRuntime,
20
- } from "../../context/react/ThreadListItemContext";
15
+ useAssistantState,
16
+ useAssistantApi,
17
+ ThreadListItemByIdProvider,
18
+ } from "../../context";
21
19
  import { ThreadRuntimeCore, ThreadRuntimeImpl } from "../../internal";
22
20
  import { BaseSubscribable } from "./BaseSubscribable";
23
21
  import { AssistantRuntime } from "../../api";
@@ -82,7 +80,7 @@ export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
82
80
  }
83
81
 
84
82
  private _InnerActiveThreadProvider: FC = () => {
85
- const { id } = useThreadListItem();
83
+ const id = useAssistantState(({ threadListItem }) => threadListItem.id);
86
84
 
87
85
  const { useRuntime } = this.useRuntimeHook();
88
86
  const runtime = useRuntime();
@@ -114,21 +112,22 @@ export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
114
112
  }, [threadBinding, updateRuntime]);
115
113
 
116
114
  // auto initialize thread
117
- const threadListItemRuntime = useThreadListItemRuntime();
115
+ const api = useAssistantApi();
118
116
  useEffect(() => {
119
117
  return runtime.threads.main.unstable_on("initialize", () => {
120
- if (threadListItemRuntime.getState().status === "new") {
121
- threadListItemRuntime.initialize();
118
+ const state = api.threadListItem().getState();
119
+ if (state.status === "new") {
120
+ api.threadListItem().initialize();
122
121
 
123
122
  // auto generate a title after first run
124
123
  const dispose = runtime.thread.unstable_on("run-end", () => {
125
124
  dispose();
126
125
 
127
- threadListItemRuntime.generateTitle();
126
+ api.threadListItem().generateTitle();
128
127
  });
129
128
  }
130
129
  });
131
- }, [runtime, threadListItemRuntime]);
130
+ }, [runtime, api]);
132
131
 
133
132
  return null;
134
133
  };
@@ -138,18 +137,14 @@ export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
138
137
  provider: ComponentType<PropsWithChildren>;
139
138
  // eslint-disable-next-line react/display-name
140
139
  }> = memo(({ threadId, provider: Provider }) => {
141
- const assistantRuntime = useAssistantRuntime();
142
- const threadListItemRuntime = useMemo(
143
- () => assistantRuntime.threads.getItemById(threadId),
144
- [assistantRuntime, threadId],
145
- );
140
+ // Runtime is provided by ThreadListItemByIdProvider
146
141
 
147
142
  return (
148
- <ThreadListItemRuntimeProvider runtime={threadListItemRuntime}>
143
+ <ThreadListItemByIdProvider id={threadId}>
149
144
  <Provider>
150
145
  <this._InnerActiveThreadProvider />
151
146
  </Provider>
152
- </ThreadListItemRuntimeProvider>
147
+ </ThreadListItemByIdProvider>
153
148
  );
154
149
  });
155
150
 
@@ -18,22 +18,22 @@ import { RuntimeAdapterProvider } from "../adapters/RuntimeAdapterProvider";
18
18
 
19
19
  type RemoteThreadData =
20
20
  | {
21
- readonly threadId: string;
22
- readonly remoteId?: undefined;
23
- readonly externalId?: undefined;
21
+ readonly id: string;
22
+ readonly remoteId: undefined;
23
+ readonly externalId: undefined;
24
24
  readonly status: "new";
25
25
  readonly title: undefined;
26
26
  }
27
27
  | {
28
- readonly threadId: string;
28
+ readonly id: string;
29
29
  readonly initializeTask: Promise<RemoteThreadInitializeResponse>;
30
- readonly remoteId?: undefined;
31
- readonly externalId?: undefined;
30
+ readonly remoteId: undefined;
31
+ readonly externalId: undefined;
32
32
  readonly status: "regular" | "archived";
33
33
  readonly title?: string | undefined;
34
34
  }
35
35
  | {
36
- readonly threadId: string;
36
+ readonly id: string;
37
37
  readonly initializeTask: Promise<RemoteThreadInitializeResponse>;
38
38
  readonly remoteId: string;
39
39
  readonly externalId: string | undefined;
@@ -72,7 +72,7 @@ const updateStatusReducer = (
72
72
  const data = getThreadData(state, threadIdOrRemoteId);
73
73
  if (!data) return state;
74
74
 
75
- const { threadId, remoteId, status: lastStatus } = data;
75
+ const { id, remoteId, status: lastStatus } = data;
76
76
  if (lastStatus === newStatus) return state;
77
77
 
78
78
  const newState = { ...state };
@@ -83,11 +83,11 @@ const updateStatusReducer = (
83
83
  newState.newThreadId = undefined;
84
84
  break;
85
85
  case "regular":
86
- newState.threadIds = newState.threadIds.filter((t) => t !== threadId);
86
+ newState.threadIds = newState.threadIds.filter((t) => t !== id);
87
87
  break;
88
88
  case "archived":
89
89
  newState.archivedThreadIds = newState.archivedThreadIds.filter(
90
- (t) => t !== threadId,
90
+ (t) => t !== id,
91
91
  );
92
92
  break;
93
93
 
@@ -100,20 +100,20 @@ const updateStatusReducer = (
100
100
  // newStatus
101
101
  switch (newStatus) {
102
102
  case "regular":
103
- newState.threadIds = [threadId, ...newState.threadIds];
103
+ newState.threadIds = [id, ...newState.threadIds];
104
104
  break;
105
105
 
106
106
  case "archived":
107
- newState.archivedThreadIds = [threadId, ...newState.archivedThreadIds];
107
+ newState.archivedThreadIds = [id, ...newState.archivedThreadIds];
108
108
  break;
109
109
 
110
110
  case "deleted":
111
111
  newState.threadData = Object.fromEntries(
112
- Object.entries(newState.threadData).filter(([key]) => key !== threadId),
112
+ Object.entries(newState.threadData).filter(([key]) => key !== id),
113
113
  );
114
114
  newState.threadIdMap = Object.fromEntries(
115
115
  Object.entries(newState.threadIdMap).filter(
116
- ([key]) => key !== threadId && key !== remoteId,
116
+ ([key]) => key !== id && key !== remoteId,
117
117
  ),
118
118
  );
119
119
  break;
@@ -127,7 +127,7 @@ const updateStatusReducer = (
127
127
  if (newStatus !== "deleted") {
128
128
  newState.threadData = {
129
129
  ...newState.threadData,
130
- [threadId]: {
130
+ [id]: {
131
131
  ...data,
132
132
  status: newStatus,
133
133
  },
@@ -156,6 +156,10 @@ export class RemoteThreadListThreadListRuntimeCore
156
156
  threadData: {},
157
157
  });
158
158
 
159
+ public get threadData() {
160
+ return this._state.value.threadData;
161
+ }
162
+
159
163
  public getLoadThreadsPromise() {
160
164
  // TODO this needs to be cached in case this promise is loaded during suspense
161
165
  if (!this._loadThreadsPromise) {
@@ -194,7 +198,7 @@ export class RemoteThreadListThreadListRuntimeCore
194
198
  const mappingId = createThreadMappingId(thread.remoteId);
195
199
  newThreadIdMap[thread.remoteId] = mappingId;
196
200
  newThreadData[mappingId] = {
197
- threadId: thread.remoteId,
201
+ id: thread.remoteId,
198
202
  remoteId: thread.remoteId,
199
203
  externalId: thread.externalId,
200
204
  status: thread.status,
@@ -294,7 +298,7 @@ export class RemoteThreadListThreadListRuntimeCore
294
298
  const data = this.getItemById(threadIdOrRemoteId);
295
299
  if (!data) throw new Error("Thread not found");
296
300
 
297
- const result = this._hookManager.getThreadRuntimeCore(data.threadId);
301
+ const result = this._hookManager.getThreadRuntimeCore(data.id);
298
302
  if (!result) throw new Error("Thread not found");
299
303
  return result;
300
304
  }
@@ -307,17 +311,17 @@ export class RemoteThreadListThreadListRuntimeCore
307
311
  const data = this.getItemById(threadIdOrRemoteId);
308
312
  if (!data) throw new Error("Thread not found");
309
313
 
310
- if (this._mainThreadId === data.threadId) return;
314
+ if (this._mainThreadId === data.id) return;
311
315
 
312
- const task = this._hookManager.startThreadRuntime(data.threadId);
316
+ const task = this._hookManager.startThreadRuntime(data.id);
313
317
  if (this.mainThreadId !== undefined) {
314
318
  await task;
315
319
  } else {
316
320
  task.then(() => this._notifySubscribers());
317
321
  }
318
322
 
319
- if (data.status === "archived") await this.unarchive(data.threadId);
320
- this._mainThreadId = data.threadId;
323
+ if (data.status === "archived") await this.unarchive(data.id);
324
+ this._mainThreadId = data.id;
321
325
 
322
326
  this._notifySubscribers();
323
327
  }
@@ -332,31 +336,34 @@ export class RemoteThreadListThreadListRuntimeCore
332
336
  }
333
337
 
334
338
  const state = this._state.value;
335
- let threadId: string | undefined = this._state.value.newThreadId;
336
- if (threadId === undefined) {
339
+ let id: string | undefined = this._state.value.newThreadId;
340
+ if (id === undefined) {
337
341
  do {
338
- threadId = `__LOCALID_${generateId()}`;
339
- } while (state.threadIdMap[threadId]);
342
+ id = `__LOCALID_${generateId()}`;
343
+ } while (state.threadIdMap[id]);
340
344
 
341
- const mappingId = createThreadMappingId(threadId);
345
+ const mappingId = createThreadMappingId(id);
342
346
  this._state.update({
343
347
  ...state,
344
- newThreadId: threadId,
348
+ newThreadId: id,
345
349
  threadIdMap: {
346
350
  ...state.threadIdMap,
347
- [threadId]: mappingId,
351
+ [id]: mappingId,
348
352
  },
349
353
  threadData: {
350
354
  ...state.threadData,
351
- [threadId]: {
355
+ [mappingId]: {
352
356
  status: "new",
353
- threadId,
354
- },
357
+ id,
358
+ remoteId: undefined,
359
+ externalId: undefined,
360
+ title: undefined,
361
+ } satisfies RemoteThreadData,
355
362
  },
356
363
  });
357
364
  }
358
365
 
359
- return this.switchToThread(threadId);
366
+ return this.switchToThread(id);
360
367
  }
361
368
 
362
369
  public initialize = async (threadId: string) => {
@@ -419,7 +426,7 @@ export class RemoteThreadListThreadListRuntimeCore
419
426
 
420
427
  const { remoteId } = await data.initializeTask;
421
428
 
422
- const runtimeCore = this._hookManager.getThreadRuntimeCore(data.threadId);
429
+ const runtimeCore = this._hookManager.getThreadRuntimeCore(data.id);
423
430
  if (!runtimeCore) return; // thread is no longer running
424
431
 
425
432
  const messages = runtimeCore.messages;
@@ -435,7 +442,7 @@ export class RemoteThreadListThreadListRuntimeCore
435
442
  ...state,
436
443
  threadData: {
437
444
  ...state.threadData,
438
- [data.threadId]: {
445
+ [data.id]: {
439
446
  ...data,
440
447
  title: newTitle,
441
448
  },
@@ -462,7 +469,7 @@ export class RemoteThreadListThreadListRuntimeCore
462
469
  ...state,
463
470
  threadData: {
464
471
  ...state.threadData,
465
- [data.threadId]: {
472
+ [data.id]: {
466
473
  ...data,
467
474
  title: newTitle,
468
475
  },
@@ -489,12 +496,12 @@ export class RemoteThreadListThreadListRuntimeCore
489
496
 
490
497
  return this._state.optimisticUpdate({
491
498
  execute: async () => {
492
- await this._ensureThreadIsNotMain(data.threadId);
499
+ await this._ensureThreadIsNotMain(data.id);
493
500
  const { remoteId } = await data.initializeTask;
494
501
  return this._options.adapter.archive(remoteId);
495
502
  },
496
503
  optimistic: (state) => {
497
- return updateStatusReducer(state, data.threadId, "archived");
504
+ return updateStatusReducer(state, data.id, "archived");
498
505
  },
499
506
  });
500
507
  }
@@ -510,12 +517,12 @@ export class RemoteThreadListThreadListRuntimeCore
510
517
  const { remoteId } = await data.initializeTask;
511
518
  return await this._options.adapter.unarchive(remoteId);
512
519
  } catch (error) {
513
- await this._ensureThreadIsNotMain(data.threadId);
520
+ await this._ensureThreadIsNotMain(data.id);
514
521
  throw error;
515
522
  }
516
523
  },
517
524
  optimistic: (state) => {
518
- return updateStatusReducer(state, data.threadId, "regular");
525
+ return updateStatusReducer(state, data.id, "regular");
519
526
  },
520
527
  });
521
528
  }
@@ -528,12 +535,12 @@ export class RemoteThreadListThreadListRuntimeCore
528
535
 
529
536
  return this._state.optimisticUpdate({
530
537
  execute: async () => {
531
- await this._ensureThreadIsNotMain(data.threadId);
538
+ await this._ensureThreadIsNotMain(data.id);
532
539
  const { remoteId } = await data.initializeTask;
533
540
  return await this._options.adapter.delete(remoteId);
534
541
  },
535
542
  optimistic: (state) => {
536
- return updateStatusReducer(state, data.threadId, "deleted");
543
+ return updateStatusReducer(state, data.id, "deleted");
537
544
  },
538
545
  });
539
546
  }
@@ -544,8 +551,8 @@ export class RemoteThreadListThreadListRuntimeCore
544
551
  if (data.status !== "regular" && data.status !== "archived")
545
552
  throw new Error("Thread is not yet initialized");
546
553
 
547
- await this._ensureThreadIsNotMain(data.threadId);
548
- this._hookManager.stopThreadRuntime(data.threadId);
554
+ await this._ensureThreadIsNotMain(data.id);
555
+ this._hookManager.stopThreadRuntime(data.id);
549
556
  }
550
557
 
551
558
  private useBoundIds = create<string[]>(() => []);
@@ -0,0 +1,92 @@
1
+ export type EventSource<
2
+ T extends keyof AssistantEvents = keyof AssistantEvents,
3
+ > = T extends `${infer Source}.${string}` ? Source : never;
4
+
5
+ type ScopeConfig = {
6
+ composer: "thread" | "message";
7
+ thread: never;
8
+ "thread-list-item": never;
9
+ };
10
+
11
+ export type SourceByScope<
12
+ TScope extends AssistantEventScope<keyof AssistantEvents>,
13
+ > =
14
+ | (TScope extends "*" ? EventSource : never)
15
+ | (TScope extends keyof ScopeConfig ? TScope : never)
16
+ | {
17
+ [K in keyof ScopeConfig]: TScope extends ScopeConfig[K] ? K : never;
18
+ }[keyof ScopeConfig];
19
+
20
+ export type AssistantEventScope<TEvent extends keyof AssistantEvents> =
21
+ | "*"
22
+ | EventSource<TEvent>
23
+ | ScopeConfig[EventSource<TEvent>];
24
+
25
+ export type AssistantEventSelector<TEvent extends keyof AssistantEvents> =
26
+ | TEvent
27
+ | {
28
+ scope: AssistantEventScope<TEvent>;
29
+ event: TEvent;
30
+ };
31
+
32
+ export type AssistantEvents = {
33
+ // Thread events (from ThreadRuntimeEventType)
34
+ "thread.run-start": {
35
+ threadId: string;
36
+ };
37
+ "thread.run-end": {
38
+ threadId: string;
39
+ };
40
+ "thread.initialize": {
41
+ threadId: string;
42
+ };
43
+ "thread.model-context-update": {
44
+ threadId: string;
45
+ };
46
+
47
+ // Composer events (from ComposerRuntimeEventType)
48
+ "composer.send": {
49
+ threadId: string;
50
+ messageId?: string;
51
+ };
52
+ "composer.attachment-add": {
53
+ threadId: string;
54
+ messageId?: string;
55
+ };
56
+
57
+ // Thread list item events (from ThreadListItemEventType)
58
+ "thread-list-item.switched-to": {
59
+ threadId: string;
60
+ };
61
+ "thread-list-item.switched-away": {
62
+ threadId: string;
63
+ };
64
+ };
65
+
66
+ export const normalizeEventSelector = <TEvent extends keyof AssistantEvents>(
67
+ selector: AssistantEventSelector<TEvent>,
68
+ ) => {
69
+ if (typeof selector === "string") {
70
+ const source = selector.split(".")[0] as AssistantEventScope<TEvent>;
71
+ return {
72
+ scope: source,
73
+ event: selector,
74
+ };
75
+ }
76
+
77
+ return {
78
+ scope: selector.scope,
79
+ event: selector.event,
80
+ };
81
+ };
82
+
83
+ export const checkEventScope = <
84
+ TEvent extends keyof AssistantEvents,
85
+ TExpectedScope extends AssistantEventScope<keyof AssistantEvents>,
86
+ >(
87
+ expectedScope: TExpectedScope,
88
+ scope: AssistantEventScope<TEvent>,
89
+ _event: TEvent,
90
+ ): _event is Extract<TEvent, `${SourceByScope<TExpectedScope>}.${string}`> => {
91
+ return scope === expectedScope;
92
+ };
@@ -91,3 +91,9 @@ export type {
91
91
  export type { ThreadListItemStatus } from "../api/ThreadListItemRuntime";
92
92
 
93
93
  export type { Unsubscribe } from "./Unsubscribe";
94
+
95
+ export type {
96
+ AssistantEventScope,
97
+ AssistantEventSelector,
98
+ AssistantEvents,
99
+ } from "./EventTypes";
@@ -15,7 +15,7 @@ import {
15
15
  MessagePartStatus,
16
16
  ToolCallMessagePartStatus,
17
17
  } from "../../types/AssistantTypes";
18
- import { useMessagePartRuntime } from "../../context/react/MessagePartContext";
18
+ import { useAssistantApi } from "../../context";
19
19
  import { createContextStoreHook } from "../../context/react/utils/createContextStoreHook";
20
20
 
21
21
  type SmoothContextValue = {
@@ -35,10 +35,10 @@ const makeSmoothContext = (
35
35
 
36
36
  export const SmoothContextProvider: FC<PropsWithChildren> = ({ children }) => {
37
37
  const outer = useSmoothContext({ optional: true });
38
- const MessagePartRuntime = useMessagePartRuntime();
38
+ const api = useAssistantApi();
39
39
 
40
40
  const [context] = useState(() =>
41
- makeSmoothContext(MessagePartRuntime.getState().status),
41
+ makeSmoothContext(api.part().getState().status),
42
42
  );
43
43
 
44
44
  // do not wrap if there is an outer SmoothContextProvider
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
 
3
3
  import { useEffect, useMemo, useRef, useState } from "react";
4
- import { useMessage } from "../../context";
4
+ import { useAssistantState } from "../../context";
5
5
  import {
6
6
  MessagePartStatus,
7
7
  ReasoningMessagePart,
@@ -75,10 +75,7 @@ export const useSmooth = (
75
75
  smooth: boolean = false,
76
76
  ): MessagePartState & (TextMessagePart | ReasoningMessagePart) => {
77
77
  const { text } = state;
78
- const id = useMessage({
79
- optional: true,
80
- selector: (m: { id: string }) => m.id,
81
- });
78
+ const id = useAssistantState(({ message }) => message.id);
82
79
 
83
80
  const idRef = useRef(id);
84
81
  const [displayedText, setDisplayedText] = useState(text);
@@ -0,0 +1,2 @@
1
+ export { type Store, asStore } from "./store";
2
+ export { tapApi, type ActionsObject } from "./tap-store-api";
@@ -0,0 +1,51 @@
1
+ import {
2
+ tapMemo,
3
+ tapEffect,
4
+ ResourceElement,
5
+ resource,
6
+ createResource,
7
+ Unsubscribe,
8
+ } from "@assistant-ui/tap";
9
+ import { StoreApi } from "./tap-store-api";
10
+
11
+ export interface Store<TState, TActions> {
12
+ getApi(): StoreApi<TState, TActions>;
13
+
14
+ /**
15
+ * Subscribe to the store.
16
+ */
17
+ subscribe(listener: () => void): Unsubscribe;
18
+
19
+ /**
20
+ * Synchronously flush all the updates to the store.
21
+ */
22
+ flushSync(): void;
23
+ }
24
+
25
+ export const asStore = resource(
26
+ <TState, TActions, TProps>(
27
+ element: ResourceElement<
28
+ {
29
+ api: StoreApi<TState, TActions>;
30
+ },
31
+ TProps
32
+ >,
33
+ ): Store<TState, TActions> => {
34
+ const resource = tapMemo(
35
+ () => createResource(element, true),
36
+ [element.type],
37
+ );
38
+
39
+ tapEffect(() => {
40
+ resource.updateInput(element.props);
41
+ });
42
+
43
+ return tapMemo<Store<TState, TActions>>(() => {
44
+ return {
45
+ getApi: () => resource.getState().api,
46
+ subscribe: resource.subscribe,
47
+ flushSync: resource.flushSync,
48
+ };
49
+ }, [resource]);
50
+ },
51
+ );
@@ -0,0 +1,75 @@
1
+ import { tapEffect, tapMemo, tapRef } from "@assistant-ui/tap";
2
+
3
+ export interface ActionsObject {
4
+ [key: string]: ((...args: any[]) => any) | ActionsObject;
5
+ }
6
+
7
+ export type StoreApi<TState, TActions> = TActions & {
8
+ getState(): TState;
9
+ };
10
+
11
+ class ReadonlyStoreApiHandler<TState, TActions>
12
+ implements ProxyHandler<StoreApi<TState, TActions>>
13
+ {
14
+ constructor(
15
+ private readonly getState: () => TState,
16
+ private readonly getActions: () => TActions,
17
+ ) {}
18
+
19
+ get(_: unknown, prop: string | symbol) {
20
+ if (prop === "getState") return this.getState;
21
+ return this.getActions()[prop as keyof TActions];
22
+ }
23
+
24
+ ownKeys(): ArrayLike<string | symbol> {
25
+ return ["getState", ...Object.keys(this.getActions() as object)];
26
+ }
27
+
28
+ has(_: unknown, prop: string | symbol) {
29
+ if (prop === "getState") return true;
30
+ return prop in (this.getActions() as object);
31
+ }
32
+
33
+ getOwnPropertyDescriptor(_: unknown, prop: string | symbol) {
34
+ if (prop === "getState")
35
+ return {
36
+ enumerable: true,
37
+ configurable: false,
38
+ get: this.getState,
39
+ };
40
+
41
+ return Object.getOwnPropertyDescriptor(this.getActions(), prop);
42
+ }
43
+
44
+ set() {
45
+ return false;
46
+ }
47
+ defineProperty() {
48
+ return false;
49
+ }
50
+ deleteProperty() {
51
+ return false;
52
+ }
53
+ }
54
+
55
+ export const tapApi = <TState, TActions extends ActionsObject>(
56
+ state: TState,
57
+ actions: TActions,
58
+ ) => {
59
+ const ref = tapRef(() => ({ state, actions }));
60
+ tapEffect(() => {
61
+ ref.current = { state, actions };
62
+ });
63
+
64
+ return tapMemo(
65
+ () =>
66
+ new Proxy<StoreApi<TState, TActions>>(
67
+ {} as StoreApi<TState, TActions>,
68
+ new ReadonlyStoreApiHandler(
69
+ () => ref.current.state,
70
+ () => ref.current.actions,
71
+ ),
72
+ ),
73
+ [],
74
+ );
75
+ };
@@ -1,18 +1,18 @@
1
1
  import { getPartialJsonObjectFieldState } from "assistant-stream/utils";
2
- import { useMessagePart } from "../context";
2
+ import { useAssistantState } from "../context";
3
3
 
4
4
  const COMPLETE_STATUS = { type: "complete" };
5
5
 
6
6
  export const useToolArgsFieldStatus = (fieldPath: (string | number)[]) => {
7
- return useMessagePart((t) => {
8
- if (t.type !== "tool-call")
7
+ return useAssistantState(({ part }) => {
8
+ if (part.type !== "tool-call")
9
9
  throw new Error(
10
10
  "useToolArgsFieldStatus can only be used inside tool-call message parts",
11
11
  );
12
12
 
13
- const state = getPartialJsonObjectFieldState(t.args, fieldPath);
14
- if (state === "complete" || t.status.type === "requires-action")
13
+ const state = getPartialJsonObjectFieldState(part.args, fieldPath);
14
+ if (state === "complete" || part.status?.type === "requires-action")
15
15
  return COMPLETE_STATUS;
16
- return t.status;
16
+ return part.status;
17
17
  });
18
18
  };
@@ -1,9 +0,0 @@
1
- import { type FC, type PropsWithChildren } from "react";
2
- import { AttachmentRuntime } from "../../api/AttachmentRuntime";
3
- export declare namespace AttachmentRuntimeProvider {
4
- type Props = PropsWithChildren<{
5
- runtime: AttachmentRuntime;
6
- }>;
7
- }
8
- export declare const AttachmentRuntimeProvider: FC<AttachmentRuntimeProvider.Props>;
9
- //# sourceMappingURL=AttachmentRuntimeProvider.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AttachmentRuntimeProvider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/AttachmentRuntimeProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAuB,MAAM,OAAO,CAAC;AAI7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,yBAAiB,yBAAyB,CAAC;IACzC,KAAY,KAAK,GAAG,iBAAiB,CAAC;QACpC,OAAO,EAAE,iBAAiB,CAAC;KAC5B,CAAC,CAAC;CACJ;AAcD,eAAO,MAAM,yBAAyB,EAAE,EAAE,CAAC,yBAAyB,CAAC,KAAK,CAgBzE,CAAC"}