@assistant-ui/react 0.8.5 → 0.8.7

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 (289) hide show
  1. package/dist/api/MessageRuntime.js +1 -1
  2. package/dist/api/MessageRuntime.js.map +1 -1
  3. package/dist/api/MessageRuntime.mjs +1 -1
  4. package/dist/api/MessageRuntime.mjs.map +1 -1
  5. package/dist/api/subscribable/NestedSubscriptionSubject.d.ts.map +1 -1
  6. package/dist/api/subscribable/NestedSubscriptionSubject.js.map +1 -1
  7. package/dist/api/subscribable/NestedSubscriptionSubject.mjs.map +1 -1
  8. package/dist/cloud/auiV0.d.ts.map +1 -1
  9. package/dist/cloud/auiV0.js +9 -2
  10. package/dist/cloud/auiV0.js.map +1 -1
  11. package/dist/cloud/auiV0.mjs +9 -2
  12. package/dist/cloud/auiV0.mjs.map +1 -1
  13. package/dist/context/react/utils/createStateHookForRuntime.d.ts.map +1 -1
  14. package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
  15. package/dist/context/react/utils/createStateHookForRuntime.mjs.map +1 -1
  16. package/dist/context/react/utils/ensureBinding.js.map +1 -1
  17. package/dist/context/react/utils/ensureBinding.mjs.map +1 -1
  18. package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
  19. package/dist/model-context/makeAssistantVisible.js +2 -1
  20. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  21. package/dist/model-context/makeAssistantVisible.mjs +2 -1
  22. package/dist/model-context/makeAssistantVisible.mjs.map +1 -1
  23. package/dist/model-context/useAssistantInstructions.js +1 -1
  24. package/dist/model-context/useAssistantInstructions.js.map +1 -1
  25. package/dist/model-context/useAssistantInstructions.mjs +1 -1
  26. package/dist/model-context/useAssistantInstructions.mjs.map +1 -1
  27. package/dist/model-context/useAssistantToolUI.js +1 -1
  28. package/dist/model-context/useAssistantToolUI.js.map +1 -1
  29. package/dist/model-context/useAssistantToolUI.mjs +1 -1
  30. package/dist/model-context/useAssistantToolUI.mjs.map +1 -1
  31. package/dist/model-context/useInlineRender.d.ts.map +1 -1
  32. package/dist/model-context/useInlineRender.js +8 -5
  33. package/dist/model-context/useInlineRender.js.map +1 -1
  34. package/dist/model-context/useInlineRender.mjs +8 -5
  35. package/dist/model-context/useInlineRender.mjs.map +1 -1
  36. package/dist/primitives/assistantModal/AssistantModalRoot.d.ts.map +1 -1
  37. package/dist/primitives/assistantModal/AssistantModalRoot.js +6 -1
  38. package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
  39. package/dist/primitives/assistantModal/AssistantModalRoot.mjs +6 -1
  40. package/dist/primitives/assistantModal/AssistantModalRoot.mjs.map +1 -1
  41. package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
  42. package/dist/primitives/composer/ComposerInput.js +7 -2
  43. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  44. package/dist/primitives/composer/ComposerInput.mjs +7 -2
  45. package/dist/primitives/composer/ComposerInput.mjs.map +1 -1
  46. package/dist/primitives/contentPart/useContentPartFile.d.ts +5 -0
  47. package/dist/primitives/contentPart/useContentPartFile.d.ts.map +1 -0
  48. package/dist/{runtimes/edge/streams/utils/index.js → primitives/contentPart/useContentPartFile.js} +18 -12
  49. package/dist/primitives/contentPart/useContentPartFile.js.map +1 -0
  50. package/dist/primitives/contentPart/useContentPartFile.mjs +18 -0
  51. package/dist/primitives/contentPart/useContentPartFile.mjs.map +1 -0
  52. package/dist/primitives/contentPart/useContentPartSource.d.ts +5 -0
  53. package/dist/primitives/contentPart/useContentPartSource.d.ts.map +1 -0
  54. package/dist/{runtimes/edge/streams/utils/PipeableTransformStream.js → primitives/contentPart/useContentPartSource.js} +18 -16
  55. package/dist/primitives/contentPart/useContentPartSource.js.map +1 -0
  56. package/dist/primitives/contentPart/useContentPartSource.mjs +18 -0
  57. package/dist/primitives/contentPart/useContentPartSource.mjs.map +1 -0
  58. package/dist/primitives/index.d.ts +3 -1
  59. package/dist/primitives/index.d.ts.map +1 -1
  60. package/dist/primitives/index.js +7 -1
  61. package/dist/primitives/index.js.map +1 -1
  62. package/dist/primitives/index.mjs +5 -1
  63. package/dist/primitives/index.mjs.map +1 -1
  64. package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -1
  65. package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
  66. package/dist/primitives/thread/ThreadScrollToBottom.mjs +4 -1
  67. package/dist/primitives/thread/ThreadScrollToBottom.mjs.map +1 -1
  68. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
  69. package/dist/primitives/thread/ThreadViewport.js +1 -0
  70. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  71. package/dist/primitives/thread/ThreadViewport.mjs +1 -0
  72. package/dist/primitives/thread/ThreadViewport.mjs.map +1 -1
  73. package/dist/primitives/thread/useThreadViewportAutoScroll.js +1 -1
  74. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  75. package/dist/primitives/thread/useThreadViewportAutoScroll.mjs +1 -1
  76. package/dist/primitives/thread/useThreadViewportAutoScroll.mjs.map +1 -1
  77. package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.d.ts +5 -1
  78. package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.d.ts.map +1 -1
  79. package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.js.map +1 -1
  80. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
  81. package/dist/runtimes/composer/BaseComposerRuntimeCore.js +3 -1
  82. package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
  83. package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs +3 -1
  84. package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs.map +1 -1
  85. package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.d.ts +1 -1
  86. package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.d.ts.map +1 -1
  87. package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.js +2 -2
  88. package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.js.map +1 -1
  89. package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.mjs +2 -2
  90. package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.mjs.map +1 -1
  91. package/dist/runtimes/edge/EdgeChatAdapter.d.ts +8 -3
  92. package/dist/runtimes/edge/EdgeChatAdapter.d.ts.map +1 -1
  93. package/dist/runtimes/edge/EdgeChatAdapter.js +8 -9
  94. package/dist/runtimes/edge/EdgeChatAdapter.js.map +1 -1
  95. package/dist/runtimes/edge/EdgeChatAdapter.mjs +11 -9
  96. package/dist/runtimes/edge/EdgeChatAdapter.mjs.map +1 -1
  97. package/dist/runtimes/edge/converters/fromLanguageModelMessages.d.ts +2 -2
  98. package/dist/runtimes/edge/converters/fromLanguageModelMessages.d.ts.map +1 -1
  99. package/dist/runtimes/edge/converters/fromLanguageModelMessages.js +5 -2
  100. package/dist/runtimes/edge/converters/fromLanguageModelMessages.js.map +1 -1
  101. package/dist/runtimes/edge/converters/fromLanguageModelMessages.mjs +5 -2
  102. package/dist/runtimes/edge/converters/fromLanguageModelMessages.mjs.map +1 -1
  103. package/dist/runtimes/edge/converters/toCoreMessages.d.ts.map +1 -1
  104. package/dist/runtimes/edge/converters/toCoreMessages.js +1 -1
  105. package/dist/runtimes/edge/converters/toCoreMessages.js.map +1 -1
  106. package/dist/runtimes/edge/converters/toCoreMessages.mjs +1 -1
  107. package/dist/runtimes/edge/converters/toCoreMessages.mjs.map +1 -1
  108. package/dist/runtimes/edge/converters/toLanguageModelMessages.d.ts.map +1 -1
  109. package/dist/runtimes/edge/converters/toLanguageModelMessages.js +2 -1
  110. package/dist/runtimes/edge/converters/toLanguageModelMessages.js.map +1 -1
  111. package/dist/runtimes/edge/converters/toLanguageModelMessages.mjs +2 -1
  112. package/dist/runtimes/edge/converters/toLanguageModelMessages.mjs.map +1 -1
  113. package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts +2 -2
  114. package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts.map +1 -1
  115. package/dist/runtimes/edge/createEdgeRuntimeAPI.js +17 -34
  116. package/dist/runtimes/edge/createEdgeRuntimeAPI.js.map +1 -1
  117. package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs +21 -37
  118. package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs.map +1 -1
  119. package/dist/runtimes/edge/index.d.ts +0 -1
  120. package/dist/runtimes/edge/index.d.ts.map +1 -1
  121. package/dist/runtimes/edge/index.js +1 -3
  122. package/dist/runtimes/edge/index.js.map +1 -1
  123. package/dist/runtimes/edge/index.mjs +0 -1
  124. package/dist/runtimes/edge/index.mjs.map +1 -1
  125. package/dist/runtimes/edge/streams/toolResultStream.d.ts +2 -33
  126. package/dist/runtimes/edge/streams/toolResultStream.d.ts.map +1 -1
  127. package/dist/runtimes/edge/streams/toolResultStream.js +19 -96
  128. package/dist/runtimes/edge/streams/toolResultStream.js.map +1 -1
  129. package/dist/runtimes/edge/streams/toolResultStream.mjs +19 -86
  130. package/dist/runtimes/edge/streams/toolResultStream.mjs.map +1 -1
  131. package/dist/runtimes/external-store/ThreadMessageLike.d.ts.map +1 -1
  132. package/dist/runtimes/external-store/ThreadMessageLike.js +1 -0
  133. package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
  134. package/dist/runtimes/external-store/ThreadMessageLike.mjs +1 -0
  135. package/dist/runtimes/external-store/ThreadMessageLike.mjs.map +1 -1
  136. package/dist/runtimes/external-store/external-message-converter.js +1 -1
  137. package/dist/runtimes/external-store/external-message-converter.js.map +1 -1
  138. package/dist/runtimes/external-store/external-message-converter.mjs +1 -1
  139. package/dist/runtimes/external-store/external-message-converter.mjs.map +1 -1
  140. package/dist/runtimes/local/ChatModelAdapter.d.ts +2 -2
  141. package/dist/runtimes/local/ChatModelAdapter.d.ts.map +1 -1
  142. package/dist/runtimes/local/ChatModelAdapter.js.map +1 -1
  143. package/dist/runtimes/local/LocalRuntimeOptions.d.ts +1 -1
  144. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts +3 -2
  145. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
  146. package/dist/runtimes/local/LocalThreadRuntimeCore.js +22 -7
  147. package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
  148. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +22 -7
  149. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
  150. package/dist/runtimes/local/useLocalRuntime.d.ts.map +1 -1
  151. package/dist/runtimes/local/useLocalRuntime.js +3 -1
  152. package/dist/runtimes/local/useLocalRuntime.js.map +1 -1
  153. package/dist/runtimes/local/useLocalRuntime.mjs +3 -1
  154. package/dist/runtimes/local/useLocalRuntime.mjs.map +1 -1
  155. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js +1 -1
  156. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -1
  157. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs +1 -1
  158. package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs.map +1 -1
  159. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  160. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +2 -2
  161. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  162. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs +2 -2
  163. package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs.map +1 -1
  164. package/dist/runtimes/remote-thread-list/adapter/cloud.js +1 -1
  165. package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -1
  166. package/dist/runtimes/remote-thread-list/adapter/cloud.mjs +1 -1
  167. package/dist/runtimes/remote-thread-list/adapter/cloud.mjs.map +1 -1
  168. package/dist/runtimes/utils/MessageRepository.d.ts +1 -0
  169. package/dist/runtimes/utils/MessageRepository.d.ts.map +1 -1
  170. package/dist/runtimes/utils/MessageRepository.js +3 -0
  171. package/dist/runtimes/utils/MessageRepository.js.map +1 -1
  172. package/dist/runtimes/utils/MessageRepository.mjs +3 -0
  173. package/dist/runtimes/utils/MessageRepository.mjs.map +1 -1
  174. package/dist/types/AssistantTypes.d.ts +1 -1
  175. package/dist/types/AssistantTypes.d.ts.map +1 -1
  176. package/dist/types/AssistantTypes.js.map +1 -1
  177. package/dist/utils/json/is-json.d.ts +1 -1
  178. package/dist/utils/json/is-json.d.ts.map +1 -1
  179. package/dist/utils/json/is-json.js +10 -4
  180. package/dist/utils/json/is-json.js.map +1 -1
  181. package/dist/utils/json/is-json.mjs +10 -4
  182. package/dist/utils/json/is-json.mjs.map +1 -1
  183. package/package.json +3 -3
  184. package/src/api/MessageRuntime.ts +1 -1
  185. package/src/api/subscribable/NestedSubscriptionSubject.ts +7 -2
  186. package/src/cloud/auiV0.ts +9 -2
  187. package/src/context/react/utils/createStateHookForRuntime.ts +3 -0
  188. package/src/context/react/utils/ensureBinding.ts +1 -1
  189. package/src/model-context/makeAssistantVisible.tsx +3 -1
  190. package/src/model-context/useAssistantInstructions.tsx +1 -1
  191. package/src/model-context/useAssistantToolUI.tsx +1 -1
  192. package/src/model-context/useInlineRender.tsx +8 -5
  193. package/src/primitives/assistantModal/AssistantModalRoot.tsx +6 -1
  194. package/src/primitives/composer/ComposerInput.tsx +7 -2
  195. package/src/primitives/contentPart/useContentPartFile.tsx +18 -0
  196. package/src/primitives/contentPart/useContentPartSource.tsx +18 -0
  197. package/src/primitives/index.ts +3 -1
  198. package/src/primitives/thread/ThreadScrollToBottom.tsx +4 -1
  199. package/src/primitives/thread/ThreadViewport.tsx +3 -0
  200. package/src/primitives/thread/useThreadViewportAutoScroll.tsx +1 -1
  201. package/src/runtimes/adapters/thread-history/ThreadHistoryAdapter.ts +5 -1
  202. package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +3 -1
  203. package/src/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.ts +2 -2
  204. package/src/runtimes/edge/EdgeChatAdapter.ts +26 -15
  205. package/src/runtimes/edge/converters/fromLanguageModelMessages.ts +24 -14
  206. package/src/runtimes/edge/converters/toCoreMessages.ts +6 -2
  207. package/src/runtimes/edge/converters/toLanguageModelMessages.ts +3 -2
  208. package/src/runtimes/edge/createEdgeRuntimeAPI.ts +31 -48
  209. package/src/runtimes/edge/index.ts +0 -2
  210. package/src/runtimes/edge/streams/toolResultStream.ts +28 -152
  211. package/src/runtimes/external-store/ThreadMessageLike.tsx +2 -1
  212. package/src/runtimes/external-store/external-message-converter.tsx +1 -1
  213. package/src/runtimes/local/ChatModelAdapter.tsx +2 -0
  214. package/src/runtimes/local/LocalThreadRuntimeCore.tsx +31 -7
  215. package/src/runtimes/local/useLocalRuntime.tsx +3 -1
  216. package/src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +1 -1
  217. package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +2 -3
  218. package/src/runtimes/remote-thread-list/adapter/cloud.tsx +1 -1
  219. package/src/runtimes/utils/MessageRepository.tsx +4 -0
  220. package/src/types/AssistantTypes.ts +2 -1
  221. package/src/utils/json/is-json.ts +17 -4
  222. package/dist/runtimes/edge/streams/AssistantStreamChunkType.d.ts +0 -62
  223. package/dist/runtimes/edge/streams/AssistantStreamChunkType.d.ts.map +0 -1
  224. package/dist/runtimes/edge/streams/AssistantStreamChunkType.js +0 -46
  225. package/dist/runtimes/edge/streams/AssistantStreamChunkType.js.map +0 -1
  226. package/dist/runtimes/edge/streams/AssistantStreamChunkType.mjs +0 -21
  227. package/dist/runtimes/edge/streams/AssistantStreamChunkType.mjs.map +0 -1
  228. package/dist/runtimes/edge/streams/assistantDecoderStream.d.ts +0 -5
  229. package/dist/runtimes/edge/streams/assistantDecoderStream.d.ts.map +0 -1
  230. package/dist/runtimes/edge/streams/assistantDecoderStream.js +0 -170
  231. package/dist/runtimes/edge/streams/assistantDecoderStream.js.map +0 -1
  232. package/dist/runtimes/edge/streams/assistantDecoderStream.mjs +0 -147
  233. package/dist/runtimes/edge/streams/assistantDecoderStream.mjs.map +0 -1
  234. package/dist/runtimes/edge/streams/assistantEncoderStream.d.ts +0 -5
  235. package/dist/runtimes/edge/streams/assistantEncoderStream.d.ts.map +0 -1
  236. package/dist/runtimes/edge/streams/assistantEncoderStream.js +0 -137
  237. package/dist/runtimes/edge/streams/assistantEncoderStream.js.map +0 -1
  238. package/dist/runtimes/edge/streams/assistantEncoderStream.mjs +0 -114
  239. package/dist/runtimes/edge/streams/assistantEncoderStream.mjs.map +0 -1
  240. package/dist/runtimes/edge/streams/runResultStream.d.ts +0 -4
  241. package/dist/runtimes/edge/streams/runResultStream.d.ts.map +0 -1
  242. package/dist/runtimes/edge/streams/runResultStream.js +0 -313
  243. package/dist/runtimes/edge/streams/runResultStream.js.map +0 -1
  244. package/dist/runtimes/edge/streams/runResultStream.mjs +0 -288
  245. package/dist/runtimes/edge/streams/runResultStream.mjs.map +0 -1
  246. package/dist/runtimes/edge/streams/utils/PipeableTransformStream.d.ts +0 -4
  247. package/dist/runtimes/edge/streams/utils/PipeableTransformStream.d.ts.map +0 -1
  248. package/dist/runtimes/edge/streams/utils/PipeableTransformStream.js.map +0 -1
  249. package/dist/runtimes/edge/streams/utils/PipeableTransformStream.mjs +0 -15
  250. package/dist/runtimes/edge/streams/utils/PipeableTransformStream.mjs.map +0 -1
  251. package/dist/runtimes/edge/streams/utils/StreamPart.d.ts +0 -7
  252. package/dist/runtimes/edge/streams/utils/StreamPart.d.ts.map +0 -1
  253. package/dist/runtimes/edge/streams/utils/StreamPart.js +0 -19
  254. package/dist/runtimes/edge/streams/utils/StreamPart.js.map +0 -1
  255. package/dist/runtimes/edge/streams/utils/StreamPart.mjs +0 -1
  256. package/dist/runtimes/edge/streams/utils/StreamPart.mjs.map +0 -1
  257. package/dist/runtimes/edge/streams/utils/chunkByLineStream.d.ts +0 -2
  258. package/dist/runtimes/edge/streams/utils/chunkByLineStream.d.ts.map +0 -1
  259. package/dist/runtimes/edge/streams/utils/chunkByLineStream.js +0 -48
  260. package/dist/runtimes/edge/streams/utils/chunkByLineStream.js.map +0 -1
  261. package/dist/runtimes/edge/streams/utils/chunkByLineStream.mjs +0 -23
  262. package/dist/runtimes/edge/streams/utils/chunkByLineStream.mjs.map +0 -1
  263. package/dist/runtimes/edge/streams/utils/index.d.ts +0 -14
  264. package/dist/runtimes/edge/streams/utils/index.d.ts.map +0 -1
  265. package/dist/runtimes/edge/streams/utils/index.js.map +0 -1
  266. package/dist/runtimes/edge/streams/utils/index.mjs +0 -11
  267. package/dist/runtimes/edge/streams/utils/index.mjs.map +0 -1
  268. package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.d.ts +0 -4
  269. package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.d.ts.map +0 -1
  270. package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.js +0 -50
  271. package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.js.map +0 -1
  272. package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.mjs +0 -25
  273. package/dist/runtimes/edge/streams/utils/streamPartDecoderStream.mjs.map +0 -1
  274. package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.d.ts +0 -3
  275. package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.d.ts.map +0 -1
  276. package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.js +0 -48
  277. package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.js.map +0 -1
  278. package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.mjs +0 -23
  279. package/dist/runtimes/edge/streams/utils/streamPartEncoderStream.mjs.map +0 -1
  280. package/src/runtimes/edge/streams/AssistantStreamChunkType.ts +0 -73
  281. package/src/runtimes/edge/streams/assistantDecoderStream.ts +0 -170
  282. package/src/runtimes/edge/streams/assistantEncoderStream.ts +0 -126
  283. package/src/runtimes/edge/streams/runResultStream.ts +0 -360
  284. package/src/runtimes/edge/streams/utils/PipeableTransformStream.ts +0 -10
  285. package/src/runtimes/edge/streams/utils/StreamPart.ts +0 -3
  286. package/src/runtimes/edge/streams/utils/chunkByLineStream.ts +0 -24
  287. package/src/runtimes/edge/streams/utils/index.ts +0 -15
  288. package/src/runtimes/edge/streams/utils/streamPartDecoderStream.ts +0 -29
  289. package/src/runtimes/edge/streams/utils/streamPartEncoderStream.ts +0 -23
