@assistant-ui/react 0.10.23 → 0.10.25

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 (443) hide show
  1. package/dist/api/{ContentPartRuntime.d.ts → MessagePartRuntime.d.ts} +14 -14
  2. package/dist/api/{ContentPartRuntime.d.ts.map → MessagePartRuntime.d.ts.map} +1 -1
  3. package/dist/api/{ContentPartRuntime.js → MessagePartRuntime.js} +6 -6
  4. package/dist/api/{ContentPartRuntime.js.map → MessagePartRuntime.js.map} +1 -1
  5. package/dist/api/MessageRuntime.d.ts +8 -8
  6. package/dist/api/MessageRuntime.js +17 -17
  7. package/dist/api/MessageRuntime.js.map +1 -1
  8. package/dist/api/RuntimePathTypes.d.ts +2 -2
  9. package/dist/api/ThreadListRuntime.d.ts +3 -0
  10. package/dist/api/ThreadListRuntime.d.ts.map +1 -1
  11. package/dist/api/ThreadListRuntime.js +5 -1
  12. package/dist/api/ThreadListRuntime.js.map +1 -1
  13. package/dist/api/ThreadRuntime.d.ts +5 -0
  14. package/dist/api/ThreadRuntime.d.ts.map +1 -1
  15. package/dist/api/ThreadRuntime.js +1 -0
  16. package/dist/api/ThreadRuntime.js.map +1 -1
  17. package/dist/api/index.d.ts +2 -1
  18. package/dist/api/index.d.ts.map +1 -1
  19. package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts +1 -1
  20. package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  21. package/dist/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  22. package/dist/cloud/auiV0.d.ts +3 -3
  23. package/dist/cloud/auiV0.d.ts.map +1 -1
  24. package/dist/cloud/auiV0.js +1 -1
  25. package/dist/cloud/auiV0.js.map +1 -1
  26. package/dist/cloud/index.d.ts +1 -1
  27. package/dist/cloud/index.d.ts.map +1 -1
  28. package/dist/cloud/index.js +1 -1
  29. package/dist/cloud/index.js.map +1 -1
  30. package/dist/cloud/useCloudThreadListRuntime.d.ts +1 -1
  31. package/dist/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  32. package/dist/cloud/useCloudThreadListRuntime.js.map +1 -1
  33. package/dist/context/providers/MessagePartRuntimeProvider.d.ts +9 -0
  34. package/dist/context/providers/{ContentPartRuntimeProvider.d.ts.map → MessagePartRuntimeProvider.d.ts.map} +1 -1
  35. package/dist/context/providers/{ContentPartRuntimeProvider.js → MessagePartRuntimeProvider.js} +9 -9
  36. package/dist/context/providers/MessagePartRuntimeProvider.js.map +1 -0
  37. package/dist/context/providers/{TextContentPartProvider.d.ts → TextMessagePartProvider.d.ts} +3 -3
  38. package/dist/context/providers/{TextContentPartProvider.d.ts.map → TextMessagePartProvider.d.ts.map} +1 -1
  39. package/dist/context/providers/{TextContentPartProvider.js → TextMessagePartProvider.js} +19 -19
  40. package/dist/context/providers/{TextContentPartProvider.js.map → TextMessagePartProvider.js.map} +1 -1
  41. package/dist/context/providers/index.d.ts +2 -1
  42. package/dist/context/providers/index.d.ts.map +1 -1
  43. package/dist/context/providers/index.js +4 -2
  44. package/dist/context/providers/index.js.map +1 -1
  45. package/dist/context/react/AssistantContext.d.ts +23 -0
  46. package/dist/context/react/AssistantContext.d.ts.map +1 -1
  47. package/dist/context/react/AssistantContext.js.map +1 -1
  48. package/dist/context/react/AttachmentContext.d.ts +72 -72
  49. package/dist/context/react/ComposerContext.d.ts +64 -0
  50. package/dist/context/react/ComposerContext.d.ts.map +1 -1
  51. package/dist/context/react/ComposerContext.js.map +1 -1
  52. package/dist/context/react/MessageContext.d.ts +56 -0
  53. package/dist/context/react/MessageContext.d.ts.map +1 -1
  54. package/dist/context/react/MessageContext.js.map +1 -1
  55. package/dist/context/react/MessagePartContext.d.ts +41 -0
  56. package/dist/context/react/{ContentPartContext.d.ts.map → MessagePartContext.d.ts.map} +1 -1
  57. package/dist/context/react/MessagePartContext.js +25 -0
  58. package/dist/context/react/MessagePartContext.js.map +1 -0
  59. package/dist/context/react/ThreadContext.d.ts +42 -0
  60. package/dist/context/react/ThreadContext.d.ts.map +1 -1
  61. package/dist/context/react/ThreadContext.js.map +1 -1
  62. package/dist/context/react/index.d.ts +1 -1
  63. package/dist/context/react/index.js +3 -3
  64. package/dist/context/react/index.js.map +1 -1
  65. package/dist/context/stores/AssistantToolUIs.d.ts +3 -3
  66. package/dist/context/stores/AssistantToolUIs.js.map +1 -1
  67. package/dist/model-context/useAssistantTool.d.ts +2 -2
  68. package/dist/model-context/useAssistantTool.js.map +1 -1
  69. package/dist/model-context/useAssistantToolUI.d.ts +2 -2
  70. package/dist/model-context/useAssistantToolUI.js.map +1 -1
  71. package/dist/model-context/useInlineRender.d.ts +2 -2
  72. package/dist/model-context/useInlineRender.js.map +1 -1
  73. package/dist/primitives/actionBar/ActionBarCopy.d.ts +42 -0
  74. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
  75. package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
  76. package/dist/primitives/actionBar/ActionBarEdit.d.ts +38 -0
  77. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
  78. package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
  79. package/dist/primitives/actionBar/ActionBarReload.d.ts +39 -0
  80. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  81. package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
  82. package/dist/primitives/actionBar/ActionBarRoot.d.ts +56 -0
  83. package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
  84. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  85. package/dist/primitives/assistantModal/AssistantModalContent.d.ts +2 -0
  86. package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -1
  87. package/dist/primitives/assistantModal/AssistantModalContent.js +2 -1
  88. package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
  89. package/dist/primitives/attachment/AttachmentRoot.d.ts +18 -0
  90. package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -1
  91. package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
  92. package/dist/primitives/branchPicker/BranchPickerCount.d.ts +17 -0
  93. package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -1
  94. package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
  95. package/dist/primitives/branchPicker/BranchPickerNext.d.ts +17 -0
  96. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  97. package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
  98. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +38 -0
  99. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  100. package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
  101. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +27 -0
  102. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -1
  103. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  104. package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  105. package/dist/primitives/composer/ComposerAttachments.js +11 -8
  106. package/dist/primitives/composer/ComposerAttachments.js.map +1 -1
  107. package/dist/primitives/composer/ComposerCancel.d.ts +17 -0
  108. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  109. package/dist/primitives/composer/ComposerCancel.js.map +1 -1
  110. package/dist/primitives/composer/ComposerInput.d.ts +72 -0
  111. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  112. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  113. package/dist/primitives/composer/ComposerRoot.d.ts +19 -0
  114. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
  115. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  116. package/dist/primitives/composer/ComposerSend.d.ts +18 -0
  117. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  118. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  119. package/dist/primitives/index.d.ts +12 -6
  120. package/dist/primitives/index.d.ts.map +1 -1
  121. package/dist/primitives/index.js +23 -11
  122. package/dist/primitives/index.js.map +1 -1
  123. package/dist/primitives/message/MessageAttachments.d.ts.map +1 -1
  124. package/dist/primitives/message/MessageAttachments.js +11 -8
  125. package/dist/primitives/message/MessageAttachments.js.map +1 -1
  126. package/dist/primitives/message/MessageParts.d.ts +116 -0
  127. package/dist/primitives/message/MessageParts.d.ts.map +1 -0
  128. package/dist/primitives/message/MessageParts.js +208 -0
  129. package/dist/primitives/message/MessageParts.js.map +1 -0
  130. package/dist/primitives/message/MessageRoot.d.ts +22 -0
  131. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  132. package/dist/primitives/message/MessageRoot.js.map +1 -1
  133. package/dist/primitives/message/index.d.ts +2 -1
  134. package/dist/primitives/message/index.d.ts.map +1 -1
  135. package/dist/primitives/message/index.js +4 -2
  136. package/dist/primitives/message/index.js.map +1 -1
  137. package/dist/primitives/messagePart/MessagePartImage.d.ts +29 -0
  138. package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -0
  139. package/dist/primitives/messagePart/MessagePartImage.js +16 -0
  140. package/dist/primitives/messagePart/MessagePartImage.js.map +1 -0
  141. package/dist/primitives/messagePart/MessagePartInProgress.d.ts +6 -0
  142. package/dist/primitives/{contentPart/ContentPartInProgress.d.ts.map → messagePart/MessagePartInProgress.d.ts.map} +1 -1
  143. package/dist/primitives/messagePart/MessagePartInProgress.js +13 -0
  144. package/dist/primitives/messagePart/MessagePartInProgress.js.map +1 -0
  145. package/dist/primitives/messagePart/MessagePartText.d.ts +50 -0
  146. package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -0
  147. package/dist/primitives/messagePart/MessagePartText.js +18 -0
  148. package/dist/primitives/messagePart/MessagePartText.js.map +1 -0
  149. package/dist/primitives/messagePart/index.d.ts +4 -0
  150. package/dist/primitives/{contentPart → messagePart}/index.d.ts.map +1 -1
  151. package/dist/primitives/messagePart/index.js +10 -0
  152. package/dist/primitives/messagePart/index.js.map +1 -0
  153. package/dist/primitives/messagePart/useMessagePartFile.d.ts +5 -0
  154. package/dist/primitives/messagePart/useMessagePartFile.d.ts.map +1 -0
  155. package/dist/primitives/messagePart/useMessagePartFile.js +18 -0
  156. package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -0
  157. package/dist/primitives/messagePart/useMessagePartImage.d.ts +5 -0
  158. package/dist/primitives/messagePart/useMessagePartImage.d.ts.map +1 -0
  159. package/dist/primitives/messagePart/useMessagePartImage.js +18 -0
  160. package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -0
  161. package/dist/primitives/messagePart/useMessagePartReasoning.d.ts +5 -0
  162. package/dist/primitives/messagePart/useMessagePartReasoning.d.ts.map +1 -0
  163. package/dist/primitives/messagePart/useMessagePartReasoning.js +18 -0
  164. package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -0
  165. package/dist/primitives/messagePart/useMessagePartSource.d.ts +5 -0
  166. package/dist/primitives/messagePart/useMessagePartSource.d.ts.map +1 -0
  167. package/dist/primitives/messagePart/useMessagePartSource.js +18 -0
  168. package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -0
  169. package/dist/primitives/messagePart/useMessagePartText.d.ts +7 -0
  170. package/dist/primitives/messagePart/useMessagePartText.d.ts.map +1 -0
  171. package/dist/primitives/messagePart/useMessagePartText.js +18 -0
  172. package/dist/primitives/messagePart/useMessagePartText.js.map +1 -0
  173. package/dist/primitives/thread/ThreadMessages.d.ts +44 -0
  174. package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
  175. package/dist/primitives/thread/ThreadMessages.js +5 -2
  176. package/dist/primitives/thread/ThreadMessages.js.map +1 -1
  177. package/dist/primitives/thread/ThreadRoot.d.ts +19 -0
  178. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
  179. package/dist/primitives/thread/ThreadRoot.js.map +1 -1
  180. package/dist/primitives/thread/ThreadViewport.d.ts +24 -0
  181. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
  182. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  183. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  184. package/dist/primitives/threadList/ThreadListItems.js +12 -9
  185. package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
  186. package/dist/runtimes/adapters/attachment/AttachmentAdapter.d.ts +54 -0
  187. package/dist/runtimes/adapters/attachment/AttachmentAdapter.d.ts.map +1 -1
  188. package/dist/runtimes/adapters/feedback/FeedbackAdapter.d.ts +33 -0
  189. package/dist/runtimes/adapters/feedback/FeedbackAdapter.d.ts.map +1 -1
  190. package/dist/runtimes/adapters/speech/SpeechAdapterTypes.d.ts +47 -0
  191. package/dist/runtimes/adapters/speech/SpeechAdapterTypes.d.ts.map +1 -1
  192. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +1 -0
  193. package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
  194. package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
  195. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +1 -0
  196. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
  197. package/dist/runtimes/core/ThreadRuntimeCore.d.ts +1 -0
  198. package/dist/runtimes/core/ThreadRuntimeCore.d.ts.map +1 -1
  199. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +2 -0
  200. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
  201. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +1 -0
  202. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
  203. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +3 -0
  204. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
  205. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts +1 -0
  206. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
  207. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +3 -0
  208. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
  209. package/dist/runtimes/external-store/ThreadMessageLike.d.ts +3 -3
  210. package/dist/runtimes/external-store/ThreadMessageLike.js +3 -3
  211. package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
  212. package/dist/runtimes/external-store/createMessageConverter.js +3 -3
  213. package/dist/runtimes/external-store/createMessageConverter.js.map +1 -1
  214. package/dist/runtimes/external-store/external-message-converter.js.map +1 -1
  215. package/dist/runtimes/local/ChatModelAdapter.d.ts +4 -4
  216. package/dist/runtimes/local/LocalRuntimeOptions.d.ts +2 -2
  217. package/dist/runtimes/local/LocalRuntimeOptions.d.ts.map +1 -1
  218. package/dist/runtimes/local/LocalRuntimeOptions.js.map +1 -1
  219. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +1 -0
  220. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
  221. package/dist/runtimes/local/LocalThreadListRuntimeCore.js +3 -0
  222. package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
  223. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts +2 -0
  224. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
  225. package/dist/runtimes/local/LocalThreadRuntimeCore.js +12 -1
  226. package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
  227. package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.d.ts.map +1 -1
  228. package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js +1 -0
  229. package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js.map +1 -1
  230. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts +2 -0
  231. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  232. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +3 -0
  233. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  234. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +3 -0
  235. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  236. package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts +1 -1
  237. package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts.map +1 -1
  238. package/dist/runtimes/remote-thread-list/adapter/cloud.js +1 -1
  239. package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -1
  240. package/dist/runtimes/utils/MessageRepository.js +1 -1
  241. package/dist/runtimes/utils/MessageRepository.js.map +1 -1
  242. package/dist/tests/setup.js +8 -8
  243. package/dist/tests/setup.js.map +1 -1
  244. package/dist/types/AssistantTypes.d.ts +15 -15
  245. package/dist/types/AttachmentTypes.d.ts +3 -3
  246. package/dist/types/MessagePartComponentTypes.d.ts +25 -0
  247. package/dist/types/{ContentPartComponentTypes.d.ts.map → MessagePartComponentTypes.d.ts.map} +1 -1
  248. package/dist/types/MessagePartComponentTypes.js +1 -0
  249. package/dist/types/index.d.ts +4 -2
  250. package/dist/types/index.d.ts.map +1 -1
  251. package/dist/utils/getThreadMessageText.js.map +1 -1
  252. package/dist/utils/smooth/SmoothContext.js +3 -3
  253. package/dist/utils/smooth/SmoothContext.js.map +1 -1
  254. package/dist/utils/smooth/useSmooth.d.ts +3 -3
  255. package/dist/utils/smooth/useSmooth.js.map +1 -1
  256. package/dist/utils/useToolArgsFieldStatus.js +3 -3
  257. package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
  258. package/package.json +9 -8
  259. package/src/api/{ContentPartRuntime.ts → MessagePartRuntime.ts} +20 -20
  260. package/src/api/MessageRuntime.ts +32 -32
  261. package/src/api/RuntimePathTypes.ts +2 -2
  262. package/src/api/ThreadListRuntime.ts +8 -0
  263. package/src/api/ThreadRuntime.ts +6 -0
  264. package/src/api/index.ts +11 -3
  265. package/src/cloud/AssistantCloudThreadHistoryAdapter.tsx +1 -1
  266. package/src/cloud/auiV0.ts +4 -4
  267. package/src/cloud/index.ts +1 -1
  268. package/src/cloud/useCloudThreadListRuntime.tsx +1 -1
  269. package/src/context/providers/MessagePartRuntimeProvider.tsx +42 -0
  270. package/src/context/providers/{TextContentPartProvider.tsx → TextMessagePartProvider.tsx} +27 -27
  271. package/src/context/providers/index.ts +4 -1
  272. package/src/context/react/AssistantContext.ts +23 -0
  273. package/src/context/react/ComposerContext.ts +64 -0
  274. package/src/context/react/MessageContext.ts +56 -0
  275. package/src/context/react/MessagePartContext.ts +37 -0
  276. package/src/context/react/ThreadContext.ts +42 -0
  277. package/src/context/react/index.ts +1 -1
  278. package/src/context/stores/AssistantToolUIs.ts +4 -4
  279. package/src/model-context/useAssistantTool.tsx +2 -2
  280. package/src/model-context/useAssistantToolUI.tsx +2 -2
  281. package/src/model-context/useInlineRender.tsx +3 -3
  282. package/src/primitives/actionBar/ActionBarCopy.tsx +42 -0
  283. package/src/primitives/actionBar/ActionBarEdit.tsx +38 -0
  284. package/src/primitives/actionBar/ActionBarReload.tsx +39 -0
  285. package/src/primitives/actionBar/ActionBarRoot.tsx +38 -0
  286. package/src/primitives/assistantModal/AssistantModalContent.tsx +5 -1
  287. package/src/primitives/attachment/AttachmentRoot.tsx +18 -0
  288. package/src/primitives/branchPicker/BranchPickerCount.tsx +17 -0
  289. package/src/primitives/branchPicker/BranchPickerNext.tsx +17 -0
  290. package/src/primitives/branchPicker/BranchPickerPrevious.tsx +38 -0
  291. package/src/primitives/branchPicker/BranchPickerRoot.tsx +22 -0
  292. package/src/primitives/composer/ComposerAttachments.tsx +11 -7
  293. package/src/primitives/composer/ComposerCancel.tsx +17 -0
  294. package/src/primitives/composer/ComposerInput.tsx +44 -0
  295. package/src/primitives/composer/ComposerRoot.tsx +19 -0
  296. package/src/primitives/composer/ComposerSend.tsx +18 -0
  297. package/src/primitives/index.ts +14 -6
  298. package/src/primitives/message/MessageAttachments.tsx +11 -7
  299. package/src/primitives/message/MessageParts.tsx +423 -0
  300. package/src/primitives/message/MessageRoot.tsx +22 -0
  301. package/src/primitives/message/index.ts +2 -1
  302. package/src/primitives/messagePart/MessagePartImage.tsx +39 -0
  303. package/src/primitives/messagePart/MessagePartInProgress.tsx +19 -0
  304. package/src/primitives/messagePart/MessagePartText.tsx +62 -0
  305. package/src/primitives/messagePart/index.ts +3 -0
  306. package/src/primitives/messagePart/useMessagePartFile.tsx +18 -0
  307. package/src/primitives/messagePart/useMessagePartImage.tsx +18 -0
  308. package/src/primitives/messagePart/useMessagePartReasoning.tsx +18 -0
  309. package/src/primitives/messagePart/useMessagePartSource.tsx +18 -0
  310. package/src/primitives/messagePart/useMessagePartText.tsx +18 -0
  311. package/src/primitives/thread/ThreadMessages.tsx +52 -4
  312. package/src/primitives/thread/ThreadRoot.tsx +19 -0
  313. package/src/primitives/thread/ThreadViewport.tsx +19 -0
  314. package/src/primitives/threadList/ThreadListItems.tsx +12 -8
  315. package/src/runtimes/adapters/attachment/AttachmentAdapter.ts +56 -0
  316. package/src/runtimes/adapters/feedback/FeedbackAdapter.ts +33 -0
  317. package/src/runtimes/adapters/speech/SpeechAdapterTypes.ts +47 -0
  318. package/src/runtimes/core/BaseThreadRuntimeCore.tsx +1 -0
  319. package/src/runtimes/core/ThreadListRuntimeCore.tsx +1 -0
  320. package/src/runtimes/core/ThreadRuntimeCore.tsx +1 -0
  321. package/src/runtimes/external-store/ExternalStoreAdapter.tsx +2 -0
  322. package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +4 -0
  323. package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +3 -0
  324. package/src/runtimes/external-store/ThreadMessageLike.tsx +20 -20
  325. package/src/runtimes/external-store/createMessageConverter.tsx +3 -3
  326. package/src/runtimes/external-store/external-message-converter.tsx +2 -2
  327. package/src/runtimes/local/ChatModelAdapter.tsx +13 -13
  328. package/src/runtimes/local/LocalRuntimeOptions.tsx +1 -1
  329. package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +4 -0
  330. package/src/runtimes/local/LocalThreadRuntimeCore.tsx +30 -15
  331. package/src/runtimes/remote-thread-list/EMPTY_THREAD_CORE.tsx +1 -0
  332. package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +4 -0
  333. package/src/runtimes/remote-thread-list/adapter/cloud.tsx +1 -1
  334. package/src/runtimes/utils/MessageRepository.tsx +1 -1
  335. package/src/tests/MessageRepository.test.ts +6 -6
  336. package/src/types/AssistantTypes.ts +24 -24
  337. package/src/types/AttachmentTypes.ts +3 -3
  338. package/src/types/MessagePartComponentTypes.tsx +52 -0
  339. package/src/types/index.ts +69 -28
  340. package/src/utils/getThreadMessageText.tsx +2 -2
  341. package/src/utils/smooth/SmoothContext.tsx +7 -7
  342. package/src/utils/smooth/useSmooth.tsx +7 -7
  343. package/src/utils/useToolArgsFieldStatus.tsx +3 -3
  344. package/dist/cloud/AssistantCloud.d.ts +0 -15
  345. package/dist/cloud/AssistantCloud.d.ts.map +0 -1
  346. package/dist/cloud/AssistantCloud.js +0 -25
  347. package/dist/cloud/AssistantCloud.js.map +0 -1
  348. package/dist/cloud/AssistantCloudAPI.d.ts +0 -28
  349. package/dist/cloud/AssistantCloudAPI.d.ts.map +0 -1
  350. package/dist/cloud/AssistantCloudAPI.js +0 -87
  351. package/dist/cloud/AssistantCloudAPI.js.map +0 -1
  352. package/dist/cloud/AssistantCloudAuthStrategy.d.ts +0 -30
  353. package/dist/cloud/AssistantCloudAuthStrategy.d.ts.map +0 -1
  354. package/dist/cloud/AssistantCloudAuthStrategy.js +0 -139
  355. package/dist/cloud/AssistantCloudAuthStrategy.js.map +0 -1
  356. package/dist/cloud/AssistantCloudAuthTokens.d.ts +0 -11
  357. package/dist/cloud/AssistantCloudAuthTokens.d.ts.map +0 -1
  358. package/dist/cloud/AssistantCloudAuthTokens.js +0 -13
  359. package/dist/cloud/AssistantCloudAuthTokens.js.map +0 -1
  360. package/dist/cloud/AssistantCloudFiles.d.ts +0 -27
  361. package/dist/cloud/AssistantCloudFiles.d.ts.map +0 -1
  362. package/dist/cloud/AssistantCloudFiles.js +0 -25
  363. package/dist/cloud/AssistantCloudFiles.js.map +0 -1
  364. package/dist/cloud/AssistantCloudRuns.d.ts +0 -26
  365. package/dist/cloud/AssistantCloudRuns.d.ts.map +0 -1
  366. package/dist/cloud/AssistantCloudRuns.js +0 -39
  367. package/dist/cloud/AssistantCloudRuns.js.map +0 -1
  368. package/dist/cloud/AssistantCloudThreadMessages.d.ts +0 -30
  369. package/dist/cloud/AssistantCloudThreadMessages.d.ts.map +0 -1
  370. package/dist/cloud/AssistantCloudThreadMessages.js +0 -21
  371. package/dist/cloud/AssistantCloudThreadMessages.js.map +0 -1
  372. package/dist/cloud/AssistantCloudThreads.d.ts +0 -48
  373. package/dist/cloud/AssistantCloudThreads.d.ts.map +0 -1
  374. package/dist/cloud/AssistantCloudThreads.js +0 -30
  375. package/dist/cloud/AssistantCloudThreads.js.map +0 -1
  376. package/dist/context/providers/ContentPartRuntimeProvider.d.ts +0 -9
  377. package/dist/context/providers/ContentPartRuntimeProvider.js.map +0 -1
  378. package/dist/context/react/ContentPartContext.d.ts +0 -41
  379. package/dist/context/react/ContentPartContext.js +0 -25
  380. package/dist/context/react/ContentPartContext.js.map +0 -1
  381. package/dist/primitives/contentPart/ContentPartImage.d.ts +0 -10
  382. package/dist/primitives/contentPart/ContentPartImage.d.ts.map +0 -1
  383. package/dist/primitives/contentPart/ContentPartImage.js +0 -16
  384. package/dist/primitives/contentPart/ContentPartImage.js.map +0 -1
  385. package/dist/primitives/contentPart/ContentPartInProgress.d.ts +0 -6
  386. package/dist/primitives/contentPart/ContentPartInProgress.js +0 -13
  387. package/dist/primitives/contentPart/ContentPartInProgress.js.map +0 -1
  388. package/dist/primitives/contentPart/ContentPartText.d.ts +0 -16
  389. package/dist/primitives/contentPart/ContentPartText.d.ts.map +0 -1
  390. package/dist/primitives/contentPart/ContentPartText.js +0 -18
  391. package/dist/primitives/contentPart/ContentPartText.js.map +0 -1
  392. package/dist/primitives/contentPart/index.d.ts +0 -4
  393. package/dist/primitives/contentPart/index.js +0 -10
  394. package/dist/primitives/contentPart/index.js.map +0 -1
  395. package/dist/primitives/contentPart/useContentPartFile.d.ts +0 -5
  396. package/dist/primitives/contentPart/useContentPartFile.d.ts.map +0 -1
  397. package/dist/primitives/contentPart/useContentPartFile.js +0 -18
  398. package/dist/primitives/contentPart/useContentPartFile.js.map +0 -1
  399. package/dist/primitives/contentPart/useContentPartImage.d.ts +0 -5
  400. package/dist/primitives/contentPart/useContentPartImage.d.ts.map +0 -1
  401. package/dist/primitives/contentPart/useContentPartImage.js +0 -18
  402. package/dist/primitives/contentPart/useContentPartImage.js.map +0 -1
  403. package/dist/primitives/contentPart/useContentPartReasoning.d.ts +0 -5
  404. package/dist/primitives/contentPart/useContentPartReasoning.d.ts.map +0 -1
  405. package/dist/primitives/contentPart/useContentPartReasoning.js +0 -18
  406. package/dist/primitives/contentPart/useContentPartReasoning.js.map +0 -1
  407. package/dist/primitives/contentPart/useContentPartSource.d.ts +0 -5
  408. package/dist/primitives/contentPart/useContentPartSource.d.ts.map +0 -1
  409. package/dist/primitives/contentPart/useContentPartSource.js +0 -18
  410. package/dist/primitives/contentPart/useContentPartSource.js.map +0 -1
  411. package/dist/primitives/contentPart/useContentPartText.d.ts +0 -7
  412. package/dist/primitives/contentPart/useContentPartText.d.ts.map +0 -1
  413. package/dist/primitives/contentPart/useContentPartText.js +0 -18
  414. package/dist/primitives/contentPart/useContentPartText.js.map +0 -1
  415. package/dist/primitives/message/MessageContent.d.ts +0 -23
  416. package/dist/primitives/message/MessageContent.d.ts.map +0 -1
  417. package/dist/primitives/message/MessageContent.js +0 -138
  418. package/dist/primitives/message/MessageContent.js.map +0 -1
  419. package/dist/types/ContentPartComponentTypes.d.ts +0 -25
  420. package/dist/types/ContentPartComponentTypes.js +0 -1
  421. package/src/cloud/AssistantCloud.tsx +0 -22
  422. package/src/cloud/AssistantCloudAPI.tsx +0 -121
  423. package/src/cloud/AssistantCloudAuthStrategy.tsx +0 -193
  424. package/src/cloud/AssistantCloudAuthTokens.tsx +0 -13
  425. package/src/cloud/AssistantCloudFiles.tsx +0 -48
  426. package/src/cloud/AssistantCloudRuns.tsx +0 -45
  427. package/src/cloud/AssistantCloudThreadMessages.tsx +0 -48
  428. package/src/cloud/AssistantCloudThreads.tsx +0 -79
  429. package/src/context/providers/ContentPartRuntimeProvider.tsx +0 -42
  430. package/src/context/react/ContentPartContext.ts +0 -37
  431. package/src/primitives/contentPart/ContentPartImage.tsx +0 -20
  432. package/src/primitives/contentPart/ContentPartInProgress.tsx +0 -19
  433. package/src/primitives/contentPart/ContentPartText.tsx +0 -37
  434. package/src/primitives/contentPart/index.ts +0 -3
  435. package/src/primitives/contentPart/useContentPartFile.tsx +0 -18
  436. package/src/primitives/contentPart/useContentPartImage.tsx +0 -18
  437. package/src/primitives/contentPart/useContentPartReasoning.tsx +0 -18
  438. package/src/primitives/contentPart/useContentPartSource.tsx +0 -18
  439. package/src/primitives/contentPart/useContentPartText.tsx +0 -18
  440. package/src/primitives/message/MessageContent.tsx +0 -241
  441. package/src/tests/AssistantCloudFiles.test.ts +0 -564
  442. package/src/types/ContentPartComponentTypes.tsx +0 -52
  443. /package/dist/types/{ContentPartComponentTypes.js.map → MessagePartComponentTypes.js.map} +0 -0
