@assistant-ui/react 0.7.43 → 0.7.45

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 (321) hide show
  1. package/dist/api/AssistantRuntime.d.ts +11 -3
  2. package/dist/api/AssistantRuntime.d.ts.map +1 -1
  3. package/dist/api/AssistantRuntime.js +8 -17
  4. package/dist/api/AssistantRuntime.js.map +1 -1
  5. package/dist/api/AssistantRuntime.mjs +8 -17
  6. package/dist/api/AssistantRuntime.mjs.map +1 -1
  7. package/dist/api/RuntimePathTypes.d.ts +4 -1
  8. package/dist/api/RuntimePathTypes.d.ts.map +1 -1
  9. package/dist/api/RuntimePathTypes.js.map +1 -1
  10. package/dist/api/ThreadListItemRuntime.d.ts +8 -0
  11. package/dist/api/ThreadListItemRuntime.d.ts.map +1 -1
  12. package/dist/api/ThreadListItemRuntime.js +4 -0
  13. package/dist/api/ThreadListItemRuntime.js.map +1 -1
  14. package/dist/api/ThreadListItemRuntime.mjs +4 -0
  15. package/dist/api/ThreadListItemRuntime.mjs.map +1 -1
  16. package/dist/api/ThreadListRuntime.d.ts +11 -1
  17. package/dist/api/ThreadListRuntime.d.ts.map +1 -1
  18. package/dist/api/ThreadListRuntime.js +37 -1
  19. package/dist/api/ThreadListRuntime.js.map +1 -1
  20. package/dist/api/ThreadListRuntime.mjs +39 -1
  21. package/dist/api/ThreadListRuntime.mjs.map +1 -1
  22. package/dist/runtimes/adapters/RuntimeAdapterProvider.d.ts +15 -0
  23. package/dist/runtimes/adapters/RuntimeAdapterProvider.d.ts.map +1 -0
  24. package/dist/runtimes/adapters/RuntimeAdapterProvider.js +45 -0
  25. package/dist/runtimes/adapters/RuntimeAdapterProvider.js.map +1 -0
  26. package/dist/runtimes/adapters/RuntimeAdapterProvider.mjs +19 -0
  27. package/dist/runtimes/adapters/RuntimeAdapterProvider.mjs.map +1 -0
  28. package/dist/runtimes/{attachment → adapters/attachment}/AttachmentAdapter.d.ts +1 -1
  29. package/dist/runtimes/adapters/attachment/AttachmentAdapter.d.ts.map +1 -0
  30. package/dist/runtimes/{attachment → adapters/attachment}/AttachmentAdapter.js +1 -1
  31. package/dist/runtimes/adapters/attachment/AttachmentAdapter.js.map +1 -0
  32. package/dist/runtimes/{attachment → adapters/attachment}/CompositeAttachmentAdapter.d.ts +2 -2
  33. package/dist/runtimes/adapters/attachment/CompositeAttachmentAdapter.d.ts.map +1 -0
  34. package/dist/runtimes/{attachment → adapters/attachment}/CompositeAttachmentAdapter.js +1 -1
  35. package/dist/runtimes/adapters/attachment/CompositeAttachmentAdapter.js.map +1 -0
  36. package/dist/runtimes/{attachment → adapters/attachment}/CompositeAttachmentAdapter.mjs +1 -1
  37. package/dist/runtimes/adapters/attachment/CompositeAttachmentAdapter.mjs.map +1 -0
  38. package/dist/runtimes/{attachment → adapters/attachment}/SimpleImageAttachmentAdapter.d.ts +1 -1
  39. package/dist/runtimes/adapters/attachment/SimpleImageAttachmentAdapter.d.ts.map +1 -0
  40. package/dist/runtimes/{attachment → adapters/attachment}/SimpleImageAttachmentAdapter.js +1 -1
  41. package/dist/runtimes/adapters/attachment/SimpleImageAttachmentAdapter.js.map +1 -0
  42. package/dist/runtimes/{attachment → adapters/attachment}/SimpleImageAttachmentAdapter.mjs +1 -1
  43. package/dist/runtimes/adapters/attachment/SimpleImageAttachmentAdapter.mjs.map +1 -0
  44. package/dist/runtimes/{attachment → adapters/attachment}/SimpleTextAttachmentAdapter.d.ts +1 -1
  45. package/dist/runtimes/adapters/attachment/SimpleTextAttachmentAdapter.d.ts.map +1 -0
  46. package/dist/runtimes/{attachment → adapters/attachment}/SimpleTextAttachmentAdapter.js +1 -1
  47. package/dist/runtimes/adapters/attachment/SimpleTextAttachmentAdapter.js.map +1 -0
  48. package/dist/runtimes/{attachment → adapters/attachment}/SimpleTextAttachmentAdapter.mjs +1 -1
  49. package/dist/runtimes/adapters/attachment/SimpleTextAttachmentAdapter.mjs.map +1 -0
  50. package/dist/runtimes/adapters/attachment/index.d.ts.map +1 -0
  51. package/dist/runtimes/{attachment → adapters/attachment}/index.js +1 -1
  52. package/dist/runtimes/adapters/attachment/index.js.map +1 -0
  53. package/dist/runtimes/{attachment → adapters/attachment}/index.mjs +1 -1
  54. package/dist/runtimes/adapters/attachment/index.mjs.map +1 -0
  55. package/dist/runtimes/{feedback → adapters/feedback}/FeedbackAdapter.d.ts +1 -1
  56. package/dist/runtimes/adapters/feedback/FeedbackAdapter.d.ts.map +1 -0
  57. package/dist/runtimes/{feedback → adapters/feedback}/FeedbackAdapter.js +1 -1
  58. package/dist/runtimes/adapters/feedback/FeedbackAdapter.js.map +1 -0
  59. package/dist/runtimes/adapters/feedback/index.d.ts.map +1 -0
  60. package/dist/runtimes/{feedback → adapters/feedback}/index.js +1 -1
  61. package/dist/runtimes/adapters/feedback/index.js.map +1 -0
  62. package/dist/runtimes/adapters/index.d.ts +4 -0
  63. package/dist/runtimes/adapters/index.d.ts.map +1 -0
  64. package/dist/runtimes/adapters/index.js +29 -0
  65. package/dist/runtimes/adapters/index.js.map +1 -0
  66. package/dist/runtimes/adapters/index.mjs +5 -0
  67. package/dist/runtimes/adapters/index.mjs.map +1 -0
  68. package/dist/runtimes/{speech → adapters/speech}/SpeechAdapterTypes.d.ts +1 -1
  69. package/dist/runtimes/adapters/speech/SpeechAdapterTypes.d.ts.map +1 -0
  70. package/dist/runtimes/{speech → adapters/speech}/SpeechAdapterTypes.js +1 -1
  71. package/dist/runtimes/adapters/speech/SpeechAdapterTypes.js.map +1 -0
  72. package/dist/runtimes/adapters/speech/WebSpeechSynthesisAdapter.d.ts.map +1 -0
  73. package/dist/runtimes/{speech → adapters/speech}/WebSpeechSynthesisAdapter.js +1 -1
  74. package/dist/runtimes/adapters/speech/WebSpeechSynthesisAdapter.js.map +1 -0
  75. package/dist/runtimes/{speech → adapters/speech}/WebSpeechSynthesisAdapter.mjs +1 -1
  76. package/dist/runtimes/adapters/speech/WebSpeechSynthesisAdapter.mjs.map +1 -0
  77. package/dist/runtimes/adapters/speech/index.d.ts.map +1 -0
  78. package/dist/runtimes/{speech → adapters/speech}/index.js +1 -1
  79. package/dist/runtimes/adapters/speech/index.js.map +1 -0
  80. package/dist/runtimes/{speech → adapters/speech}/index.mjs +1 -1
  81. package/dist/runtimes/adapters/speech/index.mjs.map +1 -0
  82. package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.d.ts +6 -0
  83. package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.d.ts.map +1 -0
  84. package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.js +19 -0
  85. package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.js.map +1 -0
  86. package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.mjs +1 -0
  87. package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.mjs.map +1 -0
  88. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts +1 -1
  89. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
  90. package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
  91. package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs.map +1 -1
  92. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.d.ts +1 -1
  93. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.d.ts.map +1 -1
  94. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js.map +1 -1
  95. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs.map +1 -1
  96. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.d.ts +1 -1
  97. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.d.ts.map +1 -1
  98. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.js.map +1 -1
  99. package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.mjs.map +1 -1
  100. package/dist/runtimes/core/AssistantRuntimeCore.d.ts +1 -1
  101. package/dist/runtimes/core/AssistantRuntimeCore.d.ts.map +1 -1
  102. package/dist/runtimes/core/AssistantRuntimeCore.js.map +1 -1
  103. package/dist/runtimes/core/BaseAssistantRuntimeCore.d.ts +1 -1
  104. package/dist/runtimes/core/BaseAssistantRuntimeCore.d.ts.map +1 -1
  105. package/dist/runtimes/core/BaseAssistantRuntimeCore.js.map +1 -1
  106. package/dist/runtimes/core/BaseAssistantRuntimeCore.mjs.map +1 -1
  107. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +3 -3
  108. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
  109. package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
  110. package/dist/runtimes/core/BaseThreadRuntimeCore.mjs.map +1 -1
  111. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +5 -0
  112. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
  113. package/dist/runtimes/core/ThreadListRuntimeCore.js.map +1 -1
  114. package/dist/runtimes/core/ThreadRuntimeCore.d.ts +2 -2
  115. package/dist/runtimes/core/ThreadRuntimeCore.d.ts.map +1 -1
  116. package/dist/runtimes/core/ThreadRuntimeCore.js.map +1 -1
  117. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +3 -3
  118. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
  119. package/dist/runtimes/external-store/ExternalStoreAdapter.js.map +1 -1
  120. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts +1 -1
  121. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts.map +1 -1
  122. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js +4 -4
  123. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js.map +1 -1
  124. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs +4 -4
  125. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs.map +1 -1
  126. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +2 -0
  127. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
  128. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +6 -0
  129. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
  130. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs +6 -0
  131. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs.map +1 -1
  132. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
  133. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +7 -0
  134. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
  135. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.mjs +7 -0
  136. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.mjs.map +1 -1
  137. package/dist/runtimes/index.d.ts +1 -3
  138. package/dist/runtimes/index.d.ts.map +1 -1
  139. package/dist/runtimes/index.js +3 -7
  140. package/dist/runtimes/index.js.map +1 -1
  141. package/dist/runtimes/index.mjs +1 -3
  142. package/dist/runtimes/index.mjs.map +1 -1
  143. package/dist/runtimes/local/LocalRuntimeCore.d.ts +1 -1
  144. package/dist/runtimes/local/LocalRuntimeCore.d.ts.map +1 -1
  145. package/dist/runtimes/local/LocalRuntimeCore.js +5 -5
  146. package/dist/runtimes/local/LocalRuntimeCore.js.map +1 -1
  147. package/dist/runtimes/local/LocalRuntimeCore.mjs +5 -5
  148. package/dist/runtimes/local/LocalRuntimeCore.mjs.map +1 -1
  149. package/dist/runtimes/local/LocalRuntimeOptions.d.ts +6 -3
  150. package/dist/runtimes/local/LocalRuntimeOptions.d.ts.map +1 -1
  151. package/dist/runtimes/local/LocalRuntimeOptions.js.map +1 -1
  152. package/dist/runtimes/local/LocalRuntimeOptions.mjs.map +1 -1
  153. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +2 -0
  154. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
  155. package/dist/runtimes/local/LocalThreadListRuntimeCore.js +8 -0
  156. package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
  157. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs +8 -0
  158. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs.map +1 -1
  159. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts +1 -0
  160. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
  161. package/dist/runtimes/local/LocalThreadRuntimeCore.js +7 -3
  162. package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
  163. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +7 -3
  164. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
  165. package/dist/runtimes/local/useLocalRuntime.js +1 -1
  166. package/dist/runtimes/local/useLocalRuntime.js.map +1 -1
  167. package/dist/runtimes/local/useLocalRuntime.mjs +1 -1
  168. package/dist/runtimes/local/useLocalRuntime.mjs.map +1 -1
  169. package/dist/runtimes/remote-thread-list/OptimisticState.d.ts +1 -1
  170. package/dist/runtimes/remote-thread-list/OptimisticState.d.ts.map +1 -1
  171. package/dist/runtimes/remote-thread-list/OptimisticState.js +7 -5
  172. package/dist/runtimes/remote-thread-list/OptimisticState.js.map +1 -1
  173. package/dist/runtimes/remote-thread-list/OptimisticState.mjs +7 -5
  174. package/dist/runtimes/remote-thread-list/OptimisticState.mjs.map +1 -1
  175. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  176. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js +9 -1
  177. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -1
  178. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs +13 -2
  179. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs.map +1 -1
  180. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +41 -3
  181. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  182. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +46 -14
  183. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  184. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs +46 -14
  185. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs.map +1 -1
  186. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.d.ts +3 -2
  187. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.d.ts.map +1 -1
  188. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.js +9 -4
  189. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.js.map +1 -1
  190. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.mjs +9 -4
  191. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAPI.mjs.map +1 -1
  192. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.d.ts +6 -3
  193. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.d.ts.map +1 -1
  194. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.js +13 -1
  195. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.js.map +1 -1
  196. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.mjs +13 -1
  197. package/dist/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.mjs.map +1 -1
  198. package/dist/runtimes/remote-thread-list/cloud/index.d.ts +0 -1
  199. package/dist/runtimes/remote-thread-list/cloud/index.d.ts.map +1 -1
  200. package/dist/runtimes/remote-thread-list/cloud/index.js +0 -3
  201. package/dist/runtimes/remote-thread-list/cloud/index.js.map +1 -1
  202. package/dist/runtimes/remote-thread-list/cloud/index.mjs +0 -2
  203. package/dist/runtimes/remote-thread-list/cloud/index.mjs.map +1 -1
  204. package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  205. package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.js +26 -49
  206. package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.js.map +1 -1
  207. package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.mjs +27 -56
  208. package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.mjs.map +1 -1
  209. package/dist/runtimes/remote-thread-list/types.d.ts +2 -2
  210. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  211. package/dist/runtimes/remote-thread-list/types.js.map +1 -1
  212. package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js +5 -5
  213. package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js.map +1 -1
  214. package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs +5 -5
  215. package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs.map +1 -1
  216. package/dist/runtimes/utils/MessageRepository.d.ts +4 -0
  217. package/dist/runtimes/utils/MessageRepository.d.ts.map +1 -1
  218. package/dist/runtimes/utils/MessageRepository.js.map +1 -1
  219. package/dist/runtimes/utils/MessageRepository.mjs.map +1 -1
  220. package/dist/ui/assistant-message.d.ts.map +1 -1
  221. package/dist/ui/assistant-message.js +14 -10
  222. package/dist/ui/assistant-message.js.map +1 -1
  223. package/dist/ui/assistant-message.mjs +14 -10
  224. package/dist/ui/assistant-message.mjs.map +1 -1
  225. package/dist/ui/thread-config.d.ts +1 -0
  226. package/dist/ui/thread-config.d.ts.map +1 -1
  227. package/dist/ui/thread-config.js.map +1 -1
  228. package/dist/ui/thread-config.mjs.map +1 -1
  229. package/package.json +1 -1
  230. package/src/api/AssistantRuntime.ts +19 -18
  231. package/src/api/RuntimePathTypes.ts +6 -1
  232. package/src/api/ThreadListItemRuntime.ts +9 -0
  233. package/src/api/ThreadListRuntime.ts +56 -1
  234. package/src/runtimes/adapters/RuntimeAdapterProvider.tsx +31 -0
  235. package/src/runtimes/{attachment → adapters/attachment}/AttachmentAdapter.ts +1 -1
  236. package/src/runtimes/{attachment → adapters/attachment}/CompositeAttachmentAdapter.ts +1 -1
  237. package/src/runtimes/{attachment → adapters/attachment}/SimpleImageAttachmentAdapter.ts +1 -1
  238. package/src/runtimes/{attachment → adapters/attachment}/SimpleTextAttachmentAdapter.ts +1 -1
  239. package/src/runtimes/{feedback → adapters/feedback}/FeedbackAdapter.ts +1 -1
  240. package/src/runtimes/adapters/index.ts +3 -0
  241. package/src/runtimes/{speech → adapters/speech}/SpeechAdapterTypes.ts +1 -1
  242. package/src/runtimes/adapters/thread-history/ThreadHistoryAdapter.ts +9 -0
  243. package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +1 -1
  244. package/src/runtimes/composer/DefaultEditComposerRuntimeCore.tsx +1 -1
  245. package/src/runtimes/composer/DefaultThreadComposerRuntimeCore.tsx +1 -1
  246. package/src/runtimes/core/AssistantRuntimeCore.tsx +1 -1
  247. package/src/runtimes/core/BaseAssistantRuntimeCore.tsx +1 -1
  248. package/src/runtimes/core/BaseThreadRuntimeCore.tsx +3 -3
  249. package/src/runtimes/core/ThreadListRuntimeCore.tsx +6 -0
  250. package/src/runtimes/core/ThreadRuntimeCore.tsx +2 -1
  251. package/src/runtimes/external-store/ExternalStoreAdapter.tsx +3 -3
  252. package/src/runtimes/external-store/ExternalStoreRuntimeCore.tsx +4 -4
  253. package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +8 -0
  254. package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +8 -0
  255. package/src/runtimes/index.ts +1 -3
  256. package/src/runtimes/local/LocalRuntimeCore.tsx +5 -5
  257. package/src/runtimes/local/LocalRuntimeOptions.tsx +5 -3
  258. package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +10 -0
  259. package/src/runtimes/local/LocalThreadRuntimeCore.tsx +7 -3
  260. package/src/runtimes/local/useLocalRuntime.tsx +1 -1
  261. package/src/runtimes/remote-thread-list/OptimisticState.ts +15 -8
  262. package/src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +15 -2
  263. package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +56 -16
  264. package/src/runtimes/remote-thread-list/cloud/AssistantCloudAPI.tsx +13 -5
  265. package/src/runtimes/remote-thread-list/cloud/AssistantCloudAuthStrategy.tsx +24 -4
  266. package/src/runtimes/remote-thread-list/cloud/index.ts +0 -1
  267. package/src/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.tsx +36 -60
  268. package/src/runtimes/remote-thread-list/types.tsx +2 -5
  269. package/src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx +5 -5
  270. package/src/runtimes/utils/MessageRepository.tsx +5 -0
  271. package/src/ui/assistant-message.tsx +2 -0
  272. package/src/ui/thread-config.tsx +1 -0
  273. package/dist/runtimes/attachment/AttachmentAdapter.d.ts.map +0 -1
  274. package/dist/runtimes/attachment/AttachmentAdapter.js.map +0 -1
  275. package/dist/runtimes/attachment/CompositeAttachmentAdapter.d.ts.map +0 -1
  276. package/dist/runtimes/attachment/CompositeAttachmentAdapter.js.map +0 -1
  277. package/dist/runtimes/attachment/CompositeAttachmentAdapter.mjs.map +0 -1
  278. package/dist/runtimes/attachment/SimpleImageAttachmentAdapter.d.ts.map +0 -1
  279. package/dist/runtimes/attachment/SimpleImageAttachmentAdapter.js.map +0 -1
  280. package/dist/runtimes/attachment/SimpleImageAttachmentAdapter.mjs.map +0 -1
  281. package/dist/runtimes/attachment/SimpleTextAttachmentAdapter.d.ts.map +0 -1
  282. package/dist/runtimes/attachment/SimpleTextAttachmentAdapter.js.map +0 -1
  283. package/dist/runtimes/attachment/SimpleTextAttachmentAdapter.mjs.map +0 -1
  284. package/dist/runtimes/attachment/index.d.ts.map +0 -1
  285. package/dist/runtimes/attachment/index.js.map +0 -1
  286. package/dist/runtimes/attachment/index.mjs.map +0 -1
  287. package/dist/runtimes/feedback/FeedbackAdapter.d.ts.map +0 -1
  288. package/dist/runtimes/feedback/FeedbackAdapter.js.map +0 -1
  289. package/dist/runtimes/feedback/index.d.ts.map +0 -1
  290. package/dist/runtimes/feedback/index.js.map +0 -1
  291. package/dist/runtimes/remote-thread-list/cloud/CloudThreadListItemRuntime.d.ts +0 -22
  292. package/dist/runtimes/remote-thread-list/cloud/CloudThreadListItemRuntime.d.ts.map +0 -1
  293. package/dist/runtimes/remote-thread-list/cloud/CloudThreadListItemRuntime.js +0 -85
  294. package/dist/runtimes/remote-thread-list/cloud/CloudThreadListItemRuntime.js.map +0 -1
  295. package/dist/runtimes/remote-thread-list/cloud/CloudThreadListItemRuntime.mjs +0 -60
  296. package/dist/runtimes/remote-thread-list/cloud/CloudThreadListItemRuntime.mjs.map +0 -1
  297. package/dist/runtimes/speech/SpeechAdapterTypes.d.ts.map +0 -1
  298. package/dist/runtimes/speech/SpeechAdapterTypes.js.map +0 -1
  299. package/dist/runtimes/speech/WebSpeechSynthesisAdapter.d.ts.map +0 -1
  300. package/dist/runtimes/speech/WebSpeechSynthesisAdapter.js.map +0 -1
  301. package/dist/runtimes/speech/WebSpeechSynthesisAdapter.mjs.map +0 -1
  302. package/dist/runtimes/speech/index.d.ts.map +0 -1
  303. package/dist/runtimes/speech/index.js.map +0 -1
  304. package/dist/runtimes/speech/index.mjs.map +0 -1
  305. package/src/runtimes/remote-thread-list/cloud/CloudThreadListItemRuntime.tsx +0 -89
  306. /package/dist/runtimes/{attachment → adapters/attachment}/AttachmentAdapter.mjs +0 -0
  307. /package/dist/runtimes/{attachment → adapters/attachment}/AttachmentAdapter.mjs.map +0 -0
  308. /package/dist/runtimes/{attachment → adapters/attachment}/index.d.ts +0 -0
  309. /package/dist/runtimes/{feedback → adapters/feedback}/FeedbackAdapter.mjs +0 -0
  310. /package/dist/runtimes/{feedback → adapters/feedback}/FeedbackAdapter.mjs.map +0 -0
  311. /package/dist/runtimes/{feedback → adapters/feedback}/index.d.ts +0 -0
  312. /package/dist/runtimes/{feedback → adapters/feedback}/index.mjs +0 -0
  313. /package/dist/runtimes/{feedback → adapters/feedback}/index.mjs.map +0 -0
  314. /package/dist/runtimes/{speech → adapters/speech}/SpeechAdapterTypes.mjs +0 -0
  315. /package/dist/runtimes/{speech → adapters/speech}/SpeechAdapterTypes.mjs.map +0 -0
  316. /package/dist/runtimes/{speech → adapters/speech}/WebSpeechSynthesisAdapter.d.ts +0 -0
  317. /package/dist/runtimes/{speech → adapters/speech}/index.d.ts +0 -0
  318. /package/src/runtimes/{attachment → adapters/attachment}/index.ts +0 -0
  319. /package/src/runtimes/{feedback → adapters/feedback}/index.ts +0 -0
  320. /package/src/runtimes/{speech → adapters/speech}/WebSpeechSynthesisAdapter.ts +0 -0
  321. /package/src/runtimes/{speech → adapters/speech}/index.ts +0 -0
