@assistant-ui/core 0.3.18 → 0.3.20

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 (804) hide show
  1. package/dist/adapters/attachment.d.ts +9 -10
  2. package/dist/adapters/attachment.d.ts.map +1 -1
  3. package/dist/adapters/attachment.js +2 -1
  4. package/dist/adapters/attachment.js.map +1 -1
  5. package/dist/adapters/directive-formatter.d.ts +1 -2
  6. package/dist/adapters/directive-formatter.d.ts.map +1 -1
  7. package/dist/adapters/feedback.d.ts +2 -2
  8. package/dist/adapters/feedback.d.ts.map +1 -1
  9. package/dist/adapters/speech.d.ts +6 -7
  10. package/dist/adapters/speech.d.ts.map +1 -1
  11. package/dist/adapters/speech.js +13 -3
  12. package/dist/adapters/speech.js.map +1 -1
  13. package/dist/adapters/suggestion.d.ts +5 -6
  14. package/dist/adapters/suggestion.d.ts.map +1 -1
  15. package/dist/adapters/thread-history.d.ts +10 -7
  16. package/dist/adapters/thread-history.d.ts.map +1 -1
  17. package/dist/adapters/trigger.d.ts +1 -2
  18. package/dist/adapters/trigger.d.ts.map +1 -1
  19. package/dist/adapters/voice.d.ts +5 -6
  20. package/dist/adapters/voice.d.ts.map +1 -1
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.js.map +1 -1
  23. package/dist/internal/duplicate-detection.d.ts +1 -2
  24. package/dist/internal/duplicate-detection.d.ts.map +1 -1
  25. package/dist/internal.d.ts +1 -1
  26. package/dist/model-context/frame/host.d.ts +1 -2
  27. package/dist/model-context/frame/host.d.ts.map +1 -1
  28. package/dist/model-context/frame/host.js +26 -11
  29. package/dist/model-context/frame/host.js.map +1 -1
  30. package/dist/model-context/frame/provider.d.ts +1 -2
  31. package/dist/model-context/frame/provider.d.ts.map +1 -1
  32. package/dist/model-context/frame/types.d.ts +5 -6
  33. package/dist/model-context/frame/types.d.ts.map +1 -1
  34. package/dist/model-context/interactable-composer-metadata.d.ts +9 -10
  35. package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
  36. package/dist/model-context/interactable-composer-metadata.js +11 -9
  37. package/dist/model-context/interactable-composer-metadata.js.map +1 -1
  38. package/dist/model-context/registry-handles.d.ts +3 -4
  39. package/dist/model-context/registry-handles.d.ts.map +1 -1
  40. package/dist/model-context/registry.d.ts +1 -2
  41. package/dist/model-context/registry.d.ts.map +1 -1
  42. package/dist/model-context/tool-call-text.d.ts +2 -3
  43. package/dist/model-context/tool-call-text.d.ts.map +1 -1
  44. package/dist/model-context/tool.d.ts +2 -3
  45. package/dist/model-context/tool.d.ts.map +1 -1
  46. package/dist/model-context/types.d.ts +8 -9
  47. package/dist/model-context/types.d.ts.map +1 -1
  48. package/dist/react/AssistantProvider.d.ts +3 -4
  49. package/dist/react/AssistantProvider.d.ts.map +1 -1
  50. package/dist/react/AssistantRuntimeProvider.d.ts +1 -2
  51. package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
  52. package/dist/react/RuntimeAdapter.d.ts +2 -3
  53. package/dist/react/RuntimeAdapter.d.ts.map +1 -1
  54. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +4 -5
  55. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  56. package/dist/react/adapters/LocalStorageThreadListAdapter.js +43 -19
  57. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  58. package/dist/react/adapters/TitleGenerationAdapter.d.ts +2 -3
  59. package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
  60. package/dist/react/client/AdaptedRemoteThread.d.ts +1 -2
  61. package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
  62. package/dist/react/client/DataRenderers.d.ts +1 -2
  63. package/dist/react/client/DataRenderers.d.ts.map +1 -1
  64. package/dist/react/client/DataRenderers.js +20 -15
  65. package/dist/react/client/DataRenderers.js.map +1 -1
  66. package/dist/react/client/InMemoryThreadList.d.ts +3 -4
  67. package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
  68. package/dist/react/client/Interactables.d.ts +1 -2
  69. package/dist/react/client/Interactables.d.ts.map +1 -1
  70. package/dist/react/client/Interactables.js +11 -5
  71. package/dist/react/client/Interactables.js.map +1 -1
  72. package/dist/react/client/RemoteThreadList.d.ts +2 -3
  73. package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
  74. package/dist/react/client/RemoteThreadList.js +3 -2
  75. package/dist/react/client/RemoteThreadList.js.map +1 -1
  76. package/dist/react/client/Tools.d.ts +2 -2
  77. package/dist/react/client/Tools.d.ts.map +1 -1
  78. package/dist/react/client/interactable-model-context.d.ts +2 -3
  79. package/dist/react/client/interactable-model-context.d.ts.map +1 -1
  80. package/dist/react/client/interactable-model-context.js +3 -2
  81. package/dist/react/client/interactable-model-context.js.map +1 -1
  82. package/dist/react/index.d.ts +2 -2
  83. package/dist/react/index.js +2 -2
  84. package/dist/react/interactables-legacy/Interactables.d.ts +1 -2
  85. package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
  86. package/dist/react/interactables-legacy/interactable-model-context.d.ts +2 -3
  87. package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
  88. package/dist/react/interactables-legacy/scopes.d.ts +9 -10
  89. package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
  90. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +2 -3
  91. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
  92. package/dist/react/interactables-legacy/useAssistantInteractable.js +3 -0
  93. package/dist/react/interactables-legacy/useAssistantInteractable.js.map +1 -1
  94. package/dist/react/interactables-legacy/useInteractableState.d.ts +1 -2
  95. package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
  96. package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +1 -2
  97. package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
  98. package/dist/react/model-context/define-mcp-toolkit.d.ts +4 -5
  99. package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
  100. package/dist/react/model-context/define-toolkit.d.ts +2 -3
  101. package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
  102. package/dist/react/model-context/external-tool.d.ts +1 -2
  103. package/dist/react/model-context/external-tool.d.ts.map +1 -1
  104. package/dist/react/model-context/human-tool.d.ts +3 -4
  105. package/dist/react/model-context/human-tool.d.ts.map +1 -1
  106. package/dist/react/model-context/interactableTool.d.ts +3 -4
  107. package/dist/react/model-context/interactableTool.d.ts.map +1 -1
  108. package/dist/react/model-context/makeAssistantDataUI.d.ts +2 -3
  109. package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
  110. package/dist/react/model-context/makeAssistantTool.d.ts +2 -3
  111. package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
  112. package/dist/react/model-context/makeAssistantToolUI.d.ts +2 -3
  113. package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
  114. package/dist/react/model-context/provider-tool.d.ts +2 -3
  115. package/dist/react/model-context/provider-tool.d.ts.map +1 -1
  116. package/dist/react/model-context/stub-tool.d.ts +1 -2
  117. package/dist/react/model-context/stub-tool.d.ts.map +1 -1
  118. package/dist/react/model-context/toolbox.d.ts +9 -10
  119. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  120. package/dist/react/model-context/useAssistantContext.d.ts +2 -2
  121. package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
  122. package/dist/react/model-context/useAssistantDataUI.d.ts +2 -3
  123. package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
  124. package/dist/react/model-context/useAssistantInstructions.d.ts +2 -2
  125. package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
  126. package/dist/react/model-context/useAssistantTool.d.ts +2 -3
  127. package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
  128. package/dist/react/model-context/useAssistantToolUI.d.ts +2 -3
  129. package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
  130. package/dist/react/model-context/useAuiToolOverrides.d.ts +1 -2
  131. package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
  132. package/dist/react/model-context/useInlineRender.d.ts +1 -2
  133. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  134. package/dist/react/model-context/useInteractable.d.ts +4 -5
  135. package/dist/react/model-context/useInteractable.d.ts.map +1 -1
  136. package/dist/react/model-context/useInteractable.js +4 -1
  137. package/dist/react/model-context/useInteractable.js.map +1 -1
  138. package/dist/react/model-context/useInteractableState.d.ts +1 -2
  139. package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
  140. package/dist/react/model-context/useInteractableVersions.d.ts +1 -2
  141. package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
  142. package/dist/react/model-context/useInteractableVersions.js +1 -1
  143. package/dist/react/model-context/useToolArgsStatus.d.ts +2 -3
  144. package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
  145. package/dist/react/primitive-hooks/useActionBarCopy.d.ts +2 -3
  146. package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
  147. package/dist/react/primitive-hooks/useActionBarEdit.d.ts +1 -2
  148. package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
  149. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +2 -3
  150. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
  151. package/dist/react/primitive-hooks/useActionBarReload.d.ts +1 -2
  152. package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
  153. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +1 -2
  154. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
  155. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +1 -2
  156. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
  157. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +1 -2
  158. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
  159. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +1 -2
  160. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
  161. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +1 -2
  162. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
  163. package/dist/react/primitive-hooks/useComposerCancel.d.ts +1 -2
  164. package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
  165. package/dist/react/primitive-hooks/useComposerDictate.d.ts +1 -2
  166. package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
  167. package/dist/react/primitive-hooks/useComposerSend.d.ts +1 -2
  168. package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
  169. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +1 -2
  170. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
  171. package/dist/react/primitive-hooks/useEditComposerSend.d.ts +1 -2
  172. package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
  173. package/dist/react/primitive-hooks/useMessageBranching.d.ts +1 -2
  174. package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
  175. package/dist/react/primitive-hooks/useMessageError.d.ts +1 -2
  176. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
  177. package/dist/react/primitive-hooks/useMessageReload.d.ts +1 -2
  178. package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
  179. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +2 -3
  180. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
  181. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +1 -2
  182. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
  183. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +1 -2
  184. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
  185. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +1 -2
  186. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
  187. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +1 -2
  188. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
  189. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +1 -2
  190. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
  191. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +1 -2
  192. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
  193. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +1 -2
  194. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
  195. package/dist/react/primitive-hooks/useThreadListNew.d.ts +1 -2
  196. package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
  197. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +1 -2
  198. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
  199. package/dist/react/primitive-hooks/useThreadMessages.d.ts +1 -2
  200. package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
  201. package/dist/react/primitive-hooks/useVoice.d.ts +3 -4
  202. package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
  203. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +2 -3
  204. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
  205. package/dist/react/primitives/composer/ComposerAttachments.d.ts +4 -5
  206. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  207. package/dist/react/primitives/composer/ComposerIf.d.ts +4 -5
  208. package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
  209. package/dist/react/primitives/composer/ComposerQueue.d.ts +2 -3
  210. package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
  211. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +4 -5
  212. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
  213. package/dist/react/primitives/generativeUI/GenerativeUI.js +27 -28
  214. package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
  215. package/dist/react/primitives/message/MessageAttachments.d.ts +4 -5
  216. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  217. package/dist/react/primitives/message/MessageGroupedParts.d.ts +13 -5
  218. package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
  219. package/dist/react/primitives/message/MessageGroupedParts.js +3 -2
  220. package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
  221. package/dist/react/primitives/message/MessageParts.d.ts +10 -10
  222. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  223. package/dist/react/primitives/message/MessageQuote.d.ts +2 -3
  224. package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
  225. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +2 -3
  226. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
  227. package/dist/react/primitives/part/PartMessages.d.ts +4 -4
  228. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  229. package/dist/react/primitives/part/PartMessages.js +1 -0
  230. package/dist/react/primitives/part/PartMessages.js.map +1 -1
  231. package/dist/react/primitives/thread/ThreadMessages.d.ts +7 -8
  232. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  233. package/dist/react/primitives/thread/ThreadMessages.js +6 -5
  234. package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
  235. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +5 -6
  236. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
  237. package/dist/react/primitives/threadList/ThreadListItems.d.ts +4 -5
  238. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  239. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +2 -3
  240. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
  241. package/dist/react/providers/AttachmentByIndexProvider.d.ts +2 -3
  242. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
  243. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +1 -2
  244. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
  245. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +1 -2
  246. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
  247. package/dist/react/providers/MessageByIdProvider.d.ts +1 -2
  248. package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
  249. package/dist/react/providers/MessageByIndexProvider.d.ts +1 -2
  250. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
  251. package/dist/react/providers/PartByIndexProvider.d.ts +1 -2
  252. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
  253. package/dist/react/providers/QueueItemByIndexProvider.d.ts +2 -3
  254. package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
  255. package/dist/react/providers/ReadonlyThreadProvider.d.ts +2 -3
  256. package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
  257. package/dist/react/providers/SuggestionByIndexProvider.d.ts +2 -3
  258. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
  259. package/dist/react/providers/TextMessagePartProvider.d.ts +1 -2
  260. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
  261. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +1 -2
  262. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
  263. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +1 -2
  264. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  265. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +3 -2
  266. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  267. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +17 -7
  268. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  269. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +1 -2
  270. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  271. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +2 -1
  272. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  273. package/dist/react/runtimes/RemoteThreadResource.d.ts +4 -5
  274. package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
  275. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +3 -3
  276. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
  277. package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +2 -3
  278. package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
  279. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +3 -4
  280. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
  281. package/dist/react/runtimes/assistant-transport/runManager.d.ts +2 -3
  282. package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
  283. package/dist/react/runtimes/assistant-transport/types.d.ts +17 -18
  284. package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
  285. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +4 -5
  286. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
  287. package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +1 -2
  288. package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
  289. package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +1 -2
  290. package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
  291. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +3 -26
  292. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  293. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +152 -378
  294. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  295. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +2 -2
  296. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  297. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +22 -2
  298. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
  299. package/dist/react/runtimes/cloud/auiV0.d.ts +51 -18
  300. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  301. package/dist/react/runtimes/cloud/auiV0.js +125 -17
  302. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  303. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +6 -6
  304. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
  305. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js +4 -0
  306. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js.map +1 -1
  307. package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +1 -2
  308. package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
  309. package/dist/react/runtimes/cloud/sdkIdentity.d.ts +5 -0
  310. package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -0
  311. package/dist/react/runtimes/cloud/sdkIdentity.js +9 -0
  312. package/dist/react/runtimes/cloud/sdkIdentity.js.map +1 -0
  313. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +1 -2
  314. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  315. package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +1 -2
  316. package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  317. package/dist/react/runtimes/createMessageConverter.d.ts +1 -2
  318. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
  319. package/dist/react/runtimes/createRuntimeExtras.d.ts +3 -4
  320. package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
  321. package/dist/react/runtimes/external-message-converter.d.ts +14 -4
  322. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  323. package/dist/react/runtimes/external-message-converter.js +26 -61
  324. package/dist/react/runtimes/external-message-converter.js.map +1 -1
  325. package/dist/react/runtimes/useExternalStoreRuntime.d.ts +1 -2
  326. package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
  327. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +1 -2
  328. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
  329. package/dist/react/runtimes/useLocalRuntime.d.ts +3 -4
  330. package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
  331. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +1 -2
  332. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  333. package/dist/react/runtimes/useRemoteThreadListRuntime.js +3 -3
  334. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
  335. package/dist/react/runtimes/useRuntimeAdapters.d.ts +4 -4
  336. package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
  337. package/dist/react/runtimes/useStreamingTiming.d.ts +2 -2
  338. package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
  339. package/dist/react/types/MessagePartComponentTypes.d.ts +26 -27
  340. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  341. package/dist/react/types/scopes/dataRenderers.d.ts +3 -4
  342. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
  343. package/dist/react/types/scopes/interactables.d.ts +10 -11
  344. package/dist/react/types/scopes/interactables.d.ts.map +1 -1
  345. package/dist/react/types/scopes/tools.d.ts +4 -5
  346. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  347. package/dist/react/utils/getMessageQuote.d.ts +1 -2
  348. package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
  349. package/dist/react/utils/groupParts.d.ts +13 -9
  350. package/dist/react/utils/groupParts.d.ts.map +1 -1
  351. package/dist/react/utils/groupParts.js +6 -0
  352. package/dist/react/utils/groupParts.js.map +1 -1
  353. package/dist/react/utils/useJSONEqual.d.ts +3 -2
  354. package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
  355. package/dist/react/utils/useJSONEqual.js +6 -1
  356. package/dist/react/utils/useJSONEqual.js.map +1 -1
  357. package/dist/react/utils/useJSONSchemaDependency.d.ts +6 -0
  358. package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -0
  359. package/dist/react/utils/useJSONSchemaDependency.js +20 -0
  360. package/dist/react/utils/useJSONSchemaDependency.js.map +1 -0
  361. package/dist/runtime/api/assistant-runtime.d.ts +2 -3
  362. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  363. package/dist/runtime/api/attachment-runtime.d.ts +6 -7
  364. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  365. package/dist/runtime/api/bindings.d.ts +5 -6
  366. package/dist/runtime/api/bindings.d.ts.map +1 -1
  367. package/dist/runtime/api/composer-runtime.d.ts +10 -10
  368. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  369. package/dist/runtime/api/message-part-runtime.d.ts +3 -4
  370. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  371. package/dist/runtime/api/message-part-runtime.js +3 -2
  372. package/dist/runtime/api/message-part-runtime.js.map +1 -1
  373. package/dist/runtime/api/message-runtime.d.ts +8 -6
  374. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  375. package/dist/runtime/api/message-runtime.js +3 -2
  376. package/dist/runtime/api/message-runtime.js.map +1 -1
  377. package/dist/runtime/api/paths.d.ts +6 -7
  378. package/dist/runtime/api/paths.d.ts.map +1 -1
  379. package/dist/runtime/api/thread-list-item-runtime.d.ts +8 -8
  380. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  381. package/dist/runtime/api/thread-list-runtime.d.ts +4 -5
  382. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  383. package/dist/runtime/api/thread-runtime.d.ts +10 -11
  384. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  385. package/dist/runtime/api/thread-runtime.js +2 -5
  386. package/dist/runtime/api/thread-runtime.js.map +1 -1
  387. package/dist/runtime/base/base-assistant-runtime-core.d.ts +1 -2
  388. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
  389. package/dist/runtime/base/base-composer-runtime-core.d.ts +2 -2
  390. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  391. package/dist/runtime/base/base-composer-runtime-core.js +46 -10
  392. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  393. package/dist/runtime/base/base-thread-runtime-core.d.ts +10 -3
  394. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  395. package/dist/runtime/base/base-thread-runtime-core.js +212 -77
  396. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  397. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +1 -2
  398. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  399. package/dist/runtime/base/default-edit-composer-runtime-core.js +12 -2
  400. package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
  401. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +1 -2
  402. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  403. package/dist/runtime/base/default-thread-composer-runtime-core.js +7 -1
  404. package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
  405. package/dist/runtime/branch/external-thread-branch-adapter.d.ts +1 -2
  406. package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
  407. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +1 -2
  408. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
  409. package/dist/runtime/interfaces/composer-runtime-core.d.ts +10 -11
  410. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  411. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +4 -5
  412. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  413. package/dist/runtime/interfaces/thread-runtime-core.d.ts +23 -16
  414. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  415. package/dist/runtime/queue/external-thread-queue-adapter.d.ts +2 -3
  416. package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
  417. package/dist/runtime/queue/message-queue.d.ts +10 -4
  418. package/dist/runtime/queue/message-queue.d.ts.map +1 -1
  419. package/dist/runtime/queue/message-queue.js +70 -7
  420. package/dist/runtime/queue/message-queue.js.map +1 -1
  421. package/dist/runtime/queue/queue-item.d.ts +2 -3
  422. package/dist/runtime/queue/queue-item.d.ts.map +1 -1
  423. package/dist/runtime/utils/abortable-thread-load.d.ts +2 -3
  424. package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
  425. package/dist/runtime/utils/attachment-add-operations.d.ts +3 -4
  426. package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
  427. package/dist/runtime/utils/auto-status.d.ts +9 -6
  428. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  429. package/dist/runtime/utils/auto-status.js +12 -4
  430. package/dist/runtime/utils/auto-status.js.map +1 -1
  431. package/dist/runtime/utils/chat-model-adapter.d.ts +5 -6
  432. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  433. package/dist/runtime/utils/external-message-conversion.d.ts +26 -15
  434. package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
  435. package/dist/runtime/utils/external-message-conversion.js +51 -14
  436. package/dist/runtime/utils/external-message-conversion.js.map +1 -1
  437. package/dist/runtime/utils/external-store-message.d.ts +4 -5
  438. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  439. package/dist/runtime/utils/message-repository-session.d.ts +3 -4
  440. package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
  441. package/dist/runtime/utils/message-repository.d.ts +4 -5
  442. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  443. package/dist/runtime/utils/message-repository.js +3 -3
  444. package/dist/runtime/utils/message-repository.js.map +1 -1
  445. package/dist/runtime/utils/pending-tool-calls.d.ts +2 -3
  446. package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
  447. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +1 -2
  448. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
  449. package/dist/runtime/utils/runtime-extras-brand.d.ts +2 -3
  450. package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
  451. package/dist/runtime/utils/stored-message-parts.d.ts +21 -0
  452. package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -0
  453. package/dist/runtime/utils/stored-message-parts.js +83 -0
  454. package/dist/runtime/utils/stored-message-parts.js.map +1 -0
  455. package/dist/runtime/utils/streaming-timing.d.ts +4 -5
  456. package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
  457. package/dist/runtime/utils/thread-message-like.d.ts +7 -6
  458. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  459. package/dist/runtime/utils/thread-message-like.js +4 -2
  460. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  461. package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +3 -4
  462. package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
  463. package/dist/runtime/utils/tool-call-tree.d.ts +4 -5
  464. package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
  465. package/dist/runtimes/assistant-transport/utils.d.ts +1 -2
  466. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
  467. package/dist/runtimes/external-store/external-store-adapter.d.ts +9 -6
  468. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  469. package/dist/runtimes/external-store/external-store-runtime-core.d.ts +1 -2
  470. package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
  471. package/dist/runtimes/external-store/external-store-shared-options.d.ts +2 -3
  472. package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
  473. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +2 -3
  474. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  475. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +4 -3
  476. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  477. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +36 -6
  478. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  479. package/dist/runtimes/external-store/thread-message-converter.d.ts +2 -3
  480. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
  481. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +2 -3
  482. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
  483. package/dist/runtimes/internal.d.ts +1 -1
  484. package/dist/runtimes/local/local-runtime-core.d.ts +1 -2
  485. package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
  486. package/dist/runtimes/local/local-runtime-options.d.ts +1 -2
  487. package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
  488. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +2 -3
  489. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
  490. package/dist/runtimes/local/local-thread-runtime-core.d.ts +10 -5
  491. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  492. package/dist/runtimes/local/local-thread-runtime-core.js +57 -10
  493. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  494. package/dist/runtimes/local/should-continue.d.ts +1 -2
  495. package/dist/runtimes/local/should-continue.d.ts.map +1 -1
  496. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +1 -2
  497. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
  498. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +1 -2
  499. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
  500. package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +1 -2
  501. package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
  502. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +1 -2
  503. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
  504. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +1 -2
  505. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
  506. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +16 -17
  507. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  508. package/dist/runtimes/remote-thread-list/title-generation.d.ts +7 -8
  509. package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
  510. package/dist/runtimes/remote-thread-list/title.d.ts +2 -3
  511. package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
  512. package/dist/runtimes/remote-thread-list/types.d.ts +8 -9
  513. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  514. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +4 -5
  515. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  516. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +2 -1
  517. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
  518. package/dist/store/clients/chain-of-thought-client.d.ts +1 -2
  519. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
  520. package/dist/store/clients/external-thread.d.ts +3 -4
  521. package/dist/store/clients/external-thread.d.ts.map +1 -1
  522. package/dist/store/clients/external-thread.js +256 -211
  523. package/dist/store/clients/external-thread.js.map +1 -1
  524. package/dist/store/clients/model-context-client.d.ts +1 -2
  525. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  526. package/dist/store/clients/no-op-composer-client.d.ts +1 -2
  527. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
  528. package/dist/store/clients/runtime-adapter.d.ts +1 -2
  529. package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
  530. package/dist/store/clients/single-thread-list.d.ts +1 -2
  531. package/dist/store/clients/single-thread-list.d.ts.map +1 -1
  532. package/dist/store/clients/suggestions.d.ts +3 -4
  533. package/dist/store/clients/suggestions.d.ts.map +1 -1
  534. package/dist/store/clients/thread-message-client.d.ts +2 -3
  535. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  536. package/dist/store/clients/thread-selection-events.d.ts +1 -2
  537. package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
  538. package/dist/store/clients/thread-tasks.d.ts +12 -0
  539. package/dist/store/clients/thread-tasks.d.ts.map +1 -0
  540. package/dist/store/clients/thread-tasks.js +69 -0
  541. package/dist/store/clients/thread-tasks.js.map +1 -0
  542. package/dist/store/env.d.ts +1 -2
  543. package/dist/store/env.d.ts.map +1 -1
  544. package/dist/store/index.d.ts +3 -2
  545. package/dist/store/index.js +3 -3
  546. package/dist/store/primitive-predicates.d.ts +11 -12
  547. package/dist/store/primitive-predicates.d.ts.map +1 -1
  548. package/dist/store/primitive-predicates.js +4 -4
  549. package/dist/store/primitive-predicates.js.map +1 -1
  550. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +1 -2
  551. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  552. package/dist/store/runtime-clients/composer-runtime-client.d.ts +1 -2
  553. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  554. package/dist/store/runtime-clients/handle-runtime-action.d.ts +1 -2
  555. package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
  556. package/dist/store/runtime-clients/handle-thread-list-action.d.ts +1 -2
  557. package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
  558. package/dist/store/runtime-clients/liveRef.d.ts +1 -2
  559. package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
  560. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +1 -2
  561. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  562. package/dist/store/runtime-clients/message-runtime-client.d.ts +1 -2
  563. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  564. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +1 -2
  565. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  566. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +1 -2
  567. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  568. package/dist/store/runtime-clients/thread-runtime-client.d.ts +1 -2
  569. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  570. package/dist/store/runtime-clients/thread-runtime-client.js +176 -128
  571. package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
  572. package/dist/store/runtime-clients/useSubscribable.d.ts +1 -2
  573. package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
  574. package/dist/store/scope-registration.d.ts +2 -0
  575. package/dist/store/scope-registration.d.ts.map +1 -1
  576. package/dist/store/scopes/attachment.d.ts +4 -5
  577. package/dist/store/scopes/attachment.d.ts.map +1 -1
  578. package/dist/store/scopes/chain-of-thought.d.ts +5 -6
  579. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
  580. package/dist/store/scopes/composer.d.ts +6 -7
  581. package/dist/store/scopes/composer.d.ts.map +1 -1
  582. package/dist/store/scopes/message.d.ts +6 -6
  583. package/dist/store/scopes/message.d.ts.map +1 -1
  584. package/dist/store/scopes/model-context.d.ts +3 -4
  585. package/dist/store/scopes/model-context.d.ts.map +1 -1
  586. package/dist/store/scopes/part.d.ts +4 -5
  587. package/dist/store/scopes/part.d.ts.map +1 -1
  588. package/dist/store/scopes/queue-item.d.ts +4 -4
  589. package/dist/store/scopes/queue-item.d.ts.map +1 -1
  590. package/dist/store/scopes/suggestion.d.ts +4 -5
  591. package/dist/store/scopes/suggestion.d.ts.map +1 -1
  592. package/dist/store/scopes/suggestions.d.ts +5 -6
  593. package/dist/store/scopes/suggestions.d.ts.map +1 -1
  594. package/dist/store/scopes/task.d.ts +35 -0
  595. package/dist/store/scopes/task.d.ts.map +1 -0
  596. package/dist/store/scopes/task.js +0 -0
  597. package/dist/store/scopes/thread-list-item.d.ts +5 -6
  598. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  599. package/dist/store/scopes/thread.d.ts +25 -6
  600. package/dist/store/scopes/thread.d.ts.map +1 -1
  601. package/dist/store/scopes/threads.d.ts +4 -5
  602. package/dist/store/scopes/threads.d.ts.map +1 -1
  603. package/dist/subscribable/subscribable.d.ts +15 -15
  604. package/dist/subscribable/subscribable.d.ts.map +1 -1
  605. package/dist/subscribable/subscribable.js +23 -15
  606. package/dist/subscribable/subscribable.js.map +1 -1
  607. package/dist/tests/remote-thread-list-test-helpers.d.ts +5 -6
  608. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
  609. package/dist/types/attachment.d.ts +9 -10
  610. package/dist/types/attachment.d.ts.map +1 -1
  611. package/dist/types/augmentations.d.ts +3 -4
  612. package/dist/types/augmentations.d.ts.map +1 -1
  613. package/dist/types/directive.d.ts +2 -3
  614. package/dist/types/directive.d.ts.map +1 -1
  615. package/dist/types/error.d.ts +8 -9
  616. package/dist/types/error.d.ts.map +1 -1
  617. package/dist/types/index.d.ts +2 -2
  618. package/dist/types/message.d.ts +53 -44
  619. package/dist/types/message.d.ts.map +1 -1
  620. package/dist/types/message.js.map +1 -1
  621. package/dist/types/quote.d.ts +1 -2
  622. package/dist/types/quote.d.ts.map +1 -1
  623. package/dist/types/trigger.d.ts +2 -3
  624. package/dist/types/trigger.d.ts.map +1 -1
  625. package/dist/types/unsubscribe.d.ts +1 -2
  626. package/dist/types/unsubscribe.d.ts.map +1 -1
  627. package/dist/utils/abortable-iterable.d.ts +2 -3
  628. package/dist/utils/abortable-iterable.d.ts.map +1 -1
  629. package/dist/utils/abortable-iterable.js +30 -14
  630. package/dist/utils/abortable-iterable.js.map +1 -1
  631. package/dist/utils/composite-context-provider.d.ts +1 -2
  632. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  633. package/dist/utils/data-url.d.ts +6 -7
  634. package/dist/utils/data-url.d.ts.map +1 -1
  635. package/dist/utils/getGroupStatus.d.ts +17 -2
  636. package/dist/utils/getGroupStatus.d.ts.map +1 -1
  637. package/dist/utils/getGroupStatus.js +32 -7
  638. package/dist/utils/getGroupStatus.js.map +1 -1
  639. package/dist/utils/id.d.ts +3 -4
  640. package/dist/utils/id.d.ts.map +1 -1
  641. package/dist/utils/image-media-type.d.ts +1 -2
  642. package/dist/utils/image-media-type.d.ts.map +1 -1
  643. package/dist/utils/invoke-user-callback.d.ts +1 -2
  644. package/dist/utils/invoke-user-callback.d.ts.map +1 -1
  645. package/dist/utils/json/is-json-equal.d.ts +1 -2
  646. package/dist/utils/json/is-json-equal.d.ts.map +1 -1
  647. package/dist/utils/json/is-json.d.ts +4 -5
  648. package/dist/utils/json/is-json.d.ts.map +1 -1
  649. package/dist/utils/json/stable-stringify-tool-args.d.ts +2 -3
  650. package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
  651. package/dist/utils/normalizePartStatus.d.ts +4 -5
  652. package/dist/utils/normalizePartStatus.d.ts.map +1 -1
  653. package/dist/utils/notify-event-listeners.d.ts +1 -2
  654. package/dist/utils/notify-event-listeners.d.ts.map +1 -1
  655. package/dist/utils/record.d.ts +1 -2
  656. package/dist/utils/record.d.ts.map +1 -1
  657. package/dist/utils/silent-runtime-action.d.ts +2 -3
  658. package/dist/utils/silent-runtime-action.d.ts.map +1 -1
  659. package/dist/utils/text.d.ts +1 -2
  660. package/dist/utils/text.d.ts.map +1 -1
  661. package/dist/utils/wire-media.d.ts +3 -4
  662. package/dist/utils/wire-media.d.ts.map +1 -1
  663. package/dist/utils/wire-media.js +2 -2
  664. package/dist/utils/wire-media.js.map +1 -1
  665. package/package.json +15 -14
  666. package/src/adapters/attachment.ts +8 -1
  667. package/src/adapters/feedback.ts +1 -0
  668. package/src/adapters/speech.test.ts +236 -0
  669. package/src/adapters/speech.ts +17 -10
  670. package/src/adapters/thread-history.ts +3 -0
  671. package/src/index.ts +1 -0
  672. package/src/model-context/frame/host.test.ts +113 -1
  673. package/src/model-context/frame/host.ts +39 -12
  674. package/src/model-context/frame/provider.test.ts +45 -20
  675. package/src/model-context/interactable-composer-metadata.test.ts +30 -0
  676. package/src/model-context/interactable-composer-metadata.ts +10 -10
  677. package/src/react/RuntimeAdapter.test.ts +4 -1
  678. package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +361 -0
  679. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +69 -19
  680. package/src/react/client/DataRenderers.test.tsx +45 -0
  681. package/src/react/client/DataRenderers.ts +13 -9
  682. package/src/react/client/Interactables.test.ts +52 -4
  683. package/src/react/client/Interactables.ts +7 -1
  684. package/src/react/client/RemoteThreadList.concurrent.test.tsx +9 -3
  685. package/src/react/client/RemoteThreadList.test.ts +46 -7
  686. package/src/react/client/RemoteThreadList.ts +15 -2
  687. package/src/react/client/interactable-model-context.test.ts +44 -0
  688. package/src/react/client/interactable-model-context.ts +3 -2
  689. package/src/react/index.ts +5 -1
  690. package/src/react/interactables-legacy/Interactables.test.ts +9 -3
  691. package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +150 -0
  692. package/src/react/interactables-legacy/useAssistantInteractable.ts +10 -1
  693. package/src/react/model-context/useInteractable.test.tsx +204 -0
  694. package/src/react/model-context/useInteractable.ts +3 -0
  695. package/src/react/primitive-hooks/useActionBarCopy.test.ts +5 -6
  696. package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +0 -1
  697. package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +54 -0
  698. package/src/react/primitives/generativeUI/GenerativeUI.tsx +13 -18
  699. package/src/react/primitives/message/MessageGroupedParts.test.tsx +99 -0
  700. package/src/react/primitives/message/MessageGroupedParts.tsx +15 -4
  701. package/src/react/primitives/part/PartMessages.test.tsx +104 -1
  702. package/src/react/primitives/part/PartMessages.tsx +1 -0
  703. package/src/react/primitives/thread/ThreadMessages.test.tsx +160 -0
  704. package/src/react/primitives/thread/ThreadMessages.tsx +8 -5
  705. package/src/react/providers/ReadonlyThreadProvider.test.tsx +56 -0
  706. package/src/react/runtimes/RemoteThreadListHookInstanceManager.layout.test.tsx +62 -0
  707. package/src/react/runtimes/RemoteThreadListHookInstanceManager.retry.test.tsx +2 -2
  708. package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +23 -20
  709. package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +24 -17
  710. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +39 -24
  711. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +7 -1
  712. package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +73 -46
  713. package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +66 -1
  714. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +20 -14
  715. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +323 -1
  716. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +190 -523
  717. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +81 -0
  718. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +27 -1
  719. package/src/react/runtimes/cloud/auiV0.ts +281 -26
  720. package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +522 -0
  721. package/src/react/runtimes/cloud/createCloudThreadListAdapter.test.ts +21 -0
  722. package/src/react/runtimes/cloud/createCloudThreadListAdapter.ts +7 -1
  723. package/src/react/runtimes/cloud/sdkIdentity.ts +9 -0
  724. package/src/react/runtimes/cloud/useCloudThreadListAdapter.test.tsx +18 -4
  725. package/src/react/runtimes/external-message-converter.test.ts +143 -4
  726. package/src/react/runtimes/external-message-converter.ts +39 -93
  727. package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +2 -1
  728. package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +8 -2
  729. package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +6 -2
  730. package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +84 -4
  731. package/src/react/runtimes/useRemoteThreadListRuntime.ts +6 -2
  732. package/src/react/utils/groupParts.ts +12 -1
  733. package/src/react/utils/useJSONEqual.ts +9 -0
  734. package/src/react/utils/useJSONSchemaDependency.ts +22 -0
  735. package/src/runtime/api/message-part-runtime.ts +4 -1
  736. package/src/runtime/api/message-runtime.ts +15 -2
  737. package/src/runtime/api/thread-runtime.test.ts +58 -0
  738. package/src/runtime/api/thread-runtime.ts +2 -4
  739. package/src/runtime/base/base-composer-runtime-core.ts +69 -16
  740. package/src/runtime/base/base-thread-runtime-core.test.ts +1799 -49
  741. package/src/runtime/base/base-thread-runtime-core.ts +296 -94
  742. package/src/runtime/base/default-edit-composer-runtime-core.ts +12 -2
  743. package/src/runtime/base/default-thread-composer-runtime-core.ts +12 -1
  744. package/src/runtime/interfaces/thread-runtime-core.ts +8 -0
  745. package/src/runtime/queue/message-queue.ts +79 -7
  746. package/src/runtime/utils/auto-status.test.ts +112 -1
  747. package/src/runtime/utils/auto-status.ts +31 -5
  748. package/src/runtime/utils/external-message-conversion.test.ts +177 -0
  749. package/src/runtime/utils/external-message-conversion.ts +128 -33
  750. package/src/runtime/utils/message-repository.test.ts +49 -0
  751. package/src/runtime/utils/message-repository.ts +3 -3
  752. package/src/runtime/utils/stored-message-parts.ts +174 -0
  753. package/src/runtime/utils/thread-message-like.test.ts +52 -0
  754. package/src/runtime/utils/thread-message-like.ts +11 -2
  755. package/src/runtimes/external-store/external-store-adapter.ts +4 -0
  756. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +74 -9
  757. package/src/runtimes/local/local-thread-runtime-core.test.ts +189 -12
  758. package/src/runtimes/local/local-thread-runtime-core.ts +91 -10
  759. package/src/runtimes/tool-invocations/EDGE_CASES.md +2 -6
  760. package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +133 -0
  761. package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +10 -6
  762. package/src/store/clients/external-thread.ts +53 -14
  763. package/src/store/clients/thread-tasks.test.ts +274 -0
  764. package/src/store/clients/thread-tasks.ts +138 -0
  765. package/src/store/index.ts +8 -0
  766. package/src/store/primitive-predicates.test.ts +64 -5
  767. package/src/store/primitive-predicates.ts +10 -2
  768. package/src/store/runtime-clients/thread-runtime-client.test.tsx +110 -0
  769. package/src/store/runtime-clients/thread-runtime-client.ts +31 -1
  770. package/src/store/scope-registration.ts +2 -0
  771. package/src/store/scopes/message.ts +4 -1
  772. package/src/store/scopes/task.ts +34 -0
  773. package/src/store/scopes/thread.ts +16 -0
  774. package/src/store/thread-tasks.test.tsx +209 -0
  775. package/src/subscribable/subscribable.test.ts +161 -1
  776. package/src/subscribable/subscribable.ts +25 -15
  777. package/src/tests/MessageRepository.test.ts +1 -5
  778. package/src/tests/attachment-adapters.test.ts +16 -1
  779. package/src/tests/auiV0Encode.test.ts +304 -0
  780. package/src/tests/base-composer-runtime-core-addAttachment.test.ts +6 -6
  781. package/src/tests/base-composer-runtime-core-send.test.ts +51 -0
  782. package/src/tests/base-composer-runtime-core.test.ts +329 -6
  783. package/src/tests/composer-can-cancel.test.ts +35 -6
  784. package/src/tests/composer-can-send.test.ts +22 -0
  785. package/src/tests/default-edit-composer-runtime-core.test.ts +47 -0
  786. package/src/tests/external-store-thread-runtime-core-adapter.test.ts +369 -16
  787. package/src/tests/external-store-thread-runtime-core.test.ts +31 -0
  788. package/src/tests/external-thread-attachments.test.tsx +91 -23
  789. package/src/tests/external-thread-feedback.test.tsx +20 -7
  790. package/src/tests/external-thread-parity.test.tsx +35 -1
  791. package/src/tests/groupParts.test.ts +71 -0
  792. package/src/tests/message-queue.test.ts +290 -2
  793. package/src/tests/remote-thread-list-reactive-threadId.test.ts +51 -0
  794. package/src/tests/thread-switch-events.test.tsx +11 -7
  795. package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +45 -1
  796. package/src/types/index.ts +1 -0
  797. package/src/types/message.test.ts +19 -0
  798. package/src/types/message.ts +23 -7
  799. package/src/utils/abortable-iterable.test.ts +115 -0
  800. package/src/utils/abortable-iterable.ts +34 -23
  801. package/src/utils/getGroupStatus.test.ts +70 -4
  802. package/src/utils/getGroupStatus.ts +35 -12
  803. package/src/utils/wire-media.test.ts +10 -0
  804. package/src/utils/wire-media.ts +6 -2
