@assistant-ui/core 0.1.5 → 0.1.7

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 (522) hide show
  1. package/dist/adapters/attachment.d.ts +1 -1
  2. package/dist/adapters/attachment.d.ts.map +1 -1
  3. package/dist/adapters/feedback.d.ts +1 -1
  4. package/dist/adapters/feedback.d.ts.map +1 -1
  5. package/dist/adapters/speech.d.ts +1 -1
  6. package/dist/adapters/speech.d.ts.map +1 -1
  7. package/dist/adapters/suggestion.d.ts +1 -1
  8. package/dist/adapters/suggestion.d.ts.map +1 -1
  9. package/dist/index.d.ts +44 -5
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +14 -5
  12. package/dist/index.js.map +1 -1
  13. package/dist/internal.d.ts +5 -2
  14. package/dist/internal.d.ts.map +1 -1
  15. package/dist/internal.js +13 -2
  16. package/dist/internal.js.map +1 -1
  17. package/dist/model-context/frame/host.d.ts +1 -1
  18. package/dist/model-context/frame/host.d.ts.map +1 -1
  19. package/dist/model-context/frame/provider.d.ts +1 -1
  20. package/dist/model-context/frame/provider.d.ts.map +1 -1
  21. package/dist/model-context/registry.d.ts +1 -1
  22. package/dist/model-context/registry.d.ts.map +1 -1
  23. package/dist/model-context/types.d.ts +1 -1
  24. package/dist/model-context/types.d.ts.map +1 -1
  25. package/dist/react/AssistantRuntimeProvider.d.ts +0 -1
  26. package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
  27. package/dist/react/AssistantRuntimeProvider.js +0 -9
  28. package/dist/react/AssistantRuntimeProvider.js.map +1 -1
  29. package/dist/react/RuntimeAdapter.d.ts.map +1 -1
  30. package/dist/react/RuntimeAdapter.js +2 -1
  31. package/dist/react/RuntimeAdapter.js.map +1 -1
  32. package/dist/react/index.d.ts +67 -9
  33. package/dist/react/index.d.ts.map +1 -1
  34. package/dist/react/index.js +67 -8
  35. package/dist/react/index.js.map +1 -1
  36. package/dist/react/model-context/useInlineRender.d.ts +1 -1
  37. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  38. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +5 -0
  39. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -0
  40. package/dist/react/primitive-hooks/useActionBarSpeak.js +15 -0
  41. package/dist/react/primitive-hooks/useActionBarSpeak.js.map +1 -0
  42. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +5 -0
  43. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -0
  44. package/dist/react/primitive-hooks/useActionBarStopSpeaking.js +11 -0
  45. package/dist/react/primitive-hooks/useActionBarStopSpeaking.js.map +1 -0
  46. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +5 -0
  47. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -0
  48. package/dist/react/primitive-hooks/useBranchPickerNext.js +18 -0
  49. package/dist/react/primitive-hooks/useBranchPickerNext.js.map +1 -0
  50. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +5 -0
  51. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -0
  52. package/dist/react/primitive-hooks/useBranchPickerPrevious.js +18 -0
  53. package/dist/react/primitive-hooks/useBranchPickerPrevious.js.map +1 -0
  54. package/dist/react/primitive-hooks/useComposerDictate.d.ts +5 -0
  55. package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -0
  56. package/dist/react/primitive-hooks/useComposerDictate.js +13 -0
  57. package/dist/react/primitive-hooks/useComposerDictate.js.map +1 -0
  58. package/dist/react/primitive-hooks/useMessageError.d.ts +2 -0
  59. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -0
  60. package/dist/react/primitive-hooks/useMessageError.js +8 -0
  61. package/dist/react/primitive-hooks/useMessageError.js.map +1 -0
  62. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +10 -0
  63. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -0
  64. package/dist/react/primitive-hooks/useSuggestionTrigger.js +32 -0
  65. package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -0
  66. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +4 -0
  67. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -0
  68. package/dist/react/primitive-hooks/useThreadListItemArchive.js +10 -0
  69. package/dist/react/primitive-hooks/useThreadListItemArchive.js.map +1 -0
  70. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +4 -0
  71. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -0
  72. package/dist/react/primitive-hooks/useThreadListItemDelete.js +10 -0
  73. package/dist/react/primitive-hooks/useThreadListItemDelete.js.map +1 -0
  74. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +4 -0
  75. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -0
  76. package/dist/react/primitive-hooks/useThreadListItemTrigger.js +10 -0
  77. package/dist/react/primitive-hooks/useThreadListItemTrigger.js.map +1 -0
  78. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +4 -0
  79. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -0
  80. package/dist/react/primitive-hooks/useThreadListItemUnarchive.js +10 -0
  81. package/dist/react/primitive-hooks/useThreadListItemUnarchive.js.map +1 -0
  82. package/dist/react/primitive-hooks/useThreadListNew.d.ts +4 -0
  83. package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -0
  84. package/dist/react/primitive-hooks/useThreadListNew.js +10 -0
  85. package/dist/react/primitive-hooks/useThreadListNew.js.map +1 -0
  86. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +23 -13
  87. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
  88. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +16 -8
  89. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js.map +1 -1
  90. package/dist/react/primitives/composer/ComposerAttachments.d.ts +19 -8
  91. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  92. package/dist/react/primitives/composer/ComposerAttachments.js +19 -7
  93. package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
  94. package/dist/react/primitives/message/MessageAttachments.d.ts +19 -8
  95. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  96. package/dist/react/primitives/message/MessageAttachments.js +19 -7
  97. package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
  98. package/dist/react/primitives/message/MessageParts.d.ts +41 -5
  99. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  100. package/dist/react/primitives/message/MessageParts.js +113 -5
  101. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  102. package/dist/react/primitives/message/MessageQuote.d.ts +10 -0
  103. package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -0
  104. package/dist/react/primitives/message/MessageQuote.js +27 -0
  105. package/dist/react/primitives/message/MessageQuote.js.map +1 -0
  106. package/dist/react/primitives/part/PartMessages.d.ts +37 -0
  107. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -0
  108. package/dist/react/primitives/part/PartMessages.js +49 -0
  109. package/dist/react/primitives/part/PartMessages.js.map +1 -0
  110. package/dist/react/primitives/thread/ThreadMessages.d.ts +54 -72
  111. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  112. package/dist/react/primitives/thread/ThreadMessages.js +32 -37
  113. package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
  114. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +18 -10
  115. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
  116. package/dist/react/primitives/thread/ThreadSuggestions.js +25 -11
  117. package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
  118. package/dist/react/primitives/threadList/ThreadListItems.d.ts +18 -6
  119. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  120. package/dist/react/primitives/threadList/ThreadListItems.js +15 -7
  121. package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
  122. package/dist/react/providers/ReadonlyThreadProvider.d.ts +9 -0
  123. package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -0
  124. package/dist/react/providers/ReadonlyThreadProvider.js +52 -0
  125. package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -0
  126. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +1 -1
  127. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  128. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +1 -1
  129. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  130. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +1 -1
  131. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  132. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +1 -1
  133. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  134. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +1 -1
  135. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  136. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -1
  137. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  138. package/dist/react/runtimes/cloud/auiV0.d.ts +1 -1
  139. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  140. package/dist/react/runtimes/createMessageConverter.d.ts +1 -1
  141. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
  142. package/dist/react/runtimes/external-message-converter.d.ts +2 -1
  143. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  144. package/dist/react/runtimes/useLocalRuntime.d.ts +6 -6
  145. package/dist/react/runtimes/useLocalRuntime.js +1 -1
  146. package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
  147. package/dist/react/runtimes/useToolInvocations.d.ts +1 -1
  148. package/dist/react/runtimes/useToolInvocations.d.ts.map +1 -1
  149. package/dist/react/types/MessagePartComponentTypes.d.ts +3 -1
  150. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  151. package/dist/react/utils/getMessageQuote.d.ts +9 -0
  152. package/dist/react/utils/getMessageQuote.d.ts.map +1 -0
  153. package/dist/react/utils/getMessageQuote.js +7 -0
  154. package/dist/react/utils/getMessageQuote.js.map +1 -0
  155. package/dist/runtime/api/assistant-runtime.d.ts +2 -2
  156. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  157. package/dist/runtime/api/attachment-runtime.d.ts +2 -1
  158. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  159. package/dist/runtime/api/attachment-runtime.js.map +1 -1
  160. package/dist/runtime/api/bindings.d.ts +1 -1
  161. package/dist/runtime/api/bindings.d.ts.map +1 -1
  162. package/dist/runtime/api/composer-runtime.d.ts +5 -1
  163. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  164. package/dist/runtime/api/composer-runtime.js +2 -1
  165. package/dist/runtime/api/composer-runtime.js.map +1 -1
  166. package/dist/runtime/api/message-part-runtime.d.ts +3 -1
  167. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  168. package/dist/runtime/api/message-runtime.d.ts +3 -1
  169. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  170. package/dist/runtime/api/message-runtime.js +2 -1
  171. package/dist/runtime/api/message-runtime.js.map +1 -1
  172. package/dist/runtime/api/thread-list-item-runtime.d.ts +1 -1
  173. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  174. package/dist/runtime/api/thread-list-runtime.d.ts +1 -1
  175. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  176. package/dist/runtime/api/thread-list-runtime.js +2 -1
  177. package/dist/runtime/api/thread-list-runtime.js.map +1 -1
  178. package/dist/runtime/api/thread-runtime.d.ts +18 -10
  179. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  180. package/dist/runtime/api/thread-runtime.js +9 -3
  181. package/dist/runtime/api/thread-runtime.js.map +1 -1
  182. package/dist/runtime/base/base-assistant-runtime-core.d.ts +2 -2
  183. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
  184. package/dist/runtime/base/base-composer-runtime-core.d.ts +5 -2
  185. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  186. package/dist/runtime/base/base-composer-runtime-core.js +1 -1
  187. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  188. package/dist/runtime/base/base-thread-runtime-core.d.ts +3 -2
  189. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  190. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  191. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +1 -1
  192. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  193. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +1 -1
  194. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  195. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +2 -2
  196. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
  197. package/dist/runtime/interfaces/composer-runtime-core.d.ts +5 -1
  198. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  199. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +1 -1
  200. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  201. package/dist/runtime/interfaces/thread-runtime-core.d.ts +4 -2
  202. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  203. package/dist/runtime/utils/auto-status.d.ts +1 -1
  204. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  205. package/dist/runtime/utils/chat-model-adapter.d.ts +3 -2
  206. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  207. package/dist/runtime/utils/external-store-message.d.ts +1 -1
  208. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  209. package/dist/runtime/utils/message-repository.d.ts +2 -1
  210. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  211. package/dist/runtime/utils/message-repository.js.map +1 -1
  212. package/dist/runtime/utils/thread-message-like.d.ts +3 -1
  213. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  214. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  215. package/dist/runtimes/external-store/external-store-adapter.d.ts +1 -1
  216. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  217. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +1 -1
  218. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  219. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +2 -2
  220. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  221. package/dist/runtimes/external-store/thread-message-converter.d.ts +1 -1
  222. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
  223. package/dist/runtimes/internal.d.ts +1 -0
  224. package/dist/runtimes/internal.d.ts.map +1 -1
  225. package/dist/runtimes/internal.js +2 -0
  226. package/dist/runtimes/internal.js.map +1 -1
  227. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +1 -1
  228. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
  229. package/dist/runtimes/local/local-thread-list-runtime-core.js +1 -1
  230. package/dist/runtimes/local/local-thread-list-runtime-core.js.map +1 -1
  231. package/dist/runtimes/local/local-thread-runtime-core.d.ts +2 -2
  232. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  233. package/dist/runtimes/local/should-continue.d.ts +1 -1
  234. package/dist/runtimes/local/should-continue.d.ts.map +1 -1
  235. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +85 -0
  236. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -0
  237. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +169 -0
  238. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -0
  239. package/dist/runtimes/remote-thread-list/types.d.ts +1 -1
  240. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  241. package/dist/store/clients/model-context-client.js +1 -1
  242. package/dist/store/clients/model-context-client.js.map +1 -1
  243. package/dist/store/clients/runtime-adapter.js +1 -1
  244. package/dist/store/clients/runtime-adapter.js.map +1 -1
  245. package/dist/store/clients/suggestions.d.ts.map +1 -1
  246. package/dist/store/clients/suggestions.js.map +1 -1
  247. package/dist/store/clients/thread-message-client.d.ts +1 -1
  248. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  249. package/dist/store/clients/thread-message-client.js.map +1 -1
  250. package/dist/store/index.d.ts +16 -2
  251. package/dist/store/index.d.ts.map +1 -1
  252. package/dist/store/index.js +5 -3
  253. package/dist/store/index.js.map +1 -1
  254. package/dist/store/internal.d.ts +7 -1
  255. package/dist/store/internal.d.ts.map +1 -1
  256. package/dist/store/internal.js +7 -1
  257. package/dist/store/internal.js.map +1 -1
  258. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +1 -1
  259. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  260. package/dist/store/runtime-clients/composer-runtime-client.d.ts +1 -1
  261. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  262. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +1 -1
  263. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  264. package/dist/store/runtime-clients/message-runtime-client.d.ts +1 -1
  265. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  266. package/dist/store/runtime-clients/tap-subscribable.d.ts +1 -1
  267. package/dist/store/runtime-clients/tap-subscribable.d.ts.map +1 -1
  268. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +1 -1
  269. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  270. package/dist/store/runtime-clients/thread-list-item-runtime-client.js.map +1 -1
  271. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +2 -1
  272. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  273. package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
  274. package/dist/store/runtime-clients/thread-runtime-client.d.ts +1 -1
  275. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  276. package/dist/store/runtime-clients/thread-runtime-client.js +2 -1
  277. package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
  278. package/dist/store/scopes/attachment.d.ts +2 -2
  279. package/dist/store/scopes/attachment.d.ts.map +1 -1
  280. package/dist/store/scopes/chain-of-thought.d.ts +2 -1
  281. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
  282. package/dist/store/scopes/composer.d.ts +6 -2
  283. package/dist/store/scopes/composer.d.ts.map +1 -1
  284. package/dist/store/scopes/message.d.ts +4 -2
  285. package/dist/store/scopes/message.d.ts.map +1 -1
  286. package/dist/store/scopes/model-context.d.ts +2 -2
  287. package/dist/store/scopes/model-context.d.ts.map +1 -1
  288. package/dist/store/scopes/part.d.ts +3 -2
  289. package/dist/store/scopes/part.d.ts.map +1 -1
  290. package/dist/store/scopes/thread-list-item.d.ts +2 -1
  291. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  292. package/dist/store/scopes/thread.d.ts +9 -2
  293. package/dist/store/scopes/thread.d.ts.map +1 -1
  294. package/dist/store/scopes/threads.d.ts +1 -1
  295. package/dist/store/scopes/threads.d.ts.map +1 -1
  296. package/dist/subscribable/subscribable.d.ts +1 -1
  297. package/dist/subscribable/subscribable.d.ts.map +1 -1
  298. package/dist/utils/composite-context-provider.d.ts +1 -1
  299. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  300. package/dist/utils/composite-context-provider.js +1 -1
  301. package/dist/utils/composite-context-provider.js.map +1 -1
  302. package/dist/utils/text.d.ts +1 -1
  303. package/dist/utils/text.d.ts.map +1 -1
  304. package/dist/utils/text.js.map +1 -1
  305. package/package.json +10 -10
  306. package/src/adapters/attachment.ts +1 -1
  307. package/src/adapters/feedback.ts +1 -1
  308. package/src/adapters/speech.ts +1 -1
  309. package/src/adapters/suggestion.ts +1 -1
  310. package/src/index.ts +254 -5
  311. package/src/internal.ts +37 -2
  312. package/src/model-context/frame/host.ts +1 -1
  313. package/src/model-context/frame/provider.ts +1 -1
  314. package/src/model-context/registry.ts +1 -1
  315. package/src/model-context/types.ts +1 -1
  316. package/src/react/AssistantRuntimeProvider.tsx +1 -12
  317. package/src/react/RuntimeAdapter.ts +2 -1
  318. package/src/react/client/DataRenderers.ts +2 -2
  319. package/src/react/client/Tools.ts +2 -2
  320. package/src/react/index.ts +157 -10
  321. package/src/react/model-context/useInlineRender.ts +1 -1
  322. package/src/react/primitive-hooks/useActionBarSpeak.ts +20 -0
  323. package/src/react/primitive-hooks/useActionBarStopSpeaking.ts +13 -0
  324. package/src/react/primitive-hooks/useBranchPickerNext.ts +19 -0
  325. package/src/react/primitive-hooks/useBranchPickerPrevious.ts +19 -0
  326. package/src/react/primitive-hooks/useComposerDictate.ts +18 -0
  327. package/src/react/primitive-hooks/useMessageError.ts +10 -0
  328. package/src/react/primitive-hooks/useSuggestionTrigger.ts +43 -0
  329. package/src/react/primitive-hooks/useThreadListItemArchive.ts +12 -0
  330. package/src/react/primitive-hooks/useThreadListItemDelete.ts +12 -0
  331. package/src/react/primitive-hooks/useThreadListItemTrigger.ts +12 -0
  332. package/src/react/primitive-hooks/useThreadListItemUnarchive.ts +12 -0
  333. package/src/react/primitive-hooks/useThreadListNew.ts +12 -0
  334. package/src/react/primitives/chainOfThought/ChainOfThoughtParts.tsx +72 -28
  335. package/src/react/primitives/composer/ComposerAttachments.tsx +69 -30
  336. package/src/react/primitives/message/MessageAttachments.tsx +69 -30
  337. package/src/react/primitives/message/MessageParts.tsx +212 -24
  338. package/src/react/primitives/message/MessageQuote.tsx +37 -0
  339. package/src/react/primitives/part/PartMessages.tsx +75 -0
  340. package/src/react/primitives/thread/ThreadMessages.tsx +113 -99
  341. package/src/react/primitives/thread/ThreadSuggestions.tsx +72 -28
  342. package/src/react/primitives/threadList/ThreadListItems.tsx +69 -23
  343. package/src/react/providers/ReadonlyThreadProvider.tsx +84 -0
  344. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +1 -1
  345. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +1 -1
  346. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +1 -1
  347. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +2 -2
  348. package/src/react/runtimes/cloud/auiV0.ts +1 -1
  349. package/src/react/runtimes/createMessageConverter.ts +1 -1
  350. package/src/react/runtimes/external-message-converter.ts +2 -2
  351. package/src/react/runtimes/useLocalRuntime.ts +1 -1
  352. package/src/react/runtimes/useToolInvocations.ts +1 -1
  353. package/src/react/types/MessagePartComponentTypes.ts +4 -0
  354. package/src/react/utils/getMessageQuote.ts +18 -0
  355. package/src/runtime/api/assistant-runtime.ts +2 -2
  356. package/src/runtime/api/attachment-runtime.ts +2 -1
  357. package/src/runtime/api/bindings.ts +1 -1
  358. package/src/runtime/api/composer-runtime.ts +9 -10
  359. package/src/runtime/api/message-part-runtime.ts +3 -3
  360. package/src/runtime/api/message-runtime.ts +5 -6
  361. package/src/runtime/api/thread-list-item-runtime.ts +1 -1
  362. package/src/runtime/api/thread-list-runtime.ts +5 -3
  363. package/src/runtime/api/thread-runtime.ts +19 -11
  364. package/src/runtime/base/base-assistant-runtime-core.ts +2 -2
  365. package/src/runtime/base/base-composer-runtime-core.ts +6 -7
  366. package/src/runtime/base/base-thread-runtime-core.ts +3 -2
  367. package/src/runtime/base/default-edit-composer-runtime-core.ts +1 -1
  368. package/src/runtime/base/default-thread-composer-runtime-core.ts +1 -1
  369. package/src/runtime/interfaces/assistant-runtime-core.ts +2 -2
  370. package/src/runtime/interfaces/composer-runtime-core.ts +5 -8
  371. package/src/runtime/interfaces/thread-list-runtime-core.ts +1 -1
  372. package/src/runtime/interfaces/thread-runtime-core.ts +4 -7
  373. package/src/runtime/utils/auto-status.ts +1 -1
  374. package/src/runtime/utils/chat-model-adapter.ts +7 -5
  375. package/src/runtime/utils/external-store-message.ts +1 -1
  376. package/src/runtime/utils/message-repository.ts +2 -1
  377. package/src/runtime/utils/thread-message-like.ts +3 -4
  378. package/src/runtimes/external-store/external-store-adapter.ts +1 -1
  379. package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +1 -1
  380. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +2 -2
  381. package/src/runtimes/external-store/thread-message-converter.ts +1 -1
  382. package/src/runtimes/internal.ts +3 -0
  383. package/src/runtimes/local/local-thread-list-runtime-core.ts +1 -1
  384. package/src/runtimes/local/local-thread-runtime-core.ts +3 -3
  385. package/src/runtimes/local/should-continue.ts +1 -1
  386. package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +223 -0
  387. package/src/runtimes/remote-thread-list/types.ts +1 -1
  388. package/src/store/clients/chain-of-thought-client.ts +1 -1
  389. package/src/store/clients/model-context-client.ts +2 -2
  390. package/src/store/clients/no-op-composer-client.ts +1 -1
  391. package/src/store/clients/runtime-adapter.ts +1 -1
  392. package/src/store/clients/suggestions.ts +2 -1
  393. package/src/store/clients/thread-message-client.ts +4 -3
  394. package/src/store/index.ts +76 -2
  395. package/src/store/internal.ts +7 -1
  396. package/src/store/runtime-clients/attachment-runtime-client.ts +1 -1
  397. package/src/store/runtime-clients/composer-runtime-client.ts +4 -4
  398. package/src/store/runtime-clients/message-part-runtime-client.ts +1 -1
  399. package/src/store/runtime-clients/message-runtime-client.ts +2 -2
  400. package/src/store/runtime-clients/tap-subscribable.ts +1 -1
  401. package/src/store/runtime-clients/thread-list-item-runtime-client.ts +5 -2
  402. package/src/store/runtime-clients/thread-list-runtime-client.ts +3 -2
  403. package/src/store/runtime-clients/thread-runtime-client.ts +6 -4
  404. package/src/store/scopes/attachment.ts +2 -2
  405. package/src/store/scopes/chain-of-thought.ts +2 -1
  406. package/src/store/scopes/composer.ts +6 -8
  407. package/src/store/scopes/message.ts +4 -3
  408. package/src/store/scopes/model-context.ts +2 -2
  409. package/src/store/scopes/part.ts +3 -3
  410. package/src/store/scopes/thread-list-item.ts +2 -4
  411. package/src/store/scopes/thread.ts +11 -4
  412. package/src/store/scopes/threads.ts +1 -1
  413. package/src/subscribable/subscribable.ts +1 -1
  414. package/src/tests/MessageRepository.test.ts +2 -1
  415. package/src/tests/external-store-thread-runtime-core.test.ts +1 -1
  416. package/src/utils/composite-context-provider.ts +1 -1
  417. package/src/utils/text.ts +2 -1
  418. package/dist/adapters/index.d.ts +0 -8
  419. package/dist/adapters/index.d.ts.map +0 -1
  420. package/dist/adapters/index.js +0 -3
  421. package/dist/adapters/index.js.map +0 -1
  422. package/dist/model-context/frame/index.d.ts +0 -5
  423. package/dist/model-context/frame/index.d.ts.map +0 -1
  424. package/dist/model-context/frame/index.js +0 -4
  425. package/dist/model-context/frame/index.js.map +0 -1
  426. package/dist/model-context/index.d.ts +0 -8
  427. package/dist/model-context/index.d.ts.map +0 -1
  428. package/dist/model-context/index.js +0 -9
  429. package/dist/model-context/index.js.map +0 -1
  430. package/dist/react/client/index.d.ts +0 -3
  431. package/dist/react/client/index.d.ts.map +0 -1
  432. package/dist/react/client/index.js +0 -3
  433. package/dist/react/client/index.js.map +0 -1
  434. package/dist/react/model-context/index.d.ts +0 -12
  435. package/dist/react/model-context/index.d.ts.map +0 -1
  436. package/dist/react/model-context/index.js +0 -11
  437. package/dist/react/model-context/index.js.map +0 -1
  438. package/dist/react/primitive-hooks/index.d.ts +0 -15
  439. package/dist/react/primitive-hooks/index.d.ts.map +0 -1
  440. package/dist/react/primitive-hooks/index.js +0 -15
  441. package/dist/react/primitive-hooks/index.js.map +0 -1
  442. package/dist/react/providers/index.d.ts +0 -10
  443. package/dist/react/providers/index.d.ts.map +0 -1
  444. package/dist/react/providers/index.js +0 -10
  445. package/dist/react/providers/index.js.map +0 -1
  446. package/dist/react/runtimes/cloud/index.d.ts +0 -4
  447. package/dist/react/runtimes/cloud/index.d.ts.map +0 -1
  448. package/dist/react/runtimes/cloud/index.js +0 -4
  449. package/dist/react/runtimes/cloud/index.js.map +0 -1
  450. package/dist/react/runtimes/index.d.ts +0 -11
  451. package/dist/react/runtimes/index.d.ts.map +0 -1
  452. package/dist/react/runtimes/index.js +0 -11
  453. package/dist/react/runtimes/index.js.map +0 -1
  454. package/dist/react/types/index.d.ts +0 -3
  455. package/dist/react/types/index.d.ts.map +0 -1
  456. package/dist/react/types/index.js +0 -2
  457. package/dist/react/types/index.js.map +0 -1
  458. package/dist/react/types/scopes/index.d.ts +0 -3
  459. package/dist/react/types/scopes/index.d.ts.map +0 -1
  460. package/dist/react/types/scopes/index.js +0 -2
  461. package/dist/react/types/scopes/index.js.map +0 -1
  462. package/dist/runtime/index.d.ts +0 -20
  463. package/dist/runtime/index.d.ts.map +0 -1
  464. package/dist/runtime/index.js +0 -7
  465. package/dist/runtime/index.js.map +0 -1
  466. package/dist/runtimes/external-store/index.d.ts +0 -8
  467. package/dist/runtimes/external-store/index.d.ts.map +0 -1
  468. package/dist/runtimes/external-store/index.js +0 -5
  469. package/dist/runtimes/external-store/index.js.map +0 -1
  470. package/dist/runtimes/index.d.ts +0 -6
  471. package/dist/runtimes/index.d.ts.map +0 -1
  472. package/dist/runtimes/index.js +0 -4
  473. package/dist/runtimes/index.js.map +0 -1
  474. package/dist/runtimes/local/index.d.ts +0 -7
  475. package/dist/runtimes/local/index.d.ts.map +0 -1
  476. package/dist/runtimes/local/index.js +0 -5
  477. package/dist/runtimes/local/index.js.map +0 -1
  478. package/dist/store/clients/index.d.ts +0 -6
  479. package/dist/store/clients/index.d.ts.map +0 -1
  480. package/dist/store/clients/index.js +0 -6
  481. package/dist/store/clients/index.js.map +0 -1
  482. package/dist/store/runtime-clients/index.d.ts +0 -8
  483. package/dist/store/runtime-clients/index.d.ts.map +0 -1
  484. package/dist/store/runtime-clients/index.js +0 -8
  485. package/dist/store/runtime-clients/index.js.map +0 -1
  486. package/dist/store/scopes/index.d.ts +0 -12
  487. package/dist/store/scopes/index.d.ts.map +0 -1
  488. package/dist/store/scopes/index.js +0 -2
  489. package/dist/store/scopes/index.js.map +0 -1
  490. package/dist/subscribable/index.d.ts +0 -3
  491. package/dist/subscribable/index.d.ts.map +0 -1
  492. package/dist/subscribable/index.js +0 -8
  493. package/dist/subscribable/index.js.map +0 -1
  494. package/dist/types/index.d.ts +0 -5
  495. package/dist/types/index.d.ts.map +0 -1
  496. package/dist/types/index.js +0 -2
  497. package/dist/types/index.js.map +0 -1
  498. package/dist/utils/index.d.ts +0 -4
  499. package/dist/utils/index.d.ts.map +0 -1
  500. package/dist/utils/index.js +0 -7
  501. package/dist/utils/index.js.map +0 -1
  502. package/src/adapters/index.ts +0 -30
  503. package/src/model-context/frame/index.ts +0 -10
  504. package/src/model-context/index.ts +0 -35
  505. package/src/react/client/index.ts +0 -2
  506. package/src/react/model-context/index.ts +0 -25
  507. package/src/react/primitive-hooks/index.ts +0 -20
  508. package/src/react/providers/index.ts +0 -15
  509. package/src/react/runtimes/cloud/index.ts +0 -3
  510. package/src/react/runtimes/index.ts +0 -36
  511. package/src/react/types/index.ts +0 -31
  512. package/src/react/types/scopes/index.ts +0 -6
  513. package/src/runtime/index.ts +0 -109
  514. package/src/runtimes/external-store/index.ts +0 -15
  515. package/src/runtimes/index.ts +0 -28
  516. package/src/runtimes/local/index.ts +0 -6
  517. package/src/store/clients/index.ts +0 -8
  518. package/src/store/runtime-clients/index.ts +0 -7
  519. package/src/store/scopes/index.ts +0 -68
  520. package/src/subscribable/index.ts +0 -21
  521. package/src/types/index.ts +0 -40
  522. package/src/utils/index.ts +0 -14
@@ -1,63 +1,69 @@
1
- import type { ThreadMessage as ThreadMessageType } from "../../../types";
2
- import { type ComponentType, type FC, memo, useMemo } from "react";
3
- import { useAuiState } from "@assistant-ui/store";
4
- import { MessageByIndexProvider } from "../../providers";
1
+ import {
2
+ type ComponentType,
3
+ type FC,
4
+ type ReactNode,
5
+ memo,
6
+ useMemo,
7
+ } from "react";
8
+ import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
9
+ import { MessageByIndexProvider } from "../../providers/MessageByIndexProvider";
10
+ import { MessageState } from "../../../store";
11
+
12
+ type MessagesComponentConfig =
13
+ | {
14
+ /** Component used to render all message types */
15
+ Message: ComponentType;
16
+ /** Component used when editing any message type */
17
+ EditComposer?: ComponentType | undefined;
18
+ /** Component used when editing user messages specifically */
19
+ UserEditComposer?: ComponentType | undefined;
20
+ /** Component used when editing assistant messages specifically */
21
+ AssistantEditComposer?: ComponentType | undefined;
22
+ /** Component used when editing system messages specifically */
23
+ SystemEditComposer?: ComponentType | undefined;
24
+ /** Component used to render user messages specifically */
25
+ UserMessage?: ComponentType | undefined;
26
+ /** Component used to render assistant messages specifically */
27
+ AssistantMessage?: ComponentType | undefined;
28
+ /** Component used to render system messages specifically */
29
+ SystemMessage?: ComponentType | undefined;
30
+ }
31
+ | {
32
+ /** Component used to render all message types (fallback) */
33
+ Message?: ComponentType | undefined;
34
+ /** Component used when editing any message type */
35
+ EditComposer?: ComponentType | undefined;
36
+ /** Component used when editing user messages specifically */
37
+ UserEditComposer?: ComponentType | undefined;
38
+ /** Component used when editing assistant messages specifically */
39
+ AssistantEditComposer?: ComponentType | undefined;
40
+ /** Component used when editing system messages specifically */
41
+ SystemEditComposer?: ComponentType | undefined;
42
+ /** Component used to render user messages */
43
+ UserMessage: ComponentType;
44
+ /** Component used to render assistant messages */
45
+ AssistantMessage: ComponentType;
46
+ /** Component used to render system messages */
47
+ SystemMessage?: ComponentType | undefined;
48
+ };
5
49
 