@@ -7,12 +7,68 @@ export type MessageContextValue = {
7
7
  useMessageUtils: UseBoundStore<ReadonlyStore<MessageUtilsState>>;
8
8
  };
9
9
  export declare const MessageContext: import("react").Context<MessageContextValue | null>;
10
+ /**
11
+ * Hook to access the MessageRuntime from the current context.
12
+ *
13
+ * The MessageRuntime provides access to message-level state and actions,
14
+ * including message content, status, editing capabilities, and branching.
15
+ *
16
+ * @param options Configuration options
17
+ * @param options.optional Whether the hook should return null if no context is found
18
+ * @returns The MessageRuntime instance, or null if optional is true and no context exists
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * function MessageActions() {
23
+ * const runtime = useMessageRuntime();
24
+ *
25
+ * const handleReload = () => {
26
+ * runtime.reload();
27
+ * };
28
+ *
29
+ * const handleEdit = () => {
30
+ * runtime.startEdit();
31
+ * };
32
+ *
33
+ * return (
34
+ * <div>
35
+ * <button onClick={handleReload}>Reload</button>
36
+ * <button onClick={handleEdit}>Edit</button>
37
+ * </div>
38
+ * );
39
+ * }
40
+ * ```
41
+ */
10
42
  export declare function useMessageRuntime(options?: {
11
43
  optional?: false | undefined;
12
44
  }): MessageRuntime;
