@assistant-ui/react 0.10.49 → 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 (542) 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/RuntimeAdapterProvider.d.ts +2 -0
  279. package/dist/runtimes/adapters/RuntimeAdapterProvider.d.ts.map +1 -1
  280. package/dist/runtimes/adapters/RuntimeAdapterProvider.js.map +1 -1
  281. package/dist/runtimes/adapters/attachment/CloudFileAttachmentAdapter.d.ts +15 -0
  282. package/dist/runtimes/adapters/attachment/CloudFileAttachmentAdapter.d.ts.map +1 -0
  283. package/dist/runtimes/adapters/attachment/CloudFileAttachmentAdapter.js +83 -0
  284. package/dist/runtimes/adapters/attachment/CloudFileAttachmentAdapter.js.map +1 -0
  285. package/dist/runtimes/adapters/attachment/index.d.ts +1 -0
  286. package/dist/runtimes/adapters/attachment/index.d.ts.map +1 -1
  287. package/dist/runtimes/adapters/attachment/index.js +2 -0
  288. package/dist/runtimes/adapters/attachment/index.js.map +1 -1
  289. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts +1 -1
  290. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
  291. package/dist/runtimes/composer/BaseComposerRuntimeCore.js +3 -3
  292. package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
  293. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +1 -1
  294. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
  295. package/dist/runtimes/core/BaseThreadRuntimeCore.js +5 -1
  296. package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
  297. package/dist/runtimes/core/ComposerRuntimeCore.d.ts +2 -2
  298. package/dist/runtimes/core/ComposerRuntimeCore.d.ts.map +1 -1
  299. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +5 -5
  300. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
  301. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +5 -2
  302. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
  303. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +6 -4
  304. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
  305. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +42 -7
  306. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
  307. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
  308. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +3 -0
  309. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
  310. package/dist/runtimes/external-store/createMessageConverter.d.ts +2 -2
  311. package/dist/runtimes/external-store/createMessageConverter.d.ts.map +1 -1
  312. package/dist/runtimes/external-store/createMessageConverter.js +9 -6
  313. package/dist/runtimes/external-store/createMessageConverter.js.map +1 -1
  314. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +10 -1
  315. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
  316. package/dist/runtimes/local/LocalThreadListRuntimeCore.js +15 -2
  317. package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
  318. package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.d.ts.map +1 -1
  319. package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js +3 -5
  320. package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js.map +1 -1
  321. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  322. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js +13 -19
  323. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -1
  324. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +11 -7
  325. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  326. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +41 -35
  327. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  328. package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts.map +1 -1
  329. package/dist/runtimes/remote-thread-list/adapter/cloud.js +14 -1
  330. package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -1
  331. package/dist/tests/setup.js +8 -8
  332. package/dist/tests/setup.js.map +1 -1
  333. package/dist/types/EventTypes.d.ts +49 -0
  334. package/dist/types/EventTypes.d.ts.map +1 -0
  335. package/dist/types/EventTypes.js +22 -0
  336. package/dist/types/EventTypes.js.map +1 -0
  337. package/dist/types/index.d.ts +1 -0
  338. package/dist/types/index.d.ts.map +1 -1
  339. package/dist/utils/smooth/SmoothContext.js +3 -3
  340. package/dist/utils/smooth/SmoothContext.js.map +1 -1
  341. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  342. package/dist/utils/smooth/useSmooth.js +2 -5
  343. package/dist/utils/smooth/useSmooth.js.map +1 -1
  344. package/dist/utils/tap-store/index.d.ts +3 -0
  345. package/dist/utils/tap-store/index.d.ts.map +1 -0
  346. package/dist/utils/tap-store/index.js +8 -0
  347. package/dist/utils/tap-store/index.js.map +1 -0
  348. package/dist/utils/tap-store/store.d.ts +21 -0
  349. package/dist/utils/tap-store/store.d.ts.map +1 -0
  350. package/dist/utils/tap-store/store.js +29 -0
  351. package/dist/utils/tap-store/store.js.map +1 -0
  352. package/dist/utils/tap-store/tap-store-api.d.ts +8 -0
  353. package/dist/utils/tap-store/tap-store-api.d.ts.map +1 -0
  354. package/dist/utils/tap-store/tap-store-api.js +57 -0
  355. package/dist/utils/tap-store/tap-store-api.js.map +1 -0
  356. package/dist/utils/useToolArgsFieldStatus.js +6 -6
  357. package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
  358. package/package.json +2 -1
  359. package/src/api/AttachmentRuntime.ts +3 -1
  360. package/src/api/ComposerRuntime.ts +16 -9
  361. package/src/api/MessagePartRuntime.ts +3 -1
  362. package/src/api/MessageRuntime.ts +2 -0
  363. package/src/api/ThreadListItemRuntime.ts +11 -1
  364. package/src/api/ThreadListRuntime.ts +9 -9
  365. package/src/api/ThreadRuntime.ts +9 -7
  366. package/src/client/AssistantRuntimeClient.ts +197 -0
  367. package/src/client/AttachmentClient.ts +11 -0
  368. package/src/client/ComposerClient.ts +133 -0
  369. package/src/client/EventManagerClient.ts +63 -0
  370. package/src/client/MessageClient.ts +196 -0
  371. package/src/client/MessagePartClient.ts +53 -0
  372. package/src/client/ThreadClient.ts +280 -0
  373. package/src/client/ThreadListClient.ts +135 -0
  374. package/src/client/ThreadListItemClient.ts +88 -0
  375. package/src/client/util-hooks/tapLookupResources.ts +31 -0
  376. package/src/client/util-hooks/tapSubscribable.ts +16 -0
  377. package/src/cloud/AssistantCloudThreadHistoryAdapter.tsx +24 -13
  378. package/src/context/providers/AssistantRuntimeProvider.tsx +27 -51
  379. package/src/context/providers/AttachmentProvider.tsx +48 -0
  380. package/src/context/providers/MessageProvider.tsx +57 -0
  381. package/src/context/providers/PartProvider.tsx +28 -0
  382. package/src/context/providers/TextMessagePartProvider.tsx +53 -78
  383. package/src/context/providers/ThreadListItemProvider.tsx +84 -0
  384. package/src/context/providers/index.ts +10 -3
  385. package/src/context/react/AssistantApiContext.tsx +392 -0
  386. package/src/context/react/index.ts +30 -37
  387. package/src/context/react/{AssistantContext.ts → legacy/AssistantContext.ts} +12 -31
  388. package/src/context/react/{AttachmentContext.ts → legacy/AttachmentContext.ts} +11 -22
  389. package/src/context/react/{ComposerContext.ts → legacy/ComposerContext.ts} +11 -9
  390. package/src/context/react/{MessageContext.ts → legacy/MessageContext.ts} +12 -29
  391. package/src/context/react/legacy/MessagePartContext.ts +24 -0
  392. package/src/context/react/{ThreadContext.ts → legacy/ThreadContext.ts} +15 -25
  393. package/src/context/react/legacy/ThreadListItemContext.ts +28 -0
  394. package/src/context/stores/index.ts +0 -2
  395. package/src/hooks/useAssistantEvent.ts +24 -0
  396. package/src/model-context/makeAssistantVisible.tsx +4 -4
  397. package/src/model-context/useAssistantInstructions.tsx +4 -4
  398. package/src/model-context/useAssistantTool.tsx +7 -12
  399. package/src/model-context/useAssistantToolUI.tsx +5 -5
  400. package/src/primitives/actionBar/ActionBarCopy.tsx +14 -20
  401. package/src/primitives/actionBar/ActionBarEdit.tsx +5 -5
  402. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +6 -7
  403. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +6 -6
  404. package/src/primitives/actionBar/ActionBarReload.tsx +9 -10
  405. package/src/primitives/actionBar/ActionBarSpeak.tsx +7 -7
  406. package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +5 -8
  407. package/src/primitives/actionBar/useActionBarFloatStatus.tsx +22 -34
  408. package/src/primitives/assistantModal/AssistantModalRoot.tsx +4 -4
  409. package/src/primitives/attachment/AttachmentName.tsx +2 -2
  410. package/src/primitives/attachment/AttachmentRemove.tsx +4 -4
  411. package/src/primitives/attachment/AttachmentThumb.tsx +5 -2
  412. package/src/primitives/branchPicker/BranchPickerCount.tsx +2 -2
  413. package/src/primitives/branchPicker/BranchPickerNext.tsx +7 -8
  414. package/src/primitives/branchPicker/BranchPickerNumber.tsx +2 -2
  415. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +7 -8
  416. package/src/primitives/composer/ComposerAddAttachment.tsx +6 -6
  417. package/src/primitives/composer/ComposerAttachmentDropzone.tsx +4 -4
  418. package/src/primitives/composer/ComposerAttachments.tsx +12 -15
  419. package/src/primitives/composer/ComposerCancel.tsx +5 -5
  420. package/src/primitives/composer/ComposerIf.tsx +2 -2
  421. package/src/primitives/composer/ComposerInput.tsx +32 -32
  422. package/src/primitives/composer/ComposerSend.tsx +6 -10
  423. package/src/primitives/error/ErrorMessage.tsx +5 -4
  424. package/src/primitives/message/MessageAttachments.tsx +10 -13
  425. package/src/primitives/message/MessageError.tsx +5 -3
  426. package/src/primitives/message/MessageIf.tsx +43 -52
  427. package/src/primitives/message/MessageParts.tsx +26 -31
  428. package/src/primitives/message/MessagePartsGrouped.tsx +25 -30
  429. package/src/primitives/message/MessageRoot.tsx +10 -8
  430. package/src/primitives/messagePart/MessagePartInProgress.tsx +4 -2
  431. package/src/primitives/messagePart/useMessagePartFile.tsx +4 -4
  432. package/src/primitives/messagePart/useMessagePartImage.tsx +4 -4
  433. package/src/primitives/messagePart/useMessagePartReasoning.tsx +4 -4
  434. package/src/primitives/messagePart/useMessagePartSource.tsx +4 -4
  435. package/src/primitives/messagePart/useMessagePartText.tsx +4 -4
  436. package/src/primitives/thread/ThreadEmpty.tsx +2 -2
  437. package/src/primitives/thread/ThreadIf.tsx +2 -2
  438. package/src/primitives/thread/ThreadMessages.tsx +10 -14
  439. package/src/primitives/thread/ThreadSuggestion.tsx +8 -8
  440. package/src/primitives/thread/useThreadViewportAutoScroll.tsx +3 -6
  441. package/src/primitives/threadList/ThreadListItems.tsx +8 -15
  442. package/src/primitives/threadList/ThreadListNew.tsx +9 -13
  443. package/src/primitives/threadListItem/ThreadListItemArchive.ts +4 -4
  444. package/src/primitives/threadListItem/ThreadListItemDelete.ts +6 -5
  445. package/src/primitives/threadListItem/ThreadListItemRoot.tsx +4 -2
  446. package/src/primitives/threadListItem/ThreadListItemTitle.tsx +2 -2
  447. package/src/primitives/threadListItem/ThreadListItemTrigger.ts +6 -5
  448. package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +6 -5
  449. package/src/runtimes/adapters/RuntimeAdapterProvider.tsx +2 -0
  450. package/src/runtimes/adapters/attachment/CloudFileAttachmentAdapter.ts +101 -0
  451. package/src/runtimes/adapters/attachment/index.ts +1 -0
  452. package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +3 -3
  453. package/src/runtimes/core/BaseThreadRuntimeCore.tsx +5 -1
  454. package/src/runtimes/core/ComposerRuntimeCore.tsx +2 -2
  455. package/src/runtimes/core/ThreadListRuntimeCore.tsx +6 -4
  456. package/src/runtimes/external-store/ExternalStoreAdapter.tsx +5 -2
  457. package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +53 -12
  458. package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +4 -0
  459. package/src/runtimes/external-store/createMessageConverter.tsx +10 -6
  460. package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +16 -2
  461. package/src/runtimes/remote-thread-list/EMPTY_THREAD_CORE.tsx +3 -6
  462. package/src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +14 -19
  463. package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +50 -43
  464. package/src/runtimes/remote-thread-list/adapter/cloud.tsx +16 -1
  465. package/src/types/EventTypes.ts +92 -0
  466. package/src/types/index.ts +6 -0
  467. package/src/utils/smooth/SmoothContext.tsx +3 -3
  468. package/src/utils/smooth/useSmooth.tsx +2 -5
  469. package/src/utils/tap-store/index.ts +2 -0
  470. package/src/utils/tap-store/store.ts +51 -0
  471. package/src/utils/tap-store/tap-store-api.ts +75 -0
  472. package/src/utils/useToolArgsFieldStatus.tsx +6 -6
  473. package/dist/context/providers/AttachmentRuntimeProvider.d.ts +0 -9
  474. package/dist/context/providers/AttachmentRuntimeProvider.d.ts.map +0 -1
  475. package/dist/context/providers/AttachmentRuntimeProvider.js +0 -33
  476. package/dist/context/providers/AttachmentRuntimeProvider.js.map +0 -1
  477. package/dist/context/providers/MessagePartRuntimeProvider.d.ts +0 -9
  478. package/dist/context/providers/MessagePartRuntimeProvider.d.ts.map +0 -1
  479. package/dist/context/providers/MessagePartRuntimeProvider.js +0 -28
  480. package/dist/context/providers/MessagePartRuntimeProvider.js.map +0 -1
  481. package/dist/context/providers/MessageRuntimeProvider.d.ts +0 -9
  482. package/dist/context/providers/MessageRuntimeProvider.d.ts.map +0 -1
  483. package/dist/context/providers/MessageRuntimeProvider.js +0 -37
  484. package/dist/context/providers/MessageRuntimeProvider.js.map +0 -1
  485. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts +0 -9
  486. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts.map +0 -1
  487. package/dist/context/providers/ThreadListItemRuntimeProvider.js +0 -30
  488. package/dist/context/providers/ThreadListItemRuntimeProvider.js.map +0 -1
  489. package/dist/context/providers/ThreadRuntimeProvider.d.ts +0 -10
  490. package/dist/context/providers/ThreadRuntimeProvider.d.ts.map +0 -1
  491. package/dist/context/providers/ThreadRuntimeProvider.js +0 -33
  492. package/dist/context/providers/ThreadRuntimeProvider.js.map +0 -1
  493. package/dist/context/react/AssistantContext.d.ts +0 -85
  494. package/dist/context/react/AssistantContext.d.ts.map +0 -1
  495. package/dist/context/react/AssistantContext.js +0 -34
  496. package/dist/context/react/AssistantContext.js.map +0 -1
  497. package/dist/context/react/AttachmentContext.d.ts.map +0 -1
  498. package/dist/context/react/AttachmentContext.js.map +0 -1
  499. package/dist/context/react/ComposerContext.d.ts.map +0 -1
  500. package/dist/context/react/ComposerContext.js +0 -17
  501. package/dist/context/react/ComposerContext.js.map +0 -1
  502. package/dist/context/react/MessageContext.d.ts.map +0 -1
  503. package/dist/context/react/MessageContext.js +0 -35
  504. package/dist/context/react/MessageContext.js.map +0 -1
  505. package/dist/context/react/MessagePartContext.d.ts +0 -41
  506. package/dist/context/react/MessagePartContext.d.ts.map +0 -1
  507. package/dist/context/react/MessagePartContext.js +0 -25
  508. package/dist/context/react/MessagePartContext.js.map +0 -1
  509. package/dist/context/react/ThreadContext.d.ts.map +0 -1
  510. package/dist/context/react/ThreadContext.js +0 -38
  511. package/dist/context/react/ThreadContext.js.map +0 -1
  512. package/dist/context/react/ThreadListItemContext.d.ts +0 -41
  513. package/dist/context/react/ThreadListItemContext.d.ts.map +0 -1
  514. package/dist/context/react/ThreadListItemContext.js +0 -25
  515. package/dist/context/react/ThreadListItemContext.js.map +0 -1
  516. package/dist/context/stores/AssistantToolUIs.d.ts +0 -14
  517. package/dist/context/stores/AssistantToolUIs.d.ts.map +0 -1
  518. package/dist/context/stores/AssistantToolUIs.js +0 -35
  519. package/dist/context/stores/AssistantToolUIs.js.map +0 -1
  520. package/dist/context/stores/MessageUtils.d.ts +0 -8
  521. package/dist/context/stores/MessageUtils.d.ts.map +0 -1
  522. package/dist/context/stores/MessageUtils.js +0 -18
  523. package/dist/context/stores/MessageUtils.js.map +0 -1
  524. package/dist/utils/combined/createCombinedStore.d.ts +0 -8
  525. package/dist/utils/combined/createCombinedStore.d.ts.map +0 -1
  526. package/dist/utils/combined/createCombinedStore.js +0 -22
  527. package/dist/utils/combined/createCombinedStore.js.map +0 -1
  528. package/dist/utils/combined/useCombinedStore.d.ts +0 -3
  529. package/dist/utils/combined/useCombinedStore.d.ts.map +0 -1
  530. package/dist/utils/combined/useCombinedStore.js +0 -15
  531. package/dist/utils/combined/useCombinedStore.js.map +0 -1
  532. package/src/context/providers/AttachmentRuntimeProvider.tsx +0 -44
  533. package/src/context/providers/MessagePartRuntimeProvider.tsx +0 -42
  534. package/src/context/providers/MessageRuntimeProvider.tsx +0 -50
  535. package/src/context/providers/ThreadListItemRuntimeProvider.tsx +0 -43
  536. package/src/context/providers/ThreadRuntimeProvider.tsx +0 -53
  537. package/src/context/react/MessagePartContext.ts +0 -37
  538. package/src/context/react/ThreadListItemContext.ts +0 -38
  539. package/src/context/stores/AssistantToolUIs.ts +0 -51
  540. package/src/context/stores/MessageUtils.ts +0 -23
  541. package/src/utils/combined/createCombinedStore.ts +0 -31
  542. package/src/utils/combined/useCombinedStore.ts +0 -17