6
50
  export namespace ThreadPrimitiveMessages {
7
- export type Props = {
8
- /**
9
- * Component configuration for rendering different types of messages and composers.
10
- *
11
- * You can provide either:
12
- * 1. A single `Message` component that handles all message types
13
- * 2. Specific components for `UserMessage` and `AssistantMessage` (with optional `SystemMessage`)
14
- *
15
- * Optional edit composer components can be provided to customize the editing experience
16
- * for different message types when users edit their messages.
17
- */
18
- components:
19
- | {
20
- /** Component used to render all message types */
21
- Message: ComponentType;
22
- /** Component used when editing any message type */
23
- EditComposer?: ComponentType | undefined;
24
- /** Component used when editing user messages specifically */
25
- UserEditComposer?: ComponentType | undefined;
26
- /** Component used when editing assistant messages specifically */
27
- AssistantEditComposer?: ComponentType | undefined;
28
- /** Component used when editing system messages specifically */
29
- SystemEditComposer?: ComponentType | undefined;
30
- /** Component used to render user messages specifically */
31
- UserMessage?: ComponentType | undefined;
32
- /** Component used to render assistant messages specifically */
33
- AssistantMessage?: ComponentType | undefined;
34
- /** Component used to render system messages specifically */
35
- SystemMessage?: ComponentType | undefined;
36
- }
37
- | {
38
- /** Component used to render all message types (fallback) */
39
- Message?: ComponentType | undefined;
40
- /** Component used when editing any message type */
41
- EditComposer?: ComponentType | undefined;
42
- /** Component used when editing user messages specifically */
43
- UserEditComposer?: ComponentType | undefined;
44
- /** Component used when editing assistant messages specifically */
45
- AssistantEditComposer?: ComponentType | undefined;
46
- /** Component used when editing system messages specifically */
47
- SystemEditComposer?: ComponentType | undefined;
48
- /** Component used to render user messages */
49
- UserMessage: ComponentType;
50
- /** Component used to render assistant messages */
51
- AssistantMessage: ComponentType;
52
- /** Component used to render system messages */
53
- SystemMessage?: ComponentType | undefined;
54
- };
55
- };
51
+ export type Props =
52
+ | {
53
+ /** @deprecated Use the children render function instead. */
54
+ components: MessagesComponentConfig;
55
+ children?: never;
56
+ }
57
+ | {
58
+ /** Render function called for each message. Receives the message. */
59
+ children: (value: { message: MessageState }) => ReactNode;
60
+ components?: never;
61
+ };
56
62
  }
