@assistant-ui/core 0.3.20 → 0.3.21

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 (905) hide show
  1. package/dist/adapters/attachment.d.ts +42 -34
  2. package/dist/adapters/attachment.d.ts.map +1 -1
  3. package/dist/adapters/attachment.js +51 -21
  4. package/dist/adapters/attachment.js.map +1 -1
  5. package/dist/adapters/directive-formatter.d.ts +1 -3
  6. package/dist/adapters/directive-formatter.d.ts.map +1 -1
  7. package/dist/adapters/feedback.d.ts +6 -7
  8. package/dist/adapters/feedback.d.ts.map +1 -1
  9. package/dist/adapters/index.d.ts +14 -9
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters/index.js +1 -1
  12. package/dist/adapters/speech.d.ts +57 -58
  13. package/dist/adapters/speech.d.ts.map +1 -1
  14. package/dist/adapters/speech.js +16 -2
  15. package/dist/adapters/speech.js.map +1 -1
  16. package/dist/adapters/suggestion.d.ts +14 -16
  17. package/dist/adapters/suggestion.d.ts.map +1 -1
  18. package/dist/adapters/thread-history.d.ts +54 -51
  19. package/dist/adapters/thread-history.d.ts.map +1 -1
  20. package/dist/adapters/trigger.d.ts +7 -9
  21. package/dist/adapters/trigger.d.ts.map +1 -1
  22. package/dist/adapters/voice.d.ts +46 -40
  23. package/dist/adapters/voice.d.ts.map +1 -1
  24. package/dist/adapters/voice.js +17 -3
  25. package/dist/adapters/voice.js.map +1 -1
  26. package/dist/index.d.ts +70 -56
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +6 -6
  29. package/dist/index.js.map +1 -1
  30. package/dist/internal/duplicate-detection.d.ts +0 -2
  31. package/dist/internal/duplicate-detection.d.ts.map +1 -1
  32. package/dist/internal.d.ts +27 -58
  33. package/dist/internal.d.ts.map +1 -0
  34. package/dist/internal.js +8 -6
  35. package/dist/model-context/frame/host.d.ts +19 -21
  36. package/dist/model-context/frame/host.d.ts.map +1 -1
  37. package/dist/model-context/frame/host.js +3 -1
  38. package/dist/model-context/frame/host.js.map +1 -1
  39. package/dist/model-context/frame/provider.d.ts +27 -28
  40. package/dist/model-context/frame/provider.d.ts.map +1 -1
  41. package/dist/model-context/frame/provider.js +6 -0
  42. package/dist/model-context/frame/provider.js.map +1 -1
  43. package/dist/model-context/frame/types.d.ts +19 -21
  44. package/dist/model-context/frame/types.d.ts.map +1 -1
  45. package/dist/model-context/frame/validate.d.ts +3 -0
  46. package/dist/model-context/frame/validate.d.ts.map +1 -0
  47. package/dist/model-context/frame/validate.js +26 -0
  48. package/dist/model-context/frame/validate.js.map +1 -0
  49. package/dist/model-context/interactable-composer-metadata.d.ts +42 -29
  50. package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
  51. package/dist/model-context/interactable-composer-metadata.js +30 -6
  52. package/dist/model-context/interactable-composer-metadata.js.map +1 -1
  53. package/dist/model-context/registry-handles.d.ts +6 -8
  54. package/dist/model-context/registry-handles.d.ts.map +1 -1
  55. package/dist/model-context/registry.d.ts +14 -16
  56. package/dist/model-context/registry.d.ts.map +1 -1
  57. package/dist/model-context/tool-call-text.d.ts +13 -14
  58. package/dist/model-context/tool-call-text.d.ts.map +1 -1
  59. package/dist/model-context/tool.d.ts +10 -11
  60. package/dist/model-context/tool.d.ts.map +1 -1
  61. package/dist/model-context/types.d.ts +32 -34
  62. package/dist/model-context/types.d.ts.map +1 -1
  63. package/dist/react/AssistantProvider.d.ts +6 -8
  64. package/dist/react/AssistantProvider.d.ts.map +1 -1
  65. package/dist/react/AssistantRuntimeProvider.d.ts +23 -25
  66. package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
  67. package/dist/react/RuntimeAdapter.d.ts +2 -5
  68. package/dist/react/RuntimeAdapter.d.ts.map +1 -1
  69. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +24 -18
  70. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  71. package/dist/react/adapters/LocalStorageThreadListAdapter.js +58 -25
  72. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  73. package/dist/react/adapters/TitleGenerationAdapter.d.ts +2 -4
  74. package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
  75. package/dist/react/client/AdaptedRemoteThread.d.ts +5 -7
  76. package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
  77. package/dist/react/client/DataRenderers.d.ts +1 -3
  78. package/dist/react/client/DataRenderers.d.ts.map +1 -1
  79. package/dist/react/client/InMemoryThreadList.d.ts +6 -8
  80. package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
  81. package/dist/react/client/Interactables.d.ts +2 -4
  82. package/dist/react/client/Interactables.d.ts.map +1 -1
  83. package/dist/react/client/Interactables.js +306 -101
  84. package/dist/react/client/Interactables.js.map +1 -1
  85. package/dist/react/client/RemoteThreadList.d.ts +32 -34
  86. package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
  87. package/dist/react/client/RemoteThreadList.js +2 -1
  88. package/dist/react/client/RemoteThreadList.js.map +1 -1
  89. package/dist/react/client/Tools.d.ts +9 -11
  90. package/dist/react/client/Tools.d.ts.map +1 -1
  91. package/dist/react/client/Tools.js +4 -8
  92. package/dist/react/client/Tools.js.map +1 -1
  93. package/dist/react/client/interactable-model-context.d.ts +9 -10
  94. package/dist/react/client/interactable-model-context.d.ts.map +1 -1
  95. package/dist/react/client/interactable-model-context.js +32 -22
  96. package/dist/react/client/interactable-model-context.js.map +1 -1
  97. package/dist/react/index.d.ts +160 -122
  98. package/dist/react/index.d.ts.map +1 -0
  99. package/dist/react/index.js +5 -5
  100. package/dist/react/interactables-legacy/Interactables.d.ts +1 -3
  101. package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
  102. package/dist/react/interactables-legacy/Interactables.js +15 -8
  103. package/dist/react/interactables-legacy/Interactables.js.map +1 -1
  104. package/dist/react/interactables-legacy/interactable-model-context.d.ts +6 -8
  105. package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
  106. package/dist/react/interactables-legacy/interactable-model-context.js +13 -14
  107. package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -1
  108. package/dist/react/interactables-legacy/scopes.d.ts +33 -36
  109. package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
  110. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +6 -8
  111. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
  112. package/dist/react/interactables-legacy/useInteractableState.d.ts +6 -7
  113. package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
  114. package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +23 -13
  115. package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
  116. package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +54 -25
  117. package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
  118. package/dist/react/model-context/define-mcp-toolkit.d.ts +11 -13
  119. package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
  120. package/dist/react/model-context/define-toolkit.d.ts +12 -4
  121. package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
  122. package/dist/react/model-context/external-tool.d.ts +0 -2
  123. package/dist/react/model-context/external-tool.d.ts.map +1 -1
  124. package/dist/react/model-context/human-tool.d.ts +0 -2
  125. package/dist/react/model-context/human-tool.d.ts.map +1 -1
  126. package/dist/react/model-context/interactableTool.d.ts +23 -25
  127. package/dist/react/model-context/interactableTool.d.ts.map +1 -1
  128. package/dist/react/model-context/makeAssistantDataUI.d.ts +4 -6
  129. package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
  130. package/dist/react/model-context/makeAssistantTool.d.ts +4 -6
  131. package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
  132. package/dist/react/model-context/makeAssistantToolUI.d.ts +4 -6
  133. package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
  134. package/dist/react/model-context/provider-tool.d.ts +3 -4
  135. package/dist/react/model-context/provider-tool.d.ts.map +1 -1
  136. package/dist/react/model-context/stub-tool.d.ts +0 -2
  137. package/dist/react/model-context/stub-tool.d.ts.map +1 -1
  138. package/dist/react/model-context/toolbox.d.ts +37 -24
  139. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  140. package/dist/react/model-context/useAssistantContext.d.ts +2 -5
  141. package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
  142. package/dist/react/model-context/useAssistantDataUI.d.ts +5 -7
  143. package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
  144. package/dist/react/model-context/useAssistantInstructions.d.ts +2 -5
  145. package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
  146. package/dist/react/model-context/useAssistantTool.d.ts +8 -11
  147. package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
  148. package/dist/react/model-context/useAssistantToolUI.d.ts +11 -13
  149. package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
  150. package/dist/react/model-context/useAuiToolOverrides.d.ts +2 -3
  151. package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
  152. package/dist/react/model-context/useInlineRender.d.ts +2 -4
  153. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  154. package/dist/react/model-context/useInteractable.d.ts +37 -36
  155. package/dist/react/model-context/useInteractable.d.ts.map +1 -1
  156. package/dist/react/model-context/useInteractableState.d.ts +10 -8
  157. package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
  158. package/dist/react/model-context/useInteractableVersions.d.ts +3 -5
  159. package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
  160. package/dist/react/model-context/useToolArgsStatus.d.ts +5 -6
  161. package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
  162. package/dist/react/primitive-hooks/useActionBarCopy.d.ts +6 -8
  163. package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
  164. package/dist/react/primitive-hooks/useActionBarEdit.d.ts +2 -4
  165. package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
  166. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +4 -6
  167. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
  168. package/dist/react/primitive-hooks/useActionBarReload.d.ts +2 -4
  169. package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
  170. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +2 -4
  171. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
  172. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +2 -4
  173. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
  174. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +2 -4
  175. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
  176. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +2 -4
  177. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
  178. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +3 -5
  179. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
  180. package/dist/react/primitive-hooks/useComposerCancel.d.ts +2 -4
  181. package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
  182. package/dist/react/primitive-hooks/useComposerDictate.d.ts +2 -4
  183. package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
  184. package/dist/react/primitive-hooks/useComposerSend.d.ts +3 -5
  185. package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
  186. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +1 -3
  187. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
  188. package/dist/react/primitive-hooks/useEditComposerSend.d.ts +2 -4
  189. package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
  190. package/dist/react/primitive-hooks/useMessageBranching.d.ts +4 -6
  191. package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
  192. package/dist/react/primitive-hooks/useMessageError.d.ts +0 -2
  193. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
  194. package/dist/react/primitive-hooks/useMessageReload.d.ts +2 -4
  195. package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
  196. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +6 -8
  197. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
  198. package/dist/react/primitive-hooks/useSuggestionTrigger.js +4 -4
  199. package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
  200. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +0 -2
  201. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
  202. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +0 -2
  203. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
  204. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +1 -3
  205. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
  206. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +1 -3
  207. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
  208. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +1 -3
  209. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
  210. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +1 -3
  211. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
  212. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +2 -4
  213. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
  214. package/dist/react/primitive-hooks/useThreadListNew.d.ts +1 -3
  215. package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
  216. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +0 -2
  217. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
  218. package/dist/react/primitive-hooks/useThreadMessages.d.ts +1 -3
  219. package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
  220. package/dist/react/primitive-hooks/useVoice.d.ts +5 -7
  221. package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
  222. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +25 -26
  223. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
  224. package/dist/react/primitives/composer/ComposerAttachments.d.ts +22 -23
  225. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  226. package/dist/react/primitives/composer/ComposerIf.d.ts +10 -9
  227. package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
  228. package/dist/react/primitives/composer/ComposerQueue.d.ts +11 -14
  229. package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
  230. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +26 -28
  231. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
  232. package/dist/react/primitives/generativeUI/GenerativeUI.js +16 -6
  233. package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
  234. package/dist/react/primitives/message/MessageAttachments.d.ts +26 -23
  235. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  236. package/dist/react/primitives/message/MessageAttachments.js +14 -15
  237. package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
  238. package/dist/react/primitives/message/MessageGroupedParts.d.ts +120 -117
  239. package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
  240. package/dist/react/primitives/message/MessageGroupedParts.js +3 -3
  241. package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
  242. package/dist/react/primitives/message/MessageParts.d.ts +199 -185
  243. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  244. package/dist/react/primitives/message/MessageParts.js +124 -82
  245. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  246. package/dist/react/primitives/message/MessageQuote.d.ts +6 -8
  247. package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
  248. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +2 -4
  249. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
  250. package/dist/react/primitives/part/PartMessages.d.ts +13 -15
  251. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  252. package/dist/react/primitives/thread/ThreadMessages.d.ts +54 -56
  253. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  254. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +20 -21
  255. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
  256. package/dist/react/primitives/thread/ThreadSuggestions.js +24 -5
  257. package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
  258. package/dist/react/primitives/threadList/ThreadListItems.d.ts +22 -23
  259. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  260. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +4 -6
  261. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
  262. package/dist/react/providers/AttachmentByIndexProvider.d.ts +3 -5
  263. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
  264. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +3 -5
  265. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
  266. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +2 -4
  267. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
  268. package/dist/react/providers/MessageByIdProvider.d.ts +2 -4
  269. package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
  270. package/dist/react/providers/MessageByIndexProvider.d.ts +2 -4
  271. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
  272. package/dist/react/providers/PartByIndexProvider.d.ts +2 -4
  273. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
  274. package/dist/react/providers/QueueItemByIndexProvider.d.ts +2 -4
  275. package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
  276. package/dist/react/providers/ReadonlyThreadProvider.d.ts +5 -7
  277. package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
  278. package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
  279. package/dist/react/providers/SuggestionByIndexProvider.d.ts +2 -4
  280. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
  281. package/dist/react/providers/TextMessagePartProvider.d.ts +3 -5
  282. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
  283. package/dist/react/providers/TextMessagePartProvider.js +5 -1
  284. package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
  285. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +3 -5
  286. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
  287. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +3 -6
  288. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  289. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +209 -219
  290. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  291. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +53 -39
  292. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  293. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +185 -196
  294. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  295. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +13 -4
  296. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  297. package/dist/react/runtimes/RemoteThreadResource.d.ts +14 -19
  298. package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
  299. package/dist/react/runtimes/RemoteThreadResource.js +3 -1
  300. package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
  301. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +8 -9
  302. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
  303. package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +9 -11
  304. package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
  305. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +4 -5
  306. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
  307. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js +9 -2
  308. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js.map +1 -1
  309. package/dist/react/runtimes/assistant-transport/runManager.d.ts +7 -9
  310. package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
  311. package/dist/react/runtimes/assistant-transport/runManager.js +4 -1
  312. package/dist/react/runtimes/assistant-transport/runManager.js.map +1 -1
  313. package/dist/react/runtimes/assistant-transport/types.d.ts +106 -100
  314. package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
  315. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +3 -5
  316. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
  317. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js +17 -6
  318. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
  319. package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +2 -4
  320. package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
  321. package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +1 -3
  322. package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
  323. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +5 -7
  324. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  325. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +410 -213
  326. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  327. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +14 -16
  328. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  329. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +8 -4
  330. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
  331. package/dist/react/runtimes/cloud/auiV0.d.ts +136 -123
  332. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  333. package/dist/react/runtimes/cloud/auiV0.js +60 -9
  334. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  335. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +9 -10
  336. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
  337. package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +4 -5
  338. package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
  339. package/dist/react/runtimes/cloud/sdkIdentity.d.ts +1 -3
  340. package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -1
  341. package/dist/react/runtimes/cloud/sdkIdentity.js +1 -1
  342. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +2 -4
  343. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  344. package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +8 -9
  345. package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  346. package/dist/react/runtimes/createMessageConverter.d.ts +14 -17
  347. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
  348. package/dist/react/runtimes/createMessageConverter.js.map +1 -1
  349. package/dist/react/runtimes/createRuntimeExtras.d.ts +11 -13
  350. package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
  351. package/dist/react/runtimes/external-message-converter.d.ts +14 -18
  352. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  353. package/dist/react/runtimes/external-store-history-copy.d.ts +25 -0
  354. package/dist/react/runtimes/external-store-history-copy.d.ts.map +1 -0
  355. package/dist/react/runtimes/external-store-history-copy.js +148 -0
  356. package/dist/react/runtimes/external-store-history-copy.js.map +1 -0
  357. package/dist/react/runtimes/useExternalStoreRuntime.d.ts +2 -4
  358. package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
  359. package/dist/react/runtimes/useExternalStoreRuntime.js +72 -35
  360. package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
  361. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +1 -3
  362. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
  363. package/dist/react/runtimes/useLocalRuntime.d.ts +26 -37
  364. package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
  365. package/dist/react/runtimes/useLocalRuntime.js +142 -34
  366. package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
  367. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +2 -4
  368. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  369. package/dist/react/runtimes/useRuntimeAdapters.d.ts +1 -3
  370. package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
  371. package/dist/react/runtimes/useStreamingTiming.d.ts +3 -5
  372. package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
  373. package/dist/react/types/MessagePartComponentTypes.d.ts +46 -43
  374. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  375. package/dist/react/types/scopes/dataRenderers.d.ts +8 -11
  376. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
  377. package/dist/react/types/scopes/interactables.d.ts +50 -49
  378. package/dist/react/types/scopes/interactables.d.ts.map +1 -1
  379. package/dist/react/types/scopes/tools.d.ts +17 -19
  380. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  381. package/dist/react/types/store-augmentation.d.ts +10 -11
  382. package/dist/react/types/store-augmentation.d.ts.map +1 -1
  383. package/dist/react/utils/getMessageQuote.d.ts +5 -6
  384. package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
  385. package/dist/react/utils/groupParts.d.ts +28 -29
  386. package/dist/react/utils/groupParts.d.ts.map +1 -1
  387. package/dist/react/utils/useJSONEqual.d.ts +1 -3
  388. package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
  389. package/dist/react/utils/useJSONSchemaDependency.d.ts +2 -4
  390. package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
  391. package/dist/runtime/api/assistant-runtime.d.ts +26 -28
  392. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  393. package/dist/runtime/api/attachment-runtime.d.ts +46 -43
  394. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  395. package/dist/runtime/api/attachment-runtime.js.map +1 -1
  396. package/dist/runtime/api/bindings.d.ts +31 -30
  397. package/dist/runtime/api/bindings.d.ts.map +1 -1
  398. package/dist/runtime/api/composer-runtime.d.ts +207 -193
  399. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  400. package/dist/runtime/api/composer-runtime.js +4 -0
  401. package/dist/runtime/api/composer-runtime.js.map +1 -1
  402. package/dist/runtime/api/message-part-runtime.d.ts +28 -26
  403. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  404. package/dist/runtime/api/message-part-runtime.js +22 -0
  405. package/dist/runtime/api/message-part-runtime.js.map +1 -1
  406. package/dist/runtime/api/message-runtime.d.ts +87 -84
  407. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  408. package/dist/runtime/api/message-runtime.js +1 -1
  409. package/dist/runtime/api/message-runtime.js.map +1 -1
  410. package/dist/runtime/api/paths.d.ts +48 -50
  411. package/dist/runtime/api/paths.d.ts.map +1 -1
  412. package/dist/runtime/api/thread-list-item-runtime.d.ts +64 -66
  413. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  414. package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
  415. package/dist/runtime/api/thread-list-runtime.d.ts +73 -76
  416. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  417. package/dist/runtime/api/thread-list-runtime.js.map +1 -1
  418. package/dist/runtime/api/thread-runtime.d.ts +299 -300
  419. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  420. package/dist/runtime/api/thread-runtime.js +2 -1
  421. package/dist/runtime/api/thread-runtime.js.map +1 -1
  422. package/dist/runtime/base/base-assistant-runtime-core.d.ts +8 -10
  423. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
  424. package/dist/runtime/base/base-composer-runtime-core.d.ts +149 -99
  425. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  426. package/dist/runtime/base/base-composer-runtime-core.js +400 -122
  427. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  428. package/dist/runtime/base/base-thread-runtime-core.d.ts +120 -108
  429. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  430. package/dist/runtime/base/base-thread-runtime-core.js +109 -41
  431. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  432. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +29 -29
  433. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  434. package/dist/runtime/base/default-edit-composer-runtime-core.js +10 -1
  435. package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
  436. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +27 -29
  437. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  438. package/dist/runtime/base/default-thread-composer-runtime-core.js +21 -6
  439. package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
  440. package/dist/runtime/branch/external-thread-branch-adapter.d.ts +14 -16
  441. package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
  442. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +7 -9
  443. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
  444. package/dist/runtime/interfaces/composer-runtime-core.d.ts +88 -72
  445. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  446. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +63 -65
  447. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  448. package/dist/runtime/interfaces/thread-runtime-core.d.ts +210 -197
  449. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  450. package/dist/runtime/internal.d.ts +25 -20
  451. package/dist/runtime/internal.d.ts.map +1 -0
  452. package/dist/runtime/queue/external-thread-queue-adapter.d.ts +35 -37
  453. package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
  454. package/dist/runtime/queue/message-queue.d.ts +29 -31
  455. package/dist/runtime/queue/message-queue.d.ts.map +1 -1
  456. package/dist/runtime/queue/message-queue.js +1 -1
  457. package/dist/runtime/queue/queue-item.d.ts +5 -7
  458. package/dist/runtime/queue/queue-item.d.ts.map +1 -1
  459. package/dist/runtime/utils/abortable-thread-load.d.ts +7 -8
  460. package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
  461. package/dist/runtime/utils/attachment-add-operations.d.ts +13 -11
  462. package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
  463. package/dist/runtime/utils/attachment-add-operations.js +24 -2
  464. package/dist/runtime/utils/attachment-add-operations.js.map +1 -1
  465. package/dist/runtime/utils/attachment-send-operations.d.ts +12 -0
  466. package/dist/runtime/utils/attachment-send-operations.d.ts.map +1 -0
  467. package/dist/runtime/utils/attachment-send-operations.js +34 -0
  468. package/dist/runtime/utils/attachment-send-operations.js.map +1 -0
  469. package/dist/runtime/utils/auto-status.d.ts +4 -5
  470. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  471. package/dist/runtime/utils/auto-status.js +3 -5
  472. package/dist/runtime/utils/auto-status.js.map +1 -1
  473. package/dist/runtime/utils/chat-model-adapter.d.ts +26 -27
  474. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  475. package/dist/runtime/utils/external-message-conversion.d.ts +32 -32
  476. package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
  477. package/dist/runtime/utils/external-message-conversion.js +3 -3
  478. package/dist/runtime/utils/external-message-conversion.js.map +1 -1
  479. package/dist/runtime/utils/external-store-message.d.ts +2 -4
  480. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  481. package/dist/runtime/utils/message-repository-session.d.ts +21 -23
  482. package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
  483. package/dist/runtime/utils/message-repository.d.ts +50 -51
  484. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  485. package/dist/runtime/utils/message-repository.js +8 -7
  486. package/dist/runtime/utils/message-repository.js.map +1 -1
  487. package/dist/runtime/utils/pending-tool-calls.d.ts +10 -11
  488. package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
  489. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +6 -8
  490. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
  491. package/dist/runtime/utils/runtime-extras-brand.d.ts +4 -6
  492. package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
  493. package/dist/runtime/utils/stored-message-parts.d.ts +5 -5
  494. package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -1
  495. package/dist/runtime/utils/stored-message-parts.js +22 -2
  496. package/dist/runtime/utils/stored-message-parts.js.map +1 -1
  497. package/dist/runtime/utils/streaming-timing.d.ts +19 -21
  498. package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
  499. package/dist/runtime/utils/thread-message-like.d.ts +36 -32
  500. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  501. package/dist/runtime/utils/thread-message-like.js +16 -6
  502. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  503. package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +4 -5
  504. package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
  505. package/dist/runtime/utils/thread-runtime-lifecycle.js +31 -4
  506. package/dist/runtime/utils/thread-runtime-lifecycle.js.map +1 -1
  507. package/dist/runtime/utils/tool-call-tree.d.ts +6 -8
  508. package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
  509. package/dist/runtime/utils/tool-interactions.d.ts +10 -0
  510. package/dist/runtime/utils/tool-interactions.d.ts.map +1 -0
  511. package/dist/runtime/utils/tool-interactions.js +92 -0
  512. package/dist/runtime/utils/tool-interactions.js.map +1 -0
  513. package/dist/runtimes/assistant-transport/utils.d.ts +0 -2
  514. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
  515. package/dist/runtimes/external-store/external-store-adapter.d.ts +215 -198
  516. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  517. package/dist/runtimes/external-store/external-store-runtime-core.d.ts +5 -6
  518. package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
  519. package/dist/runtimes/external-store/external-store-runtime-core.js +4 -1
  520. package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
  521. package/dist/runtimes/external-store/external-store-shared-options.d.ts +1 -3
  522. package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
  523. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +38 -40
  524. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  525. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +2 -2
  526. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
  527. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +117 -124
  528. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  529. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +44 -14
  530. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  531. package/dist/runtimes/external-store/thread-message-converter.d.ts +3 -5
  532. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
  533. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +94 -95
  534. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
  535. package/dist/runtimes/inert/InertThreadRuntimeCore.js +3 -0
  536. package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
  537. package/dist/runtimes/internal.d.ts +20 -16
  538. package/dist/runtimes/internal.d.ts.map +1 -0
  539. package/dist/runtimes/local/local-runtime-core.d.ts +6 -8
  540. package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
  541. package/dist/runtimes/local/local-runtime-options.d.ts +40 -42
  542. package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
  543. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +40 -42
  544. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
  545. package/dist/runtimes/local/local-thread-runtime-core.d.ts +93 -97
  546. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  547. package/dist/runtimes/local/local-thread-runtime-core.js +178 -31
  548. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  549. package/dist/runtimes/local/should-continue.d.ts +1 -3
  550. package/dist/runtimes/local/should-continue.d.ts.map +1 -1
  551. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +76 -53
  552. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
  553. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +28 -1
  554. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
  555. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +11 -13
  556. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
  557. package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +2 -4
  558. package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
  559. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +1 -3
  560. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
  561. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +33 -29
  562. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
  563. package/dist/runtimes/remote-thread-list/optimistic-state.js +8 -3
  564. package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
  565. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +44 -46
  566. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  567. package/dist/runtimes/remote-thread-list/remote-thread-state.js +1 -1
  568. package/dist/runtimes/remote-thread-list/title-generation.d.ts +25 -26
  569. package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
  570. package/dist/runtimes/remote-thread-list/title.d.ts +3 -5
  571. package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
  572. package/dist/runtimes/remote-thread-list/types.d.ts +111 -112
  573. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  574. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +144 -145
  575. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  576. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +22 -7
  577. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
  578. package/dist/store/clients/chain-of-thought-client.d.ts +7 -9
  579. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
  580. package/dist/store/clients/external-thread.d.ts +53 -54
  581. package/dist/store/clients/external-thread.d.ts.map +1 -1
  582. package/dist/store/clients/external-thread.js +1256 -731
  583. package/dist/store/clients/external-thread.js.map +1 -1
  584. package/dist/store/clients/model-context-client.d.ts +1 -3
  585. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  586. package/dist/store/clients/no-op-composer-client.d.ts +2 -4
  587. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
  588. package/dist/store/clients/no-op-composer-client.js +3 -1
  589. package/dist/store/clients/no-op-composer-client.js.map +1 -1
  590. package/dist/store/clients/runtime-adapter.d.ts +1 -3
  591. package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
  592. package/dist/store/clients/single-thread-list.d.ts +3 -4
  593. package/dist/store/clients/single-thread-list.d.ts.map +1 -1
  594. package/dist/store/clients/submission-message.d.ts +8 -0
  595. package/dist/store/clients/submission-message.d.ts.map +1 -0
  596. package/dist/store/clients/submission-message.js +22 -0
  597. package/dist/store/clients/submission-message.js.map +1 -0
  598. package/dist/store/clients/suggestions.d.ts +5 -7
  599. package/dist/store/clients/suggestions.d.ts.map +1 -1
  600. package/dist/store/clients/thread-message-client.d.ts +10 -9
  601. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  602. package/dist/store/clients/thread-message-client.js +81 -82
  603. package/dist/store/clients/thread-message-client.js.map +1 -1
  604. package/dist/store/clients/thread-selection-events.d.ts +0 -2
  605. package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
  606. package/dist/store/clients/thread-tasks.d.ts +4 -6
  607. package/dist/store/clients/thread-tasks.d.ts.map +1 -1
  608. package/dist/store/env.d.ts +0 -2
  609. package/dist/store/env.d.ts.map +1 -1
  610. package/dist/store/index.d.ts +33 -36
  611. package/dist/store/index.d.ts.map +1 -0
  612. package/dist/store/index.js +5 -5
  613. package/dist/store/internal.d.ts +12 -12
  614. package/dist/store/internal.d.ts.map +1 -0
  615. package/dist/store/internal.js +2 -2
  616. package/dist/store/primitive-predicates.d.ts +3 -4
  617. package/dist/store/primitive-predicates.d.ts.map +1 -1
  618. package/dist/store/primitive-predicates.js +9 -4
  619. package/dist/store/primitive-predicates.js.map +1 -1
  620. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +3 -5
  621. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  622. package/dist/store/runtime-clients/composer-runtime-client.d.ts +10 -12
  623. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  624. package/dist/store/runtime-clients/composer-runtime-client.js +65 -62
  625. package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
  626. package/dist/store/runtime-clients/handle-runtime-action.d.ts +0 -2
  627. package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
  628. package/dist/store/runtime-clients/handle-thread-list-action.d.ts +0 -2
  629. package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
  630. package/dist/store/runtime-clients/liveRef.d.ts +1 -3
  631. package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
  632. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +3 -5
  633. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  634. package/dist/store/runtime-clients/message-part-runtime-client.js +26 -16
  635. package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
  636. package/dist/store/runtime-clients/message-runtime-client.d.ts +9 -9
  637. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  638. package/dist/store/runtime-clients/message-runtime-client.js +121 -113
  639. package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
  640. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +4 -6
  641. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  642. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +5 -7
  643. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  644. package/dist/store/runtime-clients/thread-runtime-client.d.ts +3 -5
  645. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  646. package/dist/store/runtime-clients/thread-runtime-client.js +221 -158
  647. package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
  648. package/dist/store/runtime-clients/useSubscribable.d.ts +2 -4
  649. package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
  650. package/dist/store/scope-registration.d.ts +28 -29
  651. package/dist/store/scope-registration.d.ts.map +1 -1
  652. package/dist/store/scopes/attachment.d.ts +15 -17
  653. package/dist/store/scopes/attachment.d.ts.map +1 -1
  654. package/dist/store/scopes/chain-of-thought.d.ts +28 -29
  655. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
  656. package/dist/store/scopes/composer.d.ts +141 -128
  657. package/dist/store/scopes/composer.d.ts.map +1 -1
  658. package/dist/store/scopes/message.d.ts +114 -107
  659. package/dist/store/scopes/message.d.ts.map +1 -1
  660. package/dist/store/scopes/model-context.d.ts +7 -9
  661. package/dist/store/scopes/model-context.d.ts.map +1 -1
  662. package/dist/store/scopes/part.d.ts +49 -45
  663. package/dist/store/scopes/part.d.ts.map +1 -1
  664. package/dist/store/scopes/queue-item.d.ts +18 -20
  665. package/dist/store/scopes/queue-item.d.ts.map +1 -1
  666. package/dist/store/scopes/suggestion.d.ts +10 -12
  667. package/dist/store/scopes/suggestion.d.ts.map +1 -1
  668. package/dist/store/scopes/suggestions.d.ts +13 -15
  669. package/dist/store/scopes/suggestions.d.ts.map +1 -1
  670. package/dist/store/scopes/task.d.ts +23 -25
  671. package/dist/store/scopes/task.d.ts.map +1 -1
  672. package/dist/store/scopes/thread-list-item.d.ts +63 -65
  673. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  674. package/dist/store/scopes/thread.d.ts +192 -194
  675. package/dist/store/scopes/thread.d.ts.map +1 -1
  676. package/dist/store/scopes/threads.d.ts +45 -47
  677. package/dist/store/scopes/threads.d.ts.map +1 -1
  678. package/dist/subscribable/subscribable.d.ts +58 -53
  679. package/dist/subscribable/subscribable.d.ts.map +1 -1
  680. package/dist/subscribable/subscribable.js +35 -7
  681. package/dist/subscribable/subscribable.js.map +1 -1
  682. package/dist/types/attachment.d.ts +26 -27
  683. package/dist/types/attachment.d.ts.map +1 -1
  684. package/dist/types/augmentations.d.ts +4 -4
  685. package/dist/types/augmentations.d.ts.map +1 -1
  686. package/dist/types/directive.d.ts +11 -13
  687. package/dist/types/directive.d.ts.map +1 -1
  688. package/dist/types/error.d.ts +7 -8
  689. package/dist/types/error.d.ts.map +1 -1
  690. package/dist/types/index.d.ts +7 -7
  691. package/dist/types/index.d.ts.map +1 -0
  692. package/dist/types/message.d.ts +322 -284
  693. package/dist/types/message.d.ts.map +1 -1
  694. package/dist/types/message.js.map +1 -1
  695. package/dist/types/quote.d.ts +2 -4
  696. package/dist/types/quote.d.ts.map +1 -1
  697. package/dist/types/trigger.d.ts +8 -10
  698. package/dist/types/trigger.d.ts.map +1 -1
  699. package/dist/types/unsubscribe.d.ts +0 -2
  700. package/dist/types/unsubscribe.d.ts.map +1 -1
  701. package/dist/utils/abortable-iterable.d.ts +0 -2
  702. package/dist/utils/abortable-iterable.d.ts.map +1 -1
  703. package/dist/utils/composite-context-provider.d.ts +8 -11
  704. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  705. package/dist/utils/data-url.d.ts +10 -12
  706. package/dist/utils/data-url.d.ts.map +1 -1
  707. package/dist/utils/getGroupStatus.d.ts +17 -18
  708. package/dist/utils/getGroupStatus.d.ts.map +1 -1
  709. package/dist/utils/id.d.ts +0 -2
  710. package/dist/utils/id.d.ts.map +1 -1
  711. package/dist/utils/image-media-type.d.ts +0 -2
  712. package/dist/utils/image-media-type.d.ts.map +1 -1
  713. package/dist/utils/invoke-user-callback.d.ts +0 -2
  714. package/dist/utils/invoke-user-callback.d.ts.map +1 -1
  715. package/dist/utils/json/is-json-equal.d.ts +0 -2
  716. package/dist/utils/json/is-json-equal.d.ts.map +1 -1
  717. package/dist/utils/json/is-json.d.ts +1 -3
  718. package/dist/utils/json/is-json.d.ts.map +1 -1
  719. package/dist/utils/json/stable-stringify-tool-args.d.ts +1 -3
  720. package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
  721. package/dist/utils/normalizePartStatus.d.ts +2 -3
  722. package/dist/utils/normalizePartStatus.d.ts.map +1 -1
  723. package/dist/utils/normalizePartStatus.js +3 -2
  724. package/dist/utils/normalizePartStatus.js.map +1 -1
  725. package/dist/utils/notify-event-listeners.d.ts +1 -2
  726. package/dist/utils/notify-event-listeners.d.ts.map +1 -1
  727. package/dist/utils/record.d.ts +0 -2
  728. package/dist/utils/record.d.ts.map +1 -1
  729. package/dist/utils/silent-runtime-action.d.ts +0 -2
  730. package/dist/utils/silent-runtime-action.d.ts.map +1 -1
  731. package/dist/utils/text.d.ts +1 -3
  732. package/dist/utils/text.d.ts.map +1 -1
  733. package/dist/utils/wire-media.d.ts +0 -2
  734. package/dist/utils/wire-media.d.ts.map +1 -1
  735. package/package.json +11 -10
  736. package/src/adapters/attachment.test.ts +98 -1
  737. package/src/adapters/attachment.ts +70 -20
  738. package/src/adapters/speech.test.ts +94 -0
  739. package/src/adapters/speech.ts +16 -2
  740. package/src/adapters/thread-history.ts +16 -5
  741. package/src/adapters/voice.test.ts +169 -0
  742. package/src/adapters/voice.ts +25 -4
  743. package/src/index.ts +14 -2
  744. package/src/internal.ts +7 -0
  745. package/src/model-context/frame/host.test.ts +51 -1
  746. package/src/model-context/frame/host.ts +3 -1
  747. package/src/model-context/frame/provider.test.ts +61 -0
  748. package/src/model-context/frame/provider.ts +8 -1
  749. package/src/model-context/frame/validate.ts +57 -0
  750. package/src/model-context/interactable-composer-metadata.test.ts +82 -0
  751. package/src/model-context/interactable-composer-metadata.ts +45 -2
  752. package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +594 -0
  753. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +98 -35
  754. package/src/react/client/Interactables.test.ts +853 -1
  755. package/src/react/client/Interactables.ts +325 -45
  756. package/src/react/client/RemoteThreadList.initialize-failure.test.ts +124 -0
  757. package/src/react/client/RemoteThreadList.ts +6 -0
  758. package/src/react/client/Tools.ts +2 -3
  759. package/src/react/client/interactable-model-context.test.ts +56 -13
  760. package/src/react/client/interactable-model-context.ts +48 -23
  761. package/src/react/index.ts +2 -2
  762. package/src/react/interactables-legacy/Interactables.test.ts +212 -1
  763. package/src/react/interactables-legacy/Interactables.ts +25 -14
  764. package/src/react/interactables-legacy/interactable-model-context.ts +26 -24
  765. package/src/react/interactables-shared/useInteractablePersistenceQueue.test.tsx +22 -2
  766. package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +63 -11
  767. package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +33 -0
  768. package/src/react/primitive-hooks/useSuggestionTrigger.ts +7 -4
  769. package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +124 -8
  770. package/src/react/primitives/generativeUI/GenerativeUI.tsx +35 -15
  771. package/src/react/primitives/message/MessageAttachments.test.tsx +2 -6
  772. package/src/react/primitives/message/MessageAttachments.tsx +14 -8
  773. package/src/react/primitives/message/MessageGroupedParts.test.tsx +151 -7
  774. package/src/react/primitives/message/MessageGroupedParts.tsx +19 -6
  775. package/src/react/primitives/message/MessageParts.test.tsx +84 -0
  776. package/src/react/primitives/message/MessageParts.tool-interaction.test.tsx +69 -0
  777. package/src/react/primitives/message/MessageParts.tsx +29 -8
  778. package/src/react/primitives/thread/ThreadSuggestions.test.tsx +97 -0
  779. package/src/react/primitives/thread/ThreadSuggestions.tsx +29 -6
  780. package/src/react/providers/ReadonlyThreadProvider.tsx +2 -2
  781. package/src/react/providers/TextMessagePartProvider.tsx +3 -0
  782. package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +93 -0
  783. package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +160 -3
  784. package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +38 -0
  785. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +73 -53
  786. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +19 -3
  787. package/src/react/runtimes/RemoteThreadResource.ts +5 -2
  788. package/src/react/runtimes/assistant-transport/replayBoundaryStream.test.ts +3 -1
  789. package/src/react/runtimes/assistant-transport/replayBoundaryStream.ts +10 -2
  790. package/src/react/runtimes/assistant-transport/runManager.ts +3 -0
  791. package/src/react/runtimes/assistant-transport/transport-parentid.test.tsx +57 -0
  792. package/src/react/runtimes/assistant-transport/transport-thread-id.test.tsx +571 -0
  793. package/src/react/runtimes/assistant-transport/types.ts +9 -1
  794. package/src/react/runtimes/assistant-transport/useAssistantTransport.spec.md +10 -0
  795. package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +42 -0
  796. package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.ts +33 -9
  797. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.integration.test.tsx +289 -0
  798. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.test.tsx +471 -0
  799. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.engagement.test.tsx +330 -0
  800. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +78 -2
  801. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +361 -2
  802. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +571 -216
  803. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +25 -0
  804. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +7 -3
  805. package/src/react/runtimes/cloud/auiV0.ts +158 -9
  806. package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +352 -1
  807. package/src/react/runtimes/createMessageConverter.ts +9 -3
  808. package/src/react/runtimes/external-store-history-copy.ts +223 -0
  809. package/src/react/runtimes/useExternalStoreRuntime.history-copy.test.tsx +483 -0
  810. package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +76 -1
  811. package/src/react/runtimes/useExternalStoreRuntime.ts +25 -5
  812. package/src/react/runtimes/useLocalRuntime.test.tsx +145 -1
  813. package/src/react/runtimes/useLocalRuntime.ts +8 -5
  814. package/src/react/types/MessagePartComponentTypes.ts +10 -0
  815. package/src/react/types/scopes/interactables.ts +3 -0
  816. package/src/runtime/api/attachment-runtime.ts +10 -5
  817. package/src/runtime/api/bindings.ts +6 -1
  818. package/src/runtime/api/composer-runtime.ts +29 -6
  819. package/src/runtime/api/message-part-runtime.test.ts +215 -0
  820. package/src/runtime/api/message-part-runtime.ts +40 -0
  821. package/src/runtime/api/message-runtime.test.ts +112 -2
  822. package/src/runtime/api/message-runtime.ts +10 -5
  823. package/src/runtime/api/thread-list-item-runtime.ts +5 -5
  824. package/src/runtime/api/thread-list-runtime.ts +3 -3
  825. package/src/runtime/api/thread-runtime.test.ts +59 -0
  826. package/src/runtime/api/thread-runtime.ts +21 -11
  827. package/src/runtime/base/base-composer-runtime-core.ts +548 -153
  828. package/src/runtime/base/base-thread-runtime-core.test.ts +744 -9
  829. package/src/runtime/base/base-thread-runtime-core.ts +154 -27
  830. package/src/runtime/base/default-edit-composer-runtime-core.ts +13 -1
  831. package/src/runtime/base/default-thread-composer-runtime-core.ts +29 -10
  832. package/src/runtime/interfaces/composer-runtime-core.ts +19 -0
  833. package/src/runtime/interfaces/thread-runtime-core.ts +22 -1
  834. package/src/runtime/utils/attachment-add-operations.ts +45 -2
  835. package/src/runtime/utils/attachment-send-operations.ts +54 -0
  836. package/src/runtime/utils/auto-status.test.ts +54 -0
  837. package/src/runtime/utils/auto-status.ts +3 -10
  838. package/src/runtime/utils/external-message-conversion.test.ts +48 -0
  839. package/src/runtime/utils/external-message-conversion.ts +3 -4
  840. package/src/runtime/utils/message-repository.test.ts +69 -1
  841. package/src/runtime/utils/message-repository.ts +14 -7
  842. package/src/runtime/utils/stored-message-parts.ts +43 -1
  843. package/src/runtime/utils/thread-message-like.test.ts +58 -0
  844. package/src/runtime/utils/thread-message-like.ts +72 -46
  845. package/src/runtime/utils/thread-runtime-lifecycle.test.ts +67 -0
  846. package/src/runtime/utils/thread-runtime-lifecycle.ts +42 -8
  847. package/src/runtime/utils/tool-interactions.test.ts +193 -0
  848. package/src/runtime/utils/tool-interactions.ts +147 -0
  849. package/src/runtimes/external-store/external-store-adapter.ts +22 -1
  850. package/src/runtimes/external-store/external-store-runtime-core.ts +10 -2
  851. package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +2 -2
  852. package/src/runtimes/external-store/external-store-thread-runtime-core.test.ts +49 -0
  853. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +76 -29
  854. package/src/runtimes/inert/InertThreadRuntimeCore.test.ts +127 -56
  855. package/src/runtimes/inert/InertThreadRuntimeCore.ts +10 -1
  856. package/src/runtimes/local/local-thread-runtime-core.edit-cancellation.test.ts +70 -0
  857. package/src/runtimes/local/local-thread-runtime-core.test.ts +1649 -108
  858. package/src/runtimes/local/local-thread-runtime-core.ts +301 -47
  859. package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +53 -1
  860. package/src/runtimes/remote-thread-list/optimistic-state.ts +8 -3
  861. package/src/runtimes/tool-invocations/EDGE_CASES.md +19 -4
  862. package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +392 -39
  863. package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +31 -8
  864. package/src/store/clients/external-thread.test.ts +145 -0
  865. package/src/store/clients/external-thread.ts +635 -131
  866. package/src/store/clients/model-context-client.test.ts +8 -8
  867. package/src/store/clients/no-op-composer-client.ts +2 -0
  868. package/src/store/clients/submission-message.ts +27 -0
  869. package/src/store/clients/thread-message-client.test.ts +39 -0
  870. package/src/store/clients/thread-message-client.ts +13 -6
  871. package/src/store/index.ts +2 -2
  872. package/src/store/internal.ts +1 -0
  873. package/src/store/primitive-predicates.test.ts +103 -0
  874. package/src/store/primitive-predicates.ts +15 -3
  875. package/src/store/runtime-clients/composer-runtime-client.ts +4 -3
  876. package/src/store/runtime-clients/message-part-runtime-client.test.ts +42 -0
  877. package/src/store/runtime-clients/message-part-runtime-client.ts +4 -0
  878. package/src/store/runtime-clients/message-runtime-client.ts +5 -0
  879. package/src/store/runtime-clients/thread-runtime-client.test.tsx +138 -5
  880. package/src/store/runtime-clients/thread-runtime-client.ts +46 -9
  881. package/src/store/scopes/composer.ts +22 -4
  882. package/src/store/scopes/message.ts +8 -0
  883. package/src/store/scopes/part.ts +8 -0
  884. package/src/subscribable/subscribable.test.ts +198 -1
  885. package/src/subscribable/subscribable.ts +49 -7
  886. package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +95 -1
  887. package/src/tests/auiV0Encode.test.ts +408 -1
  888. package/src/tests/base-composer-runtime-core-send.test.ts +722 -29
  889. package/src/tests/base-composer-runtime-core.test.ts +196 -0
  890. package/src/tests/composer-can-send.test.ts +98 -1
  891. package/src/tests/composer-submission.test.tsx +796 -0
  892. package/src/tests/default-edit-composer-runtime-core.test.ts +102 -2
  893. package/src/tests/external-store-thread-list-runtime-core.test.ts +111 -0
  894. package/src/tests/external-store-thread-runtime-core-adapter.test.ts +581 -1
  895. package/src/tests/external-store-thread-runtime-core.test.ts +186 -0
  896. package/src/tests/external-thread-attachments.test.tsx +741 -3
  897. package/src/tests/external-thread-isLast.test.tsx +69 -0
  898. package/src/tests/get-thread-state-isRunning.test.ts +2 -2
  899. package/src/tests/remote-thread-list-adapter-switch.test.ts +45 -1
  900. package/src/types/message.ts +49 -2
  901. package/src/utils/normalizePartStatus.ts +14 -1
  902. package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -15
  903. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +0 -1
  904. package/dist/tests/remote-thread-list-test-helpers.js +0 -59
  905. package/dist/tests/remote-thread-list-test-helpers.js.map +0 -1
