@assistant-ui/react-native 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (337) hide show
  1. package/README.md +29 -0
  2. package/dist/adapters/LocalStorageThreadListAdapter.d.ts +15 -0
  3. package/dist/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -0
  4. package/dist/adapters/LocalStorageThreadListAdapter.js +154 -0
  5. package/dist/adapters/LocalStorageThreadListAdapter.js.map +1 -0
  6. package/dist/adapters/TitleGenerationAdapter.d.ts +6 -0
  7. package/dist/adapters/TitleGenerationAdapter.d.ts.map +1 -0
  8. package/dist/adapters/TitleGenerationAdapter.js +15 -0
  9. package/dist/adapters/TitleGenerationAdapter.js.map +1 -0
  10. package/dist/adapters/index.d.ts +3 -0
  11. package/dist/adapters/index.d.ts.map +1 -0
  12. package/dist/adapters/index.js +3 -0
  13. package/dist/adapters/index.js.map +1 -0
  14. package/dist/context/AssistantContext.d.ts +8 -0
  15. package/dist/context/AssistantContext.d.ts.map +1 -0
  16. package/dist/context/AssistantContext.js +21 -0
  17. package/dist/context/AssistantContext.js.map +1 -0
  18. package/dist/context/index.d.ts +2 -0
  19. package/dist/context/index.d.ts.map +1 -0
  20. package/dist/context/index.js +2 -0
  21. package/dist/context/index.js.map +1 -0
  22. package/dist/context/providers/RuntimeAdapterProvider.d.ts +15 -0
  23. package/dist/context/providers/RuntimeAdapterProvider.d.ts.map +1 -0
  24. package/dist/context/providers/RuntimeAdapterProvider.js +14 -0
  25. package/dist/context/providers/RuntimeAdapterProvider.js.map +1 -0
  26. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts +6 -0
  27. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -0
  28. package/dist/context/providers/ThreadListItemRuntimeProvider.js +10 -0
  29. package/dist/context/providers/ThreadListItemRuntimeProvider.js.map +1 -0
  30. package/dist/hooks/index.d.ts +6 -0
  31. package/dist/hooks/index.d.ts.map +1 -0
  32. package/dist/hooks/index.js +6 -0
  33. package/dist/hooks/index.js.map +1 -0
  34. package/dist/hooks/useComposer.d.ts +4 -0
  35. package/dist/hooks/useComposer.d.ts.map +1 -0
  36. package/dist/hooks/useComposer.js +5 -0
  37. package/dist/hooks/useComposer.js.map +1 -0
  38. package/dist/hooks/useContentPart.d.ts +2 -0
  39. package/dist/hooks/useContentPart.d.ts.map +1 -0
  40. package/dist/hooks/useContentPart.js +5 -0
  41. package/dist/hooks/useContentPart.js.map +1 -0
  42. package/dist/hooks/useMessage.d.ts +4 -0
  43. package/dist/hooks/useMessage.d.ts.map +1 -0
  44. package/dist/hooks/useMessage.js +5 -0
  45. package/dist/hooks/useMessage.js.map +1 -0
  46. package/dist/hooks/useThread.d.ts +4 -0
  47. package/dist/hooks/useThread.d.ts.map +1 -0
  48. package/dist/hooks/useThread.js +5 -0
  49. package/dist/hooks/useThread.js.map +1 -0
  50. package/dist/hooks/useThreadList.d.ts +4 -0
  51. package/dist/hooks/useThreadList.d.ts.map +1 -0
  52. package/dist/hooks/useThreadList.js +5 -0
  53. package/dist/hooks/useThreadList.js.map +1 -0
  54. package/dist/index.d.ts +17 -0
  55. package/dist/index.d.ts.map +1 -0
  56. package/dist/index.js +21 -0
  57. package/dist/index.js.map +1 -0
  58. package/dist/internal.d.ts +4 -0
  59. package/dist/internal.d.ts.map +1 -0
  60. package/dist/internal.js +3 -0
  61. package/dist/internal.js.map +1 -0
  62. package/dist/primitive-hooks/index.d.ts +14 -0
  63. package/dist/primitive-hooks/index.d.ts.map +1 -0
  64. package/dist/primitive-hooks/index.js +14 -0
  65. package/dist/primitive-hooks/index.js.map +1 -0
  66. package/dist/primitive-hooks/useActionBarCopy.d.ts +10 -0
  67. package/dist/primitive-hooks/useActionBarCopy.d.ts.map +1 -0
  68. package/dist/primitive-hooks/useActionBarCopy.js +26 -0
  69. package/dist/primitive-hooks/useActionBarCopy.js.map +1 -0
  70. package/dist/primitive-hooks/useActionBarEdit.d.ts +5 -0
  71. package/dist/primitive-hooks/useActionBarEdit.d.ts.map +1 -0
  72. package/dist/primitive-hooks/useActionBarEdit.js +11 -0
  73. package/dist/primitive-hooks/useActionBarEdit.js.map +1 -0
  74. package/dist/primitive-hooks/useActionBarFeedback.d.ts +9 -0
  75. package/dist/primitive-hooks/useActionBarFeedback.d.ts.map +1 -0
  76. package/dist/primitive-hooks/useActionBarFeedback.js +19 -0
  77. package/dist/primitive-hooks/useActionBarFeedback.js.map +1 -0
  78. package/dist/primitive-hooks/useActionBarReload.d.ts +5 -0
  79. package/dist/primitive-hooks/useActionBarReload.d.ts.map +1 -0
  80. package/dist/primitive-hooks/useActionBarReload.js +13 -0
  81. package/dist/primitive-hooks/useActionBarReload.js.map +1 -0
  82. package/dist/primitive-hooks/useComposerCancel.d.ts +5 -0
  83. package/dist/primitive-hooks/useComposerCancel.d.ts.map +1 -0
  84. package/dist/primitive-hooks/useComposerCancel.js +11 -0
  85. package/dist/primitive-hooks/useComposerCancel.js.map +1 -0
  86. package/dist/primitive-hooks/useComposerSend.d.ts +5 -0
  87. package/dist/primitive-hooks/useComposerSend.d.ts.map +1 -0
  88. package/dist/primitive-hooks/useComposerSend.js +11 -0
  89. package/dist/primitive-hooks/useComposerSend.js.map +1 -0
  90. package/dist/primitive-hooks/useEditComposerCancel.d.ts +4 -0
  91. package/dist/primitive-hooks/useEditComposerCancel.d.ts.map +1 -0
  92. package/dist/primitive-hooks/useEditComposerCancel.js +10 -0
  93. package/dist/primitive-hooks/useEditComposerCancel.js.map +1 -0
  94. package/dist/primitive-hooks/useEditComposerSend.d.ts +5 -0
  95. package/dist/primitive-hooks/useEditComposerSend.d.ts.map +1 -0
  96. package/dist/primitive-hooks/useEditComposerSend.js +11 -0
  97. package/dist/primitive-hooks/useEditComposerSend.js.map +1 -0
  98. package/dist/primitive-hooks/useMessageBranching.d.ts +7 -0
  99. package/dist/primitive-hooks/useMessageBranching.d.ts.map +1 -0
  100. package/dist/primitive-hooks/useMessageBranching.js +15 -0
  101. package/dist/primitive-hooks/useMessageBranching.js.map +1 -0
  102. package/dist/primitive-hooks/useMessageReload.d.ts +5 -0
  103. package/dist/primitive-hooks/useMessageReload.d.ts.map +1 -0
  104. package/dist/primitive-hooks/useMessageReload.js +11 -0
  105. package/dist/primitive-hooks/useMessageReload.js.map +1 -0
  106. package/dist/primitive-hooks/useThreadIsEmpty.d.ts +2 -0
  107. package/dist/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -0
  108. package/dist/primitive-hooks/useThreadIsEmpty.js +5 -0
  109. package/dist/primitive-hooks/useThreadIsEmpty.js.map +1 -0
  110. package/dist/primitive-hooks/useThreadIsRunning.d.ts +2 -0
  111. package/dist/primitive-hooks/useThreadIsRunning.d.ts.map +1 -0
  112. package/dist/primitive-hooks/useThreadIsRunning.js +5 -0
  113. package/dist/primitive-hooks/useThreadIsRunning.js.map +1 -0
  114. package/dist/primitive-hooks/useThreadMessages.d.ts +3 -0
  115. package/dist/primitive-hooks/useThreadMessages.d.ts.map +1 -0
  116. package/dist/primitive-hooks/useThreadMessages.js +5 -0
  117. package/dist/primitive-hooks/useThreadMessages.js.map +1 -0
  118. package/dist/primitives/actionBar/ActionBarCopy.d.ts +10 -0
  119. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -0
  120. package/dist/primitives/actionBar/ActionBarCopy.js +11 -0
  121. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -0
  122. package/dist/primitives/actionBar/ActionBarEdit.d.ts +7 -0
  123. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -0
  124. package/dist/primitives/actionBar/ActionBarEdit.js +8 -0
  125. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -0
  126. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts +9 -0
  127. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -0
  128. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +8 -0
  129. package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -0
  130. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts +9 -0
  131. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -0
  132. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +8 -0
  133. package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -0
  134. package/dist/primitives/actionBar/ActionBarReload.d.ts +7 -0
  135. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -0
  136. package/dist/primitives/actionBar/ActionBarReload.js +8 -0
  137. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -0
  138. package/dist/primitives/actionBar/index.d.ts +6 -0
  139. package/dist/primitives/actionBar/index.d.ts.map +1 -0
  140. package/dist/primitives/actionBar/index.js +6 -0
  141. package/dist/primitives/actionBar/index.js.map +1 -0
  142. package/dist/primitives/branchPicker/BranchPickerCount.d.ts +4 -0
  143. package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -0
  144. package/dist/primitives/branchPicker/BranchPickerCount.js +8 -0
  145. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -0
  146. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +7 -0
  147. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -0
  148. package/dist/primitives/branchPicker/BranchPickerNext.js +20 -0
  149. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -0
  150. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts +4 -0
  151. package/dist/primitives/branchPicker/BranchPickerNumber.d.ts.map +1 -0
  152. package/dist/primitives/branchPicker/BranchPickerNumber.js +8 -0
  153. package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -0
  154. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +7 -0
  155. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -0
  156. package/dist/primitives/branchPicker/BranchPickerPrevious.js +20 -0
  157. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -0
  158. package/dist/primitives/branchPicker/index.d.ts +5 -0
  159. package/dist/primitives/branchPicker/index.d.ts.map +1 -0
  160. package/dist/primitives/branchPicker/index.js +5 -0
  161. package/dist/primitives/branchPicker/index.js.map +1 -0
  162. package/dist/primitives/composer/ComposerCancel.d.ts +7 -0
  163. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -0
  164. package/dist/primitives/composer/ComposerCancel.js +8 -0
  165. package/dist/primitives/composer/ComposerCancel.js.map +1 -0
  166. package/dist/primitives/composer/ComposerInput.d.ts +4 -0
  167. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -0
  168. package/dist/primitives/composer/ComposerInput.js +13 -0
  169. package/dist/primitives/composer/ComposerInput.js.map +1 -0
  170. package/dist/primitives/composer/ComposerRoot.d.ts +7 -0
  171. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -0
  172. package/dist/primitives/composer/ComposerRoot.js +6 -0
  173. package/dist/primitives/composer/ComposerRoot.js.map +1 -0
  174. package/dist/primitives/composer/ComposerSend.d.ts +7 -0
  175. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -0
  176. package/dist/primitives/composer/ComposerSend.js +8 -0
  177. package/dist/primitives/composer/ComposerSend.js.map +1 -0
  178. package/dist/primitives/composer/EditComposerCancel.d.ts +7 -0
  179. package/dist/primitives/composer/EditComposerCancel.d.ts.map +1 -0
  180. package/dist/primitives/composer/EditComposerCancel.js +8 -0
  181. package/dist/primitives/composer/EditComposerCancel.js.map +1 -0
  182. package/dist/primitives/composer/EditComposerInput.d.ts +4 -0
  183. package/dist/primitives/composer/EditComposerInput.d.ts.map +1 -0
  184. package/dist/primitives/composer/EditComposerInput.js +13 -0
  185. package/dist/primitives/composer/EditComposerInput.js.map +1 -0
  186. package/dist/primitives/composer/EditComposerSend.d.ts +7 -0
  187. package/dist/primitives/composer/EditComposerSend.d.ts.map +1 -0
  188. package/dist/primitives/composer/EditComposerSend.js +8 -0
  189. package/dist/primitives/composer/EditComposerSend.js.map +1 -0
  190. package/dist/primitives/composer/index.d.ts +8 -0
  191. package/dist/primitives/composer/index.d.ts.map +1 -0
  192. package/dist/primitives/composer/index.js +8 -0
  193. package/dist/primitives/composer/index.js.map +1 -0
  194. package/dist/primitives/message/MessageContent.d.ts +50 -0
  195. package/dist/primitives/message/MessageContent.d.ts.map +1 -0
  196. package/dist/primitives/message/MessageContent.js +44 -0
  197. package/dist/primitives/message/MessageContent.js.map +1 -0
  198. package/dist/primitives/message/MessageIf.d.ts +10 -0
  199. package/dist/primitives/message/MessageIf.d.ts.map +1 -0
  200. package/dist/primitives/message/MessageIf.js +24 -0
  201. package/dist/primitives/message/MessageIf.js.map +1 -0
  202. package/dist/primitives/message/MessageRoot.d.ts +7 -0
  203. package/dist/primitives/message/MessageRoot.d.ts.map +1 -0
  204. package/dist/primitives/message/MessageRoot.js +6 -0
  205. package/dist/primitives/message/MessageRoot.js.map +1 -0
  206. package/dist/primitives/message/index.d.ts +4 -0
  207. package/dist/primitives/message/index.d.ts.map +1 -0
  208. package/dist/primitives/message/index.js +4 -0
  209. package/dist/primitives/message/index.js.map +1 -0
  210. package/dist/primitives/thread/ThreadEmpty.d.ts +6 -0
  211. package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -0
  212. package/dist/primitives/thread/ThreadEmpty.js +9 -0
  213. package/dist/primitives/thread/ThreadEmpty.js.map +1 -0
  214. package/dist/primitives/thread/ThreadIf.d.ts +8 -0
  215. package/dist/primitives/thread/ThreadIf.d.ts.map +1 -0
  216. package/dist/primitives/thread/ThreadIf.js +16 -0
  217. package/dist/primitives/thread/ThreadIf.js.map +1 -0
  218. package/dist/primitives/thread/ThreadMessages.d.ts +11 -0
  219. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -0
  220. package/dist/primitives/thread/ThreadMessages.js +23 -0
  221. package/dist/primitives/thread/ThreadMessages.js.map +1 -0
  222. package/dist/primitives/thread/ThreadRoot.d.ts +7 -0
  223. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -0
  224. package/dist/primitives/thread/ThreadRoot.js +6 -0
  225. package/dist/primitives/thread/ThreadRoot.js.map +1 -0
  226. package/dist/primitives/thread/index.d.ts +5 -0
  227. package/dist/primitives/thread/index.d.ts.map +1 -0
  228. package/dist/primitives/thread/index.js +5 -0
  229. package/dist/primitives/thread/index.js.map +1 -0
  230. package/dist/primitives/threadList/ThreadListItems.d.ts +10 -0
  231. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -0
  232. package/dist/primitives/threadList/ThreadListItems.js +13 -0
  233. package/dist/primitives/threadList/ThreadListItems.js.map +1 -0
  234. package/dist/primitives/threadList/ThreadListNew.d.ts +7 -0
  235. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -0
  236. package/dist/primitives/threadList/ThreadListNew.js +12 -0
  237. package/dist/primitives/threadList/ThreadListNew.js.map +1 -0
  238. package/dist/primitives/threadList/ThreadListRoot.d.ts +7 -0
  239. package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -0
  240. package/dist/primitives/threadList/ThreadListRoot.js +6 -0
  241. package/dist/primitives/threadList/ThreadListRoot.js.map +1 -0
  242. package/dist/primitives/threadList/index.d.ts +4 -0
  243. package/dist/primitives/threadList/index.d.ts.map +1 -0
  244. package/dist/primitives/threadList/index.js +4 -0
  245. package/dist/primitives/threadList/index.js.map +1 -0
  246. package/dist/runtimes/RemoteThreadListHookInstanceManager.d.ts +96 -0
  247. package/dist/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -0
  248. package/dist/runtimes/RemoteThreadListHookInstanceManager.js +110 -0
  249. package/dist/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -0
  250. package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +112 -0
  251. package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -0
  252. package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.js +434 -0
  253. package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -0
  254. package/dist/runtimes/index.d.ts +3 -0
  255. package/dist/runtimes/index.d.ts.map +1 -0
  256. package/dist/runtimes/index.js +3 -0
  257. package/dist/runtimes/index.js.map +1 -0
  258. package/dist/runtimes/runtime-adapter.d.ts +3 -0
  259. package/dist/runtimes/runtime-adapter.d.ts.map +1 -0
  260. package/dist/runtimes/runtime-adapter.js +44 -0
  261. package/dist/runtimes/runtime-adapter.js.map +1 -0
  262. package/dist/runtimes/useLocalRuntime.d.ts +18 -0
  263. package/dist/runtimes/useLocalRuntime.d.ts.map +1 -0
  264. package/dist/runtimes/useLocalRuntime.js +57 -0
  265. package/dist/runtimes/useLocalRuntime.js.map +1 -0
  266. package/dist/runtimes/useRemoteThreadListRuntime.d.ts +4 -0
  267. package/dist/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -0
  268. package/dist/runtimes/useRemoteThreadListRuntime.js +37 -0
  269. package/dist/runtimes/useRemoteThreadListRuntime.js.map +1 -0
  270. package/package.json +77 -0
  271. package/src/adapters/LocalStorageThreadListAdapter.tsx +227 -0
  272. package/src/adapters/TitleGenerationAdapter.ts +20 -0
  273. package/src/adapters/index.ts +5 -0
  274. package/src/context/AssistantContext.tsx +44 -0
  275. package/src/context/index.ts +1 -0
  276. package/src/context/providers/RuntimeAdapterProvider.tsx +40 -0
  277. package/src/context/providers/ThreadListItemRuntimeProvider.tsx +16 -0
  278. package/src/hooks/index.ts +5 -0
  279. package/src/hooks/useComposer.ts +14 -0
  280. package/src/hooks/useContentPart.ts +5 -0
  281. package/src/hooks/useMessage.ts +14 -0
  282. package/src/hooks/useThread.ts +14 -0
  283. package/src/hooks/useThreadList.ts +14 -0
  284. package/src/index.ts +122 -0
  285. package/src/internal.ts +22 -0
  286. package/src/primitive-hooks/index.ts +19 -0
  287. package/src/primitive-hooks/useActionBarCopy.ts +38 -0
  288. package/src/primitive-hooks/useActionBarEdit.ts +13 -0
  289. package/src/primitive-hooks/useActionBarFeedback.ts +28 -0
  290. package/src/primitive-hooks/useActionBarReload.ts +18 -0
  291. package/src/primitive-hooks/useComposerCancel.ts +13 -0
  292. package/src/primitive-hooks/useComposerSend.ts +13 -0
  293. package/src/primitive-hooks/useEditComposerCancel.ts +12 -0
  294. package/src/primitive-hooks/useEditComposerSend.ts +13 -0
  295. package/src/primitive-hooks/useMessageBranching.ts +18 -0
  296. package/src/primitive-hooks/useMessageReload.ts +13 -0
  297. package/src/primitive-hooks/useThreadIsEmpty.ts +5 -0
  298. package/src/primitive-hooks/useThreadIsRunning.ts +5 -0
  299. package/src/primitive-hooks/useThreadMessages.ts +6 -0
  300. package/src/primitives/actionBar/ActionBarCopy.tsx +34 -0
  301. package/src/primitives/actionBar/ActionBarEdit.tsx +25 -0
  302. package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +23 -0
  303. package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +23 -0
  304. package/src/primitives/actionBar/ActionBarReload.tsx +25 -0
  305. package/src/primitives/actionBar/index.ts +11 -0
  306. package/src/primitives/branchPicker/BranchPickerCount.tsx +9 -0
  307. package/src/primitives/branchPicker/BranchPickerNext.tsx +37 -0
  308. package/src/primitives/branchPicker/BranchPickerNumber.tsx +9 -0
  309. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +37 -0
  310. package/src/primitives/branchPicker/index.ts +16 -0
  311. package/src/primitives/composer/ComposerCancel.tsx +25 -0
  312. package/src/primitives/composer/ComposerInput.tsx +19 -0
  313. package/src/primitives/composer/ComposerRoot.tsx +10 -0
  314. package/src/primitives/composer/ComposerSend.tsx +25 -0
  315. package/src/primitives/composer/EditComposerCancel.tsx +20 -0
  316. package/src/primitives/composer/EditComposerInput.tsx +22 -0
  317. package/src/primitives/composer/EditComposerSend.tsx +25 -0
  318. package/src/primitives/composer/index.ts +16 -0
  319. package/src/primitives/message/MessageContent.tsx +108 -0
  320. package/src/primitives/message/MessageIf.tsx +40 -0
  321. package/src/primitives/message/MessageRoot.tsx +10 -0
  322. package/src/primitives/message/index.ts +3 -0
  323. package/src/primitives/thread/ThreadEmpty.tsx +12 -0
  324. package/src/primitives/thread/ThreadIf.tsx +23 -0
  325. package/src/primitives/thread/ThreadMessages.tsx +61 -0
  326. package/src/primitives/thread/ThreadRoot.tsx +10 -0
  327. package/src/primitives/thread/index.ts +4 -0
  328. package/src/primitives/threadList/ThreadListItems.tsx +35 -0
  329. package/src/primitives/threadList/ThreadListNew.tsx +24 -0
  330. package/src/primitives/threadList/ThreadListRoot.tsx +13 -0
  331. package/src/primitives/threadList/index.ts +3 -0
  332. package/src/runtimes/RemoteThreadListHookInstanceManager.tsx +180 -0
  333. package/src/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +528 -0
  334. package/src/runtimes/index.ts +2 -0
  335. package/src/runtimes/runtime-adapter.ts +63 -0
  336. package/src/runtimes/useLocalRuntime.ts +100 -0
  337. package/src/runtimes/useRemoteThreadListRuntime.ts +64 -0