@@ -50,7 +50,7 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
50
50
  };
51
51
  abortController = null;
52
52
  _queue = null;
53
- _queueRunInFlight = false;
53
+ _queueRunInFlight = null;
54
54
  _activeRun = null;
55
55
  _runGeneration = 0;
56
56
  _historyWrites = /* @__PURE__ */ new Map();
@@ -142,16 +142,20 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
142
142
  const canQueue = options.unstable_enableMessageQueue === true;
143
143
  if (canQueue && !this._queue) {
144
144
  this._queue = createMessageQueue({ run: (message) => {
145
- this._queueRunInFlight = true;
145
+ const dispatch = {};
146
+ this._queueRunInFlight = dispatch;
146
147
  const generation = this._runGeneration;
147
148
  this._runAppend({
148
149
  ...message,
149
- parentId: this.messages.at(-1)?.id ?? null
150
+ parentId: this._resolveAppendParent(this.messages.at(-1)?.id ?? null)
150
151
  }).finally(() => {
151
- this._queueRunInFlight = false;
152
- if (this._runGeneration === generation) this._queue?.notifyIdle();
152
+ if (this._queueRunInFlight === dispatch) {
153
+ this._queueRunInFlight = null;
154
+ if (this._runGeneration === generation) this._queue?.notifyIdle();
155
+ }
153
156
  }).catch(() => {});
154
157
  } });
158
+ if (this.voice) this._queue.hold();
155
159
  this._queue.subscribe(() => this._notifySubscribers());
156
160
  } else if (!canQueue && this._queue) this._queue = null;