@@ -1,16 +1,14 @@
1
- import { ToolApprovalDisplay, ToolApprovalOption, ToolApprovalResponse } from "../../types/message.js";
2
- import { RespondToToolApprovalOptions } from "../interfaces/thread-runtime-core.js";
3
- //#region src/runtime/utils/resolveToolApprovalResponse.d.ts
1
+ import { type ToolApprovalDisplay, type ToolApprovalOption, type ToolApprovalResponse } from "../../types/message.js";
2
+ import type { RespondToToolApprovalOptions } from "../interfaces/thread-runtime-core.js";
4
3
  /**
5
4
  * Resolves a renderer-facing approval response (boolean, optionId, or
6
5
  * free-form answer) against the approval's request shape into the
7
6
  * runtime-facing decision shape.
8
7
  */
9
8
  export declare const resolveToolApprovalResponse: (approval: {
10
- readonly id: string;
11
- readonly display?: ToolApprovalDisplay;
12
- readonly allowFreeform?: boolean;
13
- readonly options?: readonly ToolApprovalOption[];
9
+ readonly id: string;
10
+ readonly display?: ToolApprovalDisplay;
11
+ readonly allowFreeform?: boolean;
12
+ readonly options?: readonly ToolApprovalOption[];
14
13
  }, response: ToolApprovalResponse) => RespondToToolApprovalOptions;