@@ -22,13 +22,14 @@ export type ThreadListState = {
22
22
  readonly threads: readonly string[];
23
23
  readonly archivedThreads: readonly string[];
24
24
  readonly isLoading: boolean;
25
+ readonly threadItems: Readonly<
26
+ Record<string, Omit<ThreadListItemState, "isMain" | "threadId">>
27
+ >;
25
28
  };
26
29
 
27
30
  export type ThreadListRuntime = {
28
31
  getState(): ThreadListState;
29
32
 
30
- readonly isLoading: boolean;
31
-
32
33
  subscribe(callback: () => void): Unsubscribe;
33
34
 
34
35
  readonly main: ThreadRuntime;
@@ -52,6 +53,7 @@ const getThreadListState = (
52
53
  threads: threadList.threadIds,
53
54
  archivedThreads: threadList.archivedThreadIds,
54
55
  isLoading: threadList.isLoading,
56
+ threadItems: threadList.threadData,
55
57
  };
56
58
  };
57
59
 
@@ -64,13 +66,13 @@ const getThreadListItemState = (
64
66
  const threadData = threadList.getItemById(threadId);
65
67
  if (!threadData) return SKIP_UPDATE;
66
68
  return {
67
- id: threadData.threadId,
68
- threadId: threadData.threadId, // TODO remove in 0.8.0
69
+ id: threadData.id,
70
+ threadId: threadData.id, // TODO remove in 0.8.0
69
71
  remoteId: threadData.remoteId,
70
72
  externalId: threadData.externalId,
71
73
  title: threadData.title,
72
74
  status: threadData.status,
73
- isMain: threadData.threadId === threadList.mainThreadId,
75
+ isMain: threadData.id === threadList.mainThreadId,
74
76
  };
75
77
  };
