@assistant-ui/react 0.7.8 → 0.7.10

Sign up to get free protection for your applications and to get access to all the features.
Files changed (350) hide show
  1. package/dist/api/AssistantRuntime.d.ts +4 -5
  2. package/dist/api/AssistantRuntime.d.ts.map +1 -1
  3. package/dist/api/AssistantRuntime.js +19 -22
  4. package/dist/api/AssistantRuntime.js.map +1 -1
  5. package/dist/api/AssistantRuntime.mjs +16 -19
  6. package/dist/api/AssistantRuntime.mjs.map +1 -1
  7. package/dist/api/ComposerRuntime.d.ts.map +1 -1
  8. package/dist/api/ComposerRuntime.js +4 -4
  9. package/dist/api/MessageRuntime.js +7 -7
  10. package/dist/api/ThreadListItemRuntime.d.ts +11 -2
  11. package/dist/api/ThreadListItemRuntime.d.ts.map +1 -1
  12. package/dist/api/ThreadListItemRuntime.js +16 -5
  13. package/dist/api/ThreadListItemRuntime.js.map +1 -1
  14. package/dist/api/ThreadListItemRuntime.mjs +16 -5
  15. package/dist/api/ThreadListItemRuntime.mjs.map +1 -1
  16. package/dist/api/ThreadListRuntime.d.ts +3 -0
  17. package/dist/api/ThreadListRuntime.d.ts.map +1 -1
  18. package/dist/api/ThreadListRuntime.js +31 -12
  19. package/dist/api/ThreadListRuntime.js.map +1 -1
  20. package/dist/api/ThreadListRuntime.mjs +27 -8
  21. package/dist/api/ThreadListRuntime.mjs.map +1 -1
  22. package/dist/api/ThreadRuntime.d.ts +10 -7
  23. package/dist/api/ThreadRuntime.d.ts.map +1 -1
  24. package/dist/api/ThreadRuntime.js +22 -12
  25. package/dist/api/ThreadRuntime.js.map +1 -1
  26. package/dist/api/ThreadRuntime.mjs +16 -6
  27. package/dist/api/ThreadRuntime.mjs.map +1 -1
  28. package/dist/api/subscribable/LazyMemoizeSubject.js +2 -2
  29. package/dist/api/subscribable/NestedSubscriptionSubject.js +1 -1
  30. package/dist/api/subscribable/ShallowMemoizeSubject.js +3 -3
  31. package/dist/context/index.js +6 -6
  32. package/dist/context/index.js.map +1 -1
  33. package/dist/context/providers/AssistantRuntimeProvider.d.ts.map +1 -1
  34. package/dist/context/providers/AssistantRuntimeProvider.js +12 -5
  35. package/dist/context/providers/AssistantRuntimeProvider.js.map +1 -1
  36. package/dist/context/providers/AssistantRuntimeProvider.mjs +8 -1
  37. package/dist/context/providers/AssistantRuntimeProvider.mjs.map +1 -1
  38. package/dist/context/providers/AttachmentRuntimeProvider.js +2 -2
  39. package/dist/context/providers/ContentPartRuntimeProvider.js +2 -2
  40. package/dist/context/providers/MessageRuntimeProvider.js +3 -3
  41. package/dist/context/providers/TextContentPartProvider.js +3 -3
  42. package/dist/context/providers/ThreadListItemRuntimeProvider.js +2 -2
  43. package/dist/context/providers/ThreadRuntimeProvider.d.ts +2 -0
  44. package/dist/context/providers/ThreadRuntimeProvider.d.ts.map +1 -1
  45. package/dist/context/providers/ThreadRuntimeProvider.js +6 -5
  46. package/dist/context/providers/ThreadRuntimeProvider.js.map +1 -1
  47. package/dist/context/providers/ThreadRuntimeProvider.mjs +3 -2
  48. package/dist/context/providers/ThreadRuntimeProvider.mjs.map +1 -1
  49. package/dist/context/providers/index.js +2 -2
  50. package/dist/context/react/AssistantContext.js +2 -2
  51. package/dist/context/react/AttachmentContext.js +1 -1
  52. package/dist/context/react/ComposerContext.js +3 -3
  53. package/dist/context/react/ContentPartContext.js +2 -2
  54. package/dist/context/react/MessageContext.js +2 -2
  55. package/dist/context/react/ThreadContext.js +2 -2
  56. package/dist/context/react/ThreadListItemContext.js +2 -2
  57. package/dist/context/react/index.js +6 -6
  58. package/dist/context/react/utils/createContextStoreHook.d.ts.map +1 -1
  59. package/dist/edge.js +1 -1
  60. package/dist/index.js +17 -17
  61. package/dist/index.js.map +1 -1
  62. package/dist/internal.d.ts +1 -2
  63. package/dist/internal.d.ts.map +1 -1
  64. package/dist/internal.js +10 -13
  65. package/dist/internal.js.map +1 -1
  66. package/dist/internal.mjs +0 -2
  67. package/dist/internal.mjs.map +1 -1
  68. package/dist/model-config/index.js +6 -6
  69. package/dist/model-config/makeAssistantTool.js +1 -1
  70. package/dist/model-config/makeAssistantToolUI.js +1 -1
  71. package/dist/model-config/useAssistantInstructions.js +1 -1
  72. package/dist/model-config/useAssistantTool.js +1 -1
  73. package/dist/model-config/useAssistantToolUI.js +1 -1
  74. package/dist/primitive-hooks/actionBar/useActionBarCopy.js +2 -2
  75. package/dist/primitive-hooks/actionBar/useActionBarEdit.js +1 -1
  76. package/dist/primitive-hooks/actionBar/useActionBarFeedbackNegative.js +1 -1
  77. package/dist/primitive-hooks/actionBar/useActionBarFeedbackPositive.js +1 -1
  78. package/dist/primitive-hooks/actionBar/useActionBarReload.js +3 -3
  79. package/dist/primitive-hooks/actionBar/useActionBarSpeak.js +1 -1
  80. package/dist/primitive-hooks/actionBar/useActionBarStopSpeaking.js +1 -1
  81. package/dist/primitive-hooks/attachment/useAttachmentRemove.js +1 -1
  82. package/dist/primitive-hooks/branchPicker/useBranchPickerCount.js +1 -1
  83. package/dist/primitive-hooks/branchPicker/useBranchPickerNext.js +1 -1
  84. package/dist/primitive-hooks/branchPicker/useBranchPickerNumber.js +1 -1
  85. package/dist/primitive-hooks/branchPicker/useBranchPickerPrevious.js +1 -1
  86. package/dist/primitive-hooks/composer/useComposerAddAttachment.js +1 -1
  87. package/dist/primitive-hooks/composer/useComposerCancel.js +1 -1
  88. package/dist/primitive-hooks/composer/useComposerIf.js +1 -1
  89. package/dist/primitive-hooks/composer/useComposerSend.js +3 -3
  90. package/dist/primitive-hooks/contentPart/index.js +3 -3
  91. package/dist/primitive-hooks/contentPart/useContentPartDisplay.js +1 -1
  92. package/dist/primitive-hooks/contentPart/useContentPartImage.js +1 -1
  93. package/dist/primitive-hooks/contentPart/useContentPartText.js +1 -1
  94. package/dist/primitive-hooks/index.js +2 -2
  95. package/dist/primitive-hooks/index.js.map +1 -1
  96. package/dist/primitive-hooks/message/useMessageIf.js +2 -2
  97. package/dist/primitive-hooks/thread/useThreadEmpty.js +1 -1
  98. package/dist/primitive-hooks/thread/useThreadIf.js +1 -1
  99. package/dist/primitive-hooks/thread/useThreadScrollToBottom.js +2 -2
  100. package/dist/primitive-hooks/thread/useThreadSuggestion.js +2 -2
  101. package/dist/primitive-hooks/thread/useThreadViewportAutoScroll.js +5 -5
  102. package/dist/primitives/actionBar/ActionBarCopy.js +2 -2
  103. package/dist/primitives/actionBar/ActionBarEdit.js +2 -2
  104. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +2 -2
  105. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +2 -2
  106. package/dist/primitives/actionBar/ActionBarReload.js +2 -2
  107. package/dist/primitives/actionBar/ActionBarRoot.js +1 -1
  108. package/dist/primitives/actionBar/ActionBarSpeak.js +2 -2
  109. package/dist/primitives/actionBar/ActionBarStopSpeaking.js +1 -1
  110. package/dist/primitives/actionBar/index.js +8 -8
  111. package/dist/primitives/actionBar/useActionBarFloatStatus.js +3 -3
  112. package/dist/primitives/assistantModal/AssistantModalAnchor.js +1 -1
  113. package/dist/primitives/assistantModal/AssistantModalContent.js +1 -1
  114. package/dist/primitives/assistantModal/AssistantModalRoot.js +2 -2
  115. package/dist/primitives/assistantModal/AssistantModalTrigger.js +1 -1
  116. package/dist/primitives/assistantModal/index.js +4 -4
  117. package/dist/primitives/attachment/AttachmentName.js +1 -1
  118. package/dist/primitives/attachment/AttachmentRemove.js +2 -2
  119. package/dist/primitives/attachment/AttachmentThumb.js +1 -1
  120. package/dist/primitives/attachment/index.js +4 -4
  121. package/dist/primitives/branchPicker/BranchPickerCount.js +1 -1
  122. package/dist/primitives/branchPicker/BranchPickerNext.js +2 -2
  123. package/dist/primitives/branchPicker/BranchPickerNumber.js +1 -1
  124. package/dist/primitives/branchPicker/BranchPickerPrevious.js +2 -2
  125. package/dist/primitives/branchPicker/BranchPickerRoot.js +1 -1
  126. package/dist/primitives/branchPicker/index.js +5 -5
  127. package/dist/primitives/composer/ComposerAddAttachment.js +2 -2
  128. package/dist/primitives/composer/ComposerAttachments.js +3 -3
  129. package/dist/primitives/composer/ComposerCancel.js +2 -2
  130. package/dist/primitives/composer/ComposerIf.js +1 -1
  131. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  132. package/dist/primitives/composer/ComposerInput.js +6 -4
  133. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  134. package/dist/primitives/composer/ComposerInput.mjs +3 -1
  135. package/dist/primitives/composer/ComposerInput.mjs.map +1 -1
  136. package/dist/primitives/composer/ComposerRoot.js +1 -1
  137. package/dist/primitives/composer/ComposerSend.js +2 -2
  138. package/dist/primitives/composer/index.js +7 -7
  139. package/dist/primitives/contentPart/ContentPartDisplay.js +1 -1
  140. package/dist/primitives/contentPart/ContentPartImage.js +1 -1
  141. package/dist/primitives/contentPart/ContentPartInProgress.js +1 -1
  142. package/dist/primitives/contentPart/ContentPartText.js +2 -2
  143. package/dist/primitives/contentPart/index.js +4 -4
  144. package/dist/primitives/index.js +10 -10
  145. package/dist/primitives/message/MessageAttachments.js +3 -3
  146. package/dist/primitives/message/MessageContent.js +8 -8
  147. package/dist/primitives/message/MessageIf.js +1 -1
  148. package/dist/primitives/message/MessageRoot.js +2 -2
  149. package/dist/primitives/message/index.js +4 -4
  150. package/dist/primitives/thread/ThreadEmpty.js +1 -1
  151. package/dist/primitives/thread/ThreadIf.js +1 -1
  152. package/dist/primitives/thread/ThreadMessages.js +3 -3
  153. package/dist/primitives/thread/ThreadScrollToBottom.js +2 -2
  154. package/dist/primitives/thread/ThreadSuggestion.js +2 -2
  155. package/dist/primitives/thread/ThreadViewport.js +1 -1
  156. package/dist/primitives/thread/index.js +7 -7
  157. package/dist/primitives/threadList/ThreadListItems.js +2 -2
  158. package/dist/primitives/threadList/ThreadListNew.js +2 -2
  159. package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
  160. package/dist/primitives/threadList/ThreadListNew.mjs +1 -1
  161. package/dist/primitives/threadList/ThreadListNew.mjs.map +1 -1
  162. package/dist/primitives/threadList/index.js +2 -2
  163. package/dist/primitives/threadListItem/ThreadListItemArchive.js +2 -2
  164. package/dist/primitives/threadListItem/ThreadListItemDelete.js +2 -2
  165. package/dist/primitives/threadListItem/ThreadListItemRoot.js +2 -2
  166. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  167. package/dist/primitives/threadListItem/ThreadListItemRoot.mjs +1 -1
  168. package/dist/primitives/threadListItem/ThreadListItemRoot.mjs.map +1 -1
  169. package/dist/primitives/threadListItem/ThreadListItemTitle.js +1 -1
  170. package/dist/primitives/threadListItem/ThreadListItemTrigger.js +2 -2
  171. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +2 -2
  172. package/dist/primitives/threadListItem/index.js +6 -6
  173. package/dist/runtimes/attachment/index.js +3 -3
  174. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js +2 -2
  175. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.js +1 -1
  176. package/dist/runtimes/core/BaseAssistantRuntimeCore.js +1 -1
  177. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +2 -4
  178. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
  179. package/dist/runtimes/core/BaseThreadRuntimeCore.js +5 -9
  180. package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
  181. package/dist/runtimes/core/BaseThreadRuntimeCore.mjs +1 -5
  182. package/dist/runtimes/core/BaseThreadRuntimeCore.mjs.map +1 -1
  183. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +14 -6
  184. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
  185. package/dist/runtimes/core/ThreadListRuntimeCore.js.map +1 -1
  186. package/dist/runtimes/core/ThreadRuntimeCore.d.ts +1 -15
  187. package/dist/runtimes/core/ThreadRuntimeCore.d.ts.map +1 -1
  188. package/dist/runtimes/core/ThreadRuntimeCore.js.map +1 -1
  189. package/dist/runtimes/core/index.d.ts +1 -1
  190. package/dist/runtimes/core/index.d.ts.map +1 -1
  191. package/dist/runtimes/core/index.js.map +1 -1
  192. package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.js +6 -6
  193. package/dist/runtimes/dangerous-in-browser/index.js +1 -1
  194. package/dist/runtimes/dangerous-in-browser/useDangerousInBrowserRuntime.js +3 -3
  195. package/dist/runtimes/edge/EdgeChatAdapter.js +7 -7
  196. package/dist/runtimes/edge/EdgeRuntimeRequestOptions.js +1 -1
  197. package/dist/runtimes/edge/converters/fromCoreMessage.js +1 -1
  198. package/dist/runtimes/edge/converters/index.js +6 -6
  199. package/dist/runtimes/edge/createEdgeRuntimeAPI.js +9 -9
  200. package/dist/runtimes/edge/index.js +6 -6
  201. package/dist/runtimes/edge/index.js.map +1 -1
  202. package/dist/runtimes/edge/partial-json/parse-partial-json.js +1 -1
  203. package/dist/runtimes/edge/streams/assistantDecoderStream.js +1 -1
  204. package/dist/runtimes/edge/streams/assistantEncoderStream.js +1 -1
  205. package/dist/runtimes/edge/streams/runResultStream.js +1 -1
  206. package/dist/runtimes/edge/streams/utils/index.js +2 -2
  207. package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.js +2 -2
  208. package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.d.ts +1 -1
  209. package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.d.ts.map +1 -1
  210. package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.js +1 -1
  211. package/dist/runtimes/edge/useEdgeRuntime.js +3 -3
  212. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +20 -3
  213. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
  214. package/dist/runtimes/external-store/ExternalStoreAdapter.js.map +1 -1
  215. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts +0 -1
  216. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts.map +1 -1
  217. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js +6 -13
  218. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js.map +1 -1
  219. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs +3 -10
  220. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs.map +1 -1
  221. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +9 -11
  222. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
  223. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +19 -27
  224. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
  225. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs +19 -27
  226. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs.map +1 -1
  227. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts +2 -2
  228. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
  229. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +10 -13
  230. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
  231. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.mjs +4 -7
  232. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.mjs.map +1 -1
  233. package/dist/runtimes/external-store/external-message-converter.js +4 -4
  234. package/dist/runtimes/external-store/index.js +3 -3
  235. package/dist/runtimes/external-store/useExternalStoreRuntime.js +3 -3
  236. package/dist/runtimes/index.js +16 -16
  237. package/dist/runtimes/index.js.map +1 -1
  238. package/dist/runtimes/local/LocalRuntimeCore.d.ts +0 -1
  239. package/dist/runtimes/local/LocalRuntimeCore.d.ts.map +1 -1
  240. package/dist/runtimes/local/LocalRuntimeCore.js +7 -16
  241. package/dist/runtimes/local/LocalRuntimeCore.js.map +1 -1
  242. package/dist/runtimes/local/LocalRuntimeCore.mjs +3 -12
  243. package/dist/runtimes/local/LocalRuntimeCore.mjs.map +1 -1
  244. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +17 -15
  245. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
  246. package/dist/runtimes/local/LocalThreadListRuntimeCore.js +95 -93
  247. package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
  248. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs +94 -92
  249. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs.map +1 -1
  250. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts +4 -3
  251. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
  252. package/dist/runtimes/local/LocalThreadRuntimeCore.js +15 -14
  253. package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
  254. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +11 -10
  255. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
  256. package/dist/runtimes/local/index.js +1 -1
  257. package/dist/runtimes/local/useLocalRuntime.d.ts.map +1 -1
  258. package/dist/runtimes/local/useLocalRuntime.js +7 -10
  259. package/dist/runtimes/local/useLocalRuntime.js.map +1 -1
  260. package/dist/runtimes/local/useLocalRuntime.mjs +4 -7
  261. package/dist/runtimes/local/useLocalRuntime.mjs.map +1 -1
  262. package/dist/runtimes/speech/index.js +1 -1
  263. package/dist/runtimes/utils/MessageRepository.js +2 -2
  264. package/dist/styles/index.css +12 -0
  265. package/dist/styles/index.css.map +1 -1
  266. package/dist/styles/tailwindcss/thread.css +1 -1
  267. package/dist/styles/tailwindcss/thread.css.json +1 -1
  268. package/dist/ui/assistant-action-bar.js +5 -5
  269. package/dist/ui/assistant-message.js +7 -7
  270. package/dist/ui/assistant-modal.js +5 -5
  271. package/dist/ui/attachment-ui.js +7 -7
  272. package/dist/ui/base/avatar.js +1 -1
  273. package/dist/ui/base/index.js +5 -5
  274. package/dist/ui/base/tooltip-icon-button.js +2 -2
  275. package/dist/ui/base/tooltip.js +1 -1
  276. package/dist/ui/branch-picker.js +5 -5
  277. package/dist/ui/composer.js +7 -7
  278. package/dist/ui/content-part.js +2 -2
  279. package/dist/ui/edit-composer.js +4 -4
  280. package/dist/ui/index.d.ts +4 -4
  281. package/dist/ui/index.d.ts.map +1 -1
  282. package/dist/ui/index.js +15 -15
  283. package/dist/ui/index.js.map +1 -1
  284. package/dist/ui/index.mjs +18 -18
  285. package/dist/ui/index.mjs.map +1 -1
  286. package/dist/ui/thread-config.d.ts +1 -1
  287. package/dist/ui/thread-config.d.ts.map +1 -1
  288. package/dist/ui/thread-config.js +2 -2
  289. package/dist/ui/thread-config.js.map +1 -1
  290. package/dist/ui/thread-config.mjs.map +1 -1
  291. package/dist/ui/thread-list-item.d.ts +2 -11
  292. package/dist/ui/thread-list-item.d.ts.map +1 -1
  293. package/dist/ui/thread-list-item.js +20 -33
  294. package/dist/ui/thread-list-item.js.map +1 -1
  295. package/dist/ui/thread-list-item.mjs +16 -29
  296. package/dist/ui/thread-list-item.mjs.map +1 -1
  297. package/dist/ui/thread-list.d.ts +10 -3
  298. package/dist/ui/thread-list.d.ts.map +1 -1
  299. package/dist/ui/thread-list.js +8 -9
  300. package/dist/ui/thread-list.js.map +1 -1
  301. package/dist/ui/thread-list.mjs +3 -4
  302. package/dist/ui/thread-list.mjs.map +1 -1
  303. package/dist/ui/thread-welcome.js +5 -5
  304. package/dist/ui/thread.js +10 -10
  305. package/dist/ui/user-action-bar.js +5 -5
  306. package/dist/ui/user-message.js +6 -6
  307. package/dist/utils/ProxyConfigProvider.js +1 -1
  308. package/dist/utils/combined/createCombinedStore.d.ts.map +1 -1
  309. package/dist/utils/combined/useCombinedStore.d.ts.map +1 -1
  310. package/dist/utils/combined/useCombinedStore.js +1 -1
  311. package/dist/utils/hooks/useOnResizeContent.js +1 -1
  312. package/dist/utils/hooks/useOnScrollToBottom.js +1 -1
  313. package/dist/utils/smooth/SmoothContext.js +2 -2
  314. package/dist/utils/smooth/index.js +3 -3
  315. package/dist/utils/smooth/useSmooth.js +3 -3
  316. package/package.json +1 -1
  317. package/src/api/AssistantRuntime.ts +21 -25
  318. package/src/api/ThreadListItemRuntime.ts +36 -7
  319. package/src/api/ThreadListRuntime.ts +31 -9
  320. package/src/api/ThreadRuntime.ts +38 -10
  321. package/src/context/providers/AssistantRuntimeProvider.tsx +4 -1
  322. package/src/context/providers/ThreadRuntimeProvider.tsx +9 -2
  323. package/src/internal.ts +1 -1
  324. package/src/primitives/composer/ComposerInput.tsx +3 -1
  325. package/src/primitives/threadList/ThreadListNew.tsx +1 -1
  326. package/src/primitives/threadListItem/ThreadListItemRoot.tsx +1 -1
  327. package/src/runtimes/core/BaseThreadRuntimeCore.tsx +1 -9
  328. package/src/runtimes/core/ThreadListRuntimeCore.tsx +16 -7
  329. package/src/runtimes/core/ThreadRuntimeCore.tsx +1 -19
  330. package/src/runtimes/core/index.ts +0 -1
  331. package/src/runtimes/external-store/ExternalStoreAdapter.tsx +20 -3
  332. package/src/runtimes/external-store/ExternalStoreRuntimeCore.tsx +5 -12
  333. package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +22 -35
  334. package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +3 -7
  335. package/src/runtimes/local/LocalRuntimeCore.tsx +7 -14
  336. package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +110 -103
  337. package/src/runtimes/local/LocalThreadRuntimeCore.tsx +11 -10
  338. package/src/runtimes/local/useLocalRuntime.tsx +5 -12
  339. package/src/styles/tailwindcss/thread.css +1 -1
  340. package/src/ui/index.ts +6 -6
  341. package/src/ui/thread-config.tsx +1 -1
  342. package/src/ui/thread-list-item.tsx +24 -32
  343. package/src/ui/thread-list.tsx +13 -7
  344. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.d.ts +0 -19
  345. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.d.ts.map +0 -1
  346. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.js +0 -87
  347. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.js.map +0 -1
  348. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.mjs +0 -62
  349. package/dist/runtimes/local/LocalThreadMetadataRuntimeCore.mjs.map +0 -1
  350. package/src/runtimes/local/LocalThreadMetadataRuntimeCore.tsx +0 -79
