@assistant-ui/core 0.1.0 → 0.1.2

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 (417) hide show
  1. package/LICENSE +21 -0
  2. package/dist/adapters/attachment.js +1 -1
  3. package/dist/adapters/attachment.js.map +1 -1
  4. package/dist/react/AssistantProvider.d.ts +10 -0
  5. package/dist/react/AssistantProvider.d.ts.map +1 -0
  6. package/dist/react/AssistantProvider.js +13 -0
  7. package/dist/react/AssistantProvider.js.map +1 -0
  8. package/dist/react/RuntimeAdapter.d.ts +3 -0
  9. package/dist/react/RuntimeAdapter.d.ts.map +1 -0
  10. package/dist/react/RuntimeAdapter.js +16 -0
  11. package/dist/react/RuntimeAdapter.js.map +1 -0
  12. package/dist/react/client/DataRenderers.d.ts +3 -0
  13. package/dist/react/client/DataRenderers.d.ts.map +1 -0
  14. package/dist/react/client/DataRenderers.js +33 -0
  15. package/dist/react/client/DataRenderers.js.map +1 -0
  16. package/dist/react/client/Tools.d.ts +8 -0
  17. package/dist/react/client/Tools.d.ts.map +1 -0
  18. package/dist/react/client/Tools.js +68 -0
  19. package/dist/react/client/Tools.js.map +1 -0
  20. package/dist/react/client/index.d.ts +3 -0
  21. package/dist/react/client/index.d.ts.map +1 -0
  22. package/dist/react/client/index.js +3 -0
  23. package/dist/react/client/index.js.map +1 -0
  24. package/dist/react/index.d.ts +17 -0
  25. package/dist/react/index.d.ts.map +1 -0
  26. package/dist/react/index.js +19 -0
  27. package/dist/react/index.js.map +1 -0
  28. package/dist/react/model-context/index.d.ts +12 -0
  29. package/dist/react/model-context/index.d.ts.map +1 -0
  30. package/dist/react/model-context/index.js +11 -0
  31. package/dist/react/model-context/index.js.map +1 -0
  32. package/dist/react/model-context/makeAssistantDataUI.d.ts +7 -0
  33. package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -0
  34. package/dist/react/model-context/makeAssistantDataUI.js +10 -0
  35. package/dist/react/model-context/makeAssistantDataUI.js.map +1 -0
  36. package/dist/react/model-context/makeAssistantTool.d.ts +7 -0
  37. package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -0
  38. package/dist/react/model-context/makeAssistantTool.js +10 -0
  39. package/dist/react/model-context/makeAssistantTool.js.map +1 -0
  40. package/dist/react/model-context/makeAssistantToolUI.d.ts +7 -0
  41. package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -0
  42. package/dist/react/model-context/makeAssistantToolUI.js +10 -0
  43. package/dist/react/model-context/makeAssistantToolUI.js.map +1 -0
  44. package/dist/react/model-context/toolbox.d.ts +16 -0
  45. package/dist/react/model-context/toolbox.d.ts.map +1 -0
  46. package/dist/react/model-context/toolbox.js +2 -0
  47. package/dist/react/model-context/toolbox.js.map +1 -0
  48. package/dist/react/model-context/useAssistantDataUI.d.ts +7 -0
  49. package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -0
  50. package/dist/react/model-context/useAssistantDataUI.js +11 -0
  51. package/dist/react/model-context/useAssistantDataUI.js.map +1 -0
  52. package/dist/react/model-context/useAssistantInstructions.d.ts +4 -0
  53. package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -0
  54. package/dist/react/model-context/useAssistantInstructions.js +22 -0
  55. package/dist/react/model-context/useAssistantInstructions.js.map +1 -0
  56. package/dist/react/model-context/useAssistantTool.d.ts +7 -0
  57. package/dist/react/model-context/useAssistantTool.d.ts.map +1 -0
  58. package/dist/react/model-context/useAssistantTool.js +22 -0
  59. package/dist/react/model-context/useAssistantTool.js.map +1 -0
  60. package/dist/react/model-context/useAssistantToolUI.d.ts +7 -0
  61. package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -0
  62. package/dist/react/model-context/useAssistantToolUI.js +11 -0
  63. package/dist/react/model-context/useAssistantToolUI.js.map +1 -0
  64. package/dist/react/model-context/useInlineRender.d.ts +4 -0
  65. package/dist/react/model-context/useInlineRender.d.ts.map +1 -0
  66. package/dist/react/model-context/useInlineRender.js +15 -0
  67. package/dist/react/model-context/useInlineRender.js.map +1 -0
  68. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +27 -0
  69. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -0
  70. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +27 -0
  71. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js.map +1 -0
  72. package/dist/react/primitives/composer/ComposerAttachments.d.ts +23 -0
  73. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -0
  74. package/dist/react/primitives/composer/ComposerAttachments.js +47 -0
  75. package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -0
  76. package/dist/react/primitives/composer/ComposerIf.d.ts +20 -0
  77. package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -0
  78. package/dist/react/primitives/composer/ComposerIf.js +24 -0
  79. package/dist/react/primitives/composer/ComposerIf.js.map +1 -0
  80. package/dist/react/primitives/message/MessageAttachments.d.ts +23 -0
  81. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -0
  82. package/dist/react/primitives/message/MessageAttachments.js +51 -0
  83. package/dist/react/primitives/message/MessageAttachments.js.map +1 -0
  84. package/dist/react/primitives/message/MessageParts.d.ts +139 -0
  85. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -0
  86. package/dist/react/primitives/message/MessageParts.js +251 -0
  87. package/dist/react/primitives/message/MessageParts.js.map +1 -0
  88. package/dist/react/primitives/thread/ThreadMessages.d.ts +95 -0
  89. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -0
  90. package/dist/react/primitives/thread/ThreadMessages.js +112 -0
  91. package/dist/react/primitives/thread/ThreadMessages.js.map +1 -0
  92. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +28 -0
  93. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -0
  94. package/dist/react/primitives/thread/ThreadSuggestions.js +32 -0
  95. package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -0
  96. package/dist/react/primitives/threadList/ThreadListItems.d.ts +22 -0
  97. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -0
  98. package/dist/react/primitives/threadList/ThreadListItems.js +23 -0
  99. package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -0
  100. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +8 -0
  101. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -0
  102. package/dist/react/primitives/threadListItem/ThreadListItemTitle.js +8 -0
  103. package/dist/react/primitives/threadListItem/ThreadListItemTitle.js.map +1 -0
  104. package/dist/react/providers/AttachmentByIndexProvider.d.ts +8 -0
  105. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -0
  106. package/dist/react/providers/AttachmentByIndexProvider.js +23 -0
  107. package/dist/react/providers/AttachmentByIndexProvider.js.map +1 -0
  108. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +6 -0
  109. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -0
  110. package/dist/react/providers/ChainOfThoughtByIndicesProvider.js +20 -0
  111. package/dist/react/providers/ChainOfThoughtByIndicesProvider.js.map +1 -0
  112. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +5 -0
  113. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -0
  114. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js +13 -0
  115. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js.map +1 -0
  116. package/dist/react/providers/MessageByIndexProvider.d.ts +5 -0
  117. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -0
  118. package/dist/react/providers/MessageByIndexProvider.js +18 -0
  119. package/dist/react/providers/MessageByIndexProvider.js.map +1 -0
  120. package/dist/react/providers/PartByIndexProvider.d.ts +5 -0
  121. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -0
  122. package/dist/react/providers/PartByIndexProvider.js +13 -0
  123. package/dist/react/providers/PartByIndexProvider.js.map +1 -0
  124. package/dist/react/providers/SuggestionByIndexProvider.d.ts +6 -0
  125. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -0
  126. package/dist/react/providers/SuggestionByIndexProvider.js +13 -0
  127. package/dist/react/providers/SuggestionByIndexProvider.js.map +1 -0
  128. package/dist/react/providers/TextMessagePartProvider.d.ts +6 -0
  129. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -0
  130. package/dist/react/providers/TextMessagePartProvider.js +26 -0
  131. package/dist/react/providers/TextMessagePartProvider.js.map +1 -0
  132. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +6 -0
  133. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -0
  134. package/dist/react/providers/ThreadListItemByIndexProvider.js +13 -0
  135. package/dist/react/providers/ThreadListItemByIndexProvider.js.map +1 -0
  136. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +6 -0
  137. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -0
  138. package/dist/react/providers/ThreadListItemRuntimeProvider.js +10 -0
  139. package/dist/react/providers/ThreadListItemRuntimeProvider.js.map +1 -0
  140. package/dist/react/providers/index.d.ts +10 -0
  141. package/dist/react/providers/index.d.ts.map +1 -0
  142. package/dist/react/providers/index.js +10 -0
  143. package/dist/react/providers/index.js.map +1 -0
  144. package/dist/react/types/MessagePartComponentTypes.d.ts +33 -0
  145. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -0
  146. package/dist/react/types/MessagePartComponentTypes.js +2 -0
  147. package/dist/react/types/MessagePartComponentTypes.js.map +1 -0
  148. package/dist/react/types/index.d.ts +3 -0
  149. package/dist/react/types/index.d.ts.map +1 -0
  150. package/dist/react/types/index.js +2 -0
  151. package/dist/react/types/index.js.map +1 -0
  152. package/dist/react/types/scopes/dataRenderers.d.ts +13 -0
  153. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -0
  154. package/dist/react/types/scopes/dataRenderers.js +2 -0
  155. package/dist/react/types/scopes/dataRenderers.js.map +1 -0
  156. package/dist/react/types/scopes/index.d.ts +3 -0
  157. package/dist/react/types/scopes/index.d.ts.map +1 -0
  158. package/dist/react/types/scopes/index.js +2 -0
  159. package/dist/react/types/scopes/index.js.map +1 -0
  160. package/dist/react/types/scopes/tools.d.ts +13 -0
  161. package/dist/react/types/scopes/tools.d.ts.map +1 -0
  162. package/dist/react/types/scopes/tools.js +2 -0
  163. package/dist/react/types/scopes/tools.js.map +1 -0
  164. package/dist/react/types/store-augmentation.d.ts +10 -0
  165. package/dist/react/types/store-augmentation.d.ts.map +1 -0
  166. package/dist/react/types/store-augmentation.js +2 -0
  167. package/dist/react/types/store-augmentation.js.map +1 -0
  168. package/dist/runtime/api/attachment-runtime.d.ts +2 -2
  169. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  170. package/dist/runtime/api/attachment-runtime.js.map +1 -1
  171. package/dist/runtime/api/composer-runtime.d.ts +8 -6
  172. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  173. package/dist/runtime/api/composer-runtime.js +2 -2
  174. package/dist/runtime/api/composer-runtime.js.map +1 -1
  175. package/dist/runtime/api/thread-runtime.d.ts +27 -2
  176. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  177. package/dist/runtime/base/base-composer-runtime-core.d.ts +2 -2
  178. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  179. package/dist/runtime/base/base-composer-runtime-core.js +28 -8
  180. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  181. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +1 -2
  182. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  183. package/dist/runtime/base/default-thread-composer-runtime-core.js +0 -3
  184. package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
  185. package/dist/runtime/index.d.ts +1 -1
  186. package/dist/runtime/index.d.ts.map +1 -1
  187. package/dist/runtime/index.js +1 -1
  188. package/dist/runtime/index.js.map +1 -1
  189. package/dist/runtime/interfaces/composer-runtime-core.d.ts +3 -5
  190. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  191. package/dist/runtime/utils/external-store-message.d.ts +8 -0
  192. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  193. package/dist/runtime/utils/external-store-message.js +12 -0
  194. package/dist/runtime/utils/external-store-message.js.map +1 -1
  195. package/dist/runtime/utils/thread-message-like.d.ts +10 -3
  196. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  197. package/dist/runtime/utils/thread-message-like.js +20 -5
  198. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  199. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  200. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +26 -8
  201. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  202. package/dist/runtimes/remote-thread-list/empty-thread-core.js +1 -1
  203. package/dist/runtimes/remote-thread-list/empty-thread-core.js.map +1 -1
  204. package/dist/store/clients/chain-of-thought-client.d.ts +1 -1
  205. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
  206. package/dist/store/clients/model-context-client.d.ts +1 -1
  207. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  208. package/dist/store/clients/no-op-composer-client.d.ts +1 -1
  209. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
  210. package/dist/store/clients/runtime-adapter.d.ts +5 -0
  211. package/dist/store/clients/runtime-adapter.d.ts.map +1 -0
  212. package/dist/store/clients/runtime-adapter.js +46 -0
  213. package/dist/store/clients/runtime-adapter.js.map +1 -0
  214. package/dist/store/clients/suggestions.d.ts +1 -1
  215. package/dist/store/clients/suggestions.d.ts.map +1 -1
  216. package/dist/store/clients/suggestions.js +1 -1
  217. package/dist/store/clients/suggestions.js.map +1 -1
  218. package/dist/store/clients/thread-message-client.d.ts +1 -1
  219. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  220. package/dist/store/clients/thread-message-client.js +1 -1
  221. package/dist/store/clients/thread-message-client.js.map +1 -1
  222. package/dist/store/index.d.ts +1 -11
  223. package/dist/store/index.d.ts.map +1 -1
  224. package/dist/store/index.js +2 -9
  225. package/dist/store/index.js.map +1 -1
  226. package/dist/store/internal.d.ts +1 -9
  227. package/dist/store/internal.d.ts.map +1 -1
  228. package/dist/store/internal.js +1 -10
  229. package/dist/store/internal.js.map +1 -1
  230. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +1 -1
  231. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  232. package/dist/store/runtime-clients/composer-runtime-client.d.ts +1 -1
  233. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  234. package/dist/store/runtime-clients/composer-runtime-client.js +1 -1
  235. package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
  236. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +1 -1
  237. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  238. package/dist/store/runtime-clients/message-runtime-client.d.ts +1 -1
  239. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  240. package/dist/store/runtime-clients/message-runtime-client.js +1 -1
  241. package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
  242. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +1 -1
  243. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  244. package/dist/store/runtime-clients/thread-list-item-runtime-client.js +1 -1
  245. package/dist/store/runtime-clients/thread-list-item-runtime-client.js.map +1 -1
  246. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +1 -1
  247. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  248. package/dist/store/runtime-clients/thread-list-runtime-client.js +1 -1
  249. package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
  250. package/dist/store/runtime-clients/thread-runtime-client.d.ts +1 -1
  251. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  252. package/dist/store/runtime-clients/thread-runtime-client.js +1 -1
  253. package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
  254. package/dist/store/scope-registration.d.ts +27 -0
  255. package/dist/store/scope-registration.d.ts.map +1 -0
  256. package/dist/store/scope-registration.js +2 -0
  257. package/dist/store/scope-registration.js.map +1 -0
  258. package/dist/store/scopes/composer.d.ts +2 -2
  259. package/dist/store/scopes/composer.d.ts.map +1 -1
  260. package/dist/types/attachment.d.ts +9 -2
  261. package/dist/types/attachment.d.ts.map +1 -1
  262. package/dist/types/index.d.ts +1 -1
  263. package/dist/types/index.d.ts.map +1 -1
  264. package/package.json +35 -12
  265. package/src/adapters/attachment.ts +1 -1
  266. package/src/react/AssistantProvider.tsx +34 -0
  267. package/src/react/RuntimeAdapter.ts +26 -0
  268. package/src/react/client/DataRenderers.ts +42 -0
  269. package/src/react/client/Tools.ts +97 -0
  270. package/src/react/client/index.ts +2 -0
  271. package/src/react/index.ts +50 -0
  272. package/src/react/model-context/index.ts +25 -0
  273. package/src/react/model-context/makeAssistantDataUI.ts +20 -0
  274. package/src/react/model-context/makeAssistantTool.ts +20 -0
  275. package/src/react/model-context/makeAssistantToolUI.ts +20 -0
  276. package/src/react/model-context/toolbox.ts +19 -0
  277. package/src/react/model-context/useAssistantDataUI.ts +16 -0
  278. package/src/react/model-context/useAssistantInstructions.ts +30 -0
  279. package/src/react/model-context/useAssistantTool.ts +37 -0
  280. package/src/react/model-context/useAssistantToolUI.ts +18 -0
  281. package/src/react/model-context/useInlineRender.ts +25 -0
  282. package/src/react/primitives/chainOfThought/ChainOfThoughtParts.tsx +73 -0
  283. package/src/react/primitives/composer/ComposerAttachments.tsx +95 -0
  284. package/src/react/primitives/composer/ComposerIf.tsx +49 -0
  285. package/src/react/primitives/message/MessageAttachments.tsx +98 -0
  286. package/src/react/primitives/message/MessageParts.tsx +561 -0
  287. package/src/react/primitives/thread/ThreadMessages.tsx +222 -0
  288. package/src/react/primitives/thread/ThreadSuggestions.tsx +82 -0
  289. package/src/react/primitives/threadList/ThreadListItems.tsx +66 -0
  290. package/src/react/primitives/threadListItem/ThreadListItemTitle.tsx +17 -0
  291. package/src/react/providers/AttachmentByIndexProvider.tsx +34 -0
  292. package/src/react/providers/ChainOfThoughtByIndicesProvider.tsx +34 -0
  293. package/src/react/providers/ChainOfThoughtPartByIndexProvider.tsx +18 -0
  294. package/src/react/providers/MessageByIndexProvider.tsx +23 -0
  295. package/src/react/providers/PartByIndexProvider.tsx +18 -0
  296. package/src/react/providers/SuggestionByIndexProvider.tsx +21 -0
  297. package/src/react/providers/TextMessagePartProvider.tsx +46 -0
  298. package/src/react/providers/ThreadListItemByIndexProvider.tsx +19 -0
  299. package/src/react/providers/ThreadListItemRuntimeProvider.tsx +16 -0
  300. package/src/react/providers/index.ts +15 -0
  301. package/src/react/types/MessagePartComponentTypes.ts +66 -0
  302. package/src/react/types/index.ts +31 -0
  303. package/src/react/types/scopes/dataRenderers.ts +15 -0
  304. package/src/react/types/scopes/index.ts +6 -0
  305. package/src/react/types/scopes/tools.ts +18 -0
  306. package/src/react/types/store-augmentation.ts +11 -0
  307. package/src/runtime/api/attachment-runtime.ts +2 -7
  308. package/src/runtime/api/composer-runtime.ts +9 -8
  309. package/src/runtime/base/base-composer-runtime-core.ts +28 -8
  310. package/src/runtime/base/default-thread-composer-runtime-core.ts +1 -5
  311. package/src/runtime/index.ts +1 -0
  312. package/src/runtime/interfaces/composer-runtime-core.ts +3 -6
  313. package/src/runtime/utils/external-store-message.ts +15 -0
  314. package/src/runtime/utils/thread-message-like.ts +40 -7
  315. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +29 -12
  316. package/src/runtimes/remote-thread-list/empty-thread-core.ts +1 -1
  317. package/src/store/clients/chain-of-thought-client.ts +1 -1
  318. package/src/store/clients/model-context-client.ts +1 -1
  319. package/src/store/clients/no-op-composer-client.ts +1 -1
  320. package/src/store/clients/runtime-adapter.ts +67 -0
  321. package/src/store/clients/suggestions.ts +2 -2
  322. package/src/store/clients/thread-message-client.ts +2 -2
  323. package/src/store/index.ts +2 -38
  324. package/src/store/internal.ts +4 -31
  325. package/src/store/runtime-clients/attachment-runtime-client.ts +1 -1
  326. package/src/store/runtime-clients/composer-runtime-client.ts +5 -1
  327. package/src/store/runtime-clients/message-part-runtime-client.ts +1 -1
  328. package/src/store/runtime-clients/message-runtime-client.ts +5 -1
  329. package/src/store/runtime-clients/thread-list-item-runtime-client.ts +1 -1
  330. package/src/store/runtime-clients/thread-list-runtime-client.ts +5 -1
  331. package/src/store/runtime-clients/thread-runtime-client.ts +1 -1
  332. package/src/store/scope-registration.ts +27 -0
  333. package/src/store/scopes/composer.ts +2 -1
  334. package/src/tests/external-store-thread-runtime-core.test.ts +152 -0
  335. package/src/tests/thread-message-like.test.ts +110 -0
  336. package/src/types/attachment.ts +10 -2
  337. package/src/types/index.ts +1 -0
  338. package/dist/store/types/client.d.ts +0 -137
  339. package/dist/store/types/client.d.ts.map +0 -1
  340. package/dist/store/types/client.js +0 -2
  341. package/dist/store/types/client.js.map +0 -1
  342. package/dist/store/types/events.d.ts +0 -33
  343. package/dist/store/types/events.d.ts.map +0 -1
  344. package/dist/store/types/events.js +0 -8
  345. package/dist/store/types/events.js.map +0 -1
  346. package/dist/store/types/index.d.ts +0 -3
  347. package/dist/store/types/index.d.ts.map +0 -1
  348. package/dist/store/types/index.js +0 -2
  349. package/dist/store/types/index.js.map +0 -1
  350. package/dist/store/utils/attach-transform-scopes.d.ts +0 -11
  351. package/dist/store/utils/attach-transform-scopes.d.ts.map +0 -1
  352. package/dist/store/utils/attach-transform-scopes.js +0 -12
  353. package/dist/store/utils/attach-transform-scopes.js.map +0 -1
  354. package/dist/store/utils/base-proxy-handler.d.ts +0 -23
  355. package/dist/store/utils/base-proxy-handler.d.ts.map +0 -1
  356. package/dist/store/utils/base-proxy-handler.js +0 -46
  357. package/dist/store/utils/base-proxy-handler.js.map +0 -1
  358. package/dist/store/utils/derived.d.ts +0 -34
  359. package/dist/store/utils/derived.d.ts.map +0 -1
  360. package/dist/store/utils/derived.js +0 -24
  361. package/dist/store/utils/derived.js.map +0 -1
  362. package/dist/store/utils/index.d.ts +0 -7
  363. package/dist/store/utils/index.d.ts.map +0 -1
  364. package/dist/store/utils/index.js +0 -7
  365. package/dist/store/utils/index.js.map +0 -1
  366. package/dist/store/utils/notification-manager.d.ts +0 -11
  367. package/dist/store/utils/notification-manager.d.ts.map +0 -1
  368. package/dist/store/utils/notification-manager.js +0 -84
  369. package/dist/store/utils/notification-manager.js.map +0 -1
  370. package/dist/store/utils/proxied-assistant-state.d.ts +0 -8
  371. package/dist/store/utils/proxied-assistant-state.d.ts.map +0 -1
  372. package/dist/store/utils/proxied-assistant-state.js +0 -33
  373. package/dist/store/utils/proxied-assistant-state.js.map +0 -1
  374. package/dist/store/utils/split-clients.d.ts +0 -10
  375. package/dist/store/utils/split-clients.d.ts.map +0 -1
  376. package/dist/store/utils/split-clients.js +0 -53
  377. package/dist/store/utils/split-clients.js.map +0 -1
  378. package/dist/store/utils/tap-assistant-context.d.ts +0 -19
  379. package/dist/store/utils/tap-assistant-context.d.ts.map +0 -1
  380. package/dist/store/utils/tap-assistant-context.js +0 -23
  381. package/dist/store/utils/tap-assistant-context.js.map +0 -1
  382. package/dist/store/utils/tap-client-list.d.ts +0 -28
  383. package/dist/store/utils/tap-client-list.d.ts.map +0 -1
  384. package/dist/store/utils/tap-client-list.js +0 -68
  385. package/dist/store/utils/tap-client-list.js.map +0 -1
  386. package/dist/store/utils/tap-client-lookup.d.ts +0 -15
  387. package/dist/store/utils/tap-client-lookup.d.ts.map +0 -1
  388. package/dist/store/utils/tap-client-lookup.js +0 -42
  389. package/dist/store/utils/tap-client-lookup.js.map +0 -1
  390. package/dist/store/utils/tap-client-resource.d.ts +0 -13
  391. package/dist/store/utils/tap-client-resource.d.ts.map +0 -1
  392. package/dist/store/utils/tap-client-resource.js +0 -114
  393. package/dist/store/utils/tap-client-resource.js.map +0 -1
  394. package/dist/store/utils/tap-client-stack-context.d.ts +0 -23
  395. package/dist/store/utils/tap-client-stack-context.d.ts.map +0 -1
  396. package/dist/store/utils/tap-client-stack-context.js +0 -28
  397. package/dist/store/utils/tap-client-stack-context.js.map +0 -1
  398. package/dist/store/utils/wrapper-resource.d.ts +0 -3
  399. package/dist/store/utils/wrapper-resource.d.ts.map +0 -1
  400. package/dist/store/utils/wrapper-resource.js +0 -11
  401. package/dist/store/utils/wrapper-resource.js.map +0 -1
  402. package/src/store/types/client.ts +0 -203
  403. package/src/store/types/events.ts +0 -77
  404. package/src/store/types/index.ts +0 -23
  405. package/src/store/utils/attach-transform-scopes.ts +0 -38
  406. package/src/store/utils/base-proxy-handler.ts +0 -50
  407. package/src/store/utils/derived.ts +0 -46
  408. package/src/store/utils/index.ts +0 -28
  409. package/src/store/utils/notification-manager.ts +0 -114
  410. package/src/store/utils/proxied-assistant-state.ts +0 -55
  411. package/src/store/utils/split-clients.ts +0 -82
  412. package/src/store/utils/tap-assistant-context.ts +0 -58
  413. package/src/store/utils/tap-client-list.ts +0 -121
  414. package/src/store/utils/tap-client-lookup.ts +0 -79
  415. package/src/store/utils/tap-client-resource.ts +0 -187
  416. package/src/store/utils/tap-client-stack-context.ts +0 -51
  417. package/src/store/utils/wrapper-resource.ts +0 -17