@@ -0,0 +1,434 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { generateId, BaseSubscribable, OptimisticState, EMPTY_THREAD_CORE, createThreadMappingId, getThreadData, updateStatusReducer, } from "@assistant-ui/core/internal";
3
+ import { RemoteThreadListHookInstanceManager } from "./RemoteThreadListHookInstanceManager.js";
4
+ import { Fragment, useEffect, useId, } from "react";
5
+ import { create } from "zustand";
6
+ import { AssistantMessageStream } from "assistant-stream";
7
+ export class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable {
8
+ _options;
9
+ _hookManager;
10
+ _loadThreadsPromise;
11
+ _mainThreadId;
12
+ _state = new OptimisticState({
13
+ isLoading: false,
14
+ newThreadId: undefined,
15
+ threadIds: [],
16
+ archivedThreadIds: [],
17
+ threadIdMap: {},
18
+ threadData: {},
19
+ });
20
+ get threadItems() {
21
+ return this._state.value.threadData;
22
+ }
23
+ getLoadThreadsPromise() {
24
+ if (!this._loadThreadsPromise) {
25
+ this._loadThreadsPromise = this._state
26
+ .optimisticUpdate({
27
+ execute: () => this._options.adapter.list(),
28
+ loading: (state) => {
29
+ return {
30
+ ...state,
31
+ isLoading: true,
32
+ };
33
+ },
34
+ then: (state, l) => {
35
+ const newThreadIds = [];
36
+ const newArchivedThreadIds = [];
37
+ const newThreadIdMap = {};
38
+ const newThreadData = {};
39
+ for (const thread of l.threads) {
40
+ switch (thread.status) {
41
+ case "regular":
42
+ newThreadIds.push(thread.remoteId);
43
+ break;
44
+ case "archived":
45
+ newArchivedThreadIds.push(thread.remoteId);
46
+ break;
47
+ default: {
48
+ const _exhaustiveCheck = thread.status;
49
+ throw new Error(`Unsupported state: ${_exhaustiveCheck}`);
50
+ }
51
+ }
52
+ const mappingId = createThreadMappingId(thread.remoteId);
53
+ newThreadIdMap[thread.remoteId] = mappingId;
54
+ newThreadData[mappingId] = {
55
+ id: thread.remoteId,
56
+ remoteId: thread.remoteId,
57
+ externalId: thread.externalId,
58
+ status: thread.status,
59
+ title: thread.title,
60
+ initializeTask: Promise.resolve({
61
+ remoteId: thread.remoteId,
62
+ externalId: thread.externalId,
63
+ }),
64
+ };
65
+ }
66
+ return {
67
+ ...state,
68
+ threadIds: newThreadIds,
69
+ archivedThreadIds: newArchivedThreadIds,
70
+ threadIdMap: {
71
+ ...state.threadIdMap,
72
+ ...newThreadIdMap,
73
+ },
74
+ threadData: {
75
+ ...state.threadData,
76
+ ...newThreadData,
77
+ },
78
+ };
79
+ },
80
+ })
81
+ .then(() => { });
82
+ }
83
+ return this._loadThreadsPromise;
84
+ }
85
+ constructor(options, _contextProvider) {
86
+ super();
87
+ this._state.subscribe(() => this._notifySubscribers());
88
+ this._hookManager = new RemoteThreadListHookInstanceManager(options.runtimeHook, this);
89
+ this.useProvider = create(() => ({
90
+ Provider: (options.adapter.unstable_Provider ??
91
+ Fragment),
92
+ }));
93
+ this.__internal_setOptions(options);
94
+ this.switchToNewThread();
95
+ }
96
+ useProvider;
97
+ __internal_setOptions(options) {
98
+ if (this._options === options)
99
+ return;
100
+ this._options = options;
101
+ const Provider = (options.adapter.unstable_Provider ??
102
+ Fragment);
103
+ if (Provider !== this.useProvider.getState().Provider) {
104
+ this.useProvider.setState({ Provider }, true);
105
+ }
106
+ this._hookManager.setRuntimeHook(options.runtimeHook);
107
+ }
108
+ __internal_load() {
109
+ this.getLoadThreadsPromise(); // begin loading on initial bind
110
+ }
111
+ get isLoading() {
112
+ return this._state.value.isLoading;
113
+ }
114
+ get threadIds() {
115
+ return this._state.value.threadIds;
116
+ }
117
+ get archivedThreadIds() {
118
+ return this._state.value.archivedThreadIds;
119
+ }
120
+ get newThreadId() {
121
+ return this._state.value.newThreadId;
122
+ }
123
+ get mainThreadId() {
124
+ return this._mainThreadId;
125
+ }
126
+ getMainThreadRuntimeCore() {
127
+ const result = this._hookManager.getThreadRuntimeCore(this._mainThreadId);
128
+ if (!result)
129
+ return EMPTY_THREAD_CORE;
130
+ return result;
131
+ }
132
+ getThreadRuntimeCore(threadIdOrRemoteId) {
133
+ const data = this.getItemById(threadIdOrRemoteId);
134
+ if (!data)
135
+ throw new Error("Thread not found");
136
+ const result = this._hookManager.getThreadRuntimeCore(data.id);
137
+ if (!result)
138
+ throw new Error("Thread not found");
139
+ return result;
140
+ }
141
+ getItemById(threadIdOrRemoteId) {
142
+ return getThreadData(this._state.value, threadIdOrRemoteId);
143
+ }
144
+ async switchToThread(threadIdOrRemoteId) {
145
+ let data = this.getItemById(threadIdOrRemoteId);
146
+ if (!data) {
147
+ const remoteMetadata = await this._options.adapter.fetch(threadIdOrRemoteId);
148
+ const state = this._state.value;
149
+ const mappingId = createThreadMappingId(remoteMetadata.remoteId);
150
+ const newThreadData = {
151
+ ...state.threadData,
152
+ [mappingId]: {
153
+ id: mappingId,
154
+ initializeTask: Promise.resolve({
155
+ remoteId: remoteMetadata.remoteId,
156
+ externalId: remoteMetadata.externalId,
157
+ }),
158
+ remoteId: remoteMetadata.remoteId,
159
+ externalId: remoteMetadata.externalId,
160
+ status: remoteMetadata.status,
161
+ title: remoteMetadata.title,
162
+ },
163
+ };
164
+ const newThreadIdMap = {
165
+ ...state.threadIdMap,
166
+ [remoteMetadata.remoteId]: mappingId,
167
+ };
168
+ const newThreadIds = remoteMetadata.status === "regular"
169
+ ? [...state.threadIds, remoteMetadata.remoteId]
170
+ : state.threadIds;
171
+ const newArchivedThreadIds = remoteMetadata.status === "archived"
172
+ ? [...state.archivedThreadIds, remoteMetadata.remoteId]
173
+ : state.archivedThreadIds;
174
+ this._state.update({
175
+ ...state,
176
+ threadIds: newThreadIds,
177
+ archivedThreadIds: newArchivedThreadIds,
178
+ threadIdMap: newThreadIdMap,
179
+ threadData: newThreadData,
180
+ });
181
+ data = this.getItemById(threadIdOrRemoteId);
182
+ }
183
+ if (!data)
184
+ throw new Error("Thread not found");
185
+ if (this._mainThreadId === data.id)
186
+ return;
187
+ const task = this._hookManager.startThreadRuntime(data.id);
188
+ if (this.mainThreadId !== undefined) {
189
+ await task;
190
+ }
191
+ else {
192
+ task.then(() => this._notifySubscribers());
193
+ }
194
+ if (data.status === "archived")
195
+ await this.unarchive(data.id);
196
+ this._mainThreadId = data.id;
197
+ this._notifySubscribers();
198
+ }
199
+ async switchToNewThread() {
200
+ // an initialization transaction is in progress, wait for it to settle
201
+ while (this._state.baseValue.newThreadId !== undefined &&
202
+ this._state.value.newThreadId === undefined) {
203
+ await this._state.waitForUpdate();
204
+ }
205
+ const state = this._state.value;
206
+ let id = this._state.value.newThreadId;
207
+ if (id === undefined) {
208
+ do {
209
+ id = `__LOCALID_${generateId()}`;
210
+ } while (state.threadIdMap[id]);
211
+ const mappingId = createThreadMappingId(id);
212
+ this._state.update({
213
+ ...state,
214
+ newThreadId: id,
215
+ threadIdMap: {
216
+ ...state.threadIdMap,
217
+ [id]: mappingId,
218
+ },
219
+ threadData: {
220
+ ...state.threadData,
221
+ [mappingId]: {
222
+ status: "new",
223
+ id,
224
+ remoteId: undefined,
225
+ externalId: undefined,
226
+ title: undefined,
227
+ },
228
+ },
229
+ });
230
+ }
231
+ return this.switchToThread(id);
232
+ }
233
+ initialize = async (threadId) => {
234
+ if (this._state.value.newThreadId !== threadId) {
235
+ const data = this.getItemById(threadId);
236
+ if (!data)
237
+ throw new Error("Thread not found");
238
+ if (data.status === "new")
239
+ throw new Error("Unexpected new state");
240
+ return data.initializeTask;
241
+ }
242
+ return this._state.optimisticUpdate({
243
+ execute: () => {
244
+ return this._options.adapter.initialize(threadId);
245
+ },
246
+ optimistic: (state) => {
247
+ return updateStatusReducer(state, threadId, "regular");
248
+ },
249
+ loading: (state, task) => {
250
+ const mappingId = createThreadMappingId(threadId);
251
+ return {
252
+ ...state,
253
+ threadData: {
254
+ ...state.threadData,
255
+ [mappingId]: {
256
+ ...state.threadData[mappingId],
257
+ initializeTask: task,
258
+ },
259
+ },
260
+ };
261
+ },
262
+ then: (state, { remoteId, externalId }) => {
263
+ const data = getThreadData(state, threadId);
264
+ if (!data)
265
+ return state;
266
+ const mappingId = createThreadMappingId(threadId);
267
+ return {
268
+ ...state,
269
+ threadIdMap: {
270
+ ...state.threadIdMap,
271
+ [remoteId]: mappingId,
272
+ },
273
+ threadData: {
274
+ ...state.threadData,
275
+ [mappingId]: {
276
+ ...data,
277
+ initializeTask: Promise.resolve({ remoteId, externalId }),
278
+ remoteId,
279
+ externalId,
280
+ },
281
+ },
282
+ };
283
+ },
284
+ });
285
+ };
286
+ generateTitle = async (threadId) => {
287
+ const data = this.getItemById(threadId);
288
+ if (!data)
289
+ throw new Error("Thread not found");
290
+ if (data.status === "new")
291
+ throw new Error("Thread is not yet initialized");
292
+ const { remoteId } = await data.initializeTask;
293
+ const runtimeCore = this._hookManager.getThreadRuntimeCore(data.id);
294
+ if (!runtimeCore)
295
+ return; // thread is no longer running
296
+ const messages = runtimeCore.messages;
297
+ const stream = await this._options.adapter.generateTitle(remoteId, messages);
298
+ const messageStream = AssistantMessageStream.fromAssistantStream(stream);
299
+ for await (const result of messageStream) {
300
+ const textPart = result.parts.find((c) => c.type === "text");
301
+ const newTitle = textPart && "text" in textPart ? textPart.text : undefined;
302
+ const state = this._state.baseValue;
303
+ const currentData = getThreadData(state, data.id);
304
+ if (!currentData)
305
+ continue;
306
+ this._state.update({
307
+ ...state,
308
+ threadData: {
309
+ ...state.threadData,
310
+ [data.id]: {
311
+ ...currentData,
312
+ title: newTitle,
313
+ },
314
+ },
315
+ });
316
+ }
317
+ };
318
+ rename(threadIdOrRemoteId, newTitle) {
319
+ const data = this.getItemById(threadIdOrRemoteId);
320
+ if (!data)
321
+ throw new Error("Thread not found");
322
+ if (data.status === "new")
323
+ throw new Error("Thread is not yet initialized");
324
+ return this._state.optimisticUpdate({
325
+ execute: async () => {
326
+ const { remoteId } = await data.initializeTask;
327
+ return this._options.adapter.rename(remoteId, newTitle);
328
+ },
329
+ optimistic: (state) => {
330
+ const data = getThreadData(state, threadIdOrRemoteId);
331
+ if (!data)
332
+ return state;
333
+ return {
334
+ ...state,
335
+ threadData: {
336
+ ...state.threadData,
337
+ [data.id]: {
338
+ ...data,
339
+ title: newTitle,
340
+ },
341
+ },
342
+ };
343
+ },
344
+ });
345
+ }
346
+ async _ensureThreadIsNotMain(threadId) {
347
+ if (threadId === this.newThreadId)
348
+ throw new Error("Cannot ensure new thread is not main");
349
+ if (threadId === this._mainThreadId) {
350
+ await this.switchToNewThread();
351
+ }
352
+ }
353
+ async archive(threadIdOrRemoteId) {
354
+ const data = this.getItemById(threadIdOrRemoteId);
355
+ if (!data)
356
+ throw new Error("Thread not found");
357
+ if (data.status !== "regular")
358
+ throw new Error("Thread is not yet initialized or already archived");
359
+ await this._ensureThreadIsNotMain(data.id);
360
+ return this._state.optimisticUpdate({
361
+ execute: async () => {
362
+ const { remoteId } = await data.initializeTask;
363
+ return this._options.adapter.archive(remoteId);
364
+ },
365
+ optimistic: (state) => {
366
+ return updateStatusReducer(state, data.id, "archived");
367
+ },
368
+ });
369
+ }
370
+ unarchive(threadIdOrRemoteId) {
371
+ const data = this.getItemById(threadIdOrRemoteId);
372
+ if (!data)
373
+ throw new Error("Thread not found");
374
+ if (data.status !== "archived")
375
+ throw new Error("Thread is not archived");
376
+ return this._state.optimisticUpdate({
377
+ execute: async () => {
378
+ try {
379
+ const { remoteId } = await data.initializeTask;
380
+ return await this._options.adapter.unarchive(remoteId);
381
+ }
382
+ catch (error) {
383
+ await this._ensureThreadIsNotMain(data.id);
384
+ throw error;
385
+ }
386
+ },
387
+ optimistic: (state) => {
388
+ return updateStatusReducer(state, data.id, "regular");
389
+ },
390
+ });
391
+ }
392
+ async delete(threadIdOrRemoteId) {
393
+ const data = this.getItemById(threadIdOrRemoteId);
394
+ if (!data)
395
+ throw new Error("Thread not found");
396
+ if (data.status !== "regular" && data.status !== "archived")
397
+ throw new Error("Thread is not yet initialized");
398
+ await this._ensureThreadIsNotMain(data.id);
399
+ return this._state.optimisticUpdate({
400
+ execute: async () => {
401
+ const { remoteId } = await data.initializeTask;
402
+ return await this._options.adapter.delete(remoteId);
403
+ },
404
+ optimistic: (state) => {
405
+ return updateStatusReducer(state, data.id, "deleted");
406
+ },
407
+ });
408
+ }
409
+ async detach(threadIdOrRemoteId) {
410
+ const data = this.getItemById(threadIdOrRemoteId);
411
+ if (!data)
412
+ throw new Error("Thread not found");
413
+ if (data.status !== "regular" && data.status !== "archived")
414
+ throw new Error("Thread is not yet initialized");
415
+ await this._ensureThreadIsNotMain(data.id);
416
+ this._hookManager.stopThreadRuntime(data.id);
417
+ }
418
+ useBoundIds = create(() => []);
419
+ __internal_RenderComponent = () => {
420
+ const id = useId();
421
+ useEffect(() => {
422
+ this.useBoundIds.setState((s) => [...s, id], true);
423
+ return () => {
424
+ this.useBoundIds.setState((s) => s.filter((i) => i !== id), true);
425
+ };
426
+ }, [id]);
427
+ const boundIds = this.useBoundIds();
428
+ const { Provider } = this.useProvider();
429
+ return ((boundIds.length === 0 || boundIds[0] === id) && (
430
+ // only render if the component is the first one mounted
431
+ _jsx(this._hookManager.__internal_RenderThreadRuntimes, { provider: Provider })));
432
+ };
433
+ }
434
+ //# sourceMappingURL=RemoteThreadListThreadListRuntimeCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RemoteThreadListThreadListRuntimeCore.js","sourceRoot":"","sources":["../../src/runtimes/RemoteThreadListThreadListRuntimeCore.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { useLocalRuntime, type LocalRuntimeOptions } from "./useLocalRuntime.js";
2
+ export { useRemoteThreadListRuntime } from "./useRemoteThreadListRuntime.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,KAAK,mBAAmB,EAAE,6BAA0B;AAC9E,OAAO,EAAE,0BAA0B,EAAE,wCAAqC"}
@@ -0,0 +1,3 @@
1
+ export { useLocalRuntime } from "./useLocalRuntime.js";
2
+ export { useRemoteThreadListRuntime } from "./useRemoteThreadListRuntime.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtimes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA4B,6BAA0B;AAC9E,OAAO,EAAE,0BAA0B,EAAE,wCAAqC"}
@@ -0,0 +1,3 @@
1
+ import type { AssistantRuntime } from "@assistant-ui/core";
2
+ export declare const RuntimeAdapter: (props: AssistantRuntime) => import("@assistant-ui/tap").ResourceElement<import("@assistant-ui/store").ClientOutput<"threads">, AssistantRuntime>;
3
+ //# sourceMappingURL=runtime-adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-adapter.d.ts","sourceRoot":"","sources":["../../src/runtimes/runtime-adapter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAU3D,eAAO,MAAM,cAAc,mJAezB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { resource, tapEffect, tapResource } from "@assistant-ui/tap";
2
+ import { ThreadListClient } from "@assistant-ui/core/store/internal";
3
+ import { tapAssistantClientRef, Derived, attachTransformScopes, ModelContext, Suggestions, } from "@assistant-ui/core/store";
4
+ export const RuntimeAdapter = resource((runtime) => {
5
+ const clientRef = tapAssistantClientRef();
6
+ tapEffect(() => {
7
+ return runtime.registerModelContextProvider(clientRef.current.modelContext());
8
+ }, [runtime, clientRef]);
9
+ return tapResource(ThreadListClient({
10
+ runtime: runtime.threads,
11
+ __internal_assistantRuntime: runtime,
12
+ }));
13
+ });
14
+ attachTransformScopes(RuntimeAdapter, (scopes, parent) => {
15
+ const result = {
16
+ ...scopes,
17
+ thread: scopes.thread ??
18
+ Derived({
19
+ source: "threads",
20
+ query: { type: "main" },
21
+ get: (aui) => aui.threads().thread("main"),
22
+ }),
23
+ threadListItem: scopes.threadListItem ??
24
+ Derived({
25
+ source: "threads",
26
+ query: { type: "main" },
27
+ get: (aui) => aui.threads().item("main"),
28
+ }),
29
+ composer: scopes.composer ??
30
+ Derived({
31
+ source: "thread",
32
+ query: {},
33
+ get: (aui) => aui.threads().thread("main").composer(),
34
+ }),
35
+ };
36
+ if (!result.modelContext && parent.modelContext.source === null) {
37
+ result.modelContext = ModelContext();
38
+ }
39
+ if (!result.suggestions && parent.suggestions.source === null) {
40
+ result.suggestions = Suggestions();
41
+ }
42
+ return result;
43
+ });
44
+ //# sourceMappingURL=runtime-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-adapter.js","sourceRoot":"","sources":["../../src/runtimes/runtime-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EACL,qBAAqB,EACrB,OAAO,EACP,qBAAqB,EACrB,YAAY,EACZ,WAAW,GACZ,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,OAAyB,EAAE,EAAE;IACnE,MAAM,SAAS,GAAG,qBAAqB,EAAE,CAAC;IAE1C,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,OAAO,CAAC,4BAA4B,CACzC,SAAS,CAAC,OAAQ,CAAC,YAAY,EAAE,CAClC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;IAEzB,OAAO,WAAW,CAChB,gBAAgB,CAAC;QACf,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,2BAA2B,EAAE,OAAO;KACrC,CAAC,CACH,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,qBAAqB,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;IACvD,MAAM,MAAM,GAAG;QACb,GAAG,MAAM;QACT,MAAM,EACJ,MAAM,CAAC,MAAM;YACb,OAAO,CAAC;gBACN,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACvB,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aAC3C,CAAC;QACJ,cAAc,EACZ,MAAM,CAAC,cAAc;YACrB,OAAO,CAAC;gBACN,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;gBACvB,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;aACzC,CAAC;QACJ,QAAQ,EACN,MAAM,CAAC,QAAQ;YACf,OAAO,CAAC;gBACN,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,EAAE;gBACT,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE;aACtD,CAAC;KACL,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAChE,MAAM,CAAC,YAAY,GAAG,YAAY,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QAC9D,MAAM,CAAC,WAAW,GAAG,WAAW,EAAE,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { AssistantRuntime, ChatModelAdapter, ThreadMessageLike } from "@assistant-ui/core";
2
+ import type { LocalRuntimeOptionsBase } from "@assistant-ui/core/internal";
3
+ import type { TitleGenerationAdapter } from "../adapters/TitleGenerationAdapter.js";
4
+ type AsyncStorageLike = {
5
+ getItem(key: string): Promise<string | null>;
6
+ setItem(key: string, value: string): Promise<void>;
7
+ removeItem(key: string): Promise<void>;
8
+ };
9
+ export type LocalRuntimeOptions = Omit<LocalRuntimeOptionsBase, "adapters"> & {
10
+ adapters?: Omit<LocalRuntimeOptionsBase["adapters"], "chatModel"> | undefined;
11
+ initialMessages?: readonly ThreadMessageLike[] | undefined;
12
+ titleGenerator?: TitleGenerationAdapter | undefined;
13
+ storage?: AsyncStorageLike | undefined;
14
+ storagePrefix?: string | undefined;
15
+ };
16
+ export declare const useLocalRuntime: (chatModel: ChatModelAdapter, options?: LocalRuntimeOptions) => AssistantRuntime;
17
+ export {};
18
+ //# sourceMappingURL=useLocalRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/useLocalRuntime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EAElB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAM3E,OAAO,KAAK,EAAE,sBAAsB,EAAE,8CAA2C;AAKjF,KAAK,gBAAgB,GAAG;IACtB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACxC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,uBAAuB,EAAE,UAAU,CAAC,GAAG;IAC5E,QAAQ,CAAC,EAAE,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,GAAG,SAAS,CAAC;IAC9E,eAAe,CAAC,EAAE,SAAS,iBAAiB,EAAE,GAAG,SAAS,CAAC;IAC3D,cAAc,CAAC,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACpD,OAAO,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,CAAC;AA8CF,eAAO,MAAM,eAAe,GAC1B,WAAW,gBAAgB,EAC3B,UAAS,mBAAwB,KAChC,gBAmBF,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { useEffect, useMemo, useRef, useState } from "react";
2
+ import { InMemoryThreadListAdapter } from "@assistant-ui/core";
3
+ import { AssistantRuntimeImpl, LocalRuntimeCore, } from "@assistant-ui/core/internal";
4
+ import { useAuiState } from "@assistant-ui/store";
5
+ import { useRemoteThreadListRuntime } from "./useRemoteThreadListRuntime.js";
6
+ import { createLocalStorageAdapter } from "../adapters/LocalStorageThreadListAdapter.js";
7
+ import { useRuntimeAdapters } from "../context/providers/RuntimeAdapterProvider.js";
8
+ const useInnerLocalRuntime = (chatModel, options) => {
9
+ const { initialMessages, ...restOptions } = options;
10
+ const runtimeAdapters = useRuntimeAdapters();
11
+ const opt = {
12
+ ...restOptions,
13
+ adapters: {
14
+ ...runtimeAdapters,
15
+ ...restOptions.adapters,
16
+ chatModel,
17
+ },
18
+ };
19
+ const [runtime] = useState(() => new LocalRuntimeCore(opt, initialMessages));
20
+ const threadIdRef = useRef(undefined);
21
+ threadIdRef.current = useAuiState((s) => s.threadListItem.remoteId);
22
+ useEffect(() => {
23
+ runtime.threads
24
+ .getMainThreadRuntimeCore()
25
+ .__internal_setGetThreadId(() => threadIdRef.current);
26
+ }, [runtime]);
27
+ useEffect(() => {
28
+ return () => {
29
+ runtime.threads.getMainThreadRuntimeCore().detach();
30
+ };
31
+ }, [runtime]);
32
+ useEffect(() => {
33
+ runtime.threads.getMainThreadRuntimeCore().__internal_setOptions(opt);
34
+ runtime.threads.getMainThreadRuntimeCore().__internal_load();
35
+ });
36
+ return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);
37
+ };
38
+ export const useLocalRuntime = (chatModel, options = {}) => {
39
+ const { titleGenerator, storage, storagePrefix, ...innerOptions } = options;
40
+ const adapter = useMemo(() => {
41
+ if (!storage)
42
+ return new InMemoryThreadListAdapter();
43
+ return createLocalStorageAdapter({
44
+ storage,
45
+ prefix: storagePrefix,
46
+ titleGenerator,
47
+ });
48
+ }, [storage, storagePrefix, titleGenerator]);
49
+ return useRemoteThreadListRuntime({
50
+ runtimeHook: function RuntimeHook() {
51
+ return useInnerLocalRuntime(chatModel, innerOptions);
52
+ },
53
+ adapter,
54
+ allowNesting: true,
55
+ });
56
+ };
57
+ //# sourceMappingURL=useLocalRuntime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useLocalRuntime.js","sourceRoot":"","sources":["../../src/runtimes/useLocalRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAO7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AAE/D,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,wCAAqC;AAC1E,OAAO,EAAE,yBAAyB,EAAE,qDAAkD;AACtF,OAAO,EAAE,kBAAkB,EAAE,uDAAoD;AAgBjF,MAAM,oBAAoB,GAAG,CAC3B,SAA2B,EAC3B,OAGC,EACiB,EAAE;IACpB,MAAM,EAAE,eAAe,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IACpD,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;IAE7C,MAAM,GAAG,GAA4B;QACnC,GAAG,WAAW;QACd,QAAQ,EAAE;YACR,GAAG,eAAe;YAClB,GAAG,WAAW,CAAC,QAAQ;YACvB,SAAS;SACV;KACF,CAAC;IAEF,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC,CAAC;IAE7E,MAAM,WAAW,GAAG,MAAM,CAAqB,SAAS,CAAC,CAAC;IAC1D,WAAW,CAAC,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IAEpE,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,OAAO;aACZ,wBAAwB,EAAE;aAC1B,yBAAyB,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,MAAM,EAAE,CAAC;QACtD,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACtE,OAAO,CAAC,OAAO,CAAC,wBAAwB,EAAE,CAAC,eAAe,EAAE,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAC7B,SAA2B,EAC3B,UAA+B,EAAE,EACf,EAAE;IACpB,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;IAE5E,MAAM,OAAO,GAA4B,OAAO,CAAC,GAAG,EAAE;QACpD,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,yBAAyB,EAAE,CAAC;QACrD,OAAO,yBAAyB,CAAC;YAC/B,OAAO;YACP,MAAM,EAAE,aAAa;YACrB,cAAc;SACf,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;IAE7C,OAAO,0BAA0B,CAAC;QAChC,WAAW,EAAE,SAAS,WAAW;YAC/B,OAAO,oBAAoB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACvD,CAAC;QACD,OAAO;QACP,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type RemoteThreadListOptions } from "@assistant-ui/core/internal";
2
+ import type { AssistantRuntime } from "@assistant-ui/core";
3
+ export declare const useRemoteThreadListRuntime: (options: RemoteThreadListOptions) => AssistantRuntime;
4
+ //# sourceMappingURL=useRemoteThreadListRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRemoteThreadListRuntime.d.ts","sourceRoot":"","sources":["../../src/runtimes/useRemoteThreadListRuntime.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,uBAAuB,EAC7B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,oBAAoB,CAAC;AAkC5B,eAAO,MAAM,0BAA0B,GACrC,SAAS,uBAAuB,KAC/B,gBAkBF,CAAC"}