@@ -35,12 +35,12 @@ __export(user_message_exports, {
35
35
  });
36
36
  module.exports = __toCommonJS(user_message_exports);
37
37
  var import_react = require("react");
38
- var import_branch_picker = __toESM(require("./branch-picker.cjs"));
39
- var import_withDefaults = require("./utils/withDefaults.cjs");
40
- var import_user_action_bar = __toESM(require("./user-action-bar.cjs"));
41
- var import_content_part = __toESM(require("./content-part.cjs"));
42
- var import_primitives = require("../primitives/index.cjs");
43
- var import_attachment_ui = __toESM(require("./attachment-ui.cjs"));
38
+ var import_branch_picker = __toESM(require("./branch-picker.js"));
39
+ var import_withDefaults = require("./utils/withDefaults.js");
40
+ var import_user_action_bar = __toESM(require("./user-action-bar.js"));
41
+ var import_content_part = __toESM(require("./content-part.js"));
42
+ var import_primitives = require("../primitives/index.js");
43
+ var import_attachment_ui = __toESM(require("./attachment-ui.js"));
44
44
  var import_jsx_runtime = require("react/jsx-runtime");
45
45
  var UserMessage = () => {
46
46
  return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(UserMessageRoot, { children: [
@@ -23,7 +23,7 @@ __export(ProxyConfigProvider_exports, {
23
23
  ProxyConfigProvider: () => ProxyConfigProvider
24
24
  });
25
25
  module.exports = __toCommonJS(ProxyConfigProvider_exports);
26
- var import_ModelConfigTypes = require("../types/ModelConfigTypes.cjs");
26
+ var import_ModelConfigTypes = require("../types/ModelConfigTypes.js");
27
27
  var ProxyConfigProvider = class {
28
28
  _providers = /* @__PURE__ */ new Set();
29
29
  getModelConfig() {
@@ -1 +1 @@
1
- {"version":3,"file":"createCombinedStore.d.ts","sourceRoot":"","sources":["../../../src/utils/combined/createCombinedStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AAE9E,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,GACtE,CAAY,IAAP,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACrC,gBAUmB,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAM5C,CAAC"}
1
+ {"version":3,"file":"createCombinedStore.d.ts","sourceRoot":"","sources":["../../../src/utils/combined/createCombinedStore.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI;IAC9B,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,IAAI,KAAK,WAAW,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC;AAE9E,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,GACtE,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACrC,gBAUmB,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAM5C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useCombinedStore.d.ts","sourceRoot":"","sources":["../../../src/utils/combined/useCombinedStore.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,EAErB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAClD,GAAG,CAAY,IAAP,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,YACtC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,KAC/B,CAIF,CAAC"}
1
+ {"version":3,"file":"useCombinedStore.d.ts","sourceRoot":"","sources":["../../../src/utils/combined/useCombinedStore.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,gBAAgB,EAErB,cAAc,EACf,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,gBAAgB,GAAI,CAAC,SAAS,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,UAClD,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAE,YACtC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,KAC/B,CAIF,CAAC"}
@@ -24,7 +24,7 @@ __export(useCombinedStore_exports, {
24
24
  });
25
25
  module.exports = __toCommonJS(useCombinedStore_exports);
26
26
  var import_react = require("react");
27
- var import_createCombinedStore = require("./createCombinedStore.cjs");
27
+ var import_createCombinedStore = require("./createCombinedStore.js");
28
28
  var useCombinedStore = (stores, selector) => {
29
29
  const useCombined = (0, import_react.useMemo)(() => (0, import_createCombinedStore.createCombinedStore)(stores), stores);
30
30
  return useCombined(selector);
@@ -25,7 +25,7 @@ __export(useOnResizeContent_exports, {
25
25
  module.exports = __toCommonJS(useOnResizeContent_exports);
26
26
  var import_react_use_callback_ref = require("@radix-ui/react-use-callback-ref");
27
27
  var import_react = require("react");
28
- var import_useManagedRef = require("./useManagedRef.cjs");
28
+ var import_useManagedRef = require("./useManagedRef.js");
29
29
  var useOnResizeContent = (callback) => {
30
30
  const callbackRef = (0, import_react_use_callback_ref.useCallbackRef)(callback);
31
31
  const refCallback = (0, import_react.useCallback)(
@@ -25,7 +25,7 @@ __export(useOnScrollToBottom_exports, {
25
25
  module.exports = __toCommonJS(useOnScrollToBottom_exports);
26
26
  var import_react_use_callback_ref = require("@radix-ui/react-use-callback-ref");
27
27
  var import_react = require("react");
28
- var import_ThreadContext = require("../../context/react/ThreadContext.cjs");
28
+ var import_ThreadContext = require("../../context/react/ThreadContext.js");
29
29
  var useOnScrollToBottom = (callback) => {
30
30
  const callbackRef = (0, import_react_use_callback_ref.useCallbackRef)(callback);
31
31
  const onScrollToBottom = (0, import_ThreadContext.useThreadViewport)((vp) => vp.onScrollToBottom);
@@ -28,8 +28,8 @@ __export(SmoothContext_exports, {
28
28
  module.exports = __toCommonJS(SmoothContext_exports);
29
29
  var import_react = require("react");
30
30
  var import_zustand = require("zustand");
31
- var import_ContentPartContext = require("../../context/react/ContentPartContext.cjs");
32
- var import_createContextStoreHook = require("../../context/react/utils/createContextStoreHook.cjs");
31
+ var import_ContentPartContext = require("../../context/react/ContentPartContext.js");
32
+ var import_createContextStoreHook = require("../../context/react/utils/createContextStoreHook.js");
33
33
  var import_jsx_runtime = require("react/jsx-runtime");
34
34
  var SmoothContext = (0, import_react.createContext)(null);
35
35
  var makeSmoothContext = (initialState) => {
@@ -25,9 +25,9 @@ __export(smooth_exports, {
25
25
  withSmoothContextProvider: () => import_SmoothContext2.withSmoothContextProvider
26
26
  });
27
27
  module.exports = __toCommonJS(smooth_exports);
28
- var import_useSmooth = require("./useSmooth.cjs");
29
- var import_SmoothContext = require("./SmoothContext.cjs");
30
- var import_SmoothContext2 = require("./SmoothContext.cjs");
28
+ var import_useSmooth = require("./useSmooth.js");
29
+ var import_SmoothContext = require("./SmoothContext.js");
30
+ var import_SmoothContext2 = require("./SmoothContext.js");
31
31
  // Annotate the CommonJS export names for ESM import in node:
32
32
  0 && (module.exports = {
33
33
  useSmooth,
@@ -25,10 +25,10 @@ __export(useSmooth_exports, {
25
25
  });
26
26
  module.exports = __toCommonJS(useSmooth_exports);
27
27
  var import_react = require("react");
28
- var import_context = require("../../context/index.cjs");
28
+ var import_context = require("../../context/index.js");
29
29
  var import_react_use_callback_ref = require("@radix-ui/react-use-callback-ref");
30
- var import_SmoothContext = require("./SmoothContext.cjs");
31
- var import_ReadonlyStore = require("../../context/ReadonlyStore.cjs");
30
+ var import_SmoothContext = require("./SmoothContext.js");
31
+ var import_ReadonlyStore = require("../../context/ReadonlyStore.js");
32
32
  var TextStreamAnimator = class {
33
33
  constructor(currentText, setText) {
34
34
  this.currentText = currentText;
package/package.json CHANGED
@@ -29,7 +29,7 @@
29
29
  "conversational-ui",
30
30
  "conversational-ai"
31
31
  ],
32
- "version": "0.7.8",
32
+ "version": "0.7.10",
33
33
  "license": "MIT",
34
34
  "exports": {
35
35
  ".": {
@@ -2,6 +2,7 @@ import { AssistantRuntimeCore } from "../runtimes/core/AssistantRuntimeCore";
2
2
  import { NestedSubscriptionSubject } from "./subscribable/NestedSubscriptionSubject";
3
3
  import { ModelConfigProvider } from "../types/ModelConfigTypes";
4
4
  import {
5
+ ThreadListItemRuntimeBinding,
5
6
  ThreadRuntime,
6
7
  ThreadRuntimeCoreBinding,
7
8
  ThreadRuntimeImpl,
@@ -46,12 +47,27 @@ export class AssistantRuntimeImpl
46
47
  AssistantRuntime
47
48
  {
48
49
  public readonly threadList;
50
+ public readonly _thread: ThreadRuntime;
49
51
 
50
52
  protected constructor(
51
53
  private readonly _core: AssistantRuntimeCore,
52
- private readonly _thread: ThreadRuntime,
54
+ runtimeFactory: new (
55
+ binding: ThreadRuntimeCoreBinding,
56
+ threadListItemBinding: ThreadListItemRuntimeBinding,
57
+ ) => ThreadRuntime = ThreadRuntimeImpl,
53
58
  ) {
54
59
  this.threadList = new ThreadListRuntimeImpl(_core.threadList);
60
+ this._thread = new runtimeFactory(
61
+ new NestedSubscriptionSubject({
62
+ path: {
63
+ ref: "threads.main",
64
+ threadSelector: { type: "main" },
65
+ },
66
+ getState: () => _core.threadList.getMainThreadRuntimeCore(),
67
+ subscribe: (callback) => _core.threadList.subscribe(callback),
68
+ }),
69
+ this.threadList.mainThreadListItem, // TODO capture "main" threadListItem from context around useLocalRuntime / useExternalStoreRuntime
70
+ );
55
71
  }
56
72
 
57
73
  public get thread() {
@@ -70,33 +86,13 @@ export class AssistantRuntimeImpl
70
86
  return this._core.registerModelConfigProvider(provider);
71
87
  }
72
88
 
73
- protected static createMainThreadRuntime(
74
- _core: AssistantRuntimeCore,
75
- CustomThreadRuntime: new (
76
- binding: ThreadRuntimeCoreBinding,
77
- ) => ThreadRuntime = ThreadRuntimeImpl,
78
- ) {
79
- return new CustomThreadRuntime(
80
- new NestedSubscriptionSubject({
81
- path: {
82
- ref: "threads.main",
83
- threadSelector: { type: "main" },
84
- },
85
- getState: () => _core.threadList.mainThread,
86
- subscribe: (callback) => _core.threadList.subscribe(callback),
87
- }),
88
- );
89
- }
90
-
91
89
  public static create(
92
90
  _core: AssistantRuntimeCore,
93
- CustomThreadRuntime: new (
91
+ runtimeFactory: new (
94
92
  binding: ThreadRuntimeCoreBinding,
93
+ threadListItemBinding: ThreadListItemRuntimeBinding,
95
94
  ) => ThreadRuntime = ThreadRuntimeImpl,
96
- ) {
97
- return new AssistantRuntimeImpl(
98
- _core,
99
- AssistantRuntimeImpl.createMainThreadRuntime(_core, CustomThreadRuntime),
100
- ) as AssistantRuntime;
95
+ ): AssistantRuntime {
96
+ return new AssistantRuntimeImpl(_core, runtimeFactory);
101
97
  }
102
98
  }
@@ -1,11 +1,22 @@
1
- import { ThreadMetadata } from "../runtimes/core/ThreadRuntimeCore";
2
1
  import { Unsubscribe } from "../types";
3
2
  import { ThreadListItemRuntimePath } from "./RuntimePathTypes";
4
3
  import { SubscribableWithState } from "./subscribable/Subscribable";
5
4
  import { ThreadListRuntimeCoreBinding } from "./ThreadListRuntime";
6
5
 
7
- export type ThreadListItemState = ThreadMetadata & {
6
+ export type ThreadListItemEventType = "switched-to" | "switched-away";
7
+
8
+ export type ThreadListItemState = {
8
9
  readonly isMain: boolean;
10
+
11
+ readonly id: string;
12
+
13
+ /**
14
+ * @deprecated This field was renamed to `id`. This field will be removed in 0.8.0.
15
+ */
16
+ readonly threadId: string;
17
+
18
+ readonly state: "archived" | "regular" | "new" | "deleted";
19
+ readonly title?: string | undefined;
9
20
  };
10
21
 
11
22
  export type ThreadListItemRuntime = {
@@ -19,6 +30,11 @@ export type ThreadListItemRuntime = {
19
30
  delete(): Promise<void>;
20
31
 
21
32
  subscribe(callback: () => void): Unsubscribe;
33
+
34
+ unstable_on(
35
+ event: ThreadListItemEventType,
36
+ callback: () => void,
37
+ ): Unsubscribe;
22
38
  };
23
39
 
24
40
  export type ThreadListItemStateBinding = SubscribableWithState<
@@ -42,31 +58,44 @@ export class ThreadListItemRuntimeImpl implements ThreadListItemRuntime {
42
58
 
43
59
  public switchTo(): Promise<void> {
44
60
  const state = this._core.getState();
45
- return this._threadListBinding.switchToThread(state.threadId);
61
+ return this._threadListBinding.switchToThread(state.id);
46
62
  }
47
63
 
48
64
  public rename(newTitle: string): Promise<void> {
49
65
  const state = this._core.getState();
50
66
 
51
- return this._threadListBinding.rename(state.threadId, newTitle);
67
+ return this._threadListBinding.rename(state.id, newTitle);
52
68
  }
53
69
 
54
70
  public archive(): Promise<void> {
55
71
  const state = this._core.getState();
56
72
 
57
- return this._threadListBinding.archive(state.threadId);
73
+ return this._threadListBinding.archive(state.id);
58
74
  }
59
75
 
60
76
  public unarchive(): Promise<void> {
61
77
  const state = this._core.getState();
62
78
 
63
- return this._threadListBinding.unarchive(state.threadId);
79
+ return this._threadListBinding.unarchive(state.id);
64
80
  }
65
81
 
66
82
  public delete(): Promise<void> {
67
83
  const state = this._core.getState();
68
84
 
69
- return this._threadListBinding.delete(state.threadId);
85
+ return this._threadListBinding.delete(state.id);
86
+ }
87
+
88
+ public unstable_on(event: ThreadListItemEventType, callback: () => void) {
89
+ let prevIsMain = this._core.getState().isMain;
90
+ return this.subscribe(() => {
91
+ const newIsMain = this._core.getState().isMain;
92
+ if (prevIsMain === newIsMain) return;
93
+ prevIsMain = newIsMain;
94
+
95
+ if (event === "switched-to" && !newIsMain) return;
96
+ if (event === "switched-away" && newIsMain) return;
97
+ callback();
98
+ });
70
99
  }
71
100
 
72
101
  public subscribe(callback: () => void): Unsubscribe {
@@ -21,6 +21,7 @@ export type ThreadListRuntime = {
21
21
 
22
22
  subscribe(callback: () => void): Unsubscribe;
23
23
 
24
+ readonly mainThreadListItem: ThreadListItemRuntime;
24
25
  getThreadListItemById(threadId: string): ThreadListItemRuntime;
25
26
  getThreadListItemByIndex(idx: number): ThreadListItemRuntime;
26
27
  getThreadListArchivedItemByIndex(idx: number): ThreadListItemRuntime;
@@ -30,10 +31,10 @@ const getThreadListState = (
30
31
  threadList: ThreadListRuntimeCore,
31
32
  ): ThreadListState => {
32
33
  return {
33
- mainThreadId: threadList.mainThread.metadata.threadId,
34
- newThread: threadList.newThread,
35
- threads: threadList.threads,
36
- archivedThreads: threadList.archivedThreads,
34
+ mainThreadId: threadList.mainThreadId,
35
+ newThread: threadList.newThreadId,
36
+ threads: threadList.threadIds,
37
+ archivedThreads: threadList.archivedThreadIds,
37
38
  };
38
39
  };
39
40
 
@@ -43,13 +44,14 @@ const getThreadListItemState = (
43
44
  ): ThreadListItemState | SKIP_UPDATE => {
44
45
  if (threadId === undefined) return SKIP_UPDATE;
45
46
 
46
- const threadData = threadList.getThreadMetadataById(threadId);
47
+ const threadData = threadList.getItemById(threadId);
47
48
  if (!threadData) return SKIP_UPDATE;
48
49
  return {
49
- threadId: threadData.threadId,
50
+ id: threadData.threadId,
51
+ threadId: threadData.threadId, // TODO remove in 0.8.0
50
52
  title: threadData.title,
51
53
  state: threadData.state,
52
- isMain: threadList.mainThread.metadata.threadId === threadId,
54
+ isMain: threadData.threadId === threadList.mainThreadId,
53
55
  };
54
56
  };
55
57
 
@@ -65,6 +67,20 @@ export class ThreadListRuntimeImpl implements ThreadListRuntime {
65
67
  });
66
68
 
67
69
  this._getState = stateBinding.getState.bind(stateBinding);
70
+
71
+ this._mainThreadListItemRuntime = new ThreadListItemRuntimeImpl(
72
+ new ShallowMemoizeSubject({
73
+ path: {
74
+ ref: `threadItems[main]`,
75
+ threadSelector: { type: "main" },
76
+ },
77
+ getState: () => {
78
+ return getThreadListItemState(this._core, this._core.mainThreadId);
79
+ },
80
+ subscribe: (callback) => this._core.subscribe(callback),
81
+ }),
82
+ this._core,
83
+ );
68
84
  }
69
85
 
70
86
  public getState(): ThreadListState {
@@ -75,6 +91,12 @@ export class ThreadListRuntimeImpl implements ThreadListRuntime {
75
91
  return this._core.subscribe(callback);
76
92
  }
77
93
 
94
+ private _mainThreadListItemRuntime;
95
+
96
+ public get mainThreadListItem() {
97
+ return this._mainThreadListItemRuntime;
98
+ }
99
+
78
100
  public getThreadListItemByIndex(idx: number) {
79
101
  return new ThreadListItemRuntimeImpl(
80
102
  new ShallowMemoizeSubject({
@@ -83,7 +105,7 @@ export class ThreadListRuntimeImpl implements ThreadListRuntime {
83
105
  threadSelector: { type: "index", index: idx },
84
106
  },
85
107
  getState: () => {
86
- return getThreadListItemState(this._core, this._core.threads[idx]);
108
+ return getThreadListItemState(this._core, this._core.threadIds[idx]);
87
109
  },
88
110
  subscribe: (callback) => this._core.subscribe(callback),
89
111
  }),
@@ -101,7 +123,7 @@ export class ThreadListRuntimeImpl implements ThreadListRuntime {
101
123
  getState: () => {
102
124
  return getThreadListItemState(
103
125
  this._core,
104
- this._core.archivedThreads[idx],
126
+ this._core.archivedThreadIds[idx],
105
127
  );
106
128
  },
107
129
  subscribe: (callback) => this._core.subscribe(callback),
@@ -4,7 +4,6 @@ import {
4
4
  ThreadRuntimeCore,
5
5
  SpeechState,
6
6
  ThreadRuntimeEventType,
7
- ThreadMetadata,
8
7
  } from "../runtimes/core/ThreadRuntimeCore";
9
8
  import { ExportedMessageRepository } from "../runtimes/utils/MessageRepository";
10
9
  import {
@@ -30,7 +29,12 @@ import {
30
29
  } from "./ComposerRuntime";
31
30
  import { LazyMemoizeSubject } from "./subscribable/LazyMemoizeSubject";
32
31
  import { SKIP_UPDATE } from "./subscribable/SKIP_UPDATE";
33
- import { MessageRuntimePath, ThreadRuntimePath } from "./RuntimePathTypes";
32
+ import {
33
+ MessageRuntimePath,
34
+ ThreadListItemRuntimePath,
35
+ ThreadRuntimePath,
36
+ } from "./RuntimePathTypes";
37
+ import { ThreadListItemState } from "./ThreadListItemRuntime";
34
38
 
35
39
  export type CreateAppendMessage =
36
40
  | string
@@ -74,17 +78,24 @@ export type ThreadRuntimeCoreBinding = SubscribableWithState<
74
78
  outerSubscribe(callback: () => void): Unsubscribe;
75
79
  };
76
80
 
81
+ export type ThreadListItemRuntimeBinding = SubscribableWithState<
82
+ ThreadListItemState,
83
+ ThreadListItemRuntimePath
84
+ >;
85
+
77
86
  export type ThreadState = {
78
87
  /**
79
88
  * The thread ID.
80
- * @deprecated This field is deprecated and will be removed in 0.8.0. Use `metadata.threadId` instead.
89
+ * @deprecated This field is deprecated and will be removed in 0.8.0. Use `useThreadListItem().id` instead.
81
90
  */
82
91
  readonly threadId: string;
83
92
 
84
93
  /**
85
94
  * The thread metadata.
95
+ *
96
+ * @deprecated Use `useThreadListItem()` instead. This field is deprecated and will be removed in 0.8.0.
86
97
  */
87
- readonly metadata: ThreadMetadata;
98
+ readonly metadata: ThreadListItemState;
88
99
 
89
100
  /**
90
101
  * Whether the thread is disabled. Disabled threads cannot receive new messages.
@@ -122,11 +133,14 @@ export type ThreadState = {
122
133
  readonly speech: SpeechState | undefined;
123
134
  };
124
135
 
125
- export const getThreadState = (runtime: ThreadRuntimeCore): ThreadState => {
136
+ export const getThreadState = (
137
+ runtime: ThreadRuntimeCore,
138
+ threadListItemState: ThreadListItemState,
139
+ ): ThreadState => {
126
140
  const lastMessage = runtime.messages.at(-1);
127
141
  return Object.freeze({
128
- threadId: runtime.metadata.threadId,
129
- metadata: runtime.metadata,
142
+ threadId: threadListItemState.id,
143
+ metadata: threadListItemState,
130
144
  capabilities: runtime.capabilities,
131
145
  isDisabled: runtime.isDisabled,
132
146
  isRunning:
@@ -208,11 +222,25 @@ export class ThreadRuntimeImpl implements ThreadRuntime {
208
222
  getStateState(): ThreadState;
209
223
  };
210
224
 
211
- constructor(threadBinding: ThreadRuntimeCoreBinding) {
225
+ constructor(
226
+ threadBinding: ThreadRuntimeCoreBinding,
227
+ threadListItemBinding: ThreadListItemRuntimeBinding,
228
+ ) {
212
229
  const stateBinding = new LazyMemoizeSubject({
213
230
  path: threadBinding.path,
214
- getState: () => getThreadState(threadBinding.getState()),
215
- subscribe: (callback) => threadBinding.subscribe(callback),
231
+ getState: () =>
232
+ getThreadState(
233
+ threadBinding.getState(),
234
+ threadListItemBinding.getState(),
235
+ ),
236
+ subscribe: (callback) => {
237
+ const sub1 = threadBinding.subscribe(callback);
238
+ const sub2 = threadListItemBinding.subscribe(callback);
239
+ return () => {
240
+ sub1();
241
+ sub2();
242
+ };
243
+ },
216
244
  });
217
245
 
218
246
  this._threadBinding = {
@@ -61,7 +61,10 @@ export const AssistantRuntimeProviderImpl: FC<
61
61
 
62
62
  return (
63
63
  <AssistantContext.Provider value={context}>
64
- <ThreadRuntimeProvider runtime={runtime.thread}>
64
+ <ThreadRuntimeProvider
65
+ runtime={runtime.thread}
66
+ listItemRuntime={runtime.threadList.mainThreadListItem}
67
+ >
65
68
  {children}
66
69
  </ThreadRuntimeProvider>
67
70
  </AssistantContext.Provider>
@@ -7,8 +7,11 @@ import { writableStore } from "../ReadonlyStore";
7
7
  import { ThreadRuntime } from "../../api/ThreadRuntime";
8
8
  import { create } from "zustand";
9
9
  import { ThreadComposerRuntime } from "../../api/ComposerRuntime";
10
+ import { ThreadListItemRuntime } from "../../api/ThreadListItemRuntime";
11
+ import { ThreadListItemRuntimeProvider } from "./ThreadListItemRuntimeProvider";
10
12
 
11
13
  type ThreadProviderProps = {
14
+ listItemRuntime: ThreadListItemRuntime;
12
15
  runtime: ThreadRuntime;
13
16
  };
14
17
 
@@ -49,7 +52,7 @@ const useThreadComposerStore = (runtime: ThreadComposerRuntime) => {
49
52
 
50
53
  export const ThreadRuntimeProvider: FC<
51
54
  PropsWithChildren<ThreadProviderProps>
52
- > = ({ children, runtime }) => {
55
+ > = ({ children, listItemRuntime: threadListItemRuntime, runtime }) => {
53
56
  const useThreadRuntime = useThreadRuntimeStore(runtime);
54
57
  const useThread = useThreadStore(runtime);
55
58
  const useThreadComposer = useThreadComposerStore(runtime.composer);
@@ -66,6 +69,10 @@ export const ThreadRuntimeProvider: FC<
66
69
  }, [useThread, useThreadRuntime, useThreadComposer]);
67
70
 
68
71
  return (
69
- <ThreadContext.Provider value={context}>{children}</ThreadContext.Provider>
72
+ <ThreadListItemRuntimeProvider runtime={threadListItemRuntime}>
73
+ <ThreadContext.Provider value={context}>
74
+ {children}
75
+ </ThreadContext.Provider>
76
+ </ThreadListItemRuntimeProvider>
70
77
  );
71
78
  };
package/src/internal.ts CHANGED
@@ -10,7 +10,7 @@ export { AssistantRuntimeImpl } from "./api/AssistantRuntime";
10
10
  export {
11
11
  ThreadRuntimeImpl,
12
12
  type ThreadRuntimeCoreBinding,
13
+ type ThreadListItemRuntimeBinding,
13
14
  } from "./api/ThreadRuntime";
14
- export { LocalThreadMetadataRuntimeCore } from "./runtimes/local/LocalThreadMetadataRuntimeCore";
15
15
 
16
16
  export * from "./utils/smooth";
@@ -20,6 +20,7 @@ import {
20
20
  import { useThread, useThreadRuntime } from "../../context/react/ThreadContext";
21
21
  import { useEscapeKeydown } from "@radix-ui/react-use-escape-keydown";
22
22
  import { useOnScrollToBottom } from "../../utils/hooks/useOnScrollToBottom";
23
+ import { useThreadListItemRuntime } from "../../context/react/ThreadListItemContext";
23
24
 
24
25
  export namespace ComposerPrimitiveInput {
25
26
  export type Element = HTMLTextAreaElement;
@@ -53,6 +54,7 @@ export const ComposerPrimitiveInput = forwardRef<
53
54
  },
54
55
  forwardedRef,
55
56
  ) => {
57
+ const threadListItemRuntime = useThreadListItemRuntime();
56
58
  const threadRuntime = useThreadRuntime();
57
59
  const composerRuntime = useComposerRuntime();
58
60
 
@@ -124,7 +126,7 @@ export const ComposerPrimitiveInput = forwardRef<
124
126
  if (composerRuntime.type !== "thread" || !unstable_focusOnThreadSwitched)
125
127
  return undefined;
126
128
 
127
- return threadRuntime.unstable_on("switched-to", focus);
129
+ return threadListItemRuntime.unstable_on("switched-to", focus);
128
130
  }, [unstable_focusOnThreadSwitched]);
129
131
 
130
132
  return (
@@ -31,7 +31,7 @@ export const ThreadListPrimitiveNew = forwardRef<
31
31
  return (
32
32
  <Primitive.button
33
33
  type="button"
34
- {...(isMain ? { "data-active": "true" } : null)}
34
+ {...(isMain ? { "data-active": "true", "aria-current": "true" } : null)}
35
35
  {...props}
36
36
  ref={forwardedRef}
37
37
  disabled={disabled || !callback}
@@ -19,7 +19,7 @@ export const ThreadListItemPrimitiveRoot = forwardRef<
19
19
 
20
20
  return (
21
21
  <Primitive.div
22
- {...(isMain ? { "data-active": "true" } : null)}
22
+ {...(isMain ? { "data-active": "true", "aria-current": "true" } : null)}
23
23
  {...props}
24
24
  ref={ref}
25
25
  />
@@ -17,7 +17,6 @@ import {
17
17
  RuntimeCapabilities,
18
18
  SubmittedFeedback,
19
19
  ThreadRuntimeEventType,
20
- ThreadMetadataRuntimeCore,
21
20
  } from "../core/ThreadRuntimeCore";
22
21
  import { DefaultEditComposerRuntimeCore } from "../composer/DefaultEditComposerRuntimeCore";
23
22
  import { SpeechSynthesisAdapter } from "../speech/SpeechAdapterTypes";
@@ -46,20 +45,13 @@ export abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {
46
45
  public abstract addToolResult(options: AddToolResultOptions): void;
47
46
  public abstract cancelRun(): void;
48
47
 
49
- public get metadata() {
50
- return this._metadata;
51
- }
52
-
53
48
  public get messages() {
54
49
  return this.repository.getMessages();
55
50
  }
56
51
 
57
52
  public readonly composer = new DefaultThreadComposerRuntimeCore(this);
58
53
 
59
- constructor(
60
- private readonly _configProvider: ModelConfigProvider,
61
- private readonly _metadata: ThreadMetadataRuntimeCore,
62
- ) {}
54
+ constructor(private readonly _configProvider: ModelConfigProvider) {}
63
55
 
64
56
  public getModelConfig() {
65
57
  return this._configProvider.getModelConfig();
@@ -1,21 +1,30 @@
1
1
  import { Unsubscribe } from "../../types";
2
- import { ThreadMetadata, ThreadRuntimeCore } from "./ThreadRuntimeCore";
2
+ import { ThreadRuntimeCore } from "./ThreadRuntimeCore";
3
+
4
+ type ThreadListItemCoreState = {
5
+ readonly threadId: string;
6
+ readonly state: "archived" | "regular" | "new" | "deleted";
7
+ readonly title?: string | undefined;
8
+
9
+ readonly runtime?: ThreadRuntimeCore | undefined;
10
+ };
3
11
 
4
12
  export type ThreadListRuntimeCore = {
5
- mainThread: ThreadRuntimeCore;
13
+ mainThreadId: string;
14
+ newThreadId: string | undefined;
6
15
 
7
- newThread: string | undefined;
8
- threads: readonly string[];
9
- archivedThreads: readonly string[];
16
+ threadIds: readonly string[];
17
+ archivedThreadIds: readonly string[];
10
18
 
11
- getThreadMetadataById(threadId: string): ThreadMetadata | undefined;
19
+ getMainThreadRuntimeCore(): ThreadRuntimeCore;
20
+ getItemById(threadId: string): ThreadListItemCoreState | undefined;
12
21
 
13
22
  switchToThread(threadId: string): Promise<void>;
14
23
  switchToNewThread(): Promise<void>;
15
24
 
16
25
  // getLoadThreadsPromise(): Promise<void>;
17
26
  // getLoadArchivedThreadsPromise(): Promise<void>;
18
- // create(): Promise<ThreadMetadata>;
27
+
19
28
  rename(threadId: string, newTitle: string): Promise<void>;
20
29
  archive(threadId: string): Promise<void>;
21
30
  unarchive(threadId: string): Promise<void>;