15
- //#endregion
16
14
  //# sourceMappingURL=resolveToolApprovalResponse.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolveToolApprovalResponse.d.ts","names":[],"sources":["../../../src/runtime/utils/resolveToolApprovalResponse.ts"],"mappings":";;;;;;;;qBAoBa,8BACX;WACW;WACA,UAAU;WACV;WACA,mBAAmB;GAE9B,UAAU,yBACT"}
1
+ {"version":3,"file":"resolveToolApprovalResponse.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/resolveToolApprovalResponse.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAC1B,+BAA4B;AAC7B,OAAO,KAAK,EAAE,4BAA4B,EAAE,6CAA0C;AAStF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GACtC,UAAU;IACR,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,CAAC,EAAE,mBAAmB,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,kBAAkB,EAAE,CAAC;CAClD,EACD,UAAU,oBAAoB,KAC7B,4BA+CF,CAAC"}
@@ -1,10 +1,9 @@
1
- //#region src/runtime/utils/runtime-extras-brand.d.ts
2
1
  /** @deprecated Internal API for external-store adapter authors. Not part of the public API; may change or be removed without notice. */
3
2
  export type RuntimeExtrasBrand<T extends object> = {
4
- provide: (value: T) => T;
5
- is: (extras: unknown) => extras is T;
6
- tryGet: (extras: unknown) => T | undefined;
7
- assert: (extras: unknown) => T;
3
+ provide: (value: T) => T;
4
+ is: (extras: unknown) => extras is T;
5
+ tryGet: (extras: unknown) => T | undefined;
6
+ assert: (extras: unknown) => T;
8
7
  };