13
45
  export declare function useMessageRuntime(options?: {
14
46
  optional?: boolean | undefined;
15
47
  }): MessageRuntime | null;
48
+ /**
49
+ * Hook to access the current message state.
50
+ *
51
+ * This hook provides reactive access to the message's state, including content,
52
+ * role, status, and other message-level properties.
53
+ *
54
+ * @param selector Optional selector function to pick specific state properties
55
+ * @returns The selected message state or the entire message state if no selector provided
56
+ *
57
+ * @example
58
+ * ```tsx
59
+ * function MessageContent() {
60
+ * const role = useMessage((state) => state.role);
61
+ * const content = useMessage((state) => state.content);
62
+ * const isLoading = useMessage((state) => state.status.type === "running");
63
+ *
64
+ * return (
65
+ * <div className={`message-${role}`}>
66
+ * {isLoading ? "Loading..." : content.map(part => part.text).join("")}
67
+ * </div>
68
+ * );
69
+ * }
70
+ * ```
71
+ */
16
72
  export declare const useMessage: {
17
73
  (): import("../..").MessageState;
18
74
  <TSelected>(selector: (state: import("../..").MessageState) => TSelected): TSelected;
@@ -1 +1 @@
1
- {"version":3,"file":"MessageContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/MessageContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,MAAM,MAAM,mBAAmB,GAAG;IAChC,iBAAiB,EAAE,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;IAChE,eAAe,EAAE,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;CAClE,CAAC;AAEF,eAAO,MAAM,cAAc,qDAAkD,CAAC;AAO9E,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAC1C,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,cAAc,CAAC;AACnB,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAC1C,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,cAAc,GAAG,IAAI,CAAC;AAS1B,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;CAA+C,CAAC;AAKvE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;CAE3B,CAAC;AAEF,eAAO,MAAQ,eAAe;;;;;;;;;;GAAE,oBAAoB;;;;;CAGnD,CAAC"}
1
+ {"version":3,"file":"MessageContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/MessageContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAI1D,MAAM,MAAM,mBAAmB,GAAG;IAChC,iBAAiB,EAAE,aAAa,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC;IAChE,eAAe,EAAE,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,CAAC;CAClE,CAAC;AAEF,eAAO,MAAM,cAAc,qDAAkD,CAAC;AAO9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAC1C,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,cAAc,CAAC;AACnB,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE;IAC1C,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,cAAc,GAAG,IAAI,CAAC;AAS1B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;CAA+C,CAAC;AAKvE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;CAE3B,CAAC;AAEF,eAAO,MAAQ,eAAe;;;;;;;;;;GAAE,oBAAoB;;;;;CAGnD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/react/MessageContext.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext } from \"react\";\nimport { ReadonlyStore } from \"../ReadonlyStore\";\nimport { MessageUtilsState } from \"../stores/MessageUtils\";\nimport { createContextHook } from \"./utils/createContextHook\";\nimport { createContextStoreHook } from \"./utils/createContextStoreHook\";\nimport { UseBoundStore } from \"zustand\";\nimport { MessageRuntime } from \"../../api/MessageRuntime\";\nimport { createStateHookForRuntime } from \"./utils/createStateHookForRuntime\";\nimport { EditComposerRuntime } from \"../../api\";\n\nexport type MessageContextValue = {\n useMessageRuntime: UseBoundStore<ReadonlyStore<MessageRuntime>>;\n useMessageUtils: UseBoundStore<ReadonlyStore<MessageUtilsState>>;\n};\n\nexport const MessageContext = createContext<MessageContextValue | null>(null);\n\nconst useMessageContext = createContextHook(\n MessageContext,\n \"a component passed to <ThreadPrimitive.Messages components={...} />\",\n);\n\nexport function useMessageRuntime(options?: {\n optional?: false | undefined;\n}): MessageRuntime;\nexport function useMessageRuntime(options?: {\n optional?: boolean | undefined;\n}): MessageRuntime | null;\nexport function useMessageRuntime(options?: {\n optional?: boolean | undefined;\n}) {\n const context = useMessageContext(options);\n if (!context) return null;\n return context.useMessageRuntime();\n}\n\nexport const useMessage = createStateHookForRuntime(useMessageRuntime);\n\nconst useEditComposerRuntime = (opt: {\n optional: boolean | undefined;\n}): EditComposerRuntime | null => useMessageRuntime(opt)?.composer ?? null;\nexport const useEditComposer = createStateHookForRuntime(\n useEditComposerRuntime,\n);\n\nexport const { useMessageUtils, useMessageUtilsStore } = createContextStoreHook(\n useMessageContext,\n \"useMessageUtils\",\n);\n"],"mappings":";;;AAEA,SAAS,qBAAqB;AAG9B,SAAS,yBAAyB;AAClC,SAAS,8BAA8B;AAGvC,SAAS,iCAAiC;AAQnC,IAAM,iBAAiB,cAA0C,IAAI;AAE5E,IAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AACF;AAQO,SAAS,kBAAkB,SAE/B;AACD,QAAM,UAAU,kBAAkB,OAAO;AACzC,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,QAAQ,kBAAkB;AACnC;AAEO,IAAM,aAAa,0BAA0B,iBAAiB;AAErE,IAAM,yBAAyB,CAAC,QAEE,kBAAkB,GAAG,GAAG,YAAY;AAC/D,IAAM,kBAAkB;AAAA,EAC7B;AACF;AAEO,IAAM,EAAE,iBAAiB,qBAAqB,IAAI;AAAA,EACvD;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/react/MessageContext.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext } from \"react\";\nimport { ReadonlyStore } from \"../ReadonlyStore\";\nimport { MessageUtilsState } from \"../stores/MessageUtils\";\nimport { createContextHook } from \"./utils/createContextHook\";\nimport { createContextStoreHook } from \"./utils/createContextStoreHook\";\nimport { UseBoundStore } from \"zustand\";\nimport { MessageRuntime } from \"../../api/MessageRuntime\";\nimport { createStateHookForRuntime } from \"./utils/createStateHookForRuntime\";\nimport { EditComposerRuntime } from \"../../api\";\n\nexport type MessageContextValue = {\n useMessageRuntime: UseBoundStore<ReadonlyStore<MessageRuntime>>;\n useMessageUtils: UseBoundStore<ReadonlyStore<MessageUtilsState>>;\n};\n\nexport const MessageContext = createContext<MessageContextValue | null>(null);\n\nconst useMessageContext = createContextHook(\n MessageContext,\n \"a component passed to <ThreadPrimitive.Messages components={...} />\",\n);\n\n/**\n * Hook to access the MessageRuntime from the current context.\n *\n * The MessageRuntime provides access to message-level state and actions,\n * including message content, status, editing capabilities, and branching.\n *\n * @param options Configuration options\n * @param options.optional Whether the hook should return null if no context is found\n * @returns The MessageRuntime instance, or null if optional is true and no context exists\n *\n * @example\n * ```tsx\n * function MessageActions() {\n * const runtime = useMessageRuntime();\n *\n * const handleReload = () => {\n * runtime.reload();\n * };\n *\n * const handleEdit = () => {\n * runtime.startEdit();\n * };\n *\n * return (\n * <div>\n * <button onClick={handleReload}>Reload</button>\n * <button onClick={handleEdit}>Edit</button>\n * </div>\n * );\n * }\n * ```\n */\nexport function useMessageRuntime(options?: {\n optional?: false | undefined;\n}): MessageRuntime;\nexport function useMessageRuntime(options?: {\n optional?: boolean | undefined;\n}): MessageRuntime | null;\nexport function useMessageRuntime(options?: {\n optional?: boolean | undefined;\n}) {\n const context = useMessageContext(options);\n if (!context) return null;\n return context.useMessageRuntime();\n}\n\n/**\n * Hook to access the current message state.\n *\n * This hook provides reactive access to the message's state, including content,\n * role, status, and other message-level properties.\n *\n * @param selector Optional selector function to pick specific state properties\n * @returns The selected message state or the entire message state if no selector provided\n *\n * @example\n * ```tsx\n * function MessageContent() {\n * const role = useMessage((state) => state.role);\n * const content = useMessage((state) => state.content);\n * const isLoading = useMessage((state) => state.status.type === \"running\");\n *\n * return (\n * <div className={`message-${role}`}>\n * {isLoading ? \"Loading...\" : content.map(part => part.text).join(\"\")}\n * </div>\n * );\n * }\n * ```\n */\nexport const useMessage = createStateHookForRuntime(useMessageRuntime);\n\nconst useEditComposerRuntime = (opt: {\n optional: boolean | undefined;\n}): EditComposerRuntime | null => useMessageRuntime(opt)?.composer ?? null;\nexport const useEditComposer = createStateHookForRuntime(\n useEditComposerRuntime,\n);\n\nexport const { useMessageUtils, useMessageUtilsStore } = createContextStoreHook(\n useMessageContext,\n \"useMessageUtils\",\n);\n"],"mappings":";;;AAEA,SAAS,qBAAqB;AAG9B,SAAS,yBAAyB;AAClC,SAAS,8BAA8B;AAGvC,SAAS,iCAAiC;AAQnC,IAAM,iBAAiB,cAA0C,IAAI;AAE5E,IAAM,oBAAoB;AAAA,EACxB;AAAA,EACA;AACF;AAwCO,SAAS,kBAAkB,SAE/B;AACD,QAAM,UAAU,kBAAkB,OAAO;AACzC,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,QAAQ,kBAAkB;AACnC;AA0BO,IAAM,aAAa,0BAA0B,iBAAiB;AAErE,IAAM,yBAAyB,CAAC,QAEE,kBAAkB,GAAG,GAAG,YAAY;AAC/D,IAAM,kBAAkB;AAAA,EAC7B;AACF;AAEO,IAAM,EAAE,iBAAiB,qBAAqB,IAAI;AAAA,EACvD;AAAA,EACA;AACF;","names":[]}
@@ -0,0 +1,41 @@
1
+ import { ReadonlyStore } from "../ReadonlyStore";
2
+ import { UseBoundStore } from "zustand";
3
+ import { MessagePartRuntime } from "../../api/MessagePartRuntime";
4
+ export type MessagePartContextValue = {
5
+ useMessagePartRuntime: UseBoundStore<ReadonlyStore<MessagePartRuntime>>;
6
+ };
7
+ export declare const MessagePartContext: import("react").Context<MessagePartContextValue | null>;
8
+ export declare function useMessagePartRuntime(options?: {
9
+ optional?: false | undefined;
10
+ }): MessagePartRuntime;
11
+ export declare function useMessagePartRuntime(options?: {
12
+ optional?: boolean | undefined;
13
+ }): MessagePartRuntime | null;
14
+ export declare const useMessagePart: {
15
+ (): import("../..").MessagePartState;
16
+ <TSelected>(selector: (state: import("../..").MessagePartState) => TSelected): TSelected;
17
+ <TSelected>(selector: ((state: import("../..").MessagePartState) => TSelected) | undefined): import("../..").MessagePartState | TSelected;
18
+ (options: {
19
+ optional?: false | undefined;
20
+ }): import("../..").MessagePartState;
21
+ (options: {
22
+ optional?: boolean | undefined;
23
+ }): import("../..").MessagePartState | null;
24
+ <TSelected>(options: {
25
+ optional?: false | undefined;
26
+ selector: (state: import("../..").MessagePartState) => TSelected;
27
+ }): TSelected;
28
+ <TSelected>(options: {
29
+ optional?: false | undefined;
30
+ selector: ((state: import("../..").MessagePartState) => TSelected) | undefined;
31
+ }): import("../..").MessagePartState | TSelected;
32
+ <TSelected>(options: {
33
+ optional?: boolean | undefined;
34
+ selector: (state: import("../..").MessagePartState) => TSelected;
35
+ }): TSelected | null;
36
+ <TSelected>(options: {
37
+ optional?: boolean | undefined;
38
+ selector: ((state: import("../..").MessagePartState) => TSelected) | undefined;
39
+ }): import("../..").MessagePartState | TSelected | null;
40
+ };
41
+ //# sourceMappingURL=MessagePartContext.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContentPartContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/ContentPartContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,MAAM,uBAAuB,GAAG;IACpC,qBAAqB,EAAE,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;CACzE,CAAC;AAEF,eAAO,MAAM,kBAAkB,yDAE9B,CAAC;AAOF,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,kBAAkB,CAAC;AACvB,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,kBAAkB,GAAG,IAAI,CAAC;AAS9B,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;CAAmD,CAAC"}
1
+ {"version":3,"file":"MessagePartContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/MessagePartContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAGlE,MAAM,MAAM,uBAAuB,GAAG;IACpC,qBAAqB,EAAE,aAAa,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC;CACzE,CAAC;AAEF,eAAO,MAAM,kBAAkB,yDAE9B,CAAC;AAOF,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,kBAAkB,CAAC;AACvB,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,kBAAkB,GAAG,IAAI,CAAC;AAS9B,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;CAAmD,CAAC"}
@@ -0,0 +1,25 @@
1
+ "use client";
2
+
3
+ // src/context/react/MessagePartContext.ts
4
+ import { createContext } from "react";
5
+ import { createContextHook } from "./utils/createContextHook.js";
6
+ import { createStateHookForRuntime } from "./utils/createStateHookForRuntime.js";
7
+ var MessagePartContext = createContext(
8
+ null
9
+ );
10
+ var useMessagePartContext = createContextHook(
11
+ MessagePartContext,
12
+ "a component passed to <MessagePrimitive.Parts components={...}>"
13
+ );
14
+ function useMessagePartRuntime(options) {
15
+ const context = useMessagePartContext(options);
16
+ if (!context) return null;
17
+ return context.useMessagePartRuntime();
18
+ }
19
+ var useMessagePart = createStateHookForRuntime(useMessagePartRuntime);
20
+ export {
21
+ MessagePartContext,
22
+ useMessagePart,
23
+ useMessagePartRuntime
24
+ };
25
+ //# sourceMappingURL=MessagePartContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/context/react/MessagePartContext.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext } from \"react\";\nimport { ReadonlyStore } from \"../ReadonlyStore\";\nimport { createContextHook } from \"./utils/createContextHook\";\nimport { UseBoundStore } from \"zustand\";\nimport { MessagePartRuntime } from \"../../api/MessagePartRuntime\";\nimport { createStateHookForRuntime } from \"./utils/createStateHookForRuntime\";\n\nexport type MessagePartContextValue = {\n useMessagePartRuntime: UseBoundStore<ReadonlyStore<MessagePartRuntime>>;\n};\n\nexport const MessagePartContext = createContext<MessagePartContextValue | null>(\n null,\n);\n\nconst useMessagePartContext = createContextHook(\n MessagePartContext,\n \"a component passed to <MessagePrimitive.Parts components={...}>\",\n);\n\nexport function useMessagePartRuntime(options?: {\n optional?: false | undefined;\n}): MessagePartRuntime;\nexport function useMessagePartRuntime(options?: {\n optional?: boolean | undefined;\n}): MessagePartRuntime | null;\nexport function useMessagePartRuntime(options?: {\n optional?: boolean | undefined;\n}) {\n const context = useMessagePartContext(options);\n if (!context) return null;\n return context.useMessagePartRuntime();\n}\n\nexport const useMessagePart = createStateHookForRuntime(useMessagePartRuntime);\n"],"mappings":";;;AAEA,SAAS,qBAAqB;AAE9B,SAAS,yBAAyB;AAGlC,SAAS,iCAAiC;AAMnC,IAAM,qBAAqB;AAAA,EAChC;AACF;AAEA,IAAM,wBAAwB;AAAA,EAC5B;AAAA,EACA;AACF;AAQO,SAAS,sBAAsB,SAEnC;AACD,QAAM,UAAU,sBAAsB,OAAO;AAC7C,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,QAAQ,sBAAsB;AACvC;AAEO,IAAM,iBAAiB,0BAA0B,qBAAqB;","names":[]}
@@ -6,12 +6,54 @@ export type ThreadContextValue = {
6
6
  useThreadRuntime: UseBoundStore<ReadonlyStore<ThreadRuntime>>;
7
7
  };