76
78
 
@@ -118,6 +120,8 @@ export class ThreadListRuntimeImpl implements ThreadListRuntime {
118
120
  }),
119
121
  this._mainThreadListItemRuntime, // TODO capture "main" threadListItem from context around useLocalRuntime / useExternalStoreRuntime
120
122
  );
123
+
124
+ this.__internal_bindMethods();
121
125
  }
122
126
 
123
127
  protected __internal_bindMethods() {
@@ -143,10 +147,6 @@ export class ThreadListRuntimeImpl implements ThreadListRuntime {
143
147
  return this._getState();
144
148
  }
145
149
 
146
- public get isLoading() {
147
- return this._core.isLoading;
148
- }
149
-
150
150
  public subscribe(callback: () => void): Unsubscribe {
151
151
  return this._core.subscribe(callback);
152
152
  }
@@ -275,13 +275,13 @@ export type ThreadRuntime = {
275
275
  */
276
276
  reset(initialMessages?: readonly ThreadMessageLike[]): void;
277
277
 
278
- getMesssageByIndex(idx: number): MessageRuntime;
279
- getMesssageById(messageId: string): MessageRuntime;
278
+ getMessageByIndex(idx: number): MessageRuntime;
279
+ getMessageById(messageId: string): MessageRuntime;
280
280
 
281
281
  /**
282
282
  * @deprecated This API is still under active development and might change without notice.
283
283
  */
284
- stopSpeaking: () => void;
284
+ stopSpeaking(): void;
285
285
 
286
286
  unstable_on(event: ThreadRuntimeEventType, callback: () => void): Unsubscribe;
287
287
  };
@@ -339,6 +339,8 @@ export class ThreadRuntimeImpl implements ThreadRuntime {
339
339
  subscribe: (callback) => this._threadBinding.subscribe(callback),
340
340
  }),
