@assistant-ui/core 0.2.4 → 0.2.6

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 (841) hide show
  1. package/dist/adapters/attachment.d.ts +43 -39
  2. package/dist/adapters/attachment.d.ts.map +1 -1
  3. package/dist/adapters/attachment.js +148 -183
  4. package/dist/adapters/attachment.js.map +1 -1
  5. package/dist/adapters/directive-formatter.d.ts +6 -2
  6. package/dist/adapters/directive-formatter.d.ts.map +1 -1
  7. package/dist/adapters/directive-formatter.js +36 -33
  8. package/dist/adapters/directive-formatter.js.map +1 -1
  9. package/dist/adapters/feedback.d.ts +9 -6
  10. package/dist/adapters/feedback.d.ts.map +1 -1
  11. package/dist/adapters/feedback.js +0 -2
  12. package/dist/adapters/index.d.ts +9 -13
  13. package/dist/adapters/index.js +5 -6
  14. package/dist/adapters/speech.d.ts +66 -63
  15. package/dist/adapters/speech.d.ts.map +1 -1
  16. package/dist/adapters/speech.js +170 -174
  17. package/dist/adapters/speech.js.map +1 -1
  18. package/dist/adapters/suggestion.d.ts +9 -6
  19. package/dist/adapters/suggestion.d.ts.map +1 -1
  20. package/dist/adapters/suggestion.js +0 -2
  21. package/dist/adapters/thread-history.d.ts +40 -37
  22. package/dist/adapters/thread-history.d.ts.map +1 -1
  23. package/dist/adapters/thread-history.js +0 -2
  24. package/dist/adapters/trigger.d.ts +9 -8
  25. package/dist/adapters/trigger.d.ts.map +1 -1
  26. package/dist/adapters/trigger.js +0 -2
  27. package/dist/adapters/voice.d.ts +46 -42
  28. package/dist/adapters/voice.d.ts.map +1 -1
  29. package/dist/adapters/voice.js +98 -107
  30. package/dist/adapters/voice.js.map +1 -1
  31. package/dist/index.d.ts +45 -53
  32. package/dist/index.js +16 -20
  33. package/dist/internal.d.ts +37 -8
  34. package/dist/internal.js +34 -18
  35. package/dist/model-context/frame/host.d.ts +23 -19
  36. package/dist/model-context/frame/host.d.ts.map +1 -1
  37. package/dist/model-context/frame/host.js +121 -135
  38. package/dist/model-context/frame/host.js.map +1 -1
  39. package/dist/model-context/frame/provider.d.ts +20 -16
  40. package/dist/model-context/frame/provider.d.ts.map +1 -1
  41. package/dist/model-context/frame/provider.js +115 -126
  42. package/dist/model-context/frame/provider.js.map +1 -1
  43. package/dist/model-context/frame/types.d.ts +25 -22
  44. package/dist/model-context/frame/types.d.ts.map +1 -1
  45. package/dist/model-context/frame/types.js +5 -1
  46. package/dist/model-context/frame/types.js.map +1 -1
  47. package/dist/model-context/registry-handles.d.ts +13 -9
  48. package/dist/model-context/registry-handles.d.ts.map +1 -1
  49. package/dist/model-context/registry-handles.js +0 -2
  50. package/dist/model-context/registry.d.ts +19 -15
  51. package/dist/model-context/registry.d.ts.map +1 -1
  52. package/dist/model-context/registry.js +93 -107
  53. package/dist/model-context/registry.js.map +1 -1
  54. package/dist/model-context/tool.d.ts +6 -2
  55. package/dist/model-context/tool.d.ts.map +1 -1
  56. package/dist/model-context/tool.js +30 -27
  57. package/dist/model-context/tool.js.map +1 -1
  58. package/dist/model-context/types.d.ts +37 -33
  59. package/dist/model-context/types.d.ts.map +1 -1
  60. package/dist/model-context/types.js +24 -38
  61. package/dist/model-context/types.js.map +1 -1
  62. package/dist/react/AssistantProvider.d.ts +12 -8
  63. package/dist/react/AssistantProvider.d.ts.map +1 -1
  64. package/dist/react/AssistantProvider.js +16 -9
  65. package/dist/react/AssistantProvider.js.map +1 -1
  66. package/dist/react/AssistantRuntimeProvider.d.ts +26 -18
  67. package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
  68. package/dist/react/AssistantRuntimeProvider.js +33 -25
  69. package/dist/react/AssistantRuntimeProvider.js.map +1 -1
  70. package/dist/react/RuntimeAdapter.d.ts +5 -2
  71. package/dist/react/RuntimeAdapter.d.ts.map +1 -1
  72. package/dist/react/RuntimeAdapter.js +11 -11
  73. package/dist/react/RuntimeAdapter.js.map +1 -1
  74. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +14 -11
  75. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  76. package/dist/react/adapters/LocalStorageThreadListAdapter.js +136 -147
  77. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  78. package/dist/react/adapters/TitleGenerationAdapter.d.ts +8 -4
  79. package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
  80. package/dist/react/adapters/TitleGenerationAdapter.js +13 -13
  81. package/dist/react/adapters/TitleGenerationAdapter.js.map +1 -1
  82. package/dist/react/client/DataRenderers.d.ts +6 -2
  83. package/dist/react/client/DataRenderers.d.ts.map +1 -1
  84. package/dist/react/client/DataRenderers.js +53 -51
  85. package/dist/react/client/DataRenderers.js.map +1 -1
  86. package/dist/react/client/Interactables.d.ts +6 -2
  87. package/dist/react/client/Interactables.d.ts.map +1 -1
  88. package/dist/react/client/Interactables.js +251 -257
  89. package/dist/react/client/Interactables.js.map +1 -1
  90. package/dist/react/client/Tools.d.ts +13 -14
  91. package/dist/react/client/Tools.d.ts.map +1 -1
  92. package/dist/react/client/Tools.js +57 -68
  93. package/dist/react/client/Tools.js.map +1 -1
  94. package/dist/react/client/interactable-model-context.d.ts +10 -6
  95. package/dist/react/client/interactable-model-context.d.ts.map +1 -1
  96. package/dist/react/client/interactable-model-context.js +51 -59
  97. package/dist/react/client/interactable-model-context.js.map +1 -1
  98. package/dist/react/index.d.ts +96 -90
  99. package/dist/react/index.js +89 -96
  100. package/dist/react/model-context/makeAssistantDataUI.d.ts +9 -6
  101. package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
  102. package/dist/react/model-context/makeAssistantDataUI.js +17 -13
  103. package/dist/react/model-context/makeAssistantDataUI.js.map +1 -1
  104. package/dist/react/model-context/makeAssistantTool.d.ts +9 -6
  105. package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
  106. package/dist/react/model-context/makeAssistantTool.js +18 -14
  107. package/dist/react/model-context/makeAssistantTool.js.map +1 -1
  108. package/dist/react/model-context/makeAssistantToolUI.d.ts +9 -6
  109. package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
  110. package/dist/react/model-context/makeAssistantToolUI.js +19 -15
  111. package/dist/react/model-context/makeAssistantToolUI.js.map +1 -1
  112. package/dist/react/model-context/toolbox.d.ts +13 -11
  113. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  114. package/dist/react/model-context/toolbox.js +0 -2
  115. package/dist/react/model-context/useAssistantContext.d.ts +5 -3
  116. package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
  117. package/dist/react/model-context/useAssistantContext.js +13 -14
  118. package/dist/react/model-context/useAssistantContext.js.map +1 -1
  119. package/dist/react/model-context/useAssistantDataUI.d.ts +9 -7
  120. package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
  121. package/dist/react/model-context/useAssistantDataUI.js +19 -12
  122. package/dist/react/model-context/useAssistantDataUI.js.map +1 -1
  123. package/dist/react/model-context/useAssistantInstructions.d.ts +5 -3
  124. package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
  125. package/dist/react/model-context/useAssistantInstructions.js +18 -16
  126. package/dist/react/model-context/useAssistantInstructions.js.map +1 -1
  127. package/dist/react/model-context/useAssistantInteractable.d.ts +12 -8
  128. package/dist/react/model-context/useAssistantInteractable.d.ts.map +1 -1
  129. package/dist/react/model-context/useAssistantInteractable.js +36 -26
  130. package/dist/react/model-context/useAssistantInteractable.js.map +1 -1
  131. package/dist/react/model-context/useAssistantTool.d.ts +9 -6
  132. package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
  133. package/dist/react/model-context/useAssistantTool.js +48 -47
  134. package/dist/react/model-context/useAssistantTool.js.map +1 -1
  135. package/dist/react/model-context/useAssistantToolUI.d.ts +9 -7
  136. package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
  137. package/dist/react/model-context/useAssistantToolUI.js +22 -15
  138. package/dist/react/model-context/useAssistantToolUI.js.map +1 -1
  139. package/dist/react/model-context/useInlineRender.d.ts +7 -3
  140. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  141. package/dist/react/model-context/useInlineRender.js +12 -12
  142. package/dist/react/model-context/useInlineRender.js.map +1 -1
  143. package/dist/react/model-context/useInteractableState.d.ts +9 -7
  144. package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
  145. package/dist/react/model-context/useInteractableState.js +29 -31
  146. package/dist/react/model-context/useInteractableState.js.map +1 -1
  147. package/dist/react/model-context/useToolArgsStatus.d.ts +7 -7
  148. package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
  149. package/dist/react/model-context/useToolArgsStatus.js +44 -50
  150. package/dist/react/model-context/useToolArgsStatus.js.map +1 -1
  151. package/dist/react/primitive-hooks/useActionBarCopy.d.ts +13 -7
  152. package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
  153. package/dist/react/primitive-hooks/useActionBarCopy.js +31 -23
  154. package/dist/react/primitive-hooks/useActionBarCopy.js.map +1 -1
  155. package/dist/react/primitive-hooks/useActionBarEdit.d.ts +6 -3
  156. package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
  157. package/dist/react/primitive-hooks/useActionBarEdit.js +13 -7
  158. package/dist/react/primitive-hooks/useActionBarEdit.js.map +1 -1
  159. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +9 -6
  160. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
  161. package/dist/react/primitive-hooks/useActionBarFeedback.js +22 -14
  162. package/dist/react/primitive-hooks/useActionBarFeedback.js.map +1 -1
  163. package/dist/react/primitive-hooks/useActionBarReload.d.ts +6 -3
  164. package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
  165. package/dist/react/primitive-hooks/useActionBarReload.js +13 -9
  166. package/dist/react/primitive-hooks/useActionBarReload.js.map +1 -1
  167. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +6 -3
  168. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
  169. package/dist/react/primitive-hooks/useActionBarSpeak.js +15 -11
  170. package/dist/react/primitive-hooks/useActionBarSpeak.js.map +1 -1
  171. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +6 -3
  172. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
  173. package/dist/react/primitive-hooks/useActionBarStopSpeaking.js +13 -7
  174. package/dist/react/primitive-hooks/useActionBarStopSpeaking.js.map +1 -1
  175. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +6 -3
  176. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
  177. package/dist/react/primitive-hooks/useBranchPickerNext.js +17 -14
  178. package/dist/react/primitive-hooks/useBranchPickerNext.js.map +1 -1
  179. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +6 -3
  180. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
  181. package/dist/react/primitive-hooks/useBranchPickerPrevious.js +17 -14
  182. package/dist/react/primitive-hooks/useBranchPickerPrevious.js.map +1 -1
  183. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +8 -4
  184. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
  185. package/dist/react/primitive-hooks/useComposerAddAttachment.js +13 -7
  186. package/dist/react/primitive-hooks/useComposerAddAttachment.js.map +1 -1
  187. package/dist/react/primitive-hooks/useComposerCancel.d.ts +6 -3
  188. package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
  189. package/dist/react/primitive-hooks/useComposerCancel.js +13 -7
  190. package/dist/react/primitive-hooks/useComposerCancel.js.map +1 -1
  191. package/dist/react/primitive-hooks/useComposerDictate.d.ts +6 -3
  192. package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
  193. package/dist/react/primitive-hooks/useComposerDictate.js +13 -9
  194. package/dist/react/primitive-hooks/useComposerDictate.js.map +1 -1
  195. package/dist/react/primitive-hooks/useComposerSend.d.ts +8 -4
  196. package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
  197. package/dist/react/primitive-hooks/useComposerSend.js +13 -8
  198. package/dist/react/primitive-hooks/useComposerSend.js.map +1 -1
  199. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +5 -2
  200. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
  201. package/dist/react/primitive-hooks/useEditComposerCancel.js +9 -6
  202. package/dist/react/primitive-hooks/useEditComposerCancel.js.map +1 -1
  203. package/dist/react/primitive-hooks/useEditComposerSend.d.ts +6 -3
  204. package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
  205. package/dist/react/primitive-hooks/useEditComposerSend.js +13 -7
  206. package/dist/react/primitive-hooks/useEditComposerSend.js.map +1 -1
  207. package/dist/react/primitive-hooks/useMessageBranching.d.ts +8 -5
  208. package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
  209. package/dist/react/primitive-hooks/useMessageBranching.js +16 -11
  210. package/dist/react/primitive-hooks/useMessageBranching.js.map +1 -1
  211. package/dist/react/primitive-hooks/useMessageError.d.ts +4 -1
  212. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
  213. package/dist/react/primitive-hooks/useMessageError.js +6 -5
  214. package/dist/react/primitive-hooks/useMessageError.js.map +1 -1
  215. package/dist/react/primitive-hooks/useMessageReload.d.ts +6 -3
  216. package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
  217. package/dist/react/primitive-hooks/useMessageReload.js +13 -7
  218. package/dist/react/primitive-hooks/useMessageReload.js.map +1 -1
  219. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +14 -7
  220. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
  221. package/dist/react/primitive-hooks/useSuggestionTrigger.js +33 -28
  222. package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
  223. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +4 -1
  224. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
  225. package/dist/react/primitive-hooks/useThreadIsEmpty.js +6 -2
  226. package/dist/react/primitive-hooks/useThreadIsEmpty.js.map +1 -1
  227. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +4 -1
  228. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
  229. package/dist/react/primitive-hooks/useThreadIsRunning.js +6 -2
  230. package/dist/react/primitive-hooks/useThreadIsRunning.js.map +1 -1
  231. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +5 -2
  232. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
  233. package/dist/react/primitive-hooks/useThreadListItemArchive.js +9 -6
  234. package/dist/react/primitive-hooks/useThreadListItemArchive.js.map +1 -1
  235. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +5 -2
  236. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
  237. package/dist/react/primitive-hooks/useThreadListItemDelete.js +9 -6
  238. package/dist/react/primitive-hooks/useThreadListItemDelete.js.map +1 -1
  239. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +5 -2
  240. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
  241. package/dist/react/primitive-hooks/useThreadListItemTrigger.js +9 -6
  242. package/dist/react/primitive-hooks/useThreadListItemTrigger.js.map +1 -1
  243. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +5 -2
  244. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
  245. package/dist/react/primitive-hooks/useThreadListItemUnarchive.js +9 -6
  246. package/dist/react/primitive-hooks/useThreadListItemUnarchive.js.map +1 -1
  247. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +6 -3
  248. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
  249. package/dist/react/primitive-hooks/useThreadListLoadMore.js +13 -7
  250. package/dist/react/primitive-hooks/useThreadListLoadMore.js.map +1 -1
  251. package/dist/react/primitive-hooks/useThreadListNew.d.ts +5 -2
  252. package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
  253. package/dist/react/primitive-hooks/useThreadListNew.js +9 -6
  254. package/dist/react/primitive-hooks/useThreadListNew.js.map +1 -1
  255. package/dist/react/primitive-hooks/useThreadMessages.d.ts +6 -2
  256. package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
  257. package/dist/react/primitive-hooks/useThreadMessages.js +6 -2
  258. package/dist/react/primitive-hooks/useThreadMessages.js.map +1 -1
  259. package/dist/react/primitive-hooks/useVoice.d.ts +12 -8
  260. package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
  261. package/dist/react/primitive-hooks/useVoice.js +25 -21
  262. package/dist/react/primitive-hooks/useVoice.js.map +1 -1
  263. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +26 -27
  264. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
  265. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +30 -28
  266. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js.map +1 -1
  267. package/dist/react/primitives/composer/ComposerAttachments.d.ts +27 -26
  268. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  269. package/dist/react/primitives/composer/ComposerAttachments.js +44 -48
  270. package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
  271. package/dist/react/primitives/composer/ComposerIf.d.ts +12 -13
  272. package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
  273. package/dist/react/primitives/composer/ComposerIf.js +16 -17
  274. package/dist/react/primitives/composer/ComposerIf.js.map +1 -1
  275. package/dist/react/primitives/composer/ComposerQueue.d.ts +16 -13
  276. package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
  277. package/dist/react/primitives/composer/ComposerQueue.js +31 -23
  278. package/dist/react/primitives/composer/ComposerQueue.js.map +1 -1
  279. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +64 -0
  280. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -0
  281. package/dist/react/primitives/generativeUI/GenerativeUI.js +91 -0
  282. package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -0
  283. package/dist/react/primitives/message/MessageAttachments.d.ts +27 -26
  284. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  285. package/dist/react/primitives/message/MessageAttachments.js +47 -52
  286. package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
  287. package/dist/react/primitives/message/MessageGroupedParts.d.ts +82 -71
  288. package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
  289. package/dist/react/primitives/message/MessageGroupedParts.js +63 -61
  290. package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
  291. package/dist/react/primitives/message/MessageParts.d.ts +148 -145
  292. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  293. package/dist/react/primitives/message/MessageParts.js +363 -335
  294. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  295. package/dist/react/primitives/message/MessageQuote.d.ts +11 -8
  296. package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
  297. package/dist/react/primitives/message/MessageQuote.js +24 -21
  298. package/dist/react/primitives/message/MessageQuote.js.map +1 -1
  299. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +8 -4
  300. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
  301. package/dist/react/primitives/messagePart/MessagePartInProgress.js +6 -3
  302. package/dist/react/primitives/messagePart/MessagePartInProgress.js.map +1 -1
  303. package/dist/react/primitives/part/PartMessages.d.ts +16 -13
  304. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  305. package/dist/react/primitives/part/PartMessages.js +45 -41
  306. package/dist/react/primitives/part/PartMessages.js.map +1 -1
  307. package/dist/react/primitives/thread/ThreadMessages.d.ts +40 -55
  308. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  309. package/dist/react/primitives/thread/ThreadMessages.js +58 -92
  310. package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
  311. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +25 -25
  312. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
  313. package/dist/react/primitives/thread/ThreadSuggestions.js +39 -35
  314. package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
  315. package/dist/react/primitives/threadList/ThreadListItems.d.ts +27 -26
  316. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  317. package/dist/react/primitives/threadList/ThreadListItems.js +47 -23
  318. package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
  319. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +10 -6
  320. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
  321. package/dist/react/primitives/threadListItem/ThreadListItemTitle.js +7 -4
  322. package/dist/react/primitives/threadListItem/ThreadListItemTitle.js.map +1 -1
  323. package/dist/react/providers/AttachmentByIndexProvider.d.ts +9 -5
  324. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
  325. package/dist/react/providers/AttachmentByIndexProvider.js +30 -20
  326. package/dist/react/providers/AttachmentByIndexProvider.js.map +1 -1
  327. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +8 -4
  328. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
  329. package/dist/react/providers/ChainOfThoughtByIndicesProvider.js +19 -17
  330. package/dist/react/providers/ChainOfThoughtByIndicesProvider.js.map +1 -1
  331. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +7 -3
  332. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
  333. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js +18 -11
  334. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js.map +1 -1
  335. package/dist/react/providers/MessageByIndexProvider.d.ts +7 -3
  336. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
  337. package/dist/react/providers/MessageByIndexProvider.js +25 -16
  338. package/dist/react/providers/MessageByIndexProvider.js.map +1 -1
  339. package/dist/react/providers/PartByIndexProvider.d.ts +7 -3
  340. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
  341. package/dist/react/providers/PartByIndexProvider.js +18 -11
  342. package/dist/react/providers/PartByIndexProvider.js.map +1 -1
  343. package/dist/react/providers/QueueItemByIndexProvider.d.ts +8 -4
  344. package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
  345. package/dist/react/providers/QueueItemByIndexProvider.js +14 -10
  346. package/dist/react/providers/QueueItemByIndexProvider.js.map +1 -1
  347. package/dist/react/providers/ReadonlyThreadProvider.d.ts +11 -7
  348. package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
  349. package/dist/react/providers/ReadonlyThreadProvider.js +46 -42
  350. package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
  351. package/dist/react/providers/SuggestionByIndexProvider.d.ts +8 -4
  352. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
  353. package/dist/react/providers/SuggestionByIndexProvider.js +14 -10
  354. package/dist/react/providers/SuggestionByIndexProvider.js.map +1 -1
  355. package/dist/react/providers/TextMessagePartProvider.d.ts +8 -4
  356. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
  357. package/dist/react/providers/TextMessagePartProvider.js +32 -22
  358. package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
  359. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +8 -4
  360. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
  361. package/dist/react/providers/ThreadListItemByIndexProvider.js +22 -11
  362. package/dist/react/providers/ThreadListItemByIndexProvider.js.map +1 -1
  363. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +8 -4
  364. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  365. package/dist/react/providers/ThreadListItemRuntimeProvider.js +12 -8
  366. package/dist/react/providers/ThreadListItemRuntimeProvider.js.map +1 -1
  367. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +121 -109
  368. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  369. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +123 -129
  370. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  371. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +149 -135
  372. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  373. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +460 -515
  374. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  375. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +19 -15
  376. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
  377. package/dist/react/runtimes/RuntimeAdapterProvider.js +16 -9
  378. package/dist/react/runtimes/RuntimeAdapterProvider.js.map +1 -1
  379. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +8 -4
  380. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  381. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +372 -485
  382. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  383. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +19 -13
  384. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  385. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +83 -80
  386. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
  387. package/dist/react/runtimes/cloud/auiV0.d.ts +61 -58
  388. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  389. package/dist/react/runtimes/cloud/auiV0.js +80 -87
  390. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  391. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +10 -7
  392. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  393. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +101 -101
  394. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
  395. package/dist/react/runtimes/createMessageConverter.d.ts +23 -14
  396. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
  397. package/dist/react/runtimes/createMessageConverter.js +43 -46
  398. package/dist/react/runtimes/createMessageConverter.js.map +1 -1
  399. package/dist/react/runtimes/external-message-converter.d.ts +40 -31
  400. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  401. package/dist/react/runtimes/external-message-converter.js +226 -296
  402. package/dist/react/runtimes/external-message-converter.js.map +1 -1
  403. package/dist/react/runtimes/useExternalStoreRuntime.d.ts +7 -3
  404. package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
  405. package/dist/react/runtimes/useExternalStoreRuntime.js +18 -15
  406. package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
  407. package/dist/react/runtimes/useLocalRuntime.d.ts +41 -26
  408. package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
  409. package/dist/react/runtimes/useLocalRuntime.js +58 -67
  410. package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
  411. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +7 -3
  412. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  413. package/dist/react/runtimes/useRemoteThreadListRuntime.js +51 -62
  414. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
  415. package/dist/react/runtimes/useToolInvocations.d.ts +39 -34
  416. package/dist/react/runtimes/useToolInvocations.d.ts.map +1 -1
  417. package/dist/react/runtimes/useToolInvocations.js +371 -481
  418. package/dist/react/runtimes/useToolInvocations.js.map +1 -1
  419. package/dist/react/types/MessagePartComponentTypes.d.ts +73 -41
  420. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  421. package/dist/react/types/MessagePartComponentTypes.js +0 -2
  422. package/dist/react/types/scopes/dataRenderers.d.ts +15 -11
  423. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
  424. package/dist/react/types/scopes/dataRenderers.js +0 -2
  425. package/dist/react/types/scopes/interactables.d.ts +44 -42
  426. package/dist/react/types/scopes/interactables.d.ts.map +1 -1
  427. package/dist/react/types/scopes/interactables.js +0 -2
  428. package/dist/react/types/scopes/tools.d.ts +16 -12
  429. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  430. package/dist/react/types/scopes/tools.js +0 -2
  431. package/dist/react/types/store-augmentation.d.ts +11 -9
  432. package/dist/react/types/store-augmentation.d.ts.map +1 -1
  433. package/dist/react/types/store-augmentation.js +0 -2
  434. package/dist/react/utils/getMessageQuote.d.ts +9 -6
  435. package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
  436. package/dist/react/utils/getMessageQuote.js +8 -5
  437. package/dist/react/utils/getMessageQuote.js.map +1 -1
  438. package/dist/react/utils/groupParts.d.ts +59 -28
  439. package/dist/react/utils/groupParts.d.ts.map +1 -1
  440. package/dist/react/utils/groupParts.js +104 -89
  441. package/dist/react/utils/groupParts.js.map +1 -1
  442. package/dist/runtime/api/assistant-runtime.d.ts +32 -28
  443. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  444. package/dist/runtime/api/assistant-runtime.js +25 -22
  445. package/dist/runtime/api/assistant-runtime.js.map +1 -1
  446. package/dist/runtime/api/attachment-runtime.d.ts +48 -45
  447. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  448. package/dist/runtime/api/attachment-runtime.js +55 -52
  449. package/dist/runtime/api/attachment-runtime.js.map +1 -1
  450. package/dist/runtime/api/bindings.d.ts +30 -25
  451. package/dist/runtime/api/bindings.d.ts.map +1 -1
  452. package/dist/runtime/api/bindings.js +0 -2
  453. package/dist/runtime/api/composer-runtime.d.ts +184 -182
  454. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  455. package/dist/runtime/api/composer-runtime.js +239 -245
  456. package/dist/runtime/api/composer-runtime.js.map +1 -1
  457. package/dist/runtime/api/message-part-runtime.d.ts +37 -27
  458. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  459. package/dist/runtime/api/message-part-runtime.js +74 -65
  460. package/dist/runtime/api/message-part-runtime.js.map +1 -1
  461. package/dist/runtime/api/message-runtime.d.ts +91 -80
  462. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  463. package/dist/runtime/api/message-runtime.js +169 -194
  464. package/dist/runtime/api/message-runtime.js.map +1 -1
  465. package/dist/runtime/api/paths.d.ts +57 -54
  466. package/dist/runtime/api/paths.d.ts.map +1 -1
  467. package/dist/runtime/api/paths.js +0 -2
  468. package/dist/runtime/api/thread-list-item-runtime.d.ts +68 -61
  469. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  470. package/dist/runtime/api/thread-list-item-runtime.js +85 -84
  471. package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
  472. package/dist/runtime/api/thread-list-runtime.d.ts +57 -48
  473. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  474. package/dist/runtime/api/thread-list-runtime.js +160 -147
  475. package/dist/runtime/api/thread-list-runtime.js.map +1 -1
  476. package/dist/runtime/api/thread-runtime.d.ts +279 -272
  477. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  478. package/dist/runtime/api/thread-runtime.js +244 -244
  479. package/dist/runtime/api/thread-runtime.js.map +1 -1
  480. package/dist/runtime/base/base-assistant-runtime-core.d.ts +13 -9
  481. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
  482. package/dist/runtime/base/base-assistant-runtime-core.js +13 -9
  483. package/dist/runtime/base/base-assistant-runtime-core.js.map +1 -1
  484. package/dist/runtime/base/base-composer-runtime-core.d.ts +60 -57
  485. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  486. package/dist/runtime/base/base-composer-runtime-core.js +348 -392
  487. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  488. package/dist/runtime/base/base-thread-runtime-core.d.ts +90 -84
  489. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  490. package/dist/runtime/base/base-thread-runtime-core.js +349 -357
  491. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  492. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +37 -30
  493. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  494. package/dist/runtime/base/default-edit-composer-runtime-core.js +70 -77
  495. package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
  496. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +25 -21
  497. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  498. package/dist/runtime/base/default-thread-composer-runtime-core.js +51 -48
  499. package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
  500. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +12 -8
  501. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
  502. package/dist/runtime/interfaces/assistant-runtime-core.js +0 -2
  503. package/dist/runtime/interfaces/composer-runtime-core.d.ts +70 -67
  504. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  505. package/dist/runtime/interfaces/composer-runtime-core.js +0 -2
  506. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +45 -39
  507. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  508. package/dist/runtime/interfaces/thread-list-runtime-core.js +0 -2
  509. package/dist/runtime/interfaces/thread-runtime-core.d.ts +155 -145
  510. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  511. package/dist/runtime/interfaces/thread-runtime-core.js +0 -2
  512. package/dist/runtime/internal.d.ts +19 -23
  513. package/dist/runtime/internal.js +18 -22
  514. package/dist/runtime/utils/auto-status.d.ts +8 -4
  515. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  516. package/dist/runtime/utils/auto-status.js +18 -22
  517. package/dist/runtime/utils/auto-status.js.map +1 -1
  518. package/dist/runtime/utils/chat-model-adapter.d.ts +34 -31
  519. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  520. package/dist/runtime/utils/chat-model-adapter.js +0 -2
  521. package/dist/runtime/utils/external-store-message.d.ts +9 -5
  522. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  523. package/dist/runtime/utils/external-store-message.js +21 -21
  524. package/dist/runtime/utils/external-store-message.js.map +1 -1
  525. package/dist/runtime/utils/message-repository.d.ts +48 -42
  526. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  527. package/dist/runtime/utils/message-repository.js +213 -267
  528. package/dist/runtime/utils/message-repository.js.map +1 -1
  529. package/dist/runtime/utils/thread-message-like.d.ts +51 -39
  530. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  531. package/dist/runtime/utils/thread-message-like.js +125 -139
  532. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  533. package/dist/runtimes/assistant-transport/utils.d.ts +4 -1
  534. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
  535. package/dist/runtimes/assistant-transport/utils.js +9 -5
  536. package/dist/runtimes/assistant-transport/utils.js.map +1 -1
  537. package/dist/runtimes/external-store/external-store-adapter.d.ts +101 -97
  538. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  539. package/dist/runtimes/external-store/external-store-adapter.js +0 -2
  540. package/dist/runtimes/external-store/external-store-runtime-core.d.ts +9 -5
  541. package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
  542. package/dist/runtimes/external-store/external-store-runtime-core.js +16 -13
  543. package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
  544. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +46 -40
  545. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  546. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +141 -171
  547. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
  548. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +54 -47
  549. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  550. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +216 -288
  551. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  552. package/dist/runtimes/external-store/thread-message-converter.d.ts +9 -5
  553. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
  554. package/dist/runtimes/external-store/thread-message-converter.js +14 -11
  555. package/dist/runtimes/external-store/thread-message-converter.js.map +1 -1
  556. package/dist/runtimes/internal.d.ts +15 -19
  557. package/dist/runtimes/internal.js +13 -17
  558. package/dist/runtimes/local/local-runtime-core.d.ts +11 -7
  559. package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
  560. package/dist/runtimes/local/local-runtime-core.js +18 -18
  561. package/dist/runtimes/local/local-runtime-core.js.map +1 -1
  562. package/dist/runtimes/local/local-runtime-options.d.ts +27 -23
  563. package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
  564. package/dist/runtimes/local/local-runtime-options.js +0 -2
  565. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +46 -42
  566. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
  567. package/dist/runtimes/local/local-thread-list-runtime-core.js +84 -83
  568. package/dist/runtimes/local/local-thread-list-runtime-core.js.map +1 -1
  569. package/dist/runtimes/local/local-thread-runtime-core.d.ts +81 -59
  570. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  571. package/dist/runtimes/local/local-thread-runtime-core.js +345 -424
  572. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  573. package/dist/runtimes/local/should-continue.d.ts +6 -2
  574. package/dist/runtimes/local/should-continue.d.ts.map +1 -1
  575. package/dist/runtimes/local/should-continue.js +7 -12
  576. package/dist/runtimes/local/should-continue.js.map +1 -1
  577. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +97 -92
  578. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
  579. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +167 -176
  580. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
  581. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +15 -11
  582. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
  583. package/dist/runtimes/remote-thread-list/adapter/in-memory.js +33 -28
  584. package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -1
  585. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +6 -2
  586. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
  587. package/dist/runtimes/remote-thread-list/empty-thread-core.js +155 -160
  588. package/dist/runtimes/remote-thread-list/empty-thread-core.js.map +1 -1
  589. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +27 -27
  590. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
  591. package/dist/runtimes/remote-thread-list/optimistic-state.js +63 -73
  592. package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
  593. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +46 -43
  594. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  595. package/dist/runtimes/remote-thread-list/remote-thread-state.js +81 -91
  596. package/dist/runtimes/remote-thread-list/remote-thread-state.js.map +1 -1
  597. package/dist/runtimes/remote-thread-list/types.d.ts +65 -61
  598. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  599. package/dist/runtimes/remote-thread-list/types.js +0 -2
  600. package/dist/store/clients/chain-of-thought-client.d.ts +16 -12
  601. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
  602. package/dist/store/clients/chain-of-thought-client.js +24 -15
  603. package/dist/store/clients/chain-of-thought-client.js.map +1 -1
  604. package/dist/store/clients/model-context-client.d.ts +6 -2
  605. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  606. package/dist/store/clients/model-context-client.js +32 -26
  607. package/dist/store/clients/model-context-client.js.map +1 -1
  608. package/dist/store/clients/no-op-composer-client.d.ts +8 -4
  609. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
  610. package/dist/store/clients/no-op-composer-client.js +67 -63
  611. package/dist/store/clients/no-op-composer-client.js.map +1 -1
  612. package/dist/store/clients/runtime-adapter.d.ts +8 -4
  613. package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
  614. package/dist/store/clients/runtime-adapter.js +33 -33
  615. package/dist/store/clients/runtime-adapter.js.map +1 -1
  616. package/dist/store/clients/suggestions.d.ts +12 -8
  617. package/dist/store/clients/suggestions.d.ts.map +1 -1
  618. package/dist/store/clients/suggestions.js +28 -32
  619. package/dist/store/clients/suggestions.js.map +1 -1
  620. package/dist/store/clients/thread-message-client.d.ts +13 -9
  621. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  622. package/dist/store/clients/thread-message-client.js +98 -105
  623. package/dist/store/clients/thread-message-client.js.map +1 -1
  624. package/dist/store/index.d.ts +18 -18
  625. package/dist/store/index.js +6 -8
  626. package/dist/store/internal.d.ts +9 -9
  627. package/dist/store/internal.js +9 -9
  628. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +9 -5
  629. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  630. package/dist/store/runtime-clients/attachment-runtime-client.js +12 -8
  631. package/dist/store/runtime-clients/attachment-runtime-client.js.map +1 -1
  632. package/dist/store/runtime-clients/composer-runtime-client.d.ts +14 -10
  633. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  634. package/dist/store/runtime-clients/composer-runtime-client.js +86 -89
  635. package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
  636. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +9 -5
  637. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  638. package/dist/store/runtime-clients/message-part-runtime-client.js +14 -9
  639. package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
  640. package/dist/store/runtime-clients/message-runtime-client.d.ts +12 -8
  641. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  642. package/dist/store/runtime-clients/message-runtime-client.js +66 -70
  643. package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
  644. package/dist/store/runtime-clients/tap-subscribable.d.ts +6 -2
  645. package/dist/store/runtime-clients/tap-subscribable.d.ts.map +1 -1
  646. package/dist/store/runtime-clients/tap-subscribable.js +14 -10
  647. package/dist/store/runtime-clients/tap-subscribable.js.map +1 -1
  648. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +9 -5
  649. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  650. package/dist/store/runtime-clients/thread-list-item-runtime-client.js +33 -38
  651. package/dist/store/runtime-clients/thread-list-item-runtime-client.js.map +1 -1
  652. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +12 -8
  653. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  654. package/dist/store/runtime-clients/thread-list-runtime-client.js +53 -53
  655. package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
  656. package/dist/store/runtime-clients/thread-runtime-client.d.ts +9 -5
  657. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  658. package/dist/store/runtime-clients/thread-runtime-client.js +93 -85
  659. package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
  660. package/dist/store/scope-registration.d.ts +29 -27
  661. package/dist/store/scope-registration.d.ts.map +1 -1
  662. package/dist/store/scope-registration.js +0 -2
  663. package/dist/store/scopes/attachment.d.ts +23 -19
  664. package/dist/store/scopes/attachment.d.ts.map +1 -1
  665. package/dist/store/scopes/attachment.js +0 -2
  666. package/dist/store/scopes/chain-of-thought.d.ts +36 -33
  667. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
  668. package/dist/store/scopes/chain-of-thought.js +0 -2
  669. package/dist/store/scopes/composer.d.ts +118 -115
  670. package/dist/store/scopes/composer.d.ts.map +1 -1
  671. package/dist/store/scopes/composer.js +0 -2
  672. package/dist/store/scopes/message.d.ts +81 -81
  673. package/dist/store/scopes/message.d.ts.map +1 -1
  674. package/dist/store/scopes/message.js +0 -2
  675. package/dist/store/scopes/model-context.d.ts +14 -10
  676. package/dist/store/scopes/model-context.d.ts.map +1 -1
  677. package/dist/store/scopes/model-context.js +0 -2
  678. package/dist/store/scopes/part.d.ts +49 -39
  679. package/dist/store/scopes/part.d.ts.map +1 -1
  680. package/dist/store/scopes/part.js +0 -2
  681. package/dist/store/scopes/queue-item.d.ts +18 -15
  682. package/dist/store/scopes/queue-item.d.ts.map +1 -1
  683. package/dist/store/scopes/queue-item.js +0 -2
  684. package/dist/store/scopes/suggestion.d.ts +17 -14
  685. package/dist/store/scopes/suggestion.d.ts.map +1 -1
  686. package/dist/store/scopes/suggestion.js +0 -2
  687. package/dist/store/scopes/suggestions.d.ts +18 -14
  688. package/dist/store/scopes/suggestions.d.ts.map +1 -1
  689. package/dist/store/scopes/suggestions.js +0 -2
  690. package/dist/store/scopes/thread-list-item.d.ts +62 -56
  691. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  692. package/dist/store/scopes/thread-list-item.js +0 -2
  693. package/dist/store/scopes/thread.d.ts +151 -149
  694. package/dist/store/scopes/thread.d.ts.map +1 -1
  695. package/dist/store/scopes/thread.js +0 -2
  696. package/dist/store/scopes/threads.d.ts +36 -30
  697. package/dist/store/scopes/threads.d.ts.map +1 -1
  698. package/dist/store/scopes/threads.js +0 -2
  699. package/dist/subscribable/subscribable.d.ts +62 -58
  700. package/dist/subscribable/subscribable.d.ts.map +1 -1
  701. package/dist/subscribable/subscribable.js +196 -220
  702. package/dist/subscribable/subscribable.js.map +1 -1
  703. package/dist/tests/remote-thread-list-test-helpers.d.ts +13 -9
  704. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
  705. package/dist/tests/remote-thread-list-test-helpers.js +49 -42
  706. package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
  707. package/dist/types/attachment.d.ts +35 -32
  708. package/dist/types/attachment.d.ts.map +1 -1
  709. package/dist/types/attachment.js +0 -2
  710. package/dist/types/directive.d.ts +15 -13
  711. package/dist/types/directive.d.ts.map +1 -1
  712. package/dist/types/directive.js +0 -2
  713. package/dist/types/index.d.ts +7 -7
  714. package/dist/types/index.js +0 -2
  715. package/dist/types/message.d.ts +238 -208
  716. package/dist/types/message.d.ts.map +1 -1
  717. package/dist/types/message.js +6 -2
  718. package/dist/types/message.js.map +1 -1
  719. package/dist/types/quote.d.ts +6 -3
  720. package/dist/types/quote.d.ts.map +1 -1
  721. package/dist/types/quote.js +0 -2
  722. package/dist/types/trigger.d.ts +14 -10
  723. package/dist/types/trigger.d.ts.map +1 -1
  724. package/dist/types/trigger.js +0 -2
  725. package/dist/types/unsubscribe.d.ts +4 -1
  726. package/dist/types/unsubscribe.d.ts.map +1 -1
  727. package/dist/types/unsubscribe.js +0 -2
  728. package/dist/utils/composite-context-provider.d.ts +11 -8
  729. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  730. package/dist/utils/composite-context-provider.js +31 -28
  731. package/dist/utils/composite-context-provider.js.map +1 -1
  732. package/dist/utils/id.d.ts +8 -5
  733. package/dist/utils/id.d.ts.map +1 -1
  734. package/dist/utils/id.js +9 -5
  735. package/dist/utils/id.js.map +1 -1
  736. package/dist/utils/json/is-json-equal.d.ts +4 -1
  737. package/dist/utils/json/is-json-equal.d.ts.map +1 -1
  738. package/dist/utils/json/is-json-equal.js +20 -25
  739. package/dist/utils/json/is-json-equal.js.map +1 -1
  740. package/dist/utils/json/is-json.d.ts +9 -5
  741. package/dist/utils/json/is-json.d.ts.map +1 -1
  742. package/dist/utils/json/is-json.js +17 -28
  743. package/dist/utils/json/is-json.js.map +1 -1
  744. package/dist/utils/text.d.ts +6 -2
  745. package/dist/utils/text.d.ts.map +1 -1
  746. package/dist/utils/text.js +6 -3
  747. package/dist/utils/text.js.map +1 -1
  748. package/package.json +12 -12
  749. package/src/index.ts +4 -0
  750. package/src/react/index.ts +18 -0
  751. package/src/react/primitives/generativeUI/GenerativeUI.tsx +182 -0
  752. package/src/react/primitives/message/MessageGroupedParts.tsx +38 -31
  753. package/src/react/primitives/message/MessageParts.tsx +64 -2
  754. package/src/react/providers/TextMessagePartProvider.tsx +3 -0
  755. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +11 -7
  756. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +7 -2
  757. package/src/react/runtimes/cloud/auiV0.ts +1 -1
  758. package/src/react/runtimes/external-message-converter.ts +25 -12
  759. package/src/react/types/MessagePartComponentTypes.ts +34 -0
  760. package/src/react/utils/groupParts.ts +67 -22
  761. package/src/runtime/api/message-part-runtime.ts +26 -0
  762. package/src/runtime/api/thread-list-item-runtime.ts +3 -3
  763. package/src/runtime/api/thread-list-runtime.ts +9 -3
  764. package/src/runtime/base/base-thread-runtime-core.ts +12 -0
  765. package/src/runtime/interfaces/thread-list-runtime-core.ts +4 -1
  766. package/src/runtime/interfaces/thread-runtime-core.ts +13 -5
  767. package/src/runtime/utils/thread-message-like.ts +18 -3
  768. package/src/runtimes/external-store/external-store-adapter.ts +4 -0
  769. package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +4 -1
  770. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +7 -0
  771. package/src/runtimes/local/local-thread-runtime-core.ts +5 -0
  772. package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +4 -0
  773. package/src/runtimes/remote-thread-list/empty-thread-core.ts +4 -0
  774. package/src/store/clients/thread-message-client.ts +3 -0
  775. package/src/store/runtime-clients/message-part-runtime-client.ts +2 -0
  776. package/src/store/runtime-clients/thread-list-runtime-client.ts +2 -2
  777. package/src/store/scopes/part.ts +4 -0
  778. package/src/store/scopes/thread-list-item.ts +1 -1
  779. package/src/store/scopes/threads.ts +1 -1
  780. package/src/tests/RemoteThreadListThreadListRuntimeCore-switchToThread-unarchive.test.ts +88 -0
  781. package/src/tests/external-store-thread-runtime-core.test.ts +83 -0
  782. package/src/tests/groupParts.test.ts +118 -32
  783. package/src/types/index.ts +3 -0
  784. package/src/types/message.ts +56 -1
  785. package/dist/adapters/feedback.js.map +0 -1
  786. package/dist/adapters/index.d.ts.map +0 -1
  787. package/dist/adapters/index.js.map +0 -1
  788. package/dist/adapters/suggestion.js.map +0 -1
  789. package/dist/adapters/thread-history.js.map +0 -1
  790. package/dist/adapters/trigger.js.map +0 -1
  791. package/dist/index.d.ts.map +0 -1
  792. package/dist/index.js.map +0 -1
  793. package/dist/internal.d.ts.map +0 -1
  794. package/dist/internal.js.map +0 -1
  795. package/dist/model-context/registry-handles.js.map +0 -1
  796. package/dist/react/index.d.ts.map +0 -1
  797. package/dist/react/index.js.map +0 -1
  798. package/dist/react/model-context/toolbox.js.map +0 -1
  799. package/dist/react/types/MessagePartComponentTypes.js.map +0 -1
  800. package/dist/react/types/scopes/dataRenderers.js.map +0 -1
  801. package/dist/react/types/scopes/interactables.js.map +0 -1
  802. package/dist/react/types/scopes/tools.js.map +0 -1
  803. package/dist/react/types/store-augmentation.js.map +0 -1
  804. package/dist/runtime/api/bindings.js.map +0 -1
  805. package/dist/runtime/api/paths.js.map +0 -1
  806. package/dist/runtime/interfaces/assistant-runtime-core.js.map +0 -1
  807. package/dist/runtime/interfaces/composer-runtime-core.js.map +0 -1
  808. package/dist/runtime/interfaces/thread-list-runtime-core.js.map +0 -1
  809. package/dist/runtime/interfaces/thread-runtime-core.js.map +0 -1
  810. package/dist/runtime/internal.d.ts.map +0 -1
  811. package/dist/runtime/internal.js.map +0 -1
  812. package/dist/runtime/utils/chat-model-adapter.js.map +0 -1
  813. package/dist/runtimes/external-store/external-store-adapter.js.map +0 -1
  814. package/dist/runtimes/internal.d.ts.map +0 -1
  815. package/dist/runtimes/internal.js.map +0 -1
  816. package/dist/runtimes/local/local-runtime-options.js.map +0 -1
  817. package/dist/runtimes/remote-thread-list/types.js.map +0 -1
  818. package/dist/store/index.d.ts.map +0 -1
  819. package/dist/store/index.js.map +0 -1
  820. package/dist/store/internal.d.ts.map +0 -1
  821. package/dist/store/internal.js.map +0 -1
  822. package/dist/store/scope-registration.js.map +0 -1
  823. package/dist/store/scopes/attachment.js.map +0 -1
  824. package/dist/store/scopes/chain-of-thought.js.map +0 -1
  825. package/dist/store/scopes/composer.js.map +0 -1
  826. package/dist/store/scopes/message.js.map +0 -1
  827. package/dist/store/scopes/model-context.js.map +0 -1
  828. package/dist/store/scopes/part.js.map +0 -1
  829. package/dist/store/scopes/queue-item.js.map +0 -1
  830. package/dist/store/scopes/suggestion.js.map +0 -1
  831. package/dist/store/scopes/suggestions.js.map +0 -1
  832. package/dist/store/scopes/thread-list-item.js.map +0 -1
  833. package/dist/store/scopes/thread.js.map +0 -1
  834. package/dist/store/scopes/threads.js.map +0 -1
  835. package/dist/types/attachment.js.map +0 -1
  836. package/dist/types/directive.js.map +0 -1
  837. package/dist/types/index.d.ts.map +0 -1
  838. package/dist/types/index.js.map +0 -1
  839. package/dist/types/quote.js.map +0 -1
  840. package/dist/types/trigger.js.map +0 -1
  841. package/dist/types/unsubscribe.js.map +0 -1