@@ -0,0 +1,251 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { memo, useMemo, } from "react";
3
+ import { useAuiState, useAui } from "@assistant-ui/store";
4
+ import { PartByIndexProvider, TextMessagePartProvider } from "../../providers/index.js";
5
+ import { ChainOfThoughtByIndicesProvider } from "../../providers/ChainOfThoughtByIndicesProvider.js";
6
+ import { useShallow } from "zustand/shallow";
7
+ /**
8
+ * Creates a group state manager for a specific part type.
9
+ * Returns functions to start, end, and finalize groups.
10
+ */
11
+ const createGroupState = (groupType) => {
12
+ let start = -1;
13
+ return {
14
+ startGroup: (index) => {
15
+ if (start === -1) {
16
+ start = index;
17
+ }
18
+ },
19
+ endGroup: (endIndex, ranges) => {
20
+ if (start !== -1) {
21
+ ranges.push({
22
+ type: groupType,
23
+ startIndex: start,
24
+ endIndex,
25
+ });
26
+ start = -1;
27
+ }
28
+ },
29
+ finalize: (endIndex, ranges) => {
30
+ if (start !== -1) {
31
+ ranges.push({
32
+ type: groupType,
33
+ startIndex: start,
34
+ endIndex,
35
+ });
36
+ }
37
+ },
38
+ };
39
+ };
40
+ /**
41
+ * Groups consecutive tool-call and reasoning message parts into ranges.
42
+ * Always groups tool calls and reasoning parts, even if there's only one.
43
+ * When useChainOfThought is true, groups tool-call and reasoning parts together.
44
+ */
45
+ const groupMessageParts = (messageTypes, useChainOfThought) => {
46
+ const ranges = [];
47
+ if (useChainOfThought) {
48
+ const chainOfThoughtGroup = createGroupState("chainOfThoughtGroup");
49
+ for (let i = 0; i < messageTypes.length; i++) {
50
+ const type = messageTypes[i];
51
+ if (type === "tool-call" || type === "reasoning") {
52
+ chainOfThoughtGroup.startGroup(i);
53
+ }
54
+ else {
55
+ chainOfThoughtGroup.endGroup(i - 1, ranges);
56
+ ranges.push({ type: "single", index: i });
57
+ }
58
+ }
59
+ chainOfThoughtGroup.finalize(messageTypes.length - 1, ranges);
60
+ }
61
+ else {
62
+ const toolGroup = createGroupState("toolGroup");
63
+ const reasoningGroup = createGroupState("reasoningGroup");
64
+ for (let i = 0; i < messageTypes.length; i++) {
65
+ const type = messageTypes[i];
66
+ if (type === "tool-call") {
67
+ reasoningGroup.endGroup(i - 1, ranges);
68
+ toolGroup.startGroup(i);
69
+ }
70
+ else if (type === "reasoning") {
71
+ toolGroup.endGroup(i - 1, ranges);
72
+ reasoningGroup.startGroup(i);
73
+ }
74
+ else {
75
+ toolGroup.endGroup(i - 1, ranges);
76
+ reasoningGroup.endGroup(i - 1, ranges);
77
+ ranges.push({ type: "single", index: i });
78
+ }
79
+ }
80
+ toolGroup.finalize(messageTypes.length - 1, ranges);
81
+ reasoningGroup.finalize(messageTypes.length - 1, ranges);
82
+ }
83
+ return ranges;
84
+ };
85
+ const useMessagePartsGroups = (useChainOfThought) => {
86
+ const messageTypes = useAuiState(useShallow((s) => s.message.parts.map((c) => c.type)));
87
+ return useMemo(() => {
88
+ if (messageTypes.length === 0) {
89
+ return [];
90
+ }
91
+ return groupMessageParts(messageTypes, useChainOfThought);
92
+ }, [messageTypes, useChainOfThought]);
93
+ };
94
+ const ToolUIDisplay = ({ Fallback, ...props }) => {
95
+ const Render = useAuiState((s) => {
96
+ const Render = s.tools.tools[props.toolName] ?? Fallback;
97
+ if (Array.isArray(Render))
98
+ return Render[0] ?? Fallback;
99
+ return Render;
100
+ });
101
+ if (!Render)
102
+ return null;
103
+ return _jsx(Render, { ...props });
104
+ };
105
+ const DataUIDisplay = ({ Fallback, ...props }) => {
106
+ const Render = useAuiState((s) => {
107
+ const Render = s.dataRenderers.renderers[props.name] ?? Fallback;
108
+ if (Array.isArray(Render))
109
+ return Render[0] ?? Fallback;
110
+ return Render;
111
+ });
112
+ if (!Render)
113
+ return null;
114
+ return _jsx(Render, { ...props });
115
+ };
116
+ /**
117
+ * Platform-agnostic no-op default components.
118
+ * Each platform (web, RN) wraps MessagePrimitiveParts with its own defaults.
119
+ */
120
+ export const defaultComponents = {
121
+ Text: () => null,
122
+ Reasoning: () => null,
123
+ Source: () => null,
124
+ Image: () => null,
125
+ File: () => null,
126
+ Unstable_Audio: () => null,
127
+ ToolGroup: ({ children }) => children,
128
+ ReasoningGroup: ({ children }) => children,
129
+ };
130
+ export const MessagePartComponent = ({ components: { Text = defaultComponents.Text, Reasoning = defaultComponents.Reasoning, Image = defaultComponents.Image, Source = defaultComponents.Source, File = defaultComponents.File, Unstable_Audio: Audio = defaultComponents.Unstable_Audio, tools = {}, data, } = {}, }) => {
131
+ const aui = useAui();
132
+ const part = useAuiState((s) => s.part);
133
+ const type = part.type;
134
+ if (type === "tool-call") {
135
+ const addResult = aui.part().addToolResult;
136
+ const resume = aui.part().resumeToolCall;
137
+ if ("Override" in tools)
138
+ return _jsx(tools.Override, { ...part, addResult: addResult, resume: resume });
139
+ const Tool = tools.by_name?.[part.toolName] ?? tools.Fallback;
140
+ return (_jsx(ToolUIDisplay, { ...part, Fallback: Tool, addResult: addResult, resume: resume }));
141
+ }
142
+ if (part.status?.type === "requires-action")
143
+ throw new Error("Encountered unexpected requires-action status");
144
+ switch (type) {
145
+ case "text":
146
+ return _jsx(Text, { ...part });
147
+ case "reasoning":
148
+ return _jsx(Reasoning, { ...part });
149
+ case "source":
150
+ return _jsx(Source, { ...part });
151
+ case "image":
152
+ return _jsx(Image, { ...part });
153
+ case "file":
154
+ return _jsx(File, { ...part });
155
+ case "audio":
156
+ return _jsx(Audio, { ...part });
157
+ case "data": {
158
+ const Data = data?.by_name?.[part.name] ?? data?.Fallback;
159
+ return _jsx(DataUIDisplay, { ...part, Fallback: Data });
160
+ }
161
+ default:
162
+ console.warn(`Unknown message part type: ${type}`);
163
+ return null;
164
+ }
165
+ };
166
+ /**
167
+ * Renders a single message part at the specified index.
168
+ */
169
+ export const MessagePrimitivePartByIndex = memo(({ index, components }) => {
170
+ return (_jsx(PartByIndexProvider, { index: index, children: _jsx(MessagePartComponent, { components: components }) }));
171
+ }, (prev, next) => prev.index === next.index &&
172
+ prev.components?.Text === next.components?.Text &&
173
+ prev.components?.Reasoning === next.components?.Reasoning &&
174
+ prev.components?.Source === next.components?.Source &&
175
+ prev.components?.Image === next.components?.Image &&
176
+ prev.components?.File === next.components?.File &&
177
+ prev.components?.Unstable_Audio === next.components?.Unstable_Audio &&
178
+ prev.components?.tools === next.components?.tools &&
179
+ prev.components?.data === next.components?.data &&
180
+ prev.components?.ToolGroup === next.components?.ToolGroup &&
181
+ prev.components?.ReasoningGroup === next.components?.ReasoningGroup);
182
+ MessagePrimitivePartByIndex.displayName = "MessagePrimitive.PartByIndex";
183
+ const EmptyPartFallback = ({ status, component: Component }) => {
184
+ return (_jsx(TextMessagePartProvider, { text: "", isRunning: status.type === "running", children: _jsx(Component, { type: "text", text: "", status: status }) }));
185
+ };
186
+ const COMPLETE_STATUS = Object.freeze({
187
+ type: "complete",
188
+ });
189
+ const EmptyPartsImpl = ({ components }) => {
190
+ const status = useAuiState((s) => (s.message.status ?? COMPLETE_STATUS));
191
+ if (components?.Empty)
192
+ return _jsx(components.Empty, { status: status });
193
+ return (_jsx(EmptyPartFallback, { status: status, component: components?.Text ?? defaultComponents.Text }));
194
+ };
195
+ const EmptyParts = memo(EmptyPartsImpl, (prev, next) => prev.components?.Empty === next.components?.Empty &&
196
+ prev.components?.Text === next.components?.Text);
197
+ const ConditionalEmptyImpl = ({ components, enabled }) => {
198
+ const shouldShowEmpty = useAuiState((s) => {
199
+ if (!enabled)
200
+ return false;
201
+ if (s.message.parts.length === 0)
202
+ return false;
203
+ const lastPart = s.message.parts[s.message.parts.length - 1];
204
+ return lastPart?.type !== "text" && lastPart?.type !== "reasoning";
205
+ });
206
+ if (!shouldShowEmpty)
207
+ return null;
208
+ return _jsx(EmptyParts, { components: components });
209
+ };
210
+ const ConditionalEmpty = memo(ConditionalEmptyImpl, (prev, next) => prev.enabled === next.enabled &&
211
+ prev.components?.Empty === next.components?.Empty &&
212
+ prev.components?.Text === next.components?.Text);
213
+ /**
214
+ * Renders the parts of a message with support for multiple content types.
215
+ *
216
+ * This is the platform-agnostic base. Each platform wraps this with its own
217
+ * default components (web uses `<p>`, `<span>`; RN would use `<Text>`, etc.).
218
+ */
219
+ export const MessagePrimitiveParts = ({ components, unstable_showEmptyOnNonTextEnd = true, }) => {
220
+ const contentLength = useAuiState((s) => s.message.parts.length);
221
+ const useChainOfThought = !!components?.ChainOfThought;
222
+ const messageRanges = useMessagePartsGroups(useChainOfThought);
223
+ const partsElements = useMemo(() => {
224
+ if (contentLength === 0) {
225
+ return _jsx(EmptyParts, { components: components });
226
+ }
227
+ return messageRanges.map((range) => {
228
+ if (range.type === "single") {
229
+ return (_jsx(MessagePrimitivePartByIndex, { index: range.index, components: components }, range.index));
230
+ }
231
+ else if (range.type === "chainOfThoughtGroup") {
232
+ const ChainOfThoughtComponent = components?.ChainOfThought;
233
+ if (!ChainOfThoughtComponent)
234
+ return null;
235
+ return (_jsx(ChainOfThoughtByIndicesProvider, { startIndex: range.startIndex, endIndex: range.endIndex, children: _jsx(ChainOfThoughtComponent, {}) }, `chainOfThought-${range.startIndex}`));
236
+ }
237
+ else if (range.type === "toolGroup") {
238
+ const ToolGroupComponent = components?.ToolGroup ?? defaultComponents.ToolGroup;
239
+ return (_jsx(ToolGroupComponent, { startIndex: range.startIndex, endIndex: range.endIndex, children: Array.from({ length: range.endIndex - range.startIndex + 1 }, (_, i) => (_jsx(MessagePrimitivePartByIndex, { index: range.startIndex + i, components: components }, i))) }, `tool-${range.startIndex}`));
240
+ }
241
+ else {
242
+ // reasoningGroup
243
+ const ReasoningGroupComponent = components?.ReasoningGroup ?? defaultComponents.ReasoningGroup;
244
+ return (_jsx(ReasoningGroupComponent, { startIndex: range.startIndex, endIndex: range.endIndex, children: Array.from({ length: range.endIndex - range.startIndex + 1 }, (_, i) => (_jsx(MessagePrimitivePartByIndex, { index: range.startIndex + i, components: components }, i))) }, `reasoning-${range.startIndex}`));
245
+ }
246
+ });
247
+ }, [messageRanges, components, contentLength]);
248
+ return (_jsxs(_Fragment, { children: [partsElements, _jsx(ConditionalEmpty, { components: components, enabled: unstable_showEmptyOnNonTextEnd })] }));
249
+ };
250
+ MessagePrimitiveParts.displayName = "MessagePrimitive.Parts";
251
+ //# sourceMappingURL=MessageParts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageParts.js","sourceRoot":"","sources":["../../../../src/react/primitives/message/MessageParts.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,95 @@
1
+ import { type ComponentType, type FC } from "react";
2
+ export declare namespace ThreadPrimitiveMessages {
3
+ type Props = {
4
+ /**
5
+ * Component configuration for rendering different types of messages and composers.
6
+ *
7
+ * You can provide either:
8
+ * 1. A single `Message` component that handles all message types
9
+ * 2. Specific components for `UserMessage` and `AssistantMessage` (with optional `SystemMessage`)
10
+ *
11
+ * Optional edit composer components can be provided to customize the editing experience
12
+ * for different message types when users edit their messages.
13
+ */
14
+ components: {
15
+ /** Component used to render all message types */
16
+ Message: ComponentType;
17
+ /** Component used when editing any message type */
18
+ EditComposer?: ComponentType | undefined;
19
+ /** Component used when editing user messages specifically */
20
+ UserEditComposer?: ComponentType | undefined;
21
+ /** Component used when editing assistant messages specifically */
22
+ AssistantEditComposer?: ComponentType | undefined;
23
+ /** Component used when editing system messages specifically */
24
+ SystemEditComposer?: ComponentType | undefined;
25
+ /** Component used to render user messages specifically */
26
+ UserMessage?: ComponentType | undefined;
27
+ /** Component used to render assistant messages specifically */
28
+ AssistantMessage?: ComponentType | undefined;
29
+ /** Component used to render system messages specifically */
30
+ SystemMessage?: ComponentType | undefined;
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
+ };
49
+ };
50
+ }
51
+ export declare namespace ThreadPrimitiveMessageByIndex {
52
+ type Props = {
53
+ index: number;
54
+ components: ThreadPrimitiveMessages.Props["components"];
55
+ };
56
+ }
57
+ /**
58
+ * Renders a single message at the specified index in the current thread.
59
+ *
60
+ * This component provides message context for a specific message in the thread
61
+ * and renders it using the provided component configuration.
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * <ThreadPrimitive.MessageByIndex
66
+ * index={0}
67
+ * components={{
68
+ * UserMessage: MyUserMessage,
69
+ * AssistantMessage: MyAssistantMessage
70
+ * }}
71
+ * />
72
+ * ```
73
+ */
74
+ export declare const ThreadPrimitiveMessageByIndex: FC<ThreadPrimitiveMessageByIndex.Props>;
75
+ /**
76
+ * Renders all messages in the current thread using the provided component configuration.
77
+ *
78
+ * This component automatically renders all messages in the thread, providing the appropriate
79
+ * message context for each message. It handles different message types (user, assistant, system)
80
+ * and supports editing mode through the provided edit composer components.
81
+ *
82
+ * @example
83
+ * ```tsx
84
+ * <ThreadPrimitive.Messages
85
+ * components={{
86
+ * UserMessage: MyUserMessage,
87
+ * AssistantMessage: MyAssistantMessage,
88
+ * EditComposer: MyEditComposer
89
+ * }}
90
+ * />
91
+ * ```
92
+ */
93
+ export declare const ThreadPrimitiveMessagesImpl: FC<ThreadPrimitiveMessages.Props>;
94
+ export declare const ThreadPrimitiveMessages: import("react").NamedExoticComponent<ThreadPrimitiveMessages.Props>;
95
+ //# sourceMappingURL=ThreadMessages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadMessages.d.ts","sourceRoot":"","sources":["../../../../src/react/primitives/thread/ThreadMessages.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,EAAE,EAAiB,MAAM,OAAO,CAAC;AAInE,yBAAiB,uBAAuB,CAAC;IACvC,KAAY,KAAK,GAAG;QAClB;;;;;;;;;WASG;QACH,UAAU,EACN;YACE,iDAAiD;YACjD,OAAO,EAAE,aAAa,CAAC;YACvB,mDAAmD;YACnD,YAAY,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACzC,6DAA6D;YAC7D,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC7C,kEAAkE;YAClE,qBAAqB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAClD,+DAA+D;YAC/D,kBAAkB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC/C,0DAA0D;YAC1D,WAAW,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACxC,+DAA+D;YAC/D,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC7C,4DAA4D;YAC5D,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;SAC3C,GACD;YACE,4DAA4D;YAC5D,OAAO,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACpC,mDAAmD;YACnD,YAAY,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACzC,6DAA6D;YAC7D,gBAAgB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC7C,kEAAkE;YAClE,qBAAqB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAClD,+DAA+D;YAC/D,kBAAkB,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAC/C,6CAA6C;YAC7C,WAAW,EAAE,aAAa,CAAC;YAC3B,kDAAkD;YAClD,gBAAgB,EAAE,aAAa,CAAC;YAChC,+CAA+C;YAC/C,aAAa,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;SAC3C,CAAC;KACP,CAAC;CACH;AAoFD,yBAAiB,6BAA6B,CAAC;IAC7C,KAAY,KAAK,GAAG;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,uBAAuB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KACzD,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,6BAA6B,EAAE,EAAE,CAAC,6BAA6B,CAAC,KAAK,CAY/E,CAAC;AAIJ;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC,uBAAuB,CAAC,KAAK,CAiBzE,CAAC;AAIF,eAAO,MAAM,uBAAuB,qEAGnC,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo, useMemo } from "react";
3
+ import { useAuiState } from "@assistant-ui/store";
4
+ import { MessageByIndexProvider } from "../../providers/index.js";
5
+ const isComponentsSame = (prev, next) => {
6
+ return (prev.Message === next.Message &&
7
+ prev.EditComposer === next.EditComposer &&
8
+ prev.UserEditComposer === next.UserEditComposer &&
9
+ prev.AssistantEditComposer === next.AssistantEditComposer &&
10
+ prev.SystemEditComposer === next.SystemEditComposer &&
11
+ prev.UserMessage === next.UserMessage &&
12
+ prev.AssistantMessage === next.AssistantMessage &&
13
+ prev.SystemMessage === next.SystemMessage);
14
+ };
15
+ const DEFAULT_SYSTEM_MESSAGE = () => null;
16
+ const getComponent = (components, role, isEditing) => {
17
+ switch (role) {
18
+ case "user":
19
+ if (isEditing) {
20
+ return (components.UserEditComposer ??
21
+ components.EditComposer ??
22
+ components.UserMessage ??
23
+ components.Message);
24
+ }
25
+ else {
26
+ return components.UserMessage ?? components.Message;
27
+ }
28
+ case "assistant":
29
+ if (isEditing) {
30
+ return (components.AssistantEditComposer ??
31
+ components.EditComposer ??
32
+ components.AssistantMessage ??
33
+ components.Message);
34
+ }
35
+ else {
36
+ return (components.AssistantMessage ?? components.Message);
37
+ }
38
+ case "system":
39
+ if (isEditing) {
40
+ return (components.SystemEditComposer ??
41
+ components.EditComposer ??
42
+ components.SystemMessage ??
43
+ components.Message);
44
+ }
45
+ else {
46
+ return (components.SystemMessage ??
47
+ components.Message ??
48
+ DEFAULT_SYSTEM_MESSAGE);
49
+ }
50
+ default:
51
+ const _exhaustiveCheck = role;
52
+ throw new Error(`Unknown message role: ${_exhaustiveCheck}`);
53
+ }
54
+ };
55
+ const ThreadMessageComponent = ({ components, }) => {
56
+ const role = useAuiState((s) => s.message.role);
57
+ const isEditing = useAuiState((s) => s.message.composer.isEditing);
58
+ const Component = getComponent(components, role, isEditing);
59
+ return _jsx(Component, {});
60
+ };
61
+ /**
62
+ * Renders a single message at the specified index in the current thread.
63
+ *
64
+ * This component provides message context for a specific message in the thread
65
+ * and renders it using the provided component configuration.
66
+ *
67
+ * @example
68
+ * ```tsx
69
+ * <ThreadPrimitive.MessageByIndex
70
+ * index={0}
71
+ * components={{
72
+ * UserMessage: MyUserMessage,
73
+ * AssistantMessage: MyAssistantMessage
74
+ * }}
75
+ * />
76
+ * ```
77
+ */
78
+ export const ThreadPrimitiveMessageByIndex = memo(({ index, components }) => {
79
+ return (_jsx(MessageByIndexProvider, { index: index, children: _jsx(ThreadMessageComponent, { components: components }) }));
80
+ }, (prev, next) => prev.index === next.index &&
81
+ isComponentsSame(prev.components, next.components));
82
+ ThreadPrimitiveMessageByIndex.displayName = "ThreadPrimitive.MessageByIndex";
83
+ /**
84
+ * Renders all messages in the current thread using the provided component configuration.
85
+ *
86
+ * This component automatically renders all messages in the thread, providing the appropriate
87
+ * message context for each message. It handles different message types (user, assistant, system)
88
+ * and supports editing mode through the provided edit composer components.
89
+ *
90
+ * @example
91
+ * ```tsx
92
+ * <ThreadPrimitive.Messages
93
+ * components={{
94
+ * UserMessage: MyUserMessage,
95
+ * AssistantMessage: MyAssistantMessage,
96
+ * EditComposer: MyEditComposer
97
+ * }}
98
+ * />
99
+ * ```
100
+ */
101
+ export const ThreadPrimitiveMessagesImpl = ({ components, }) => {
102
+ const messagesLength = useAuiState((s) => s.thread.messages.length);
103
+ const messageElements = useMemo(() => {
104
+ if (messagesLength === 0)
105
+ return null;
106
+ return Array.from({ length: messagesLength }, (_, index) => (_jsx(ThreadPrimitiveMessageByIndex, { index: index, components: components }, index)));
107
+ }, [messagesLength, components]);
108
+ return messageElements;
109
+ };
110
+ ThreadPrimitiveMessagesImpl.displayName = "ThreadPrimitive.Messages";
111
+ export const ThreadPrimitiveMessages = memo(ThreadPrimitiveMessagesImpl, (prev, next) => isComponentsSame(prev.components, next.components));
112
+ //# sourceMappingURL=ThreadMessages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadMessages.js","sourceRoot":"","sources":["../../../../src/react/primitives/thread/ThreadMessages.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { type ComponentType, type FC } from "react";
2
+ export declare namespace ThreadPrimitiveSuggestions {
3
+ type Props = {
4
+ /**
5
+ * Component to render for each suggestion.
6
+ */
7
+ components: {
8
+ /** Component used to render each suggestion */
9
+ Suggestion: ComponentType;
10
+ };
11
+ };
12
+ }
13
+ export declare namespace ThreadPrimitiveSuggestionByIndex {
14
+ type Props = {
15
+ index: number;
16
+ components: ThreadPrimitiveSuggestions.Props["components"];
17
+ };
18
+ }
19
+ /**
20
+ * Renders a single suggestion at the specified index.
21
+ */
22
+ export declare const ThreadPrimitiveSuggestionByIndex: FC<ThreadPrimitiveSuggestionByIndex.Props>;
23
+ /**
24
+ * Renders all suggestions using the provided component configuration.
25
+ */
26
+ export declare const ThreadPrimitiveSuggestionsImpl: FC<ThreadPrimitiveSuggestions.Props>;
27
+ export declare const ThreadPrimitiveSuggestions: import("react").NamedExoticComponent<ThreadPrimitiveSuggestions.Props>;
28
+ //# sourceMappingURL=ThreadSuggestions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadSuggestions.d.ts","sourceRoot":"","sources":["../../../../src/react/primitives/thread/ThreadSuggestions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,EAAE,EAAiB,MAAM,OAAO,CAAC;AAInE,yBAAiB,0BAA0B,CAAC;IAC1C,KAAY,KAAK,GAAG;QAClB;;WAEG;QACH,UAAU,EAAE;YACV,+CAA+C;YAC/C,UAAU,EAAE,aAAa,CAAC;SAC3B,CAAC;KACH,CAAC;CACH;AAWD,yBAAiB,gCAAgC,CAAC;IAChD,KAAY,KAAK,GAAG;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,0BAA0B,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAC5D,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,gCAAgC,EAAE,EAAE,CAAC,gCAAgC,CAAC,KAAK,CAYrF,CAAC;AAKJ;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,EAAE,CAC7C,0BAA0B,CAAC,KAAK,CAkBjC,CAAC;AAIF,eAAO,MAAM,0BAA0B,wEAGtC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo, useMemo } from "react";
3
+ import { useAuiState } from "@assistant-ui/store";
4
+ import { SuggestionByIndexProvider } from "../../providers/SuggestionByIndexProvider.js";
5
+ const SuggestionComponent = ({ components }) => {
6
+ const Component = components.Suggestion;
7
+ return _jsx(Component, {});
8
+ };
9
+ /**
10
+ * Renders a single suggestion at the specified index.
11
+ */
12
+ export const ThreadPrimitiveSuggestionByIndex = memo(({ index, components }) => {
13
+ return (_jsx(SuggestionByIndexProvider, { index: index, children: _jsx(SuggestionComponent, { components: components }) }));
14
+ }, (prev, next) => prev.index === next.index &&
15
+ prev.components.Suggestion === next.components.Suggestion);
16
+ ThreadPrimitiveSuggestionByIndex.displayName =
17
+ "ThreadPrimitive.SuggestionByIndex";
18
+ /**
19
+ * Renders all suggestions using the provided component configuration.
20
+ */
21
+ export const ThreadPrimitiveSuggestionsImpl = ({ components }) => {
22
+ const suggestionsLength = useAuiState((s) => s.suggestions.suggestions.length);
23
+ const suggestionElements = useMemo(() => {
24
+ if (suggestionsLength === 0)
25
+ return null;
26
+ return Array.from({ length: suggestionsLength }, (_, index) => (_jsx(ThreadPrimitiveSuggestionByIndex, { index: index, components: components }, index)));
27
+ }, [suggestionsLength, components]);
28
+ return suggestionElements;
29
+ };
30
+ ThreadPrimitiveSuggestionsImpl.displayName = "ThreadPrimitive.Suggestions";
31
+ export const ThreadPrimitiveSuggestions = memo(ThreadPrimitiveSuggestionsImpl, (prev, next) => prev.components.Suggestion === next.components.Suggestion);
32
+ //# sourceMappingURL=ThreadSuggestions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadSuggestions.js","sourceRoot":"","sources":["../../../../src/react/primitives/thread/ThreadSuggestions.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA+B,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,qDAAkD;AAkBtF,MAAM,mBAAmB,GAAiC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;IAC3E,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC;IACxC,OAAO,KAAC,SAAS,KAAG,CAAC;AACvB,CAAC,CAAC;AASF;;GAEG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAC3C,IAAI,CACF,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;IACxB,OAAO,CACL,KAAC,yBAAyB,IAAC,KAAK,EAAE,KAAK,YACrC,KAAC,mBAAmB,IAAC,UAAU,EAAE,UAAU,GAAI,GACrB,CAC7B,CAAC;AACJ,CAAC,EACD,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACb,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;IACzB,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAC5D,CAAC;AAEJ,gCAAgC,CAAC,WAAW;IAC1C,mCAAmC,CAAC;AAEtC;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAEvC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;IACrB,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CACxC,CAAC;IAEF,MAAM,kBAAkB,GAAG,OAAO,CAAC,GAAG,EAAE;QACtC,IAAI,iBAAiB,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAC7D,KAAC,gCAAgC,IAE/B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,IAFjB,KAAK,CAGV,CACH,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAEpC,OAAO,kBAAkB,CAAC;AAC5B,CAAC,CAAC;AAEF,8BAA8B,CAAC,WAAW,GAAG,6BAA6B,CAAC;AAE3E,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAC5C,8BAA8B,EAC9B,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,UAAU,CAC1E,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { ComponentType, FC } from "react";
2
+ export declare namespace ThreadListPrimitiveItems {
3
+ type Props = {
4
+ archived?: boolean | undefined;
5
+ components: {
6
+ ThreadListItem: ComponentType;
7
+ };
8
+ };
9
+ }
10
+ export declare namespace ThreadListPrimitiveItemByIndex {
11
+ type Props = {
12
+ index: number;
13
+ archived?: boolean | undefined;
14
+ components: ThreadListPrimitiveItems.Props["components"];
15
+ };
16
+ }
17
+ /**
18
+ * Renders a single thread list item at the specified index.
19
+ */
20
+ export declare const ThreadListPrimitiveItemByIndex: FC<ThreadListPrimitiveItemByIndex.Props>;
21
+ export declare const ThreadListPrimitiveItems: FC<ThreadListPrimitiveItems.Props>;
22
+ //# sourceMappingURL=ThreadListItems.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadListItems.d.ts","sourceRoot":"","sources":["../../../../src/react/primitives/threadList/ThreadListItems.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,EAAE,EAAiB,MAAM,OAAO,CAAC;AAIzD,yBAAiB,wBAAwB,CAAC;IACxC,KAAY,KAAK,GAAG;QAClB,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC/B,UAAU,EAAE;YACV,cAAc,EAAE,aAAa,CAAC;SAC/B,CAAC;KACH,CAAC;CACH;AAED,yBAAiB,8BAA8B,CAAC;IAC9C,KAAY,KAAK,GAAG;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;QAC/B,UAAU,EAAE,wBAAwB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAC1D,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,EAAE,EAAE,CAAC,8BAA8B,CAAC,KAAK,CAejF,CAAC;AAIJ,eAAO,MAAM,wBAAwB,EAAE,EAAE,CAAC,wBAAwB,CAAC,KAAK,CAoBvE,CAAC"}
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { memo, useMemo } from "react";
3
+ import { useAuiState } from "@assistant-ui/store";
4
+ import { ThreadListItemByIndexProvider } from "../../providers/index.js";
5
+ /**
6
+ * Renders a single thread list item at the specified index.
7
+ */
8
+ export const ThreadListPrimitiveItemByIndex = memo(({ index, archived = false, components }) => {
9
+ const ThreadListItemComponent = components.ThreadListItem;
10
+ return (_jsx(ThreadListItemByIndexProvider, { index: index, archived: archived, children: _jsx(ThreadListItemComponent, {}) }));
11
+ }, (prev, next) => prev.index === next.index &&
12
+ prev.archived === next.archived &&
13
+ prev.components.ThreadListItem === next.components.ThreadListItem);
14
+ ThreadListPrimitiveItemByIndex.displayName = "ThreadListPrimitive.ItemByIndex";
15
+ export const ThreadListPrimitiveItems = ({ archived = false, components, }) => {
16
+ const contentLength = useAuiState((s) => archived ? s.threads.archivedThreadIds.length : s.threads.threadIds.length);
17
+ const listElements = useMemo(() => {
18
+ return Array.from({ length: contentLength }, (_, index) => (_jsx(ThreadListPrimitiveItemByIndex, { index: index, archived: archived, components: components }, index)));
19
+ }, [contentLength, archived, components]);
20
+ return listElements;
21
+ };
22
+ ThreadListPrimitiveItems.displayName = "ThreadListPrimitive.Items";
23
+ //# sourceMappingURL=ThreadListItems.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadListItems.js","sourceRoot":"","sources":["../../../../src/react/primitives/threadList/ThreadListItems.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAqB,IAAI,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,6BAA6B,EAAE,iCAAwB;AAmBhE;;GAEG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,IAAI,CACF,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE;IAC1C,MAAM,uBAAuB,GAAG,UAAU,CAAC,cAAc,CAAC;IAE1D,OAAO,CACL,KAAC,6BAA6B,IAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,YAC7D,KAAC,uBAAuB,KAAG,GACG,CACjC,CAAC;AACJ,CAAC,EACD,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACb,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;IACzB,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ;IAC/B,IAAI,CAAC,UAAU,CAAC,cAAc,KAAK,IAAI,CAAC,UAAU,CAAC,cAAc,CACpE,CAAC;AAEJ,8BAA8B,CAAC,WAAW,GAAG,iCAAiC,CAAC;AAE/E,MAAM,CAAC,MAAM,wBAAwB,GAAuC,CAAC,EAC3E,QAAQ,GAAG,KAAK,EAChB,UAAU,GACX,EAAE,EAAE;IACH,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAC3E,CAAC;IAEF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CACzD,KAAC,8BAA8B,IAE7B,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,IAHjB,KAAK,CAIV,CACH,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1C,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,wBAAwB,CAAC,WAAW,GAAG,2BAA2B,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { FC, ReactNode } from "react";
2
+ export declare namespace ThreadListItemPrimitiveTitle {
3
+ type Props = {
4
+ fallback?: ReactNode;
5
+ };
6
+ }
7
+ export declare const ThreadListItemPrimitiveTitle: FC<ThreadListItemPrimitiveTitle.Props>;
8
+ //# sourceMappingURL=ThreadListItemTitle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadListItemTitle.d.ts","sourceRoot":"","sources":["../../../../src/react/primitives/threadListItem/ThreadListItemTitle.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAG3C,yBAAiB,4BAA4B,CAAC;IAC5C,KAAY,KAAK,GAAG;QAClB,QAAQ,CAAC,EAAE,SAAS,CAAC;KACtB,CAAC;CACH;AAED,eAAO,MAAM,4BAA4B,EAAE,EAAE,CAC3C,4BAA4B,CAAC,KAAK,CAInC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
+ import { useAuiState } from "@assistant-ui/store";
3
+ export const ThreadListItemPrimitiveTitle = ({ fallback }) => {
4
+ const title = useAuiState((s) => s.threadListItem.title);
5
+ return _jsx(_Fragment, { children: title || fallback });
6
+ };
7
+ ThreadListItemPrimitiveTitle.displayName = "ThreadListItemPrimitive.Title";
8
+ //# sourceMappingURL=ThreadListItemTitle.js.map