9
8
  /**
10
9
  * Creates the framework-neutral half of a runtime extras channel: the brand
@@ -16,5 +15,4 @@ export type RuntimeExtrasBrand<T extends object> = {
16
15
  * @deprecated Internal API for external-store adapter authors. Not part of the public API; may change or be removed without notice.
17
16
  */
18
17
  export declare const createRuntimeExtrasBrand: <T extends object>(runtimeName: string) => RuntimeExtrasBrand<T>;
19
- //#endregion
20
18
  //# sourceMappingURL=runtime-extras-brand.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-extras-brand.d.ts","names":[],"sources":["../../../src/runtime/utils/runtime-extras-brand.ts"],"mappings":";;YACY,mBAAmB;EAC7B,UAAU,OAAO,MAAM;EACvB,KAAK,oBAAoB,UAAU;EACnC,SAAS,oBAAoB;EAC7B,SAAS,oBAAoB;;;;;;;;;;;qBAYlB,2BAA4B,kBACvC,wBACC,mBAAmB"}
1
+ {"version":3,"file":"runtime-extras-brand.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/runtime-extras-brand.ts"],"names":[],"mappings":"AAAA,wIAAwI;AACxI,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,MAAM,IAAI;IACjD,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IACzB,EAAE,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,MAAM,IAAI,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,GAAG,SAAS,CAAC;IAC3C,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,CAAC,CAAC;CAChC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,MAAM,EACvD,aAAa,MAAM,KAClB,kBAAkB,CAAC,CAAC,CA2BtB,CAAC"}
@@ -1,12 +1,13 @@
1
- import { ThreadMessage } from "../../types/message.js";
2
- import { CompleteAttachment } from "../../types/attachment.js";
3
- //#region src/runtime/utils/stored-message-parts.d.ts
1
+ import type { CompleteAttachment } from "../../types/attachment.js";
2
+ import type { MessageStatus, ThreadMessage, ThreadStep } from "../../types/message.js";
4
3
  export declare const MAX_STORED_MESSAGE_DEPTH = 100;
5
4
  export type StoredMessagePart = Record<string, unknown> & {
6
- type: string;
5
+ type: string;
7
6
  };
8
7
  export declare const parseStoredDate: (value: unknown) => Date | null;
9
8
  export declare const isStoredMessageRole: (value: unknown) => value is ThreadMessage["role"];
9
+ export declare const isStoredMessageStatus: (value: unknown) => value is MessageStatus;
10
+ export declare const parseStoredThreadSteps: (value: unknown) => ThreadStep[];
10
11
  export declare const isStoredMessagePart: (value: unknown) => value is StoredMessagePart;
11
12
  /**
12
13
  * `fromThreadMessageLike` converts each part through its role's branch and
@@ -17,5 +18,4 @@ export declare const isStoredMessagePart: (value: unknown) => value is StoredMes
17
18
  */
18
19
  export declare const isStoredAuiV0RolePart: (role: ThreadMessage["role"], value: unknown) => value is StoredMessagePart;
19
20
  export declare const parseStoredAttachment: (value: unknown, isPart: (value: unknown) => value is StoredMessagePart) => CompleteAttachment | null;
20
- //#endregion
21
21
  //# sourceMappingURL=stored-message-parts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stored-message-parts.d.ts","names":[],"sources":["../../../src/runtime/utils/stored-message-parts.ts"],"mappings":";;;qBAQa;YAID,oBAAoB;EAA4B;;qBAE/C,kBAAmB,mBAAiB;qBAQpC,sBACX,mBACC,SAAS;qBAiEC,sBAAmB,mBARL,SAAS;;;;;;;;qBA4DvB,wBACX,MAAM,uBACN,mBACC,SAAS;qBASC,wBACX,gBACA,SAAS,mBAAmB,SAAS,sBACpC"}
1
+ {"version":3,"file":"stored-message-parts.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/stored-message-parts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kCAA+B;AACjE,OAAO,KAAK,EACV,aAAa,EAEb,aAAa,EACb,UAAU,EAEX,+BAA4B;AAG7B,eAAO,MAAM,wBAAwB,MAAM,CAAC;AAI5C,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3E,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,IAAI,GAAG,IAMvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAC9B,OAAO,OAAO,KACb,KAAK,IAAI,aAAa,CAAC,MAAM,CACiC,CAAC;AAgBlE,eAAO,MAAM,qBAAqB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,aAIF,CAAC;AAe/D,eAAO,MAAM,sBAAsB,GAAI,OAAO,OAAO,KAAG,UAAU,EAK1D,CAAC;AAgET,eAAO,MAAM,mBAAmB,UARf,OAAO,KAAG,KAAK,IAAI,iBAQsC,CAAC;AA6C3E;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,GAChC,MAAM,aAAa,CAAC,MAAM,CAAC,EAC3B,OAAO,OAAO,KACb,KAAK,IAAI,iBAOC,CAAC;AAEd,eAAO,MAAM,qBAAqB,GAChC,OAAO,OAAO,EACd,QAAQ,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,iBAAiB,KACrD,kBAAkB,GAAG,IAiBvB,CAAC"}
@@ -1,4 +1,4 @@
1
- import { isRecord } from "../../utils/json/is-json.js";
1
+ import { isJSONValue, isRecord } from "../../utils/json/is-json.js";
2
2
  //#region src/runtime/utils/stored-message-parts.ts
3
3
  const MAX_STORED_MESSAGE_DEPTH = 100;
