@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
@@ -22,6 +22,22 @@ import type {
22
22
  } from "../../types/message";
23
23
  import type { MessageTiming } from "../../types/message";
24
24
 
25
+ type ThreadMessageLikeContentItem = Exclude<
26
+ ThreadMessageLike["content"],
27
+ string
28
+ >[number];
29
+
30
+ const isPendingToolCall = (c: ThreadMessageLikeContentItem): boolean =>
31
+ c.type === "tool-call" && c.result === undefined;
32
+
33
+ const isInterruptedToolCall = (c: ThreadMessageLikeContentItem): boolean => {
34
+ if (c.type !== "tool-call" || c.result !== undefined) return false;
35
+ return (
36
+ c.interrupt != null ||
37
+ (c.approval != null && c.approval.approved === undefined)
38
+ );
39
+ };
40
+
25
41
  export namespace useExternalMessageConverter {
26
42
  export type Message =
27
43
  | (ThreadMessageLike & {
@@ -335,15 +351,16 @@ export const convertExternalMessages = <T extends WeakKey>(
335
351
  const result = chunks.map((message, idx) => {
336
352
  const isLast = idx === chunks.length - 1;
337
353
  const joined = joinExternalMessages(message.outputs);
354
+ const hasInterruptedToolCalls =
355
+ typeof joined.content === "object" &&
356
+ joined.content.some(isInterruptedToolCall);
338
357
  const hasPendingToolCalls =
339
358
  typeof joined.content === "object" &&
340
- joined.content.some(
341
- (c) => c.type === "tool-call" && c.result === undefined,
342
- );
359
+ joined.content.some(isPendingToolCall);
343
360
  const autoStatus = getAutoStatus(
344
361
  isLast,
345
362
  isRunning,
346
- hasPendingToolCalls,
363
+ hasInterruptedToolCalls,
347
364
  hasPendingToolCalls,
348
365
  isLast ? metadata.error : undefined,
349
366
  );
@@ -425,20 +442,16 @@ export const useExternalMessageConverter = <T extends WeakKey>({
425
442
  const isLast = idx === chunks.length - 1;
426
443
 
427
444
  const joined = joinExternalMessages(message.outputs);
428
- const hasSuspendedToolCalls =
445
+ const hasInterruptedToolCalls =
429
446
  typeof joined.content === "object" &&
430
- joined.content.some(
431
- (c) => c.type === "tool-call" && c.result === undefined,
432
- );
447
+ joined.content.some(isInterruptedToolCall);
433
448
  const hasPendingToolCalls =
434
449
  typeof joined.content === "object" &&
435
- joined.content.some(
436
- (c) => c.type === "tool-call" && c.result === undefined,
437
- );
450
+ joined.content.some(isPendingToolCall);
438
451
  const autoStatus = getAutoStatus(
439
452
  isLast,
440
453
  isRunning,
441
- hasSuspendedToolCalls,
454
+ hasInterruptedToolCalls,
442
455
  hasPendingToolCalls,
443
456
  isLast ? state.metadata.error : undefined,
444
457
  );
@@ -3,6 +3,8 @@ import type {
3
3
  MessagePartStatus,
4
4
  DataMessagePart,
5
5
  FileMessagePart,
6
+ GenerativeUIMessagePart,
7
+ GenerativeUISpec,
6
8
  ImageMessagePart,
7
9
  ReasoningMessagePart,
8
10
  SourceMessagePart,
@@ -69,6 +71,14 @@ export type ToolCallMessagePartProps<
69
71
  * paused frontend tool execution.
70
72
  */
71
73
  resume: (payload: unknown) => void;
74
+ /**
75
+ * Responds to a server-side tool approval gate. Only valid while
76
+ * `approval` is set on the part and `approval.approved === undefined`.
77
+ */
78
+ respondToApproval: (response: {
79
+ approved: boolean;
80
+ reason?: string;
81
+ }) => void;
72
82
  };
73
83
 
74
84
  /** Component used to render a tool-call message part. */
@@ -79,3 +89,27 @@ export type ToolCallMessagePartComponent<
79
89
 
80
90
  export type QuoteMessagePartProps = QuoteInfo;
81
91
  export type QuoteMessagePartComponent = ComponentType<QuoteMessagePartProps>;
92
+
93
+ /**
94
+ * The consumer-provided allowlist of components a generative-ui spec is
95
+ * permitted to render. Keys are the component names referenced in the spec
96
+ * (e.g. `"Card"`, `"Button"`); values are the React components.
97
+ *
98
+ * This registry is the security boundary in the same-realm rendering path —
99
+ * any name not present in the registry is rejected with a typed error.
100
+ */
101
+ export type GenerativeUIComponentRegistry = Record<string, ComponentType<any>>;
102
+
103
+ export type GenerativeUIMessagePartProps = MessagePartState &
104
+ GenerativeUIMessagePart;
105
+ export type GenerativeUIMessagePartComponent =
106
+ ComponentType<GenerativeUIMessagePartProps>;
107
+
108
+ export type GenerativeUIRenderProps = {
109
+ /** The JSON spec to render. */
110
+ spec: GenerativeUISpec;
111
+ /** The component allowlist. */
112
+ components: GenerativeUIComponentRegistry;
113
+ /** Optional fallback for unknown component names. */
114
+ Fallback?: ComponentType<{ component: string; props?: unknown }> | undefined;
115
+ };
@@ -1,3 +1,6 @@
1
+ import { isMcpAppUri } from "../../types/message";
2
+ import type { PartState } from "../../store/scopes/part";
3
+
1
4
  /**
2
5
  * Hierarchical adjacent-coalescing grouping for message parts.
3
6
  *
@@ -11,16 +14,71 @@
11
14
  */
12
15
 
13
16
  /**
14
- * Public group key type. Group keys must be prefixed with `group-` so
15
- * that a unified `switch (part.type)` in the renderer can distinguish
16
- * a group key (e.g. `"group-thought"`) from a real part type
17
- * (`"text"`, `"tool-call"`).
17
+ * Symbol attached to memoizable `groupBy` functions (e.g. those returned
18
+ * by {@link groupPartByType}). Carries a string fingerprint of the config
19
+ * so `MessagePrimitive.GroupedParts` can memo the tree on
20
+ * `[parts, memoKey]` across renders — even when the helper call site
21
+ * reconstructs the function each render.
22
+ */
23
+ export const GROUPBY_MEMO_KEY: unique symbol = Symbol.for(
24
+ "@assistant-ui/groupBy.memoKey",
25
+ );
26
+
27
+ /**
28
+ * Synthetic part-type key recognized by {@link groupPartByType}: a
29
+ * tool-call whose `mcp.app.resourceUri` points at an assistant-ui MCP
30
+ * app. Map this key to control how MCP-app tool calls are grouped —
31
+ * separately from regular `"tool-call"` parts.
32
+ */
33
+ type GroupPartType = PartState["type"] | "mcp-app";
34
+
35
+ /**
36
+ * Build a `groupBy` from a `part.type → group-key path` lookup.
37
+ * Parts whose type isn't in the map are left ungrouped. The returned
38
+ * function carries a stable {@link GROUPBY_MEMO_KEY} fingerprint so
39
+ * `<MessagePrimitive.GroupedParts>` can memoize its tree across renders.
40
+ *
41
+ * Special key `"mcp-app"` matches tool-call parts that point at an
42
+ * assistant-ui MCP app resource (`ui://...`) and takes precedence over
43
+ * the `"tool-call"` entry for those parts.
44
+ *
45
+ * @example
46
+ * ```tsx
47
+ * <MessagePrimitive.GroupedParts
48
+ * groupBy={groupPartByType({
49
+ * reasoning: ["group-thought", "group-reasoning"],
50
+ * "tool-call": ["group-thought", "group-tool"],
51
+ * "mcp-app": [],
52
+ * })}
53
+ * >
54
+ * {({ part, children }) => { ... }}
55
+ * </MessagePrimitive.GroupedParts>
56
+ * ```
18
57
  */
19
- export type GroupKey<TKey extends `group-${string}` = `group-${string}`> =
20
- | TKey
21
- | readonly TKey[]
22
- | null
23
- | undefined;
58
+ export const groupPartByType = <TKey extends `group-${string}`>(
59
+ map: Partial<Readonly<Record<GroupPartType, readonly TKey[]>>>,
60
+ ): ((part: PartState) => readonly TKey[]) => {
61
+ const lookup = map as Readonly<Record<string, readonly TKey[] | undefined>>;
62
+ const fn = ((part) => {
63
+ if (
64
+ part.type === "tool-call" &&
65
+ lookup["mcp-app"] !== undefined &&
66
+ isMcpAppUri(part.mcp?.app?.resourceUri)
67
+ ) {
68
+ return lookup["mcp-app"]!;
69
+ }
70
+ return lookup[part.type] ?? [];
71
+ }) as ((part: PartState) => readonly TKey[]) & {
72
+ [GROUPBY_MEMO_KEY]?: string;
73
+ };
74
+ // Sort keys so the fingerprint is insensitive to map insertion order —
75
+ // two maps with the same key/value pairs but different declaration order
76
+ // would otherwise hash differently and invalidate the memo unnecessarily.
77
+ const sortedKeys = Object.keys(map).sort();
78
+ const sortedEntries = sortedKeys.map((k) => [k, map[k as keyof typeof map]]);
79
+ fn[GROUPBY_MEMO_KEY] = `groupPartByType:${JSON.stringify(sortedEntries)}`;
80
+ return fn;
81
+ };
24
82
 
25
83
  export type GroupNode = GroupNodeGroup | GroupNodePart;
26
84
 
@@ -43,19 +101,6 @@ export interface GroupNodePart {
43
101
  readonly nodeKey: string;
44
102
  }
45
103
 
46
- const EMPTY_PATH: readonly string[] = Object.freeze([]);
47
-
48
- /**
49
- * Normalize a `groupBy` return value to a path array.
50
- * `null`/`undefined`/`[]` → `[]` (ungrouped).
51
- * `"foo"` → `["foo"]`. Arrays pass through.
52
- */
53
- export const normalizeGroupKey = (key: GroupKey): readonly string[] => {
54
- if (key == null) return EMPTY_PATH;
55
- if (typeof key === "string") return [key];
56
- return key;
57
- };
58
-
59
104
  interface BuildFrame {
60
105
  key: string;
61
106
  nodeKey: string;
@@ -26,6 +26,7 @@ type MessagePartSnapshotBinding = SubscribableWithState<
26
26
  export type MessagePartRuntime = {
27
27
  addToolResult(result: any | ToolResponse<any>): void;
28
28
  resumeToolCall(payload: unknown): void;
29
+ respondToToolApproval(response: { approved: boolean; reason?: string }): void;
29
30
 
30
31
  readonly path: MessagePartRuntimePath;
31
32
  getState(): MessagePartState;
@@ -48,6 +49,7 @@ export class MessagePartRuntimeImpl implements MessagePartRuntime {
48
49
  protected __internal_bindMethods() {
49
50
  this.addToolResult = this.addToolResult.bind(this);
50
51
  this.resumeToolCall = this.resumeToolCall.bind(this);
52
+ this.respondToToolApproval = this.respondToToolApproval.bind(this);
51
53
  this.getState = this.getState.bind(this);
52
54
  this.subscribe = this.subscribe.bind(this);
53
55
  }
@@ -102,6 +104,30 @@ export class MessagePartRuntimeImpl implements MessagePartRuntime {
102
104
  });
103
105
  }
104
106
 
107
+ public respondToToolApproval(response: {
108
+ approved: boolean;
109
+ reason?: string;
110
+ }) {
111
+ const state = this.contentBinding.getState();
112
+ if (!state) throw new Error("Message part is not available");
113
+
114
+ if (state.type !== "tool-call")
115
+ throw new Error(
116
+ "Tried to respond to tool approval on non-tool message part",
117
+ );
118
+
119
+ if (!state.approval || state.approval.approved !== undefined)
120
+ throw new Error("Tool call has no pending approval");
121
+
122
+ if (!this.threadApi) throw new Error("Thread API is not available");
123
+
124
+ this.threadApi.getState().respondToToolApproval({
125
+ approvalId: state.approval.id,
126
+ approved: response.approved,
127
+ ...(response.reason != null && { reason: response.reason }),
128
+ });
129
+ }
130
+
105
131
  public subscribe(callback: () => void) {
106
132
  return this.contentBinding.subscribe(callback);
107
133
  }
@@ -36,7 +36,7 @@ export type ThreadListItemRuntime = {
36
36
  initialize(): Promise<{ remoteId: string; externalId: string | undefined }>;
37
37
  generateTitle(): Promise<void>;
38
38
 
39
- switchTo(): Promise<void>;
39
+ switchTo(options?: { unarchive?: boolean }): Promise<void>;
40
40
  rename(newTitle: string): Promise<void>;
41
41
  archive(): Promise<void>;
42
42
  unarchive(): Promise<void>;
@@ -89,9 +89,9 @@ export class ThreadListItemRuntimeImpl implements ThreadListItemRuntime {
89
89
  return this._core.getState();
90
90
  }
91
91
 
92
- public switchTo(): Promise<void> {
92
+ public switchTo(options?: { unarchive?: boolean }): Promise<void> {
93
93
  const state = this._core.getState();
94
- return this._threadListBinding.switchToThread(state.id);
94
+ return this._threadListBinding.switchToThread(state.id, options);
95
95
  }
96
96
 
97
97
  public rename(newTitle: string): Promise<void> {
@@ -48,7 +48,10 @@ export type ThreadListRuntime = {
48
48
  getItemByIndex(idx: number): ThreadListItemRuntime;
49
49
  getArchivedItemByIndex(idx: number): ThreadListItemRuntime;
50
50
 
51
- switchToThread(threadId: string): Promise<void>;
51
+ switchToThread(
52
+ threadId: string,
53
+ options?: { unarchive?: boolean },
54
+ ): Promise<void>;
52
55
  switchToNewThread(): Promise<void>;
53
56
 
54
57
  getLoadThreadsPromise(): Promise<void>;
@@ -152,8 +155,11 @@ export class ThreadListRuntimeImpl implements ThreadListRuntime {
152
155
  this.getArchivedItemByIndex = this.getArchivedItemByIndex.bind(this);
153
156
  }
154
157
 
155
- public switchToThread(threadId: string): Promise<void> {
156
- return this._core.switchToThread(threadId);
158
+ public switchToThread(
159
+ threadId: string,
160
+ options?: { unarchive?: boolean },
161
+ ): Promise<void> {
162
+ return this._core.switchToThread(threadId, options);
157
163
  }
158
164
 
159
165
  public switchToNewThread(): Promise<void> {
@@ -15,6 +15,7 @@ import { DefaultThreadComposerRuntimeCore } from "./default-thread-composer-runt
15
15
  import type {
16
16
  AddToolResultOptions,
17
17
  ResumeToolCallOptions,
18
+ RespondToToolApprovalOptions,
18
19
  ThreadSuggestion,
19
20
  SubmitFeedbackOptions,
20
21
  ThreadRuntimeCore,
@@ -59,6 +60,9 @@ export abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {
59
60
  public abstract resumeRun(config: ResumeRunConfig): void;
60
61
  public abstract addToolResult(options: AddToolResultOptions): void;
61
62
  public abstract resumeToolCall(options: ResumeToolCallOptions): void;
63
+ public abstract respondToToolApproval(
64
+ options: RespondToToolApprovalOptions,
65
+ ): void;
62
66
  public abstract cancelRun(): void;
63
67
  public abstract exportExternalState(): any;
64
68
  public abstract importExternalState(state: any): void;
@@ -478,6 +482,14 @@ export abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {
478
482
  }
479
483
  subscribers.add(wrapped);
480
484
 
485
+ // `initialize` latches: replay it (deferred) to subscribers that attach
486
+ // after the thread already initialized, mirroring a BehaviorSubject.
487
+ if (event === "initialize" && this._isInitialized) {
488
+ queueMicrotask(() => {
489
+ if (subscribers.has(wrapped)) wrapped({});
490
+ });
491
+ }
492
+
481
493
  return () => {
482
494
  this._eventSubscribers.get(event)?.delete(wrapped);
483
495
  };
@@ -32,7 +32,10 @@ export type ThreadListRuntimeCore = {
32
32
 
33
33
  getItemById(threadId: string): ThreadListItemCoreState | undefined;
34
34
 
35
- switchToThread(threadId: string): Promise<void>;
35
+ switchToThread(
36
+ threadId: string,
37
+ options?: { unarchive?: boolean },
38
+ ): Promise<void>;
36
39
  switchToNewThread(): Promise<void>;
37
40
 
38
41
  getLoadThreadsPromise(): Promise<void>;
@@ -45,6 +45,12 @@ export type ResumeToolCallOptions = {
45
45
  payload: unknown;
46
46
  };
47
47
 
48
+ export type RespondToToolApprovalOptions = {
49
+ approvalId: string;
50
+ approved: boolean;
51
+ reason?: string;
52
+ };
53
+
48
54
  export type SubmitFeedbackOptions = {
49
55
  messageId: string;
50
56
  type: "negative" | "positive";
@@ -85,11 +91,12 @@ export type ThreadRuntimeEventPayload = {
85
91
  */
86
92
  runEnd: Record<string, never>;
87
93
  /**
88
- * @deprecated State-derivable. This event fires at the initialization
89
- * transition immediately BEFORE the first message is added, so reading state
90
- * inside the handler still sees an empty thread; observe `state.messages`
91
- * becoming non-empty via a regular `subscribe` callback instead. Kept for
92
- * backward compatibility.
94
+ * @deprecated State-derivable. Observe `state.messages` becoming non-empty
95
+ * via a regular `subscribe` callback instead. This event fires once at the
96
+ * initialization transition; subscribers that attach afterwards receive a
97
+ * one-off replay (on a microtask), by which point the thread already has
98
+ * messages, so handler-visible state differs between live and replayed
99
+ * delivery. Kept for backward compatibility.
93
100
  */
94
101
  initialize: Record<string, never>;
95
102
  /**
@@ -136,6 +143,7 @@ export type ThreadRuntimeCore = Readonly<{
136
143
 
137
144
  addToolResult: (options: AddToolResultOptions) => void;
138
145
  resumeToolCall: (options: ResumeToolCallOptions) => void;
146
+ respondToToolApproval: (options: RespondToToolApprovalOptions) => void;
139
147
 
140
148
  speak: (messageId: string) => void;
141
149
  stopSpeaking: () => void;
@@ -14,6 +14,7 @@ import type {
14
14
  ThreadSystemMessage,
15
15
  FileMessagePart,
16
16
  DataMessagePart,
17
+ GenerativeUIMessagePart,
17
18
  Unstable_AudioMessagePart,
18
19
  } from "../../types/message";
19
20
  import type { CompleteAttachment } from "../../types/attachment";
@@ -39,6 +40,7 @@ export type ThreadMessageLike = {
39
40
  | ImageMessagePart
40
41
  | FileMessagePart
41
42
  | DataMessagePart
43
+ | GenerativeUIMessagePart
42
44
  | Unstable_AudioMessagePart
43
45
  | DataPrefixedPart
44
46
  | {
@@ -52,6 +54,13 @@ export type ThreadMessageLike = {
52
54
  readonly isError?: boolean | undefined;
53
55
  readonly parentId?: string | undefined;
54
56
  readonly messages?: readonly ThreadMessage[] | undefined;
57
+ readonly interrupt?: { type: "human"; payload: unknown };
58
+ readonly approval?: {
59
+ readonly id: string;
60
+ readonly approved?: boolean;
61
+ readonly reason?: string;
62
+ readonly isAutomatic?: boolean;
63
+ };
55
64
  }
56
65
  )[];
57
66
  readonly id?: string | undefined;
@@ -105,10 +114,13 @@ export const fromThreadMessageLike = (
105
114
  image,
106
115
  ...rest
107
116
  }: ImageMessagePart): ImageMessagePart | null => {
108
- const match = image.match(
109
- /^data:image\/(png|jpeg|jpg|gif|webp);base64,(.*)$/,
117
+ const dataUri = image.match(
118
+ /^data:image\/(png|jpeg|jpg|gif|webp|svg\+xml);base64,(.*)$/,
110
119
  );
111
- if (match) {
120
+ if (dataUri) {
121
+ return { ...rest, image };
122
+ }
123
+ if (/^(https:\/\/|blob:)/.test(image)) {
112
124
  return { ...rest, image };
113
125
  }
114
126
  console.warn(`Invalid image data format detected`);
@@ -148,6 +160,9 @@ export const fromThreadMessageLike = (
148
160
  case "data":
149
161
  return part;
150
162
 
163
+ case "generative-ui":
164
+ return part;
165
+
151
166
  case "tool-call": {
152
167
  const { parentId, messages, ...basePart } = part;
153
168
  const commonProps = {
@@ -9,6 +9,7 @@ import type { RealtimeVoiceAdapter } from "../../adapters/voice";
9
9
  import type { FeedbackAdapter } from "../../adapters/feedback";
10
10
  import type {
11
11
  AddToolResultOptions,
12
+ RespondToToolApprovalOptions,
12
13
  StartRunConfig,
13
14
  ResumeRunConfig,
14
15
  ThreadSuggestion,
@@ -108,6 +109,9 @@ type ExternalStoreAdapterBase<T> = {
108
109
  onResumeToolCall?:
109
110
  | ((options: { toolCallId: string; payload: unknown }) => void)
110
111
  | undefined;
112
+ onRespondToToolApproval?:
113
+ | ((options: RespondToToolApprovalOptions) => Promise<void> | void)
114
+ | undefined;
111
115
  convertMessage?: ExternalStoreMessageConverter<T> | undefined;
112
116
  adapters?:
113
117
  | {
@@ -168,7 +168,10 @@ export class ExternalStoreThreadListRuntimeCore
168
168
  this._notifySubscribers();
169
169
  }
170
170
 
171
- public async switchToThread(threadId: string): Promise<void> {
171
+ public async switchToThread(
172
+ threadId: string,
173
+ _options?: { unarchive?: boolean },
174
+ ): Promise<void> {
172
175
  if (this._mainThreadId === threadId) return;
173
176
  const onSwitchToThread = this.adapter.onSwitchToThread;
174
177
  if (!onSwitchToThread)
@@ -3,6 +3,7 @@ import type {
3
3
  AddToolResultOptions,
4
4
  ResumeRunConfig,
5
5
  ResumeToolCallOptions,
6
+ RespondToToolApprovalOptions,
6
7
  StartRunConfig,
7
8
  ThreadSuggestion,
8
9
  } from "../../runtime/interfaces/thread-runtime-core";
@@ -372,6 +373,12 @@ export class ExternalStoreThreadRuntimeCore
372
373
  this._store.onResumeToolCall(options);
373
374
  }
374
375
 
376
+ public respondToToolApproval(options: RespondToToolApprovalOptions) {
377
+ if (!this._store.onRespondToToolApproval)
378
+ throw new Error("Runtime does not support tool approvals.");
379
+ this._store.onRespondToToolApproval(options);
380
+ }
381
+
375
382
  public override reset(initialMessages?: readonly ThreadMessageLike[]) {
376
383
  this._lastSyncedMessageIds = new Set();
377
384
  const repo = new MessageRepository();
@@ -9,6 +9,7 @@ import type { LocalRuntimeOptionsBase } from "./local-runtime-options";
9
9
  import type {
10
10
  AddToolResultOptions,
11
11
  ResumeToolCallOptions,
12
+ RespondToToolApprovalOptions,
12
13
  ThreadSuggestion,
13
14
  ThreadRuntimeCore,
14
15
  StartRunConfig,
@@ -535,4 +536,8 @@ export class LocalThreadRuntimeCore
535
536
  public resumeToolCall(_options: ResumeToolCallOptions) {
536
537
  throw new Error("Local runtime does not support resuming tool calls.");
537
538
  }
539
+
540
+ public respondToToolApproval(_options: RespondToToolApprovalOptions) {
541
+ throw new Error("Local runtime does not support tool approvals.");
542
+ }
538
543
  }
@@ -65,6 +65,10 @@ export class ReadonlyThreadRuntimeCore
65
65
  throw READONLY_THREAD_ERROR;
66
66
  }
67
67
 
68
+ respondToToolApproval(): void {
69
+ throw READONLY_THREAD_ERROR;
70
+ }
71
+
68
72
  speak(): void {
69
73
  throw READONLY_THREAD_ERROR;
70
74
  }
@@ -40,6 +40,10 @@ export const EMPTY_THREAD_CORE: ThreadRuntimeCore = {
40
40
  throw EMPTY_THREAD_ERROR;
41
41
  },
42
42
 
43
+ respondToToolApproval() {
44
+ throw EMPTY_THREAD_ERROR;
45
+ },
46
+
43
47
  speak() {
44
48
  throw EMPTY_THREAD_ERROR;
45
49
  },
@@ -38,6 +38,9 @@ const ThreadMessagePartClient = resource(
38
38
  resumeToolCall: () => {
39
39
  throw new Error("Not supported");
40
40
  },
41
+ respondToToolApproval: () => {
42
+ throw new Error("Not supported");
43
+ },
41
44
  };
42
45
  },
43
46
  );
@@ -11,6 +11,8 @@ export const MessagePartClient = resource(
11
11
  getState: () => state,
12
12
  addToolResult: (result) => runtime.addToolResult(result),
13
13
  resumeToolCall: (payload) => runtime.resumeToolCall(payload),
14
+ respondToToolApproval: (response) =>
15
+ runtime.respondToToolApproval(response),
14
16
  __internal_getRuntime: () => runtime,
15
17
  };
16
18
  },
@@ -81,8 +81,8 @@ export const ThreadListClient = resource(
81
81
  : state.threadIds[index]!;
82
82
  return threadItems.get({ key: id });
83
83
  },
84
- switchToThread: async (threadId) => {
85
- await runtime.switchToThread(threadId);
84
+ switchToThread: async (threadId, options) => {
85
+ await runtime.switchToThread(threadId, options);
86
86
  },
87
87
  switchToNewThread: async () => {
88
88
  await runtime.switchToNewThread();
@@ -26,6 +26,10 @@ export type PartMethods = {
26
26
  * This is useful when a tool has requested human input and is waiting for a response.
27
27
  */
28
28
  resumeToolCall(payload: unknown): void;
29
+ /**
30
+ * Respond to a server-side tool approval gate. The approval id is read from the part.
31
+ */
32
+ respondToToolApproval(response: { approved: boolean; reason?: string }): void;
29
33
  __internal_getRuntime?(): MessagePartRuntime;
30
34
  };
31
35
 
@@ -12,7 +12,7 @@ export type ThreadListItemState = {
12
12
 
13
13
  export type ThreadListItemMethods = {
14
14
  getState(): ThreadListItemState;
15
- switchTo(): void;
15
+ switchTo(options?: { unarchive?: boolean }): void;
16
16
  rename(newTitle: string): void;
17
17
  archive(): void;
18
18
  unarchive(): void;
@@ -19,7 +19,7 @@ export type ThreadsState = {
19
19
 
20
20
  export type ThreadsMethods = {
21
21
  getState(): ThreadsState;
22
- switchToThread(threadId: string): void;
22
+ switchToThread(threadId: string, options?: { unarchive?: boolean }): void;
23
23
  switchToNewThread(): void;
24
24
  item(
25
25
  threadIdOrOptions: