@assistant-ui/core 0.3.19 → 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 (664) 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/suggestion.d.ts +5 -6
  12. package/dist/adapters/suggestion.d.ts.map +1 -1
  13. package/dist/adapters/thread-history.d.ts +6 -7
  14. package/dist/adapters/thread-history.d.ts.map +1 -1
  15. package/dist/adapters/trigger.d.ts +1 -2
  16. package/dist/adapters/trigger.d.ts.map +1 -1
  17. package/dist/adapters/voice.d.ts +5 -6
  18. package/dist/adapters/voice.d.ts.map +1 -1
  19. package/dist/internal/duplicate-detection.d.ts +1 -2
  20. package/dist/internal/duplicate-detection.d.ts.map +1 -1
  21. package/dist/model-context/frame/host.d.ts +1 -2
  22. package/dist/model-context/frame/host.d.ts.map +1 -1
  23. package/dist/model-context/frame/provider.d.ts +1 -2
  24. package/dist/model-context/frame/provider.d.ts.map +1 -1
  25. package/dist/model-context/frame/types.d.ts +5 -6
  26. package/dist/model-context/frame/types.d.ts.map +1 -1
  27. package/dist/model-context/interactable-composer-metadata.d.ts +9 -10
  28. package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
  29. package/dist/model-context/registry-handles.d.ts +3 -4
  30. package/dist/model-context/registry-handles.d.ts.map +1 -1
  31. package/dist/model-context/registry.d.ts +1 -2
  32. package/dist/model-context/registry.d.ts.map +1 -1
  33. package/dist/model-context/tool-call-text.d.ts +2 -3
  34. package/dist/model-context/tool-call-text.d.ts.map +1 -1
  35. package/dist/model-context/tool.d.ts +2 -3
  36. package/dist/model-context/tool.d.ts.map +1 -1
  37. package/dist/model-context/types.d.ts +8 -9
  38. package/dist/model-context/types.d.ts.map +1 -1
  39. package/dist/react/AssistantProvider.d.ts +3 -4
  40. package/dist/react/AssistantProvider.d.ts.map +1 -1
  41. package/dist/react/AssistantRuntimeProvider.d.ts +1 -2
  42. package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
  43. package/dist/react/RuntimeAdapter.d.ts +2 -3
  44. package/dist/react/RuntimeAdapter.d.ts.map +1 -1
  45. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +4 -5
  46. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  47. package/dist/react/adapters/LocalStorageThreadListAdapter.js +20 -34
  48. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  49. package/dist/react/adapters/TitleGenerationAdapter.d.ts +2 -3
  50. package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
  51. package/dist/react/client/AdaptedRemoteThread.d.ts +1 -2
  52. package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
  53. package/dist/react/client/DataRenderers.d.ts +1 -2
  54. package/dist/react/client/DataRenderers.d.ts.map +1 -1
  55. package/dist/react/client/InMemoryThreadList.d.ts +3 -4
  56. package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
  57. package/dist/react/client/Interactables.d.ts +1 -2
  58. package/dist/react/client/Interactables.d.ts.map +1 -1
  59. package/dist/react/client/RemoteThreadList.d.ts +2 -3
  60. package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
  61. package/dist/react/client/Tools.d.ts +2 -2
  62. package/dist/react/client/Tools.d.ts.map +1 -1
  63. package/dist/react/client/interactable-model-context.d.ts +2 -3
  64. package/dist/react/client/interactable-model-context.d.ts.map +1 -1
  65. package/dist/react/interactables-legacy/Interactables.d.ts +1 -2
  66. package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
  67. package/dist/react/interactables-legacy/interactable-model-context.d.ts +2 -3
  68. package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
  69. package/dist/react/interactables-legacy/scopes.d.ts +9 -10
  70. package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
  71. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +2 -3
  72. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
  73. package/dist/react/interactables-legacy/useInteractableState.d.ts +1 -2
  74. package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
  75. package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +1 -2
  76. package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
  77. package/dist/react/model-context/define-mcp-toolkit.d.ts +4 -5
  78. package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
  79. package/dist/react/model-context/define-toolkit.d.ts +2 -3
  80. package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
  81. package/dist/react/model-context/external-tool.d.ts +1 -2
  82. package/dist/react/model-context/external-tool.d.ts.map +1 -1
  83. package/dist/react/model-context/human-tool.d.ts +3 -4
  84. package/dist/react/model-context/human-tool.d.ts.map +1 -1
  85. package/dist/react/model-context/interactableTool.d.ts +3 -4
  86. package/dist/react/model-context/interactableTool.d.ts.map +1 -1
  87. package/dist/react/model-context/makeAssistantDataUI.d.ts +2 -3
  88. package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
  89. package/dist/react/model-context/makeAssistantTool.d.ts +2 -3
  90. package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
  91. package/dist/react/model-context/makeAssistantToolUI.d.ts +2 -3
  92. package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
  93. package/dist/react/model-context/provider-tool.d.ts +2 -3
  94. package/dist/react/model-context/provider-tool.d.ts.map +1 -1
  95. package/dist/react/model-context/stub-tool.d.ts +1 -2
  96. package/dist/react/model-context/stub-tool.d.ts.map +1 -1
  97. package/dist/react/model-context/toolbox.d.ts +9 -10
  98. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  99. package/dist/react/model-context/useAssistantContext.d.ts +2 -2
  100. package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
  101. package/dist/react/model-context/useAssistantDataUI.d.ts +2 -3
  102. package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
  103. package/dist/react/model-context/useAssistantInstructions.d.ts +2 -2
  104. package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
  105. package/dist/react/model-context/useAssistantTool.d.ts +2 -3
  106. package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
  107. package/dist/react/model-context/useAssistantToolUI.d.ts +2 -3
  108. package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
  109. package/dist/react/model-context/useAuiToolOverrides.d.ts +1 -2
  110. package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
  111. package/dist/react/model-context/useInlineRender.d.ts +1 -2
  112. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  113. package/dist/react/model-context/useInteractable.d.ts +4 -5
  114. package/dist/react/model-context/useInteractable.d.ts.map +1 -1
  115. package/dist/react/model-context/useInteractableState.d.ts +1 -2
  116. package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
  117. package/dist/react/model-context/useInteractableVersions.d.ts +1 -2
  118. package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
  119. package/dist/react/model-context/useToolArgsStatus.d.ts +2 -3
  120. package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
  121. package/dist/react/primitive-hooks/useActionBarCopy.d.ts +2 -3
  122. package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
  123. package/dist/react/primitive-hooks/useActionBarEdit.d.ts +1 -2
  124. package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
  125. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +2 -3
  126. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
  127. package/dist/react/primitive-hooks/useActionBarReload.d.ts +1 -2
  128. package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
  129. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +1 -2
  130. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
  131. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +1 -2
  132. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
  133. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +1 -2
  134. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
  135. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +1 -2
  136. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
  137. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +1 -2
  138. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
  139. package/dist/react/primitive-hooks/useComposerCancel.d.ts +1 -2
  140. package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
  141. package/dist/react/primitive-hooks/useComposerDictate.d.ts +1 -2
  142. package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
  143. package/dist/react/primitive-hooks/useComposerSend.d.ts +1 -2
  144. package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
  145. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +1 -2
  146. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
  147. package/dist/react/primitive-hooks/useEditComposerSend.d.ts +1 -2
  148. package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
  149. package/dist/react/primitive-hooks/useMessageBranching.d.ts +1 -2
  150. package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
  151. package/dist/react/primitive-hooks/useMessageError.d.ts +1 -2
  152. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
  153. package/dist/react/primitive-hooks/useMessageReload.d.ts +1 -2
  154. package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
  155. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +2 -3
  156. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
  157. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +1 -2
  158. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
  159. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +1 -2
  160. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
  161. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +1 -2
  162. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
  163. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +1 -2
  164. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
  165. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +1 -2
  166. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
  167. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +1 -2
  168. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
  169. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +1 -2
  170. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
  171. package/dist/react/primitive-hooks/useThreadListNew.d.ts +1 -2
  172. package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
  173. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +1 -2
  174. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
  175. package/dist/react/primitive-hooks/useThreadMessages.d.ts +1 -2
  176. package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
  177. package/dist/react/primitive-hooks/useVoice.d.ts +3 -4
  178. package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
  179. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +2 -3
  180. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
  181. package/dist/react/primitives/composer/ComposerAttachments.d.ts +4 -5
  182. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  183. package/dist/react/primitives/composer/ComposerIf.d.ts +4 -5
  184. package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
  185. package/dist/react/primitives/composer/ComposerQueue.d.ts +2 -3
  186. package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
  187. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +4 -5
  188. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
  189. package/dist/react/primitives/generativeUI/GenerativeUI.js +27 -28
  190. package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
  191. package/dist/react/primitives/message/MessageAttachments.d.ts +4 -5
  192. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  193. package/dist/react/primitives/message/MessageGroupedParts.d.ts +2 -3
  194. package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
  195. package/dist/react/primitives/message/MessageParts.d.ts +10 -10
  196. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  197. package/dist/react/primitives/message/MessageQuote.d.ts +2 -3
  198. package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
  199. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +2 -3
  200. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
  201. package/dist/react/primitives/part/PartMessages.d.ts +3 -4
  202. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  203. package/dist/react/primitives/thread/ThreadMessages.d.ts +7 -8
  204. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  205. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +5 -6
  206. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
  207. package/dist/react/primitives/threadList/ThreadListItems.d.ts +4 -5
  208. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  209. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +2 -3
  210. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
  211. package/dist/react/providers/AttachmentByIndexProvider.d.ts +2 -3
  212. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
  213. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +1 -2
  214. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
  215. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +1 -2
  216. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
  217. package/dist/react/providers/MessageByIdProvider.d.ts +1 -2
  218. package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
  219. package/dist/react/providers/MessageByIndexProvider.d.ts +1 -2
  220. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
  221. package/dist/react/providers/PartByIndexProvider.d.ts +1 -2
  222. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
  223. package/dist/react/providers/QueueItemByIndexProvider.d.ts +2 -3
  224. package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
  225. package/dist/react/providers/ReadonlyThreadProvider.d.ts +2 -3
  226. package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
  227. package/dist/react/providers/SuggestionByIndexProvider.d.ts +2 -3
  228. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
  229. package/dist/react/providers/TextMessagePartProvider.d.ts +1 -2
  230. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
  231. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +1 -2
  232. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
  233. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +1 -2
  234. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  235. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +3 -2
  236. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  237. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +17 -7
  238. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  239. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +1 -2
  240. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  241. package/dist/react/runtimes/RemoteThreadResource.d.ts +4 -5
  242. package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
  243. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +3 -3
  244. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
  245. package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +2 -3
  246. package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
  247. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +3 -4
  248. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
  249. package/dist/react/runtimes/assistant-transport/runManager.d.ts +2 -3
  250. package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
  251. package/dist/react/runtimes/assistant-transport/types.d.ts +17 -18
  252. package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
  253. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +4 -5
  254. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
  255. package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +1 -2
  256. package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
  257. package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +1 -2
  258. package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
  259. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +2 -3
  260. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  261. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +17 -4
  262. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  263. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -2
  264. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  265. package/dist/react/runtimes/cloud/auiV0.d.ts +11 -3
  266. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  267. package/dist/react/runtimes/cloud/auiV0.js +63 -2
  268. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  269. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +4 -5
  270. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
  271. package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +1 -2
  272. package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
  273. package/dist/react/runtimes/cloud/sdkIdentity.d.ts +1 -2
  274. package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -1
  275. package/dist/react/runtimes/cloud/sdkIdentity.js +1 -1
  276. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +1 -2
  277. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  278. package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +1 -2
  279. package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  280. package/dist/react/runtimes/createMessageConverter.d.ts +1 -2
  281. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
  282. package/dist/react/runtimes/createRuntimeExtras.d.ts +3 -4
  283. package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
  284. package/dist/react/runtimes/external-message-converter.d.ts +6 -6
  285. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  286. package/dist/react/runtimes/useExternalStoreRuntime.d.ts +1 -2
  287. package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
  288. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +1 -2
  289. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
  290. package/dist/react/runtimes/useLocalRuntime.d.ts +3 -4
  291. package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
  292. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +1 -2
  293. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  294. package/dist/react/runtimes/useRemoteThreadListRuntime.js +2 -2
  295. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
  296. package/dist/react/runtimes/useRuntimeAdapters.d.ts +4 -4
  297. package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
  298. package/dist/react/runtimes/useStreamingTiming.d.ts +2 -2
  299. package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
  300. package/dist/react/types/MessagePartComponentTypes.d.ts +26 -27
  301. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  302. package/dist/react/types/scopes/dataRenderers.d.ts +3 -4
  303. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
  304. package/dist/react/types/scopes/interactables.d.ts +10 -11
  305. package/dist/react/types/scopes/interactables.d.ts.map +1 -1
  306. package/dist/react/types/scopes/tools.d.ts +4 -5
  307. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  308. package/dist/react/utils/getMessageQuote.d.ts +1 -2
  309. package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
  310. package/dist/react/utils/groupParts.d.ts +7 -8
  311. package/dist/react/utils/groupParts.d.ts.map +1 -1
  312. package/dist/react/utils/useJSONEqual.d.ts +2 -3
  313. package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
  314. package/dist/react/utils/useJSONSchemaDependency.d.ts +1 -2
  315. package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
  316. package/dist/runtime/api/assistant-runtime.d.ts +2 -3
  317. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  318. package/dist/runtime/api/attachment-runtime.d.ts +6 -7
  319. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  320. package/dist/runtime/api/bindings.d.ts +5 -6
  321. package/dist/runtime/api/bindings.d.ts.map +1 -1
  322. package/dist/runtime/api/composer-runtime.d.ts +10 -10
  323. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  324. package/dist/runtime/api/message-part-runtime.d.ts +3 -4
  325. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  326. package/dist/runtime/api/message-part-runtime.js +3 -2
  327. package/dist/runtime/api/message-part-runtime.js.map +1 -1
  328. package/dist/runtime/api/message-runtime.d.ts +8 -6
  329. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  330. package/dist/runtime/api/message-runtime.js +3 -2
  331. package/dist/runtime/api/message-runtime.js.map +1 -1
  332. package/dist/runtime/api/paths.d.ts +6 -7
  333. package/dist/runtime/api/paths.d.ts.map +1 -1
  334. package/dist/runtime/api/thread-list-item-runtime.d.ts +8 -8
  335. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  336. package/dist/runtime/api/thread-list-runtime.d.ts +4 -5
  337. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  338. package/dist/runtime/api/thread-runtime.d.ts +10 -11
  339. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  340. package/dist/runtime/base/base-assistant-runtime-core.d.ts +1 -2
  341. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
  342. package/dist/runtime/base/base-composer-runtime-core.d.ts +1 -2
  343. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  344. package/dist/runtime/base/base-thread-runtime-core.d.ts +8 -3
  345. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  346. package/dist/runtime/base/base-thread-runtime-core.js +71 -27
  347. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  348. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +1 -2
  349. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  350. package/dist/runtime/base/default-edit-composer-runtime-core.js +12 -2
  351. package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
  352. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +1 -2
  353. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  354. package/dist/runtime/base/default-thread-composer-runtime-core.js +7 -1
  355. package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
  356. package/dist/runtime/branch/external-thread-branch-adapter.d.ts +1 -2
  357. package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
  358. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +1 -2
  359. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
  360. package/dist/runtime/interfaces/composer-runtime-core.d.ts +10 -11
  361. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  362. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +4 -5
  363. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  364. package/dist/runtime/interfaces/thread-runtime-core.d.ts +17 -16
  365. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  366. package/dist/runtime/queue/external-thread-queue-adapter.d.ts +2 -3
  367. package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
  368. package/dist/runtime/queue/message-queue.d.ts +5 -4
  369. package/dist/runtime/queue/message-queue.d.ts.map +1 -1
  370. package/dist/runtime/queue/message-queue.js +9 -1
  371. package/dist/runtime/queue/message-queue.js.map +1 -1
  372. package/dist/runtime/queue/queue-item.d.ts +2 -3
  373. package/dist/runtime/queue/queue-item.d.ts.map +1 -1
  374. package/dist/runtime/utils/abortable-thread-load.d.ts +2 -3
  375. package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
  376. package/dist/runtime/utils/attachment-add-operations.d.ts +3 -4
  377. package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
  378. package/dist/runtime/utils/auto-status.d.ts +7 -8
  379. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  380. package/dist/runtime/utils/chat-model-adapter.d.ts +5 -6
  381. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  382. package/dist/runtime/utils/external-message-conversion.d.ts +15 -16
  383. package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
  384. package/dist/runtime/utils/external-message-conversion.js +3 -2
  385. package/dist/runtime/utils/external-message-conversion.js.map +1 -1
  386. package/dist/runtime/utils/external-store-message.d.ts +4 -5
  387. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  388. package/dist/runtime/utils/message-repository-session.d.ts +3 -4
  389. package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
  390. package/dist/runtime/utils/message-repository.d.ts +4 -5
  391. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  392. package/dist/runtime/utils/pending-tool-calls.d.ts +2 -3
  393. package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
  394. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +1 -2
  395. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
  396. package/dist/runtime/utils/runtime-extras-brand.d.ts +2 -3
  397. package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
  398. package/dist/runtime/utils/stored-message-parts.d.ts +21 -0
  399. package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -0
  400. package/dist/runtime/utils/stored-message-parts.js +83 -0
  401. package/dist/runtime/utils/stored-message-parts.js.map +1 -0
  402. package/dist/runtime/utils/streaming-timing.d.ts +4 -5
  403. package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
  404. package/dist/runtime/utils/thread-message-like.d.ts +5 -5
  405. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  406. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  407. package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +3 -4
  408. package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
  409. package/dist/runtime/utils/tool-call-tree.d.ts +4 -5
  410. package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
  411. package/dist/runtimes/assistant-transport/utils.d.ts +1 -2
  412. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
  413. package/dist/runtimes/external-store/external-store-adapter.d.ts +9 -6
  414. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  415. package/dist/runtimes/external-store/external-store-runtime-core.d.ts +1 -2
  416. package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
  417. package/dist/runtimes/external-store/external-store-shared-options.d.ts +2 -3
  418. package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
  419. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +2 -3
  420. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  421. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +4 -3
  422. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  423. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +29 -6
  424. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  425. package/dist/runtimes/external-store/thread-message-converter.d.ts +2 -3
  426. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
  427. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +2 -3
  428. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
  429. package/dist/runtimes/local/local-runtime-core.d.ts +1 -2
  430. package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
  431. package/dist/runtimes/local/local-runtime-options.d.ts +1 -2
  432. package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
  433. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +2 -3
  434. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
  435. package/dist/runtimes/local/local-thread-runtime-core.d.ts +9 -4
  436. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  437. package/dist/runtimes/local/local-thread-runtime-core.js +53 -9
  438. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  439. package/dist/runtimes/local/should-continue.d.ts +1 -2
  440. package/dist/runtimes/local/should-continue.d.ts.map +1 -1
  441. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +1 -2
  442. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
  443. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +1 -2
  444. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
  445. package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +1 -2
  446. package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
  447. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +1 -2
  448. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
  449. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +1 -2
  450. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
  451. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +16 -17
  452. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  453. package/dist/runtimes/remote-thread-list/title-generation.d.ts +7 -8
  454. package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
  455. package/dist/runtimes/remote-thread-list/title.d.ts +2 -3
  456. package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
  457. package/dist/runtimes/remote-thread-list/types.d.ts +8 -9
  458. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  459. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +4 -5
  460. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  461. package/dist/store/clients/chain-of-thought-client.d.ts +1 -2
  462. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
  463. package/dist/store/clients/external-thread.d.ts +3 -4
  464. package/dist/store/clients/external-thread.d.ts.map +1 -1
  465. package/dist/store/clients/external-thread.js +15 -11
  466. package/dist/store/clients/external-thread.js.map +1 -1
  467. package/dist/store/clients/model-context-client.d.ts +1 -2
  468. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  469. package/dist/store/clients/no-op-composer-client.d.ts +1 -2
  470. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
  471. package/dist/store/clients/runtime-adapter.d.ts +1 -2
  472. package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
  473. package/dist/store/clients/single-thread-list.d.ts +1 -2
  474. package/dist/store/clients/single-thread-list.d.ts.map +1 -1
  475. package/dist/store/clients/suggestions.d.ts +3 -4
  476. package/dist/store/clients/suggestions.d.ts.map +1 -1
  477. package/dist/store/clients/thread-message-client.d.ts +2 -3
  478. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  479. package/dist/store/clients/thread-selection-events.d.ts +1 -2
  480. package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
  481. package/dist/store/clients/thread-tasks.d.ts +3 -4
  482. package/dist/store/clients/thread-tasks.d.ts.map +1 -1
  483. package/dist/store/env.d.ts +1 -2
  484. package/dist/store/env.d.ts.map +1 -1
  485. package/dist/store/primitive-predicates.d.ts +11 -12
  486. package/dist/store/primitive-predicates.d.ts.map +1 -1
  487. package/dist/store/primitive-predicates.js +2 -2
  488. package/dist/store/primitive-predicates.js.map +1 -1
  489. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +1 -2
  490. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  491. package/dist/store/runtime-clients/composer-runtime-client.d.ts +1 -2
  492. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  493. package/dist/store/runtime-clients/handle-runtime-action.d.ts +1 -2
  494. package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
  495. package/dist/store/runtime-clients/handle-thread-list-action.d.ts +1 -2
  496. package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
  497. package/dist/store/runtime-clients/liveRef.d.ts +1 -2
  498. package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
  499. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +1 -2
  500. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  501. package/dist/store/runtime-clients/message-runtime-client.d.ts +1 -2
  502. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  503. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +1 -2
  504. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  505. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +1 -2
  506. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  507. package/dist/store/runtime-clients/thread-runtime-client.d.ts +1 -2
  508. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  509. package/dist/store/runtime-clients/useSubscribable.d.ts +1 -2
  510. package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
  511. package/dist/store/scopes/attachment.d.ts +4 -5
  512. package/dist/store/scopes/attachment.d.ts.map +1 -1
  513. package/dist/store/scopes/chain-of-thought.d.ts +5 -6
  514. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
  515. package/dist/store/scopes/composer.d.ts +6 -7
  516. package/dist/store/scopes/composer.d.ts.map +1 -1
  517. package/dist/store/scopes/message.d.ts +6 -6
  518. package/dist/store/scopes/message.d.ts.map +1 -1
  519. package/dist/store/scopes/model-context.d.ts +3 -4
  520. package/dist/store/scopes/model-context.d.ts.map +1 -1
  521. package/dist/store/scopes/part.d.ts +4 -5
  522. package/dist/store/scopes/part.d.ts.map +1 -1
  523. package/dist/store/scopes/queue-item.d.ts +4 -4
  524. package/dist/store/scopes/queue-item.d.ts.map +1 -1
  525. package/dist/store/scopes/suggestion.d.ts +4 -5
  526. package/dist/store/scopes/suggestion.d.ts.map +1 -1
  527. package/dist/store/scopes/suggestions.d.ts +5 -6
  528. package/dist/store/scopes/suggestions.d.ts.map +1 -1
  529. package/dist/store/scopes/task.d.ts +4 -5
  530. package/dist/store/scopes/task.d.ts.map +1 -1
  531. package/dist/store/scopes/thread-list-item.d.ts +5 -6
  532. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  533. package/dist/store/scopes/thread.d.ts +5 -6
  534. package/dist/store/scopes/thread.d.ts.map +1 -1
  535. package/dist/store/scopes/threads.d.ts +4 -5
  536. package/dist/store/scopes/threads.d.ts.map +1 -1
  537. package/dist/subscribable/subscribable.d.ts +15 -16
  538. package/dist/subscribable/subscribable.d.ts.map +1 -1
  539. package/dist/tests/remote-thread-list-test-helpers.d.ts +5 -6
  540. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
  541. package/dist/types/attachment.d.ts +9 -10
  542. package/dist/types/attachment.d.ts.map +1 -1
  543. package/dist/types/augmentations.d.ts +3 -4
  544. package/dist/types/augmentations.d.ts.map +1 -1
  545. package/dist/types/directive.d.ts +2 -3
  546. package/dist/types/directive.d.ts.map +1 -1
  547. package/dist/types/error.d.ts +8 -9
  548. package/dist/types/error.d.ts.map +1 -1
  549. package/dist/types/message.d.ts +48 -46
  550. package/dist/types/message.d.ts.map +1 -1
  551. package/dist/types/message.js.map +1 -1
  552. package/dist/types/quote.d.ts +1 -2
  553. package/dist/types/quote.d.ts.map +1 -1
  554. package/dist/types/trigger.d.ts +2 -3
  555. package/dist/types/trigger.d.ts.map +1 -1
  556. package/dist/types/unsubscribe.d.ts +1 -2
  557. package/dist/types/unsubscribe.d.ts.map +1 -1
  558. package/dist/utils/abortable-iterable.d.ts +2 -3
  559. package/dist/utils/abortable-iterable.d.ts.map +1 -1
  560. package/dist/utils/composite-context-provider.d.ts +1 -2
  561. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  562. package/dist/utils/data-url.d.ts +6 -7
  563. package/dist/utils/data-url.d.ts.map +1 -1
  564. package/dist/utils/getGroupStatus.d.ts +2 -3
  565. package/dist/utils/getGroupStatus.d.ts.map +1 -1
  566. package/dist/utils/id.d.ts +3 -4
  567. package/dist/utils/id.d.ts.map +1 -1
  568. package/dist/utils/image-media-type.d.ts +1 -2
  569. package/dist/utils/image-media-type.d.ts.map +1 -1
  570. package/dist/utils/invoke-user-callback.d.ts +1 -2
  571. package/dist/utils/invoke-user-callback.d.ts.map +1 -1
  572. package/dist/utils/json/is-json-equal.d.ts +1 -2
  573. package/dist/utils/json/is-json-equal.d.ts.map +1 -1
  574. package/dist/utils/json/is-json.d.ts +4 -5
  575. package/dist/utils/json/is-json.d.ts.map +1 -1
  576. package/dist/utils/json/stable-stringify-tool-args.d.ts +2 -3
  577. package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
  578. package/dist/utils/normalizePartStatus.d.ts +4 -5
  579. package/dist/utils/normalizePartStatus.d.ts.map +1 -1
  580. package/dist/utils/notify-event-listeners.d.ts +1 -2
  581. package/dist/utils/notify-event-listeners.d.ts.map +1 -1
  582. package/dist/utils/record.d.ts +1 -2
  583. package/dist/utils/record.d.ts.map +1 -1
  584. package/dist/utils/silent-runtime-action.d.ts +2 -3
  585. package/dist/utils/silent-runtime-action.d.ts.map +1 -1
  586. package/dist/utils/text.d.ts +1 -2
  587. package/dist/utils/text.d.ts.map +1 -1
  588. package/dist/utils/wire-media.d.ts +3 -4
  589. package/dist/utils/wire-media.d.ts.map +1 -1
  590. package/package.json +14 -13
  591. package/src/adapters/attachment.ts +8 -1
  592. package/src/adapters/feedback.ts +1 -0
  593. package/src/model-context/frame/provider.test.ts +45 -20
  594. package/src/react/RuntimeAdapter.test.ts +4 -1
  595. package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +117 -0
  596. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +27 -74
  597. package/src/react/client/Interactables.test.ts +12 -7
  598. package/src/react/client/RemoteThreadList.concurrent.test.tsx +9 -3
  599. package/src/react/client/RemoteThreadList.test.ts +5 -6
  600. package/src/react/interactables-legacy/Interactables.test.ts +9 -3
  601. package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +40 -22
  602. package/src/react/model-context/useInteractable.test.tsx +56 -29
  603. package/src/react/primitive-hooks/useActionBarCopy.test.ts +5 -5
  604. package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +54 -0
  605. package/src/react/primitives/generativeUI/GenerativeUI.tsx +13 -18
  606. package/src/react/primitives/message/MessageGroupedParts.test.tsx +4 -1
  607. package/src/react/primitives/thread/ThreadMessages.test.tsx +25 -7
  608. package/src/react/runtimes/RemoteThreadListHookInstanceManager.layout.test.tsx +62 -0
  609. package/src/react/runtimes/RemoteThreadListHookInstanceManager.retry.test.tsx +2 -2
  610. package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +23 -20
  611. package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +24 -17
  612. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +39 -24
  613. package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +73 -46
  614. package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +66 -1
  615. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +102 -0
  616. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +24 -11
  617. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +8 -4
  618. package/src/react/runtimes/cloud/auiV0.ts +121 -1
  619. package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +522 -0
  620. package/src/react/runtimes/external-message-converter.test.ts +7 -3
  621. package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +2 -1
  622. package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +8 -2
  623. package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +6 -2
  624. package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +84 -4
  625. package/src/react/runtimes/useRemoteThreadListRuntime.ts +5 -1
  626. package/src/runtime/api/message-part-runtime.ts +4 -1
  627. package/src/runtime/api/message-runtime.ts +15 -2
  628. package/src/runtime/base/base-thread-runtime-core.test.ts +761 -18
  629. package/src/runtime/base/base-thread-runtime-core.ts +89 -26
  630. package/src/runtime/base/default-edit-composer-runtime-core.ts +12 -2
  631. package/src/runtime/base/default-thread-composer-runtime-core.ts +12 -1
  632. package/src/runtime/interfaces/thread-runtime-core.ts +2 -0
  633. package/src/runtime/queue/message-queue.ts +11 -1
  634. package/src/runtime/utils/external-message-conversion.test.ts +43 -0
  635. package/src/runtime/utils/external-message-conversion.ts +6 -2
  636. package/src/runtime/utils/stored-message-parts.ts +174 -0
  637. package/src/runtime/utils/thread-message-like.ts +7 -2
  638. package/src/runtimes/external-store/external-store-adapter.ts +4 -0
  639. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +44 -9
  640. package/src/runtimes/local/local-thread-runtime-core.test.ts +168 -12
  641. package/src/runtimes/local/local-thread-runtime-core.ts +80 -9
  642. package/src/store/clients/external-thread.ts +34 -13
  643. package/src/store/primitive-predicates.test.ts +16 -0
  644. package/src/store/primitive-predicates.ts +4 -1
  645. package/src/store/runtime-clients/thread-runtime-client.test.tsx +110 -0
  646. package/src/store/scopes/message.ts +4 -1
  647. package/src/subscribable/subscribable.test.ts +7 -2
  648. package/src/tests/attachment-adapters.test.ts +16 -1
  649. package/src/tests/auiV0Encode.test.ts +4 -0
  650. package/src/tests/base-composer-runtime-core-addAttachment.test.ts +6 -6
  651. package/src/tests/base-composer-runtime-core.test.ts +16 -5
  652. package/src/tests/composer-can-cancel.test.ts +35 -6
  653. package/src/tests/composer-can-send.test.ts +22 -0
  654. package/src/tests/default-edit-composer-runtime-core.test.ts +47 -0
  655. package/src/tests/external-store-thread-runtime-core-adapter.test.ts +229 -27
  656. package/src/tests/external-store-thread-runtime-core.test.ts +31 -0
  657. package/src/tests/external-thread-attachments.test.tsx +22 -23
  658. package/src/tests/external-thread-feedback.test.tsx +20 -7
  659. package/src/tests/external-thread-parity.test.tsx +1 -1
  660. package/src/tests/message-queue.test.ts +45 -10
  661. package/src/tests/thread-switch-events.test.tsx +11 -7
  662. package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +2 -1
  663. package/src/types/message.test.ts +19 -0
  664. package/src/types/message.ts +16 -8
@@ -6,14 +6,14 @@ import { QuoteInfo } from "../../types/quote.js";
6
6
  import { QueueItemState } from "../queue/queue-item.js";
7
7
  import { QueuePlacement } from "../queue/external-thread-queue-adapter.js";
8
8
  //#region src/runtime/interfaces/composer-runtime-core.d.ts
9
- type AttachmentAddErrorReason = "no-adapter" | "not-accepted" | "adapter-error";
10
- type AttachmentAddErrorEvent = {
9
+ export type AttachmentAddErrorReason = "no-adapter" | "not-accepted" | "adapter-error";
10
+ export type AttachmentAddErrorEvent = {
11
11
  readonly reason: AttachmentAddErrorReason;
12
12
  readonly message: string;
13
13
  readonly attachmentId?: string;
14
14
  readonly error?: Error;
15
15
  };
16
- type ComposerRuntimeEventPayload = {
16
+ export type ComposerRuntimeEventPayload = {
17
17
  /**
18
18
  * Fired after a send with the size of what went out. The composer state is
19
19
  * already cleared when it fires, so the counts are only available here.
@@ -33,19 +33,19 @@ type ComposerRuntimeEventPayload = {
33
33
  readonly contentType?: string | undefined;
34
34
  };
35
35
  };
36
- type ComposerRuntimeEventType = keyof ComposerRuntimeEventPayload;
37
- type ComposerRuntimeEventCallback<E extends ComposerRuntimeEventType> = (payload: ComposerRuntimeEventPayload[E]) => void;
38
- type DictationState = {
36
+ export type ComposerRuntimeEventType = keyof ComposerRuntimeEventPayload;
37
+ export type ComposerRuntimeEventCallback<E extends ComposerRuntimeEventType> = (payload: ComposerRuntimeEventPayload[E]) => void;
38
+ export type DictationState = {
39
39
  readonly status: DictationAdapter.Status;
40
40
  readonly transcript?: string;
41
41
  readonly inputDisabled?: boolean;
42
42
  };
43
- type SendOptions = {
43
+ export type SendOptions = {
44
44
  startRun?: boolean;
45
45
  /** Process this message next; only meaningful with the `queue` capability. */
46
46
  steer?: boolean;
47
47
  };
48
- type ComposerRuntimeCore = Readonly<{
48
+ export type ComposerRuntimeCore = Readonly<{
49
49
  isEditing: boolean;
50
50
  canCancel: boolean;
51
51
  canSend: boolean;
@@ -80,11 +80,10 @@ type ComposerRuntimeCore = Readonly<{
80
80
  */
81
81
  unstable_on: <E extends ComposerRuntimeEventType>(event: E, callback: ComposerRuntimeEventCallback<E>) => Unsubscribe;
82
82
  }>;
83
- type ThreadComposerRuntimeCore = ComposerRuntimeCore;
84
- type EditComposerRuntimeCore = ComposerRuntimeCore & Readonly<{
83
+ export type ThreadComposerRuntimeCore = ComposerRuntimeCore;
84
+ export type EditComposerRuntimeCore = ComposerRuntimeCore & Readonly<{
85
85
  parentId: string | null;
86
86
  sourceId: string | null;
87
87
  }>;
88
88
  //#endregion
89
- export { AttachmentAddErrorEvent, AttachmentAddErrorReason, ComposerRuntimeCore, ComposerRuntimeEventCallback, ComposerRuntimeEventPayload, ComposerRuntimeEventType, DictationState, EditComposerRuntimeCore, SendOptions, ThreadComposerRuntimeCore };
90
89
  //# sourceMappingURL=composer-runtime-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/interfaces/composer-runtime-core.ts"],"mappings":";;;;;;;;KASY;KAKA;WACD,QAAQ;WACR;WACA;WACA,QAAQ;;KAGP;;;;;EAKV;aACW;aACA;;;;;;EAMX;aAA0B;;EAC1B,oBAAoB;aACT;;;KAID,iCAAiC;KAEjC,6BAA6B,UAAU,6BACjD,SAAS,4BAA4B;KAG3B;WACD,QAAQ,iBAAiB;WACzB;WACA;;KAGC;EACV;;EAEA;;KAGU,sBAAsB;EAChC;EAEA;EACA;EACA;EAEA,sBAAsB;EACtB;EAEA,gBAAgB,kBAAkB,OAAO,qBAAqB;EAC9D,mBAAmB,yBAAyB;EAE5C;EACA,UAAU;EAEV,MAAM;EACN,UAAU,MAAM;EAEhB,WAAW;EACX,eAAe,WAAW;EAE1B,OAAO;EACP,WAAW,OAAO;EAElB,aAAa;EACb,wBAAwB;EAExB,OAAO,UAAU;EACjB;EAEA,gBAAgB;EAChB,gBAAgB,qBAAqB,WAAW;EAChD,kBAAkB;EAElB,WAAW;EACX;EACA;EAEA,YAAY,yBAAyB;;;;;;EAOrC,cAAc,UAAU,0BACtB,OAAO,GACP,UAAU,6BAA6B,OACpC;;KAGK,4BAA4B;KAE5B,0BAA0B,sBACpC;EACE;EACA"}
1
+ {"version":3,"file":"composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/interfaces/composer-runtime-core.ts"],"mappings":";;;;;;;;YASY;YAKA;WACD,QAAQ;WACR;WACA;WACA,QAAQ;;YAGP;;;;;EAKV;aACW;aACA;;;;;;EAMX;aAA0B;;EAC1B,oBAAoB;aACT;;;YAID,iCAAiC;YAEjC,6BAA6B,UAAU,6BACjD,SAAS,4BAA4B;YAG3B;WACD,QAAQ,iBAAiB;WACzB;WACA;;YAGC;EACV;;EAEA;;YAGU,sBAAsB;EAChC;EAEA;EACA;EACA;EAEA,sBAAsB;EACtB;EAEA,gBAAgB,kBAAkB,OAAO,qBAAqB;EAC9D,mBAAmB,yBAAyB;EAE5C;EACA,UAAU;EAEV,MAAM;EACN,UAAU,MAAM;EAEhB,WAAW;EACX,eAAe,WAAW;EAE1B,OAAO;EACP,WAAW,OAAO;EAElB,aAAa;EACb,wBAAwB;EAExB,OAAO,UAAU;EACjB;EAEA,gBAAgB;EAChB,gBAAgB,qBAAqB,WAAW;EAChD,kBAAkB;EAElB,WAAW;EACX;EACA;EAEA,YAAY,yBAAyB;;;;;;EAOrC,cAAc,UAAU,0BACtB,OAAO,GACP,UAAU,6BAA6B,OACpC;;YAGK,4BAA4B;YAE5B,0BAA0B,sBACpC;EACE;EACA"}
@@ -1,8 +1,8 @@
1
1
  import { Unsubscribe } from "../../types/unsubscribe.js";
2
2
  import { ThreadRuntimeCore, ThreadRuntimeEventType } from "./thread-runtime-core.js";
3
3
  //#region src/runtime/interfaces/thread-list-runtime-core.d.ts
4
- type ThreadListItemStatus = "archived" | "regular" | "new" | "deleted";
5
- type ThreadListItemCoreState = {
4
+ export type ThreadListItemStatus = "archived" | "regular" | "new" | "deleted";
5
+ export type ThreadListItemCoreState = {
6
6
  readonly id: string;
7
7
  readonly remoteId: string | undefined;
8
8
  readonly externalId: string | undefined;
@@ -12,11 +12,11 @@ type ThreadListItemCoreState = {
12
12
  readonly custom?: Record<string, unknown> | undefined;
13
13
  readonly runtime?: ThreadRuntimeCore | undefined;
14
14
  };
15
- type ThreadListRuntimeEvent = {
15
+ export type ThreadListRuntimeEvent = {
16
16
  readonly threadId: string;
17
17
  readonly type: ThreadRuntimeEventType;
18
18
  };
19
- type ThreadListRuntimeCore = {
19
+ export type ThreadListRuntimeCore = {
20
20
  readonly isLoading: boolean;
21
21
  readonly loadError?: unknown;
22
22
  readonly isLoadingMore?: boolean;
@@ -70,5 +70,4 @@ type ThreadListRuntimeCore = {
70
70
  subscribe(callback: () => void): Unsubscribe;
71
71
  };
72
72
  //#endregion
73
- export { ThreadListItemCoreState, ThreadListItemStatus, ThreadListRuntimeCore, ThreadListRuntimeEvent };
74
73
  //# sourceMappingURL=thread-list-runtime-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/interfaces/thread-list-runtime-core.ts"],"mappings":";;;KAMY;KAEA;WACD;WACA;WACA;WAEA,QAAQ;WACR;WACA,gBAAgB;WAChB,SAAS;WAET,UAAU;;KAGT;WACD;WACA,MAAM;;KAGL;WACD;WACA;WACA;WACA;EACT;EACA;EAEA;EACA;WAES,aAAa,SAAS,eAAe;EAE9C,4BAA4B;EAC5B,qBAAqB,mBAAmB;;;;;;;;;EAUxC,0BAA0B;;;;;;;;EAS1B,gCACE,WAAW,OAAO,kCACjB;EAEH,YAAY,mBAAmB;EAE/B,eACE,kBACA;IAAY;MACX;EACH,qBAAqB;EAErB,yBAAyB;EACzB,WAAW;EACX,qBAAqB;EACrB,aAAa;EAEb,OAAO,mBAAmB;EAC1B,OAAO,kBAAkB,mBAAmB;EAC5C,cACE,kBACA,QAAQ,sCACP;EACH,QAAQ,mBAAmB;EAC3B,UAAU,mBAAmB;EAC7B,OAAO,mBAAmB;EAE1B,WACE,mBACC;IAAU;IAAkB;;EAC/B,cACE,kBACA;IAAY;MACX;EAEH,UAAU,uBAAuB"}
1
+ {"version":3,"file":"thread-list-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/interfaces/thread-list-runtime-core.ts"],"mappings":";;;YAMY;YAEA;WACD;WACA;WACA;WAEA,QAAQ;WACR;WACA,gBAAgB;WAChB,SAAS;WAET,UAAU;;YAGT;WACD;WACA,MAAM;;YAGL;WACD;WACA;WACA;WACA;EACT;EACA;EAEA;EACA;WAES,aAAa,SAAS,eAAe;EAE9C,4BAA4B;EAC5B,qBAAqB,mBAAmB;;;;;;;;;EAUxC,0BAA0B;;;;;;;;EAS1B,gCACE,WAAW,OAAO,kCACjB;EAEH,YAAY,mBAAmB;EAE/B,eACE,kBACA;IAAY;MACX;EACH,qBAAqB;EAErB,yBAAyB;EACzB,WAAW;EACX,qBAAqB;EACrB,aAAa;EAEb,OAAO,mBAAmB;EAC1B,OAAO,kBAAkB,mBAAmB;EAC5C,cACE,kBACA,QAAQ,sCACP;EACH,QAAQ,mBAAmB;EAC3B,UAAU,mBAAmB;EAC7B,OAAO,mBAAmB;EAE1B,WACE,mBACC;IAAU;IAAkB;;EAC/B,cACE,kBACA;IAAY;MACX;EAEH,UAAU,uBAAuB"}
@@ -12,7 +12,7 @@ import { EditComposerRuntimeCore, ThreadComposerRuntimeCore } from "./composer-r
12
12
  import { ToolModelContentPart } from "assistant-stream";
13
13
  import { ReadonlyJSONValue } from "assistant-stream/utils";
14
14
  //#region src/runtime/interfaces/thread-runtime-core.d.ts
15
- type RuntimeCapabilities = {
15
+ export type RuntimeCapabilities = {
16
16
  readonly switchToBranch: boolean;
17
17
  readonly switchBranchDuringRun: boolean;
18
18
  readonly edit: boolean;
@@ -29,7 +29,7 @@ type RuntimeCapabilities = {
29
29
  readonly feedback: boolean;
30
30
  readonly queue: boolean;
31
31
  };
32
- type AddToolResultOptions = {
32
+ export type AddToolResultOptions = {
33
33
  messageId: string;
34
34
  toolName: string;
35
35
  toolCallId: string;
@@ -44,11 +44,11 @@ type AddToolResultOptions = {
44
44
  */
45
45
  modelContent?: readonly ToolModelContentPart[] | undefined;
46
46
  };
47
- type ResumeToolCallOptions = {
47
+ export type ResumeToolCallOptions = {
48
48
  toolCallId: string;
49
49
  payload: unknown;
50
50
  };
51
- type RespondToToolApprovalOptions = {
51
+ export type RespondToToolApprovalOptions = {
52
52
  approvalId: string;
53
53
  approved: boolean;
54
54
  /** The approval option that produced this decision, when the request carried options. */
@@ -57,11 +57,12 @@ type RespondToToolApprovalOptions = {
57
57
  text?: string;
58
58
  reason?: string;
59
59
  };
60
- type SubmitFeedbackOptions = {
60
+ export type SubmitFeedbackOptions = {
61
61
  messageId: string;
62
62
  type: "negative" | "positive";
63
+ comment?: string;
63
64
  };
64
- type ThreadSuggestion = {
65
+ export type ThreadSuggestion = {
65
66
  /** Display heading for the suggestion. Falls back to the prompt when absent. */
66
67
  title?: string;
67
68
  /** Secondary display text shown alongside the title. */
@@ -69,19 +70,20 @@ type ThreadSuggestion = {
69
70
  /** The message text sent when the suggestion is selected. */
70
71
  prompt: string;
71
72
  };
72
- type SpeechState = {
73
+ export type SpeechState = {
73
74
  readonly messageId: string;
74
75
  readonly status: SpeechSynthesisAdapter.Status;
75
76
  };
76
- type VoiceSessionState = {
77
+ export type VoiceSessionState = {
77
78
  readonly status: RealtimeVoiceAdapter.Status;
78
79
  readonly isMuted: boolean;
79
80
  readonly mode: RealtimeVoiceAdapter.Mode;
80
81
  };
81
- type SubmittedFeedback = {
82
+ export type SubmittedFeedback = {
82
83
  readonly type: "negative" | "positive";
84
+ readonly comment?: string;
83
85
  };
84
- type ThreadRuntimeEventPayload = {
86
+ export type ThreadRuntimeEventPayload = {
85
87
  toolApprovalAnswered: {
86
88
  messageId: string;
87
89
  toolCallId: string;
@@ -117,17 +119,17 @@ type ThreadRuntimeEventPayload = {
117
119
  */
118
120
  modelContextUpdate: Record<string, never>;
119
121
  };
120
- type ThreadRuntimeEventType = keyof ThreadRuntimeEventPayload;
121
- type ThreadRuntimeEventCallback<E extends ThreadRuntimeEventType> = (payload: ThreadRuntimeEventPayload[E]) => void;
122
- type StartRunConfig = {
122
+ export type ThreadRuntimeEventType = keyof ThreadRuntimeEventPayload;
123
+ export type ThreadRuntimeEventCallback<E extends ThreadRuntimeEventType> = (payload: ThreadRuntimeEventPayload[E]) => void;
124
+ export type StartRunConfig = {
123
125
  parentId: string | null;
124
126
  sourceId: string | null;
125
127
  runConfig: RunConfig;
126
128
  };
127
- type ResumeRunConfig = StartRunConfig & {
129
+ export type ResumeRunConfig = StartRunConfig & {
128
130
  stream?: (options: ChatModelRunOptions) => AsyncGenerator<ChatModelRunResult, void, unknown>;
129
131
  };
130
- type ThreadRuntimeCore = Readonly<{
132
+ export type ThreadRuntimeCore = Readonly<{
131
133
  getMessageById: (messageId: string) => {
132
134
  parentId: string | null;
133
135
  message: ThreadMessage;
@@ -221,5 +223,4 @@ type ThreadRuntimeCore = Readonly<{
221
223
  unstable_on<E extends ThreadRuntimeEventType>(event: E, callback: ThreadRuntimeEventCallback<E>): Unsubscribe;
222
224
  }>;
223
225
  //#endregion
224
- export { AddToolResultOptions, RespondToToolApprovalOptions, ResumeRunConfig, ResumeToolCallOptions, RuntimeCapabilities, SpeechState, StartRunConfig, SubmitFeedbackOptions, SubmittedFeedback, ThreadRuntimeCore, ThreadRuntimeEventCallback, ThreadRuntimeEventPayload, ThreadRuntimeEventType, ThreadSuggestion, VoiceSessionState };
225
226
  //# sourceMappingURL=thread-runtime-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/interfaces/thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;;KAqBY;WACD;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;KAGC;EACV;EACA;EACA;EACA,QAAQ;EACR;EACA,WAAW;;;;;;;EAOX,wBAAwB;;KAGd;EACV;EACA;;KAGU;EACV;EACA;;EAEA;;EAEA;EACA;;KAGU;EACV;EACA;;KAGU;;EAEV;;EAEA;;EAEA;;KAGU;WACD;WACA,QAAQ,uBAAuB;;KAG9B;WACD,QAAQ,qBAAqB;WAC7B;WACA,MAAM,qBAAqB;;KAG1B;WACD;;KAGC;EACV;IACE;IACA;IACA;IACA;;;;;;;;EAQF,UAAU;;;;;;;EAOV,QAAQ;;;;;;;;;EASR,YAAY;;;;;EAKZ,oBAAoB;;KAGV,+BAA+B;KAE/B,2BAA2B,UAAU,2BAC/C,SAAS,0BAA0B;KAGzB;EACV;EACA;EACA,WAAW;;KAGD,kBAAkB;EAC5B,UACE,SAAS,wBACN,eAAe;;KAGV,oBAAoB;EAC9B,iBAAiB;IAEX;IACA,SAAS;IACT;;EAIN,cAAc;EACd,iBAAiB;EAEjB,SAAS,SAAS;EAClB,gBAAgB,6BAA6B;EAC7C,WAAW,QAAQ;EACnB,YAAY,QAAQ;EACpB;EACA;EAEA,gBAAgB,SAAS;EACzB,iBAAiB,SAAS;;;;;;;;;;;;;EAa1B,wBACE,SAAS,iCACN;EAEL,QAAQ;EACR;EAEA;EACA;EACA;EACA;EAEA,iBAAiB,UAAU;EAE3B,uBAAuB;EAEvB,UAAU;EACV,kBAAkB,sBAAsB;EACxC,YAAY;EAEZ,+BAA+B;EAC/B,oCAAoC;EACpC,iBAAiB,qBAAqB,WAAW;EACjD,mBAAmB;EAEnB,QAAQ;EACR,OAAO;EAEP,cAAc,SAAS;EACvB;;;;;;EAMA;EACA;;;;;;;EAOA;EACA,mBAAmB;EACnB,OAAO;EACP,sBAAsB;EAEtB;EAEA,YAAY,yBAAyB;EAErC;EACA,uBAAuB,yBAAyB;EAEhD,OAAO,YAAY;EACnB,UAAU;EAEV;EACA,oBAAoB;EAEpB,MAAM,2BAA2B;;;;;;;;;;;;EAajC,gCAAgC;;;;;;EAOhC,YAAY,UAAU,wBACpB,OAAO,GACP,UAAU,2BAA2B,KACpC"}
1
+ {"version":3,"file":"thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/interfaces/thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;;YAqBY;WACD;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;YAGC;EACV;EACA;EACA;EACA,QAAQ;EACR;EACA,WAAW;;;;;;;EAOX,wBAAwB;;YAGd;EACV;EACA;;YAGU;EACV;EACA;;EAEA;;EAEA;EACA;;YAGU;EACV;EACA;EACA;;YAGU;;EAEV;;EAEA;;EAEA;;YAGU;WACD;WACA,QAAQ,uBAAuB;;YAG9B;WACD,QAAQ,qBAAqB;WAC7B;WACA,MAAM,qBAAqB;;YAG1B;WACD;WACA;;YAGC;EACV;IACE;IACA;IACA;IACA;;;;;;;;EAQF,UAAU;;;;;;;EAOV,QAAQ;;;;;;;;;EASR,YAAY;;;;;EAKZ,oBAAoB;;YAGV,+BAA+B;YAE/B,2BAA2B,UAAU,2BAC/C,SAAS,0BAA0B;YAGzB;EACV;EACA;EACA,WAAW;;YAGD,kBAAkB;EAC5B,UACE,SAAS,wBACN,eAAe;;YAGV,oBAAoB;EAC9B,iBAAiB;IAEX;IACA,SAAS;IACT;;EAIN,cAAc;EACd,iBAAiB;EAEjB,SAAS,SAAS;EAClB,gBAAgB,6BAA6B;EAC7C,WAAW,QAAQ;EACnB,YAAY,QAAQ;EACpB;EACA;EAEA,gBAAgB,SAAS;EACzB,iBAAiB,SAAS;;;;;;;;;;;;;EAa1B,wBACE,SAAS,iCACN;EAEL,QAAQ;EACR;EAEA;EACA;EACA;EACA;EAEA,iBAAiB,UAAU;EAE3B,uBAAuB;EAEvB,UAAU;EACV,kBAAkB,sBAAsB;EACxC,YAAY;EAEZ,+BAA+B;EAC/B,oCAAoC;EACpC,iBAAiB,qBAAqB,WAAW;EACjD,mBAAmB;EAEnB,QAAQ;EACR,OAAO;EAEP,cAAc,SAAS;EACvB;;;;;;EAMA;EACA;;;;;;;EAOA;EACA,mBAAmB;EACnB,OAAO;EACP,sBAAsB;EAEtB;EAEA,YAAY,yBAAyB;EAErC;EACA,uBAAuB,yBAAyB;EAEhD,OAAO,YAAY;EACnB,UAAU;EAEV;EACA,oBAAoB;EAEpB,MAAM,2BAA2B;;;;;;;;;;;;EAajC,gCAAgC;;;;;;EAOhC,YAAY,UAAU,wBACpB,OAAO,GACP,UAAU,2BAA2B,KACpC"}
@@ -1,7 +1,7 @@
1
1
  import { AppendMessage } from "../../types/message.js";
2
2
  import { QueueItemState } from "./queue-item.js";
3
3
  //#region src/runtime/queue/external-thread-queue-adapter.d.ts
4
- type QueuePlacement = {
4
+ export type QueuePlacement = {
5
5
  readonly lane?: "queue" | "steer";
6
6
  readonly insertAfter?: string | null;
7
7
  readonly insertBefore?: string | null;
@@ -10,7 +10,7 @@ type QueuePlacement = {
10
10
  * The queue surface a runtime exposes so the composer can stay usable during a
11
11
  * run and render the pending messages.
12
12
  */
13
- type ExternalThreadQueueAdapter = {
13
+ export type ExternalThreadQueueAdapter = {
14
14
  items: readonly QueueItemState[];
15
15
  steerItems: readonly QueueItemState[];
16
16
  /** Send a message into the queue lane, processed in order. */
@@ -43,5 +43,4 @@ type ExternalThreadQueueAdapter = {
43
43
  __internal_notifyCancelled?: (() => void) | undefined;
44
44
  };
45
45
  //#endregion
46
- export { ExternalThreadQueueAdapter, QueuePlacement };
47
46
  //# sourceMappingURL=external-thread-queue-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-thread-queue-adapter.d.ts","names":[],"sources":["../../../src/runtime/queue/external-thread-queue-adapter.ts"],"mappings":";;;KAGY;WACD;WACA;WACA;;;;;;KAOC;EACV,gBAAgB;EAChB,qBAAqB;;EAErB,UAAU,SAAS;;EAEnB,QAAQ,SAAS;;;;;;;EAOjB,OAAO,qBAAqB,WAAW;EACvC,OAAO,qBAAqB,SAAS;EACrC,SAAS;;;;;;;;EAQT,oCACM,YAAY,SAAS,kBAAkB;;;;;;;EAQ7C"}
1
+ {"version":3,"file":"external-thread-queue-adapter.d.ts","names":[],"sources":["../../../src/runtime/queue/external-thread-queue-adapter.ts"],"mappings":";;;YAGY;WACD;WACA;WACA;;;;;;YAOC;EACV,gBAAgB;EAChB,qBAAqB;;EAErB,UAAU,SAAS;;EAEnB,QAAQ,SAAS;;;;;;;EAOjB,OAAO,qBAAqB,WAAW;EACvC,OAAO,qBAAqB,SAAS;EACrC,SAAS;;;;;;;;EAQT,oCACM,YAAY,SAAS,kBAAkB;;;;;;;EAQ7C"}
@@ -1,7 +1,7 @@
1
1
  import { AppendMessage } from "../../types/message.js";
2
2
  import { ExternalThreadQueueAdapter } from "./external-thread-queue-adapter.js";
3
3
  //#region src/runtime/queue/message-queue.d.ts
4
- type MessageQueueDriver = {
4
+ export type MessageQueueDriver = {
5
5
  /**
6
6
  * A synchronous throw is treated as a run that never started and restores
7
7
  * the message. A driver that already started work must call `notifyBusy`
@@ -13,8 +13,10 @@ type MessageQueueDriver = {
13
13
  /** When omitted, steering degrades to "process next" instead of interrupting. */
14
14
  cancel?: (() => void) | undefined;
15
15
  };
16
- type MessageQueueController = {
16
+ export type MessageQueueController = {
17
17
  readonly adapter: ExternalThreadQueueAdapter;
18
+ hold: () => void;
19
+ release: () => void;
18
20
  /** Mark a run as in flight so concurrent sends buffer; call on the rising edge. */
19
21
  notifyBusy: () => void;
20
22
  /** Advances to the next pending message; call on the run's falling edge. */
@@ -30,7 +32,6 @@ type MessageQueueController = {
30
32
  clear: () => void;
31
33
  subscribe: (callback: () => void) => () => void;
32
34
  };
33
- declare const createMessageQueue: (driver: MessageQueueDriver) => MessageQueueController;
35
+ export declare const createMessageQueue: (driver: MessageQueueDriver) => MessageQueueController;
34
36
  //#endregion
35
- export { MessageQueueController, MessageQueueDriver, createMessageQueue };
36
37
  //# sourceMappingURL=message-queue.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-queue.d.ts","names":[],"sources":["../../../src/runtime/queue/message-queue.ts"],"mappings":";;;KAcY;;;;;;EAMV,MAAM,SAAS,eAAe;IAAW;;;EAEzC;;KAGU;WACD,SAAS;;EAElB;;EAEA;;;;;;;EAOA;;EAEA;EACA,YAAY;;cAsCD,qBACX,QAAQ,uBACP"}
1
+ {"version":3,"file":"message-queue.d.ts","names":[],"sources":["../../../src/runtime/queue/message-queue.ts"],"mappings":";;;YAcY;;;;;;EAMV,MAAM,SAAS,eAAe;IAAW;;;EAEzC;;YAGU;WACD,SAAS;EAClB;EACA;;EAEA;;EAEA;;;;;;;EAOA;;EAEA;EACA,YAAY;;qBAsCD,qBACX,QAAQ,uBACP"}
@@ -24,6 +24,7 @@ const createMessageQueue = (driver) => {
24
24
  const subscribers = /* @__PURE__ */ new Set();
25
25
  let running = false;
26
26
  let paused = false;
27
+ let held = false;
27
28
  let dispatchTransform = (m) => m;
28
29
  let suppressIdle = 0;
29
30
  let cancelSettles = 0;
@@ -60,7 +61,7 @@ const createMessageQueue = (driver) => {
60
61
  if (lanes.queue.some((item) => item.id === queueItemId)) return "queue";
61
62
  };
62
63
  const advance = () => {
63
- if (running || paused) return;
64
+ if (running || paused || held) return;
64
65
  const lane = lanes.steer.length > 0 ? "steer" : "queue";
65
66
  const head = lanes[lane][0];
66
67
  if (!head) return;
@@ -230,6 +231,13 @@ const createMessageQueue = (driver) => {
230
231
  };
231
232
  return {
232
233
  adapter,
234
+ hold: () => {
235
+ held = true;
236
+ },
237
+ release: () => {
238
+ held = false;
239
+ advance();
240
+ },
233
241
  notifyBusy: () => {
234
242
  paused = false;
235
243
  suppressIdle += cancelSettles;
@@ -1 +1 @@
1
- {"version":3,"file":"message-queue.js","names":["AppendMessage","FileMessagePart","TextMessagePart","EMPTY_QUEUE_ITEMS","QueueItemState","generateId","notifyEventListeners","getThreadMessageText","ExternalThreadQueueAdapter","QueuePlacement","MessageQueueDriver","run","message","options","steer","cancel","MessageQueueController","adapter","notifyBusy","notifyIdle","notifyCancelled","clear","subscribe","callback","Lane","DispatchItem","id","item","getQueueItemParts","source","content","attachments","flatMap","attachment","filter","part","type","parts","push","data","image","mimeType","filename","undefined","createMessageQueue","driver","lanes","Record","queue","messages","Map","subscribers","Set","running","paused","dispatchTransform","m","suppressIdle","cancelSettles","interrupting","busyEdges","notify","setLanes","next","items","steerItems","toItem","prompt","restore","lane","dispatch","index","set","slice","laneOf","queueItemId","some","advance","length","head","get","delete","busyEdgesBeforeRun","error","interrupt","restoreLane","restoreIndex","Math","max","restoreInterrupted","replacementStarted","pendingSettles","enqueue","move","placement","fromLane","Error","toLane","fromIndex","findIndex","i","dest","anchorIndex","anchor","insertAfter","insertBefore","after","before","nextDest","edit","map","remove","__internal_setDispatchTransform","transform","__internal_notifyCancelled","add"],"sources":["../../../src/runtime/queue/message-queue.ts"],"sourcesContent":["import type {\n AppendMessage,\n FileMessagePart,\n TextMessagePart,\n} from \"../../types/message\";\nimport { EMPTY_QUEUE_ITEMS, type QueueItemState } from \"./queue-item\";\nimport { generateId } from \"../../utils/id\";\nimport { notifyEventListeners } from \"../../utils/notify-event-listeners\";\nimport { getThreadMessageText } from \"../../utils/text\";\nimport type {\n ExternalThreadQueueAdapter,\n QueuePlacement,\n} from \"./external-thread-queue-adapter\";\n\nexport type MessageQueueDriver = {\n /**\n * A synchronous throw is treated as a run that never started and restores\n * the message. A driver that already started work must call `notifyBusy`\n * before throwing.\n */\n run: (message: AppendMessage, options: { steer: boolean }) => void;\n /** When omitted, steering degrades to \"process next\" instead of interrupting. */\n cancel?: (() => void) | undefined;\n};\n\nexport type MessageQueueController = {\n readonly adapter: ExternalThreadQueueAdapter;\n /** Mark a run as in flight so concurrent sends buffer; call on the rising edge. */\n notifyBusy: () => void;\n /** Advances to the next pending message; call on the run's falling edge. */\n notifyIdle: () => void;\n /**\n * Pauses queue advance for a user-initiated cancel, so the cancelled run's\n * settle keeps the pending items instead of dispatching the next one; the\n * next explicit send or run start re-arms draining. Call before aborting\n * the run.\n */\n notifyCancelled: () => void;\n /** Empties both lanes without dispatching. */\n clear: () => void;\n subscribe: (callback: () => void) => () => void;\n};\n\ntype Lane = \"queue\" | \"steer\";\n\ntype DispatchItem = {\n id: string;\n item: QueueItemState;\n message: AppendMessage;\n};\n\nconst getQueueItemParts = (\n message: AppendMessage,\n): readonly (FileMessagePart | TextMessagePart)[] => {\n // attachment-derived text is the file body, not user-authored prose;\n // project only the file/image content of attachments\n const source = [\n ...message.content,\n ...(message.attachments ?? []).flatMap((attachment) =>\n (attachment.content ?? []).filter((part) => part.type !== \"text\"),\n ),\n ];\n const parts: (FileMessagePart | TextMessagePart)[] = [];\n for (const part of source) {\n if (part.type === \"file\" || part.type === \"text\") {\n parts.push(part);\n } else if (part.type === \"image\") {\n parts.push({\n type: \"file\",\n data: part.image,\n mimeType: \"image/*\",\n ...(part.filename !== undefined && { filename: part.filename }),\n });\n }\n }\n return parts;\n};\n\nexport const createMessageQueue = (\n driver: MessageQueueDriver,\n): MessageQueueController => {\n let lanes: Record<Lane, readonly QueueItemState[]> = {\n queue: EMPTY_QUEUE_ITEMS,\n steer: EMPTY_QUEUE_ITEMS,\n };\n const messages = new Map<string, AppendMessage>();\n const subscribers = new Set<() => void>();\n\n let running = false;\n let paused = false;\n let dispatchTransform: (message: AppendMessage) => AppendMessage = (m) => m;\n // swallow the cancelled run's settle when steering so it does not double-advance\n let suppressIdle = 0;\n // settles from cancelled runs that must drop `running` without advancing\n let cancelSettles = 0;\n let interrupting = false;\n let busyEdges = 0;\n\n const notify = () => {\n notifyEventListeners(subscribers, undefined, \"Message queue\");\n };\n\n const setLanes = (next: Record<Lane, readonly QueueItemState[]>) => {\n lanes = next;\n adapter.items = next.queue;\n adapter.steerItems = next.steer;\n notify();\n };\n\n const toItem = (id: string, message: AppendMessage): QueueItemState => ({\n id,\n prompt: getThreadMessageText(message),\n parts: getQueueItemParts(message),\n });\n\n const restore = (lane: Lane, dispatch: DispatchItem, index = 0) => {\n paused = true;\n messages.set(dispatch.id, dispatch.message);\n setLanes({\n ...lanes,\n [lane]: [\n ...lanes[lane].slice(0, index),\n dispatch.item,\n ...lanes[lane].slice(index),\n ],\n });\n };\n\n const laneOf = (queueItemId: string): Lane | undefined => {\n if (lanes.steer.some((item) => item.id === queueItemId)) return \"steer\";\n if (lanes.queue.some((item) => item.id === queueItemId)) return \"queue\";\n return undefined;\n };\n\n const advance = () => {\n if (running || paused) return;\n const lane: Lane = lanes.steer.length > 0 ? \"steer\" : \"queue\";\n const head = lanes[lane][0];\n if (!head) return;\n const message = messages.get(head.id);\n messages.delete(head.id);\n setLanes({ ...lanes, [lane]: lanes[lane].slice(1) });\n if (!message) return;\n const dispatch = { id: head.id, item: head, message };\n running = true;\n const busyEdgesBeforeRun = busyEdges;\n try {\n driver.run(dispatchTransform(message), { steer: false });\n } catch (error) {\n if (busyEdges === busyEdgesBeforeRun) {\n running = false;\n restore(lane, dispatch);\n }\n throw error;\n }\n };\n\n const interrupt = (\n dispatch: DispatchItem,\n restoreLane: Lane = \"steer\",\n restoreIndex = 0,\n ) => {\n paused = false;\n // the interrupted run settles exactly once, whether or not it was\n // already cancel-notified\n suppressIdle += Math.max(cancelSettles, 1);\n cancelSettles = 0;\n const restoreInterrupted = (replacementStarted = false) => {\n if (replacementStarted) return;\n // The live count distinguishes an outstanding cancellation settle\n // from one delivered synchronously by cancel().\n const pendingSettles = suppressIdle;\n suppressIdle = Math.max(pendingSettles - 1, 0);\n cancelSettles = pendingSettles > 0 ? 1 : 0;\n running = pendingSettles > 0;\n restore(restoreLane, dispatch, restoreIndex);\n };\n // a driver whose cancel routes through the runtime notifies this queue\n // back; the interrupt already accounted for that settle and is dispatching\n // in its place\n interrupting = true;\n try {\n driver.cancel!();\n } catch (error) {\n restoreInterrupted();\n throw error;\n } finally {\n interrupting = false;\n }\n running = true;\n const busyEdgesBeforeRun = busyEdges;\n try {\n driver.run(dispatchTransform(dispatch.message), { steer: true });\n } catch (error) {\n const replacementStarted = busyEdges !== busyEdgesBeforeRun;\n restoreInterrupted(replacementStarted);\n throw error;\n }\n };\n\n const push = (lane: Lane, message: AppendMessage) => {\n paused = false;\n const id = generateId();\n messages.set(id, message);\n setLanes({ ...lanes, [lane]: [...lanes[lane], toItem(id, message)] });\n advance();\n };\n\n const enqueue = (message: AppendMessage) => {\n push(\"queue\", message);\n };\n\n const steer = (message: AppendMessage) => {\n if (running && driver.cancel) {\n const id = generateId();\n interrupt({ id, item: toItem(id, message), message });\n return;\n }\n push(\"steer\", message);\n };\n\n const move = (queueItemId: string, placement: QueuePlacement) => {\n const fromLane = laneOf(queueItemId);\n if (!fromLane) throw new Error(`Unknown queue item \"${queueItemId}\".`);\n const toLane = placement.lane ?? fromLane;\n\n const fromIndex = lanes[fromLane].findIndex((i) => i.id === queueItemId);\n const item = lanes[fromLane][fromIndex]!;\n const dest = (toLane === fromLane ? lanes[fromLane] : lanes[toLane]).filter(\n (i) => i.id !== queueItemId,\n );\n\n const anchorIndex = (anchor: string) => {\n if (anchor === queueItemId)\n throw new Error(`Queue item \"${queueItemId}\" cannot anchor itself.`);\n const index = dest.findIndex((i) => i.id === anchor);\n if (index === -1)\n throw new Error(`Unknown anchor \"${anchor}\" in lane \"${toLane}\".`);\n return index;\n };\n\n const { insertAfter, insertBefore } = placement;\n let index: number;\n if (insertAfter === undefined && insertBefore === undefined) {\n index =\n toLane === fromLane\n ? lanes[fromLane].findIndex((i) => i.id === queueItemId)\n : dest.length;\n } else if (insertAfter !== undefined && insertBefore !== undefined) {\n const after = insertAfter === null ? -1 : anchorIndex(insertAfter);\n const before =\n insertBefore === null ? dest.length : anchorIndex(insertBefore);\n if (before !== after + 1)\n throw new Error(\n `insertAfter \"${insertAfter}\" and insertBefore \"${insertBefore}\" are not adjacent in lane \"${toLane}\".`,\n );\n index = after + 1;\n } else if (insertAfter !== undefined) {\n index = insertAfter === null ? 0 : anchorIndex(insertAfter) + 1;\n } else {\n index = insertBefore === null ? dest.length : anchorIndex(insertBefore!);\n }\n\n // placement and immediate dispatch cannot coexist: an anchored move into\n // the steer lane places without interrupting; only an unanchored one\n // cancels the live run and dispatches\n if (\n insertAfter === undefined &&\n insertBefore === undefined &&\n toLane === \"steer\" &&\n fromLane !== \"steer\" &&\n running &&\n driver.cancel\n ) {\n const message = messages.get(queueItemId)!;\n messages.delete(queueItemId);\n setLanes({\n queue: lanes.queue.filter((i) => i.id !== queueItemId),\n steer: lanes.steer,\n });\n interrupt({ id: queueItemId, item, message }, fromLane, fromIndex);\n return;\n }\n\n const nextDest = [...dest.slice(0, index), item, ...dest.slice(index)];\n const next = { ...lanes, [toLane]: nextDest };\n if (toLane !== fromLane)\n next[fromLane] = lanes[fromLane].filter((i) => i.id !== queueItemId);\n setLanes(next);\n advance();\n };\n\n const edit = (queueItemId: string, message: AppendMessage) => {\n const lane = laneOf(queueItemId);\n if (!lane) throw new Error(`Unknown queue item \"${queueItemId}\".`);\n messages.set(queueItemId, message);\n setLanes({\n ...lanes,\n [lane]: lanes[lane].map((item) =>\n item.id === queueItemId ? toItem(queueItemId, message) : item,\n ),\n });\n };\n\n const remove = (queueItemId: string) => {\n if (!messages.delete(queueItemId)) return;\n setLanes({\n queue: lanes.queue.filter((item) => item.id !== queueItemId),\n steer: lanes.steer.filter((item) => item.id !== queueItemId),\n });\n };\n\n const notifyCancelled = () => {\n if (interrupting) return;\n if (running && cancelSettles === 0) {\n paused = true;\n cancelSettles = 1;\n }\n };\n\n const adapter: ExternalThreadQueueAdapter = {\n items: lanes.queue,\n steerItems: lanes.steer,\n enqueue,\n steer,\n move,\n edit,\n remove,\n __internal_setDispatchTransform: (transform) => {\n dispatchTransform = transform;\n },\n __internal_notifyCancelled: notifyCancelled,\n };\n\n return {\n adapter,\n notifyBusy: () => {\n paused = false;\n // a cancelled run's settle that is still outstanding belongs to a run\n // this new one replaces; swallow it entirely\n suppressIdle += cancelSettles;\n cancelSettles = 0;\n running = true;\n busyEdges++;\n },\n notifyIdle: () => {\n if (suppressIdle > 0) {\n suppressIdle--;\n return;\n }\n if (cancelSettles > 0) cancelSettles--;\n running = false;\n advance();\n },\n notifyCancelled,\n clear: () => {\n messages.clear();\n setLanes({ queue: EMPTY_QUEUE_ITEMS, steer: EMPTY_QUEUE_ITEMS });\n },\n subscribe: (callback) => {\n subscribers.add(callback);\n return () => {\n subscribers.delete(callback);\n };\n },\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"message-queue.js","names":["AppendMessage","FileMessagePart","TextMessagePart","EMPTY_QUEUE_ITEMS","QueueItemState","generateId","notifyEventListeners","getThreadMessageText","ExternalThreadQueueAdapter","QueuePlacement","MessageQueueDriver","run","message","options","steer","cancel","MessageQueueController","adapter","hold","release","notifyBusy","notifyIdle","notifyCancelled","clear","subscribe","callback","Lane","DispatchItem","id","item","getQueueItemParts","source","content","attachments","flatMap","attachment","filter","part","type","parts","push","data","image","mimeType","filename","undefined","createMessageQueue","driver","lanes","Record","queue","messages","Map","subscribers","Set","running","paused","held","dispatchTransform","m","suppressIdle","cancelSettles","interrupting","busyEdges","notify","setLanes","next","items","steerItems","toItem","prompt","restore","lane","dispatch","index","set","slice","laneOf","queueItemId","some","advance","length","head","get","delete","busyEdgesBeforeRun","error","interrupt","restoreLane","restoreIndex","Math","max","restoreInterrupted","replacementStarted","pendingSettles","enqueue","move","placement","fromLane","Error","toLane","fromIndex","findIndex","i","dest","anchorIndex","anchor","insertAfter","insertBefore","after","before","nextDest","edit","map","remove","__internal_setDispatchTransform","transform","__internal_notifyCancelled","add"],"sources":["../../../src/runtime/queue/message-queue.ts"],"sourcesContent":["import type {\n AppendMessage,\n FileMessagePart,\n TextMessagePart,\n} from \"../../types/message\";\nimport { EMPTY_QUEUE_ITEMS, type QueueItemState } from \"./queue-item\";\nimport { generateId } from \"../../utils/id\";\nimport { notifyEventListeners } from \"../../utils/notify-event-listeners\";\nimport { getThreadMessageText } from \"../../utils/text\";\nimport type {\n ExternalThreadQueueAdapter,\n QueuePlacement,\n} from \"./external-thread-queue-adapter\";\n\nexport type MessageQueueDriver = {\n /**\n * A synchronous throw is treated as a run that never started and restores\n * the message. A driver that already started work must call `notifyBusy`\n * before throwing.\n */\n run: (message: AppendMessage, options: { steer: boolean }) => void;\n /** When omitted, steering degrades to \"process next\" instead of interrupting. */\n cancel?: (() => void) | undefined;\n};\n\nexport type MessageQueueController = {\n readonly adapter: ExternalThreadQueueAdapter;\n hold: () => void;\n release: () => void;\n /** Mark a run as in flight so concurrent sends buffer; call on the rising edge. */\n notifyBusy: () => void;\n /** Advances to the next pending message; call on the run's falling edge. */\n notifyIdle: () => void;\n /**\n * Pauses queue advance for a user-initiated cancel, so the cancelled run's\n * settle keeps the pending items instead of dispatching the next one; the\n * next explicit send or run start re-arms draining. Call before aborting\n * the run.\n */\n notifyCancelled: () => void;\n /** Empties both lanes without dispatching. */\n clear: () => void;\n subscribe: (callback: () => void) => () => void;\n};\n\ntype Lane = \"queue\" | \"steer\";\n\ntype DispatchItem = {\n id: string;\n item: QueueItemState;\n message: AppendMessage;\n};\n\nconst getQueueItemParts = (\n message: AppendMessage,\n): readonly (FileMessagePart | TextMessagePart)[] => {\n // attachment-derived text is the file body, not user-authored prose;\n // project only the file/image content of attachments\n const source = [\n ...message.content,\n ...(message.attachments ?? []).flatMap((attachment) =>\n (attachment.content ?? []).filter((part) => part.type !== \"text\"),\n ),\n ];\n const parts: (FileMessagePart | TextMessagePart)[] = [];\n for (const part of source) {\n if (part.type === \"file\" || part.type === \"text\") {\n parts.push(part);\n } else if (part.type === \"image\") {\n parts.push({\n type: \"file\",\n data: part.image,\n mimeType: \"image/*\",\n ...(part.filename !== undefined && { filename: part.filename }),\n });\n }\n }\n return parts;\n};\n\nexport const createMessageQueue = (\n driver: MessageQueueDriver,\n): MessageQueueController => {\n let lanes: Record<Lane, readonly QueueItemState[]> = {\n queue: EMPTY_QUEUE_ITEMS,\n steer: EMPTY_QUEUE_ITEMS,\n };\n const messages = new Map<string, AppendMessage>();\n const subscribers = new Set<() => void>();\n\n let running = false;\n let paused = false;\n let held = false;\n let dispatchTransform: (message: AppendMessage) => AppendMessage = (m) => m;\n // swallow the cancelled run's settle when steering so it does not double-advance\n let suppressIdle = 0;\n // settles from cancelled runs that must drop `running` without advancing\n let cancelSettles = 0;\n let interrupting = false;\n let busyEdges = 0;\n\n const notify = () => {\n notifyEventListeners(subscribers, undefined, \"Message queue\");\n };\n\n const setLanes = (next: Record<Lane, readonly QueueItemState[]>) => {\n lanes = next;\n adapter.items = next.queue;\n adapter.steerItems = next.steer;\n notify();\n };\n\n const toItem = (id: string, message: AppendMessage): QueueItemState => ({\n id,\n prompt: getThreadMessageText(message),\n parts: getQueueItemParts(message),\n });\n\n const restore = (lane: Lane, dispatch: DispatchItem, index = 0) => {\n paused = true;\n messages.set(dispatch.id, dispatch.message);\n setLanes({\n ...lanes,\n [lane]: [\n ...lanes[lane].slice(0, index),\n dispatch.item,\n ...lanes[lane].slice(index),\n ],\n });\n };\n\n const laneOf = (queueItemId: string): Lane | undefined => {\n if (lanes.steer.some((item) => item.id === queueItemId)) return \"steer\";\n if (lanes.queue.some((item) => item.id === queueItemId)) return \"queue\";\n return undefined;\n };\n\n const advance = () => {\n if (running || paused || held) return;\n const lane: Lane = lanes.steer.length > 0 ? \"steer\" : \"queue\";\n const head = lanes[lane][0];\n if (!head) return;\n const message = messages.get(head.id);\n messages.delete(head.id);\n setLanes({ ...lanes, [lane]: lanes[lane].slice(1) });\n if (!message) return;\n const dispatch = { id: head.id, item: head, message };\n running = true;\n const busyEdgesBeforeRun = busyEdges;\n try {\n driver.run(dispatchTransform(message), { steer: false });\n } catch (error) {\n if (busyEdges === busyEdgesBeforeRun) {\n running = false;\n restore(lane, dispatch);\n }\n throw error;\n }\n };\n\n const interrupt = (\n dispatch: DispatchItem,\n restoreLane: Lane = \"steer\",\n restoreIndex = 0,\n ) => {\n paused = false;\n // the interrupted run settles exactly once, whether or not it was\n // already cancel-notified\n suppressIdle += Math.max(cancelSettles, 1);\n cancelSettles = 0;\n const restoreInterrupted = (replacementStarted = false) => {\n if (replacementStarted) return;\n // The live count distinguishes an outstanding cancellation settle\n // from one delivered synchronously by cancel().\n const pendingSettles = suppressIdle;\n suppressIdle = Math.max(pendingSettles - 1, 0);\n cancelSettles = pendingSettles > 0 ? 1 : 0;\n running = pendingSettles > 0;\n restore(restoreLane, dispatch, restoreIndex);\n };\n // a driver whose cancel routes through the runtime notifies this queue\n // back; the interrupt already accounted for that settle and is dispatching\n // in its place\n interrupting = true;\n try {\n driver.cancel!();\n } catch (error) {\n restoreInterrupted();\n throw error;\n } finally {\n interrupting = false;\n }\n running = true;\n const busyEdgesBeforeRun = busyEdges;\n try {\n driver.run(dispatchTransform(dispatch.message), { steer: true });\n } catch (error) {\n const replacementStarted = busyEdges !== busyEdgesBeforeRun;\n restoreInterrupted(replacementStarted);\n throw error;\n }\n };\n\n const push = (lane: Lane, message: AppendMessage) => {\n paused = false;\n const id = generateId();\n messages.set(id, message);\n setLanes({ ...lanes, [lane]: [...lanes[lane], toItem(id, message)] });\n advance();\n };\n\n const enqueue = (message: AppendMessage) => {\n push(\"queue\", message);\n };\n\n const steer = (message: AppendMessage) => {\n if (running && driver.cancel) {\n const id = generateId();\n interrupt({ id, item: toItem(id, message), message });\n return;\n }\n push(\"steer\", message);\n };\n\n const move = (queueItemId: string, placement: QueuePlacement) => {\n const fromLane = laneOf(queueItemId);\n if (!fromLane) throw new Error(`Unknown queue item \"${queueItemId}\".`);\n const toLane = placement.lane ?? fromLane;\n\n const fromIndex = lanes[fromLane].findIndex((i) => i.id === queueItemId);\n const item = lanes[fromLane][fromIndex]!;\n const dest = (toLane === fromLane ? lanes[fromLane] : lanes[toLane]).filter(\n (i) => i.id !== queueItemId,\n );\n\n const anchorIndex = (anchor: string) => {\n if (anchor === queueItemId)\n throw new Error(`Queue item \"${queueItemId}\" cannot anchor itself.`);\n const index = dest.findIndex((i) => i.id === anchor);\n if (index === -1)\n throw new Error(`Unknown anchor \"${anchor}\" in lane \"${toLane}\".`);\n return index;\n };\n\n const { insertAfter, insertBefore } = placement;\n let index: number;\n if (insertAfter === undefined && insertBefore === undefined) {\n index =\n toLane === fromLane\n ? lanes[fromLane].findIndex((i) => i.id === queueItemId)\n : dest.length;\n } else if (insertAfter !== undefined && insertBefore !== undefined) {\n const after = insertAfter === null ? -1 : anchorIndex(insertAfter);\n const before =\n insertBefore === null ? dest.length : anchorIndex(insertBefore);\n if (before !== after + 1)\n throw new Error(\n `insertAfter \"${insertAfter}\" and insertBefore \"${insertBefore}\" are not adjacent in lane \"${toLane}\".`,\n );\n index = after + 1;\n } else if (insertAfter !== undefined) {\n index = insertAfter === null ? 0 : anchorIndex(insertAfter) + 1;\n } else {\n index = insertBefore === null ? dest.length : anchorIndex(insertBefore!);\n }\n\n // placement and immediate dispatch cannot coexist: an anchored move into\n // the steer lane places without interrupting; only an unanchored one\n // cancels the live run and dispatches\n if (\n insertAfter === undefined &&\n insertBefore === undefined &&\n toLane === \"steer\" &&\n fromLane !== \"steer\" &&\n running &&\n driver.cancel\n ) {\n const message = messages.get(queueItemId)!;\n messages.delete(queueItemId);\n setLanes({\n queue: lanes.queue.filter((i) => i.id !== queueItemId),\n steer: lanes.steer,\n });\n interrupt({ id: queueItemId, item, message }, fromLane, fromIndex);\n return;\n }\n\n const nextDest = [...dest.slice(0, index), item, ...dest.slice(index)];\n const next = { ...lanes, [toLane]: nextDest };\n if (toLane !== fromLane)\n next[fromLane] = lanes[fromLane].filter((i) => i.id !== queueItemId);\n setLanes(next);\n advance();\n };\n\n const edit = (queueItemId: string, message: AppendMessage) => {\n const lane = laneOf(queueItemId);\n if (!lane) throw new Error(`Unknown queue item \"${queueItemId}\".`);\n messages.set(queueItemId, message);\n setLanes({\n ...lanes,\n [lane]: lanes[lane].map((item) =>\n item.id === queueItemId ? toItem(queueItemId, message) : item,\n ),\n });\n };\n\n const remove = (queueItemId: string) => {\n if (!messages.delete(queueItemId)) return;\n setLanes({\n queue: lanes.queue.filter((item) => item.id !== queueItemId),\n steer: lanes.steer.filter((item) => item.id !== queueItemId),\n });\n };\n\n const notifyCancelled = () => {\n if (interrupting) return;\n if (running && cancelSettles === 0) {\n paused = true;\n cancelSettles = 1;\n }\n };\n\n const adapter: ExternalThreadQueueAdapter = {\n items: lanes.queue,\n steerItems: lanes.steer,\n enqueue,\n steer,\n move,\n edit,\n remove,\n __internal_setDispatchTransform: (transform) => {\n dispatchTransform = transform;\n },\n __internal_notifyCancelled: notifyCancelled,\n };\n\n return {\n adapter,\n hold: () => {\n held = true;\n },\n release: () => {\n held = false;\n advance();\n },\n notifyBusy: () => {\n paused = false;\n // a cancelled run's settle that is still outstanding belongs to a run\n // this new one replaces; swallow it entirely\n suppressIdle += cancelSettles;\n cancelSettles = 0;\n running = true;\n busyEdges++;\n },\n notifyIdle: () => {\n if (suppressIdle > 0) {\n suppressIdle--;\n return;\n }\n if (cancelSettles > 0) cancelSettles--;\n running = false;\n advance();\n },\n notifyCancelled,\n clear: () => {\n messages.clear();\n setLanes({ queue: EMPTY_QUEUE_ITEMS, steer: EMPTY_QUEUE_ITEMS });\n },\n subscribe: (callback) => {\n subscribers.add(callback);\n return () => {\n subscribers.delete(callback);\n };\n },\n };\n};\n"],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  import { FileMessagePart, TextMessagePart } from "../../types/message.js";
2
2
  //#region src/runtime/queue/queue-item.d.ts
3
- type QueueItemState = {
3
+ export type QueueItemState = {
4
4
  readonly id: string;
5
5
  /** @deprecated Derive from the text parts of `parts` instead. Removal after 2026-11-05. */
6
6
  readonly prompt: string;
7
7
  readonly parts: readonly (FileMessagePart | TextMessagePart)[];
8
8
  };
9
- declare const EMPTY_QUEUE_ITEMS: readonly QueueItemState[];
9
+ export declare const EMPTY_QUEUE_ITEMS: readonly QueueItemState[];
10
10
  //#endregion
11
- export { EMPTY_QUEUE_ITEMS, QueueItemState };
12
11
  //# sourceMappingURL=queue-item.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue-item.d.ts","names":[],"sources":["../../../src/runtime/queue/queue-item.ts"],"mappings":";;KAEY;WACD;;WAEA;WACA,iBAAiB,kBAAkB;;cAGjC,4BAA4B"}
1
+ {"version":3,"file":"queue-item.d.ts","names":[],"sources":["../../../src/runtime/queue/queue-item.ts"],"mappings":";;YAEY;WACD;;WAEA;WACA,iBAAiB,kBAAkB;;qBAGjC,4BAA4B"}
@@ -1,15 +1,14 @@
1
1
  //#region src/runtime/utils/abortable-thread-load.d.ts
2
- type AbortableThreadLoadPurpose = "initial" | "reload";
2
+ export type AbortableThreadLoadPurpose = "initial" | "reload";
3
3
  type AbortableThreadLoadOptions = {
4
4
  purpose?: AbortableThreadLoadPurpose;
5
5
  load: (signal: AbortSignal) => Promise<void>;
6
6
  onSettled: () => void;
7
7
  onInitialError: (error: unknown) => void;
8
8
  };
9
- declare const createAbortableThreadLoad: () => {
9
+ export declare const createAbortableThreadLoad: () => {
10
10
  abort(purpose?: AbortableThreadLoadPurpose): void;
11
11
  run({ purpose, load, onSettled, onInitialError }: AbortableThreadLoadOptions): Promise<void>;
12
12
  };
13
13
  //#endregion
14
- export { AbortableThreadLoadPurpose, createAbortableThreadLoad };
15
14
  //# sourceMappingURL=abortable-thread-load.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"abortable-thread-load.d.ts","names":[],"sources":["../../../src/runtime/utils/abortable-thread-load.ts"],"mappings":";KAAY;KAEP;EACH,UAAU;EACV,OAAO,QAAQ,gBAAgB;EAC/B;EACA,iBAAiB;;cAGN;EAQO,MAAA,UAAA;EASb,MAAA,SAAA,MAAA,WAAA,kBAAA,6BAA6B"}
1
+ {"version":3,"file":"abortable-thread-load.d.ts","names":[],"sources":["../../../src/runtime/utils/abortable-thread-load.ts"],"mappings":";YAAY;KAEP;EACH,UAAU;EACV,OAAO,QAAQ,gBAAgB;EAC/B;EACA,iBAAiB;;qBAGN;EAQO,MAAA,UAAA;EASb,MAAA,SAAA,MAAA,WAAA,kBAAA,6BAA6B"}
@@ -1,9 +1,9 @@
1
1
  //#region src/runtime/utils/attachment-add-operations.d.ts
2
- type AttachmentAddOperation = {
2
+ export type AttachmentAddOperation = {
3
3
  cancelled: boolean;
4
4
  attachmentIds: Set<string>;
5
5
  };
6
- declare class AttachmentAddOperations {
6
+ export declare class AttachmentAddOperations {
7
7
  private readonly operations;
8
8
  start(): AttachmentAddOperation;
9
9
  accept(operation: AttachmentAddOperation, attachmentId: string): boolean;
@@ -12,7 +12,6 @@ declare class AttachmentAddOperations {
12
12
  cancel(attachmentId: string): void;
13
13
  cancelAll(): void;
14
14
  }
15
- declare const drainAttachmentAdd: <T>(result: Promise<T> | AsyncIterable<T>, accept: (attachment: T) => boolean) => Promise<void>;
15
+ export declare const drainAttachmentAdd: <T>(result: Promise<T> | AsyncIterable<T>, accept: (attachment: T) => boolean) => Promise<void>;
16
16
  //#endregion
17
- export { AttachmentAddOperation, AttachmentAddOperations, drainAttachmentAdd };
18
17
  //# sourceMappingURL=attachment-add-operations.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment-add-operations.d.ts","names":[],"sources":["../../../src/runtime/utils/attachment-add-operations.ts"],"mappings":";KAAY;EACV;EACA,eAAe;;cAGJ;mBACM;EAEjB,SAAK;EASL,OAAO,WAAW,wBAAwB;EAM1C,OAAO,WAAW;EAIlB,YAAY,WAAW;EAIvB,OAAO;EAQP;;cAQW,qBAA4B,GACvC,QAAQ,QAAQ,KAAK,cAAc,IACnC,SAAS,YAAY,kBAAa"}
1
+ {"version":3,"file":"attachment-add-operations.d.ts","names":[],"sources":["../../../src/runtime/utils/attachment-add-operations.ts"],"mappings":";YAAY;EACV;EACA,eAAe;;qBAGJ;mBACM;EAEjB,SAAK;EASL,OAAO,WAAW,wBAAwB;EAM1C,OAAO,WAAW;EAIlB,YAAY,WAAW;EAIvB,OAAO;EAQP;;qBAQW,qBAA4B,GACvC,QAAQ,QAAQ,KAAK,cAAc,IACnC,SAAS,YAAY,kBAAa"}
@@ -3,15 +3,14 @@ import { ThreadMessageLike } from "./thread-message-like.js";
3
3
  import { ReadonlyJSONValue } from "assistant-stream/utils";
4
4
  //#region src/runtime/utils/auto-status.d.ts
5
5
  type ThreadMessageLikeContentItem = Exclude<ThreadMessageLike["content"], string>[number];
6
- declare const isPendingToolCall: (c: ThreadMessageLikeContentItem) => boolean;
6
+ export declare const isPendingToolCall: (c: ThreadMessageLikeContentItem) => boolean;
7
7
  /** A pending tool call whose nested conversation is still streaming; the outer message stays running until the nested run settles. */
8
- declare const isBackgroundToolCall: (c: ThreadMessageLikeContentItem) => boolean;
9
- declare const isInterruptedToolCall: (c: ThreadMessageLikeContentItem) => boolean;
10
- declare const isAutoStatus: (status: MessageStatus) => boolean;
11
- declare const getAutoStatus: (isLast: boolean, isRunning: boolean, hasInterruptedToolCalls: boolean, hasPendingToolCalls: boolean, error?: ReadonlyJSONValue, isCancelled?: boolean, hasBackgroundToolCalls?: boolean) => MessageStatus;
8
+ export declare const isBackgroundToolCall: (c: ThreadMessageLikeContentItem) => boolean;
9
+ export declare const isInterruptedToolCall: (c: ThreadMessageLikeContentItem) => boolean;
10
+ export declare const isAutoStatus: (status: MessageStatus) => boolean;
11
+ export declare const getAutoStatus: (isLast: boolean, isRunning: boolean, hasInterruptedToolCalls: boolean, hasPendingToolCalls: boolean, error?: ReadonlyJSONValue, isCancelled?: boolean, hasBackgroundToolCalls?: boolean) => MessageStatus;
12
12
  /** Status for a message entering the repository: the nested conversation is not being fed here, so it never keeps the message running. */
13
- declare const getRepositoryContentAutoStatus: (content: ThreadMessageLike["content"]) => MessageStatus;
14
- declare const getContentAutoStatus: (content: ThreadMessageLike["content"], isLast: boolean, isRunning: boolean) => MessageStatus;
13
+ export declare const getRepositoryContentAutoStatus: (content: ThreadMessageLike["content"]) => MessageStatus;
14
+ export declare const getContentAutoStatus: (content: ThreadMessageLike["content"], isLast: boolean, isRunning: boolean) => MessageStatus;
15
15
  //#endregion
16
- export { getAutoStatus, getContentAutoStatus, getRepositoryContentAutoStatus, isAutoStatus, isBackgroundToolCall, isInterruptedToolCall, isPendingToolCall };
17
16
  //# sourceMappingURL=auto-status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auto-status.d.ts","names":[],"sources":["../../../src/runtime/utils/auto-status.ts"],"mappings":";;;;KAIK,+BAA+B,QAClC;cAIW,oBAAqB,GAAG;;cAIxB,uBACX,GAAG;cAOQ,wBACX,GAAG;cAuDQ,eAAgB,QAAQ;cAGxB,gBACX,iBACA,oBACA,kCACA,8BACA,QAAQ,mBACR,uBACA,qCACC;;cA0BU,iCACX,SAAS,iCACR;cAQU,uBACX,SAAS,8BACT,iBACA,uBACC"}
1
+ {"version":3,"file":"auto-status.d.ts","names":[],"sources":["../../../src/runtime/utils/auto-status.ts"],"mappings":";;;;KAIK,+BAA+B,QAClC;qBAIW,oBAAqB,GAAG;;qBAIxB,uBACX,GAAG;qBAOQ,wBACX,GAAG;qBAuDQ,eAAgB,QAAQ;qBAGxB,gBACX,iBACA,oBACA,kCACA,8BACA,QAAQ,mBACR,uBACA,qCACC;;qBA0BU,iCACX,SAAS,iCACR;qBAQU,uBACX,SAAS,8BACT,iBACA,uBACC"}
@@ -2,11 +2,11 @@ import { FileMessagePart, MessageStatus, MessageTiming, ReasoningMessagePart, Ru
2
2
  import { ModelContext } from "../../model-context/types.js";
3
3
  import { ReadonlyJSONValue } from "assistant-stream/utils";
4
4
  //#region src/runtime/utils/chat-model-adapter.d.ts
5
- type ChatModelRunUpdate = {
5
+ export type ChatModelRunUpdate = {
6
6
  readonly content: readonly ThreadAssistantMessagePart[];
7
7
  readonly metadata?: Record<string, unknown>;
8
8
  };
9
- type ChatModelRunResult = {
9
+ export type ChatModelRunResult = {
10
10
  readonly content?: readonly ThreadAssistantMessagePart[] | undefined;
11
11
  readonly status?: MessageStatus | undefined;
12
12
  readonly metadata?: {
@@ -18,10 +18,10 @@ type ChatModelRunResult = {
18
18
  readonly custom?: Record<string, unknown> | undefined;
19
19
  };
20
20
  };
21
- type CoreChatModelRunResult = Omit<ChatModelRunResult, "content"> & {
21
+ export type CoreChatModelRunResult = Omit<ChatModelRunResult, "content"> & {
22
22
  readonly content: readonly (TextMessagePart | ReasoningMessagePart | ToolCallMessagePart | SourceMessagePart | FileMessagePart)[];
23
23
  };
24
- type ChatModelRunOptions = {
24
+ export type ChatModelRunOptions = {
25
25
  readonly messages: readonly ThreadMessage[];
26
26
  readonly runConfig: RunConfig;
27
27
  readonly abortSignal: AbortSignal;
@@ -31,9 +31,8 @@ type ChatModelRunOptions = {
31
31
  readonly unstable_parentId?: string | null | undefined;
32
32
  unstable_getMessage(): ThreadMessage;
33
33
  };
34
- type ChatModelAdapter = {
34
+ export type ChatModelAdapter = {
35
35
  run(options: ChatModelRunOptions): Promise<ChatModelRunResult> | AsyncGenerator<ChatModelRunResult, void>;
36
36
  };
37
37
  //#endregion
38
- export { ChatModelAdapter, ChatModelRunOptions, ChatModelRunResult, ChatModelRunUpdate, CoreChatModelRunResult };
39
38
  //# sourceMappingURL=chat-model-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-model-adapter.d.ts","names":[],"sources":["../../../src/runtime/utils/chat-model-adapter.ts"],"mappings":";;;;KAkBY;WACD,kBAAkB;WAClB,WAAW;;KAGV;WACD,mBAAmB;WACnB,SAAS;WACT;aACE,iBAAiB;aACjB,gCAAgC;aAChC,yBAAyB;aACzB,iBAAiB;aACjB,SAAS;aACT,SAAS;;;KAIV,yBAAyB,KAAK;WAC/B,mBACL,kBACA,uBACA,sBACA,oBACA;;KAIM;WACD,mBAAmB;WACnB,WAAW;WACX,aAAa;WACb,SAAS;WAET;WACA;WACA;EACT,uBAAuB;;KAGb;EACV,IACE,SAAS,sBACR,QAAQ,sBAAsB,eAAe"}
1
+ {"version":3,"file":"chat-model-adapter.d.ts","names":[],"sources":["../../../src/runtime/utils/chat-model-adapter.ts"],"mappings":";;;;YAkBY;WACD,kBAAkB;WAClB,WAAW;;YAGV;WACD,mBAAmB;WACnB,SAAS;WACT;aACE,iBAAiB;aACjB,gCAAgC;aAChC,yBAAyB;aACzB,iBAAiB;aACjB,SAAS;aACT,SAAS;;;YAIV,yBAAyB,KAAK;WAC/B,mBACL,kBACA,uBACA,sBACA,oBACA;;YAIM;WACD,mBAAmB;WACnB,WAAW;WACX,aAAa;WACb,SAAS;WAET;WACA;WACA;EACT,uBAAuB;;YAGb;EACV,IACE,SAAS,sBACR,QAAQ,sBAAsB,eAAe"}