57
63
 
58
64
  const isComponentsSame = (
59
- prev: ThreadPrimitiveMessages.Props["components"],
60
- next: ThreadPrimitiveMessages.Props["components"],
65
+ prev: MessagesComponentConfig,
66
+ next: MessagesComponentConfig,
61
67
  ) => {
62
68
  return (
63
69
  prev.Message === next.Message &&
@@ -74,8 +80,8 @@ const isComponentsSame = (
74
80
  const DEFAULT_SYSTEM_MESSAGE = () => null;
75
81
 
76
82
  const getComponent = (
77
- components: ThreadPrimitiveMessages.Props["components"],
78
- role: ThreadMessageType["role"],
83
+ components: MessagesComponentConfig,
84
+ role: MessageState["role"],
79
85
  isEditing: boolean,
80
86
  ) => {
81
87
  switch (role) {
@@ -125,7 +131,7 @@ const getComponent = (
125
131
  };
126
132
 
127
133
  type ThreadMessageComponentProps = {
128
- components: ThreadPrimitiveMessages.Props["components"];
134
+ components: MessagesComponentConfig;
129
135
  };
130
136
 
131
137
  const ThreadMessageComponent: FC<ThreadMessageComponentProps> = ({
@@ -140,26 +146,12 @@ const ThreadMessageComponent: FC<ThreadMessageComponentProps> = ({
140
146
  export namespace ThreadPrimitiveMessageByIndex {
141
147
  export type Props = {
142
148
  index: number;
143
- components: ThreadPrimitiveMessages.Props["components"];
149
+ components: MessagesComponentConfig;
144
150
  };
145
151
  }
146
152
 
147
153
  /**
148
154
  * Renders a single message at the specified index in the current thread.
149
- *
150
- * This component provides message context for a specific message in the thread
151
- * and renders it using the provided component configuration.
152
- *
153
- * @example
154
- * ```tsx
155
- * <ThreadPrimitive.MessageByIndex
156
- * index={0}
157
- * components={{
158
- * UserMessage: MyUserMessage,
159
- * AssistantMessage: MyAssistantMessage
160
- * }}
161
- * />
162
- * ```
163
155
  */
164
156
  export const ThreadPrimitiveMessageByIndex: FC<ThreadPrimitiveMessageByIndex.Props> =
165
157
  memo(
@@ -177,46 +169,68 @@ export const ThreadPrimitiveMessageByIndex: FC<ThreadPrimitiveMessageByIndex.Pro
177
169
 
178
170
  ThreadPrimitiveMessageByIndex.displayName = "ThreadPrimitive.MessageByIndex";
179
171
 
172
+ const ThreadPrimitiveMessagesInner: FC<{
173
+ children: (value: { message: MessageState }) => ReactNode;
174
+ }> = ({ children }) => {
175
+ const messagesLength = useAuiState((s) => s.thread.messages.length);
176
+
177
+ return useMemo(() => {
178
+ if (messagesLength === 0) return null;
179
+ return Array.from({ length: messagesLength }, (_, index) => (
180
+ <MessageByIndexProvider key={index} index={index}>
181
+ <RenderChildrenWithAccessor
182
+ getItemState={(aui) => aui.thread().message({ index }).getState()}
183
+ >
184
+ {(getItem) =>
185
+ children({
186
+ get message() {
187
+ return getItem();
188
+ },
189
+ })
190
+ }
191
+ </RenderChildrenWithAccessor>
192
+ </MessageByIndexProvider>
193
+ ));
194
+ }, [messagesLength, children]);
195
+ };
196
+
180
197
  /**
181
- * Renders all messages in the current thread using the provided component configuration.
182
- *
183
- * This component automatically renders all messages in the thread, providing the appropriate
184
- * message context for each message. It handles different message types (user, assistant, system)
185
- * and supports editing mode through the provided edit composer components.
198
+ * Renders all messages in the current thread.
186
199
  *
187
200
  * @example
188
201
  * ```tsx
189
- * <ThreadPrimitive.Messages
190
- * components={{
191
- * UserMessage: MyUserMessage,
192
- * AssistantMessage: MyAssistantMessage,
193
- * EditComposer: MyEditComposer
202
+ * <ThreadPrimitive.Messages>
203
+ * {({ message }) => {
204
+ * if (message.role === "user") return <MyUserMessage />;
205
+ * return <MyAssistantMessage />;
194
206
  * }}
195
- * />
207
+ * </ThreadPrimitive.Messages>
196
208
  * ```
197
209
  */
198
210
  export const ThreadPrimitiveMessagesImpl: FC<ThreadPrimitiveMessages.Props> = ({
199
211
  components,
212
+ children,
200
213
  }) => {
201
- const messagesLength = useAuiState((s) => s.thread.messages.length);
202
-
203
- const messageElements = useMemo(() => {
204
- if (messagesLength === 0) return null;
205
- return Array.from({ length: messagesLength }, (_, index) => (
206
- <ThreadPrimitiveMessageByIndex
207
- key={index}
208
- index={index}
209
- components={components}
210
- />
211
- ));
212
- }, [messagesLength, components]);
213
-
214
- return messageElements;
214
+ if (components) {
215
+ return (
216
+ <ThreadPrimitiveMessagesInner>
217
+ {() => <ThreadMessageComponent components={components} />}
218
+ </ThreadPrimitiveMessagesInner>
219
+ );
220
+ }
221
+ return (
222
+ <ThreadPrimitiveMessagesInner>{children}</ThreadPrimitiveMessagesInner>
223
+ );
215
224
  };
216
225
 
217
226
  ThreadPrimitiveMessagesImpl.displayName = "ThreadPrimitive.Messages";
218
227
 
219
228
  export const ThreadPrimitiveMessages = memo(
220
229
  ThreadPrimitiveMessagesImpl,
221
- (prev, next) => isComponentsSame(prev.components, next.components),
230
+ (prev, next) => {
231
+ if (prev.children || next.children) {
232
+ return prev.children === next.children;
233
+ }
234
+ return isComponentsSame(prev.components!, next.components!);
235
+ },
222
236
  );
@@ -1,21 +1,35 @@
1
- import { type ComponentType, type FC, memo, useMemo } from "react";
2
- import { useAuiState } from "@assistant-ui/store";
1
+ import {
2
+ type ComponentType,
3
+ type FC,
4
+ type ReactNode,
5
+ memo,
6
+ useMemo,
7
+ } from "react";
8
+ import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
9
+ import type { SuggestionState } from "../../../store/scopes/suggestion";
3
10
  import { SuggestionByIndexProvider } from "../../providers/SuggestionByIndexProvider";
4
11
 
12
+ type SuggestionsComponentConfig = {
13
+ /** Component used to render each suggestion */
14
+ Suggestion: ComponentType;
15
+ };
16
+
5
17
  export namespace ThreadPrimitiveSuggestions {
6
- export type Props = {
7
- /**
8
- * Component to render for each suggestion.
9
- */
10
- components: {
11
- /** Component used to render each suggestion */
12
- Suggestion: ComponentType;
13
- };
14
- };
18
+ export type Props =
19
+ | {
20
+ /** @deprecated Use the children render function instead. */
21
+ components: SuggestionsComponentConfig;
22
+ children?: never;
23
+ }
24
+ | {
25
+ /** Render function called for each suggestion. Receives the suggestion. */
26
+ children: (value: { suggestion: SuggestionState }) => ReactNode;
27
+ components?: never;
28
+ };
15
29
  }
16
30
 
17
31
  type SuggestionComponentProps = {
18
- components: ThreadPrimitiveSuggestions.Props["components"];
32
+ components: SuggestionsComponentConfig;
19
33
  };
20
34
 
21
35
  const SuggestionComponent: FC<SuggestionComponentProps> = ({ components }) => {
@@ -26,7 +40,7 @@ const SuggestionComponent: FC<SuggestionComponentProps> = ({ components }) => {
26
40
  export namespace ThreadPrimitiveSuggestionByIndex {
27
41
  export type Props = {
28
42
  index: number;
29
- components: ThreadPrimitiveSuggestions.Props["components"];
43
+ components: SuggestionsComponentConfig;
30
44
  };
31
45
  }
32
46
 
@@ -50,33 +64,63 @@ export const ThreadPrimitiveSuggestionByIndex: FC<ThreadPrimitiveSuggestionByInd
50
64
  ThreadPrimitiveSuggestionByIndex.displayName =
51
65
  "ThreadPrimitive.SuggestionByIndex";
52
66
 
53
- /**
54
- * Renders all suggestions using the provided component configuration.
55
- */
56
- export const ThreadPrimitiveSuggestionsImpl: FC<
57
- ThreadPrimitiveSuggestions.Props
58
- > = ({ components }) => {
67
+ const ThreadPrimitiveSuggestionsInner: FC<{
68
+ children: (value: { suggestion: SuggestionState }) => ReactNode;
69
+ }> = ({ children }) => {
59
70
  const suggestionsLength = useAuiState(
60
71
  (s) => s.suggestions.suggestions.length,
61
72
  );
62
73
 
63
- const suggestionElements = useMemo(() => {
74
+ return useMemo(() => {
64
75
  if (suggestionsLength === 0) return null;
65
76
  return Array.from({ length: suggestionsLength }, (_, index) => (
66
- <ThreadPrimitiveSuggestionByIndex
67
- key={index}
68
- index={index}
69
- components={components}
70
- />
77
+ <SuggestionByIndexProvider key={index} index={index}>
78
+ <RenderChildrenWithAccessor
79
+ getItemState={(aui) =>
80
+ aui.suggestions().suggestion({ index }).getState()
81
+ }
82
+ >
83
+ {(getItem) =>
84
+ children({
85
+ get suggestion() {
86
+ return getItem();
87
+ },
88
+ })
89
+ }
90
+ </RenderChildrenWithAccessor>
91
+ </SuggestionByIndexProvider>
71
92
  ));
72
- }, [suggestionsLength, components]);
93
+ }, [suggestionsLength, children]);
94
+ };
73
95
 
74
- return suggestionElements;
96
+ /**
97
+ * Renders all suggestions.
98
+ */
99
+ export const ThreadPrimitiveSuggestionsImpl: FC<
100
+ ThreadPrimitiveSuggestions.Props
101
+ > = ({ components, children }) => {
102
+ if (components) {
103
+ return (
104
+ <ThreadPrimitiveSuggestionsInner>
105
+ {() => <SuggestionComponent components={components} />}
106
+ </ThreadPrimitiveSuggestionsInner>
107
+ );
108
+ }
109
+ return (
110
+ <ThreadPrimitiveSuggestionsInner>
111
+ {children}
112
+ </ThreadPrimitiveSuggestionsInner>
113
+ );
75
114
  };
76
115
 
77
116
  ThreadPrimitiveSuggestionsImpl.displayName = "ThreadPrimitive.Suggestions";
78
117
 
79
118
  export const ThreadPrimitiveSuggestions = memo(
80
119
  ThreadPrimitiveSuggestionsImpl,
81
- (prev, next) => prev.components.Suggestion === next.components.Suggestion,
120
+ (prev, next) => {
121
+ if (prev.children || next.children) {
122
+ return prev.children === next.children;
123
+ }
124
+ return prev.components!.Suggestion === next.components!.Suggestion;
125
+ },
82
126
  );
@@ -1,21 +1,34 @@
1
- import { ComponentType, FC, memo, useMemo } from "react";
2
- import { useAuiState } from "@assistant-ui/store";
3
- import { ThreadListItemByIndexProvider } from "../../providers";
1
+ import { ComponentType, FC, ReactNode, memo, useMemo } from "react";
2
+ import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
3
+ import type { ThreadListItemState } from "../../../store/scopes/thread-list-item";
4
+ import { ThreadListItemByIndexProvider } from "../../providers/ThreadListItemByIndexProvider";
5
+
6
+ type ThreadListItemsComponentConfig = {
7
+ ThreadListItem: ComponentType;
8
+ };
4
9
 
5
10
  export namespace ThreadListPrimitiveItems {
6
11
  export type Props = {
7
12
  archived?: boolean | undefined;
8
- components: {
9
- ThreadListItem: ComponentType;
10
- };
11
- };
13
+ } & (
14
+ | {
15
+ /** @deprecated Use the children render function instead. */
16
+ components: ThreadListItemsComponentConfig;
17
+ children?: never;
18
+ }
19
+ | {
20
+ /** Render function called for each thread list item. Receives the item. */
21
+ children: (value: { threadListItem: ThreadListItemState }) => ReactNode;
22
+ components?: never;
23
+ }
24
+ );
12
25
  }
13
26
 
14
27
  export namespace ThreadListPrimitiveItemByIndex {
15
28
  export type Props = {
16
29
  index: number;
17
30
  archived?: boolean | undefined;
18
- components: ThreadListPrimitiveItems.Props["components"];
31
+ components: ThreadListItemsComponentConfig;
19
32
  };
20
33
  }
21
34
 
@@ -41,26 +54,59 @@ export const ThreadListPrimitiveItemByIndex: FC<ThreadListPrimitiveItemByIndex.P
41
54
 
42
55
  ThreadListPrimitiveItemByIndex.displayName = "ThreadListPrimitive.ItemByIndex";
43
56
 
44
- export const ThreadListPrimitiveItems: FC<ThreadListPrimitiveItems.Props> = ({
45
- archived = false,
46
- components,
47
- }) => {
57
+ const ThreadListPrimitiveItemsInner: FC<{
58
+ archived: boolean;
59
+ children: (value: { threadListItem: ThreadListItemState }) => ReactNode;
60
+ }> = ({ archived, children }) => {
48
61
  const contentLength = useAuiState((s) =>
49
62
  archived ? s.threads.archivedThreadIds.length : s.threads.threadIds.length,
50
63
  );
51
64
 
52
- const listElements = useMemo(() => {
53
- return Array.from({ length: contentLength }, (_, index) => (
54
- <ThreadListPrimitiveItemByIndex
55
- key={index}
56
- index={index}
57
- archived={archived}
58
- components={components}
59
- />
60
- ));
61
- }, [contentLength, archived, components]);
65
+ return useMemo(
66
+ () =>
67
+ Array.from({ length: contentLength }, (_, index) => (
68
+ <ThreadListItemByIndexProvider
69
+ key={index}
70
+ index={index}
71
+ archived={archived}
72
+ >
73
+ <RenderChildrenWithAccessor
74
+ getItemState={(aui) =>
75
+ aui.threads().item({ index, archived }).getState()
76
+ }
77
+ >
78
+ {(getItem) =>
79
+ children({
80
+ get threadListItem() {
81
+ return getItem();
82
+ },
83
+ })
84
+ }
85
+ </RenderChildrenWithAccessor>
86
+ </ThreadListItemByIndexProvider>
87
+ )),
88
+ [contentLength, archived, children],
89
+ );
90
+ };
62
91
 
63
- return listElements;
92
+ export const ThreadListPrimitiveItems: FC<ThreadListPrimitiveItems.Props> = ({
93
+ archived = false,
94
+ components,
95
+ children,
96
+ }) => {
97
+ if (components) {
98
+ const ThreadListItemComponent = components.ThreadListItem;
99
+ return (
100
+ <ThreadListPrimitiveItemsInner archived={archived}>
101
+ {() => <ThreadListItemComponent />}
102
+ </ThreadListPrimitiveItemsInner>
103
+ );
104
+ }
105
+ return (
106
+ <ThreadListPrimitiveItemsInner archived={archived}>
107
+ {children}
108
+ </ThreadListPrimitiveItemsInner>
109
+ );
64
110
  };
65
111
 
66
112
  ThreadListPrimitiveItems.displayName = "ThreadListPrimitive.Items";
@@ -0,0 +1,84 @@
1
+ import {
2
+ type FC,
3
+ type PropsWithChildren,
4
+ useEffect,
5
+ useMemo,
6
+ useState,
7
+ } from "react";
8
+ import { useAui, AuiProvider, Derived } from "@assistant-ui/store";
9
+ import type { ThreadMessage } from "../../types/message";
10
+ import { ReadonlyThreadRuntimeCore } from "../../runtimes/readonly/ReadonlyThreadRuntimeCore";
11
+ import {
12
+ ThreadRuntimeImpl,
13
+ type ThreadRuntimeCoreBinding,
14
+ type ThreadListItemRuntimeBinding,
15
+ } from "../../runtime/internal";
16
+ import { ThreadClient } from "../../store/runtime-clients/thread-runtime-client";
17
+ import type { ThreadListItemState } from "../../runtime/api/bindings";
18
+
19
+ const READONLY_THREAD_PATH = Object.freeze({
20
+ ref: "readonly-thread",
21
+ threadSelector: { type: "main" as const },
22
+ });
23
+
24
+ const READONLY_THREAD_LIST_ITEM: ThreadListItemState = Object.freeze({
25
+ id: "readonly",
26
+ remoteId: undefined,
27
+ externalId: undefined,
28
+ isMain: true,
29
+ status: "regular" as const,
30
+ title: undefined,
31
+ });
32
+
33
+ const READONLY_THREAD_LIST_ITEM_BINDING: ThreadListItemRuntimeBinding =
34
+ Object.freeze({
35
+ path: READONLY_THREAD_PATH,
36
+ getState: () => READONLY_THREAD_LIST_ITEM,
37
+ subscribe: () => () => {},
38
+ });
39
+
40
+ export namespace ReadonlyThreadProvider {
41
+ export type Props = PropsWithChildren<{
42
+ messages: readonly ThreadMessage[];
43
+ }>;
44
+ }
45
+
46
+ export const ReadonlyThreadProvider: FC<ReadonlyThreadProvider.Props> = ({
47
+ messages,
48
+ children,
49
+ }) => {
50
+ const [core] = useState(() => {
51
+ const c = new ReadonlyThreadRuntimeCore();
52
+ c.setMessages(messages);
53
+ return c;
54
+ });
55
+
56
+ useEffect(() => {
57
+ core.setMessages(messages);
58
+ }, [core, messages]);
59
+
60
+ const threadRuntime = useMemo(() => {
61
+ const threadBinding: ThreadRuntimeCoreBinding = {
62
+ path: READONLY_THREAD_PATH,
63
+ getState: () => core,
64
+ subscribe: (callback) => core.subscribe(callback),
65
+ outerSubscribe: (callback) => core.subscribe(callback),
66
+ };
67
+
68
+ return new ThreadRuntimeImpl(
69
+ threadBinding,
70
+ READONLY_THREAD_LIST_ITEM_BINDING,
71
+ );
72
+ }, [core]);
73
+
74
+ const aui = useAui({
75
+ thread: ThreadClient({ runtime: threadRuntime }),
76
+ composer: Derived({
77
+ source: "thread",
78
+ query: {},
79
+ get: (aui) => aui.thread().composer(),
80
+ }),
81
+ });
82
+
83
+ return <AuiProvider value={aui}>{children}</AuiProvider>;
84
+ };
@@ -14,7 +14,7 @@ import { ThreadListItemRuntimeProvider } from "../providers/ThreadListItemRuntim
14
14
  import type { ThreadRuntimeCore } from "../../runtime/interfaces/thread-runtime-core";
15
15
  import type { ThreadListRuntimeCore } from "../../runtime/interfaces/thread-list-runtime-core";
16
16
  import type { AssistantRuntime } from "../../runtime/api/assistant-runtime";
17
- import { BaseSubscribable } from "../../subscribable";
17
+ import { BaseSubscribable } from "../../subscribable/subscribable";
18
18
  import { ThreadRuntimeImpl } from "../../runtime/api/thread-runtime";
19
19
  import { ThreadListRuntimeImpl } from "../../runtime/api/thread-list-runtime";
20
20
 
@@ -1,6 +1,6 @@
1
1
  import type { ThreadListRuntimeCore } from "../../runtime/interfaces/thread-list-runtime-core";
2
2
  import { generateId } from "../../utils/id";
3
- import { BaseSubscribable } from "../../subscribable";
3
+ import { BaseSubscribable } from "../../subscribable/subscribable";
4
4
  import { OptimisticState } from "../../runtimes/remote-thread-list/optimistic-state";
5
5
  import { EMPTY_THREAD_CORE } from "../../runtimes/remote-thread-list/empty-thread-core";
6
6
  import type {
@@ -5,7 +5,7 @@ import type {
5
5
  MessageFormatAdapter,
6
6
  MessageFormatItem,
7
7
  MessageFormatRepository,
8
- } from "../../../adapters";
8
+ } from "../../../adapters/thread-history";
9
9
  import type { ExportedMessageRepositoryItem } from "../../../runtime/utils/message-repository";
10
10
  import {
11
11
  AssistantCloud,
@@ -3,8 +3,8 @@ import type {
3
3
  Attachment,
4
4
  PendingAttachment,
5
5
  CompleteAttachment,
6
- ThreadUserMessagePart,
7
- } from "../../../types";
6
+ } from "../../../types/attachment";
7
+ import type { ThreadUserMessagePart } from "../../../types/message";
8
8
  import type { AttachmentAdapter } from "../../../adapters/attachment";
9
9
 
10
10
  const guessAttachmentType = (
@@ -1,4 +1,4 @@
1
- import type { MessageStatus, ThreadMessage } from "../../../types";
1
+ import type { MessageStatus, ThreadMessage } from "../../../types/message";
2
2
  import { fromThreadMessageLike } from "../../../runtime/utils/thread-message-like";
3
3
  import { CloudMessage } from "assistant-cloud";
4
4
  import { isJSONValue } from "../../../utils/json/is-json";
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import type { ThreadMessage } from "../../types";
2
+ import type { ThreadMessage } from "../../types/message";
3
3
  import type { ThreadState } from "../../runtime/api/thread-runtime";
4
4
  import { useAui, useAuiState } from "@assistant-ui/store";
5
5
  import {
@@ -16,11 +16,11 @@ import type { ToolExecutionStatus } from "./useToolInvocations";
16
16
  import type { ReadonlyJSONValue } from "assistant-stream/utils";
17
17
  import { generateErrorMessageId } from "../../utils/id";
18
18
  import type {
19
- MessageTiming,
20
19
  ThreadAssistantMessage,
21
20
  ThreadMessage,
22
21
  ToolCallMessagePart,
23
- } from "../../types";
22
+ } from "../../types/message";
23
+ import type { MessageTiming } from "../../types/message";
24
24
 
25
25
  export namespace useExternalMessageConverter {
26
26
  export type Message =