@@ -1,13 +1,15 @@
1
- import { AttachmentAdapter } from "../attachment/AttachmentAdapter";
1
+ import { ThreadHistoryAdapter } from "../adapters/thread-history/ThreadHistoryAdapter";
2
+ import { AttachmentAdapter } from "../adapters/attachment/AttachmentAdapter";
2
3
  import { ThreadMessageLike } from "../external-store";
3
- import { FeedbackAdapter } from "../feedback/FeedbackAdapter";
4
- import { SpeechSynthesisAdapter } from "../speech/SpeechAdapterTypes";
4
+ import { FeedbackAdapter } from "../adapters/feedback/FeedbackAdapter";
5
+ import { SpeechSynthesisAdapter } from "../adapters/speech/SpeechAdapterTypes";
5
6
  import { ChatModelAdapter } from "./ChatModelAdapter";
6
7
 
7
8
  export type LocalRuntimeOptionsBase = {
8
9
  maxSteps?: number | undefined;
9
10
  adapters: {
10
11
  chatModel: ChatModelAdapter;
12
+ history?: ThreadHistoryAdapter | undefined;
11
13
  attachments?: AttachmentAdapter | undefined;
12
14
  speech?: SpeechSynthesisAdapter | undefined;
13
15
  feedback?: FeedbackAdapter | undefined;
@@ -52,6 +52,12 @@ export class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {
52
52
  return result;
53
53
  }
54
54
 
55
+ public getThreadRuntimeCore(threadId: string) {
56
+ const result = this._threadData.get(threadId)?.runtime;
57
+ if (!result) throw new Error("Thread not found.");
58
+ return result;
59
+ }
60
+
55
61
  public getLoadThreadsPromise(): Promise<void> {
56
62
  return RESOLVED_PROMISE;
57
63
  }
@@ -212,6 +218,10 @@ export class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {
212
218
  return Promise.resolve();
213
219
  }
214
220
 
221
+ public initialize(): never {
222
+ throw new Error("Method not implemented.");
223
+ }
224
+
215
225
  private _subscriptions = new Set<() => void>();
216
226
 
217
227
  public subscribe(callback: () => void): Unsubscribe {
@@ -127,9 +127,13 @@ export class LocalThreadRuntimeCore
127
127
 
128
128
  this._notifyEventSubscribers("run-start");
129
129
 
130
- do {
131
- message = await this.performRoundtrip(parentId, message, runConfig);
132
- } while (shouldContinue(message));
130
+ try {
131
+ do {
132
+ message = await this.performRoundtrip(parentId, message, runConfig);
133
+ } while (shouldContinue(message));
134
+ } finally {
135
+ this._notifyEventSubscribers("run-end");
136
+ }
133
137
  }
134
138
 
135
139
  private async performRoundtrip(
@@ -43,7 +43,7 @@ export const useLocalRuntime = (
43
43
  const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));
44
44
 
45
45
  useEffect(() => {
46
- runtime.threadList.getMainThreadRuntimeCore().__internal_setOptions(opt);
46
+ runtime.threads.getMainThreadRuntimeCore().__internal_setOptions(opt);
47
47
  }, [runtime, opt]);
48
48
 
49
49
  return useMemo(() => LocalRuntimeImpl.create(runtime), [runtime]);
@@ -10,7 +10,11 @@ type Transform<TState, TResult> = {
10
10
  optimistic?: (state: TState) => TState;
11
11
 
12
12
  /** transform the state only while loading */
13
- loading?: (state: TState) => TState;
13
+ loading?: (state: TState, task: Promise<TResult>) => TState;
14
+ };
15
+
16
+ type PendingTransform<TState, TResult> = Transform<TState, TResult> & {
17
+ task: Promise<TResult>;
14
18
  };
15
19
 
16
20
  const pipeTransforms = <TState, TExtra>(
@@ -24,7 +28,8 @@ const pipeTransforms = <TState, TExtra>(
24
28
  };
25
29
 
26
30
  export class OptimisticState<TState> extends BaseSubscribable {
27
- private readonly _pendingTransforms: Array<Transform<TState, any>> = [];
31
+ private readonly _pendingTransforms: Array<PendingTransform<TState, any>> =
32
+ [];
28
33
  private _baseValue: TState;
29
34
  private _cachedValue: TState;
30
35
 
@@ -36,7 +41,7 @@ export class OptimisticState<TState> extends BaseSubscribable {
36
41
 
37
42
  private _updateState(): void {
38
43
  this._cachedValue = this._pendingTransforms.reduce((state, transform) => {
39
- return pipeTransforms(state, undefined, [
44
+ return pipeTransforms(state, transform.task, [
40
45
  transform.loading,
41
46
  transform.optimistic,
42
47
  ]);
@@ -61,18 +66,20 @@ export class OptimisticState<TState> extends BaseSubscribable {
61
66
  public async optimisticUpdate<TResult>(
62
67
  transform: Transform<TState, TResult>,
63
68
  ): Promise<TResult> {
64
- this._pendingTransforms.push(transform);
65
- this._updateState();
66
-
69
+ const task = transform.execute();
70
+ const pendingTransform = { ...transform, task };
67
71
  try {
68
- const result = await transform.execute();
72
+ this._pendingTransforms.push(pendingTransform);
73
+ this._updateState();
74
+
75
+ const result = await task;
69
76
  this._baseValue = pipeTransforms(this._baseValue, result, [
70
77
  transform.optimistic,
71
78
  transform.then,
72
79
  ]);
73
80
  return result;
74
81
  } finally {
75
- const index = this._pendingTransforms.indexOf(transform);
82
+ const index = this._pendingTransforms.indexOf(pendingTransform);
76
83
  if (index > -1) {
77
84
  this._pendingTransforms.splice(index, 1);
78
85
  }
@@ -13,7 +13,10 @@ import {
13
13
  import { UseBoundStore, StoreApi, create } from "zustand";
14
14
  import { useAssistantRuntime } from "../../context";
15
15
  import { ThreadListItemRuntimeProvider } from "../../context/providers/ThreadListItemRuntimeProvider";
16
- import { useThreadListItem } from "../../context/react/ThreadListItemContext";
16
+ import {
17
+ useThreadListItem,
18
+ useThreadListItemRuntime,
19
+ } from "../../context/react/ThreadListItemContext";
17
20
  import { ThreadRuntimeCore, ThreadRuntimeImpl } from "../../internal";
18
21
  import { BaseSubscribable } from "./BaseSubscribable";
19
22
  import { AssistantRuntime } from "../../api";
@@ -112,6 +115,16 @@ export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
112
115
  return threadBinding.outerSubscribe(updateRuntime);
113
116
  }, [threadBinding]);
114
117
 
118
+ // auto initialize thread
119
+ const threadListItemRuntime = useThreadListItemRuntime();
120
+ useEffect(() => {
121
+ return runtime.threads.main.unstable_on("initialize", () => {
122
+ if (threadListItemRuntime.getState().status === "new") {
123
+ threadListItemRuntime.initialize();
124
+ }
125
+ });
126
+ }, [runtime, threadListItemRuntime]);
127
+
115
128
  return null;
116
129
  };
117
130
 
@@ -121,7 +134,7 @@ export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
121
134
  }> = memo(({ threadId, provider: Provider }) => {
122
135
  const assistantRuntime = useAssistantRuntime();
123
136
  const threadListItemRuntime = useMemo(
124
- () => assistantRuntime.threadList.getItemById(threadId),
137
+ () => assistantRuntime.threads.getItemById(threadId),
125
138
  [assistantRuntime, threadId],
126
139
  );
127
140
 
@@ -24,6 +24,15 @@ type RemoteThreadData =
24
24
  }
25
25
  | {
26
26
  readonly threadId: string;
27
+ readonly initializeTask: Promise<RemoteThreadInitializeResponse>;
28
+ readonly remoteId?: undefined;
29
+ readonly externalId?: undefined;
30
+ readonly status: "regular" | "archived";
31
+ readonly title?: string | undefined;
32
+ }
33
+ | {
34
+ readonly threadId: string;
35
+ readonly initializeTask: Promise<RemoteThreadInitializeResponse>;
27
36
  readonly remoteId: string;
28
37
  readonly externalId: string | undefined;
29
38
  readonly status: "regular" | "archived";
@@ -188,6 +197,10 @@ export class RemoteThreadListThreadListRuntimeCore
188
197
  externalId: thread.externalId,
189
198
  status: thread.status,
190
199
  title: thread.title,
200
+ initializeTask: Promise.resolve({
201
+ remoteId: thread.remoteId,
202
+ externalId: thread.externalId,
203
+ }),
191
204
  };
192
205
  }
193
206
 
@@ -244,8 +257,7 @@ export class RemoteThreadListThreadListRuntimeCore
244
257
 
245
258
  public __internal_bindAdapter() {
246
259
  this.getLoadThreadsPromise(); // begin loading on initial bind
247
- return this._adapter.subscribe({
248
- onInitialize: this._onInitialize,
260
+ return this._adapter.subscribe?.({
249
261
  onGenerateTitle: this._onGenerateTitle,
250
262
  });
251
263
  }
@@ -272,6 +284,15 @@ export class RemoteThreadListThreadListRuntimeCore
272
284
  return result;
273
285
  }
274
286
 
287
+ public getThreadRuntimeCore(threadIdOrRemoteId: string) {
288
+ const data = this.getItemById(threadIdOrRemoteId);
289
+ if (!data) throw new Error("Thread not found");
290
+
291
+ const result = this._hookManager.getThreadRuntimeCore(data.threadId);
292
+ if (!result) throw new Error("Thread not found");
293
+ return result;
294
+ }
295
+
275
296
  public getItemById(threadIdOrRemoteId: string) {
276
297
  return getThreadData(this._state.value, threadIdOrRemoteId);
277
298
  }
@@ -332,20 +353,34 @@ export class RemoteThreadListThreadListRuntimeCore
332
353
  return this.switchToThread(threadId);
333
354
  }
334
355
 
335
- private _onInitialize = async (
336
- threadId: string,
337
- begin: () => Promise<RemoteThreadInitializeResponse>,
338
- ) => {
339
- if (this._state.value.newThreadId !== threadId)
340
- throw new Error("The provided thread is already initialized");
356
+ public initialize = async (threadId: string) => {
357
+ if (this._state.value.newThreadId !== threadId) {
358
+ const data = this.getItemById(threadId);
359
+ if (!data) throw new Error("Thread not found");
360
+ if (data.status === "new") throw new Error("Unexpected new state");
361
+ return data.initializeTask;
362
+ }
341
363
 
342
- await this._state.optimisticUpdate({
364
+ return this._state.optimisticUpdate({
343
365
  execute: () => {
344
- return begin();
366
+ return this._adapter.initialize(threadId);
345
367
  },
346
368
  optimistic: (state) => {
347
369
  return updateStatusReducer(state, threadId, "regular");
348
370
  },
371
+ loading: (state, task) => {
372
+ const mappingId = createThreadMappingId(threadId);
373
+ return {
374
+ ...state,
375
+ threadData: {
376
+ ...state.threadData,
377
+ [mappingId]: {
378
+ ...state.threadData[mappingId],
379
+ initializeTask: task,
380
+ },
381
+ },
382
+ };
383
+ },
349
384
  then: (state, { remoteId, externalId }) => {
350
385
  const data = getThreadData(state, threadId);
351
386
  if (!data) return state;
@@ -359,8 +394,9 @@ export class RemoteThreadListThreadListRuntimeCore
359
394
  },
360
395
  threadData: {
361
396
  ...state.threadData,
362
- [threadId]: {
397
+ [mappingId]: {
363
398
  ...data,
399
+ initializeTask: Promise.resolve({ remoteId, externalId }),
364
400
  remoteId,
365
401
  externalId,
366
402
  },
@@ -404,8 +440,9 @@ export class RemoteThreadListThreadListRuntimeCore
404
440
  if (data.status === "new") throw new Error("Thread is not yet initialized");
405
441
 
406
442
  return this._state.optimisticUpdate({
407
- execute: () => {
408
- return this._adapter.rename(data.remoteId, newTitle);
443
+ execute: async () => {
444
+ const { remoteId } = await data.initializeTask;
445
+ return this._adapter.rename(remoteId, newTitle);
409
446
  },
410
447
  optimistic: (state) => {
411
448
  const data = getThreadData(state, threadIdOrRemoteId);
@@ -446,7 +483,8 @@ export class RemoteThreadListThreadListRuntimeCore
446
483
  return this._state.optimisticUpdate({
447
484
  execute: async () => {
448
485
  await this._ensureThreadIsNotMain(data.threadId);
449
- return this._adapter.archive(data.remoteId);
486
+ const { remoteId } = await data.initializeTask;
487
+ return this._adapter.archive(remoteId);
450
488
  },
451
489
  optimistic: (state) => {
452
490
  return updateStatusReducer(state, data.threadId, "archived");
@@ -462,7 +500,8 @@ export class RemoteThreadListThreadListRuntimeCore
462
500
  return this._state.optimisticUpdate({
463
501
  execute: async () => {
464
502
  try {
465
- return await this._adapter.unarchive(data.remoteId);
503
+ const { remoteId } = await data.initializeTask;
504
+ return await this._adapter.unarchive(remoteId);
466
505
  } catch (error) {
467
506
  await this._ensureThreadIsNotMain(data.threadId);
468
507
  throw error;
@@ -483,7 +522,8 @@ export class RemoteThreadListThreadListRuntimeCore
483
522
  return this._state.optimisticUpdate({
484
523
  execute: async () => {
485
524
  await this._ensureThreadIsNotMain(data.threadId);
486
- return await this._adapter.delete(data.remoteId);
525
+ const { remoteId } = await data.initializeTask;
526
+ return await this._adapter.delete(remoteId);
487
527
  },
488
528
  optimistic: (state) => {
489
529
  return updateStatusReducer(state, data.threadId, "deleted");
@@ -7,7 +7,7 @@ import {
7
7
  export type AssistantCloudConfig =
8
8
  | {
9
9
  baseUrl: string;
10
- authToken(): Promise<string>;
10
+ authToken: (() => Promise<string | null>) | undefined;
11
11
  }
12
12
  | {
13
13
  apiKey: string;
@@ -30,16 +30,16 @@ type MakeRequestOptions = {
30
30
  };
31
31
 
32
32
  export class AssistantCloudAPI {
33
- private _tokenManager: AssistantCloudAuthStrategy;
33
+ private _auth: AssistantCloudAuthStrategy;
34
34
  private _baseUrl;
35
35
 
36
36
  constructor(config: AssistantCloudConfig) {
37
37
  if ("authToken" in config) {
38
38
  this._baseUrl = config.baseUrl;
39
- this._tokenManager = new AssistantCloudJWTAuthStrategy(config.authToken);
39
+ this._auth = new AssistantCloudJWTAuthStrategy(config.authToken);
40
40
  } else {
41
41
  this._baseUrl = "https://backend.assistant-api.com";
42
- this._tokenManager = new AssistantCloudAPIKeyAuthStrategy(
42
+ this._auth = new AssistantCloudAPIKeyAuthStrategy(
43
43
  config.apiKey,
44
44
  config.userId,
45
45
  config.workspaceId,
@@ -47,11 +47,17 @@ export class AssistantCloudAPI {
47
47
  }
48
48
  }
49
49
 
50
+ public async initializeAuth() {
51
+ return !!this._auth.getAuthHeaders();
52
+ }
53
+
50
54
  public async makeRawRequest(
51
55
  endpoint: string,
52
56
  options: MakeRequestOptions = {},
53
57
  ) {
54
- const authHeaders = await this._tokenManager.getAuthHeaders();
58
+ const authHeaders = await this._auth.getAuthHeaders();
59
+ if (!authHeaders) throw new Error("Authronization failed");
60
+
55
61
  const headers = {
56
62
  ...authHeaders,
57
63
  ...options.headers,
@@ -79,6 +85,8 @@ export class AssistantCloudAPI {
79
85
  body: options.body ? JSON.stringify(options.body) : null,
80
86
  });
81
87
 
88
+ this._auth.readAuthHeaders(response.headers);
89
+
82
90
  if (!response.ok) {
83
91
  const text = await response.text();
84
92
  try {
@@ -1,6 +1,7 @@
1
1
  export type AssistantCloudAuthStrategy = {
2
2
  readonly strategy: "jwt" | "api-key";
3
- getAuthHeaders(): Promise<Record<string, string>>;
3
+ getAuthHeaders(): Promise<Record<string, string> | false>;
4
+ readAuthHeaders(headers: Headers): void;
4
5
  };
5
6
 
6
7
  export class AssistantCloudJWTAuthStrategy
@@ -13,7 +14,7 @@ export class AssistantCloudJWTAuthStrategy
13
14
 
14
15
  #authTokenCallback;
15
16
 
16
- constructor(authTokenCallback: () => Promise<string>) {
17
+ constructor(authTokenCallback: (() => Promise<string | null>) | undefined) {
17
18
  this.#authTokenCallback = authTokenCallback;
18
19
  }
19
20
 
@@ -43,7 +44,7 @@ export class AssistantCloudJWTAuthStrategy
43
44
  }
44
45
  }
45
46
 
46
- public async getAuthHeaders(): Promise<Record<string, string>> {
47
+ public async getAuthHeaders(): Promise<Record<string, string> | false> {
47
48
  const currentTime = Date.now();
48
49
 
49
50
  // Check if the cached token is valid for at least 30 seconds
@@ -58,7 +59,9 @@ export class AssistantCloudJWTAuthStrategy
58
59
  }
59
60
 
60
61
  // Fetch a new token
61
- const newToken = await this.#authTokenCallback();
62
+ const newToken = await this.#authTokenCallback?.();
63
+ if (!newToken) return false;
64
+
62
65
  const expiry = this.getJwtExpiry(newToken);
63
66
 
64
67
  this.cachedToken = newToken;
@@ -68,7 +71,20 @@ export class AssistantCloudJWTAuthStrategy
68
71
  Authorization: `Bearer ${newToken}`,
69
72
  };
70
73
  }
74
+
75
+ public readAuthHeaders(headers: Headers) {
76
+ const authHeader = headers.get("Authorization");
77
+ if (!authHeader) return;
78
+
79
+ const [scheme, token] = authHeader.split(" ");
80
+ if (scheme !== "Bearer" || !token)
81
+ throw new Error("Invalid auth header received");
82
+
83
+ this.cachedToken = token;
84
+ this.tokenExpiry = this.getJwtExpiry(token);
85
+ }
71
86
  }
87
+
72
88
  export class AssistantCloudAPIKeyAuthStrategy
73
89
  implements AssistantCloudAuthStrategy
74
90
  {
@@ -91,4 +107,8 @@ export class AssistantCloudAPIKeyAuthStrategy
91
107
  "Aui-Workspace-Id": this.#workspaceId,
92
108
  };
93
109
  }
110
+
111
+ public readAuthHeaders() {
112
+ // noop
113
+ }
94
114
  }
@@ -1,3 +1,2 @@
1
1
  export { useCloudThreadListRuntime } from "./useCloudThreadListRuntime";
2
- export { useCloudThreadListItemRuntime } from "./CloudThreadListItemRuntime";
3
2
  export { AssistantCloud } from "./AssistantCloud";
@@ -1,18 +1,10 @@
1
1
  "use client";
2
2
 
3
- import {
4
- PropsWithChildren,
5
- useCallback,
6
- useEffect,
7
- useMemo,
8
- useRef,
9
- useState,
10
- } from "react";
3
+ import { useEffect, useRef, useState } from "react";
11
4
  import { useRemoteThreadListRuntime } from "../useRemoteThreadListRuntime";
12
5
  import { AssistantCloud } from "./AssistantCloud";
13
6
  import { AssistantRuntime } from "../../../api";
14
7
  import { RemoteThreadListSubscriber } from "../types";
15
- import { CloudThreadListItemRuntimeProvider } from "./CloudThreadListItemRuntime";
16
8
  import { toCoreMessages } from "../../edge";
17
9
 
18
10
  type ThreadData = {
@@ -45,45 +37,6 @@ export const useCloudThreadListRuntime = (adapter: CloudThreadListAdapter) => {
45
37
 
46
38
  const [subscribers] = useState(() => new Set<RemoteThreadListSubscriber>());
47
39
 
48
- const cloudThreadListItemRuntimeAdapter = useMemo(() => {
49
- return {
50
- initialize: async (threadId: string) => {
51
- const begin = beginnable(async () => {
52
- const createTask = adapterRef.current.create?.() ?? Promise.resolve();
53
- const t = await createTask;
54
- const external_id = t ? t.externalId : undefined;
55
- const { thread_id } = await adapterRef.current.cloud.threads.create({
56
- title: "New Thread",
57
- last_message_at: new Date(),
58
- external_id,
59
- });
60
- return { externalId: external_id, remoteId: thread_id };
61
- });
62
-
63
- for (const subscriber of subscribers) {
64
- subscriber.onInitialize(threadId, begin);
65
- }
66
-
67
- // note: onInitialize immediately throws if there are any issues
68
- // therefore begin is safe to call here
69
- return begin();
70
- },
71
- generateTitle: async (remoteId: string) => {
72
- const messages = runtime.thread.getState().messages;
73
- const begin = beginnable(() => {
74
- return adapterRef.current.cloud.runs.stream({
75
- thread_id: remoteId,
76
- assistant_id: "system/thread_title",
77
- messages: toCoreMessages(messages),
78
- });
79
- });
80
- for (const subscriber of subscribers) {
81
- subscriber.onGenerateTitle(remoteId, begin);
82
- }
83
- },
84
- };
85
- }, [subscribers]);
86
-
87
40
  const runtime = useRemoteThreadListRuntime({
88
41
  runtimeHook: adapter.runtimeHook,
89
42
  list: async () => {
@@ -97,6 +50,41 @@ export const useCloudThreadListRuntime = (adapter: CloudThreadListAdapter) => {
97
50
  })),
98
51
  };
99
52
  },
53
+
54
+ initialize: async (threadId: string) => {
55
+ const createTask = adapterRef.current.create?.() ?? Promise.resolve();
56
+ const t = await createTask;
57
+ const external_id = t ? t.externalId : undefined;
58
+ const { thread_id: remoteId } =
59
+ await adapterRef.current.cloud.threads.create({
60
+ title: "New Thread",
61
+ last_message_at: new Date(),
62
+ external_id,
63
+ });
64
+
65
+ const dispose = runtime.threads
66
+ .getById(threadId)
67
+ .unstable_on("run-end", () => {
68
+ dispose();
69
+
70
+ const messages = runtime.threads
71
+ .getById(threadId)
72
+ .getState().messages;
73
+ const begin = beginnable(() => {
74
+ return adapterRef.current.cloud.runs.stream({
75
+ thread_id: remoteId,
76
+ assistant_id: "system/thread_title",
77
+ messages: toCoreMessages(messages),
78
+ });
79
+ });
80
+ for (const subscriber of subscribers) {
81
+ subscriber.onGenerateTitle(remoteId, begin);
82
+ }
83
+ });
84
+
85
+ return { externalId: external_id, remoteId: remoteId };
86
+ },
87
+
100
88
  rename: async (threadId, newTitle) => {
101
89
  return adapter.cloud.threads.update(threadId, { title: newTitle });
102
90
  },
@@ -116,18 +104,6 @@ export const useCloudThreadListRuntime = (adapter: CloudThreadListAdapter) => {
116
104
  subscribers.delete(callback);
117
105
  };
118
106
  },
119
- unstable_Provider: useCallback(
120
- ({ children }: PropsWithChildren) => {
121
- return (
122
- <CloudThreadListItemRuntimeProvider
123
- adapter={cloudThreadListItemRuntimeAdapter}
124
- >
125
- {children}
126
- </CloudThreadListItemRuntimeProvider>
127
- );
128
- },
129
- [cloudThreadListItemRuntimeAdapter],
130
- ),
131
107
  });
132
108
 
133
109
  return runtime;
@@ -20,10 +20,6 @@ export type RemoteThreadListResponse = {
20
20
  };
21
21
 
22
22
  export type RemoteThreadListSubscriber = {
23
- onInitialize: (
24
- threadId: string,
25
- begin: () => Promise<RemoteThreadInitializeResponse>,
26
- ) => void;
27
23
  onGenerateTitle: (
28
24
  threadId: string,
29
25
  begin: () => Promise<AssistantStream>,
@@ -39,8 +35,9 @@ export type RemoteThreadListAdapter = {
39
35
  archive(remoteId: string): Promise<void>;
40
36
  unarchive(remoteId: string): Promise<void>;
41
37
  delete(remoteId: string): Promise<void>;
38
+ initialize(threadId: string): Promise<RemoteThreadInitializeResponse>;
42
39
 
43
- subscribe(subscriber: RemoteThreadListSubscriber): Unsubscribe;
40
+ subscribe?(subscriber: RemoteThreadListSubscriber): Unsubscribe;
44
41
 
45
42
  unstable_Provider?: ComponentType<PropsWithChildren>;
46
43
  };
@@ -11,15 +11,15 @@ class RemoteThreadListRuntimeCore
11
11
  extends BaseAssistantRuntimeCore
12
12
  implements AssistantRuntimeCore
13
13
  {
14
- public readonly threadList;
14
+ public readonly threads;
15
15
 
16
16
  constructor(adapter: RemoteThreadListAdapter) {
17
17
  super();
18
- this.threadList = new RemoteThreadListThreadListRuntimeCore(adapter);
18
+ this.threads = new RemoteThreadListThreadListRuntimeCore(adapter);
19
19
  }
20
20
 
21
21
  public get RenderComponent() {
22
- return this.threadList.__internal_RenderComponent;
22
+ return this.threads.__internal_RenderComponent;
23
23
  }
24
24
  }
25
25
 
@@ -28,8 +28,8 @@ export const useRemoteThreadListRuntime = (
28
28
  ) => {
29
29
  const [runtime] = useState(() => new RemoteThreadListRuntimeCore(adapter));
30
30
  useEffect(() => {
31
- runtime.threadList.__internal_setAdapter(adapter);
32
- return runtime.threadList.__internal_bindAdapter();
31
+ runtime.threads.__internal_setAdapter(adapter);
32
+ return runtime.threads.__internal_bindAdapter();
33
33
  }, [runtime, adapter]);
34
34
  return useMemo(() => AssistantRuntimeImpl.create(runtime), [runtime]);
35
35
  };
@@ -13,6 +13,11 @@ type RepositoryMessage = RepositoryParent & {
13
13
  level: number;
14
14
  };
15
15
 
16
+ export type ExportedMessageRepositoryItem = {
17
+ message: ThreadMessage;
18
+ parentId: string | null;
19
+ };
20
+
16
21
  export interface ExportedMessageRepository {
17
22
  headId?: string | null;
18
23
  messages: Array<{
@@ -65,6 +65,7 @@ const AssistantMessageContent = forwardRef<
65
65
  // eslint-disable-next-line react-hooks/exhaustive-deps
66
66
  [...(tools ?? []), components.ToolFallback],
67
67
  );
68
+ const Footer = components.Footer;
68
69
 
69
70
  return (
70
71
  <AssistantMessageContentWrapper {...rest} ref={ref}>
@@ -76,6 +77,7 @@ const AssistantMessageContent = forwardRef<
76
77
  tools: toolsComponents,
77
78
  }}
78
79
  />
80
+ {Footer && <Footer />}
79
81
  </AssistantMessageContentWrapper>
80
82
  );
81
83
  });
@@ -45,6 +45,7 @@ export type AssistantMessageConfig = {
45
45
  Text?: TextContentPartComponent | undefined;
46
46
  Empty?: EmptyContentPartComponent | undefined;
47
47
  ToolFallback?: ComponentType<ToolCallContentPartProps> | undefined;
48
+ Footer?: ComponentType | undefined;
48
49
  }
49
50
  | undefined;
50
51
  };
@@ -1 +0,0 @@
1
- {"version":3,"file":"AttachmentAdapter.d.ts","sourceRoot":"","sources":["../../../src/runtimes/attachment/AttachmentAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,6BAA6B,CAAC;AAErC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAC;IAEf,GAAG,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvD,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAClE,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/runtimes/attachment/AttachmentAdapter.ts"],"sourcesContent":["import {\n Attachment,\n PendingAttachment,\n CompleteAttachment,\n} from \"../../types/AttachmentTypes\";\n\nexport type AttachmentAdapter = {\n accept: string;\n\n add(state: { file: File }): Promise<PendingAttachment>;\n remove(attachment: Attachment): Promise<void>;\n send(attachment: PendingAttachment): Promise<CompleteAttachment>;\n};\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CompositeAttachmentAdapter.d.ts","sourceRoot":"","sources":["../../../src/runtimes/attachment/CompositeAttachmentAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AA6CxD,qBAAa,0BAA2B,YAAW,iBAAiB;IAClE,OAAO,CAAC,SAAS,CAAsB;IAEhC,MAAM,EAAE,MAAM,CAAC;gBAEV,QAAQ,EAAE,iBAAiB,EAAE;IAgB5B,GAAG,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE;IASzB,IAAI,CAAC,UAAU,EAAE,iBAAiB;IAUlC,MAAM,CAAC,UAAU,EAAE,UAAU;CAiB3C"}