341
341
  );
342
+
343
+ this.__internal_bindMethods();
342
344
  }
343
345
 
344
346
  protected __internal_bindMethods() {
@@ -350,8 +352,8 @@ export class ThreadRuntimeImpl implements ThreadRuntime {
350
352
  this.export = this.export.bind(this);
351
353
  this.import = this.import.bind(this);
352
354
  this.reset = this.reset.bind(this);
353
- this.getMesssageByIndex = this.getMesssageByIndex.bind(this);
354
- this.getMesssageById = this.getMesssageById.bind(this);
355
+ this.getMessageByIndex = this.getMessageByIndex.bind(this);
356
+ this.getMessageById = this.getMessageById.bind(this);
355
357
  this.subscribe = this.subscribe.bind(this);
356
358
  this.unstable_on = this.unstable_on.bind(this);
357
359
  this.getModelContext = this.getModelContext.bind(this);
@@ -417,7 +419,7 @@ export class ThreadRuntimeImpl implements ThreadRuntime {
417
419
  this._threadBinding.getState().reset(initialMessages);
418
420
  }
419
421
 
420
- public getMesssageByIndex(idx: number) {
422
+ public getMessageByIndex(idx: number) {
421
423
  if (idx < 0) throw new Error("Message index must be >= 0");
422
424
 
423
425
  return this._getMessageRuntime(
@@ -438,7 +440,7 @@ export class ThreadRuntimeImpl implements ThreadRuntime {
438
440
  );
439
441
  }
440
442
 
441
- public getMesssageById(messageId: string) {
443
+ public getMessageById(messageId: string) {
442
444
  return this._getMessageRuntime(
443
445
  {
444
446
  ...this.path,
@@ -0,0 +1,197 @@
1
+ import {
2
+ tapMemo,
3
+ resource,
4
+ tapState,
5
+ Unsubscribe,
6
+ tapInlineResource,
7
+ } from "@assistant-ui/tap";
8
+ import { ThreadListClientState } from "./ThreadListClient";
9
+ import { ThreadListClientActions } from "./ThreadListClient";
10
+ import { AssistantRuntime } from "../api/AssistantRuntime";
11
+ import { ThreadListClient } from "./ThreadListClient";
12
+ import { ModelContextProvider } from "../model-context";
13
+ import { asStore, Store, tapApi } from "../utils/tap-store";
14
+ import { useResource } from "@assistant-ui/tap/react";
15
+ import { ToolCallMessagePartComponent } from "../types/MessagePartComponentTypes";
16
+ import { StoreApi } from "../utils/tap-store/tap-store-api";
17
+ import { useMemo } from "react";
18
+ import {
19
+ AssistantEventSelector,
20
+ AssistantEvents,
21
+ checkEventScope,
22
+ normalizeEventSelector,
23
+ } from "../types/EventTypes";
24
+ import { EventManagerClient } from "./EventManagerClient";
25
+ import {
26
+ AssistantApi,
27
+ createAssistantApiField,
28
+ } from "../context/react/AssistantApiContext";
29
+
30
+ export type AssistantToolUIState = Record<
31
+ string,
32
+ ToolCallMessagePartComponent[]
33
+ >;
34
+ export type AssistantToolUIActions = {
35
+ setToolUI(
36
+ toolName: string,
37
+ render: ToolCallMessagePartComponent,
38
+ ): Unsubscribe;
39
+ };
40
+
41
+ export const AssistantToolUIClient = resource(() => {
42
+ const [state, setState] = tapState<AssistantToolUIState>(() => ({}));
43
+
44
+ const api = tapApi<AssistantToolUIState, AssistantToolUIActions>(state, {
45
+ setToolUI: (toolName, render) => {
46
+ setState((prev) => {
47
+ return {
48
+ ...prev,
49
+ [toolName]: [...(prev[toolName] ?? []), render],
50
+ };
51
+ });
52
+
53
+ return () => {
54
+ setState((prev) => {
55
+ return {
56
+ ...prev,
57
+ [toolName]: prev[toolName]?.filter((r) => r !== render) ?? [],
58
+ };
59
+ });
60
+ };
61
+ },
62
+ });
63
+
64
+ return {
65
+ state,
66
+ api,
67
+ };
68
+ });
69
+
70
+ export type AssistantClientState = {
71
+ readonly threads: ThreadListClientState;
72
+ readonly toolUIs: AssistantToolUIState;
73
+ };
74
+
75
+ export type AssistantClientActions = {
76
+ readonly threads: StoreApi<ThreadListClientState, ThreadListClientActions>;
77
+ readonly toolUIs: StoreApi<AssistantToolUIState, AssistantToolUIActions>;
78
+
79
+ on<TEvent extends keyof AssistantEvents>(
80
+ event: keyof AssistantEvents,
81
+ callback: (e: AssistantEvents[TEvent]) => void,
82
+ ): Unsubscribe;
83
+
84
+ registerModelContextProvider(provider: ModelContextProvider): Unsubscribe;
85
+ /** @internal */
86
+ __internal_getRuntime(): AssistantRuntime | null;
87
+ };
88
+
89
+ export type AssistantClient = Store<
90
+ AssistantClientState,
91
+ AssistantClientActions
92
+ >;
93
+
94
+ export const AssistantClient = resource(
95
+ ({ runtime }: { runtime: AssistantRuntime }) => {
96
+ const events = tapInlineResource(EventManagerClient());
97
+
98
+ const threads = tapInlineResource(
99
+ ThreadListClient({
100
+ runtime: runtime.threads,
101
+ events,
102
+ }),
103
+ );
104
+ const toolUIs = tapInlineResource(AssistantToolUIClient());
105
+
106
+ const state = tapMemo<AssistantClientState>(() => {
107
+ return {
108
+ threads: threads.state,
109
+ toolUIs: toolUIs.state,
110
+ };
111
+ }, [threads.state, toolUIs.state]);
112
+
113
+ const api = tapApi<AssistantClientState, AssistantClientActions>(state, {
114
+ threads: threads.api,
115
+ registerModelContextProvider: (provider: ModelContextProvider) => {
116
+ return runtime.registerModelContextProvider(provider);
117
+ },
118
+ toolUIs: toolUIs.api,
119
+ on: events.on,
120
+
121
+ __internal_getRuntime: () => runtime,
122
+ });
123
+
124
+ return {
125
+ state,
126
+ api,
127
+ };
128
+ },
129
+ );
130
+
131
+ export const useAssistantRuntimeClient = (runtime: AssistantRuntime) => {
132
+ const client = useResource(asStore(AssistantClient({ runtime: runtime })));
133
+ const api = useMemo(() => {
134
+ const getItem = () => {
135
+ return client.getApi().threads.item("main");
136
+ };
137
+ return {
138
+ threads: createAssistantApiField({
139
+ source: "root",
140
+ query: {},
141
+ get: () => client.getApi().threads,
142
+ }),
143
+ toolUIs: createAssistantApiField({
144
+ source: "root",
145
+ query: {},
146
+ get: () => client.getApi().toolUIs,
147
+ }),
148
+ thread: createAssistantApiField({
149
+ source: "threads",
150
+ query: { type: "main" },
151
+ get: () => client.getApi().threads.thread("main"),
152
+ }),
153
+ threadListItem: createAssistantApiField({
154
+ source: "threads",
155
+ query: { type: "main" },
156
+ get: () => getItem(),
157
+ }),
158
+ composer: createAssistantApiField({
159
+ source: "thread",
160
+ query: {},
161
+ get: () => client.getApi().threads.thread("main").composer,
162
+ }),
163
+ registerModelContextProvider(provider: ModelContextProvider) {
164
+ return client.getApi().registerModelContextProvider(provider);
165
+ },
166
+ __internal_getRuntime() {
167
+ return client.getApi().__internal_getRuntime();
168
+ },
169
+ on<TEvent extends keyof AssistantEvents>(
170
+ selector: AssistantEventSelector<TEvent>,
171
+ callback: (e: AssistantEvents[TEvent]) => void,
172
+ ): Unsubscribe {
173
+ const { event, scope } = normalizeEventSelector(selector);
174
+ if (scope === "*") return client.getApi().on(event, callback);
175
+
176
+ if (
177
+ checkEventScope("thread", scope, event) ||
178
+ checkEventScope("thread-list-item", scope, event) ||
179
+ checkEventScope("composer", scope, event)
180
+ ) {
181
+ return client.getApi().on(event, (e) => {
182
+ if (e.threadId !== getItem().getState().id) return;
183
+ callback(e);
184
+ });
185
+ }
186
+
187
+ throw new Error(
188
+ `Event scope is not available in this component: ${scope}`,
189
+ );
190
+ },
191
+ subscribe: client.subscribe,
192
+ flushSync: client.flushSync,
193
+ } satisfies Partial<AssistantApi>;
194
+ }, [client]);
195
+
196
+ return api;
197
+ };
@@ -0,0 +1,11 @@
1
+ import { AttachmentRuntime } from "../api";
2
+ import { Attachment } from "../types";
3
+
4
+ export type AttachmentClientState = Attachment;
5
+
6
+ export type AttachmentClientActions = {
7
+ readonly remove: () => Promise<void>;
8
+
9
+ /** @internal */
10
+ __internal_getRuntime(): AttachmentRuntime;
11
+ };
@@ -0,0 +1,133 @@
1
+ import { resource, tapMemo, tapEffect, RefObject } from "@assistant-ui/tap";
2
+ import { ComposerRuntime, EditComposerRuntime } from "../api/ComposerRuntime";
3
+ import { Attachment, Unsubscribe } from "../types";
4
+ import { MessageRole, RunConfig } from "../types/AssistantTypes";
5
+ import { tapSubscribable } from "./util-hooks/tapSubscribable";
6
+ import { tapApi } from "../utils/tap-store";
7
+ import {
8
+ AttachmentClientActions,
9
+ AttachmentClientState,
10
+ } from "./AttachmentClient";
11
+ import { StoreApi } from "../utils/tap-store/tap-store-api";
12
+ import { EventManagerActions } from "./EventManagerClient";
13
+ import { ComposerRuntimeEventType } from "../runtimes/core/ComposerRuntimeCore";
14
+
15
+ export type ComposerClientState = {
16
+ readonly text: string;
17
+ readonly role: MessageRole;
18
+ readonly attachments: readonly Attachment[];
19
+ readonly runConfig: RunConfig;
20
+ readonly isEditing: boolean;
21
+ readonly canCancel: boolean;
22
+ readonly attachmentAccept: string;
23
+ readonly isEmpty: boolean;
24
+ readonly type: "thread" | "edit";
25
+ };
26
+
27
+ export type ComposerClientActions = {
28
+ setText(text: string): void;
29
+ setRole(role: MessageRole): void;
30
+ setRunConfig(runConfig: RunConfig): void;
31
+ addAttachment(file: File): Promise<void>;
32
+ clearAttachments(): Promise<void>;
33
+ attachment(selector: {
34
+ index: number;
35
+ }): StoreApi<AttachmentClientState, AttachmentClientActions>;
36
+ reset(): Promise<void>;
37
+ send(): void;
38
+ cancel(): void;
39
+ beginEdit(): void;
40
+
41
+ /** @internal */
42
+ __internal_getRuntime(): ComposerRuntime;
43
+ };
44
+
45
+ export const ComposerClient = resource(
46
+ ({
47
+ threadIdRef,
48
+ messageIdRef,
49
+ events,
50
+ runtime,
51
+ }: {
52
+ threadIdRef: RefObject<string>;
53
+ messageIdRef?: RefObject<string>;
54
+ runtime: ComposerRuntime;
55
+ events: EventManagerActions;
56
+ }) => {
57
+ const runtimeState = tapSubscribable(runtime);
58
+
59
+ // Bind composer events to event manager
60
+ tapEffect(() => {
61
+ const unsubscribers: Unsubscribe[] = [];
62
+
63
+ // Subscribe to composer events
64
+ const composerEvents: ComposerRuntimeEventType[] = [
65
+ "send",
66
+ "attachment-add",
67
+ ];
68
+
69
+ for (const event of composerEvents) {
70
+ const unsubscribe = runtime.unstable_on(event, () => {
71
+ events.emit(`composer.${event}`, {
72
+ threadId: threadIdRef.current,
73
+ ...(messageIdRef && { messageId: messageIdRef.current }),
74
+ });
75
+ });
76
+ unsubscribers.push(unsubscribe);
77
+ }
78
+
79
+ return () => {
80
+ for (const unsub of unsubscribers) unsub();
81
+ };
82
+ }, [runtime, events, threadIdRef, messageIdRef]);
83
+
84
+ const state = tapMemo<ComposerClientState>(() => {
85
+ return {
86
+ text: runtimeState.text,
87
+ role: runtimeState.role,
88
+ attachments: runtimeState.attachments,
89
+ runConfig: runtimeState.runConfig,
90
+ isEditing: runtimeState.isEditing,
91
+ canCancel: runtimeState.canCancel,
92
+ attachmentAccept: runtimeState.attachmentAccept,
93
+ isEmpty: runtimeState.isEmpty,
94
+ type: runtimeState.type ?? "thread",
95
+ };
96
+ }, [runtimeState]);
97
+
98
+ const api = tapApi<ComposerClientState, ComposerClientActions>(state, {
99
+ setText: runtime.setText,
100
+ setRole: runtime.setRole,
101
+ setRunConfig: runtime.setRunConfig,
102
+ addAttachment: runtime.addAttachment,
103
+ reset: runtime.reset,
104
+
105
+ clearAttachments: runtime.clearAttachments,
106
+ send: runtime.send,
107
+ cancel: runtime.cancel,
108
+ beginEdit:
109
+ (runtime as EditComposerRuntime).beginEdit ??
110
+ (() => {
111
+ throw new Error("beginEdit is not supported in this runtime");
112
+ }),
113
+
114
+ attachment: ({ index }) => {
115
+ const attachmentRuntime = runtime.getAttachmentByIndex(index);
116
+ return {
117
+ getState: attachmentRuntime.getState,
118
+
119
+ remove: attachmentRuntime.remove,
120
+
121
+ __internal_getRuntime: () => runtime.getAttachmentByIndex(index),
122
+ };
123
+ },
124
+
125
+ __internal_getRuntime: () => runtime,
126
+ });
127
+
128
+ return {
129
+ state,
130
+ api,
131
+ };
132
+ },
133
+ );
@@ -0,0 +1,63 @@
1
+ import { resource, tapState } from "@assistant-ui/tap";
2
+ import { tapApi } from "../utils/tap-store";
3
+ import { AssistantEvents, Unsubscribe } from "../types";
4
+
5
+ type EventCallback<TEvent extends keyof AssistantEvents> = (
6
+ payload: AssistantEvents[TEvent],
7
+ ) => void;
8
+
9
+ export type EventManagerActions = {
10
+ on<TEvent extends keyof AssistantEvents>(
11
+ event: TEvent,
12
+ callback: EventCallback<TEvent>,
13
+ ): Unsubscribe;
14
+ emit<TEvent extends keyof AssistantEvents>(
15
+ event: TEvent,
16
+ payload: AssistantEvents[TEvent],
17
+ ): void;
18
+ };
19
+
20
+ export const EventManagerClient = resource(() => {
21
+ // Map of event name to set of callbacks
22
+ const [listeners] = tapState<Map<string, Set<EventCallback<any>>>>(
23
+ () => new Map(),
24
+ );
25
+
26
+ const api = tapApi<Record<string, never>, EventManagerActions>(
27
+ {},
28
+ {
29
+ on: <TEvent extends keyof AssistantEvents>(
30
+ event: TEvent,
31
+ callback: EventCallback<TEvent>,
32
+ ): Unsubscribe => {
33
+ if (!listeners.has(event)) {
34
+ listeners.set(event, new Set());
35
+ }
36
+
37
+ const eventListeners = listeners.get(event)!;
38
+ eventListeners.add(callback);
39
+
40
+ return () => {
41
+ eventListeners.delete(callback);
42
+ if (eventListeners.size === 0) {
43
+ listeners.delete(event);
44
+ }
45
+ };
46
+ },
47
+
48
+ emit: (event: keyof AssistantEvents, payload: any) => {
49
+ const eventListeners = listeners.get(event);
50
+ if (!eventListeners) return;
51
+
52
+ // make sure state updates flush
53
+ queueMicrotask(() => {
54
+ for (const callback of eventListeners) {
55
+ callback(payload);
56
+ }
57
+ });
58
+ },
59
+ },
60
+ );
61
+
62
+ return api;
63
+ });