4
4
  const parseStoredDate = (value) => {
@@ -8,6 +8,26 @@ const parseStoredDate = (value) => {
8
8
  return Number.isNaN(date.getTime()) ? null : date;
9
9
  };
10
10
  const isStoredMessageRole = (value) => value === "system" || value === "user" || value === "assistant";
11
+ const storedMessageStatusGuardsByType = {
12
+ running: () => true,
13
+ "requires-action": (status) => typeof status.reason === "string",
14
+ complete: (status) => typeof status.reason === "string",
15
+ incomplete: (status) => (status.reason === void 0 || typeof status.reason === "string") && (status.error === void 0 || isJSONValue(status.error))
16
+ };
17
+ const isStoredMessageStatus = (value) => isRecord(value) && typeof value.type === "string" && Object.hasOwn(storedMessageStatusGuardsByType, value.type) && storedMessageStatusGuardsByType[value.type](value) === true;
18
+ const parseStoredThreadStep = (value) => {
19
+ if (!isRecord(value)) return void 0;
20
+ if (value.messageId !== void 0 && typeof value.messageId !== "string") {
21
+ const { messageId: _, ...step } = value;
22
+ return parseStoredThreadStep(step);
23
+ }
24
+ if (value.usage !== void 0 && !isRecord(value.usage)) {
25
+ const { usage: _, ...step } = value;
26
+ return step;
27
+ }
28
+ return value;
29
+ };
30
+ const parseStoredThreadSteps = (value) => Array.isArray(value) ? value.map(parseStoredThreadStep).filter((step) => step !== void 0) : [];
11
31
  /**
12
32
  * Builds the readability predicate for a persistence boundary. A stored part is
13
33
  * readable when it passes the guard for its known type, or when its type is
@@ -78,6 +98,6 @@ const parseStoredAttachment = (value, isPart) => {
78
98
  };
79
99
  };
80
100
  //#endregion
81
- export { MAX_STORED_MESSAGE_DEPTH, isStoredAuiV0RolePart, isStoredMessagePart, isStoredMessageRole, parseStoredAttachment, parseStoredDate };
101
+ export { MAX_STORED_MESSAGE_DEPTH, isStoredAuiV0RolePart, isStoredMessagePart, isStoredMessageRole, isStoredMessageStatus, parseStoredAttachment, parseStoredDate, parseStoredThreadSteps };
82
102
 
83
103
  //# sourceMappingURL=stored-message-parts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stored-message-parts.js","names":["CompleteAttachment","ThreadAssistantMessagePart","ThreadMessage","ThreadUserMessagePart","isRecord","MAX_STORED_MESSAGE_DEPTH","StoredPartGuard","part","Record","StoredMessagePart","type","parseStoredDate","value","Date","Number","isNaN","getTime","date","isStoredMessageRole","makeIsStoredMessagePart","overrides","Partial","isReadableUnknownType","storedPartGuards","text","reasoning","unstable_summary","image","file","data","mimeType","audio","format","name","source","id","sourceType","url","title","mediaType","spec","toolCallId","toolName","args","argsText","guards","Object","hasOwn","isStoredMessagePart","isStoredAuiV0Part","undefined","startsWith","rolePartTypes","user","assistant","isStoredAuiV0RolePart","role","parseStoredAttachment","isPart","status","Array","isArray","content","filter"],"sources":["../../../src/runtime/utils/stored-message-parts.ts"],"sourcesContent":["import type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n ThreadAssistantMessagePart,\n ThreadMessage,\n ThreadUserMessagePart,\n} from \"../../types/message\";\nimport { isRecord } from \"../../utils/json/is-json\";\n\nexport const MAX_STORED_MESSAGE_DEPTH = 100;\n\ntype StoredPartGuard = (part: Record<string, unknown>) => boolean;\n\nexport type StoredMessagePart = Record<string, unknown> & { type: string };\n\nexport const parseStoredDate = (value: unknown): Date | null => {\n if (value instanceof Date && !Number.isNaN(value.getTime())) return value;\n if (typeof value !== \"string\" && typeof value !== \"number\") return null;\n\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n};\n\nexport const isStoredMessageRole = (\n value: unknown,\n): value is ThreadMessage[\"role\"] =>\n value === \"system\" || value === \"user\" || value === \"assistant\";\n\n/**\n * Builds the readability predicate for a persistence boundary. A stored part is\n * readable when it passes the guard for its known type, or when its type is\n * unknown and the boundary can still read it.\n *\n * Unknown types are where the boundaries part: local storage hands its rows to\n * the runtime untouched, so a type written by a newer release still loads,\n * while the aui/v0 decoder converts a `data-` prefix and throws on anything\n * else unknown. Per-type differences ride in `overrides`.\n */\nconst makeIsStoredMessagePart = (\n overrides: Partial<\n Record<\n (ThreadUserMessagePart | ThreadAssistantMessagePart)[\"type\"],\n StoredPartGuard\n >\n >,\n isReadableUnknownType: (type: string) => boolean,\n) => {\n const storedPartGuards = {\n text: (part) => typeof part.text === \"string\",\n reasoning: (part) =>\n typeof part.text === \"string\" ||\n typeof part.unstable_summary === \"string\",\n image: (part) => typeof part.image === \"string\",\n file: (part) =>\n typeof part.data === \"string\" && typeof part.mimeType === \"string\",\n audio: (part) =>\n isRecord(part.audio) &&\n typeof part.audio.data === \"string\" &&\n typeof part.audio.format === \"string\",\n data: (part) => typeof part.name === \"string\",\n source: (part) =>\n typeof part.id === \"string\" &&\n (part.sourceType === \"url\"\n ? typeof part.url === \"string\"\n : part.sourceType === \"document\" &&\n typeof part.title === \"string\" &&\n typeof part.mediaType === \"string\"),\n \"generative-ui\": (part) => isRecord(part.spec),\n \"tool-call\": (part) =>\n typeof part.toolCallId === \"string\" &&\n typeof part.toolName === \"string\" &&\n isRecord(part.args) &&\n typeof part.argsText === \"string\",\n } satisfies Record<\n (ThreadUserMessagePart | ThreadAssistantMessagePart)[\"type\"],\n StoredPartGuard\n >;\n const guards: Record<string, StoredPartGuard> = {\n ...storedPartGuards,\n ...overrides,\n };\n\n return (value: unknown): value is StoredMessagePart =>\n isRecord(value) &&\n typeof value.type === \"string\" &&\n (Object.hasOwn(guards, value.type)\n ? guards[value.type]!(value)\n : isReadableUnknownType(value.type));\n};\n\nexport const isStoredMessagePart = makeIsStoredMessagePart({}, () => true);\n\n/**\n * The aui/v0 decoder dereferences each present field rather than reading only\n * the one it needs, so this boundary checks every field it will touch, while\n * local storage stays no stricter than what the runtime itself writes.\n */\nconst isStoredAuiV0Part = makeIsStoredMessagePart(\n {\n reasoning: (part) =>\n (part.text === undefined || typeof part.text === \"string\") &&\n (part.unstable_summary === undefined ||\n typeof part.unstable_summary === \"string\") &&\n (typeof part.text === \"string\" ||\n typeof part.unstable_summary === \"string\"),\n \"tool-call\": (part) =>\n typeof part.toolCallId === \"string\" &&\n typeof part.toolName === \"string\" &&\n (part.args === undefined || isRecord(part.args)) &&\n (part.argsText === undefined || typeof part.argsText === \"string\") &&\n (part.args !== undefined || part.argsText !== undefined),\n },\n (type) => type.startsWith(\"data-\"),\n);\n\nconst rolePartTypes = {\n user: {\n text: true,\n image: true,\n file: true,\n data: true,\n audio: true,\n } satisfies Record<ThreadUserMessagePart[\"type\"], true>,\n assistant: {\n text: true,\n reasoning: true,\n \"tool-call\": true,\n source: true,\n file: true,\n image: true,\n data: true,\n \"generative-ui\": true,\n } satisfies Record<ThreadAssistantMessagePart[\"type\"], true>,\n};\n\n/**\n * `fromThreadMessageLike` converts each part through its role's branch and\n * throws on a part that branch does not carry, which would cost the whole\n * stored row. The aui/v0 boundary decodes through that converter, so it filters\n * by role as well as by shape. A part type unknown to this table is left to the\n * boundary predicate, which keeps the `data-` prefixes the converter handles.\n */\nexport const isStoredAuiV0RolePart = (\n role: ThreadMessage[\"role\"],\n value: unknown,\n): value is StoredMessagePart =>\n isStoredAuiV0Part(value) &&\n (role === \"system\"\n ? value.type === \"text\"\n : Object.hasOwn(rolePartTypes.assistant, value.type) ||\n Object.hasOwn(rolePartTypes.user, value.type)\n ? Object.hasOwn(rolePartTypes[role], value.type)\n : true);\n\nexport const parseStoredAttachment = (\n value: unknown,\n isPart: (value: unknown) => value is StoredMessagePart,\n): CompleteAttachment | null => {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n typeof value.type !== \"string\" ||\n typeof value.name !== \"string\" ||\n !isRecord(value.status) ||\n value.status.type !== \"complete\" ||\n !Array.isArray(value.content)\n ) {\n return null;\n }\n\n return {\n ...value,\n content: value.content.filter(isPart),\n } as CompleteAttachment;\n};\n"],"mappings":";;AAQA,MAAaK,2BAA2B;AAMxC,MAAaM,mBAAmBC,UAAgC;CAC9D,IAAIA,iBAAiBC,QAAQ,CAACC,OAAOC,MAAMH,MAAMI,QAAQ,CAAC,GAAG,OAAOJ;CACpE,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,UAAU,OAAO;CAEnE,MAAMK,OAAO,IAAIJ,KAAKD,KAAK;CAC3B,OAAOE,OAAOC,MAAME,KAAKD,QAAQ,CAAC,IAAI,OAAOC;AAC/C;AAEA,MAAaC,uBACXN,UAEAA,UAAU,YAAYA,UAAU,UAAUA,UAAU;;;;;;;;;;;AAYtD,MAAMO,2BACJC,WAMAE,0BACG;CA+BH,MAAMuB,SAA0C;EA7B9CrB,OAAOjB,SAAS,OAAOA,KAAKiB,SAAS;EACrCC,YAAYlB,SACV,OAAOA,KAAKiB,SAAS,YACrB,OAAOjB,KAAKmB,qBAAqB;EACnCC,QAAQpB,SAAS,OAAOA,KAAKoB,UAAU;EACvCC,OAAOrB,SACL,OAAOA,KAAKsB,SAAS,YAAY,OAAOtB,KAAKuB,aAAa;EAC5DC,QAAQxB,SACNH,SAASG,KAAKwB,KAAK,KACnB,OAAOxB,KAAKwB,MAAMF,SAAS,YAC3B,OAAOtB,KAAKwB,MAAMC,WAAW;EAC/BH,OAAOtB,SAAS,OAAOA,KAAK0B,SAAS;EACrCC,SAAS3B,SACP,OAAOA,KAAK4B,OAAO,aAClB5B,KAAK6B,eAAe,QACjB,OAAO7B,KAAK8B,QAAQ,WACpB9B,KAAK6B,eAAe,cACpB,OAAO7B,KAAK+B,UAAU,YACtB,OAAO/B,KAAKgC,cAAc;EAChC,kBAAkBhC,SAASH,SAASG,KAAKiC,IAAI;EAC7C,cAAcjC,SACZ,OAAOA,KAAKkC,eAAe,YAC3B,OAAOlC,KAAKmC,aAAa,YACzBtC,SAASG,KAAKoC,IAAI,KAClB,OAAOpC,KAAKqC,aAAa;EAO3B,GAAGxB;CACL;CAEA,QAAQR,UACNR,SAASQ,KAAK,KACd,OAAOA,MAAMF,SAAS,aACrBoC,OAAOC,OAAOF,QAAQjC,MAAMF,IAAI,IAC7BmC,OAAOjC,MAAMF,KAAK,CAAEE,KAAK,IACzBU,sBAAsBV,MAAMF,IAAI;AACxC;AAEA,MAAasC,sBAAsB7B,wBAAwB,CAAC,SAAS,IAAI;;;;;;AAOzE,MAAM8B,oBAAoB9B,wBACxB;CACEM,YAAYlB,UACTA,KAAKiB,SAAS0B,KAAAA,KAAa,OAAO3C,KAAKiB,SAAS,cAChDjB,KAAKmB,qBAAqBwB,KAAAA,KACzB,OAAO3C,KAAKmB,qBAAqB,cAClC,OAAOnB,KAAKiB,SAAS,YACpB,OAAOjB,KAAKmB,qBAAqB;CACrC,cAAcnB,SACZ,OAAOA,KAAKkC,eAAe,YAC3B,OAAOlC,KAAKmC,aAAa,aACxBnC,KAAKoC,SAASO,KAAAA,KAAa9C,SAASG,KAAKoC,IAAI,OAC7CpC,KAAKqC,aAAaM,KAAAA,KAAa,OAAO3C,KAAKqC,aAAa,cACxDrC,KAAKoC,SAASO,KAAAA,KAAa3C,KAAKqC,aAAaM,KAAAA;AAClD,IACCxC,SAASA,KAAKyC,WAAW,OAAO,CACnC;AAEA,MAAMC,gBAAgB;CACpBC,MAAM;EACJ7B,MAAM;EACNG,OAAO;EACPC,MAAM;EACNC,MAAM;EACNE,OAAO;CACT;CACAuB,WAAW;EACT9B,MAAM;EACNC,WAAW;EACX,aAAa;EACbS,QAAQ;EACRN,MAAM;EACND,OAAO;EACPE,MAAM;EACN,iBAAiB;CACnB;AACF;;;;;;;;AASA,MAAa0B,yBACXC,MACA5C,UAEAqC,kBAAkBrC,KAAK,MACtB4C,SAAS,WACN5C,MAAMF,SAAS,SACfoC,OAAOC,OAAOK,cAAcE,WAAW1C,MAAMF,IAAI,KAC/CoC,OAAOC,OAAOK,cAAcC,MAAMzC,MAAMF,IAAI,IAC5CoC,OAAOC,OAAOK,cAAcI,OAAO5C,MAAMF,IAAI,IAC7C;AAER,MAAa+C,yBACX7C,OACA8C,WAC8B;CAC9B,IACE,CAACtD,SAASQ,KAAK,KACf,OAAOA,MAAMuB,OAAO,YACpB,OAAOvB,MAAMF,SAAS,YACtB,OAAOE,MAAMqB,SAAS,YACtB,CAAC7B,SAASQ,MAAM+C,MAAM,KACtB/C,MAAM+C,OAAOjD,SAAS,cACtB,CAACkD,MAAMC,QAAQjD,MAAMkD,OAAO,GAE5B,OAAO;CAGT,OAAO;EACL,GAAGlD;EACHkD,SAASlD,MAAMkD,QAAQC,OAAOL,MAAM;CACtC;AACF"}
1
+ {"version":3,"file":"stored-message-parts.js","names":["CompleteAttachment","MessageStatus","ThreadAssistantMessagePart","ThreadMessage","ThreadStep","ThreadUserMessagePart","isJSONValue","isRecord","MAX_STORED_MESSAGE_DEPTH","StoredPartGuard","part","Record","StoredMessagePart","type","parseStoredDate","value","Date","Number","isNaN","getTime","date","isStoredMessageRole","StoredStatusGuard","status","storedMessageStatusGuards","running","reason","complete","incomplete","undefined","error","storedMessageStatusGuardsByType","isStoredMessageStatus","Object","hasOwn","parseStoredThreadStep","messageId","_","step","usage","parseStoredThreadSteps","Array","isArray","map","filter","makeIsStoredMessagePart","overrides","Partial","isReadableUnknownType","storedPartGuards","text","reasoning","unstable_summary","image","file","data","mimeType","audio","format","name","source","id","sourceType","url","title","mediaType","spec","toolCallId","toolName","args","argsText","guards","isStoredMessagePart","isStoredAuiV0Part","startsWith","rolePartTypes","user","assistant","isStoredAuiV0RolePart","role","parseStoredAttachment","isPart","content"],"sources":["../../../src/runtime/utils/stored-message-parts.ts"],"sourcesContent":["import type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n MessageStatus,\n ThreadAssistantMessagePart,\n ThreadMessage,\n ThreadStep,\n ThreadUserMessagePart,\n} from \"../../types/message\";\nimport { isJSONValue, isRecord } from \"../../utils/json/is-json\";\n\nexport const MAX_STORED_MESSAGE_DEPTH = 100;\n\ntype StoredPartGuard = (part: Record<string, unknown>) => boolean;\n\nexport type StoredMessagePart = Record<string, unknown> & { type: string };\n\nexport const parseStoredDate = (value: unknown): Date | null => {\n if (value instanceof Date && !Number.isNaN(value.getTime())) return value;\n if (typeof value !== \"string\" && typeof value !== \"number\") return null;\n\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n};\n\nexport const isStoredMessageRole = (\n value: unknown,\n): value is ThreadMessage[\"role\"] =>\n value === \"system\" || value === \"user\" || value === \"assistant\";\n\ntype StoredStatusGuard = (status: Record<string, unknown>) => boolean;\n\nconst storedMessageStatusGuards = {\n running: () => true,\n \"requires-action\": (status) => typeof status.reason === \"string\",\n complete: (status) => typeof status.reason === \"string\",\n incomplete: (status) =>\n (status.reason === undefined || typeof status.reason === \"string\") &&\n (status.error === undefined || isJSONValue(status.error)),\n} satisfies Record<MessageStatus[\"type\"], StoredStatusGuard>;\n\nconst storedMessageStatusGuardsByType: Record<string, StoredStatusGuard> =\n storedMessageStatusGuards;\n\nexport const isStoredMessageStatus = (value: unknown): value is MessageStatus =>\n isRecord(value) &&\n typeof value.type === \"string\" &&\n Object.hasOwn(storedMessageStatusGuardsByType, value.type) &&\n storedMessageStatusGuardsByType[value.type]!(value) === true;\n\nconst parseStoredThreadStep = (value: unknown): ThreadStep | undefined => {\n if (!isRecord(value)) return undefined;\n if (value.messageId !== undefined && typeof value.messageId !== \"string\") {\n const { messageId: _, ...step } = value;\n return parseStoredThreadStep(step);\n }\n if (value.usage !== undefined && !isRecord(value.usage)) {\n const { usage: _, ...step } = value;\n return step as ThreadStep;\n }\n return value as ThreadStep;\n};\n\nexport const parseStoredThreadSteps = (value: unknown): ThreadStep[] =>\n Array.isArray(value)\n ? value\n .map(parseStoredThreadStep)\n .filter((step): step is ThreadStep => step !== undefined)\n : [];\n\n/**\n * Builds the readability predicate for a persistence boundary. A stored part is\n * readable when it passes the guard for its known type, or when its type is\n * unknown and the boundary can still read it.\n *\n * Unknown types are where the boundaries part: local storage hands its rows to\n * the runtime untouched, so a type written by a newer release still loads,\n * while the aui/v0 decoder converts a `data-` prefix and throws on anything\n * else unknown. Per-type differences ride in `overrides`.\n */\nconst makeIsStoredMessagePart = (\n overrides: Partial<\n Record<\n (ThreadUserMessagePart | ThreadAssistantMessagePart)[\"type\"],\n StoredPartGuard\n >\n >,\n isReadableUnknownType: (type: string) => boolean,\n) => {\n const storedPartGuards = {\n text: (part) => typeof part.text === \"string\",\n reasoning: (part) =>\n typeof part.text === \"string\" ||\n typeof part.unstable_summary === \"string\",\n image: (part) => typeof part.image === \"string\",\n file: (part) =>\n typeof part.data === \"string\" && typeof part.mimeType === \"string\",\n audio: (part) =>\n isRecord(part.audio) &&\n typeof part.audio.data === \"string\" &&\n typeof part.audio.format === \"string\",\n data: (part) => typeof part.name === \"string\",\n source: (part) =>\n typeof part.id === \"string\" &&\n (part.sourceType === \"url\"\n ? typeof part.url === \"string\"\n : part.sourceType === \"document\" &&\n typeof part.title === \"string\" &&\n typeof part.mediaType === \"string\"),\n \"generative-ui\": (part) => isRecord(part.spec),\n \"tool-call\": (part) =>\n typeof part.toolCallId === \"string\" &&\n typeof part.toolName === \"string\" &&\n isRecord(part.args) &&\n typeof part.argsText === \"string\",\n } satisfies Record<\n (ThreadUserMessagePart | ThreadAssistantMessagePart)[\"type\"],\n StoredPartGuard\n >;\n const guards: Record<string, StoredPartGuard> = {\n ...storedPartGuards,\n ...overrides,\n };\n\n return (value: unknown): value is StoredMessagePart =>\n isRecord(value) &&\n typeof value.type === \"string\" &&\n (Object.hasOwn(guards, value.type)\n ? guards[value.type]!(value)\n : isReadableUnknownType(value.type));\n};\n\nexport const isStoredMessagePart = makeIsStoredMessagePart({}, () => true);\n\n/**\n * The aui/v0 decoder dereferences each present field rather than reading only\n * the one it needs, so this boundary checks every field it will touch, while\n * local storage stays no stricter than what the runtime itself writes.\n */\nconst isStoredAuiV0Part = makeIsStoredMessagePart(\n {\n reasoning: (part) =>\n (part.text === undefined || typeof part.text === \"string\") &&\n (part.unstable_summary === undefined ||\n typeof part.unstable_summary === \"string\") &&\n (typeof part.text === \"string\" ||\n typeof part.unstable_summary === \"string\"),\n \"tool-call\": (part) =>\n typeof part.toolCallId === \"string\" &&\n typeof part.toolName === \"string\" &&\n (part.args === undefined || isRecord(part.args)) &&\n (part.argsText === undefined || typeof part.argsText === \"string\") &&\n (part.args !== undefined || part.argsText !== undefined),\n },\n (type) => type.startsWith(\"data-\"),\n);\n\nconst rolePartTypes = {\n user: {\n text: true,\n image: true,\n file: true,\n data: true,\n audio: true,\n } satisfies Record<ThreadUserMessagePart[\"type\"], true>,\n assistant: {\n text: true,\n reasoning: true,\n \"tool-call\": true,\n source: true,\n file: true,\n image: true,\n data: true,\n \"generative-ui\": true,\n } satisfies Record<ThreadAssistantMessagePart[\"type\"], true>,\n};\n\n/**\n * `fromThreadMessageLike` converts each part through its role's branch and\n * throws on a part that branch does not carry, which would cost the whole\n * stored row. The aui/v0 boundary decodes through that converter, so it filters\n * by role as well as by shape. A part type unknown to this table is left to the\n * boundary predicate, which keeps the `data-` prefixes the converter handles.\n */\nexport const isStoredAuiV0RolePart = (\n role: ThreadMessage[\"role\"],\n value: unknown,\n): value is StoredMessagePart =>\n isStoredAuiV0Part(value) &&\n (role === \"system\"\n ? value.type === \"text\"\n : Object.hasOwn(rolePartTypes.assistant, value.type) ||\n Object.hasOwn(rolePartTypes.user, value.type)\n ? Object.hasOwn(rolePartTypes[role], value.type)\n : true);\n\nexport const parseStoredAttachment = (\n value: unknown,\n isPart: (value: unknown) => value is StoredMessagePart,\n): CompleteAttachment | null => {\n if (\n !isRecord(value) ||\n typeof value.id !== \"string\" ||\n typeof value.type !== \"string\" ||\n typeof value.name !== \"string\" ||\n !isRecord(value.status) ||\n value.status.type !== \"complete\" ||\n !Array.isArray(value.content)\n ) {\n return null;\n }\n\n return {\n ...value,\n content: value.content.filter(isPart),\n } as CompleteAttachment;\n};\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { MessageTiming } from "../../types/message.js";
2
- //#region src/runtime/utils/streaming-timing.d.ts
1
+ import type { MessageTiming } from "../../types/message.js";
3
2
  /**
4
3
  * Shape-specific accessors that adapt {@link stepStreamingTiming} /
5
4
  * {@link useStreamingTiming} to a runtime's message list. Each adapter
@@ -7,19 +6,19 @@ import { MessageTiming } from "../../types/message.js";
7
6
  * machine itself lives once in core.
8
7
  */
9
8
  export type StreamingTimingAccessors<TMessage> = {
10
- /** Resolve the id of the last assistant message, or `undefined` if none. */
11
- readonly getAssistantMessageId: (messages: readonly TMessage[]) => string | undefined;
12
- /** Total text length (incl. reasoning/thinking) of the assistant message. */
13
- readonly getTextLength: (messages: readonly TMessage[], messageId: string) => number;
14
- /** Number of tool calls recorded on the assistant message. */
15
- readonly getToolCallCount: (messages: readonly TMessage[], messageId: string) => number;
9
+ /** Resolve the id of the last assistant message, or `undefined` if none. */
10
+ readonly getAssistantMessageId: (messages: readonly TMessage[]) => string | undefined;
11
+ /** Total text length (incl. reasoning/thinking) of the assistant message. */
12
+ readonly getTextLength: (messages: readonly TMessage[], messageId: string) => number;
13
+ /** Number of tool calls recorded on the assistant message. */
14
+ readonly getToolCallCount: (messages: readonly TMessage[], messageId: string) => number;
16
15
  };
17
16
  export type StreamingTimingOptions = {
18
- /**
19
- * Estimate token count from a text length. Defaults to `Math.ceil(n / 4)`.
20
- * Adapters with real usage data can override this.
21
- */
22
- readonly estimateTokens?: (textLength: number) => number;
17
+ /**
18
+ * Estimate token count from a text length. Defaults to `Math.ceil(n / 4)`.
19
+ * Adapters with real usage data can override this.
20
+ */
21
+ readonly estimateTokens?: (textLength: number) => number;
23
22
  };
24
23
  /**
25
24
  * Mutable tracking state for a single in-flight assistant message. Kept
@@ -32,11 +31,11 @@ export type StreamingTimingOptions = {
32
31
  * estimate (derived from final length) count the same content.
33
32
  */
34
33
  export type StreamingTimingState = {
35
- readonly messageId: string;
36
- readonly startTime: number;
37
- readonly firstTokenTime?: number;
38
- readonly lastContentLength: number;
39
- readonly totalChunks: number;
34
+ readonly messageId: string;
35
+ readonly startTime: number;
36
+ readonly firstTokenTime?: number;
37
+ readonly lastContentLength: number;
38
+ readonly totalChunks: number;
40
39
  };
41
40
  /**
42
41
  * Advance the client-side streaming timing tracker by one update.
@@ -53,8 +52,7 @@ export type StreamingTimingState = {
53
52
  * reuse a stale growth delta and miss that last chunk).
54
53
  */
55
54
  export declare const stepStreamingTiming: <TMessage>(state: StreamingTimingState | null, messages: readonly TMessage[], isRunning: boolean, accessors: StreamingTimingAccessors<TMessage>, options: StreamingTimingOptions | undefined, now?: () => number) => {
56
- readonly state: StreamingTimingState | null;
57
- readonly timings: Record<string, MessageTiming>;
55
+ readonly state: StreamingTimingState | null;
56
+ readonly timings: Record<string, MessageTiming>;
58
57
  };
59
- //#endregion
60
58
  //# sourceMappingURL=streaming-timing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"streaming-timing.d.ts","names":[],"sources":["../../../src/runtime/utils/streaming-timing.ts"],"mappings":";;;;;;;;YAQY,yBAAyB;;WAE1B,wBACP,mBAAmB;;WAGZ,gBACP,mBAAmB,YACnB;;WAGO,mBACP,mBAAmB,YACnB;;YAIQ;;;;;WAKD,kBAAkB;;;;;;;;;;;;YAajB;WACD;WACA;WACA;WACA;WACA;;;;;;;;;;;;;;;;qBAuCE,sBAAuB,UAClC,OAAO,6BACP,mBAAmB,YACnB,oBACA,WAAW,yBAAyB,WACpC,SAAS,oCACT;WAES,OAAO;WACP,SAAS,eAAe"}
1
+ {"version":3,"file":"streaming-timing.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/streaming-timing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,+BAA4B;AAEzD;;;;;GAKG;AACH,MAAM,MAAM,wBAAwB,CAAC,QAAQ,IAAI;IAC/C,4EAA4E;IAC5E,QAAQ,CAAC,qBAAqB,EAAE,CAC9B,QAAQ,EAAE,SAAS,QAAQ,EAAE,KAC1B,MAAM,GAAG,SAAS,CAAC;IACxB,6EAA6E;IAC7E,QAAQ,CAAC,aAAa,EAAE,CACtB,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,SAAS,EAAE,MAAM,KACd,MAAM,CAAC;IACZ,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,EAAE,CACzB,QAAQ,EAAE,SAAS,QAAQ,EAAE,EAC7B,SAAS,EAAE,MAAM,KACd,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;CAC1D,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAwBF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,EAC1C,OAAO,oBAAoB,GAAG,IAAI,EAClC,UAAU,SAAS,QAAQ,EAAE,EAC7B,WAAW,OAAO,EAClB,WAAW,wBAAwB,CAAC,QAAQ,CAAC,EAC7C,SAAS,sBAAsB,GAAG,SAAS,EAC3C,MAAK,MAAM,MAAiB,KAC3B;IACD,QAAQ,CAAC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAgEjD,CAAC"}
@@ -1,57 +1,61 @@
1
- import { DataMessagePart, FileMessagePart, GenerativeUIMessagePart, ImageMessagePart, MessageModality, MessageStatus, MessageTiming, PartProviderMetadata, ReasoningMessagePart, SourceMessagePart, TextMessagePart, ThreadMessage, ThreadStep, ThreadUserMessagePart, ToolCallMessagePart, ToolCallMessagePartMcpMetadata, ToolCallTiming, Unstable_AudioMessagePart } from "../../types/message.js";
2
- import { CompleteAttachment } from "../../types/attachment.js";
3
- import { ReadonlyJSONObject, ReadonlyJSONValue } from "assistant-stream/utils";
4
- //#region src/runtime/utils/thread-message-like.d.ts
1
+ import type { ThreadStep, MessageStatus, ThreadMessage, ThreadAssistantMessagePart, ThreadUserMessagePart } from "../../types/message.js";
2
+ import type { CompleteAttachment } from "../../types/attachment.js";
3
+ import type { MessageModality, MessageTiming, PartProviderMetadata, ToolCallTiming, ToolCallMessagePart, ToolCallMessagePartMcpMetadata, ToolModelContentPart, Unstable_ToolInteractionLog } from "../../types/message.js";
4
+ import type { ReadonlyJSONObject, ReadonlyJSONValue } from "assistant-stream/utils";
5
5
  type DataPrefixedPart = {
6
- readonly type: `data-${string}`;
7
- readonly data: any;
6
+ readonly type: `data-${string}`;
7
+ readonly data: any;
8
8
  };
9
- export type ThreadMessageLike = {
10
- readonly role: "assistant" | "user" | "system";
11
- readonly content: string | readonly (TextMessagePart | ReasoningMessagePart | SourceMessagePart | ImageMessagePart | FileMessagePart | DataMessagePart | GenerativeUIMessagePart | Unstable_AudioMessagePart | DataPrefixedPart | {
9
+ type ThreadMessageLikePart = ThreadUserMessagePart | ThreadAssistantMessagePart | DataPrefixedPart | {
12
10
  readonly type: "tool-call";
13
11
  readonly toolCallId?: string;
14
12
  readonly toolName: string;
15
13
  readonly args?: ReadonlyJSONObject;
16
14
  readonly argsText?: string;
17
15
  readonly artifact?: any;
16
+ readonly modelContent?: readonly ToolModelContentPart[] | undefined;
18
17
  readonly result?: any | undefined;
19
18
  readonly isError?: boolean | undefined;
19
+ readonly isPreliminary?: boolean | undefined;
20
20
  readonly parentId?: string | undefined;
21
21
  readonly messages?: readonly ThreadMessage[] | undefined;
22
22
  readonly interrupt?: {
23
- type: "human";
24
- payload: unknown;
23
+ type: "human";
24
+ payload: unknown;
25
25
  };
26
26
  readonly timing?: ToolCallTiming;
27
27
  readonly mcp?: ToolCallMessagePartMcpMetadata;
28
28
  readonly providerMetadata?: PartProviderMetadata;
29
29
  readonly approval?: NonNullable<ToolCallMessagePart["approval"]>;
30
- })[];
31
- readonly id?: string | undefined;
32
- readonly createdAt?: Date | undefined;
33
- readonly status?: MessageStatus | undefined;
34
- readonly attachments?: readonly (Omit<CompleteAttachment, "content"> & {
35
- readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];
36
- })[] | undefined;
37
- readonly metadata?: {
38
- readonly unstable_state?: ReadonlyJSONValue | undefined;
39
- readonly unstable_annotations?: readonly ReadonlyJSONValue[] | undefined;
40
- readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;
41
- readonly steps?: readonly ThreadStep[] | undefined;
42
- readonly timing?: MessageTiming | undefined;
43
- readonly submittedFeedback?: {
44
- readonly type: "positive" | "negative";
45
- readonly comment?: string;
30
+ readonly unstable_interactions?: Unstable_ToolInteractionLog;
31
+ };
32
+ export type ThreadMessageLike = {
33
+ readonly role: "assistant" | "user" | "system";
34
+ readonly content: string | readonly ThreadMessageLikePart[];
35
+ readonly id?: string | undefined;
36
+ readonly createdAt?: Date | undefined;
37
+ readonly status?: MessageStatus | undefined;
38
+ readonly attachments?: readonly (Omit<CompleteAttachment, "content"> & {
39
+ readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];
40
+ })[] | undefined;
41
+ readonly metadata?: {
42
+ readonly unstable_state?: ReadonlyJSONValue | undefined;
43
+ readonly unstable_annotations?: readonly ReadonlyJSONValue[] | undefined;
44
+ readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;
45
+ readonly steps?: readonly ThreadStep[] | undefined;
46
+ readonly timing?: MessageTiming | undefined;
47
+ readonly submittedFeedback?: {
48
+ readonly type: "positive" | "negative";
49
+ readonly comment?: string;
50
+ } | undefined;
51
+ readonly isOptimistic?: boolean | undefined;
52
+ readonly modality?: MessageModality | undefined;
53
+ readonly custom?: Record<string, unknown> | undefined;
46
54
  } | undefined;
47
- readonly isOptimistic?: boolean | undefined;
48
- readonly modality?: MessageModality | undefined;
49
- readonly custom?: Record<string, unknown> | undefined;
50
- } | undefined;
51
55
  };
52
56
  /**
53
57
  * @deprecated This API is experimental and may change without notice.
54
58
  */
55
59
  export declare const fromThreadMessageLike: (like: ThreadMessageLike, fallbackId: string, fallbackStatus: MessageStatus) => ThreadMessage;
56
- //#endregion
60
+ export {};
57
61
  //# sourceMappingURL=thread-message-like.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread-message-like.d.ts","names":[],"sources":["../../../src/runtime/utils/thread-message-like.ts"],"mappings":";;;;KAmCK;WACM;WACA;;YAGC;WACD;WACA,4BAGD,kBACA,uBACA,oBACA,mBACA,kBACA,kBACA,0BACA,4BACA;aAEW;aACA;aACA;aACA,OAAO;aACP;aACA;aACA;aACA;aACA;aACA,oBAAoB;aACpB;MAAc;MAAe;;aAC7B,SAAS;aACT,MAAM;aACN,mBAAmB;aACnB,WAAW,YAAY;;WAGjC;WACA,YAAY;WACZ,SAAS;WACT,wBACK,KAAK;aACJ,mBAAmB,wBAAwB;;WAGjD;aAEM,iBAAiB;aACjB,gCACI;aAEJ,yBAAyB;aACzB,iBAAiB;aACjB,SAAS;aACT;eAEM;eACA;;aAGN;aACA,WAAW;aACX,SAAS;;;;;;qBAgBb,wBACX,MAAM,mBACN,oBACA,gBAAgB,kBACf"}
1
+ {"version":3,"file":"thread-message-like.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/thread-message-like.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { generateId } from "../../utils/id.js";
2
2
  import { parseDataUrl } from "../../utils/data-url.js";
3
+ import { readToolInteractionLog } from "./tool-interactions.js";
3
4
  import { parsePartialJsonObject } from "assistant-stream/utils";
4
5
  //#region src/runtime/utils/thread-message-like.ts
5
6
  const convertDataPrefixedPart = (type, data) => {
@@ -58,12 +59,14 @@ const fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
58
59
  case "data": return part;
59
60
  case "generative-ui": return part;
60
61
  case "tool-call": {
61
- const { parentId, messages, ...basePart } = part;
62
+ const { parentId, messages, unstable_interactions, ...basePart } = part;
63
+ const interactions = readToolInteractionLog(unstable_interactions);
62
64
  const commonProps = {
63
65
  ...basePart,
64
66
  toolCallId: part.toolCallId || `tool-${generateId()}`,
65
67
  ...parentId !== void 0 && { parentId },
66
- ...messages !== void 0 && { messages }
68
+ ...messages !== void 0 && { messages },
69
+ ...interactions !== void 0 && { unstable_interactions: interactions }
67
70
  };
68
71
  if (part.args) return {
69
72
  ...commonProps,
@@ -76,10 +79,12 @@ const fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
76
79
  argsText: part.argsText ?? ""
77
80
  };
78
81
  }
82
+ case "audio": throw new Error(`Unsupported assistant message part type: ${type}`);
79
83
  default: {
80
- const converted = convertDataPrefixedPart(type, part.data);
84
+ const dataType = type;
85
+ const converted = convertDataPrefixedPart(dataType, part.data);
81
86
  if (converted) return converted;
82
- throw new Error(`Unsupported assistant message part type: ${type}`);
87
+ throw new Error(`Unsupported assistant message part type: ${dataType}`);
83
88
  }
84
89
  }
85
90
  }).filter((c) => !!c),
@@ -107,10 +112,15 @@ const fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
107
112
  case "audio":
108
113
  case "file":
109
114
  case "data": return part;
115
+ case "reasoning":
116
+ case "source":
117
+ case "generative-ui":
118
+ case "tool-call": throw new Error(`Unsupported user message part type: ${type}`);
110
119
  default: {
111
- const converted = convertDataPrefixedPart(type, part.data);
120
+ const dataType = type;
121
+ const converted = convertDataPrefixedPart(dataType, part.data);
112
122
  if (converted) return converted;
113
- throw new Error(`Unsupported user message part type: ${type}`);
123
+ throw new Error(`Unsupported user message part type: ${dataType}`);
114
124
  }
115
125
  }
116
126
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"thread-message-like.js","names":["parsePartialJsonObject","generateId","parseDataUrl","ReasoningMessagePart","SourceMessagePart","ThreadStep","MessageStatus","ImageMessagePart","ThreadMessage","ThreadAssistantMessagePart","ThreadAssistantMessage","ThreadUserMessagePart","ThreadUserMessage","ThreadSystemMessage","FileMessagePart","DataMessagePart","GenerativeUIMessagePart","Unstable_AudioMessagePart","CompleteAttachment","MessageModality","MessageTiming","PartProviderMetadata","TextMessagePart","ToolCallTiming","ToolCallMessagePart","ToolCallMessagePartMcpMetadata","ReadonlyJSONObject","ReadonlyJSONValue","DataPrefixedPart","type","data","ThreadMessageLike","role","content","toolCallId","toolName","args","argsText","artifact","result","isError","parentId","messages","interrupt","payload","timing","mcp","providerMetadata","approval","NonNullable","id","createdAt","Date","status","attachments","Omit","metadata","unstable_state","unstable_annotations","unstable_data","steps","submittedFeedback","comment","isOptimistic","modality","custom","Record","convertDataPrefixedPart","startsWith","undefined","name","substring","fromThreadMessageLike","like","fallbackId","fallbackStatus","common","const","text","sanitizeImageContent","image","rest","mimeType","test","console","warn","length","Error","map","part","trim","unstable_summary","basePart","commonProps","JSON","stringify","converted","filter","c","att","unsupportedRole"],"sources":["../../../src/runtime/utils/thread-message-like.ts"],"sourcesContent":["import { parsePartialJsonObject } from \"assistant-stream/utils\";\nimport { generateId } from \"../../utils/id\";\nimport { parseDataUrl } from \"../../utils/data-url\";\nimport type {\n ReasoningMessagePart,\n SourceMessagePart,\n ThreadStep,\n MessageStatus,\n ImageMessagePart,\n ThreadMessage,\n ThreadAssistantMessagePart,\n ThreadAssistantMessage,\n ThreadUserMessagePart,\n ThreadUserMessage,\n ThreadSystemMessage,\n FileMessagePart,\n DataMessagePart,\n GenerativeUIMessagePart,\n Unstable_AudioMessagePart,\n} from \"../../types/message\";\nimport type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n MessageModality,\n MessageTiming,\n PartProviderMetadata,\n TextMessagePart,\n ToolCallTiming,\n ToolCallMessagePart,\n ToolCallMessagePartMcpMetadata,\n} from \"../../types/message\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\n\ntype DataPrefixedPart = {\n readonly type: `data-${string}`;\n readonly data: any;\n};\n\nexport type ThreadMessageLike = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly content:\n | string\n | readonly (\n | TextMessagePart\n | ReasoningMessagePart\n | SourceMessagePart\n | ImageMessagePart\n | FileMessagePart\n | DataMessagePart\n | GenerativeUIMessagePart\n | Unstable_AudioMessagePart\n | DataPrefixedPart\n | {\n readonly type: \"tool-call\";\n readonly toolCallId?: string;\n readonly toolName: string;\n readonly args?: ReadonlyJSONObject;\n readonly argsText?: string;\n readonly artifact?: any;\n readonly result?: any | undefined;\n readonly isError?: boolean | undefined;\n readonly parentId?: string | undefined;\n readonly messages?: readonly ThreadMessage[] | undefined;\n readonly interrupt?: { type: \"human\"; payload: unknown };\n readonly timing?: ToolCallTiming;\n readonly mcp?: ToolCallMessagePartMcpMetadata;\n readonly providerMetadata?: PartProviderMetadata;\n readonly approval?: NonNullable<ToolCallMessagePart[\"approval\"]>;\n }\n )[];\n readonly id?: string | undefined;\n readonly createdAt?: Date | undefined;\n readonly status?: MessageStatus | undefined;\n readonly attachments?:\n | readonly (Omit<CompleteAttachment, \"content\"> & {\n readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];\n })[]\n | undefined;\n readonly metadata?:\n | {\n readonly unstable_state?: ReadonlyJSONValue | undefined;\n readonly unstable_annotations?:\n | readonly ReadonlyJSONValue[]\n | undefined;\n readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;\n readonly steps?: readonly ThreadStep[] | undefined;\n readonly timing?: MessageTiming | undefined;\n readonly submittedFeedback?:\n | {\n readonly type: \"positive\" | \"negative\";\n readonly comment?: string;\n }\n | undefined;\n readonly isOptimistic?: boolean | undefined;\n readonly modality?: MessageModality | undefined;\n readonly custom?: Record<string, unknown> | undefined;\n }\n | undefined;\n};\n\nconst convertDataPrefixedPart = (\n type: string,\n data: unknown,\n): DataMessagePart | undefined => {\n if (!type.startsWith(\"data-\")) return undefined;\n return { type: \"data\", name: type.substring(5), data };\n};\n\n/**\n * @deprecated This API is experimental and may change without notice.\n */\nexport const fromThreadMessageLike = (\n like: ThreadMessageLike,\n fallbackId: string,\n fallbackStatus: MessageStatus,\n): ThreadMessage => {\n const { role, id, createdAt, attachments, status, metadata } = like;\n const common = {\n id: id ?? fallbackId,\n createdAt: createdAt ?? new Date(),\n };\n\n const content =\n typeof like.content === \"string\"\n ? [{ type: \"text\" as const, text: like.content }]\n : like.content;\n\n const sanitizeImageContent = ({\n image,\n ...rest\n }: ImageMessagePart): ImageMessagePart | null => {\n if (typeof image !== \"string\") return null;\n if (parseDataUrl(image)?.mimeType.startsWith(\"image/\")) {\n return { ...rest, image };\n }\n if (/^(https:\\/\\/|blob:)/i.test(image)) {\n return { ...rest, image };\n }\n console.warn(`Invalid image data format detected`);\n return null;\n };\n\n if (role !== \"user\" && attachments?.length)\n throw new Error(\"attachments are only supported for user messages\");\n\n if (role !== \"assistant\" && status)\n throw new Error(\"status is only supported for assistant messages\");\n\n if (role !== \"assistant\" && metadata?.steps)\n throw new Error(\"metadata.steps is only supported for assistant messages\");\n\n switch (role) {\n case \"assistant\":\n return {\n ...common,\n role,\n content: content\n .map((part): ThreadAssistantMessagePart | null => {\n const type = part.type;\n switch (type) {\n case \"text\":\n if (!part.text?.trim()) return null;\n return part;\n\n case \"reasoning\":\n if (!part.text?.trim() && !part.unstable_summary?.trim())\n return null;\n return part;\n\n case \"file\":\n case \"source\":\n return part;\n\n case \"image\":\n return sanitizeImageContent(part);\n\n case \"data\":\n return part;\n\n case \"generative-ui\":\n return part;\n\n case \"tool-call\": {\n const { parentId, messages, ...basePart } = part;\n const commonProps = {\n ...basePart,\n toolCallId: part.toolCallId || `tool-${generateId()}`,\n ...(parentId !== undefined && { parentId }),\n ...(messages !== undefined && { messages }),\n };\n\n if (part.args) {\n return {\n ...commonProps,\n args: part.args,\n argsText: part.argsText ?? JSON.stringify(part.args),\n };\n }\n return {\n ...commonProps,\n args: parsePartialJsonObject(part.argsText ?? \"\") ?? {},\n argsText: part.argsText ?? \"\",\n };\n }\n\n default: {\n const converted = convertDataPrefixedPart(\n type,\n (part as DataPrefixedPart).data,\n );\n if (converted) return converted;\n throw new Error(\n `Unsupported assistant message part type: ${type}`,\n );\n }\n }\n })\n .filter((c) => !!c),\n status: status ?? fallbackStatus,\n metadata: {\n unstable_state: metadata?.unstable_state ?? null,\n unstable_annotations: metadata?.unstable_annotations ?? [],\n unstable_data: metadata?.unstable_data ?? [],\n custom: metadata?.custom ?? {},\n steps: metadata?.steps ?? [],\n ...(metadata?.timing && { timing: metadata.timing }),\n ...(metadata?.submittedFeedback && {\n submittedFeedback: metadata.submittedFeedback,\n }),\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadAssistantMessage;\n\n case \"user\":\n return {\n ...common,\n role,\n content: content.map((part): ThreadUserMessagePart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n case \"image\":\n case \"audio\":\n case \"file\":\n case \"data\":\n return part;\n\n default: {\n const converted = convertDataPrefixedPart(\n type,\n (part as DataPrefixedPart).data,\n );\n if (converted) return converted;\n throw new Error(`Unsupported user message part type: ${type}`);\n }\n }\n }),\n attachments: (attachments ?? []).map((att) => ({\n ...att,\n content: att.content.map((part): ThreadUserMessagePart => {\n const converted = convertDataPrefixedPart(\n part.type,\n (part as DataPrefixedPart).data,\n );\n return converted ?? (part as ThreadUserMessagePart);\n }),\n })),\n metadata: {\n custom: metadata?.custom ?? {},\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadUserMessage;\n\n case \"system\":\n if (content.length !== 1 || content[0]!.type !== \"text\")\n throw new Error(\n \"System messages must have exactly one text message part.\",\n );\n\n return {\n ...common,\n role,\n content: content as [TextMessagePart],\n metadata: {\n custom: metadata?.custom ?? {},\n },\n } satisfies ThreadSystemMessage;\n\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"thread-message-like.js","names":["parsePartialJsonObject","generateId","parseDataUrl","ThreadStep","MessageStatus","ImageMessagePart","ThreadMessage","ThreadAssistantMessagePart","ThreadAssistantMessage","ThreadUserMessagePart","ThreadUserMessage","ThreadSystemMessage","DataMessagePart","CompleteAttachment","MessageModality","MessageTiming","PartProviderMetadata","TextMessagePart","ToolCallTiming","ToolCallMessagePart","ToolCallMessagePartMcpMetadata","ToolModelContentPart","Unstable_ToolInteractionLog","ReadonlyJSONObject","ReadonlyJSONValue","readToolInteractionLog","DataPrefixedPart","type","data","ThreadMessageLikePart","toolCallId","toolName","args","argsText","artifact","modelContent","result","isError","isPreliminary","parentId","messages","interrupt","payload","timing","mcp","providerMetadata","approval","NonNullable","unstable_interactions","ThreadMessageLike","role","content","id","createdAt","Date","status","attachments","Omit","metadata","unstable_state","unstable_annotations","unstable_data","steps","submittedFeedback","comment","isOptimistic","modality","custom","Record","convertDataPrefixedPart","startsWith","undefined","name","substring","fromThreadMessageLike","like","fallbackId","fallbackStatus","common","const","text","sanitizeImageContent","image","rest","mimeType","test","console","warn","length","Error","map","part","trim","unstable_summary","basePart","interactions","commonProps","JSON","stringify","userOnlyType","Exclude","dataType","converted","filter","c","assistantOnlyType","att","unsupportedRole"],"sources":["../../../src/runtime/utils/thread-message-like.ts"],"sourcesContent":["import { parsePartialJsonObject } from \"assistant-stream/utils\";\nimport { generateId } from \"../../utils/id\";\nimport { parseDataUrl } from \"../../utils/data-url\";\nimport type {\n ThreadStep,\n MessageStatus,\n ImageMessagePart,\n ThreadMessage,\n ThreadAssistantMessagePart,\n ThreadAssistantMessage,\n ThreadUserMessagePart,\n ThreadUserMessage,\n ThreadSystemMessage,\n DataMessagePart,\n} from \"../../types/message\";\nimport type { CompleteAttachment } from \"../../types/attachment\";\nimport type {\n MessageModality,\n MessageTiming,\n PartProviderMetadata,\n TextMessagePart,\n ToolCallTiming,\n ToolCallMessagePart,\n ToolCallMessagePartMcpMetadata,\n ToolModelContentPart,\n Unstable_ToolInteractionLog,\n} from \"../../types/message\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\nimport { readToolInteractionLog } from \"./tool-interactions\";\n\ntype DataPrefixedPart = {\n readonly type: `data-${string}`;\n readonly data: any;\n};\n\ntype ThreadMessageLikePart =\n | ThreadUserMessagePart\n | ThreadAssistantMessagePart\n | DataPrefixedPart\n | {\n readonly type: \"tool-call\";\n readonly toolCallId?: string;\n readonly toolName: string;\n readonly args?: ReadonlyJSONObject;\n readonly argsText?: string;\n readonly artifact?: any;\n readonly modelContent?: readonly ToolModelContentPart[] | undefined;\n readonly result?: any | undefined;\n readonly isError?: boolean | undefined;\n readonly isPreliminary?: boolean | undefined;\n readonly parentId?: string | undefined;\n readonly messages?: readonly ThreadMessage[] | undefined;\n readonly interrupt?: { type: \"human\"; payload: unknown };\n readonly timing?: ToolCallTiming;\n readonly mcp?: ToolCallMessagePartMcpMetadata;\n readonly providerMetadata?: PartProviderMetadata;\n readonly approval?: NonNullable<ToolCallMessagePart[\"approval\"]>;\n readonly unstable_interactions?: Unstable_ToolInteractionLog;\n };\n\nexport type ThreadMessageLike = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly content: string | readonly ThreadMessageLikePart[];\n readonly id?: string | undefined;\n readonly createdAt?: Date | undefined;\n readonly status?: MessageStatus | undefined;\n readonly attachments?:\n | readonly (Omit<CompleteAttachment, \"content\"> & {\n readonly content: readonly (ThreadUserMessagePart | DataPrefixedPart)[];\n })[]\n | undefined;\n readonly metadata?:\n | {\n readonly unstable_state?: ReadonlyJSONValue | undefined;\n readonly unstable_annotations?:\n | readonly ReadonlyJSONValue[]\n | undefined;\n readonly unstable_data?: readonly ReadonlyJSONValue[] | undefined;\n readonly steps?: readonly ThreadStep[] | undefined;\n readonly timing?: MessageTiming | undefined;\n readonly submittedFeedback?:\n | {\n readonly type: \"positive\" | \"negative\";\n readonly comment?: string;\n }\n | undefined;\n readonly isOptimistic?: boolean | undefined;\n readonly modality?: MessageModality | undefined;\n readonly custom?: Record<string, unknown> | undefined;\n }\n | undefined;\n};\n\nconst convertDataPrefixedPart = (\n type: string,\n data: unknown,\n): DataMessagePart | undefined => {\n if (!type.startsWith(\"data-\")) return undefined;\n return { type: \"data\", name: type.substring(5), data };\n};\n\n/**\n * @deprecated This API is experimental and may change without notice.\n */\nexport const fromThreadMessageLike = (\n like: ThreadMessageLike,\n fallbackId: string,\n fallbackStatus: MessageStatus,\n): ThreadMessage => {\n const { role, id, createdAt, attachments, status, metadata } = like;\n const common = {\n id: id ?? fallbackId,\n createdAt: createdAt ?? new Date(),\n };\n\n const content =\n typeof like.content === \"string\"\n ? [{ type: \"text\" as const, text: like.content }]\n : like.content;\n\n const sanitizeImageContent = ({\n image,\n ...rest\n }: ImageMessagePart): ImageMessagePart | null => {\n if (typeof image !== \"string\") return null;\n if (parseDataUrl(image)?.mimeType.startsWith(\"image/\")) {\n return { ...rest, image };\n }\n if (/^(https:\\/\\/|blob:)/i.test(image)) {\n return { ...rest, image };\n }\n console.warn(`Invalid image data format detected`);\n return null;\n };\n\n if (role !== \"user\" && attachments?.length)\n throw new Error(\"attachments are only supported for user messages\");\n\n if (role !== \"assistant\" && status)\n throw new Error(\"status is only supported for assistant messages\");\n\n if (role !== \"assistant\" && metadata?.steps)\n throw new Error(\"metadata.steps is only supported for assistant messages\");\n\n switch (role) {\n case \"assistant\":\n return {\n ...common,\n role,\n content: content\n .map((part): ThreadAssistantMessagePart | null => {\n const type = part.type;\n switch (type) {\n case \"text\":\n if (!part.text?.trim()) return null;\n return part;\n\n case \"reasoning\":\n if (!part.text?.trim() && !part.unstable_summary?.trim())\n return null;\n return part;\n\n case \"file\":\n case \"source\":\n return part;\n\n case \"image\":\n return sanitizeImageContent(part);\n\n case \"data\":\n return part;\n\n case \"generative-ui\":\n return part;\n\n case \"tool-call\": {\n const {\n parentId,\n messages,\n unstable_interactions,\n ...basePart\n } = part;\n const interactions = readToolInteractionLog(\n unstable_interactions,\n );\n const commonProps = {\n ...basePart,\n toolCallId: part.toolCallId || `tool-${generateId()}`,\n ...(parentId !== undefined && { parentId }),\n ...(messages !== undefined && { messages }),\n ...(interactions !== undefined && {\n unstable_interactions: interactions,\n }),\n };\n\n if (part.args) {\n return {\n ...commonProps,\n args: part.args,\n argsText: part.argsText ?? JSON.stringify(part.args),\n };\n }\n return {\n ...commonProps,\n args: parsePartialJsonObject(part.argsText ?? \"\") ?? {},\n argsText: part.argsText ?? \"\",\n };\n }\n\n case \"audio\": {\n const userOnlyType: Exclude<\n typeof type,\n ThreadAssistantMessagePart[\"type\"]\n > = type;\n throw new Error(\n `Unsupported assistant message part type: ${userOnlyType}`,\n );\n }\n\n default: {\n const dataType: `data-${string}` = type;\n const converted = convertDataPrefixedPart(dataType, part.data);\n if (converted) return converted;\n throw new Error(\n `Unsupported assistant message part type: ${dataType}`,\n );\n }\n }\n })\n .filter((c) => !!c),\n status: status ?? fallbackStatus,\n metadata: {\n unstable_state: metadata?.unstable_state ?? null,\n unstable_annotations: metadata?.unstable_annotations ?? [],\n unstable_data: metadata?.unstable_data ?? [],\n custom: metadata?.custom ?? {},\n steps: metadata?.steps ?? [],\n ...(metadata?.timing && { timing: metadata.timing }),\n ...(metadata?.submittedFeedback && {\n submittedFeedback: metadata.submittedFeedback,\n }),\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadAssistantMessage;\n\n case \"user\":\n return {\n ...common,\n role,\n content: content.map((part): ThreadUserMessagePart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n case \"image\":\n case \"audio\":\n case \"file\":\n case \"data\":\n return part;\n\n case \"reasoning\":\n case \"source\":\n case \"generative-ui\":\n case \"tool-call\": {\n const assistantOnlyType: Exclude<\n typeof type,\n ThreadUserMessagePart[\"type\"]\n > = type;\n throw new Error(\n `Unsupported user message part type: ${assistantOnlyType}`,\n );\n }\n\n default: {\n const dataType: `data-${string}` = type;\n const converted = convertDataPrefixedPart(dataType, part.data);\n if (converted) return converted;\n throw new Error(\n `Unsupported user message part type: ${dataType}`,\n );\n }\n }\n }),\n attachments: (attachments ?? []).map((att) => ({\n ...att,\n content: att.content.map((part): ThreadUserMessagePart => {\n const converted = convertDataPrefixedPart(\n part.type,\n (part as DataPrefixedPart).data,\n );\n return converted ?? (part as ThreadUserMessagePart);\n }),\n })),\n metadata: {\n custom: metadata?.custom ?? {},\n ...(metadata?.isOptimistic && { isOptimistic: true }),\n ...(metadata?.modality && { modality: metadata.modality }),\n },\n } satisfies ThreadUserMessage;\n\n case \"system\":\n if (content.length !== 1 || content[0]!.type !== \"text\")\n throw new Error(\n \"System messages must have exactly one text message part.\",\n );\n\n return {\n ...common,\n role,\n content: content as [TextMessagePart],\n metadata: {\n custom: metadata?.custom ?? {},\n },\n } satisfies ThreadSystemMessage;\n\n default: {\n const unsupportedRole: never = role;\n throw new Error(`Unknown message role: ${unsupportedRole}`);\n }\n }\n};\n"],"mappings":";;;;;AAgGA,MAAMqE,2BACJ1C,MACAC,SACgC;CAChC,IAAI,CAACD,KAAK2C,WAAW,OAAO,GAAG,OAAOC,KAAAA;CACtC,OAAO;EAAE5C,MAAM;EAAQ6C,MAAM7C,KAAK8C,UAAU,CAAC;EAAG7C;CAAK;AACvD;;;;AAKA,MAAa8C,yBACXC,MACAC,YACAC,mBACkB;CAClB,MAAM,EAAE3B,MAAME,IAAIC,WAAWG,aAAaD,QAAQG,aAAaiB;CAC/D,MAAMG,SAAS;EACb1B,IAAIA,MAAMwB;EACVvB,WAAWA,6BAAa,IAAIC,KAAK;CACnC;CAEA,MAAMH,UACJ,OAAOwB,KAAKxB,YAAY,WACpB,CAAC;EAAExB,MAAM;EAAiBqD,MAAML,KAAKxB;CAAQ,CAAC,IAC9CwB,KAAKxB;CAEX,MAAM8B,wBAAwB,EAC5BC,OACA,GAAGC,WAC4C;EAC/C,IAAI,OAAOD,UAAU,UAAU,OAAO;EACtC,IAAIhF,aAAagF,KAAK,CAAC,EAAEE,SAASd,WAAW,QAAQ,GACnD,OAAO;GAAE,GAAGa;GAAMD;EAAM;EAE1B,IAAI,uBAAuBG,KAAKH,KAAK,GACnC,OAAO;GAAE,GAAGC;GAAMD;EAAM;EAE1BI,QAAQC,KAAK,oCAAoC;EACjD,OAAO;CACT;CAEA,IAAIrC,SAAS,UAAUM,aAAagC,QAClC,MAAM,IAAIC,MAAM,kDAAkD;CAEpE,IAAIvC,SAAS,eAAeK,QAC1B,MAAM,IAAIkC,MAAM,iDAAiD;CAEnE,IAAIvC,SAAS,eAAeQ,UAAUI,OACpC,MAAM,IAAI2B,MAAM,yDAAyD;CAE3E,QAAQvC,MAAR;EACE,KAAK,aACH,OAAO;GACL,GAAG4B;GACH5B;GACAC,SAASA,QACNuC,KAAKC,SAA4C;IAChD,MAAMhE,OAAOgE,KAAKhE;IAClB,QAAQA,MAAR;KACE,KAAK;MACH,IAAI,CAACgE,KAAKX,MAAMY,KAAK,GAAG,OAAO;MAC/B,OAAOD;KAET,KAAK;MACH,IAAI,CAACA,KAAKX,MAAMY,KAAK,KAAK,CAACD,KAAKE,kBAAkBD,KAAK,GACrD,OAAO;MACT,OAAOD;KAET,KAAK;KACL,KAAK,UACH,OAAOA;KAET,KAAK,SACH,OAAOV,qBAAqBU,IAAI;KAElC,KAAK,QACH,OAAOA;KAET,KAAK,iBACH,OAAOA;KAET,KAAK,aAAa;MAChB,MAAM,EACJpD,UACAC,UACAQ,uBACA,GAAG8C,aACDH;MACJ,MAAMI,eAAetE,uBACnBuB,qBACF;MACA,MAAMgD,cAAc;OAClB,GAAGF;OACHhE,YAAY6D,KAAK7D,cAAc,QAAQ7B,WAAW;OAClD,GAAIsC,aAAagC,KAAAA,KAAa,EAAEhC,SAAS;OACzC,GAAIC,aAAa+B,KAAAA,KAAa,EAAE/B,SAAS;OACzC,GAAIuD,iBAAiBxB,KAAAA,KAAa,EAChCvB,uBAAuB+C,aACzB;MACF;MAEA,IAAIJ,KAAK3D,MACP,OAAO;OACL,GAAGgE;OACHhE,MAAM2D,KAAK3D;OACXC,UAAU0D,KAAK1D,YAAYgE,KAAKC,UAAUP,KAAK3D,IAAI;MACrD;MAEF,OAAO;OACL,GAAGgE;OACHhE,MAAMhC,uBAAuB2F,KAAK1D,YAAY,EAAE,KAAK,CAAC;OACtDA,UAAU0D,KAAK1D,YAAY;MAC7B;KACF;KAEA,KAAK,SAKH,MAAM,IAAIwD,MACR,4CAA4CU,MAC9C;KAGF,SAAS;MACP,MAAME,WAA6B1E;MACnC,MAAM2E,YAAYjC,wBAAwBgC,UAAUV,KAAK/D,IAAI;MAC7D,IAAI0E,WAAW,OAAOA;MACtB,MAAM,IAAIb,MACR,4CAA4CY,UAC9C;KACF;IACF;GACF,CAAC,CAAC,CACDE,QAAQC,MAAM,CAAC,CAACA,CAAC;GACpBjD,QAAQA,UAAUsB;GAClBnB,UAAU;IACRC,gBAAgBD,UAAUC,kBAAkB;IAC5CC,sBAAsBF,UAAUE,wBAAwB,CAAA;IACxDC,eAAeH,UAAUG,iBAAiB,CAAA;IAC1CM,QAAQT,UAAUS,UAAU,CAAC;IAC7BL,OAAOJ,UAAUI,SAAS,CAAA;IAC1B,GAAIJ,UAAUf,UAAU,EAAEA,QAAQe,SAASf,OAAO;IAClD,GAAIe,UAAUK,qBAAqB,EACjCA,mBAAmBL,SAASK,kBAC9B;IACA,GAAIL,UAAUO,gBAAgB,EAAEA,cAAc,KAAK;IACnD,GAAIP,UAAUQ,YAAY,EAAEA,UAAUR,SAASQ,SAAS;GAC1D;EACF;EAEF,KAAK,QACH,OAAO;GACL,GAAGY;GACH5B;GACAC,SAASA,QAAQuC,KAAKC,SAAgC;IACpD,MAAMhE,OAAOgE,KAAKhE;IAClB,QAAQA,MAAR;KACE,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK,QACH,OAAOgE;KAET,KAAK;KACL,KAAK;KACL,KAAK;KACL,KAAK,aAKH,MAAM,IAAIF,MACR,uCAAuCgB,MACzC;KAGF,SAAS;MACP,MAAMJ,WAA6B1E;MACnC,MAAM2E,YAAYjC,wBAAwBgC,UAAUV,KAAK/D,IAAI;MAC7D,IAAI0E,WAAW,OAAOA;MACtB,MAAM,IAAIb,MACR,uCAAuCY,UACzC;KACF;IACF;GACF,CAAC;GACD7C,cAAcA,eAAe,CAAA,EAAA,CAAIkC,KAAKgB,SAAS;IAC7C,GAAGA;IACHvD,SAASuD,IAAIvD,QAAQuC,KAAKC,SAAgC;KAKxD,OAJkBtB,wBAChBsB,KAAKhE,MACJgE,KAA0B/D,IAEtB0E,KAAcX;IACvB,CAAC;GACH,EAAE;GACFjC,UAAU;IACRS,QAAQT,UAAUS,UAAU,CAAC;IAC7B,GAAIT,UAAUO,gBAAgB,EAAEA,cAAc,KAAK;IACnD,GAAIP,UAAUQ,YAAY,EAAEA,UAAUR,SAASQ,SAAS;GAC1D;EACF;EAEF,KAAK;GACH,IAAIf,QAAQqC,WAAW,KAAKrC,QAAQ,EAAE,CAAExB,SAAS,QAC/C,MAAM,IAAI8D,MACR,0DACF;GAEF,OAAO;IACL,GAAGX;IACH5B;IACSC;IACTO,UAAU,EACRS,QAAQT,UAAUS,UAAU,CAAC,EAC/B;GACF;EAEF,SAEE,MAAM,IAAIsB,MAAM,yBAAyBkB,MAAiB;CAE9D;AACF"}
@@ -1,7 +1,6 @@
1
- import { ThreadRuntimeCore } from "../interfaces/thread-runtime-core.js";
2
- //#region src/runtime/utils/thread-runtime-lifecycle.d.ts
3
- export declare const captureThreadRuntimeGeneration: (runtime: ThreadRuntimeCore) => number;
4
- export declare const isThreadRuntimeGenerationCurrent: (runtime: ThreadRuntimeCore, generation: number) => boolean;
1
+ import type { ThreadRuntimeCore } from "../interfaces/thread-runtime-core.js";
2
+ export declare const captureThreadRuntimeGeneration: (runtime: ThreadRuntimeCore) => AbortSignal;
5
3
  export declare const invalidateThreadRuntime: (runtime: ThreadRuntimeCore) => void;