@@ -1,490 +1,380 @@
1
- import { useEffect, useRef, useState } from "react";
2
- import { createAssistantStreamController, ToolResponse, unstable_toolResultStream, } from "assistant-stream";
3
- import { AssistantMetaTransformStream, } from "assistant-stream/utils";
4
1
  import { isJSONValueEqual } from "../../utils/json/is-json-equal.js";
2
+ import { ToolResponse, createAssistantStreamController, unstable_toolResultStream } from "assistant-stream";
3
+ import { AssistantMetaTransformStream } from "assistant-stream/utils";
4
+ import { useEffect, useRef, useState } from "react";
5
+ //#region src/react/runtimes/useToolInvocations.ts
5
6
  const isArgsTextComplete = (argsText) => {
6
- try {
7
- JSON.parse(argsText);
8
- return true;
9
- }
10
- catch {
11
- return false;
12
- }
7
+ try {
8
+ JSON.parse(argsText);
9
+ return true;
10
+ } catch {
11
+ return false;
12
+ }
13
13
  };
14
14
  const parseArgsText = (argsText) => {
15
- try {
16
- return JSON.parse(argsText);
17
- }
18
- catch {
19
- return undefined;
20
- }
15
+ try {
16
+ return JSON.parse(argsText);
17
+ } catch {
18
+ return;
19
+ }
21
20
  };
22
21
  const isEquivalentCompleteArgsText = (previous, next) => {
23
- const previousValue = parseArgsText(previous);
24
- const nextValue = parseArgsText(next);
25
- if (previousValue === undefined || nextValue === undefined)
26
- return false;
27
- return isJSONValueEqual(previousValue, nextValue);
22
+ const previousValue = parseArgsText(previous);
23
+ const nextValue = parseArgsText(next);
24
+ if (previousValue === void 0 || nextValue === void 0) return false;
25
+ return isJSONValueEqual(previousValue, nextValue);
28
26
  };
29
- export function useToolInvocations({ state, getTools, onResult, setToolStatuses, }) {
30
- /**
31
- * Single source of truth for per-tool-call lifecycle. Keyed by *logical*
32
- * toolCallId (the id the host knows). Restored entries have no controller;
33
- * active entries carry their stream id and rewrite/execution bookkeeping.
34
- */
35
- const entriesRef = useRef(new Map());
36
- /**
37
- * Reverse alias map populated only when a rewrite assigns a synthetic stream
38
- * id to an entry. Identity mappings are implicit via the fallback in
39
- * `getLogicalToolCallId`.
40
- */
41
- const streamToLogicalRef = useRef(new Map());
42
- /**
43
- * Stream ids whose `result` chunks must be dropped before reaching `onResult`.
44
- * Populated when:
45
- * - an argsText rewrite supersedes a stream (the old stream's result, if
46
- * any, is no longer authoritative)
47
- * - `reset()` is called while a pre-resolved tool call has a never-settling
48
- * Promise pending in the executor — the eventual cancellation chunk
49
- * would otherwise be forwarded to a host that has already moved on.
50
- */
51
- const abandonedStreamIdsRef = useRef(new Set());
52
- /**
53
- * Stream ids whose `execute` should be short-circuited in the tool wrapper.
54
- * Tracked by physical stream id (not logical id) so cleanup is keyed off
55
- * the same id the wrapper sees in its context.
56
- */
57
- const skipExecuteStreamIdsRef = useRef(new Set());
58
- const humanInputRef = useRef(new Map());
59
- /**
60
- * In-flight `execute` invocations keyed by physical stream id. Lives outside
61
- * `entriesRef` so `reset()` can drop tool-call state without orphaning the
62
- * cleanup the cancellation `onExecutionEnd` still needs.
63
- */
64
- const executingRef = useRef(new Map());
65
- const acRef = useRef(new AbortController());
66
- const executingCountRef = useRef(0);
67
- const settledResolversRef = useRef([]);
68
- const rewriteCounterRef = useRef(0);
69
- /**
70
- * `true` until the first snapshot has been processed; `reset()` flips it
71
- * back to `true`. Snapshots observed while this is `true` are treated as
72
- * historical: their tool calls are recorded in `entriesRef` as restored
73
- * but no streamCall/execute fires. The next snapshot is processed as live.
74
- */
75
- const pendingRestoreRef = useRef(true);
76
- const getLogicalToolCallId = (streamId) => streamToLogicalRef.current.get(streamId) ?? streamId;
77
- const getWrappedTools = () => {
78
- const tools = getTools();
79
- if (!tools)
80
- return undefined;
81
- return Object.fromEntries(Object.entries(tools).map(([name, tool]) => {
82
- const execute = tool.execute;
83
- const streamCall = tool.streamCall;
84
- const toModelOutput = tool.toModelOutput;
85
- const wrappedTool = {
86
- ...tool,
87
- ...(execute !== undefined && {
88
- execute: (...[args, context]) => {
89
- if (skipExecuteStreamIdsRef.current.has(context.toolCallId)) {
90
- // Pre-resolved on first live observation: never invoke the
91
- // host's execute fn. Returning a never-settling Promise keeps
92
- // the executor's pending entry alive but enqueues nothing.
93
- // The membership in skipExecuteStreamIdsRef must outlive the
94
- // wrapper call so `reset()`'s seeding loop (which reads this
95
- // Set to identify pre-resolved entries needing cancellation
96
- // suppression) sees the entry. Growth is bounded by the
97
- // number of pre-resolved tool calls observed in the session.
98
- return new Promise(() => { });
99
- }
100
- return execute(args, {
101
- ...context,
102
- toolCallId: getLogicalToolCallId(context.toolCallId),
103
- });
104
- },
105
- }),
106
- ...(streamCall !== undefined && {
107
- streamCall: (...[reader, context]) => streamCall(reader, {
108
- ...context,
109
- toolCallId: getLogicalToolCallId(context.toolCallId),
110
- }),
111
- }),
112
- ...(toModelOutput !== undefined && {
113
- toModelOutput: (options) => toModelOutput({
114
- ...options,
115
- toolCallId: getLogicalToolCallId(options.toolCallId),
116
- }),
117
- }),
118
- };
119
- return [name, wrappedTool];
120
- }));
121
- };
122
- const resolveAllSettledResolvers = () => {
123
- const resolvers = settledResolversRef.current;
124
- settledResolversRef.current = [];
125
- // biome-ignore lint/suspicious/useIterableCallbackReturn: forEach callback intentionally has no return
126
- resolvers.forEach((resolve) => resolve());
127
- };
128
- const [controller] = useState(() => {
129
- const [stream, controller] = createAssistantStreamController();
130
- const transform = unstable_toolResultStream(getWrappedTools, () => acRef.current?.signal ?? new AbortController().signal, (toolCallId, payload) => {
131
- const logicalToolCallId = getLogicalToolCallId(toolCallId);
132
- return new Promise((resolve, reject) => {
133
- const previous = humanInputRef.current.get(logicalToolCallId);
134
- if (previous) {
135
- previous.reject(new Error("Human input request was superseded by a new request"));
136
- }
137
- humanInputRef.current.set(logicalToolCallId, { resolve, reject });
138
- setToolStatuses((prev) => ({
139
- ...prev,
140
- [logicalToolCallId]: {
141
- type: "interrupt",
142
- payload: { type: "human", payload },
143
- },
144
- }));
145
- });
146
- }, {
147
- onExecutionStart: (streamId) => {
148
- if (skipExecuteStreamIdsRef.current.has(streamId))
149
- return;
150
- const logicalToolCallId = getLogicalToolCallId(streamId);
151
- const abandoned = abandonedStreamIdsRef.current.has(streamId);
152
- executingRef.current.set(streamId, {
153
- logicalToolCallId,
154
- abandoned,
155
- });
156
- executingCountRef.current++;
157
- if (!abandoned) {
158
- setToolStatuses((prev) => ({
159
- ...prev,
160
- [logicalToolCallId]: { type: "executing" },
161
- }));
162
- }
163
- },
164
- onExecutionEnd: (streamId) => {
165
- const info = executingRef.current.get(streamId);
166
- if (!info)
167
- return;
168
- executingRef.current.delete(streamId);
169
- executingCountRef.current--;
170
- if (!info.abandoned) {
171
- setToolStatuses((prev) => {
172
- const next = { ...prev };
173
- delete next[info.logicalToolCallId];
174
- return next;
175
- });
176
- }
177
- if (executingCountRef.current === 0) {
178
- resolveAllSettledResolvers();
179
- }
180
- },
181
- });
182
- stream
183
- .pipeThrough(transform)
184
- .pipeThrough(new AssistantMetaTransformStream())
185
- .pipeTo(new WritableStream({
186
- write(chunk) {
187
- if (chunk.type !== "result")
188
- return;
189
- const streamId = chunk.meta.toolCallId;
190
- const logicalToolCallId = getLogicalToolCallId(streamId);
191
- const entry = entriesRef.current.get(logicalToolCallId);
192
- // Result chunk from a rewrite-superseded stream: drop and clean
193
- // up the alias.
194
- if (abandonedStreamIdsRef.current.delete(streamId)) {
195
- streamToLogicalRef.current.delete(streamId);
196
- return;
197
- }
198
- // Pre-resolved tool call whose entry has been cleared by
199
- // `reset()`. Both the real result chunk and the post-abort
200
- // cancellation chunk can land here in either order; suppress
201
- // both via the long-lived `skipExecuteStreamIdsRef` marker.
202
- if (!entry && skipExecuteStreamIdsRef.current.has(streamId)) {
203
- return;
204
- }
205
- // The host already set the result (via the live snapshot's
206
- // `setResponse` path). Suppress the executor's redundant emit.
207
- if (entry?.hasResult)
208
- return;
209
- if (streamId !== logicalToolCallId) {
210
- streamToLogicalRef.current.delete(streamId);
211
- }
212
- onResult({
213
- type: "add-tool-result",
214
- toolCallId: logicalToolCallId,
215
- toolName: chunk.meta.toolName,
216
- result: chunk.result,
217
- isError: chunk.isError,
218
- ...(chunk.artifact !== undefined && {
219
- artifact: chunk.artifact,
220
- }),
221
- ...(chunk.modelContent !== undefined && {
222
- modelContent: chunk.modelContent,
223
- }),
224
- });
225
- },
226
- }));
227
- return controller;
228
- });
229
- useEffect(() => {
230
- const hasExecutableTool = (toolName) => {
231
- const tool = getTools()?.[toolName];
232
- return tool?.execute !== undefined || tool?.streamCall !== undefined;
233
- };
234
- const shouldCloseArgsStream = ({ toolName, argsText, hasResult, }) => {
235
- if (hasResult)
236
- return true;
237
- if (!hasExecutableTool(toolName)) {
238
- // Non-executable tools can emit parseable JSON mid-stream; wait for
239
- // the run to settle before closing.
240
- return !state.isRunning && isArgsTextComplete(argsText);
241
- }
242
- return isArgsTextComplete(argsText);
243
- };
244
- const startActiveEntry = (toolCallId, toolName, skipExecute) => {
245
- const toolCallController = controller.addToolCallPart({
246
- toolName,
247
- toolCallId,
248
- });
249
- if (skipExecute) {
250
- skipExecuteStreamIdsRef.current.add(toolCallId);
251
- }
252
- const entry = {
253
- toolName,
254
- controller: toolCallController,
255
- streamId: toolCallId,
256
- argsText: "",
257
- hasResult: false,
258
- argsComplete: false,
259
- };
260
- entriesRef.current.set(toolCallId, entry);
261
- return entry;
262
- };
263
- const restartArgsStream = (entry, toolCallId) => {
264
- if (!entry.controller)
265
- return;
266
- abandonedStreamIdsRef.current.add(entry.streamId);
267
- // The wrapper's execute short-circuit follows the current stream id;
268
- // the abandoned id stays in `skipExecuteStreamIdsRef` if it was there,
269
- // which is harmless and keeps in-flight chunks consistent.
270
- const wasSkipExecute = skipExecuteStreamIdsRef.current.has(entry.streamId);
271
- entry.controller.argsText.close();
272
- const newStreamId = `${toolCallId}:rewrite:${rewriteCounterRef.current++}`;
273
- streamToLogicalRef.current.set(newStreamId, toolCallId);
274
- const newController = controller.addToolCallPart({
275
- toolName: entry.toolName,
276
- toolCallId: newStreamId,
277
- });
278
- if (wasSkipExecute) {
279
- skipExecuteStreamIdsRef.current.add(newStreamId);
280
- }
281
- if (process.env.NODE_ENV !== "production") {
282
- console.warn("started replacement stream tool call", {
283
- toolCallId,
284
- streamToolCallId: newStreamId,
285
- });
286
- }
287
- entry.controller = newController;
288
- entry.streamId = newStreamId;
289
- entry.argsText = "";
290
- entry.argsComplete = false;
291
- };
292
- const processArgsText = (entry, content) => {
293
- if (!entry.controller)
294
- return;
295
- const hasResult = content.result !== undefined;
296
- if (content.argsText !== entry.argsText) {
297
- let shouldWriteArgsText = true;
298
- if (entry.argsComplete) {
299
- if (isEquivalentCompleteArgsText(entry.argsText, content.argsText)) {
300
- entry.argsText = content.argsText;
301
- shouldWriteArgsText = false;
302
- }
303
- else {
304
- const canRestart = !entry.hasResult && !executingRef.current.has(entry.streamId);
305
- if (process.env.NODE_ENV !== "production") {
306
- console.warn(canRestart
307
- ? "argsText updated after controller was closed, restarting tool args stream:"
308
- : "argsText updated after controller was closed:", { previous: entry.argsText, next: content.argsText });
309
- }
310
- if (!canRestart) {
311
- entry.argsText = content.argsText;
312
- shouldWriteArgsText = false;
313
- }
314
- else {
315
- restartArgsStream(entry, content.toolCallId);
316
- }
317
- }
318
- }
319
- else if (!content.argsText.startsWith(entry.argsText)) {
320
- // Mid-stream rewrite. If both texts parse to equivalent JSON it's a
321
- // key-reorder snapshot — accept silently. Otherwise restart.
322
- if (isArgsTextComplete(entry.argsText) &&
323
- isArgsTextComplete(content.argsText) &&
324
- isEquivalentCompleteArgsText(entry.argsText, content.argsText)) {
325
- const shouldClose = shouldCloseArgsStream({
326
- toolName: content.toolName,
327
- argsText: content.argsText,
328
- hasResult,
329
- });
330
- if (shouldClose)
331
- entry.controller.argsText.close();
332
- entry.argsText = content.argsText;
333
- entry.argsComplete = shouldClose;
334
- shouldWriteArgsText = false;
335
- }
336
- else {
337
- if (process.env.NODE_ENV !== "production") {
338
- console.warn("argsText rewrote previous snapshot, restarting tool args stream:", {
339
- previous: entry.argsText,
340
- next: content.argsText,
341
- toolCallId: content.toolCallId,
342
- });
343
- }
344
- restartArgsStream(entry, content.toolCallId);
345
- }
346
- }
347
- if (shouldWriteArgsText) {
348
- const delta = content.argsText.slice(entry.argsText.length);
349
- entry.controller.argsText.append(delta);
350
- const shouldClose = shouldCloseArgsStream({
351
- toolName: content.toolName,
352
- argsText: content.argsText,
353
- hasResult,
354
- });
355
- if (shouldClose)
356
- entry.controller.argsText.close();
357
- entry.argsText = content.argsText;
358
- entry.argsComplete = shouldClose;
359
- }
360
- }
361
- if (!entry.argsComplete) {
362
- const shouldClose = shouldCloseArgsStream({
363
- toolName: content.toolName,
364
- argsText: content.argsText,
365
- hasResult,
366
- });
367
- if (shouldClose) {
368
- entry.controller.argsText.close();
369
- entry.argsText = content.argsText;
370
- entry.argsComplete = true;
371
- }
372
- }
373
- };
374
- const processMessages = (messages) => {
375
- const isRestore = pendingRestoreRef.current;
376
- messages.forEach((message) => {
377
- message.content.forEach((content) => {
378
- if (content.type !== "tool-call")
379
- return;
380
- const existing = entriesRef.current.get(content.toolCallId);
381
- if (isRestore) {
382
- // Don't overwrite an already-active entry (e.g. live tool-call
383
- // observed before this restore snapshot landed). Restore can only
384
- // seed entries the runtime has never seen.
385
- if (!existing?.controller) {
386
- entriesRef.current.set(content.toolCallId, {
387
- toolName: content.toolName,
388
- argsText: content.argsText,
389
- hasResult: content.result !== undefined,
390
- });
391
- }
392
- if (content.messages)
393
- processMessages(content.messages);
394
- return;
395
- }
396
- // Live snapshot.
397
- let entry = existing;
398
- if (entry && !entry.controller) {
399
- // Restored entry observed in a live snapshot. Promote if its
400
- // signature has changed; otherwise treat as still-historical.
401
- const signatureChanged = content.argsText !== entry.argsText ||
402
- (content.result !== undefined) !== entry.hasResult;
403
- if (!signatureChanged) {
404
- if (content.messages)
405
- processMessages(content.messages);
406
- return;
407
- }
408
- entriesRef.current.delete(content.toolCallId);
409
- entry = undefined;
410
- }
411
- if (!entry) {
412
- entry = startActiveEntry(content.toolCallId, content.toolName, content.result !== undefined);
413
- }
414
- processArgsText(entry, content);
415
- if (content.result !== undefined && !entry.hasResult) {
416
- // `entry` is in active phase from this point — either it was
417
- // just created by `startActiveEntry` above, or it pre-existed
418
- // and `processArgsText` preserved (or replaced via rewrite) its
419
- // controller. Narrow once instead of asserting at every use.
420
- const { controller: activeController } = entry;
421
- if (!activeController)
422
- return;
423
- entry.hasResult = true;
424
- entry.argsComplete = true;
425
- activeController.setResponse(new ToolResponse({
426
- result: content.result,
427
- artifact: content.artifact,
428
- isError: content.isError,
429
- ...(content.modelContent !== undefined
430
- ? { modelContent: content.modelContent }
431
- : {}),
432
- }));
433
- activeController.close();
434
- }
435
- if (content.messages)
436
- processMessages(content.messages);
437
- });
438
- });
439
- };
440
- processMessages(state.messages);
441
- pendingRestoreRef.current = false;
442
- }, [state, controller, getTools]);
443
- const abort = () => {
444
- humanInputRef.current.forEach(({ reject }) => {
445
- reject(new Error("Tool execution aborted"));
446
- });
447
- humanInputRef.current.clear();
448
- acRef.current.abort();
449
- acRef.current = new AbortController();
450
- if (executingCountRef.current === 0) {
451
- return Promise.resolve();
452
- }
453
- return new Promise((resolve) => {
454
- settledResolversRef.current.push(resolve);
455
- });
456
- };
457
- return {
458
- reset: () => {
459
- pendingRestoreRef.current = true;
460
- entriesRef.current.clear();
461
- // `skipExecuteStreamIdsRef` is not cleared: it has to outlive `reset()`
462
- // so (a) any wrapper call still inbound through the stream pipeline
463
- // continues to short-circuit `execute`, and (b) the consumer can
464
- // recognize and drop any post-abort cancellation `result` chunks for
465
- // pre-resolved streams whose entries have been cleared. Membership
466
- // grows by one per pre-resolved tool call observed in the session.
467
- void abort().finally(() => {
468
- executingRef.current.clear();
469
- streamToLogicalRef.current.clear();
470
- rewriteCounterRef.current = 0;
471
- });
472
- },
473
- abort,
474
- resume: (toolCallId, payload) => {
475
- const handlers = humanInputRef.current.get(toolCallId);
476
- if (handlers) {
477
- humanInputRef.current.delete(toolCallId);
478
- setToolStatuses((prev) => ({
479
- ...prev,
480
- [toolCallId]: { type: "executing" },
481
- }));
482
- handlers.resolve(payload);
483
- }
484
- else {
485
- throw new Error(`Tool call ${toolCallId} is not waiting for human input`);
486
- }
487
- },
488
- };
27
+ function useToolInvocations({ state, getTools, onResult, setToolStatuses }) {
28
+ /**
29
+ * Single source of truth for per-tool-call lifecycle. Keyed by *logical*
30
+ * toolCallId (the id the host knows). Restored entries have no controller;
31
+ * active entries carry their stream id and rewrite/execution bookkeeping.
32
+ */
33
+ const entriesRef = useRef(/* @__PURE__ */ new Map());
34
+ /**
35
+ * Reverse alias map populated only when a rewrite assigns a synthetic stream
36
+ * id to an entry. Identity mappings are implicit via the fallback in
37
+ * `getLogicalToolCallId`.
38
+ */
39
+ const streamToLogicalRef = useRef(/* @__PURE__ */ new Map());
40
+ /**
41
+ * Stream ids whose `result` chunks must be dropped before reaching `onResult`.
42
+ * Populated when:
43
+ * - an argsText rewrite supersedes a stream (the old stream's result, if
44
+ * any, is no longer authoritative)
45
+ * - `reset()` is called while a pre-resolved tool call has a never-settling
46
+ * Promise pending in the executor — the eventual cancellation chunk
47
+ * would otherwise be forwarded to a host that has already moved on.
48
+ */
49
+ const abandonedStreamIdsRef = useRef(/* @__PURE__ */ new Set());
50
+ /**
51
+ * Stream ids whose `execute` should be short-circuited in the tool wrapper.
52
+ * Tracked by physical stream id (not logical id) so cleanup is keyed off
53
+ * the same id the wrapper sees in its context.
54
+ */
55
+ const skipExecuteStreamIdsRef = useRef(/* @__PURE__ */ new Set());
56
+ const humanInputRef = useRef(/* @__PURE__ */ new Map());
57
+ /**
58
+ * In-flight `execute` invocations keyed by physical stream id. Lives outside
59
+ * `entriesRef` so `reset()` can drop tool-call state without orphaning the
60
+ * cleanup the cancellation `onExecutionEnd` still needs.
61
+ */
62
+ const executingRef = useRef(/* @__PURE__ */ new Map());
63
+ const acRef = useRef(new AbortController());
64
+ const executingCountRef = useRef(0);
65
+ const settledResolversRef = useRef([]);
66
+ const rewriteCounterRef = useRef(0);
67
+ /**
68
+ * `true` until the first snapshot has been processed; `reset()` flips it
69
+ * back to `true`. Snapshots observed while this is `true` are treated as
70
+ * historical: their tool calls are recorded in `entriesRef` as restored
71
+ * but no streamCall/execute fires. The next snapshot is processed as live.
72
+ */
73
+ const pendingRestoreRef = useRef(true);
74
+ const getLogicalToolCallId = (streamId) => streamToLogicalRef.current.get(streamId) ?? streamId;
75
+ const getWrappedTools = () => {
76
+ const tools = getTools();
77
+ if (!tools) return void 0;
78
+ return Object.fromEntries(Object.entries(tools).map(([name, tool]) => {
79
+ const execute = tool.execute;
80
+ const streamCall = tool.streamCall;
81
+ const toModelOutput = tool.toModelOutput;
82
+ return [name, {
83
+ ...tool,
84
+ ...execute !== void 0 && { execute: (...[args, context]) => {
85
+ if (skipExecuteStreamIdsRef.current.has(context.toolCallId)) return new Promise(() => {});
86
+ return execute(args, {
87
+ ...context,
88
+ toolCallId: getLogicalToolCallId(context.toolCallId)
89
+ });
90
+ } },
91
+ ...streamCall !== void 0 && { streamCall: (...[reader, context]) => streamCall(reader, {
92
+ ...context,
93
+ toolCallId: getLogicalToolCallId(context.toolCallId)
94
+ }) },
95
+ ...toModelOutput !== void 0 && { toModelOutput: (options) => toModelOutput({
96
+ ...options,
97
+ toolCallId: getLogicalToolCallId(options.toolCallId)
98
+ }) }
99
+ }];
100
+ }));
101
+ };
102
+ const resolveAllSettledResolvers = () => {
103
+ const resolvers = settledResolversRef.current;
104
+ settledResolversRef.current = [];
105
+ resolvers.forEach((resolve) => resolve());
106
+ };
107
+ const [controller] = useState(() => {
108
+ const [stream, controller] = createAssistantStreamController();
109
+ const transform = unstable_toolResultStream(getWrappedTools, () => acRef.current?.signal ?? new AbortController().signal, (toolCallId, payload) => {
110
+ const logicalToolCallId = getLogicalToolCallId(toolCallId);
111
+ return new Promise((resolve, reject) => {
112
+ const previous = humanInputRef.current.get(logicalToolCallId);
113
+ if (previous) previous.reject(/* @__PURE__ */ new Error("Human input request was superseded by a new request"));
114
+ humanInputRef.current.set(logicalToolCallId, {
115
+ resolve,
116
+ reject
117
+ });
118
+ setToolStatuses((prev) => ({
119
+ ...prev,
120
+ [logicalToolCallId]: {
121
+ type: "interrupt",
122
+ payload: {
123
+ type: "human",
124
+ payload
125
+ }
126
+ }
127
+ }));
128
+ });
129
+ }, {
130
+ onExecutionStart: (streamId) => {
131
+ if (skipExecuteStreamIdsRef.current.has(streamId)) return;
132
+ const logicalToolCallId = getLogicalToolCallId(streamId);
133
+ const abandoned = abandonedStreamIdsRef.current.has(streamId);
134
+ executingRef.current.set(streamId, {
135
+ logicalToolCallId,
136
+ abandoned
137
+ });
138
+ executingCountRef.current++;
139
+ if (!abandoned) setToolStatuses((prev) => ({
140
+ ...prev,
141
+ [logicalToolCallId]: { type: "executing" }
142
+ }));
143
+ },
144
+ onExecutionEnd: (streamId) => {
145
+ const info = executingRef.current.get(streamId);
146
+ if (!info) return;
147
+ executingRef.current.delete(streamId);
148
+ executingCountRef.current--;
149
+ if (!info.abandoned) setToolStatuses((prev) => {
150
+ const next = { ...prev };
151
+ delete next[info.logicalToolCallId];
152
+ return next;
153
+ });
154
+ if (executingCountRef.current === 0) resolveAllSettledResolvers();
155
+ }
156
+ });
157
+ stream.pipeThrough(transform).pipeThrough(new AssistantMetaTransformStream()).pipeTo(new WritableStream({ write(chunk) {
158
+ if (chunk.type !== "result") return;
159
+ const streamId = chunk.meta.toolCallId;
160
+ const logicalToolCallId = getLogicalToolCallId(streamId);
161
+ const entry = entriesRef.current.get(logicalToolCallId);
162
+ if (abandonedStreamIdsRef.current.delete(streamId)) {
163
+ streamToLogicalRef.current.delete(streamId);
164
+ return;
165
+ }
166
+ if (!entry && skipExecuteStreamIdsRef.current.has(streamId)) return;
167
+ if (entry?.hasResult) return;
168
+ if (streamId !== logicalToolCallId) streamToLogicalRef.current.delete(streamId);
169
+ onResult({
170
+ type: "add-tool-result",
171
+ toolCallId: logicalToolCallId,
172
+ toolName: chunk.meta.toolName,
173
+ result: chunk.result,
174
+ isError: chunk.isError,
175
+ ...chunk.artifact !== void 0 && { artifact: chunk.artifact },
176
+ ...chunk.modelContent !== void 0 && { modelContent: chunk.modelContent }
177
+ });
178
+ } }));
179
+ return controller;
180
+ });
181
+ useEffect(() => {
182
+ const hasExecutableTool = (toolName) => {
183
+ const tool = getTools()?.[toolName];
184
+ return tool?.execute !== void 0 || tool?.streamCall !== void 0;
185
+ };
186
+ const shouldCloseArgsStream = ({ toolName, argsText, hasResult }) => {
187
+ if (hasResult) return true;
188
+ if (!hasExecutableTool(toolName)) return !state.isRunning && isArgsTextComplete(argsText);
189
+ return isArgsTextComplete(argsText);
190
+ };
191
+ const startActiveEntry = (toolCallId, toolName, skipExecute) => {
192
+ const toolCallController = controller.addToolCallPart({
193
+ toolName,
194
+ toolCallId
195
+ });
196
+ if (skipExecute) skipExecuteStreamIdsRef.current.add(toolCallId);
197
+ const entry = {
198
+ toolName,
199
+ controller: toolCallController,
200
+ streamId: toolCallId,
201
+ argsText: "",
202
+ hasResult: false,
203
+ argsComplete: false
204
+ };
205
+ entriesRef.current.set(toolCallId, entry);
206
+ return entry;
207
+ };
208
+ const restartArgsStream = (entry, toolCallId) => {
209
+ if (!entry.controller) return;
210
+ abandonedStreamIdsRef.current.add(entry.streamId);
211
+ const wasSkipExecute = skipExecuteStreamIdsRef.current.has(entry.streamId);
212
+ entry.controller.argsText.close();
213
+ const newStreamId = `${toolCallId}:rewrite:${rewriteCounterRef.current++}`;
214
+ streamToLogicalRef.current.set(newStreamId, toolCallId);
215
+ const newController = controller.addToolCallPart({
216
+ toolName: entry.toolName,
217
+ toolCallId: newStreamId
218
+ });
219
+ if (wasSkipExecute) skipExecuteStreamIdsRef.current.add(newStreamId);
220
+ if (process.env.NODE_ENV !== "production") console.warn("started replacement stream tool call", {
221
+ toolCallId,
222
+ streamToolCallId: newStreamId
223
+ });
224
+ entry.controller = newController;
225
+ entry.streamId = newStreamId;
226
+ entry.argsText = "";
227
+ entry.argsComplete = false;
228
+ };
229
+ const processArgsText = (entry, content) => {
230
+ if (!entry.controller) return;
231
+ const hasResult = content.result !== void 0;
232
+ if (content.argsText !== entry.argsText) {
233
+ let shouldWriteArgsText = true;
234
+ if (entry.argsComplete) if (isEquivalentCompleteArgsText(entry.argsText, content.argsText)) {
235
+ entry.argsText = content.argsText;
236
+ shouldWriteArgsText = false;
237
+ } else {
238
+ const canRestart = !entry.hasResult && !executingRef.current.has(entry.streamId);
239
+ if (process.env.NODE_ENV !== "production") console.warn(canRestart ? "argsText updated after controller was closed, restarting tool args stream:" : "argsText updated after controller was closed:", {
240
+ previous: entry.argsText,
241
+ next: content.argsText
242
+ });
243
+ if (!canRestart) {
244
+ entry.argsText = content.argsText;
245
+ shouldWriteArgsText = false;
246
+ } else restartArgsStream(entry, content.toolCallId);
247
+ }
248
+ else if (!content.argsText.startsWith(entry.argsText)) if (isArgsTextComplete(entry.argsText) && isArgsTextComplete(content.argsText) && isEquivalentCompleteArgsText(entry.argsText, content.argsText)) {
249
+ const shouldClose = shouldCloseArgsStream({
250
+ toolName: content.toolName,
251
+ argsText: content.argsText,
252
+ hasResult
253
+ });
254
+ if (shouldClose) entry.controller.argsText.close();
255
+ entry.argsText = content.argsText;
256
+ entry.argsComplete = shouldClose;
257
+ shouldWriteArgsText = false;
258
+ } else {
259
+ if (process.env.NODE_ENV !== "production") console.warn("argsText rewrote previous snapshot, restarting tool args stream:", {
260
+ previous: entry.argsText,
261
+ next: content.argsText,
262
+ toolCallId: content.toolCallId
263
+ });
264
+ restartArgsStream(entry, content.toolCallId);
265
+ }
266
+ if (shouldWriteArgsText) {
267
+ const delta = content.argsText.slice(entry.argsText.length);
268
+ entry.controller.argsText.append(delta);
269
+ const shouldClose = shouldCloseArgsStream({
270
+ toolName: content.toolName,
271
+ argsText: content.argsText,
272
+ hasResult
273
+ });
274
+ if (shouldClose) entry.controller.argsText.close();
275
+ entry.argsText = content.argsText;
276
+ entry.argsComplete = shouldClose;
277
+ }
278
+ }
279
+ if (!entry.argsComplete) {
280
+ if (shouldCloseArgsStream({
281
+ toolName: content.toolName,
282
+ argsText: content.argsText,
283
+ hasResult
284
+ })) {
285
+ entry.controller.argsText.close();
286
+ entry.argsText = content.argsText;
287
+ entry.argsComplete = true;
288
+ }
289
+ }
290
+ };
291
+ const processMessages = (messages) => {
292
+ const isRestore = pendingRestoreRef.current;
293
+ messages.forEach((message) => {
294
+ message.content.forEach((content) => {
295
+ if (content.type !== "tool-call") return;
296
+ const existing = entriesRef.current.get(content.toolCallId);
297
+ if (isRestore) {
298
+ if (!existing?.controller) entriesRef.current.set(content.toolCallId, {
299
+ toolName: content.toolName,
300
+ argsText: content.argsText,
301
+ hasResult: content.result !== void 0
302
+ });
303
+ if (content.messages) processMessages(content.messages);
304
+ return;
305
+ }
306
+ let entry = existing;
307
+ if (entry && !entry.controller) {
308
+ if (!(content.argsText !== entry.argsText || content.result !== void 0 !== entry.hasResult)) {
309
+ if (content.messages) processMessages(content.messages);
310
+ return;
311
+ }
312
+ entriesRef.current.delete(content.toolCallId);
313
+ entry = void 0;
314
+ }
315
+ if (!entry) entry = startActiveEntry(content.toolCallId, content.toolName, content.result !== void 0);
316
+ processArgsText(entry, content);
317
+ if (content.result !== void 0 && !entry.hasResult) {
318
+ const { controller: activeController } = entry;
319
+ if (!activeController) return;
320
+ entry.hasResult = true;
321
+ entry.argsComplete = true;
322
+ activeController.setResponse(new ToolResponse({
323
+ result: content.result,
324
+ artifact: content.artifact,
325
+ isError: content.isError,
326
+ ...content.modelContent !== void 0 ? { modelContent: content.modelContent } : {}
327
+ }));
328
+ activeController.close();
329
+ }
330
+ if (content.messages) processMessages(content.messages);
331
+ });
332
+ });
333
+ };
334
+ processMessages(state.messages);
335
+ pendingRestoreRef.current = false;
336
+ }, [
337
+ state,
338
+ controller,
339
+ getTools
340
+ ]);
341
+ const abort = () => {
342
+ humanInputRef.current.forEach(({ reject }) => {
343
+ reject(/* @__PURE__ */ new Error("Tool execution aborted"));
344
+ });
345
+ humanInputRef.current.clear();
346
+ acRef.current.abort();
347
+ acRef.current = new AbortController();
348
+ if (executingCountRef.current === 0) return Promise.resolve();
349
+ return new Promise((resolve) => {
350
+ settledResolversRef.current.push(resolve);
351
+ });
352
+ };
353
+ return {
354
+ reset: () => {
355
+ pendingRestoreRef.current = true;
356
+ entriesRef.current.clear();
357
+ abort().finally(() => {
358
+ executingRef.current.clear();
359
+ streamToLogicalRef.current.clear();
360
+ rewriteCounterRef.current = 0;
361
+ });
362
+ },
363
+ abort,
364
+ resume: (toolCallId, payload) => {
365
+ const handlers = humanInputRef.current.get(toolCallId);
366
+ if (handlers) {
367
+ humanInputRef.current.delete(toolCallId);
368
+ setToolStatuses((prev) => ({
369
+ ...prev,
370
+ [toolCallId]: { type: "executing" }
371
+ }));
372
+ handlers.resolve(payload);
373
+ } else throw new Error(`Tool call ${toolCallId} is not waiting for human input`);
374
+ }
375
+ };
489
376
  }
377
+ //#endregion
378
+ export { useToolInvocations };
379
+
490
380
  //# sourceMappingURL=useToolInvocations.js.map