8
8
  export declare const ThreadContext: import("react").Context<ThreadContextValue | null>;
9
+ /**
10
+ * Hook to access the ThreadRuntime from the current context.
11
+ *
12
+ * The ThreadRuntime provides access to thread-level state and actions,
13
+ * including message management, thread state, and composer functionality.
14
+ *
15
+ * @param options Configuration options
16
+ * @param options.optional Whether the hook should return null if no context is found
17
+ * @returns The ThreadRuntime instance, or null if optional is true and no context exists
18
+ *
19
+ * @example
20
+ * ```tsx
21
+ * function MyComponent() {
22
+ * const runtime = useThreadRuntime();
23
+ *
24
+ * const handleSendMessage = (text: string) => {
25
+ * runtime.append({ role: "user", content: [{ type: "text", text }] });
26
+ * };
27
+ *
28
+ * return <button onClick={() => handleSendMessage("Hello!")}>Send</button>;
29
+ * }
30
+ * ```
31
+ */
9
32
  export declare function useThreadRuntime(options?: {
10
33
  optional?: false | undefined;
11
34
  }): ThreadRuntime;
12
35
  export declare function useThreadRuntime(options?: {
13
36
  optional?: boolean | undefined;
14
37
  }): ThreadRuntime | null;
38
+ /**
39
+ * Hook to access the current thread state.
40
+ *
41
+ * This hook provides reactive access to the thread's state, including messages,
42
+ * running status, capabilities, and other thread-level properties.
43
+ *
44
+ * @param selector Optional selector function to pick specific state properties
45
+ * @returns The selected thread state or the entire thread state if no selector provided
46
+ *
47
+ * @example
48
+ * ```tsx
49
+ * function ThreadStatus() {
50
+ * const isRunning = useThread((state) => state.isRunning);
51
+ * const messageCount = useThread((state) => state.messages.length);
52
+ *
53
+ * return <div>Running: {isRunning}, Messages: {messageCount}</div>;
54
+ * }
55
+ * ```
56
+ */
15
57
  export declare const useThread: {
16
58
  (): import("../..").ThreadState;
17
59
  <TSelected>(selector: (state: import("../..").ThreadState) => TSelected): TSelected;
@@ -1 +1 @@
1
- {"version":3,"file":"ThreadContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/ThreadContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;CAC/D,CAAC;AAEF,eAAO,MAAM,aAAa,oDAAiD,CAAC;AAO5E,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IACzC,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,aAAa,CAAC;AAClB,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IACzC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,aAAa,GAAG,IAAI,CAAC;AAOzB,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;CAA8C,CAAC;AAKrE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;CAE7B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,YAAY,CAAC;AACjB,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,YAAY,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"ThreadContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/ThreadContext.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,EAAE,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,CAAC;CAC/D,CAAC;AAEF,eAAO,MAAM,aAAa,oDAAiD,CAAC;AAO5E;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IACzC,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,aAAa,CAAC;AAClB,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE;IACzC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,aAAa,GAAG,IAAI,CAAC;AAOzB;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;CAA8C,CAAC;AAKrE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;CAE7B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,YAAY,CAAC;AACjB,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAC9C,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,YAAY,GAAG,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/react/ThreadContext.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext, useEffect, useState } from \"react\";\nimport { ReadonlyStore } from \"../ReadonlyStore\";\nimport { UseBoundStore } from \"zustand\";\nimport { createContextHook } from \"./utils/createContextHook\";\nimport { ThreadRuntime } from \"../../api/ThreadRuntime\";\nimport { ModelContext } from \"../../model-context\";\nimport { createStateHookForRuntime } from \"./utils/createStateHookForRuntime\";\nimport { ThreadComposerRuntime } from \"../../api\";\n\nexport type ThreadContextValue = {\n useThreadRuntime: UseBoundStore<ReadonlyStore<ThreadRuntime>>;\n};\n\nexport const ThreadContext = createContext<ThreadContextValue | null>(null);\n\nconst useThreadContext = createContextHook(\n ThreadContext,\n \"AssistantRuntimeProvider\",\n);\n\nexport function useThreadRuntime(options?: {\n optional?: false | undefined;\n}): ThreadRuntime;\nexport function useThreadRuntime(options?: {\n optional?: boolean | undefined;\n}): ThreadRuntime | null;\nexport function useThreadRuntime(options?: { optional?: boolean | undefined }) {\n const context = useThreadContext(options);\n if (!context) return null;\n return context.useThreadRuntime();\n}\n\nexport const useThread = createStateHookForRuntime(useThreadRuntime);\n\nconst useThreadComposerRuntime = (opt: {\n optional: boolean | undefined;\n}): ThreadComposerRuntime | null => useThreadRuntime(opt)?.composer ?? null;\nexport const useThreadComposer = createStateHookForRuntime(\n useThreadComposerRuntime,\n);\n\nexport function useThreadModelContext(options?: {\n optional?: false | undefined;\n}): ModelContext;\nexport function useThreadModelContext(options?: {\n optional?: boolean | undefined;\n}): ModelContext | null;\nexport function useThreadModelContext(options?: {\n optional?: boolean | undefined;\n}): ModelContext | null {\n const [, rerender] = useState({});\n\n const runtime = useThreadRuntime(options);\n useEffect(() => {\n return runtime?.unstable_on(\"model-context-update\", () => rerender({}));\n }, [runtime]);\n\n if (!runtime) return null;\n return runtime?.getModelContext();\n}\n"],"mappings":";;;AAEA,SAAS,eAAe,WAAW,gBAAgB;AAGnD,SAAS,yBAAyB;AAGlC,SAAS,iCAAiC;AAOnC,IAAM,gBAAgB,cAAyC,IAAI;AAE1E,IAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AACF;AAQO,SAAS,iBAAiB,SAA8C;AAC7E,QAAM,UAAU,iBAAiB,OAAO;AACxC,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,QAAQ,iBAAiB;AAClC;AAEO,IAAM,YAAY,0BAA0B,gBAAgB;AAEnE,IAAM,2BAA2B,CAAC,QAEE,iBAAiB,GAAG,GAAG,YAAY;AAChE,IAAM,oBAAoB;AAAA,EAC/B;AACF;AAQO,SAAS,sBAAsB,SAEd;AACtB,QAAM,CAAC,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;AAEhC,QAAM,UAAU,iBAAiB,OAAO;AACxC,YAAU,MAAM;AACd,WAAO,SAAS,YAAY,wBAAwB,MAAM,SAAS,CAAC,CAAC,CAAC;AAAA,EACxE,GAAG,CAAC,OAAO,CAAC;AAEZ,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,SAAS,gBAAgB;AAClC;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/react/ThreadContext.ts"],"sourcesContent":["\"use client\";\n\nimport { createContext, useEffect, useState } from \"react\";\nimport { ReadonlyStore } from \"../ReadonlyStore\";\nimport { UseBoundStore } from \"zustand\";\nimport { createContextHook } from \"./utils/createContextHook\";\nimport { ThreadRuntime } from \"../../api/ThreadRuntime\";\nimport { ModelContext } from \"../../model-context\";\nimport { createStateHookForRuntime } from \"./utils/createStateHookForRuntime\";\nimport { ThreadComposerRuntime } from \"../../api\";\n\nexport type ThreadContextValue = {\n useThreadRuntime: UseBoundStore<ReadonlyStore<ThreadRuntime>>;\n};\n\nexport const ThreadContext = createContext<ThreadContextValue | null>(null);\n\nconst useThreadContext = createContextHook(\n ThreadContext,\n \"AssistantRuntimeProvider\",\n);\n\n/**\n * Hook to access the ThreadRuntime from the current context.\n *\n * The ThreadRuntime provides access to thread-level state and actions,\n * including message management, thread state, and composer functionality.\n *\n * @param options Configuration options\n * @param options.optional Whether the hook should return null if no context is found\n * @returns The ThreadRuntime instance, or null if optional is true and no context exists\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const runtime = useThreadRuntime();\n *\n * const handleSendMessage = (text: string) => {\n * runtime.append({ role: \"user\", content: [{ type: \"text\", text }] });\n * };\n *\n * return <button onClick={() => handleSendMessage(\"Hello!\")}>Send</button>;\n * }\n * ```\n */\nexport function useThreadRuntime(options?: {\n optional?: false | undefined;\n}): ThreadRuntime;\nexport function useThreadRuntime(options?: {\n optional?: boolean | undefined;\n}): ThreadRuntime | null;\nexport function useThreadRuntime(options?: { optional?: boolean | undefined }) {\n const context = useThreadContext(options);\n if (!context) return null;\n return context.useThreadRuntime();\n}\n\n/**\n * Hook to access the current thread state.\n *\n * This hook provides reactive access to the thread's state, including messages,\n * running status, capabilities, and other thread-level properties.\n *\n * @param selector Optional selector function to pick specific state properties\n * @returns The selected thread state or the entire thread state if no selector provided\n *\n * @example\n * ```tsx\n * function ThreadStatus() {\n * const isRunning = useThread((state) => state.isRunning);\n * const messageCount = useThread((state) => state.messages.length);\n *\n * return <div>Running: {isRunning}, Messages: {messageCount}</div>;\n * }\n * ```\n */\nexport const useThread = createStateHookForRuntime(useThreadRuntime);\n\nconst useThreadComposerRuntime = (opt: {\n optional: boolean | undefined;\n}): ThreadComposerRuntime | null => useThreadRuntime(opt)?.composer ?? null;\nexport const useThreadComposer = createStateHookForRuntime(\n useThreadComposerRuntime,\n);\n\nexport function useThreadModelContext(options?: {\n optional?: false | undefined;\n}): ModelContext;\nexport function useThreadModelContext(options?: {\n optional?: boolean | undefined;\n}): ModelContext | null;\nexport function useThreadModelContext(options?: {\n optional?: boolean | undefined;\n}): ModelContext | null {\n const [, rerender] = useState({});\n\n const runtime = useThreadRuntime(options);\n useEffect(() => {\n return runtime?.unstable_on(\"model-context-update\", () => rerender({}));\n }, [runtime]);\n\n if (!runtime) return null;\n return runtime?.getModelContext();\n}\n"],"mappings":";;;AAEA,SAAS,eAAe,WAAW,gBAAgB;AAGnD,SAAS,yBAAyB;AAGlC,SAAS,iCAAiC;AAOnC,IAAM,gBAAgB,cAAyC,IAAI;AAE1E,IAAM,mBAAmB;AAAA,EACvB;AAAA,EACA;AACF;AA+BO,SAAS,iBAAiB,SAA8C;AAC7E,QAAM,UAAU,iBAAiB,OAAO;AACxC,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,QAAQ,iBAAiB;AAClC;AAqBO,IAAM,YAAY,0BAA0B,gBAAgB;AAEnE,IAAM,2BAA2B,CAAC,QAEE,iBAAiB,GAAG,GAAG,YAAY;AAChE,IAAM,oBAAoB;AAAA,EAC/B;AACF;AAQO,SAAS,sBAAsB,SAEd;AACtB,QAAM,CAAC,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;AAEhC,QAAM,UAAU,iBAAiB,OAAO;AACxC,YAAU,MAAM;AACd,WAAO,SAAS,YAAY,wBAAwB,MAAM,SAAS,CAAC,CAAC,CAAC;AAAA,EACxE,GAAG,CAAC,OAAO,CAAC;AAEZ,MAAI,CAAC,QAAS,QAAO;AACrB,SAAO,SAAS,gBAAgB;AAClC;","names":[]}
@@ -7,7 +7,7 @@ useThreadModelContext as useThreadModelConfig, } from "./ThreadContext";
7
7
  export { useThreadViewport, useThreadViewportStore, } from "./ThreadViewportContext";