@@ -1,9 +1,13 @@
1
+ import { ChatModelRunOptions, ChatModelRunResult } from "../../local";
1
2
  import {
2
3
  ExportedMessageRepository,
3
4
  ExportedMessageRepositoryItem,
4
5
  } from "../../utils/MessageRepository";
5
6
 
6
7
  export type ThreadHistoryAdapter = {
7
- load(): Promise<ExportedMessageRepository>;
8
+ load(): Promise<ExportedMessageRepository & { unstable_resume?: boolean }>;
9
+ resume?(
10
+ options: ChatModelRunOptions,
11
+ ): AsyncGenerator<ChatModelRunResult, void, unknown>;
8
12
  append(item: ExportedMessageRepositoryItem): Promise<void>;
9
13
  };
@@ -159,7 +159,9 @@ export abstract class BaseComposerRuntimeCore
159
159
  if (!adapter) throw new Error("Attachments are not supported");
160
160
 
161
161
  const upsertAttachment = (a: PendingAttachment) => {
162
- const idx = this._attachments.findIndex((attachment) => attachment.id === a.id);
162
+ const idx = this._attachments.findIndex(
163
+ (attachment) => attachment.id === a.id,
164
+ );
163
165
  if (idx !== -1)
164
166
  this._attachments = [
165
167
  ...this._attachments.slice(0, idx),
@@ -5,13 +5,13 @@ import {
5
5
  import { toCoreMessages } from "../edge/converters/toCoreMessages";
6
6
  import { toLanguageModelTools } from "../edge/converters/toLanguageModelTools";
7
7
  import { EdgeRuntimeRequestOptions } from "../edge/EdgeRuntimeRequestOptions";
8
- import { runResultStream } from "../edge/streams/runResultStream";
9
8
  import { toolResultStream } from "../edge/streams/toolResultStream";
10
9
  import { asAsyncIterable } from "../edge/EdgeChatAdapter";
11
10
  import {
12
11
  CreateEdgeRuntimeAPIOptions,
13
12
  getEdgeRuntimeStream,
14
13
  } from "../edge/createEdgeRuntimeAPI";
14
+ import { AssistantMessageAccumulator } from "assistant-stream";
15
15
 
16
16
  export type DangerousInBrowserAdapterOptions = CreateEdgeRuntimeAPIOptions;
17
17
 
@@ -33,7 +33,7 @@ export class DangerousInBrowserAdapter implements ChatModelAdapter {
33
33
 
34
34
  const stream = res
35
35
  .pipeThrough(toolResultStream(context.tools, abortSignal))
36
- .pipeThrough(runResultStream());
36
+ .pipeThrough(new AssistantMessageAccumulator());
37
37
 
38
38
  for await (const update of asAsyncIterable(stream)) {
39
39
  yield update;
@@ -2,13 +2,9 @@ import {
2
2
  ChatModelAdapter,
3
3
  ChatModelRunOptions,
4
4
  } from "../local/ChatModelAdapter";
5
- import { ChatModelRunResult } from "../local/ChatModelAdapter";
6
5
  import { toCoreMessages } from "./converters/toCoreMessages";
7
6
  import { toLanguageModelTools } from "./converters/toLanguageModelTools";
8
7
  import { EdgeRuntimeRequestOptions } from "./EdgeRuntimeRequestOptions";
9
- import { assistantDecoderStream } from "./streams/assistantDecoderStream";
10
- import { streamPartDecoderStream } from "./streams/utils/streamPartDecoderStream";
11
- import { runResultStream } from "./streams/runResultStream";
12
8
  import { toolResultStream } from "./streams/toolResultStream";
13
9
  import { toLanguageModelMessages } from "./converters";
14
10
  import { ThreadMessage } from "../../types";
@@ -16,6 +12,10 @@ import { Tool } from "../../model-context";
16
12
  import { z } from "zod";
17
13
  import zodToJsonSchema from "zod-to-json-schema";
18
14
  import { JSONSchema7 } from "json-schema";
15
+ import {
16
+ AssistantMessageAccumulator,
17
+ DataStreamDecoder,
18
+ } from "assistant-stream";
19
19
 
20
20
  export function asAsyncIterable<T>(
21
21
  source: ReadableStream<T>,
@@ -35,6 +35,8 @@ export function asAsyncIterable<T>(
35
35
  };
36
36
  }
37
37
 
38
+ type HeadersValue = Record<string, string> | Headers;
39
+
38
40
  export type EdgeChatAdapterOptions = {
39
41
  api: string;
40
42
 
@@ -65,7 +67,13 @@ export type EdgeChatAdapterOptions = {
65
67
  onError?: (error: Error) => void;
66
68
 
67
69
  credentials?: RequestCredentials;
68
- headers?: Record<string, string> | Headers;
70
+
71
+ /**
72
+ * Headers to be sent with the request.
73
+ * Can be a static headers object or a function that returns a Promise of headers.
74
+ */
75
+ headers?: HeadersValue | (() => Promise<HeadersValue>);
76
+
69
77
  body?: object;
70
78
 
71
79
  /**
@@ -112,7 +120,12 @@ export class EdgeChatAdapter implements ChatModelAdapter {
112
120
  unstable_assistantMessageId,
113
121
  unstable_getMessage,
114
122
  }: ChatModelRunOptions) {
115
- const headers = new Headers(this.options.headers);
123
+ const headersValue =
124
+ typeof this.options.headers === "function"
125
+ ? await this.options.headers()
126
+ : this.options.headers;
127
+
128
+ const headers = new Headers(headersValue);
116
129
  headers.set("Content-Type", "application/json");
117
130
 
118
131
  const result = await fetch(this.options.api, {
@@ -153,21 +166,19 @@ export class EdgeChatAdapter implements ChatModelAdapter {
153
166
  if (!result.ok) {
154
167
  throw new Error(`Status ${result.status}: ${await result.text()}`);
155
168
  }
169
+ if (!result.body) {
170
+ throw new Error("Response body is null");
171
+ }
156
172
 
157
- const stream = result
158
- .body!.pipeThrough(streamPartDecoderStream())
159
- .pipeThrough(assistantDecoderStream())
173
+ const stream = result.body
174
+ .pipeThrough(new DataStreamDecoder())
160
175
  .pipeThrough(toolResultStream(context.tools, abortSignal))
161
- .pipeThrough(runResultStream());
176
+ .pipeThrough(new AssistantMessageAccumulator());
162
177
 
163
- let update: ChatModelRunResult | undefined;
164
- for await (update of asAsyncIterable(stream)) {
178
+ for await (const update of asAsyncIterable(stream)) {
165
179
  yield update;
166
180
  }
167
181
 
168
- if (update === undefined)
169
- throw new Error("No data received from Edge Runtime");
170
-
171
182
  this.options.onFinish?.(unstable_getMessage());
172
183
  } catch (error: unknown) {
173
184
  this.options.onError?.(error as Error);
@@ -4,12 +4,12 @@ import { Writable } from "stream";
4
4
  import { ReadonlyJSONObject } from "../../../utils/json/json-value";
5
5
 
6
6
  type fromLanguageModelMessagesOptions = {
7
- mergeSteps: boolean;
7
+ mergeSteps?: boolean;
8
8
  };
9
9
 
10
10
  export const fromLanguageModelMessages = (
11
11
  lm: LanguageModelV1Message[],
12
- { mergeSteps }: fromLanguageModelMessagesOptions,
12
+ { mergeSteps }: fromLanguageModelMessagesOptions = {},
13
13
  ): CoreMessage[] => {
14
14
  const messages: CoreMessage[] = [];
15
15
 
@@ -70,18 +70,28 @@ export const fromLanguageModelMessages = (
70
70
  break;
71
71
  }
72
72
  case "assistant": {
73
- const newContent = lmMessage.content.map((part) => {
74
- if (part.type === "tool-call") {
75
- return {
76
- type: "tool-call",
77
- toolCallId: part.toolCallId,
78
- toolName: part.toolName,
79
- argsText: JSON.stringify(part.args),
80
- args: part.args as ReadonlyJSONObject,
81
- } satisfies ToolCallContentPart;
82
- }
83
- return part;
84
- });
73
+ const newContent = lmMessage.content
74
+ .map((part) => {
75
+ if (part.type === "tool-call") {
76
+ return {
77
+ type: "tool-call",
78
+ toolCallId: part.toolCallId,
79
+ toolName: part.toolName,
80
+ argsText: JSON.stringify(part.args),
81
+ args: part.args as ReadonlyJSONObject,
82
+ } satisfies ToolCallContentPart;
83
+ }
84
+ // TODO handle these
85
+ if (
86
+ part.type === "redacted-reasoning" ||
87
+ part.type === "file" ||
88
+ part.type === "reasoning"
89
+ ) {
90
+ return null;
91
+ }
92
+ return part;
93
+ })
94
+ .filter((p) => !!p);
85
95
 
86
96
  if (mergeSteps) {
87
97
  const previousMessage = messages[messages.length - 1];
@@ -23,8 +23,12 @@ export const toCoreMessage = <T extends boolean = false>(
23
23
  role,
24
24
  content: message.content
25
25
  .map((part) => {
26
- if (part.type === "reasoning" || part.type === "source")
27
- return null; // reasoning and source parts are omitted
26
+ if (
27
+ part.type === "reasoning" ||
28
+ part.type === "source" ||
29
+ part.type === "file"
30
+ )
31
+ return null; // reasoning, source, and file parts are omitted
28
32
  if (part.type === "tool-call") {
29
33
  const { argsText, ...rest } = part;
30
34
  return rest;
@@ -151,8 +151,9 @@ export function toLanguageModelMessages(
151
151
  const type = part.type;
152
152
  switch (type) {
153
153
  case "reasoning":
154
- case "source": {
155
- break; // reasoning and source parts are omitted
154
+ case "source":
155
+ case "file": {
156
+ break; // reasoning, source, and file parts are omitted
156
157
  }
157
158
 
158
159
  case "text": {
@@ -5,28 +5,32 @@ import {
5
5
  LanguageModelV1Prompt,
6
6
  LanguageModelV1CallOptions,
7
7
  } from "@ai-sdk/provider";
8
- import { CoreMessage, ThreadMessage, ThreadStep } from "../../types/AssistantTypes";
9
- import { assistantEncoderStream } from "./streams/assistantEncoderStream";
8
+ import {
9
+ CoreMessage,
10
+ ThreadMessage,
11
+ ThreadStep,
12
+ } from "../../types/AssistantTypes";
10
13
  import { EdgeRuntimeRequestOptionsSchema } from "./EdgeRuntimeRequestOptions";
11
14
  import { toLanguageModelMessages } from "./converters/toLanguageModelMessages";
12
15
  import { toLanguageModelTools } from "./converters/toLanguageModelTools";
13
- import {
14
- toolResultStream,
15
- ToolResultStreamPart,
16
- } from "./streams/toolResultStream";
17
- import { runResultStream } from "./streams/runResultStream";
16
+ import { toolResultStream } from "./streams/toolResultStream";
18
17
  import {
19
18
  LanguageModelConfig,
20
19
  LanguageModelV1CallSettings,
21
20
  LanguageModelV1CallSettingsSchema,
22
21
  Tool,
23
22
  } from "../../model-context/ModelContextTypes";
24
- import { CoreChatModelRunResult } from "../local/ChatModelAdapter";
25
- import { streamPartEncoderStream } from "./streams/utils/streamPartEncoderStream";
26
23
  import { z } from "zod";
24
+ import {
25
+ AssistantMessage,
26
+ AssistantMessageAccumulator,
27
+ AssistantStreamChunk,
28
+ DataStreamEncoder,
29
+ } from "assistant-stream";
30
+ import { LanguageModelV1StreamDecoder } from "assistant-stream/ai-sdk";
27
31
 
28
32
  type FinishResult = {
29
- messages: readonly (CoreMessage | ThreadMessage)[];
33
+ messages: readonly (CoreMessage | ThreadMessage)[];
30
34
  metadata: {
31
35
  steps: readonly ThreadStep[];
32
36
  };
@@ -44,14 +48,6 @@ export type CreateEdgeRuntimeAPIOptions = LanguageModelV1CallSettings & {
44
48
  onFinish?: (result: FinishResult) => void;
45
49
  };
46
50
 
47
- const voidStream = () => {
48
- return new WritableStream({
49
- abort(reason) {
50
- console.error("Server stream processing aborted:", reason);
51
- },
52
- });
53
- };
54
-
55
51
  type GetEdgeRuntimeStreamOptions = {
56
52
  abortSignal: AbortSignal;
57
53
  requestData: z.infer<typeof EdgeRuntimeRequestOptionsSchema>;
@@ -102,7 +98,7 @@ export const getEdgeRuntimeStream = async ({
102
98
  ? await modelOrCreator({ apiKey, baseUrl, modelName })
103
99
  : modelOrCreator;
104
100
 
105
- let stream: ReadableStream<ToolResultStreamPart>;
101
+ let stream: ReadableStream<AssistantStreamChunk>;
106
102
  const streamResult = await streamMessage({
107
103
  ...(settings as Partial<StreamMessageOptions>),
108
104
  ...callSettings,
@@ -115,7 +111,7 @@ export const getEdgeRuntimeStream = async ({
115
111
  tools: lmServerTools.concat(clientTools as LanguageModelV1FunctionTool[]),
116
112
  ...(toolChoice ? { toolChoice } : undefined),
117
113
  });
118
- stream = streamResult.stream;
114
+ stream = streamResult.stream.pipeThrough(new LanguageModelV1StreamDecoder());
119
115
 
120
116
  // add tool results if we have server tools
121
117
  const canExecuteTools = hasServerTools && toolChoice?.type !== "none";
@@ -130,13 +126,13 @@ export const getEdgeRuntimeStream = async ({
130
126
  let serverStream = tees[1];
131
127
 
132
128
  if (onFinish) {
133
- let lastChunk: CoreChatModelRunResult | undefined;
134
- serverStream = serverStream.pipeThrough(runResultStream()).pipeThrough(
135
- new TransformStream({
136
- transform(chunk) {
129
+ let lastChunk: AssistantMessage | undefined;
130
+ serverStream.pipeThrough(new AssistantMessageAccumulator()).pipeTo(
131
+ new WritableStream({
132
+ write(chunk) {
137
133
  lastChunk = chunk;
138
134
  },
139
- flush() {
135
+ close() {
140
136
  if (!lastChunk?.status || lastChunk.status.type === "running")
141
137
  return;
142
138
 
@@ -148,31 +144,22 @@ export const getEdgeRuntimeStream = async ({
148
144
  role: "assistant",
149
145
  content: lastChunk.content,
150
146
  status: lastChunk.status,
151
- metadata: {
152
- unstable_data: lastChunk.metadata?.unstable_data ?? [],
153
- unstable_annotations: lastChunk.metadata?.unstable_annotations ?? [],
154
- steps: lastChunk.metadata?.steps ?? [],
155
- custom: lastChunk.metadata?.custom ?? {},
156
- }
147
+ metadata: lastChunk.metadata,
157
148
  } satisfies ThreadMessage,
158
149
  ];
159
150
  onFinish({
160
151
  messages: resultingMessages,
161
152
  metadata: {
162
- // TODO
163
- // eslint-disable-next-line @typescript-eslint/no-non-null-asserted-optional-chain
164
- steps: lastChunk.metadata?.steps!,
153
+ steps: lastChunk.metadata.steps,
165
154
  },
166
155
  });
167
156
  },
157
+ abort(e) {
158
+ console.error("Server stream processing error:", e);
159
+ },
168
160
  }),
169
161
  );
170
162
  }
171
-
172
- // drain the server stream
173
- serverStream.pipeTo(voidStream()).catch((e) => {
174
- console.error("Server stream processing error:", e);
175
- });
176
163
  }
177
164
 
178
165
  return stream;
@@ -186,16 +173,12 @@ export const getEdgeRuntimeResponse = async (
186
173
  options: getEdgeRuntimeResponse.Options,
187
174
  ) => {
188
175
  const stream = await getEdgeRuntimeStream(options);
189
- return new Response(
190
- stream
191
- .pipeThrough(assistantEncoderStream())
192
- .pipeThrough(streamPartEncoderStream()),
193
- {
194
- headers: {
195
- "Content-Type": "text/plain; charset=utf-8",
196
- },
176
+ return new Response(stream.pipeThrough(new DataStreamEncoder()), {
177
+ headers: {
178
+ "Content-Type": "text/plain; charset=utf-8",
179
+ "x-vercel-ai-data-stream": "v1",
197
180
  },
198
- );
181
+ });
199
182
  };
200
183
 
201
184
  export const createEdgeRuntimeAPI = (options: CreateEdgeRuntimeAPIOptions) => ({
@@ -1,7 +1,5 @@
1
1
  export * from "./converters";
2
2
 
3
- export * from "./streams/utils";
4
-
5
3
  export { useEdgeRuntime, type EdgeRuntimeOptions } from "./useEdgeRuntime";
6
4
  export { EdgeChatAdapter } from "./EdgeChatAdapter";
7
5
  export type { EdgeRuntimeRequestOptions } from "./EdgeRuntimeRequestOptions";
@@ -1,163 +1,39 @@
1
1
  import { Tool } from "../../../model-context/ModelContextTypes";
2
- import { LanguageModelV1StreamPart } from "@ai-sdk/provider";
3
2
  import { z } from "zod";
4
- import sjson from "secure-json-parse";
5
- import { ReadonlyJSONValue } from "../../../utils/json/json-value";
6
-
7
- export type ToolResultStreamPart =
8
- | LanguageModelV1StreamPart
9
- | {
10
- type: "annotations";
11
- annotations: ReadonlyJSONValue[];
12
- }
13
- | {
14
- type: "data";
15
- data: ReadonlyJSONValue[];
16
- }
17
- | {
18
- type: "source";
19
- source: {
20
- readonly sourceType: "url";
21
- readonly id: string;
22
- readonly url: string;
23
- readonly title?: string;
24
- };
25
- }
26
- | {
27
- type: "tool-result";
28
- toolCallType: "function";
29
- toolCallId: string;
30
- toolName: string;
31
- result: unknown;
32
- isError?: boolean;
33
- }
34
- | {
35
- type: "step-finish";
36
- finishReason:
37
- | "stop"
38
- | "length"
39
- | "content-filter"
40
- | "tool-calls"
41
- | "error"
42
- | "other"
43
- | "unknown";
44
- usage: {
45
- promptTokens: number;
46
- completionTokens: number;
47
- };
48
- isContinued: boolean;
49
- };
3
+ import { ToolExecutionStream } from "assistant-stream";
50
4
 
51
5
  export function toolResultStream(
52
6
  tools: Record<string, Tool<any, any>> | undefined,
53
7
  abortSignal: AbortSignal,
54
8
  ) {
55
- const toolCallExecutions = new Map<string, Promise<any>>();
56
-
57
- return new TransformStream<ToolResultStreamPart, ToolResultStreamPart>({
58
- transform(chunk, controller) {
59
- // forward everything
60
- controller.enqueue(chunk);
61
-
62
- // handle tool calls
63
- const chunkType = chunk.type;
64
- switch (chunkType) {
65
- case "tool-call": {
66
- const { toolCallId, toolCallType, toolName, args: argsText } = chunk;
67
- const tool = tools?.[toolName];
68
- if (!tool || !tool.execute) return;
69
-
70
- let args;
71
- try {
72
- args = sjson.parse(argsText);
73
- } catch (e) {
74
- controller.enqueue({
75
- type: "tool-result",
76
- toolCallType,
77
- toolCallId,
78
- toolName,
79
- result:
80
- "Function parameter parsing failed. " +
81
- JSON.stringify((e as Error).message),
82
- isError: true,
83
- });
84
- return;
85
- }
86
-
87
- toolCallExecutions.set(
88
- toolCallId,
89
- (async () => {
90
- if (!tool.execute) return;
91
-
92
- let executeFn = tool.execute;
93
-
94
- if (tool.parameters instanceof z.ZodType) {
95
- const result = tool.parameters.safeParse(args);
96
- if (!result.success) {
97
- executeFn =
98
- tool.experimental_onSchemaValidationError ??
99
- (() => {
100
- throw (
101
- "Function parameter validation failed. " +
102
- JSON.stringify(result.error.issues)
103
- );
104
- });
105
- }
106
- }
107
-
108
- try {
109
- const result = await executeFn(args, {
110
- toolCallId,
111
- abortSignal,
112
- });
113
-
114
- controller.enqueue({
115
- type: "tool-result",
116
- toolCallType,
117
- toolCallId,
118
- toolName,
119
- result: result === undefined ? "<no result>" : result,
120
- });
121
- } catch (error) {
122
- controller.enqueue({
123
- type: "tool-result",
124
- toolCallType,
125
- toolCallId,
126
- toolName,
127
- result: "Error: " + error,
128
- isError: true,
129
- });
130
- } finally {
131
- toolCallExecutions.delete(toolCallId);
132
- }
133
- })(),
134
- );
135
- break;
136
- }
137
-
138
- // ignore other parts
139
- case "text-delta":
140
- case "reasoning":
141
- case "source":
142
- case "tool-call-delta":
143
- case "tool-result":
144
- case "step-finish":
145
- case "finish":
146
- case "error":
147
- case "response-metadata":
148
- case "annotations":
149
- case "data":
150
- break;
151
-
152
- default: {
153
- const unhandledType: never = chunkType;
154
- throw new Error(`Unhandled chunk type: ${unhandledType}`);
155
- }
9
+ return new ToolExecutionStream(({ toolCallId, toolName, args }) => {
10
+ const tool = tools?.[toolName];
11
+ if (!tool || !tool.execute) return undefined;
12
+
13
+ let executeFn = tool.execute;
14
+
15
+ if (tool.parameters instanceof z.ZodType) {
16
+ const result = tool.parameters.safeParse(args);
17
+ if (!result.success) {
18
+ executeFn =
19
+ tool.experimental_onSchemaValidationError ??
20
+ (() => {
21
+ throw (
22
+ "Function parameter validation failed. " +
23
+ JSON.stringify(result.error.issues)
24
+ );
25
+ });
156
26
  }
157
- },
27
+ }
28
+
29
+ const getResult = async () => {
30
+ const result = await executeFn(args, {
31
+ toolCallId,
32
+ abortSignal,
33
+ });
34
+ return result === undefined ? "<no result>" : result;
35
+ };
158
36
 
159
- async flush() {
160
- await Promise.all(toolCallExecutions.values());
161
- },
37
+ return getResult();
162
38
  });
163
39
  }
@@ -100,6 +100,7 @@ export const fromThreadMessageLike = (
100
100
  if (part.text.trim().length === 0) return null;
101
101
  return part;
102
102
 
103
+ case "file":
103
104
  case "source":
104
105
  return part;
105
106
 
@@ -121,7 +122,7 @@ export const fromThreadMessageLike = (
121
122
  }
122
123
 
123
124
  default: {
124
- const unhandledType: "image" | "audio" | "file" = type;
125
+ const unhandledType: "image" | "audio" = type;
125
126
  throw new Error(
126
127
  `Unsupported assistant content part type: ${unhandledType}`,
127
128
  );
@@ -317,7 +317,7 @@ export const useExternalMessageConverter = <T extends WeakKey>({
317
317
  ] = messages;
318
318
 
319
319
  return threadMessages;
320
- }, [state, messages, isRunning]);
320
+ }, [state, messages, isRunning, joinStrategy]);
321
321
  };
322
322
 
323
323
  const shallowArrayEqual = (a: unknown[], b: unknown[]) => {
@@ -1,4 +1,5 @@
1
1
  import type {
2
+ FileContentPart,
2
3
  MessageStatus,
3
4
  ReasoningContentPart,
4
5
  RunConfig,
@@ -34,6 +35,7 @@ export type CoreChatModelRunResult = Omit<ChatModelRunResult, "content"> & {
34
35
  | ReasoningContentPart
35
36
  | ToolCallContentPart
36
37
  | SourceContentPart
38
+ | FileContentPart
37
39
  )[];
38
40
  };
39
41