157
161
  if (this.capabilities.queue !== canQueue) {
@@ -190,16 +194,40 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
190
194
  return this._loadPromise;
191
195
  }
192
196
  async append(message) {
197
+ message = {
198
+ ...message,
199
+ parentId: this._resolveAppendParent(message.parentId)
200
+ };
201
+ if (this.voice) throw new Error("Cannot send a text message while a voice session is connected");
202
+ if (this._isVoiceMessage(message.sourceId)) throw new Error("Voice transcript messages cannot be edited");
193
203
  const isTail = message.parentId === (this.messages.at(-1)?.id ?? null);
194
204
  const willRun = message.startRun ?? message.role === "user";
195
205
  if (this._queue && willRun && isTail) {
196
- if (message.steer ?? this._queueRunInFlight) this._queue.adapter.steer(message);
206
+ if (message.steer ?? this._queueRunInFlight !== null) this._queue.adapter.steer(message);
197
207
  else this._queue.adapter.enqueue(message);
198
208
  return;
199
209
  }
200
210
  if (this._queue && !isTail && (this._options.unstable_queueClearOnRewind ?? true)) this._queue.clear();
201
211
  return this._runAppend(message);
202
212
  }
213
+ _commitVoiceMessage(message) {
214
+ const parentId = this.repository.headId;
215
+ this.repository.addOrUpdateMessage(parentId, message);
216
+ this.repository.resetHead(message.id);
217
+ this._options.adapters.history?.append({
218
+ parentId,
219
+ message
220
+ }).catch(() => {});
221
+ const index = this._voiceMessages.findIndex((voiceMessage) => voiceMessage.id === message.id);
222
+ if (index !== -1) this._voiceMessages.splice(index, 1);
223
+ this._markVoiceMessagesDirty();
224
+ }
225
+ _onVoiceConnected() {
226
+ this._queue?.hold();
227
+ }
228
+ _onVoiceDisconnected() {
229
+ this._queue?.release();
230
+ }
203
231
  getQueueItems() {
204
232
  return this._queue?.adapter.items ?? EMPTY_QUEUE_ITEMS;
205
233
  }
@@ -220,7 +248,19 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
220
248
  }
221
249
  this._notifySubscribers();
222
250
  }