8
8
  export { useThreadListItemRuntime, useThreadListItem, } from "./ThreadListItemContext";
9
9
  export { useMessageRuntime, useMessage, useEditComposer, useMessageUtils, useMessageUtilsStore, } from "./MessageContext";
10
- export { useContentPartRuntime, useContentPart } from "./ContentPartContext";
10
+ export { useMessagePartRuntime, useMessagePart } from "./MessagePartContext";
11
11
  export { useComposerRuntime, useComposer } from "./ComposerContext";
12
12
  export { useAttachment, useAttachmentRuntime, } from "./AttachmentContext";
13
13
  export { useRuntimeState } from "./utils/useRuntimeState";
@@ -29,7 +29,7 @@ import {
29
29
  useMessageUtils,
30
30
  useMessageUtilsStore
31
31
  } from "./MessageContext.js";
32
- import { useContentPartRuntime, useContentPart } from "./ContentPartContext.js";
32
+ import { useMessagePartRuntime, useMessagePart } from "./MessagePartContext.js";
33
33
  import { useComposerRuntime, useComposer } from "./ComposerContext.js";
34
34
  import {
35
35
  useAttachment,
@@ -42,10 +42,10 @@ export {
42
42
  useAttachmentRuntime,
43
43
  useComposer,
44
44
  useComposerRuntime,
45
- useContentPart,
46
- useContentPartRuntime,
47
45
  useEditComposer,
48
46
  useMessage,
47
+ useMessagePart,
48
+ useMessagePartRuntime,
49
49
  useMessageRuntime,
50
50
  useMessageUtils,
51
51
  useMessageUtilsStore,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/react/index.ts"],"sourcesContent":["\"use client\";\n// TODO createContextStoreHook does not work well with server-side nextjs bundler\n// use client necessary here for now\n\nexport {\n useAssistantRuntime,\n useThreadList,\n useToolUIs,\n useToolUIsStore,\n} from \"./AssistantContext\";\n\nexport {\n useThreadRuntime,\n useThread,\n useThreadComposer,\n useThreadModelContext,\n /**\n * @deprecated This method was renamed to `useThreadModelContext`.\n */\n useThreadModelContext as useThreadModelConfig,\n} from \"./ThreadContext\";\n\nexport {\n useThreadViewport,\n useThreadViewportStore,\n} from \"./ThreadViewportContext\";\n\nexport {\n useThreadListItemRuntime,\n useThreadListItem,\n} from \"./ThreadListItemContext\";\n\nexport {\n useMessageRuntime,\n useMessage,\n useEditComposer,\n useMessageUtils,\n useMessageUtilsStore,\n} from \"./MessageContext\";\nexport { useContentPartRuntime, useContentPart } from \"./ContentPartContext\";\nexport { useComposerRuntime, useComposer } from \"./ComposerContext\";\n\nexport {\n useAttachment,\n useAttachmentRuntime,\n\n // TODO decide if we want to export/drop these?\n // useEditComposerAttachment,\n // useEditComposerAttachmentRuntime,\n // useMessageAttachment,\n // useMessageAttachmentRuntime,\n // useThreadComposerAttachment,\n // useThreadComposerAttachmentRuntime,\n} from \"./AttachmentContext\";\n\nexport { useRuntimeState } from \"./utils/useRuntimeState\";\n"],"mappings":";;;AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIyB,yBAAzBA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAAuB,sBAAsB;AACtD,SAAS,oBAAoB,mBAAmB;AAEhD;AAAA,EACE;AAAA,EACA;AAAA,OASK;AAEP,SAAS,uBAAuB;","names":["useThreadModelContext"]}
1
+ {"version":3,"sources":["../../../src/context/react/index.ts"],"sourcesContent":["\"use client\";\n// TODO createContextStoreHook does not work well with server-side nextjs bundler\n// use client necessary here for now\n\nexport {\n useAssistantRuntime,\n useThreadList,\n useToolUIs,\n useToolUIsStore,\n} from \"./AssistantContext\";\n\nexport {\n useThreadRuntime,\n useThread,\n useThreadComposer,\n useThreadModelContext,\n /**\n * @deprecated This method was renamed to `useThreadModelContext`.\n */\n useThreadModelContext as useThreadModelConfig,\n} from \"./ThreadContext\";\n\nexport {\n useThreadViewport,\n useThreadViewportStore,\n} from \"./ThreadViewportContext\";\n\nexport {\n useThreadListItemRuntime,\n useThreadListItem,\n} from \"./ThreadListItemContext\";\n\nexport {\n useMessageRuntime,\n useMessage,\n useEditComposer,\n useMessageUtils,\n useMessageUtilsStore,\n} from \"./MessageContext\";\nexport { useMessagePartRuntime, useMessagePart } from \"./MessagePartContext\";\nexport { useComposerRuntime, useComposer } from \"./ComposerContext\";\n\nexport {\n useAttachment,\n useAttachmentRuntime,\n\n // TODO decide if we want to export/drop these?\n // useEditComposerAttachment,\n // useEditComposerAttachmentRuntime,\n // useMessageAttachment,\n // useMessageAttachmentRuntime,\n // useThreadComposerAttachment,\n // useThreadComposerAttachmentRuntime,\n} from \"./AttachmentContext\";\n\nexport { useRuntimeState } from \"./utils/useRuntimeState\";\n"],"mappings":";;;AAIA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EAIyB,yBAAzBA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,uBAAuB,sBAAsB;AACtD,SAAS,oBAAoB,mBAAmB;AAEhD;AAAA,EACE;AAAA,EACA;AAAA,OASK;AAEP,SAAS,uBAAuB;","names":["useThreadModelContext"]}
@@ -1,14 +1,14 @@
1
- import type { ToolCallContentPartComponent } from "../../types/ContentPartComponentTypes";
1
+ import type { ToolCallMessagePartComponent } from "../../types/MessagePartComponentTypes";
2
2
  import { Unsubscribe } from "../../types";
3
3
  export type AssistantToolUIsState = {
4
4
  /**
5
5
  * Get the tool UI configured for a given tool name.
6
6
  */
7
- getToolUI: (toolName: string) => ToolCallContentPartComponent | null;
7
+ getToolUI: (toolName: string) => ToolCallMessagePartComponent | null;
8
8
  /**
9
9
  * Registers a tool UI for a given tool name. Returns an unsubscribe function to remove the tool UI.
10
10
  */
11
- setToolUI: (toolName: string, render: ToolCallContentPartComponent) => Unsubscribe;
11
+ setToolUI: (toolName: string, render: ToolCallMessagePartComponent) => Unsubscribe;
12
12
  };
13
13
  export declare const makeAssistantToolUIsStore: () => import("zustand").UseBoundStore<import("zustand").StoreApi<AssistantToolUIsState>>;
14
14
  //# sourceMappingURL=AssistantToolUIs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/context/stores/AssistantToolUIs.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport type { ToolCallContentPartComponent } from \"../../types/ContentPartComponentTypes\";\nimport { Unsubscribe } from \"../../types\";\n\nexport type AssistantToolUIsState = {\n /**\n * Get the tool UI configured for a given tool name.\n */\n getToolUI: (toolName: string) => ToolCallContentPartComponent | null;\n\n /**\n * Registers a tool UI for a given tool name. Returns an unsubscribe function to remove the tool UI.\n */\n setToolUI: (\n toolName: string,\n render: ToolCallContentPartComponent,\n ) => Unsubscribe;\n};\n\nexport const makeAssistantToolUIsStore = () =>\n create<AssistantToolUIsState>((set) => {\n const renderers = new Map<string, ToolCallContentPartComponent[]>();\n\n return Object.freeze({\n getToolUI: (name) => {\n const arr = renderers.get(name);\n const last = arr?.at(-1);\n if (last) return last;\n return null;\n },\n setToolUI: (name, render) => {\n let arr = renderers.get(name);\n if (!arr) {\n arr = [];\n renderers.set(name, arr);\n }\n arr.push(render);\n set({}); // notify the store listeners\n\n return () => {\n const index = arr.indexOf(render);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n if (index === arr.length) {\n set({}); // notify the store listeners\n }\n };\n },\n }) satisfies AssistantToolUIsState;\n });\n"],"mappings":";AAAA,SAAS,cAAc;AAmBhB,IAAM,4BAA4B,MACvC,OAA8B,CAAC,QAAQ;AACrC,QAAM,YAAY,oBAAI,IAA4C;AAElE,SAAO,OAAO,OAAO;AAAA,IACnB,WAAW,CAAC,SAAS;AACnB,YAAM,MAAM,UAAU,IAAI,IAAI;AAC9B,YAAM,OAAO,KAAK,GAAG,EAAE;AACvB,UAAI,KAAM,QAAO;AACjB,aAAO;AAAA,IACT;AAAA,IACA,WAAW,CAAC,MAAM,WAAW;AAC3B,UAAI,MAAM,UAAU,IAAI,IAAI;AAC5B,UAAI,CAAC,KAAK;AACR,cAAM,CAAC;AACP,kBAAU,IAAI,MAAM,GAAG;AAAA,MACzB;AACA,UAAI,KAAK,MAAM;AACf,UAAI,CAAC,CAAC;AAEN,aAAO,MAAM;AACX,cAAM,QAAQ,IAAI,QAAQ,MAAM;AAChC,YAAI,UAAU,IAAI;AAChB,cAAI,OAAO,OAAO,CAAC;AAAA,QACrB;AACA,YAAI,UAAU,IAAI,QAAQ;AACxB,cAAI,CAAC,CAAC;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;","names":[]}
1
+ {"version":3,"sources":["../../../src/context/stores/AssistantToolUIs.ts"],"sourcesContent":["import { create } from \"zustand\";\nimport type { ToolCallMessagePartComponent } from \"../../types/MessagePartComponentTypes\";\nimport { Unsubscribe } from \"../../types\";\n\nexport type AssistantToolUIsState = {\n /**\n * Get the tool UI configured for a given tool name.\n */\n getToolUI: (toolName: string) => ToolCallMessagePartComponent | null;\n\n /**\n * Registers a tool UI for a given tool name. Returns an unsubscribe function to remove the tool UI.\n */\n setToolUI: (\n toolName: string,\n render: ToolCallMessagePartComponent,\n ) => Unsubscribe;\n};\n\nexport const makeAssistantToolUIsStore = () =>\n create<AssistantToolUIsState>((set) => {\n const renderers = new Map<string, ToolCallMessagePartComponent[]>();\n\n return Object.freeze({\n getToolUI: (name) => {\n const arr = renderers.get(name);\n const last = arr?.at(-1);\n if (last) return last;\n return null;\n },\n setToolUI: (name, render) => {\n let arr = renderers.get(name);\n if (!arr) {\n arr = [];\n renderers.set(name, arr);\n }\n arr.push(render);\n set({}); // notify the store listeners\n\n return () => {\n const index = arr.indexOf(render);\n if (index !== -1) {\n arr.splice(index, 1);\n }\n if (index === arr.length) {\n set({}); // notify the store listeners\n }\n };\n },\n }) satisfies AssistantToolUIsState;\n });\n"],"mappings":";AAAA,SAAS,cAAc;AAmBhB,IAAM,4BAA4B,MACvC,OAA8B,CAAC,QAAQ;AACrC,QAAM,YAAY,oBAAI,IAA4C;AAElE,SAAO,OAAO,OAAO;AAAA,IACnB,WAAW,CAAC,SAAS;AACnB,YAAM,MAAM,UAAU,IAAI,IAAI;AAC9B,YAAM,OAAO,KAAK,GAAG,EAAE;AACvB,UAAI,KAAM,QAAO;AACjB,aAAO;AAAA,IACT;AAAA,IACA,WAAW,CAAC,MAAM,WAAW;AAC3B,UAAI,MAAM,UAAU,IAAI,IAAI;AAC5B,UAAI,CAAC,KAAK;AACR,cAAM,CAAC;AACP,kBAAU,IAAI,MAAM,GAAG;AAAA,MACzB;AACA,UAAI,KAAK,MAAM;AACf,UAAI,CAAC,CAAC;AAEN,aAAO,MAAM;AACX,cAAM,QAAQ,IAAI,QAAQ,MAAM;AAChC,YAAI,UAAU,IAAI;AAChB,cAAI,OAAO,OAAO,CAAC;AAAA,QACrB;AACA,YAAI,UAAU,IAAI,QAAQ;AACxB,cAAI,CAAC,CAAC;AAAA,QACR;AAAA,MACF;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;","names":[]}
@@ -1,8 +1,8 @@
1
- import type { ToolCallContentPartComponent } from "../types/ContentPartComponentTypes";
1
+ import type { ToolCallMessagePartComponent } from "../types/MessagePartComponentTypes";
2
2
  import type { Tool } from "assistant-stream";
3
3
  export type AssistantToolProps<TArgs extends Record<string, unknown>, TResult> = Tool<TArgs, TResult> & {
4
4
  toolName: string;
5
- render?: ToolCallContentPartComponent<TArgs, TResult> | undefined;
5
+ render?: ToolCallMessagePartComponent<TArgs, TResult> | undefined;
6
6
  };
7
7
  export declare const useAssistantTool: <TArgs extends Record<string, unknown>, TResult>(tool: AssistantToolProps<TArgs, TResult>) => void;
8
8
  //# sourceMappingURL=useAssistantTool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model-context/useAssistantTool.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect } from \"react\";\nimport {\n useAssistantRuntime,\n useToolUIsStore,\n} from \"../context/react/AssistantContext\";\nimport type { ToolCallContentPartComponent } from \"../types/ContentPartComponentTypes\";\nimport type { Tool } from \"assistant-stream\";\n\nexport type AssistantToolProps<\n TArgs extends Record<string, unknown>,\n TResult,\n> = Tool<TArgs, TResult> & {\n toolName: string;\n render?: ToolCallContentPartComponent<TArgs, TResult> | undefined;\n};\n\nexport const useAssistantTool = <\n TArgs extends Record<string, unknown>,\n TResult,\n>(\n tool: AssistantToolProps<TArgs, TResult>,\n) => {\n const assistantRuntime = useAssistantRuntime();\n const toolUIsStore = useToolUIsStore();\n\n useEffect(() => {\n return tool.render\n ? toolUIsStore.getState().setToolUI(tool.toolName, tool.render)\n : undefined;\n }, [toolUIsStore, tool.toolName, tool.render]);\n\n useEffect(() => {\n const { toolName, render, ...rest } = tool;\n const context = {\n tools: {\n [toolName]: rest,\n },\n };\n return assistantRuntime.registerModelContextProvider({\n getModelContext: () => context,\n });\n }, [assistantRuntime, tool]);\n};\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAYA,IAAM,mBAAmB,CAI9B,SACG;AACH,QAAM,mBAAmB,oBAAoB;AAC7C,QAAM,eAAe,gBAAgB;AAErC,YAAU,MAAM;AACd,WAAO,KAAK,SACR,aAAa,SAAS,EAAE,UAAU,KAAK,UAAU,KAAK,MAAM,IAC5D;AAAA,EACN,GAAG,CAAC,cAAc,KAAK,UAAU,KAAK,MAAM,CAAC;AAE7C,YAAU,MAAM;AACd,UAAM,EAAE,UAAU,QAAQ,GAAG,KAAK,IAAI;AACtC,UAAM,UAAU;AAAA,MACd,OAAO;AAAA,QACL,CAAC,QAAQ,GAAG;AAAA,MACd;AAAA,IACF;AACA,WAAO,iBAAiB,6BAA6B;AAAA,MACnD,iBAAiB,MAAM;AAAA,IACzB,CAAC;AAAA,EACH,GAAG,CAAC,kBAAkB,IAAI,CAAC;AAC7B;","names":[]}