6
- //#endregion
4
+ export declare const supersedeThreadRuntime: (runtime: ThreadRuntimeCore) => void;
5
+ export declare const disposeThreadRuntime: (runtime: ThreadRuntimeCore) => void;
7
6
  //# sourceMappingURL=thread-runtime-lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread-runtime-lifecycle.d.ts","names":[],"sources":["../../../src/runtime/utils/thread-runtime-lifecycle.ts"],"mappings":";;qBAOa,iCAAkC,SAAS;qBAG3C,mCACX,SAAS,mBACT;qBAGW,0BAA2B,SAAS"}
1
+ {"version":3,"file":"thread-runtime-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/runtime/utils/thread-runtime-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,6CAA0C;AAO3E,eAAO,MAAM,8BAA8B,GACzC,SAAS,iBAAiB,KACzB,WAOF,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,SAAS,iBAAiB,SAKjE,CAAC;AAgBF,eAAO,MAAM,sBAAsB,GAAI,SAAS,iBAAiB,SAGhE,CAAC;AAIF,eAAO,MAAM,oBAAoB,GAAI,SAAS,iBAAiB,SAK9D,CAAC"}
@@ -1,11 +1,38 @@
1
1
  //#region src/runtime/utils/thread-runtime-lifecycle.ts
2
2
  const generations = /* @__PURE__ */ new WeakMap();