251
+ _pendingAppends = 0;
252
+ _isRunActive() {
253
+ return this._pendingAppends > 0 || super._isRunActive();
254
+ }
223
255
  async _runAppend(rawMessage) {
256
+ this._pendingAppends += 1;
257
+ try {
258
+ await this._runAppendInner(rawMessage);
259
+ } finally {
260
+ this._pendingAppends -= 1;
261
+ }
262
+ }
263
+ async _runAppendInner(rawMessage) {
224
264
  const generation = captureThreadRuntimeGeneration(this);
225
265
  const message = this.enrichAppendMetadata(rawMessage);
226
266
  this.ensureInitialized();
@@ -295,8 +335,10 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
295
335
  unstable_notifySessionReset() {
296
336
  throw new Error("Runtime does not support resetting sessions.");
297
337
  }
298
- async startRun({ parentId, runConfig }, runCallback) {
338
+ async startRun({ parentId, sourceId, runConfig }, runCallback) {
299
339
  this.ensureInitialized();
340
+ if (this.voice) throw new Error("Cannot start a run while a voice session is connected");
341
+ if (this._isVoiceMessage(sourceId)) throw new Error("Voice transcript messages cannot be reloaded");
300
342
  const message = {
301
343
  id: generateId(),
302
344
  role: "assistant",
@@ -314,6 +356,7 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
314
356
  return this._runLoop(parentId, message, runConfig, runCallback);
315
357
  }
316
358
  async _runLoop(parentId, message, runConfig, runCallback) {
359
+ if (this.voice) throw new Error("Cannot start a run while a voice session is connected");
317
360
  this._notifyEventSubscribers("runStart", {});
318
361
  const alreadyPersisted = message.status?.type === "requires-action" && this._options.adapters.history?.update !== void 0;
319
362
  const run = { cancelled: false };
@@ -517,7 +560,8 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
517
560
  this._suggestionsController?.abort();
518
561
  this._suggestionsController = null;
519
562
  }
520
- addToolResult({ messageId, toolCallId, result, isError, artifact }) {
563
+ addToolResult({ messageId, toolCallId, result, isError, artifact, modelContent }) {
564
+ if (this.voice) throw new Error("Cannot add a tool result while a voice session is connected");
521
565
  const messageData = this.repository.getMessage(messageId);
522
566
  const { parentId } = messageData;
523
567
  let { message } = messageData;
@@ -532,8 +576,9 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
532
576
  return {
533
577
  ...c,
534
578
  result,
535
- artifact,
536
- isError
579
+ isError,
580
+ ...artifact !== void 0 && { artifact },
581
+ ...modelContent !== void 0 && { modelContent }
537
582
  };
538
583
  });
539
584
  if (!found) throw new Error("Tried to add tool result to non-existing tool call");
@@ -550,6 +595,7 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
550
595
  throw new Error("Local runtime does not support resuming tool calls. For human-in-the-loop tools, list the tool in unstable_humanToolNames and complete the call with addToolResult.");
551
596
  }
552
597
  respondToToolApproval({ approvalId, approved, optionId, text, reason }) {
598
+ if (this.voice) throw new Error("Cannot respond to a tool approval while a voice session is connected");
553
599
  let message = this.repository.getMessages().findLast((m) => m.role === "assistant" && m.content.some((c) => c.type === "tool-call" && c.approval?.id === approvalId));
554
600
  if (!message) throw new Error("Tried to respond to a non-existing tool approval");
555
601
  if (this.abortController !== null) throw new Error("Tried to respond to a tool approval while a run is in progress");
@@ -586,6 +632,7 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
586
632
  const { parentId } = this.repository.getMessage(message.id);
587
633
  this.repository.addOrUpdateMessage(parentId, message);
588
634
  this._notifySubscribers();
635
+ this._notifyToolApprovalAnswered(message.id, target.toolCallId, target.toolName, approved);
589
636
  if (this.repository.headId === message.id && shouldContinue(message, this._options.unstable_humanToolNames)) this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});
590
637
  else this._persistPausedMessage(parentId, message);
591
638
  return Promise.resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"local-thread-runtime-core.js","names":["fromThreadMessageLike","generateId","ChatModelAdapter","ChatModelRunResult","shouldContinue","getAutoStatus","ExportedMessageRepository","LocalRuntimeOptionsBase","consumeSuggestionResult","AddToolResultOptions","ResumeToolCallOptions","RespondToToolApprovalOptions","ThreadSuggestion","ThreadRuntimeCore","StartRunConfig","ResumeRunConfig","BaseThreadRuntimeCore","AppendMessage","ThreadAssistantMessage","RunConfig","ThreadMessage","MessageNotSentError","toAssistantError","ModelContextProvider","createMessageQueue","MessageQueueController","QueuePlacement","EMPTY_QUEUE_ITEMS","QueueItemState","captureThreadRuntimeGeneration","invalidateThreadRuntime","isThreadRuntimeGenerationCurrent","AbortError","Error","name","detach","constructor","message","withLocalPauseReason","role","status","type","reason","content","some","c","result","undefined","interrupt","withLocalPauseReasons","data","messages","map","item","LocalThreadRuntimeCore","capabilities","switchToBranch","switchBranchDuringRun","edit","delete","reload","refetchThread","cancel","unstable_copy","speech","dictation","voice","attachments","feedback","queue","abortController","AbortController","_queue","_queueRunInFlight","_activeRun","cancelled","_runGeneration","_historyWrites","Map","Promise","_chainHistoryWrite","id","write","next","get","resolve","then","stored","set","_persistPausedMessage","parentId","history","_options","adapters","update","bind","runConfig","_lastRunConfig","catch","isDisabled","isSendDisabled","_isLoading","isLoading","_suggestions","_suggestionsController","suggestions","contextProvider","options","__internal_setOptions","_getThreadId","__internal_setGetThreadId","getThreadId","_getInitializePromise","__internal_setGetInitializePromise","getPromise","extras","previousHistory","hasUpdates","canSpeak","canDictate","canVoice","canAttach","canFeedback","canDelete","canQueue","unstable_enableMessageQueue","run","generation","_runAppend","at","finally","notifyIdle","subscribe","_notifySubscribers","_loadRequested","_loadPromise","length","__internal_load","error","console","promise","load","repo","repository","import","ensureInitialized","resume","unstable_resume","startRun","headId","sourceId","append","isTail","willRun","steer","adapter","enqueue","unstable_queueClearOnRewind","clear","getQueueItems","items","getSteerQueueItems","steerItems","moveQueueItem","queueItemId","placement","move","removeQueueItem","remove","_rollbackAppend","messageId","deleteMessage","rawMessage","enrichAppendMetadata","newMessage","addOrUpdateMessage","initPromise","notSent","cause","historyWrite","runResult","historyResult","allSettled","resetHead","getMessages","messageIndex","findIndex","m","resumeRun","stream","startConfig","exportExternalState","importExternalState","unstable_notifySessionReset","runCallback","metadata","unstable_state","state","unstable_annotations","unstable_data","steps","custom","createdAt","Date","_runLoop","_notifyEventSubscribers","alreadyPersisted","active","notifyBusy","abort","performRoundtrip","unstable_humanToolNames","queueMicrotask","suggestion","signal","promiseOrGenerator","generate","onUpdate","r","initialContent","initialAnnotations","initialData","initialSteps","initialCustom","hasStoredMessage","getMessage","ownsMessage","updateMessage","Partial","newSteps","newAnnotations","newData","annotations","timing","maxSteps","unstable_composerMetadata","_","context","getModelContext","chatModel","abortSignal","shouldCancelMessage","aborted","threadId","unstable_assistantMessageId","unstable_threadId","unstable_parentId","unstable_getMessage","Symbol","asyncIterator","e","isTerminal","isPausing","cancelRun","unstable_queueClearOnCancel","notifyCancelled","addToolResult","toolCallId","isError","artifact","messageData","added","found","newContent","resumeToolCall","respondToToolApproval","approvalId","approved","optionId","text","findLast","approval","target","find","resolution","targetApproval"],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"sourcesContent":["import { fromThreadMessageLike } from \"../../runtime/utils/thread-message-like\";\nimport { generateId } from \"../../utils/id\";\nimport type {\n ChatModelAdapter,\n ChatModelRunResult,\n} from \"../../runtime/utils/chat-model-adapter\";\nimport { shouldContinue } from \"./should-continue\";\nimport { getAutoStatus } from \"../../runtime/utils/auto-status\";\nimport type { ExportedMessageRepository } from \"../../runtime/utils/message-repository\";\nimport type { LocalRuntimeOptionsBase } from \"./local-runtime-options\";\nimport { consumeSuggestionResult } from \"../../adapters/suggestion\";\nimport type {\n AddToolResultOptions,\n ResumeToolCallOptions,\n RespondToToolApprovalOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n StartRunConfig,\n ResumeRunConfig,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport { BaseThreadRuntimeCore } from \"../../runtime/base/base-thread-runtime-core\";\nimport type {\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types/message\";\nimport type { RunConfig, ThreadMessage } from \"../../types/message\";\nimport { MessageNotSentError, toAssistantError } from \"../../types/error\";\nimport type { ModelContextProvider } from \"../../model-context/types\";\nimport {\n createMessageQueue,\n type MessageQueueController,\n} from \"../../runtime/queue/message-queue\";\nimport type { QueuePlacement } from \"../../runtime/queue/external-thread-queue-adapter\";\nimport {\n EMPTY_QUEUE_ITEMS,\n type QueueItemState,\n} from \"../../runtime/queue/queue-item\";\nimport {\n captureThreadRuntimeGeneration,\n invalidateThreadRuntime,\n isThreadRuntimeGenerationCurrent,\n} from \"../../runtime/utils/thread-runtime-lifecycle\";\n\nclass AbortError extends Error {\n override name = \"AbortError\";\n detach: boolean;\n\n constructor(detach: boolean, message?: string) {\n super(message);\n this.detach = detach;\n }\n}\n\n// `shouldContinue` resumes only on `tool-calls` and `resumeToolCall` throws, so\n// an imported `interrupt` with no interrupt payload would be stranded here.\n// Provenance cannot gate it: a repository that went through JSON has no marker.\n// The replacement stays content-derived, so a message with nothing resultless\n// left to act on lands on `complete` rather than an unactionable pause.\nconst withLocalPauseReason = (message: ThreadMessage): ThreadMessage => {\n if (\n message.role !== \"assistant\" ||\n message.status.type !== \"requires-action\" ||\n message.status.reason !== \"interrupt\" ||\n message.content.some(\n (c) =>\n c.type === \"tool-call\" && c.result === undefined && c.interrupt != null,\n )\n )\n return message;\n return {\n ...message,\n status: getAutoStatus(\n false,\n false,\n false,\n message.content.some(\n (c) => c.type === \"tool-call\" && c.result === undefined,\n ),\n ),\n };\n};\n\nconst withLocalPauseReasons = (\n data: ExportedMessageRepository,\n): ExportedMessageRepository => ({\n ...data,\n messages: data.messages.map((item) => ({\n ...item,\n message: withLocalPauseReason(item.message),\n })),\n});\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n switchBranchDuringRun: true,\n edit: true,\n delete: false,\n reload: true,\n refetchThread: false,\n cancel: true,\n unstable_copy: true,\n speech: false,\n dictation: false,\n voice: false,\n attachments: false,\n feedback: false,\n queue: false,\n };\n\n private abortController: AbortController | null = null;\n\n private _queue: MessageQueueController | null = null;\n private _queueRunInFlight = false;\n private _activeRun: { cancelled: boolean } | null = null;\n private _runGeneration = 0;\n\n private _historyWrites = new Map<string, Promise<void>>();\n\n // Writes for one message id must land in issue order; an earlier paused\n // snapshot arriving after the terminal write would resurrect the pause.\n private _chainHistoryWrite(\n id: string,\n write: () => Promise<void>,\n ): Promise<void> {\n const next = (this._historyWrites.get(id) ?? Promise.resolve()).then(\n write,\n write,\n );\n const stored = next.then(\n () => {},\n () => {},\n );\n this._historyWrites.set(id, stored);\n void stored.then(() => {\n if (this._historyWrites.get(id) === stored) {\n this._historyWrites.delete(id);\n }\n });\n return next;\n }\n\n // A decision recorded on a still-paused message must reach history before\n // the run resumes, or a refresh would restore the message without it.\n private _persistPausedMessage(\n parentId: string | null,\n message: ThreadAssistantMessage,\n ) {\n if (message.status?.type !== \"requires-action\") return;\n const history = this._options.adapters.history;\n if (!history?.update) return;\n const update = history.update.bind(history);\n const item = { parentId, message, runConfig: this._lastRunConfig };\n this._chainHistoryWrite(message.id, () => update(item)).catch(() => {});\n }\n\n public readonly isDisabled = false;\n public readonly isSendDisabled = false;\n\n private _isLoading = false;\n public get isLoading() {\n return this._isLoading;\n }\n\n private _suggestions: readonly ThreadSuggestion[] = [];\n private _suggestionsController: AbortController | null = null;\n public get suggestions(): readonly ThreadSuggestion[] {\n return this._suggestions;\n }\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n contextProvider: ModelContextProvider,\n options: LocalRuntimeOptionsBase,\n ) {\n super(contextProvider);\n this.__internal_setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n private _lastRunConfig: RunConfig = {};\n\n private _getThreadId?: () => string | undefined;\n\n public __internal_setGetThreadId(getThreadId: () => string | undefined) {\n this._getThreadId = getThreadId;\n }\n\n private _getInitializePromise?: () => Promise<unknown> | undefined;\n\n public __internal_setGetInitializePromise(\n getPromise: () => Promise<unknown> | undefined,\n ) {\n this._getInitializePromise = getPromise;\n }\n\n public get extras() {\n return undefined;\n }\n\n public __internal_setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n const previousHistory = this._options?.adapters.history;\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canDictate = options.adapters?.dictation !== undefined;\n if (this.capabilities.dictation !== canDictate) {\n this.capabilities.dictation = canDictate;\n hasUpdates = true;\n }\n\n const canVoice = options.adapters?.voice !== undefined;\n if (this.capabilities.voice !== canVoice) {\n this.capabilities.voice = canVoice;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n const canDelete = options.adapters?.history?.delete !== undefined;\n if (this.capabilities.delete !== canDelete) {\n this.capabilities.delete = canDelete;\n hasUpdates = true;\n }\n\n const canQueue = options.unstable_enableMessageQueue === true;\n if (canQueue && !this._queue) {\n this._queue = createMessageQueue({\n run: (message) => {\n // release the queue when the dispatch settles, even if it rejects\n // before reaching startRun's finally, so a failure can't deadlock it\n this._queueRunInFlight = true;\n const generation = this._runGeneration;\n // the tail may have moved since the message was enqueued\n void this._runAppend({\n ...message,\n parentId: this.messages.at(-1)?.id ?? null,\n })\n .finally(() => {\n this._queueRunInFlight = false;\n // a dispatch that failed before starting a run settles here;\n // runs that did start release from _runLoop\n if (this._runGeneration === generation) this._queue?.notifyIdle();\n })\n .catch(() => {});\n },\n });\n this._queue.subscribe(() => this._notifySubscribers());\n } else if (!canQueue && this._queue) {\n this._queue = null;\n }\n if (this.capabilities.queue !== canQueue) {\n this.capabilities.queue = canQueue;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n\n if (\n this._loadRequested &&\n !this._loadPromise &&\n !previousHistory &&\n options.adapters.history &&\n this.messages.length === 0\n ) {\n void this.__internal_load().catch((error: unknown) => {\n console.error(\n \"[assistant-ui] local thread history load failed:\",\n error,\n );\n });\n }\n }\n\n private _loadPromise: Promise<void> | undefined;\n private _loadRequested = false;\n public __internal_load() {\n this._loadRequested = true;\n if (this._loadPromise) return this._loadPromise;\n if (!this.adapters.history) return Promise.resolve();\n\n const promise = this.adapters.history.load();\n\n this._isLoading = true;\n this._notifySubscribers();\n\n this._loadPromise = promise\n .then((repo) => {\n if (!repo) return;\n this.repository.import(withLocalPauseReasons(repo));\n if (repo.messages.length > 0) {\n this.ensureInitialized();\n }\n this._notifySubscribers();\n\n const resume = this.adapters.history?.resume?.bind(\n this.adapters.history,\n );\n if (repo.unstable_resume && resume) {\n this.startRun(\n {\n parentId: this.repository.headId,\n sourceId: this.repository.headId,\n runConfig: this._lastRunConfig,\n },\n resume,\n ).catch(() => {});\n }\n })\n .finally(() => {\n this._isLoading = false;\n this._notifySubscribers();\n });\n\n return this._loadPromise;\n }\n\n public async append(message: AppendMessage): Promise<void> {\n const isTail = message.parentId === (this.messages.at(-1)?.id ?? null);\n const willRun = message.startRun ?? message.role === \"user\";\n if (this._queue && willRun && isTail) {\n if (message.steer ?? this._queueRunInFlight)\n this._queue.adapter.steer(message);\n else this._queue.adapter.enqueue(message);\n return;\n }\n if (\n this._queue &&\n !isTail &&\n (this._options.unstable_queueClearOnRewind ?? true)\n )\n this._queue.clear();\n return this._runAppend(message);\n }\n\n public getQueueItems(): readonly QueueItemState[] {\n // Reads can arrive during base-thread construction, before the queue field\n // is assigned, so guard against the unset field.\n return this._queue?.adapter.items ?? EMPTY_QUEUE_ITEMS;\n }\n\n public getSteerQueueItems(): readonly QueueItemState[] {\n return this._queue?.adapter.steerItems ?? EMPTY_QUEUE_ITEMS;\n }\n\n public moveQueueItem(queueItemId: string, placement: QueuePlacement): void {\n this._queue?.adapter.move(queueItemId, placement);\n }\n\n public removeQueueItem(queueItemId: string): void {\n this._queue?.adapter.remove(queueItemId);\n }\n\n private _rollbackAppend(messageId: string) {\n try {\n this.repository.deleteMessage(messageId);\n } catch {\n return;\n }\n this._notifySubscribers();\n }\n\n private async _runAppend(rawMessage: AppendMessage): Promise<void> {\n // Stamped here rather than in `append` so a queued message is gated after\n // the flush re-pointed its parentId at the current tail.\n const generation = captureThreadRuntimeGeneration(this);\n const message = this.enrichAppendMetadata(rawMessage);\n this.ensureInitialized();\n\n const newMessage = fromThreadMessageLike(message, generateId(), {\n type: \"complete\",\n reason: \"unknown\",\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n this._notifySubscribers();\n\n // Initialization only gates the history write and the run; the message\n // is already on screen. A failed barrier rolls the optimistic message\n // back and rejects as an unsent message so the composer restores the\n // draft; a thread invalidated mid-wait rolls back silently.\n try {\n const initPromise = this._getInitializePromise?.();\n if (initPromise) {\n await initPromise;\n }\n } catch (error) {\n this._rollbackAppend(newMessage.id);\n if (!isThreadRuntimeGenerationCurrent(this, generation)) return;\n const notSent = new MessageNotSentError();\n notSent.cause = error;\n throw notSent;\n }\n if (!isThreadRuntimeGenerationCurrent(this, generation)) {\n this._rollbackAppend(newMessage.id);\n return;\n }\n const historyWrite = this._options.adapters.history?.append({\n parentId: message.parentId,\n message: newMessage,\n ...(message.runConfig !== undefined && { runConfig: message.runConfig }),\n });\n void historyWrite?.catch(() => {});\n\n const startRun = message.startRun ?? message.role === \"user\";\n if (startRun) {\n const [runResult, historyResult] = await Promise.allSettled([\n this.startRun({\n parentId: newMessage.id,\n sourceId: message.sourceId,\n runConfig: message.runConfig ?? {},\n }),\n historyWrite,\n ]);\n if (runResult.status === \"rejected\") throw runResult.reason;\n if (historyResult.status === \"rejected\") throw historyResult.reason;\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n await historyWrite;\n }\n }\n\n public async deleteMessage(messageId: string): Promise<void> {\n const adapter = this._options.adapters.history;\n if (!adapter?.delete)\n throw new Error(\"Runtime does not support deleting messages.\");\n\n const messages = this.repository.getMessages();\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) throw new Error(\"Message not found.\");\n\n const message = messages[messageIndex]!;\n const parentId = messages[messageIndex - 1]?.id ?? null;\n const items = [{ parentId, message }];\n\n await adapter.delete(items);\n\n this.repository.deleteMessage(messageId);\n this._notifySubscribers();\n }\n\n public resumeRun({ stream, ...startConfig }: ResumeRunConfig): Promise<void> {\n if (!stream)\n throw new Error(\"You must pass a stream parameter to resume runs.\");\n return this.startRun(startConfig, stream);\n }\n\n public exportExternalState(): any {\n throw new Error(\"Runtime does not support exporting external states.\");\n }\n\n public override import(data: ExportedMessageRepository) {\n super.import(withLocalPauseReasons(data));\n }\n\n public importExternalState(): void {\n throw new Error(\"Runtime does not support importing external states.\");\n }\n\n public unstable_notifySessionReset(): void {\n throw new Error(\"Runtime does not support resetting sessions.\");\n }\n\n public async startRun(\n { parentId, runConfig }: StartRunConfig,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this.ensureInitialized();\n\n // add assistant message\n const id = generateId();\n const message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n metadata: {\n unstable_state: this.state,\n unstable_annotations: [],\n unstable_data: [],\n steps: [],\n custom: {},\n },\n createdAt: new Date(),\n };\n\n return this._runLoop(parentId, message, runConfig, runCallback);\n }\n\n private async _runLoop(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this._notifyEventSubscribers(\"runStart\", {});\n\n // A run entered on a requires-action message resumes a pause an\n // update-capable adapter already holds (written at pause time or loaded).\n const alreadyPersisted =\n message.status?.type === \"requires-action\" &&\n this._options.adapters.history?.update !== undefined;\n\n const run = { cancelled: false };\n this._activeRun = run;\n this._runGeneration++;\n\n let active = false;\n try {\n // mark busy for runs not started through the queue (regenerate, resume)\n this._queue?.notifyBusy();\n this._suggestions = [];\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n this._notifySubscribers();\n\n do {\n message = await this.performRoundtrip(\n parentId,\n message,\n runConfig,\n alreadyPersisted,\n run,\n runCallback,\n );\n runCallback = undefined;\n if (this._activeRun !== run) break;\n } while (shouldContinue(message, this._options.unstable_humanToolNames));\n } finally {\n this._notifyEventSubscribers(\"runEnd\", {});\n // the settle belongs to this run only while it is still the active run\n // or was cancelled (the engine expects a cancelled run's settle); a run\n // superseded by a newer one stays silent\n active = this._activeRun === run;\n if (active) this._activeRun = null;\n if (active || run.cancelled) {\n queueMicrotask(() => this._queue?.notifyIdle());\n }\n }\n\n if (\n active &&\n this.adapters.suggestion &&\n message.status?.type !== \"requires-action\"\n ) {\n this._suggestionsController = new AbortController();\n const signal = this._suggestionsController.signal;\n const adapter = this.adapters.suggestion;\n void (async () => {\n try {\n const promiseOrGenerator = adapter.generate({\n messages: this.messages,\n signal,\n });\n await consumeSuggestionResult(promiseOrGenerator, {\n signal,\n onUpdate: (r) => {\n this._suggestions = r;\n this._notifySubscribers();\n },\n });\n } catch {}\n })();\n }\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n alreadyPersisted: boolean,\n run: { cancelled: boolean },\n runCallback?: ChatModelAdapter[\"run\"],\n ) {\n const messages = parentId ? this.repository.getMessages(parentId) : [];\n\n // abort existing run\n this.abortController?.abort();\n const abortController = new AbortController();\n this.abortController = abortController;\n\n const initialContent = message.content;\n const initialAnnotations = message.metadata?.unstable_annotations;\n const initialData = message.metadata?.unstable_data;\n const initialSteps = message.metadata?.steps;\n const initialCustom = message.metadata?.custom;\n let hasStoredMessage = true;\n try {\n this.repository.getMessage(message.id);\n } catch {\n hasStoredMessage = false;\n }\n // Other writers replace the stored message object, so identity distinguishes this run from a newer owner.\n const ownsMessage = () => {\n if (!hasStoredMessage) return this._activeRun === run;\n try {\n return this.repository.getMessage(message.id).message === message;\n } catch {\n return false;\n }\n };\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n if (!ownsMessage()) return;\n const newSteps = m.metadata?.steps;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n const newAnnotations = m.metadata?.unstable_annotations;\n const newData = m.metadata?.unstable_data;\n const annotations = newAnnotations\n ? [...(initialAnnotations ?? []), ...newAnnotations]\n : undefined;\n const data = newData ? [...(initialData ?? []), ...newData] : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(m.metadata.unstable_state !== undefined\n ? { unstable_state: m.metadata.unstable_state }\n : undefined),\n ...(annotations\n ? { unstable_annotations: annotations }\n : undefined),\n ...(data ? { unstable_data: data } : undefined),\n ...(steps ? { steps } : undefined),\n ...(m.metadata?.timing\n ? { timing: m.metadata.timing }\n : undefined),\n ...(m.metadata?.custom\n ? {\n custom: {\n ...(initialCustom ?? {}),\n ...m.metadata.custom,\n },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n hasStoredMessage = true;\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps ?? 2;\n\n try {\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n }\n\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n\n // Switch to the new message branch right after adding it for the first time\n this.repository.resetHead(message.id);\n this._notifySubscribers();\n\n this._lastRunConfig = runConfig ?? {};\n // unstable_composerMetadata is composer-only (stamped onto the outgoing\n // message); never expose it to the chat-model adapter's run context.\n const { unstable_composerMetadata: _, ...context } =\n this.getModelContext();\n\n runCallback =\n runCallback ??\n this.adapters.chatModel.run.bind(this.adapters.chatModel);\n\n const abortSignal = abortController.signal;\n const shouldCancelMessage = () =>\n abortSignal.aborted &&\n (message.status.type === \"running\" ||\n (message.status.type === \"requires-action\" &&\n (this._activeRun !== run ||\n shouldContinue(message, this._options.unstable_humanToolNames))));\n const threadId = this._getThreadId?.();\n const promiseOrGenerator = runCallback({\n messages,\n runConfig: this._lastRunConfig,\n abortSignal,\n context,\n unstable_assistantMessageId: message.id,\n unstable_threadId: threadId,\n unstable_parentId: parentId,\n unstable_getMessage() {\n return message;\n },\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n if (abortSignal.aborted) {\n if (shouldCancelMessage()) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n }\n break;\n }\n\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n if (shouldCancelMessage()) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n if (e instanceof AbortError) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"error\",\n error: toAssistantError(e),\n },\n });\n\n throw e;\n }\n } finally {\n if (this.abortController === abortController) {\n this.abortController = null;\n }\n\n const history = this._options.adapters.history;\n const item = {\n parentId,\n message,\n runConfig: this._lastRunConfig,\n };\n const isTerminal =\n message.status.type === \"complete\" ||\n message.status.type === \"incomplete\";\n const isPausing =\n message.status.type === \"requires-action\" &&\n !shouldContinue(message, this._options.unstable_humanToolNames);\n\n // Pauses are written only for adapters that can rewrite the entry later;\n // an append-only adapter would strand a half-finished run in history.\n if (ownsMessage() && (isTerminal || (isPausing && history?.update))) {\n const write =\n alreadyPersisted && history?.update\n ? history.update.bind(history)\n : history?.append.bind(history);\n if (write) {\n await this._chainHistoryWrite(message.id, () => write(item));\n }\n }\n }\n return message;\n }\n\n public detach() {\n invalidateThreadRuntime(this);\n // drop the queue so pending items cannot dispatch on a detached thread\n this._queue = null;\n const error = new AbortError(true);\n this.abortController?.abort(error);\n this.abortController = null;\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n }\n\n public cancelRun() {\n if (this._queue) {\n if (this._options.unstable_queueClearOnCancel ?? true) {\n this._queue.clear();\n } else {\n this._queue.notifyCancelled();\n if (this._activeRun) this._activeRun.cancelled = true;\n }\n }\n const error = new AbortError(false);\n this.abortController?.abort(error);\n this.abortController = null;\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n isError,\n artifact,\n }: AddToolResultOptions) {\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (c.result === undefined) added = true;\n return {\n ...c,\n result,\n artifact,\n isError,\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n // a result may arrive mid-run or on a non-head message; the resume\n // intentionally aborts any in-flight run, unlike respondToToolApproval\n if (\n added &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n } else if (added) {\n this._persistPausedMessage(parentId, message);\n }\n }\n\n public resumeToolCall(_options: ResumeToolCallOptions) {\n throw new Error(\n \"Local runtime does not support resuming tool calls. For human-in-the-loop tools, list the tool in unstable_humanToolNames and complete the call with addToolResult.\",\n );\n }\n\n public respondToToolApproval({\n approvalId,\n approved,\n optionId,\n text,\n reason,\n }: RespondToToolApprovalOptions): Promise<void> {\n let message = this.repository\n .getMessages()\n .findLast(\n (m): m is ThreadAssistantMessage =>\n m.role === \"assistant\" &&\n m.content.some(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n ),\n );\n\n if (!message)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n\n if (this.abortController !== null)\n throw new Error(\n \"Tried to respond to a tool approval while a run is in progress\",\n );\n\n if (message.status?.type !== \"requires-action\")\n throw new Error(\n \"Tried to respond to a tool approval on a message whose status is not requires-action\",\n );\n\n const target = message.content.find(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n );\n if (target?.type !== \"tool-call\" || !target.approval)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n if (target.approval.resolution !== undefined)\n throw new Error(\n \"Tried to respond to a tool approval that was cancelled or expired\",\n );\n if (target.approval.approved !== undefined)\n throw new Error(\"Tried to respond to an already decided tool approval\");\n\n const targetApproval = target.approval;\n const newContent = message.content.map((c) => {\n if (c !== target) return c;\n const approval = {\n ...targetApproval,\n approved,\n ...(optionId != null && { optionId }),\n ...(text != null && { text }),\n ...(reason != null && { reason }),\n };\n if (approved) return { ...c, approval };\n return {\n ...c,\n approval,\n result: { error: reason || \"Tool approval denied\" },\n isError: true,\n };\n });\n\n message = { ...message, content: newContent };\n const { parentId } = this.repository.getMessage(message.id);\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n if (\n this.repository.headId === message.id &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n } else {\n this._persistPausedMessage(parentId, message);\n }\n\n return Promise.resolve();\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"local-thread-runtime-core.js","names":["fromThreadMessageLike","generateId","ChatModelAdapter","ChatModelRunResult","shouldContinue","getAutoStatus","ExportedMessageRepository","LocalRuntimeOptionsBase","consumeSuggestionResult","AddToolResultOptions","ResumeToolCallOptions","RespondToToolApprovalOptions","ThreadSuggestion","ThreadRuntimeCore","StartRunConfig","ResumeRunConfig","BaseThreadRuntimeCore","AppendMessage","ThreadAssistantMessage","RunConfig","ThreadMessage","MessageNotSentError","toAssistantError","ModelContextProvider","createMessageQueue","MessageQueueController","QueuePlacement","EMPTY_QUEUE_ITEMS","QueueItemState","captureThreadRuntimeGeneration","invalidateThreadRuntime","isThreadRuntimeGenerationCurrent","AbortError","Error","name","detach","constructor","message","withLocalPauseReason","role","status","type","reason","content","some","c","result","undefined","interrupt","withLocalPauseReasons","data","messages","map","item","LocalThreadRuntimeCore","capabilities","switchToBranch","switchBranchDuringRun","edit","delete","reload","refetchThread","cancel","unstable_copy","speech","dictation","voice","attachments","feedback","queue","abortController","AbortController","_queue","_queueRunInFlight","_activeRun","cancelled","_runGeneration","_historyWrites","Map","Promise","_chainHistoryWrite","id","write","next","get","resolve","then","stored","set","_persistPausedMessage","parentId","history","_options","adapters","update","bind","runConfig","_lastRunConfig","catch","isDisabled","isSendDisabled","_isLoading","isLoading","_suggestions","_suggestionsController","suggestions","contextProvider","options","__internal_setOptions","_getThreadId","__internal_setGetThreadId","getThreadId","_getInitializePromise","__internal_setGetInitializePromise","getPromise","extras","previousHistory","hasUpdates","canSpeak","canDictate","canVoice","canAttach","canFeedback","canDelete","canQueue","unstable_enableMessageQueue","run","dispatch","generation","_runAppend","_resolveAppendParent","at","finally","notifyIdle","hold","subscribe","_notifySubscribers","_loadRequested","_loadPromise","length","__internal_load","error","console","promise","load","repo","repository","import","ensureInitialized","resume","unstable_resume","startRun","headId","sourceId","append","_isVoiceMessage","isTail","willRun","steer","adapter","enqueue","unstable_queueClearOnRewind","clear","_commitVoiceMessage","addOrUpdateMessage","resetHead","index","_voiceMessages","findIndex","voiceMessage","splice","_markVoiceMessagesDirty","_onVoiceConnected","_onVoiceDisconnected","release","getQueueItems","items","getSteerQueueItems","steerItems","moveQueueItem","queueItemId","placement","move","removeQueueItem","remove","_rollbackAppend","messageId","deleteMessage","_pendingAppends","_isRunActive","rawMessage","_runAppendInner","enrichAppendMetadata","newMessage","initPromise","notSent","cause","historyWrite","runResult","historyResult","allSettled","getMessages","messageIndex","m","resumeRun","stream","startConfig","exportExternalState","importExternalState","unstable_notifySessionReset","runCallback","metadata","unstable_state","state","unstable_annotations","unstable_data","steps","custom","createdAt","Date","_runLoop","_notifyEventSubscribers","alreadyPersisted","active","notifyBusy","abort","performRoundtrip","unstable_humanToolNames","queueMicrotask","suggestion","signal","promiseOrGenerator","generate","onUpdate","r","initialContent","initialAnnotations","initialData","initialSteps","initialCustom","hasStoredMessage","getMessage","ownsMessage","updateMessage","Partial","newSteps","newAnnotations","newData","annotations","timing","maxSteps","unstable_composerMetadata","_","context","getModelContext","chatModel","abortSignal","shouldCancelMessage","aborted","threadId","unstable_assistantMessageId","unstable_threadId","unstable_parentId","unstable_getMessage","Symbol","asyncIterator","e","isTerminal","isPausing","cancelRun","unstable_queueClearOnCancel","notifyCancelled","addToolResult","toolCallId","isError","artifact","modelContent","messageData","added","found","newContent","resumeToolCall","respondToToolApproval","approvalId","approved","optionId","text","findLast","approval","target","find","resolution","targetApproval","_notifyToolApprovalAnswered","toolName"],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"sourcesContent":["import { fromThreadMessageLike } from \"../../runtime/utils/thread-message-like\";\nimport { generateId } from \"../../utils/id\";\nimport type {\n ChatModelAdapter,\n ChatModelRunResult,\n} from \"../../runtime/utils/chat-model-adapter\";\nimport { shouldContinue } from \"./should-continue\";\nimport { getAutoStatus } from \"../../runtime/utils/auto-status\";\nimport type { ExportedMessageRepository } from \"../../runtime/utils/message-repository\";\nimport type { LocalRuntimeOptionsBase } from \"./local-runtime-options\";\nimport { consumeSuggestionResult } from \"../../adapters/suggestion\";\nimport type {\n AddToolResultOptions,\n ResumeToolCallOptions,\n RespondToToolApprovalOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n StartRunConfig,\n ResumeRunConfig,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport { BaseThreadRuntimeCore } from \"../../runtime/base/base-thread-runtime-core\";\nimport type {\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types/message\";\nimport type { RunConfig, ThreadMessage } from \"../../types/message\";\nimport { MessageNotSentError, toAssistantError } from \"../../types/error\";\nimport type { ModelContextProvider } from \"../../model-context/types\";\nimport {\n createMessageQueue,\n type MessageQueueController,\n} from \"../../runtime/queue/message-queue\";\nimport type { QueuePlacement } from \"../../runtime/queue/external-thread-queue-adapter\";\nimport {\n EMPTY_QUEUE_ITEMS,\n type QueueItemState,\n} from \"../../runtime/queue/queue-item\";\nimport {\n captureThreadRuntimeGeneration,\n invalidateThreadRuntime,\n isThreadRuntimeGenerationCurrent,\n} from \"../../runtime/utils/thread-runtime-lifecycle\";\n\nclass AbortError extends Error {\n override name = \"AbortError\";\n detach: boolean;\n\n constructor(detach: boolean, message?: string) {\n super(message);\n this.detach = detach;\n }\n}\n\n// `shouldContinue` resumes only on `tool-calls` and `resumeToolCall` throws, so\n// an imported `interrupt` with no interrupt payload would be stranded here.\n// Provenance cannot gate it: a repository that went through JSON has no marker.\n// The replacement stays content-derived, so a message with nothing resultless\n// left to act on lands on `complete` rather than an unactionable pause.\nconst withLocalPauseReason = (message: ThreadMessage): ThreadMessage => {\n if (\n message.role !== \"assistant\" ||\n message.status.type !== \"requires-action\" ||\n message.status.reason !== \"interrupt\" ||\n message.content.some(\n (c) =>\n c.type === \"tool-call\" && c.result === undefined && c.interrupt != null,\n )\n )\n return message;\n return {\n ...message,\n status: getAutoStatus(\n false,\n false,\n false,\n message.content.some(\n (c) => c.type === \"tool-call\" && c.result === undefined,\n ),\n ),\n };\n};\n\nconst withLocalPauseReasons = (\n data: ExportedMessageRepository,\n): ExportedMessageRepository => ({\n ...data,\n messages: data.messages.map((item) => ({\n ...item,\n message: withLocalPauseReason(item.message),\n })),\n});\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n switchBranchDuringRun: true,\n edit: true,\n delete: false,\n reload: true,\n refetchThread: false,\n cancel: true,\n unstable_copy: true,\n speech: false,\n dictation: false,\n voice: false,\n attachments: false,\n feedback: false,\n queue: false,\n };\n\n private abortController: AbortController | null = null;\n\n private _queue: MessageQueueController | null = null;\n // Identifies the dispatch in flight, not merely that one is: consecutive\n // queue runs overlap, and the previous dispatch settles after the next one\n // has already started.\n private _queueRunInFlight: object | null = null;\n private _activeRun: { cancelled: boolean } | null = null;\n private _runGeneration = 0;\n\n private _historyWrites = new Map<string, Promise<void>>();\n\n // Writes for one message id must land in issue order; an earlier paused\n // snapshot arriving after the terminal write would resurrect the pause.\n private _chainHistoryWrite(\n id: string,\n write: () => Promise<void>,\n ): Promise<void> {\n const next = (this._historyWrites.get(id) ?? Promise.resolve()).then(\n write,\n write,\n );\n const stored = next.then(\n () => {},\n () => {},\n );\n this._historyWrites.set(id, stored);\n void stored.then(() => {\n if (this._historyWrites.get(id) === stored) {\n this._historyWrites.delete(id);\n }\n });\n return next;\n }\n\n // A decision recorded on a still-paused message must reach history before\n // the run resumes, or a refresh would restore the message without it.\n private _persistPausedMessage(\n parentId: string | null,\n message: ThreadAssistantMessage,\n ) {\n if (message.status?.type !== \"requires-action\") return;\n const history = this._options.adapters.history;\n if (!history?.update) return;\n const update = history.update.bind(history);\n const item = { parentId, message, runConfig: this._lastRunConfig };\n this._chainHistoryWrite(message.id, () => update(item)).catch(() => {});\n }\n\n public readonly isDisabled = false;\n public readonly isSendDisabled = false;\n\n private _isLoading = false;\n public get isLoading() {\n return this._isLoading;\n }\n\n private _suggestions: readonly ThreadSuggestion[] = [];\n private _suggestionsController: AbortController | null = null;\n public get suggestions(): readonly ThreadSuggestion[] {\n return this._suggestions;\n }\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n contextProvider: ModelContextProvider,\n options: LocalRuntimeOptionsBase,\n ) {\n super(contextProvider);\n this.__internal_setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n private _lastRunConfig: RunConfig = {};\n\n private _getThreadId?: () => string | undefined;\n\n public __internal_setGetThreadId(getThreadId: () => string | undefined) {\n this._getThreadId = getThreadId;\n }\n\n private _getInitializePromise?: () => Promise<unknown> | undefined;\n\n public __internal_setGetInitializePromise(\n getPromise: () => Promise<unknown> | undefined,\n ) {\n this._getInitializePromise = getPromise;\n }\n\n public get extras() {\n return undefined;\n }\n\n public __internal_setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n const previousHistory = this._options?.adapters.history;\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canDictate = options.adapters?.dictation !== undefined;\n if (this.capabilities.dictation !== canDictate) {\n this.capabilities.dictation = canDictate;\n hasUpdates = true;\n }\n\n const canVoice = options.adapters?.voice !== undefined;\n if (this.capabilities.voice !== canVoice) {\n this.capabilities.voice = canVoice;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n const canDelete = options.adapters?.history?.delete !== undefined;\n if (this.capabilities.delete !== canDelete) {\n this.capabilities.delete = canDelete;\n hasUpdates = true;\n }\n\n const canQueue = options.unstable_enableMessageQueue === true;\n if (canQueue && !this._queue) {\n this._queue = createMessageQueue({\n run: (message) => {\n // release the queue when the dispatch settles, even if it rejects\n // before reaching startRun's finally, so a failure can't deadlock it\n const dispatch = {};\n this._queueRunInFlight = dispatch;\n const generation = this._runGeneration;\n // the tail may have moved since the message was enqueued\n void this._runAppend({\n ...message,\n parentId: this._resolveAppendParent(\n this.messages.at(-1)?.id ?? null,\n ),\n })\n .finally(() => {\n if (this._queueRunInFlight === dispatch) {\n this._queueRunInFlight = null;\n // A dispatch that failed before starting a run settles here;\n // runs that did start release from _runLoop.\n if (this._runGeneration === generation)\n this._queue?.notifyIdle();\n }\n })\n .catch(() => {});\n },\n });\n if (this.voice) this._queue.hold();\n this._queue.subscribe(() => this._notifySubscribers());\n } else if (!canQueue && this._queue) {\n this._queue = null;\n }\n if (this.capabilities.queue !== canQueue) {\n this.capabilities.queue = canQueue;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n\n if (\n this._loadRequested &&\n !this._loadPromise &&\n !previousHistory &&\n options.adapters.history &&\n this.messages.length === 0\n ) {\n void this.__internal_load().catch((error: unknown) => {\n console.error(\n \"[assistant-ui] local thread history load failed:\",\n error,\n );\n });\n }\n }\n\n private _loadPromise: Promise<void> | undefined;\n private _loadRequested = false;\n public __internal_load() {\n this._loadRequested = true;\n if (this._loadPromise) return this._loadPromise;\n if (!this.adapters.history) return Promise.resolve();\n\n const promise = this.adapters.history.load();\n\n this._isLoading = true;\n this._notifySubscribers();\n\n this._loadPromise = promise\n .then((repo) => {\n if (!repo) return;\n this.repository.import(withLocalPauseReasons(repo));\n if (repo.messages.length > 0) {\n this.ensureInitialized();\n }\n this._notifySubscribers();\n\n const resume = this.adapters.history?.resume?.bind(\n this.adapters.history,\n );\n if (repo.unstable_resume && resume) {\n this.startRun(\n {\n parentId: this.repository.headId,\n sourceId: this.repository.headId,\n runConfig: this._lastRunConfig,\n },\n resume,\n ).catch(() => {});\n }\n })\n .finally(() => {\n this._isLoading = false;\n this._notifySubscribers();\n });\n\n return this._loadPromise;\n }\n\n public async append(message: AppendMessage): Promise<void> {\n message = {\n ...message,\n parentId: this._resolveAppendParent(message.parentId),\n };\n if (this.voice)\n throw new Error(\n \"Cannot send a text message while a voice session is connected\",\n );\n if (this._isVoiceMessage(message.sourceId))\n throw new Error(\"Voice transcript messages cannot be edited\");\n const isTail = message.parentId === (this.messages.at(-1)?.id ?? null);\n const willRun = message.startRun ?? message.role === \"user\";\n if (this._queue && willRun && isTail) {\n if (message.steer ?? this._queueRunInFlight !== null)\n this._queue.adapter.steer(message);\n else this._queue.adapter.enqueue(message);\n return;\n }\n if (\n this._queue &&\n !isTail &&\n (this._options.unstable_queueClearOnRewind ?? true)\n )\n this._queue.clear();\n return this._runAppend(message);\n }\n\n protected override _commitVoiceMessage(message: ThreadMessage): void {\n const parentId = this.repository.headId;\n this.repository.addOrUpdateMessage(parentId, message);\n this.repository.resetHead(message.id);\n void this._options.adapters.history\n ?.append({ parentId, message })\n .catch(() => {});\n const index = this._voiceMessages.findIndex(\n (voiceMessage) => voiceMessage.id === message.id,\n );\n if (index !== -1) this._voiceMessages.splice(index, 1);\n this._markVoiceMessagesDirty();\n }\n\n protected override _onVoiceConnected(): void {\n this._queue?.hold();\n }\n\n protected override _onVoiceDisconnected(): void {\n this._queue?.release();\n }\n\n public getQueueItems(): readonly QueueItemState[] {\n // Reads can arrive during base-thread construction, before the queue field\n // is assigned, so guard against the unset field.\n return this._queue?.adapter.items ?? EMPTY_QUEUE_ITEMS;\n }\n\n public getSteerQueueItems(): readonly QueueItemState[] {\n return this._queue?.adapter.steerItems ?? EMPTY_QUEUE_ITEMS;\n }\n\n public moveQueueItem(queueItemId: string, placement: QueuePlacement): void {\n this._queue?.adapter.move(queueItemId, placement);\n }\n\n public removeQueueItem(queueItemId: string): void {\n this._queue?.adapter.remove(queueItemId);\n }\n\n private _rollbackAppend(messageId: string) {\n try {\n this.repository.deleteMessage(messageId);\n } catch {\n return;\n }\n this._notifySubscribers();\n }\n\n private _pendingAppends = 0;\n\n protected override _isRunActive(): boolean {\n return this._pendingAppends > 0 || super._isRunActive();\n }\n\n private async _runAppend(rawMessage: AppendMessage): Promise<void> {\n this._pendingAppends += 1;\n try {\n await this._runAppendInner(rawMessage);\n } finally {\n this._pendingAppends -= 1;\n }\n }\n\n private async _runAppendInner(rawMessage: AppendMessage): Promise<void> {\n // Stamped here rather than in `append` so a queued message is gated after\n // the flush re-pointed its parentId at the current tail.\n const generation = captureThreadRuntimeGeneration(this);\n const message = this.enrichAppendMetadata(rawMessage);\n this.ensureInitialized();\n\n const newMessage = fromThreadMessageLike(message, generateId(), {\n type: \"complete\",\n reason: \"unknown\",\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n this._notifySubscribers();\n\n // Initialization only gates the history write and the run; the message\n // is already on screen. A failed barrier rolls the optimistic message\n // back and rejects as an unsent message so the composer restores the\n // draft; a thread invalidated mid-wait rolls back silently.\n try {\n const initPromise = this._getInitializePromise?.();\n if (initPromise) {\n await initPromise;\n }\n } catch (error) {\n this._rollbackAppend(newMessage.id);\n if (!isThreadRuntimeGenerationCurrent(this, generation)) return;\n const notSent = new MessageNotSentError();\n notSent.cause = error;\n throw notSent;\n }\n if (!isThreadRuntimeGenerationCurrent(this, generation)) {\n this._rollbackAppend(newMessage.id);\n return;\n }\n const historyWrite = this._options.adapters.history?.append({\n parentId: message.parentId,\n message: newMessage,\n ...(message.runConfig !== undefined && { runConfig: message.runConfig }),\n });\n void historyWrite?.catch(() => {});\n\n const startRun = message.startRun ?? message.role === \"user\";\n if (startRun) {\n const [runResult, historyResult] = await Promise.allSettled([\n this.startRun({\n parentId: newMessage.id,\n sourceId: message.sourceId,\n runConfig: message.runConfig ?? {},\n }),\n historyWrite,\n ]);\n if (runResult.status === \"rejected\") throw runResult.reason;\n if (historyResult.status === \"rejected\") throw historyResult.reason;\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n await historyWrite;\n }\n }\n\n public async deleteMessage(messageId: string): Promise<void> {\n const adapter = this._options.adapters.history;\n if (!adapter?.delete)\n throw new Error(\"Runtime does not support deleting messages.\");\n\n const messages = this.repository.getMessages();\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) throw new Error(\"Message not found.\");\n\n const message = messages[messageIndex]!;\n const parentId = messages[messageIndex - 1]?.id ?? null;\n const items = [{ parentId, message }];\n\n await adapter.delete(items);\n\n this.repository.deleteMessage(messageId);\n this._notifySubscribers();\n }\n\n public resumeRun({ stream, ...startConfig }: ResumeRunConfig): Promise<void> {\n if (!stream)\n throw new Error(\"You must pass a stream parameter to resume runs.\");\n return this.startRun(startConfig, stream);\n }\n\n public exportExternalState(): any {\n throw new Error(\"Runtime does not support exporting external states.\");\n }\n\n public override import(data: ExportedMessageRepository) {\n super.import(withLocalPauseReasons(data));\n }\n\n public importExternalState(): void {\n throw new Error(\"Runtime does not support importing external states.\");\n }\n\n public unstable_notifySessionReset(): void {\n throw new Error(\"Runtime does not support resetting sessions.\");\n }\n\n public async startRun(\n { parentId, sourceId, runConfig }: StartRunConfig,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this.ensureInitialized();\n if (this.voice)\n throw new Error(\"Cannot start a run while a voice session is connected\");\n if (this._isVoiceMessage(sourceId))\n throw new Error(\"Voice transcript messages cannot be reloaded\");\n\n // add assistant message\n const id = generateId();\n const message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n metadata: {\n unstable_state: this.state,\n unstable_annotations: [],\n unstable_data: [],\n steps: [],\n custom: {},\n },\n createdAt: new Date(),\n };\n\n return this._runLoop(parentId, message, runConfig, runCallback);\n }\n\n private async _runLoop(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n if (this.voice)\n throw new Error(\"Cannot start a run while a voice session is connected\");\n this._notifyEventSubscribers(\"runStart\", {});\n\n // A run entered on a requires-action message resumes a pause an\n // update-capable adapter already holds (written at pause time or loaded).\n const alreadyPersisted =\n message.status?.type === \"requires-action\" &&\n this._options.adapters.history?.update !== undefined;\n\n const run = { cancelled: false };\n this._activeRun = run;\n this._runGeneration++;\n\n let active = false;\n try {\n // mark busy for runs not started through the queue (regenerate, resume)\n this._queue?.notifyBusy();\n this._suggestions = [];\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n this._notifySubscribers();\n\n do {\n message = await this.performRoundtrip(\n parentId,\n message,\n runConfig,\n alreadyPersisted,\n run,\n runCallback,\n );\n runCallback = undefined;\n if (this._activeRun !== run) break;\n } while (shouldContinue(message, this._options.unstable_humanToolNames));\n } finally {\n this._notifyEventSubscribers(\"runEnd\", {});\n // the settle belongs to this run only while it is still the active run\n // or was cancelled (the engine expects a cancelled run's settle); a run\n // superseded by a newer one stays silent\n active = this._activeRun === run;\n if (active) this._activeRun = null;\n if (active || run.cancelled) {\n queueMicrotask(() => this._queue?.notifyIdle());\n }\n }\n\n if (\n active &&\n this.adapters.suggestion &&\n message.status?.type !== \"requires-action\"\n ) {\n this._suggestionsController = new AbortController();\n const signal = this._suggestionsController.signal;\n const adapter = this.adapters.suggestion;\n void (async () => {\n try {\n const promiseOrGenerator = adapter.generate({\n messages: this.messages,\n signal,\n });\n await consumeSuggestionResult(promiseOrGenerator, {\n signal,\n onUpdate: (r) => {\n this._suggestions = r;\n this._notifySubscribers();\n },\n });\n } catch {}\n })();\n }\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n alreadyPersisted: boolean,\n run: { cancelled: boolean },\n runCallback?: ChatModelAdapter[\"run\"],\n ) {\n const messages = parentId ? this.repository.getMessages(parentId) : [];\n\n // abort existing run\n this.abortController?.abort();\n const abortController = new AbortController();\n this.abortController = abortController;\n\n const initialContent = message.content;\n const initialAnnotations = message.metadata?.unstable_annotations;\n const initialData = message.metadata?.unstable_data;\n const initialSteps = message.metadata?.steps;\n const initialCustom = message.metadata?.custom;\n let hasStoredMessage = true;\n try {\n this.repository.getMessage(message.id);\n } catch {\n hasStoredMessage = false;\n }\n // Other writers replace the stored message object, so identity distinguishes this run from a newer owner.\n const ownsMessage = () => {\n if (!hasStoredMessage) return this._activeRun === run;\n try {\n return this.repository.getMessage(message.id).message === message;\n } catch {\n return false;\n }\n };\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n if (!ownsMessage()) return;\n const newSteps = m.metadata?.steps;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n const newAnnotations = m.metadata?.unstable_annotations;\n const newData = m.metadata?.unstable_data;\n const annotations = newAnnotations\n ? [...(initialAnnotations ?? []), ...newAnnotations]\n : undefined;\n const data = newData ? [...(initialData ?? []), ...newData] : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(m.metadata.unstable_state !== undefined\n ? { unstable_state: m.metadata.unstable_state }\n : undefined),\n ...(annotations\n ? { unstable_annotations: annotations }\n : undefined),\n ...(data ? { unstable_data: data } : undefined),\n ...(steps ? { steps } : undefined),\n ...(m.metadata?.timing\n ? { timing: m.metadata.timing }\n : undefined),\n ...(m.metadata?.custom\n ? {\n custom: {\n ...(initialCustom ?? {}),\n ...m.metadata.custom,\n },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n hasStoredMessage = true;\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps ?? 2;\n\n try {\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n }\n\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n\n // Switch to the new message branch right after adding it for the first time\n this.repository.resetHead(message.id);\n this._notifySubscribers();\n\n this._lastRunConfig = runConfig ?? {};\n // unstable_composerMetadata is composer-only (stamped onto the outgoing\n // message); never expose it to the chat-model adapter's run context.\n const { unstable_composerMetadata: _, ...context } =\n this.getModelContext();\n\n runCallback =\n runCallback ??\n this.adapters.chatModel.run.bind(this.adapters.chatModel);\n\n const abortSignal = abortController.signal;\n const shouldCancelMessage = () =>\n abortSignal.aborted &&\n (message.status.type === \"running\" ||\n (message.status.type === \"requires-action\" &&\n (this._activeRun !== run ||\n shouldContinue(message, this._options.unstable_humanToolNames))));\n const threadId = this._getThreadId?.();\n const promiseOrGenerator = runCallback({\n messages,\n runConfig: this._lastRunConfig,\n abortSignal,\n context,\n unstable_assistantMessageId: message.id,\n unstable_threadId: threadId,\n unstable_parentId: parentId,\n unstable_getMessage() {\n return message;\n },\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n if (abortSignal.aborted) {\n if (shouldCancelMessage()) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n }\n break;\n }\n\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n if (shouldCancelMessage()) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n if (e instanceof AbortError) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"error\",\n error: toAssistantError(e),\n },\n });\n\n throw e;\n }\n } finally {\n if (this.abortController === abortController) {\n this.abortController = null;\n }\n\n const history = this._options.adapters.history;\n const item = {\n parentId,\n message,\n runConfig: this._lastRunConfig,\n };\n const isTerminal =\n message.status.type === \"complete\" ||\n message.status.type === \"incomplete\";\n const isPausing =\n message.status.type === \"requires-action\" &&\n !shouldContinue(message, this._options.unstable_humanToolNames);\n\n // Pauses are written only for adapters that can rewrite the entry later;\n // an append-only adapter would strand a half-finished run in history.\n if (ownsMessage() && (isTerminal || (isPausing && history?.update))) {\n const write =\n alreadyPersisted && history?.update\n ? history.update.bind(history)\n : history?.append.bind(history);\n if (write) {\n await this._chainHistoryWrite(message.id, () => write(item));\n }\n }\n }\n return message;\n }\n\n public detach() {\n invalidateThreadRuntime(this);\n // drop the queue so pending items cannot dispatch on a detached thread\n this._queue = null;\n const error = new AbortError(true);\n this.abortController?.abort(error);\n this.abortController = null;\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n }\n\n public cancelRun() {\n if (this._queue) {\n if (this._options.unstable_queueClearOnCancel ?? true) {\n this._queue.clear();\n } else {\n this._queue.notifyCancelled();\n if (this._activeRun) this._activeRun.cancelled = true;\n }\n }\n const error = new AbortError(false);\n this.abortController?.abort(error);\n this.abortController = null;\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n isError,\n artifact,\n modelContent,\n }: AddToolResultOptions) {\n if (this.voice)\n throw new Error(\n \"Cannot add a tool result while a voice session is connected\",\n );\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (c.result === undefined) added = true;\n // artifact and modelContent are optional; only override when supplied so\n // a later result that omits them does not clobber a stored value.\n return {\n ...c,\n result,\n isError,\n ...(artifact !== undefined && { artifact }),\n ...(modelContent !== undefined && { modelContent }),\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n // a result may arrive mid-run or on a non-head message; the resume\n // intentionally aborts any in-flight run, unlike respondToToolApproval\n if (\n added &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n } else if (added) {\n this._persistPausedMessage(parentId, message);\n }\n }\n\n public resumeToolCall(_options: ResumeToolCallOptions) {\n throw new Error(\n \"Local runtime does not support resuming tool calls. For human-in-the-loop tools, list the tool in unstable_humanToolNames and complete the call with addToolResult.\",\n );\n }\n\n public respondToToolApproval({\n approvalId,\n approved,\n optionId,\n text,\n reason,\n }: RespondToToolApprovalOptions): Promise<void> {\n if (this.voice)\n throw new Error(\n \"Cannot respond to a tool approval while a voice session is connected\",\n );\n let message = this.repository\n .getMessages()\n .findLast(\n (m): m is ThreadAssistantMessage =>\n m.role === \"assistant\" &&\n m.content.some(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n ),\n );\n\n if (!message)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n\n if (this.abortController !== null)\n throw new Error(\n \"Tried to respond to a tool approval while a run is in progress\",\n );\n\n if (message.status?.type !== \"requires-action\")\n throw new Error(\n \"Tried to respond to a tool approval on a message whose status is not requires-action\",\n );\n\n const target = message.content.find(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n );\n if (target?.type !== \"tool-call\" || !target.approval)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n if (target.approval.resolution !== undefined)\n throw new Error(\n \"Tried to respond to a tool approval that was cancelled or expired\",\n );\n if (target.approval.approved !== undefined)\n throw new Error(\"Tried to respond to an already decided tool approval\");\n\n const targetApproval = target.approval;\n const newContent = message.content.map((c) => {\n if (c !== target) return c;\n const approval = {\n ...targetApproval,\n approved,\n ...(optionId != null && { optionId }),\n ...(text != null && { text }),\n ...(reason != null && { reason }),\n };\n if (approved) return { ...c, approval };\n return {\n ...c,\n approval,\n result: { error: reason || \"Tool approval denied\" },\n isError: true,\n };\n });\n\n message = { ...message, content: newContent };\n const { parentId } = this.repository.getMessage(message.id);\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n this._notifyToolApprovalAnswered(\n message.id,\n target.toolCallId,\n target.toolName,\n approved,\n );\n\n if (\n this.repository.headId === message.id &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n } else {\n this._persistPausedMessage(parentId, message);\n }\n\n return Promise.resolve();\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { ThreadAssistantMessage } from "../../types/message.js";
2
2
  //#region src/runtimes/local/should-continue.d.ts
3
- declare const shouldContinue: (result: ThreadAssistantMessage, humanToolNames: string[] | undefined) => boolean;
3
+ export declare const shouldContinue: (result: ThreadAssistantMessage, humanToolNames: string[] | undefined) => boolean;
4
4
  //#endregion
5
- export { shouldContinue };
6
5
  //# sourceMappingURL=should-continue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"should-continue.d.ts","names":[],"sources":["../../../src/runtimes/local/should-continue.ts"],"mappings":";;cAEa,iBACX,QAAQ,wBACR"}
1
+ {"version":3,"file":"should-continue.d.ts","names":[],"sources":["../../../src/runtimes/local/should-continue.ts"],"mappings":";;qBAEa,iBACX,QAAQ,wBACR"}
@@ -1,7 +1,7 @@
1
1
  import { ThreadMessage } from "../../types/message.js";
2
2
  import { InertThreadRuntimeCore } from "../inert/InertThreadRuntimeCore.js";
3
3
  //#region src/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts
4
- declare class ReadonlyThreadRuntimeCore extends InertThreadRuntimeCore {
4
+ export declare class ReadonlyThreadRuntimeCore extends InertThreadRuntimeCore {
5
5
  protected get error(): Error;
6
6
  private _messages;
7
7
  get messages(): readonly ThreadMessage[];
@@ -54,5 +54,4 @@ declare class ReadonlyThreadRuntimeCore extends InertThreadRuntimeCore {
54
54
  disconnectVoice(): void;
55
55
  }
56
56
  //#endregion
57
- export { ReadonlyThreadRuntimeCore };
58
57
  //# sourceMappingURL=ReadonlyThreadRuntimeCore.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ReadonlyThreadRuntimeCore.d.ts","names":[],"sources":["../../../src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts"],"mappings":";;;cAUa,kCAAkC;gBAC/B,SAAK;UAIX;MAEJ,qBAAQ;EAIZ,YAAY,mBAAmB;EAM/B,eAAe;;;;;EAUf,YAAY;EAMZ;;;;;;EASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEA;EAES;EAEA;EAEA"}
1
+ {"version":3,"file":"ReadonlyThreadRuntimeCore.d.ts","names":[],"sources":["../../../src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts"],"mappings":";;;qBAUa,kCAAkC;gBAC/B,SAAK;UAIX;MAEJ,qBAAQ;EAIZ,YAAY,mBAAmB;EAM/B,eAAe;;;;;EAUf,YAAY;EAMZ;;;;;;EASA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEA;EAES;EAEA;EAEA"}
@@ -1,7 +1,7 @@
1
1
  import { RemoteThreadInitializeResponse, RemoteThreadListAdapter, RemoteThreadListResponse, RemoteThreadMetadata } from "../types.js";
2
2
  import { AssistantStream } from "assistant-stream";
3
3
  //#region src/runtimes/remote-thread-list/adapter/in-memory.d.ts
4
- declare class InMemoryThreadListAdapter implements RemoteThreadListAdapter {
4
+ export declare class InMemoryThreadListAdapter implements RemoteThreadListAdapter {
5
5
  list(): Promise<RemoteThreadListResponse>;
6
6
  rename(): Promise<void>;
7
7
  updateCustom(): Promise<void>;
@@ -13,5 +13,4 @@ declare class InMemoryThreadListAdapter implements RemoteThreadListAdapter {
13
13
  fetch(threadId: string): Promise<RemoteThreadMetadata>;
14
14
  }
15
15
  //#endregion
16
- export { InMemoryThreadListAdapter };
17
16
  //# sourceMappingURL=in-memory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.d.ts","names":[],"sources":["../../../../src/runtimes/remote-thread-list/adapter/in-memory.ts"],"mappings":";;;cAQa,qCAAqC;EAChD,QAAQ,QAAQ;EAMhB,UAAU;EAIV,gBAAgB;EAIhB,WAAW;EAIX,aAAa;EAIb,UAAU;EAIV,WAAW,mBAAmB,QAAQ;EAItC,iBAAiB,QAAQ;EAUzB,MAAM,mBAAmB,QAAQ"}
1
+ {"version":3,"file":"in-memory.d.ts","names":[],"sources":["../../../../src/runtimes/remote-thread-list/adapter/in-memory.ts"],"mappings":";;;qBAQa,qCAAqC;EAChD,QAAQ,QAAQ;EAMhB,UAAU;EAIV,gBAAgB;EAIhB,WAAW;EAIX,aAAa;EAIb,UAAU;EAIV,WAAW,mBAAmB,QAAQ;EAItC,iBAAiB,QAAQ;EAUzB,MAAM,mBAAmB,QAAQ"}
@@ -1,9 +1,8 @@
1
1
  import { SILENT_RUNTIME_ACTION } from "../../utils/silent-runtime-action.js";
2
2
  //#region src/runtimes/remote-thread-list/adapter-changed.d.ts
3
- declare class ThreadListAdapterChangedError extends Error {
3
+ export declare class ThreadListAdapterChangedError extends Error {
4
4
  readonly [SILENT_RUNTIME_ACTION] = true;
5
5
  constructor();
6
6
  }
7
7
  //#endregion
8
- export { ThreadListAdapterChangedError };
9
8
  //# sourceMappingURL=adapter-changed.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"adapter-changed.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/adapter-changed.ts"],"mappings":";;cAEa,sCAAsC;YACvC"}
1
+ {"version":3,"file":"adapter-changed.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/adapter-changed.ts"],"mappings":";;qBAEa,sCAAsC;YACvC"}
@@ -1,6 +1,5 @@
1
1
  import { ThreadRuntimeCore } from "../../runtime/interfaces/thread-runtime-core.js";
2
2
  //#region src/runtimes/remote-thread-list/empty-thread-core.d.ts
3
- declare const EMPTY_THREAD_CORE: ThreadRuntimeCore;
3
+ export declare const EMPTY_THREAD_CORE: ThreadRuntimeCore;
4
4
  //#endregion
5
- export { EMPTY_THREAD_CORE };
6
5
  //# sourceMappingURL=empty-thread-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"empty-thread-core.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/empty-thread-core.ts"],"mappings":";;cA2Ca,mBAAmB"}
1
+ {"version":3,"file":"empty-thread-core.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/empty-thread-core.ts"],"mappings":";;qBA2Ca,mBAAmB"}
@@ -9,7 +9,7 @@ type Transform<TState, TResult> = {
9
9
  /** transform the state only while loading */
10
10
  loading?: (state: TState, task: Promise<TResult>) => TState;
11
11
  };
12
- declare class OptimisticState<TState> extends BaseSubscribable {
12
+ export declare class OptimisticState<TState> extends BaseSubscribable {
13
13
  private readonly _pendingTransforms;
14
14
  /**
15
15
  * Completed optimistic callbacks remain active while any transform is
@@ -32,5 +32,4 @@ declare class OptimisticState<TState> extends BaseSubscribable {
32
32
  optimisticUpdate<TResult>(transform: Transform<TState, TResult>): Promise<TResult>;
33
33
  }
34
34
  //#endregion
35
- export { OptimisticState };
36
35
  //# sourceMappingURL=optimistic-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"optimistic-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/optimistic-state.ts"],"mappings":";;KAEK,UAAU,QAAQ;EACrB,eAAe,QAAQ;;EAGvB,QAAQ,OAAO,QAAQ,QAAQ,YAAY;;EAG3C,cAAc,OAAO,WAAW;;EAGhC,WAAW,OAAO,QAAQ,MAAM,QAAQ,aAAa;;cAuB1C,gBAAgB,gBAAgB;mBAC1B;;;;;;;;mBAUA;UAGT;UACA;UAEA;UACA;EAEW,YAAA,cAAc;UAMzB;MAwBG,aAAa;MAIb,SAAS;EAIb,OAAO,OAAO;EAKd,MAAM,OAAO;EAUP,iBAAiB,SAC5B,WAAW,UAAU,QAAQ,WAC5B,QAAQ"}
1
+ {"version":3,"file":"optimistic-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/optimistic-state.ts"],"mappings":";;KAEK,UAAU,QAAQ;EACrB,eAAe,QAAQ;;EAGvB,QAAQ,OAAO,QAAQ,QAAQ,YAAY;;EAG3C,cAAc,OAAO,WAAW;;EAGhC,WAAW,OAAO,QAAQ,MAAM,QAAQ,aAAa;;qBAuB1C,gBAAgB,gBAAgB;mBAC1B;;;;;;;;mBAUA;UAGT;UACA;UAEA;UACA;EAEW,YAAA,cAAc;UAMzB;MAwBG,aAAa;MAIb,SAAS;EAIb,OAAO,OAAO;EAKd,MAAM,OAAO;EAUP,iBAAiB,SAC5B,WAAW,UAAU,QAAQ,WAC5B,QAAQ"}
@@ -1,6 +1,6 @@
1
1
  import { RemoteThreadInitializeResponse, RemoteThreadMetadata } from "./types.js";
2
2
  //#region src/runtimes/remote-thread-list/remote-thread-state.d.ts
3
- type RemoteThreadData = {
3
+ export type RemoteThreadData = {
4
4
  readonly id: string;
5
5
  readonly remoteId: undefined;
6
6
  readonly externalId: undefined;
@@ -28,20 +28,20 @@ type RemoteThreadData = {
28
28
  readonly custom?: Record<string, unknown> | undefined;
29
29
  readonly localOrigin?: true;
30
30
  };
31
- type THREAD_MAPPING_ID = string & {
31
+ export type THREAD_MAPPING_ID = string & {
32
32
  __brand: "THREAD_MAPPING_ID";
33
33
  };
34
- declare function createThreadMappingId(id: string): THREAD_MAPPING_ID;
35
- declare const LOCAL_THREAD_ID_PREFIX = "__LOCALID_";
36
- declare const normalizeCursor: (c: string | undefined) => string | undefined;
37
- type ClassifyAccumulator = {
34
+ export declare function createThreadMappingId(id: string): THREAD_MAPPING_ID;
35
+ export declare const LOCAL_THREAD_ID_PREFIX = "__LOCALID_";
36
+ export declare const normalizeCursor: (c: string | undefined) => string | undefined;
37
+ export type ClassifyAccumulator = {
38
38
  threadIds: string[];
39
39
  archivedThreadIds: string[];
40
40
  threadIdMap: Record<string, THREAD_MAPPING_ID>;
41
41
  threadData: Record<THREAD_MAPPING_ID, RemoteThreadData>;
42
42
  };
43
- declare const classifyThreads: (threads: readonly RemoteThreadMetadata[], acc: ClassifyAccumulator) => ClassifyAccumulator;
44
- type RemoteThreadState = {
43
+ export declare const classifyThreads: (threads: readonly RemoteThreadMetadata[], acc: ClassifyAccumulator) => ClassifyAccumulator;
44
+ export type RemoteThreadState = {
45
45
  readonly isLoading: boolean;
46
46
  readonly loadError: unknown;
47
47
  readonly isLoadingMore: boolean;
@@ -52,15 +52,15 @@ type RemoteThreadState = {
52
52
  readonly threadIdMap: Readonly<Record<string, THREAD_MAPPING_ID>>;
53
53
  readonly threadData: Readonly<Record<THREAD_MAPPING_ID, RemoteThreadData>>;
54
54
  };
55
- declare const createEmptyRemoteThreadState: () => RemoteThreadState;
56
- declare const seedNewThread: (state: RemoteThreadState) => {
55
+ export declare const createEmptyRemoteThreadState: () => RemoteThreadState;
56
+ export declare const seedNewThread: (state: RemoteThreadState) => {
57
57
  id: string;
58
58
  state: RemoteThreadState;
59
59
  };
60
- declare const preserveMidLoadTransitions: (state: RemoteThreadState, priorOrder: Pick<RemoteThreadState, "threadIds" | "archivedThreadIds">, statusAtRequest: ReadonlyMap<string, RemoteThreadData["status"]>) => RemoteThreadState;
61
- declare const statusSnapshot: (state: RemoteThreadState) => ReadonlyMap<string, RemoteThreadData["status"]>;
62
- declare const getThreadData: (state: RemoteThreadState, threadIdOrRemoteId: string) => RemoteThreadData | undefined;
63
- declare const reconcileInitializedThread: (state: RemoteThreadState, threadId: string, remoteId: string, externalId: string | undefined, retainedThreadId?: string) => {
60
+ export declare const preserveMidLoadTransitions: (state: RemoteThreadState, priorOrder: Pick<RemoteThreadState, "threadIds" | "archivedThreadIds">, statusAtRequest: ReadonlyMap<string, RemoteThreadData["status"]>) => RemoteThreadState;
61
+ export declare const statusSnapshot: (state: RemoteThreadState) => ReadonlyMap<string, RemoteThreadData["status"]>;
62
+ export declare const getThreadData: (state: RemoteThreadState, threadIdOrRemoteId: string) => RemoteThreadData | undefined;
63
+ export declare const reconcileInitializedThread: (state: RemoteThreadState, threadId: string, remoteId: string, externalId: string | undefined, retainedThreadId?: string) => {
64
64
  state: RemoteThreadState;
65
65
  removedMappingId: THREAD_MAPPING_ID | undefined;
66
66
  survivorMappingId: THREAD_MAPPING_ID;
@@ -71,12 +71,11 @@ declare const reconcileInitializedThread: (state: RemoteThreadState, threadId: s
71
71
  * so that goes through `promoteNewThreadReducer`; asking for it here leaves the
72
72
  * state unchanged.
73
73
  */
74
- declare const updateStatusReducer: (state: RemoteThreadState, threadIdOrRemoteId: string, newStatus: "regular" | "archived" | "deleted") => RemoteThreadState;
74
+ export declare const updateStatusReducer: (state: RemoteThreadState, threadIdOrRemoteId: string, newStatus: "regular" | "archived" | "deleted") => RemoteThreadState;
75
75
  /**
76
76
  * Promotes the local draft to `regular`, carrying the initialization promise
77
77
  * onto the slot.
78
78
  */
79
- declare const promoteNewThreadReducer: (state: RemoteThreadState, threadIdOrRemoteId: string, initializeTask: Promise<RemoteThreadInitializeResponse>) => RemoteThreadState;
79
+ export declare const promoteNewThreadReducer: (state: RemoteThreadState, threadIdOrRemoteId: string, initializeTask: Promise<RemoteThreadInitializeResponse>) => RemoteThreadState;
80
80
  //#endregion
81
- export { ClassifyAccumulator, LOCAL_THREAD_ID_PREFIX, RemoteThreadData, RemoteThreadState, THREAD_MAPPING_ID, classifyThreads, createEmptyRemoteThreadState, createThreadMappingId, getThreadData, normalizeCursor, preserveMidLoadTransitions, promoteNewThreadReducer, reconcileInitializedThread, seedNewThread, statusSnapshot, updateStatusReducer };
82
81
  //# sourceMappingURL=remote-thread-state.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote-thread-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/remote-thread-state.ts"],"mappings":";;KAOY;WAEG;WACA;WACA;WACA;WACA;WACA;WACA;;WAGA;WACA,gBAAgB,QAAQ;WACxB;WACA;WACA;WACA;WACA;WACA;;WAGA;WACA,gBAAgB,QAAQ;WACxB;WACA;WACA;WACA;WACA,gBAAgB;WAChB,SAAS;WACT;;KAGH;EAA+B;;iBAE3B,sBAAsB,aAAa;cAItC;cAEA,kBAAmB;KAGpB;EACV;EACA;EACA,aAAa,eAAe;EAC5B,YAAY,OAAO,mBAAmB;;cAS3B,kBACX,kBAAkB,wBAClB,KAAK,wBACJ;KAqES;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA,aAAa,SAAS,eAAe;WACrC,YAAY,SAAS,OAAO,mBAAmB;;cAG7C,oCAAmC;cAYnC,gBACX,OAAO;EACJ;EAAY,OAAO;;cAyCX,6BACX,OAAO,mBACP,YAAY,KAAK,uDACjB,iBAAiB,oBAAoB,gCACpC;cAoDU,iBACX,OAAO,sBACN,oBAAoB;cAGV,gBACX,OAAO,mBACP,+BAA0B;cAWf,6BACX,OAAO,mBACP,kBACA,kBACA,gCACA;EAEA,OAAO;EACP,kBAAkB;EAClB,mBAAmB;;;;;;;;cAuLR,sBACX,OAAO,mBACP,4BACA,kDAA6C;;;;;cAOlC,0BACX,OAAO,mBACP,4BACA,gBAAgB,QAAQ,oCAA+B"}
1
+ {"version":3,"file":"remote-thread-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/remote-thread-state.ts"],"mappings":";;YAOY;WAEG;WACA;WACA;WACA;WACA;WACA;WACA;;WAGA;WACA,gBAAgB,QAAQ;WACxB;WACA;WACA;WACA;WACA;WACA;;WAGA;WACA,gBAAgB,QAAQ;WACxB;WACA;WACA;WACA;WACA,gBAAgB;WAChB,SAAS;WACT;;YAGH;EAA+B;;wBAE3B,sBAAsB,aAAa;qBAItC;qBAEA,kBAAmB;YAGpB;EACV;EACA;EACA,aAAa,eAAe;EAC5B,YAAY,OAAO,mBAAmB;;qBAS3B,kBACX,kBAAkB,wBAClB,KAAK,wBACJ;YAqES;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA,aAAa,SAAS,eAAe;WACrC,YAAY,SAAS,OAAO,mBAAmB;;qBAG7C,oCAAmC;qBAYnC,gBACX,OAAO;EACJ;EAAY,OAAO;;qBAyCX,6BACX,OAAO,mBACP,YAAY,KAAK,uDACjB,iBAAiB,oBAAoB,gCACpC;qBAoDU,iBACX,OAAO,sBACN,oBAAoB;qBAGV,gBACX,OAAO,mBACP,+BAA0B;qBAWf,6BACX,OAAO,mBACP,kBACA,kBACA,gCACA;EAEA,OAAO;EACP,kBAAkB;EAClB,mBAAmB;;;;;;;;qBAuLR,sBACX,OAAO,mBACP,4BACA,kDAA6C;;;;;qBAOlC,0BACX,OAAO,mBACP,4BACA,gBAAgB,QAAQ,oCAA+B"}