1
+ {"version":3,"sources":["../../src/model-context/useAssistantTool.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect } from \"react\";\nimport {\n useAssistantRuntime,\n useToolUIsStore,\n} from \"../context/react/AssistantContext\";\nimport type { ToolCallMessagePartComponent } from \"../types/MessagePartComponentTypes\";\nimport type { Tool } from \"assistant-stream\";\n\nexport type AssistantToolProps<\n TArgs extends Record<string, unknown>,\n TResult,\n> = Tool<TArgs, TResult> & {\n toolName: string;\n render?: ToolCallMessagePartComponent<TArgs, TResult> | undefined;\n};\n\nexport const useAssistantTool = <\n TArgs extends Record<string, unknown>,\n TResult,\n>(\n tool: AssistantToolProps<TArgs, TResult>,\n) => {\n const assistantRuntime = useAssistantRuntime();\n const toolUIsStore = useToolUIsStore();\n\n useEffect(() => {\n return tool.render\n ? toolUIsStore.getState().setToolUI(tool.toolName, tool.render)\n : undefined;\n }, [toolUIsStore, tool.toolName, tool.render]);\n\n useEffect(() => {\n const { toolName, render, ...rest } = tool;\n const context = {\n tools: {\n [toolName]: rest,\n },\n };\n return assistantRuntime.registerModelContextProvider({\n getModelContext: () => context,\n });\n }, [assistantRuntime, tool]);\n};\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AAYA,IAAM,mBAAmB,CAI9B,SACG;AACH,QAAM,mBAAmB,oBAAoB;AAC7C,QAAM,eAAe,gBAAgB;AAErC,YAAU,MAAM;AACd,WAAO,KAAK,SACR,aAAa,SAAS,EAAE,UAAU,KAAK,UAAU,KAAK,MAAM,IAC5D;AAAA,EACN,GAAG,CAAC,cAAc,KAAK,UAAU,KAAK,MAAM,CAAC;AAE7C,YAAU,MAAM;AACd,UAAM,EAAE,UAAU,QAAQ,GAAG,KAAK,IAAI;AACtC,UAAM,UAAU;AAAA,MACd,OAAO;AAAA,QACL,CAAC,QAAQ,GAAG;AAAA,MACd;AAAA,IACF;AACA,WAAO,iBAAiB,6BAA6B;AAAA,MACnD,iBAAiB,MAAM;AAAA,IACzB,CAAC;AAAA,EACH,GAAG,CAAC,kBAAkB,IAAI,CAAC;AAC7B;","names":[]}
@@ -1,7 +1,7 @@
1
- import type { ToolCallContentPartComponent } from "../types/ContentPartComponentTypes";
1
+ import type { ToolCallMessagePartComponent } from "../types/MessagePartComponentTypes";
2
2
  export type AssistantToolUIProps<TArgs, TResult> = {
3
3
  toolName: string;
4
- render: ToolCallContentPartComponent<TArgs, TResult>;
4
+ render: ToolCallMessagePartComponent<TArgs, TResult>;
5
5
  };
6
6
  export declare const useAssistantToolUI: (tool: AssistantToolUIProps<any, any> | null) => void;
7
7
  //# sourceMappingURL=useAssistantToolUI.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model-context/useAssistantToolUI.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useToolUIsStore } from \"../context/react/AssistantContext\";\nimport type { ToolCallContentPartComponent } from \"../types/ContentPartComponentTypes\";\n\nexport type AssistantToolUIProps<TArgs, TResult> = {\n toolName: string;\n render: ToolCallContentPartComponent<TArgs, TResult>;\n};\n\nexport const useAssistantToolUI = (\n tool: AssistantToolUIProps<any, any> | null,\n) => {\n const toolUIsStore = useToolUIsStore();\n useEffect(() => {\n if (!tool?.toolName || !tool?.render) return;\n return toolUIsStore.getState().setToolUI(tool.toolName, tool.render);\n }, [toolUIsStore, tool?.toolName, tool?.render]);\n};\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAQzB,IAAM,qBAAqB,CAChC,SACG;AACH,QAAM,eAAe,gBAAgB;AACrC,YAAU,MAAM;AACd,QAAI,CAAC,MAAM,YAAY,CAAC,MAAM,OAAQ;AACtC,WAAO,aAAa,SAAS,EAAE,UAAU,KAAK,UAAU,KAAK,MAAM;AAAA,EACrE,GAAG,CAAC,cAAc,MAAM,UAAU,MAAM,MAAM,CAAC;AACjD;","names":[]}
1
+ {"version":3,"sources":["../../src/model-context/useAssistantToolUI.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect } from \"react\";\nimport { useToolUIsStore } from \"../context/react/AssistantContext\";\nimport type { ToolCallMessagePartComponent } from \"../types/MessagePartComponentTypes\";\n\nexport type AssistantToolUIProps<TArgs, TResult> = {\n toolName: string;\n render: ToolCallMessagePartComponent<TArgs, TResult>;\n};\n\nexport const useAssistantToolUI = (\n tool: AssistantToolUIProps<any, any> | null,\n) => {\n const toolUIsStore = useToolUIsStore();\n useEffect(() => {\n if (!tool?.toolName || !tool?.render) return;\n return toolUIsStore.getState().setToolUI(tool.toolName, tool.render);\n }, [toolUIsStore, tool?.toolName, tool?.render]);\n};\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAQzB,IAAM,qBAAqB,CAChC,SACG;AACH,QAAM,eAAe,gBAAgB;AACrC,YAAU,MAAM;AACd,QAAI,CAAC,MAAM,YAAY,CAAC,MAAM,OAAQ;AACtC,WAAO,aAAa,SAAS,EAAE,UAAU,KAAK,UAAU,KAAK,MAAM;AAAA,EACrE,GAAG,CAAC,cAAc,MAAM,UAAU,MAAM,MAAM,CAAC;AACjD;","names":[]}
@@ -1,4 +1,4 @@
1
1
  import { FC } from "react";
2
- import { ToolCallContentPartProps } from "../types";
3
- export declare const useInlineRender: <TArgs, TResult>(toolUI: FC<ToolCallContentPartProps<TArgs, TResult>>) => FC<ToolCallContentPartProps<TArgs, TResult>>;
2
+ import { ToolCallMessagePartProps } from "../types";
3
+ export declare const useInlineRender: <TArgs, TResult>(toolUI: FC<ToolCallMessagePartProps<TArgs, TResult>>) => FC<ToolCallMessagePartProps<TArgs, TResult>>;
4
4
  //# sourceMappingURL=useInlineRender.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/model-context/useInlineRender.tsx"],"sourcesContent":["\"use client\";\n\nimport { FC, useCallback, useEffect, useState } from \"react\";\nimport { ToolCallContentPartProps } from \"../types\";\nimport { create } from \"zustand\";\n\nexport const useInlineRender = <TArgs, TResult>(\n toolUI: FC<ToolCallContentPartProps<TArgs, TResult>>,\n): FC<ToolCallContentPartProps<TArgs, TResult>> => {\n const [useToolUIStore] = useState(() =>\n create(() => ({\n toolUI,\n })),\n );\n\n useEffect(() => {\n useToolUIStore.setState({ toolUI });\n }, [toolUI, useToolUIStore]);\n\n return useCallback(\n function ToolUI(args) {\n const store = useToolUIStore();\n return store.toolUI(args);\n },\n [useToolUIStore],\n );\n};\n"],"mappings":";;;AAEA,SAAa,aAAa,WAAW,gBAAgB;AAErD,SAAS,cAAc;AAEhB,IAAM,kBAAkB,CAC7B,WACiD;AACjD,QAAM,CAAC,cAAc,IAAI;AAAA,IAAS,MAChC,OAAO,OAAO;AAAA,MACZ;AAAA,IACF,EAAE;AAAA,EACJ;AAEA,YAAU,MAAM;AACd,mBAAe,SAAS,EAAE,OAAO,CAAC;AAAA,EACpC,GAAG,CAAC,QAAQ,cAAc,CAAC;AAE3B,SAAO;AAAA,IACL,SAAS,OAAO,MAAM;AACpB,YAAM,QAAQ,eAAe;AAC7B,aAAO,MAAM,OAAO,IAAI;AAAA,IAC1B;AAAA,IACA,CAAC,cAAc;AAAA,EACjB;AACF;","names":[]}
1
+ {"version":3,"sources":["../../src/model-context/useInlineRender.tsx"],"sourcesContent":["\"use client\";\n\nimport { FC, useCallback, useEffect, useState } from \"react\";\nimport { ToolCallMessagePartProps } from \"../types\";\nimport { create } from \"zustand\";\n\nexport const useInlineRender = <TArgs, TResult>(\n toolUI: FC<ToolCallMessagePartProps<TArgs, TResult>>,\n): FC<ToolCallMessagePartProps<TArgs, TResult>> => {\n const [useToolUIStore] = useState(() =>\n create(() => ({\n toolUI,\n })),\n );\n\n useEffect(() => {\n useToolUIStore.setState({ toolUI });\n }, [toolUI, useToolUIStore]);\n\n return useCallback(\n function ToolUI(args) {\n const store = useToolUIStore();\n return store.toolUI(args);\n },\n [useToolUIStore],\n );\n};\n"],"mappings":";;;AAEA,SAAa,aAAa,WAAW,gBAAgB;AAErD,SAAS,cAAc;AAEhB,IAAM,kBAAkB,CAC7B,WACiD;AACjD,QAAM,CAAC,cAAc,IAAI;AAAA,IAAS,MAChC,OAAO,OAAO;AAAA,MACZ;AAAA,IACF,EAAE;AAAA,EACJ;AAEA,YAAU,MAAM;AACd,mBAAe,SAAS,EAAE,OAAO,CAAC;AAAA,EACpC,GAAG,CAAC,QAAQ,cAAc,CAAC;AAE3B,SAAO;AAAA,IACL,SAAS,OAAO,MAAM;AACpB,YAAM,QAAQ,eAAe;AAC7B,aAAO,MAAM,OAAO,IAAI;AAAA,IAC1B;AAAA,IACA,CAAC,cAAc;AAAA,EACjB;AACF;","names":[]}
@@ -1,11 +1,53 @@
1
1
  import { ActionButtonProps } from "../../utils/createActionButton";
2
+ /**
3
+ * Hook that provides copy functionality for action bar buttons.
4
+ *
5
+ * This hook returns a callback function that copies message content to the clipboard,
6
+ * or null if copying is not available. It handles both regular message content and
7
+ * composer text when in editing mode.
8
+ *
9
+ * @param options Configuration options
10
+ * @param options.copiedDuration Duration in milliseconds to show the copied state
11
+ * @returns A copy callback function, or null if copying is disabled
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * function CustomCopyButton() {
16
+ * const copy = useActionBarPrimitiveCopy({ copiedDuration: 2000 });
17
+ *
18
+ * return (
19
+ * <button onClick={copy} disabled={!copy}>
20
+ * {copy ? "Copy" : "Cannot Copy"}
21
+ * </button>
22
+ * );
23
+ * }
24
+ * ```
25
+ */
2
26
  declare const useActionBarPrimitiveCopy: ({ copiedDuration, }?: {
3
27
  copiedDuration?: number | undefined;
4
28
  }) => (() => void) | null;
5
29
  export declare namespace ActionBarPrimitiveCopy {
6
30
  type Element = HTMLButtonElement;
31
+ /**
32
+ * Props for the ActionBarPrimitive.Copy component.
33
+ * Inherits all button element props and action button functionality.
34
+ */
7
35
  type Props = ActionButtonProps<typeof useActionBarPrimitiveCopy>;
8
36
  }
37
+ /**
38
+ * A button component that copies message content to the clipboard.
39
+ *
40
+ * This component automatically handles copying message text to the clipboard
41
+ * and provides visual feedback through the data-copied attribute. It's disabled
42
+ * when there's no copyable content available.
43
+ *
44
+ * @example
45
+ * ```tsx
46
+ * <ActionBarPrimitive.Copy copiedDuration={2000}>
47
+ * Copy Message
48
+ * </ActionBarPrimitive.Copy>
49
+ * ```
50
+ */
9
51
  export declare const ActionBarPrimitiveCopy: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
10
52
  asChild?: boolean;
11
53
  }, "ref"> & {
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBarCopy.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarCopy.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAWnE,QAAA,MAAM,yBAAyB,GAAI,sBAEhC;IAAE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAO,wBA0B9C,CAAC;AAEF,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,OAAO,GAAG,iBAAiB,CAAC;IACxC,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,yBAAyB,CAAC,CAAC;CACzE;AAED,eAAO,MAAM,sBAAsB;;;qBAjCb,MAAM,GAAG,SAAS;qDAmDtC,CAAC"}
1
+ {"version":3,"file":"ActionBarCopy.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarCopy.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAWnE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,QAAA,MAAM,yBAAyB,GAAI,sBAEhC;IAAE,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAO,wBA0B9C,CAAC;AAEF,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,OAAO,GAAG,iBAAiB,CAAC;IACxC;;;OAGG;IACH,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,yBAAyB,CAAC,CAAC;CACzE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB;;;qBAnDb,MAAM,GAAG,SAAS;qDAqEtC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/primitives/actionBar/ActionBarCopy.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { ActionButtonProps } from \"../../utils/createActionButton\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useMessageUtils } from \"../../context\";\nimport { useCallback } from \"react\";\nimport {\n useMessage,\n useMessageRuntime,\n} from \"../../context/react/MessageContext\";\nimport { useComposerRuntime } from \"../../context\";\n\nconst useActionBarPrimitiveCopy = ({\n copiedDuration = 3000,\n}: { copiedDuration?: number | undefined } = {}) => {\n const messageRuntime = useMessageRuntime();\n const composerRuntime = useComposerRuntime();\n const setIsCopied = useMessageUtils((s) => s.setIsCopied);\n const hasCopyableContent = useMessage((message) => {\n return (\n (message.role !== \"assistant\" || message.status.type !== \"running\") &&\n message.content.some((c) => c.type === \"text\" && c.text.length > 0)\n );\n });\n\n const callback = useCallback(() => {\n const { isEditing, text: composerValue } = composerRuntime.getState();\n\n const valueToCopy = isEditing\n ? composerValue\n : messageRuntime.unstable_getCopyText();\n\n navigator.clipboard.writeText(valueToCopy).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n }, [messageRuntime, setIsCopied, composerRuntime, copiedDuration]);\n\n if (!hasCopyableContent) return null;\n return callback;\n};\n\nexport namespace ActionBarPrimitiveCopy {\n export type Element = HTMLButtonElement;\n export type Props = ActionButtonProps<typeof useActionBarPrimitiveCopy>;\n}\n\nexport const ActionBarPrimitiveCopy = forwardRef<\n ActionBarPrimitiveCopy.Element,\n ActionBarPrimitiveCopy.Props\n>(({ copiedDuration, onClick, disabled, ...props }, forwardedRef) => {\n const isCopied = useMessageUtils((u) => u.isCopied);\n const callback = useActionBarPrimitiveCopy({ copiedDuration });\n return (\n <Primitive.button\n type=\"button\"\n {...(isCopied ? { \"data-copied\": \"true\" } : {})}\n {...props}\n ref={forwardedRef}\n disabled={disabled || !callback}\n onClick={composeEventHandlers(onClick, () => {\n callback?.();\n })}\n />\n );\n});\n\nActionBarPrimitiveCopy.displayName = \"ActionBarPrimitive.Copy\";\n"],"mappings":";;;AAEA,SAAS,kBAAkB;AAE3B,SAAS,4BAA4B;AACrC,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,0BAA0B;AA4C/B;AA1CJ,IAAM,4BAA4B,CAAC;AAAA,EACjC,iBAAiB;AACnB,IAA6C,CAAC,MAAM;AAClD,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,kBAAkB,mBAAmB;AAC3C,QAAM,cAAc,gBAAgB,CAAC,MAAM,EAAE,WAAW;AACxD,QAAM,qBAAqB,WAAW,CAAC,YAAY;AACjD,YACG,QAAQ,SAAS,eAAe,QAAQ,OAAO,SAAS,cACzD,QAAQ,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,KAAK,SAAS,CAAC;AAAA,EAEtE,CAAC;AAED,QAAM,WAAW,YAAY,MAAM;AACjC,UAAM,EAAE,WAAW,MAAM,cAAc,IAAI,gBAAgB,SAAS;AAEpE,UAAM,cAAc,YAChB,gBACA,eAAe,qBAAqB;AAExC,cAAU,UAAU,UAAU,WAAW,EAAE,KAAK,MAAM;AACpD,kBAAY,IAAI;AAChB,iBAAW,MAAM,YAAY,KAAK,GAAG,cAAc;AAAA,IACrD,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,aAAa,iBAAiB,cAAc,CAAC;AAEjE,MAAI,CAAC,mBAAoB,QAAO;AAChC,SAAO;AACT;AAOO,IAAM,yBAAyB,WAGpC,CAAC,EAAE,gBAAgB,SAAS,UAAU,GAAG,MAAM,GAAG,iBAAiB;AACnE,QAAM,WAAW,gBAAgB,CAAC,MAAM,EAAE,QAAQ;AAClD,QAAM,WAAW,0BAA0B,EAAE,eAAe,CAAC;AAC7D,SACE;AAAA,IAAC,UAAU;AAAA,IAAV;AAAA,MACC,MAAK;AAAA,MACJ,GAAI,WAAW,EAAE,eAAe,OAAO,IAAI,CAAC;AAAA,MAC5C,GAAG;AAAA,MACJ,KAAK;AAAA,MACL,UAAU,YAAY,CAAC;AAAA,MACvB,SAAS,qBAAqB,SAAS,MAAM;AAC3C,mBAAW;AAAA,MACb,CAAC;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,uBAAuB,cAAc;","names":[]}
1
+ {"version":3,"sources":["../../../src/primitives/actionBar/ActionBarCopy.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef } from \"react\";\nimport { ActionButtonProps } from \"../../utils/createActionButton\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { useMessageUtils } from \"../../context\";\nimport { useCallback } from \"react\";\nimport {\n useMessage,\n useMessageRuntime,\n} from \"../../context/react/MessageContext\";\nimport { useComposerRuntime } from \"../../context\";\n\n/**\n * Hook that provides copy functionality for action bar buttons.\n *\n * This hook returns a callback function that copies message content to the clipboard,\n * or null if copying is not available. It handles both regular message content and\n * composer text when in editing mode.\n *\n * @param options Configuration options\n * @param options.copiedDuration Duration in milliseconds to show the copied state\n * @returns A copy callback function, or null if copying is disabled\n *\n * @example\n * ```tsx\n * function CustomCopyButton() {\n * const copy = useActionBarPrimitiveCopy({ copiedDuration: 2000 });\n *\n * return (\n * <button onClick={copy} disabled={!copy}>\n * {copy ? \"Copy\" : \"Cannot Copy\"}\n * </button>\n * );\n * }\n * ```\n */\nconst useActionBarPrimitiveCopy = ({\n copiedDuration = 3000,\n}: { copiedDuration?: number | undefined } = {}) => {\n const messageRuntime = useMessageRuntime();\n const composerRuntime = useComposerRuntime();\n const setIsCopied = useMessageUtils((s) => s.setIsCopied);\n const hasCopyableContent = useMessage((message) => {\n return (\n (message.role !== \"assistant\" || message.status.type !== \"running\") &&\n message.content.some((c) => c.type === \"text\" && c.text.length > 0)\n );\n });\n\n const callback = useCallback(() => {\n const { isEditing, text: composerValue } = composerRuntime.getState();\n\n const valueToCopy = isEditing\n ? composerValue\n : messageRuntime.unstable_getCopyText();\n\n navigator.clipboard.writeText(valueToCopy).then(() => {\n setIsCopied(true);\n setTimeout(() => setIsCopied(false), copiedDuration);\n });\n }, [messageRuntime, setIsCopied, composerRuntime, copiedDuration]);\n\n if (!hasCopyableContent) return null;\n return callback;\n};\n\nexport namespace ActionBarPrimitiveCopy {\n export type Element = HTMLButtonElement;\n /**\n * Props for the ActionBarPrimitive.Copy component.\n * Inherits all button element props and action button functionality.\n */\n export type Props = ActionButtonProps<typeof useActionBarPrimitiveCopy>;\n}\n\n/**\n * A button component that copies message content to the clipboard.\n *\n * This component automatically handles copying message text to the clipboard\n * and provides visual feedback through the data-copied attribute. It's disabled\n * when there's no copyable content available.\n *\n * @example\n * ```tsx\n * <ActionBarPrimitive.Copy copiedDuration={2000}>\n * Copy Message\n * </ActionBarPrimitive.Copy>\n * ```\n */\nexport const ActionBarPrimitiveCopy = forwardRef<\n ActionBarPrimitiveCopy.Element,\n ActionBarPrimitiveCopy.Props\n>(({ copiedDuration, onClick, disabled, ...props }, forwardedRef) => {\n const isCopied = useMessageUtils((u) => u.isCopied);\n const callback = useActionBarPrimitiveCopy({ copiedDuration });\n return (\n <Primitive.button\n type=\"button\"\n {...(isCopied ? { \"data-copied\": \"true\" } : {})}\n {...props}\n ref={forwardedRef}\n disabled={disabled || !callback}\n onClick={composeEventHandlers(onClick, () => {\n callback?.();\n })}\n />\n );\n});\n\nActionBarPrimitiveCopy.displayName = \"ActionBarPrimitive.Copy\";\n"],"mappings":";;;AAEA,SAAS,kBAAkB;AAE3B,SAAS,4BAA4B;AACrC,SAAS,iBAAiB;AAC1B,SAAS,uBAAuB;AAChC,SAAS,mBAAmB;AAC5B;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP,SAAS,0BAA0B;AAsF/B;AA5DJ,IAAM,4BAA4B,CAAC;AAAA,EACjC,iBAAiB;AACnB,IAA6C,CAAC,MAAM;AAClD,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,kBAAkB,mBAAmB;AAC3C,QAAM,cAAc,gBAAgB,CAAC,MAAM,EAAE,WAAW;AACxD,QAAM,qBAAqB,WAAW,CAAC,YAAY;AACjD,YACG,QAAQ,SAAS,eAAe,QAAQ,OAAO,SAAS,cACzD,QAAQ,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,UAAU,EAAE,KAAK,SAAS,CAAC;AAAA,EAEtE,CAAC;AAED,QAAM,WAAW,YAAY,MAAM;AACjC,UAAM,EAAE,WAAW,MAAM,cAAc,IAAI,gBAAgB,SAAS;AAEpE,UAAM,cAAc,YAChB,gBACA,eAAe,qBAAqB;AAExC,cAAU,UAAU,UAAU,WAAW,EAAE,KAAK,MAAM;AACpD,kBAAY,IAAI;AAChB,iBAAW,MAAM,YAAY,KAAK,GAAG,cAAc;AAAA,IACrD,CAAC;AAAA,EACH,GAAG,CAAC,gBAAgB,aAAa,iBAAiB,cAAc,CAAC;AAEjE,MAAI,CAAC,mBAAoB,QAAO;AAChC,SAAO;AACT;AAyBO,IAAM,yBAAyB,WAGpC,CAAC,EAAE,gBAAgB,SAAS,UAAU,GAAG,MAAM,GAAG,iBAAiB;AACnE,QAAM,WAAW,gBAAgB,CAAC,MAAM,EAAE,QAAQ;AAClD,QAAM,WAAW,0BAA0B,EAAE,eAAe,CAAC;AAC7D,SACE;AAAA,IAAC,UAAU;AAAA,IAAV;AAAA,MACC,MAAK;AAAA,MACJ,GAAI,WAAW,EAAE,eAAe,OAAO,IAAI,CAAC;AAAA,MAC5C,GAAG;AAAA,MACJ,KAAK;AAAA,MACL,UAAU,YAAY,CAAC;AAAA,MACvB,SAAS,qBAAqB,SAAS,MAAM;AAC3C,mBAAW;AAAA,MACb,CAAC;AAAA;AAAA,EACH;AAEJ,CAAC;AAED,uBAAuB,cAAc;","names":[]}
@@ -1,9 +1,47 @@
1
1
  import { ActionButtonElement, ActionButtonProps } from "../../utils/createActionButton";
2
+ /**
3
+ * Hook that provides edit functionality for action bar buttons.
4
+ *
5
+ * This hook returns a callback function that starts editing the current message,
6
+ * or null if editing is not available (e.g., already in editing mode).
7
+ *
8
+ * @returns An edit callback function, or null if editing is disabled
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * function CustomEditButton() {
13
+ * const edit = useActionBarEdit();
14
+ *
15
+ * return (
16
+ * <button onClick={edit} disabled={!edit}>
17
+ * {edit ? "Edit Message" : "Cannot Edit"}
18
+ * </button>
19
+ * );
20
+ * }
21
+ * ```
22
+ */
2
23
  declare const useActionBarEdit: () => (() => void) | null;
3
24
  export declare namespace ActionBarPrimitiveEdit {
4
25
  type Element = ActionButtonElement;
26
+ /**
27
+ * Props for the ActionBarPrimitive.Edit component.
28
+ * Inherits all button element props and action button functionality.
29
+ */
5
30
  type Props = ActionButtonProps<typeof useActionBarEdit>;
6
31
  }
32
+ /**
33
+ * A button component that starts editing the current message.
34
+ *
35
+ * This component automatically handles starting the edit mode for the current message
36
+ * and is disabled when editing is not available (e.g., already in editing mode).
37
+ *
38
+ * @example
39
+ * ```tsx
40
+ * <ActionBarPrimitive.Edit>
41
+ * Edit Message
42
+ * </ActionBarPrimitive.Edit>
43
+ * ```
44
+ */
7
45
  export declare const ActionBarPrimitiveEdit: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
8
46
  asChild?: boolean;
9
47
  }, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBarEdit.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarEdit.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;AAIxC,QAAA,MAAM,gBAAgB,2BAUrB,CAAC;AAEF,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,OAAO,GAAG,mBAAmB,CAAC;IAC1C,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,gBAAgB,CAAC,CAAC;CAChE;AAED,eAAO,MAAM,sBAAsB;;6DAGlC,CAAC"}