3
- const captureThreadRuntimeGeneration = (runtime) => generations.get(runtime) ?? 0;
4
- const isThreadRuntimeGenerationCurrent = (runtime, generation) => captureThreadRuntimeGeneration(runtime) === generation;
3
+ const captureThreadRuntimeGeneration = (runtime) => {
4
+ let generation = generations.get(runtime);
5
+ if (!generation) {
6
+ generation = new AbortController();
7
+ generations.set(runtime, generation);
8
+ }
9
+ return generation.signal;
10
+ };
5
11
  const invalidateThreadRuntime = (runtime) => {
6
- generations.set(runtime, captureThreadRuntimeGeneration(runtime) + 1);
12
+ const generation = generations.get(runtime);
13
+ if (generation?.signal.aborted) return;
14
+ generations.delete(runtime);
15
+ generation?.abort();
16
+ };
17
+ const endVoiceSession = (runtime) => {
18
+ if (!runtime.voice) return;
19
+ try {
20
+ runtime.disconnectVoice();
21
+ } catch (error) {
22
+ console.error("[assistant-ui] Voice cleanup threw while discarding a thread runtime", error);
23
+ }
24
+ };
25
+ const supersedeThreadRuntime = (runtime) => {
26
+ endVoiceSession(runtime);
27
+ invalidateThreadRuntime(runtime);
28
+ };
29
+ const disposeThreadRuntime = (runtime) => {
30
+ const generation = generations.get(runtime) ?? new AbortController();
31
+ generations.set(runtime, generation);
32
+ generation.abort();
33
+ endVoiceSession(runtime);
7
34
  };