1
+ {"version":3,"file":"ActionBarEdit.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarEdit.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;AAIxC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,gBAAgB,2BAUrB,CAAC;AAEF,yBAAiB,sBAAsB,CAAC;IACtC,KAAY,OAAO,GAAG,mBAAmB,CAAC;IAC1C;;;OAGG;IACH,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,gBAAgB,CAAC,CAAC;CAChE;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,sBAAsB;;6DAGlC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/primitives/actionBar/ActionBarEdit.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ActionButtonElement,\n ActionButtonProps,\n createActionButton,\n} from \"../../utils/createActionButton\";\nimport { useCallback } from \"react\";\nimport { useEditComposer, useMessageRuntime } from \"../../context\";\n\nconst useActionBarEdit = () => {\n const messageRuntime = useMessageRuntime();\n const disabled = useEditComposer((c) => c.isEditing);\n\n const callback = useCallback(() => {\n messageRuntime.composer.beginEdit();\n }, [messageRuntime]);\n\n if (disabled) return null;\n return callback;\n};\n\nexport namespace ActionBarPrimitiveEdit {\n export type Element = ActionButtonElement;\n export type Props = ActionButtonProps<typeof useActionBarEdit>;\n}\n\nexport const ActionBarPrimitiveEdit = createActionButton(\n \"ActionBarPrimitive.Edit\",\n useActionBarEdit,\n);\n"],"mappings":";;;AAEA;AAAA,EAGE;AAAA,OACK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,yBAAyB;AAEnD,IAAM,mBAAmB,MAAM;AAC7B,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,WAAW,gBAAgB,CAAC,MAAM,EAAE,SAAS;AAEnD,QAAM,WAAW,YAAY,MAAM;AACjC,mBAAe,SAAS,UAAU;AAAA,EACpC,GAAG,CAAC,cAAc,CAAC;AAEnB,MAAI,SAAU,QAAO;AACrB,SAAO;AACT;AAOO,IAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/primitives/actionBar/ActionBarEdit.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ActionButtonElement,\n ActionButtonProps,\n createActionButton,\n} from \"../../utils/createActionButton\";\nimport { useCallback } from \"react\";\nimport { useEditComposer, useMessageRuntime } from \"../../context\";\n\n/**\n * Hook that provides edit functionality for action bar buttons.\n *\n * This hook returns a callback function that starts editing the current message,\n * or null if editing is not available (e.g., already in editing mode).\n *\n * @returns An edit callback function, or null if editing is disabled\n *\n * @example\n * ```tsx\n * function CustomEditButton() {\n * const edit = useActionBarEdit();\n *\n * return (\n * <button onClick={edit} disabled={!edit}>\n * {edit ? \"Edit Message\" : \"Cannot Edit\"}\n * </button>\n * );\n * }\n * ```\n */\nconst useActionBarEdit = () => {\n const messageRuntime = useMessageRuntime();\n const disabled = useEditComposer((c) => c.isEditing);\n\n const callback = useCallback(() => {\n messageRuntime.composer.beginEdit();\n }, [messageRuntime]);\n\n if (disabled) return null;\n return callback;\n};\n\nexport namespace ActionBarPrimitiveEdit {\n export type Element = ActionButtonElement;\n /**\n * Props for the ActionBarPrimitive.Edit component.\n * Inherits all button element props and action button functionality.\n */\n export type Props = ActionButtonProps<typeof useActionBarEdit>;\n}\n\n/**\n * A button component that starts editing the current message.\n *\n * This component automatically handles starting the edit mode for the current message\n * and is disabled when editing is not available (e.g., already in editing mode).\n *\n * @example\n * ```tsx\n * <ActionBarPrimitive.Edit>\n * Edit Message\n * </ActionBarPrimitive.Edit>\n * ```\n */\nexport const ActionBarPrimitiveEdit = createActionButton(\n \"ActionBarPrimitive.Edit\",\n useActionBarEdit,\n);\n"],"mappings":";;;AAEA;AAAA,EAGE;AAAA,OACK;AACP,SAAS,mBAAmB;AAC5B,SAAS,iBAAiB,yBAAyB;AAuBnD,IAAM,mBAAmB,MAAM;AAC7B,QAAM,iBAAiB,kBAAkB;AACzC,QAAM,WAAW,gBAAgB,CAAC,MAAM,EAAE,SAAS;AAEnD,QAAM,WAAW,YAAY,MAAM;AACjC,mBAAe,SAAS,UAAU;AAAA,EACpC,GAAG,CAAC,cAAc,CAAC;AAEnB,MAAI,SAAU,QAAO;AACrB,SAAO;AACT;AAwBO,IAAM,yBAAyB;AAAA,EACpC;AAAA,EACA;AACF;","names":[]}
@@ -1,9 +1,48 @@
1
1
  import { ActionButtonElement, ActionButtonProps } from "../../utils/createActionButton";
2
+ /**
3
+ * Hook that provides reload functionality for action bar buttons.
4
+ *
5
+ * This hook returns a callback function that reloads/regenerates the current assistant message,
6
+ * or null if reloading is not available (e.g., thread is running, disabled, or message is not from assistant).
7
+ *
8
+ * @returns A reload callback function, or null if reloading is disabled
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * function CustomReloadButton() {
13
+ * const reload = useActionBarReload();
14
+ *
15
+ * return (
16
+ * <button onClick={reload} disabled={!reload}>
17
+ * {reload ? "Reload Message" : "Cannot Reload"}
18
+ * </button>
19
+ * );
20
+ * }
21
+ * ```
22
+ */
2
23
  declare const useActionBarReload: () => (() => void) | null;
3
24
  export declare namespace ActionBarPrimitiveReload {
4
25
  type Element = ActionButtonElement;
26
+ /**
27
+ * Props for the ActionBarPrimitive.Reload component.
28
+ * Inherits all button element props and action button functionality.
29
+ */
5
30
  type Props = ActionButtonProps<typeof useActionBarReload>;
6
31
  }
32
+ /**
33
+ * A button component that reloads/regenerates the current assistant message.
34
+ *
35
+ * This component automatically handles reloading the current assistant message
36
+ * and is disabled when reloading is not available (e.g., thread is running,
37
+ * disabled, or message is not from assistant).
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * <ActionBarPrimitive.Reload>
42
+ * Reload Message
43
+ * </ActionBarPrimitive.Reload>
44
+ * ```
45
+ */
7
46
  export declare const ActionBarPrimitiveReload: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLButtonElement> & import("react").ButtonHTMLAttributes<HTMLButtonElement> & {
8
47
  asChild?: boolean;
9
48
  }, "ref"> & import("react").RefAttributes<HTMLButtonElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionBarReload.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarReload.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;AAMxC,QAAA,MAAM,kBAAkB,2BAevB,CAAC;AAEF,yBAAiB,wBAAwB,CAAC;IACxC,KAAY,OAAO,GAAG,mBAAmB,CAAC;IAC1C,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,kBAAkB,CAAC,CAAC;CAClE;AAED,eAAO,MAAM,wBAAwB;;6DAGpC,CAAC"}
1
+ {"version":3,"file":"ActionBarReload.d.ts","sourceRoot":"","sources":["../../../src/primitives/actionBar/ActionBarReload.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;AAMxC;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,QAAA,MAAM,kBAAkB,2BAevB,CAAC;AAEF,yBAAiB,wBAAwB,CAAC;IACxC,KAAY,OAAO,GAAG,mBAAmB,CAAC;IAC1C;;;OAGG;IACH,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,kBAAkB,CAAC,CAAC;CAClE;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB;;6DAGpC,CAAC"}