8
35
  //#endregion
9
- export { captureThreadRuntimeGeneration, invalidateThreadRuntime, isThreadRuntimeGenerationCurrent };
36
+ export { captureThreadRuntimeGeneration, disposeThreadRuntime, invalidateThreadRuntime, supersedeThreadRuntime };
10
37
 
11
38
  //# sourceMappingURL=thread-runtime-lifecycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread-runtime-lifecycle.js","names":["ThreadRuntimeCore","generations","WeakMap","captureThreadRuntimeGeneration","runtime","get","isThreadRuntimeGenerationCurrent","generation","invalidateThreadRuntime","set"],"sources":["../../../src/runtime/utils/thread-runtime-lifecycle.ts"],"sourcesContent":["import type { ThreadRuntimeCore } from \"../interfaces/thread-runtime-core\";\n\n// Invalidation must stay re-entrant: StrictMode's simulated unmount runs the\n// effect cleanup while the runtime object survives into the next mount, so a\n// permanent disposed mark would swallow every later append.\nconst generations = new WeakMap<ThreadRuntimeCore, number>();\n\nexport const captureThreadRuntimeGeneration = (runtime: ThreadRuntimeCore) =>\n generations.get(runtime) ?? 0;\n\nexport const isThreadRuntimeGenerationCurrent = (\n runtime: ThreadRuntimeCore,\n generation: number,\n) => captureThreadRuntimeGeneration(runtime) === generation;\n\nexport const invalidateThreadRuntime = (runtime: ThreadRuntimeCore) => {\n generations.set(runtime, captureThreadRuntimeGeneration(runtime) + 1);\n};\n"],"mappings":";AAKA,MAAMC,8BAAc,IAAIC,QAAmC;AAE3D,MAAaC,kCAAkCC,YAC7CH,YAAYI,IAAID,OAAO,KAAK;AAE9B,MAAaE,oCACXF,SACAG,eACGJ,+BAA+BC,OAAO,MAAMG;AAEjD,MAAaC,2BAA2BJ,YAA+B;CACrEH,YAAYQ,IAAIL,SAASD,+BAA+BC,OAAO,IAAI,CAAC;AACtE"}
1
+ {"version":3,"file":"thread-runtime-lifecycle.js","names":["ThreadRuntimeCore","generations","WeakMap","AbortController","captureThreadRuntimeGeneration","runtime","AbortSignal","generation","get","set","signal","invalidateThreadRuntime","aborted","delete","abort","endVoiceSession","voice","disconnectVoice","error","console","supersedeThreadRuntime","disposeThreadRuntime"],"sources":["../../../src/runtime/utils/thread-runtime-lifecycle.ts"],"sourcesContent":["import type { ThreadRuntimeCore } from \"../interfaces/thread-runtime-core\";\n\n// Invalidation must stay re-entrant: StrictMode's simulated unmount runs the\n// effect cleanup while the runtime object survives into the next mount, so a\n// permanent disposed mark would swallow every later append.\nconst generations = new WeakMap<ThreadRuntimeCore, AbortController>();\n\nexport const captureThreadRuntimeGeneration = (\n runtime: ThreadRuntimeCore,\n): AbortSignal => {\n let generation = generations.get(runtime);\n if (!generation) {\n generation = new AbortController();\n generations.set(runtime, generation);\n }\n return generation.signal;\n};\n\nexport const invalidateThreadRuntime = (runtime: ThreadRuntimeCore) => {\n const generation = generations.get(runtime);\n if (generation?.signal.aborted) return;\n generations.delete(runtime);\n generation?.abort();\n};\n\nconst endVoiceSession = (runtime: ThreadRuntimeCore) => {\n if (!runtime.voice) return;\n try {\n runtime.disconnectVoice();\n } catch (error) {\n console.error(\n \"[assistant-ui] Voice cleanup threw while discarding a thread runtime\",\n error,\n );\n }\n};\n\n// A successor keeps the same thread: the call ends as if hung up, in-flight work\n// (a commit waiting on a load included) is fenced, and later sends still land.\nexport const supersedeThreadRuntime = (runtime: ThreadRuntimeCore) => {\n endVoiceSession(runtime);\n invalidateThreadRuntime(runtime);\n};\n\n// Disposal is that permanent mark, so only an owner that drops the runtime for\n// good may call it; tap runs every effect cleanup on a soft unmount as well.\nexport const disposeThreadRuntime = (runtime: ThreadRuntimeCore) => {\n const generation = generations.get(runtime) ?? new AbortController();\n generations.set(runtime, generation);\n generation.abort();\n endVoiceSession(runtime);\n};\n"],"mappings":";AAKA,MAAMC,8BAAc,IAAIC,QAA4C;AAEpE,MAAaE,kCACXC,YACgB;CAChB,IAAIE,aAAaN,YAAYO,IAAIH,OAAO;CACxC,IAAI,CAACE,YAAY;EACfA,aAAa,IAAIJ,gBAAgB;EACjCF,YAAYQ,IAAIJ,SAASE,UAAU;CACrC;CACA,OAAOA,WAAWG;AACpB;AAEA,MAAaC,2BAA2BN,YAA+B;CACrE,MAAME,aAAaN,YAAYO,IAAIH,OAAO;CAC1C,IAAIE,YAAYG,OAAOE,SAAS;CAChCX,YAAYY,OAAOR,OAAO;CAC1BE,YAAYO,MAAM;AACpB;AAEA,MAAMC,mBAAmBV,YAA+B;CACtD,IAAI,CAACA,QAAQW,OAAO;CACpB,IAAI;EACFX,QAAQY,gBAAgB;CAC1B,SAASC,OAAO;EACdC,QAAQD,MACN,wEACAA,KACF;CACF;AACF;AAIA,MAAaE,0BAA0Bf,YAA+B;CACpEU,gBAAgBV,OAAO;CACvBM,wBAAwBN,OAAO;AACjC;AAIA,MAAagB,wBAAwBhB,YAA+B;CAClE,MAAME,aAAaN,YAAYO,IAAIH,OAAO,KAAK,IAAIF,gBAAgB;CACnEF,YAAYQ,IAAIJ,SAASE,UAAU;CACnCA,WAAWO,MAAM;CACjBC,gBAAgBV,OAAO;AACzB"}