@assistant-ui/core 0.2.20 → 0.2.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (509) hide show
  1. package/dist/adapters/attachment.d.ts +2 -2
  2. package/dist/adapters/attachment.d.ts.map +1 -1
  3. package/dist/adapters/attachment.js +14 -7
  4. package/dist/adapters/attachment.js.map +1 -1
  5. package/dist/adapters/directive-formatter.d.ts +0 -1
  6. package/dist/adapters/directive-formatter.d.ts.map +1 -1
  7. package/dist/adapters/feedback.d.ts +0 -1
  8. package/dist/adapters/feedback.d.ts.map +1 -1
  9. package/dist/adapters/index.d.ts +2 -2
  10. package/dist/adapters/index.js +2 -1
  11. package/dist/adapters/speech.d.ts +0 -1
  12. package/dist/adapters/speech.d.ts.map +1 -1
  13. package/dist/adapters/suggestion.d.ts +16 -2
  14. package/dist/adapters/suggestion.d.ts.map +1 -1
  15. package/dist/adapters/suggestion.js +36 -0
  16. package/dist/adapters/suggestion.js.map +1 -0
  17. package/dist/adapters/thread-history.d.ts +2 -2
  18. package/dist/adapters/thread-history.d.ts.map +1 -1
  19. package/dist/adapters/trigger.d.ts +5 -3
  20. package/dist/adapters/trigger.d.ts.map +1 -1
  21. package/dist/adapters/voice.d.ts +0 -1
  22. package/dist/adapters/voice.d.ts.map +1 -1
  23. package/dist/index.d.ts +4 -3
  24. package/dist/index.js +3 -1
  25. package/dist/index.js.map +1 -1
  26. package/dist/internal/duplicate-detection.d.ts.map +1 -1
  27. package/dist/internal.d.ts +7 -1
  28. package/dist/internal.js +6 -2
  29. package/dist/model-context/frame/host.d.ts +0 -1
  30. package/dist/model-context/frame/host.d.ts.map +1 -1
  31. package/dist/model-context/frame/provider.d.ts +0 -1
  32. package/dist/model-context/frame/provider.d.ts.map +1 -1
  33. package/dist/model-context/frame/types.d.ts.map +1 -1
  34. package/dist/model-context/interactable-composer-metadata.d.ts +4 -2
  35. package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
  36. package/dist/model-context/registry-handles.d.ts +0 -1
  37. package/dist/model-context/registry-handles.d.ts.map +1 -1
  38. package/dist/model-context/registry.d.ts +0 -1
  39. package/dist/model-context/registry.d.ts.map +1 -1
  40. package/dist/model-context/tool.d.ts +23 -9
  41. package/dist/model-context/tool.d.ts.map +1 -1
  42. package/dist/model-context/tool.js +0 -25
  43. package/dist/model-context/tool.js.map +1 -1
  44. package/dist/model-context/types.d.ts +0 -1
  45. package/dist/model-context/types.d.ts.map +1 -1
  46. package/dist/react/AssistantProvider.d.ts +0 -1
  47. package/dist/react/AssistantProvider.d.ts.map +1 -1
  48. package/dist/react/AssistantRuntimeProvider.d.ts +1 -6
  49. package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
  50. package/dist/react/RuntimeAdapter.d.ts +1 -0
  51. package/dist/react/RuntimeAdapter.d.ts.map +1 -1
  52. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +13 -2
  53. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  54. package/dist/react/adapters/LocalStorageThreadListAdapter.js +122 -7
  55. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  56. package/dist/react/adapters/TitleGenerationAdapter.d.ts +0 -1
  57. package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
  58. package/dist/react/client/DataRenderers.d.ts +0 -1
  59. package/dist/react/client/DataRenderers.d.ts.map +1 -1
  60. package/dist/react/client/Interactables.d.ts +0 -1
  61. package/dist/react/client/Interactables.d.ts.map +1 -1
  62. package/dist/react/client/Tools.d.ts +3 -2
  63. package/dist/react/client/Tools.d.ts.map +1 -1
  64. package/dist/react/client/interactable-model-context.d.ts +0 -1
  65. package/dist/react/client/interactable-model-context.d.ts.map +1 -1
  66. package/dist/react/index.d.ts +2 -2
  67. package/dist/react/interactables-legacy/Interactables.d.ts +0 -1
  68. package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
  69. package/dist/react/interactables-legacy/interactable-model-context.d.ts +0 -1
  70. package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
  71. package/dist/react/interactables-legacy/scopes.d.ts +4 -2
  72. package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
  73. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +0 -1
  74. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
  75. package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
  76. package/dist/react/model-context/define-mcp-toolkit.d.ts +19 -4
  77. package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
  78. package/dist/react/model-context/define-mcp-toolkit.js +17 -5
  79. package/dist/react/model-context/define-mcp-toolkit.js.map +1 -1
  80. package/dist/react/model-context/define-toolkit.d.ts +1 -2
  81. package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
  82. package/dist/react/model-context/external-tool.d.ts.map +1 -1
  83. package/dist/react/model-context/human-tool.d.ts.map +1 -1
  84. package/dist/react/model-context/interactableTool.d.ts +2 -2
  85. package/dist/react/model-context/interactableTool.d.ts.map +1 -1
  86. package/dist/react/model-context/makeAssistantDataUI.d.ts +2 -2
  87. package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
  88. package/dist/react/model-context/makeAssistantTool.d.ts +2 -2
  89. package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
  90. package/dist/react/model-context/makeAssistantToolUI.d.ts +2 -2
  91. package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
  92. package/dist/react/model-context/provider-tool.d.ts +0 -1
  93. package/dist/react/model-context/provider-tool.d.ts.map +1 -1
  94. package/dist/react/model-context/stub-tool.d.ts.map +1 -1
  95. package/dist/react/model-context/toolbox.d.ts +5 -5
  96. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  97. package/dist/react/model-context/useAssistantContext.d.ts +1 -0
  98. package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
  99. package/dist/react/model-context/useAssistantDataUI.d.ts +3 -2
  100. package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
  101. package/dist/react/model-context/useAssistantInstructions.d.ts +1 -0
  102. package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
  103. package/dist/react/model-context/useAssistantTool.d.ts +4 -2
  104. package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
  105. package/dist/react/model-context/useAssistantToolUI.d.ts +3 -2
  106. package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
  107. package/dist/react/model-context/useAuiToolOverrides.d.ts +0 -1
  108. package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
  109. package/dist/react/model-context/useInlineRender.d.ts +0 -1
  110. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  111. package/dist/react/model-context/useInteractable.d.ts +7 -4
  112. package/dist/react/model-context/useInteractable.d.ts.map +1 -1
  113. package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
  114. package/dist/react/model-context/useInteractableVersions.d.ts +0 -1
  115. package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
  116. package/dist/react/model-context/useToolArgsStatus.d.ts +3 -1
  117. package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
  118. package/dist/react/primitive-hooks/useActionBarCopy.d.ts +1 -4
  119. package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
  120. package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
  121. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
  122. package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
  123. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
  124. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
  125. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
  126. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
  127. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +0 -1
  128. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
  129. package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
  130. package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
  131. package/dist/react/primitive-hooks/useComposerSend.d.ts +0 -1
  132. package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
  133. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
  134. package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
  135. package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
  136. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
  137. package/dist/react/primitive-hooks/useMessageError.js +5 -1
  138. package/dist/react/primitive-hooks/useMessageError.js.map +1 -1
  139. package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
  140. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +1 -5
  141. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
  142. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
  143. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
  144. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
  145. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
  146. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
  147. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
  148. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
  149. package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
  150. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
  151. package/dist/react/primitive-hooks/useThreadMessages.d.ts +0 -1
  152. package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
  153. package/dist/react/primitive-hooks/useVoice.d.ts +0 -1
  154. package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
  155. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +7 -4
  156. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
  157. package/dist/react/primitives/composer/ComposerAttachments.d.ts +4 -3
  158. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  159. package/dist/react/primitives/composer/ComposerIf.d.ts +4 -3
  160. package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
  161. package/dist/react/primitives/composer/ComposerQueue.d.ts +2 -2
  162. package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
  163. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +2 -2
  164. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
  165. package/dist/react/primitives/message/MessageAttachments.d.ts +4 -3
  166. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  167. package/dist/react/primitives/message/MessageGroupedParts.d.ts +1 -6
  168. package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
  169. package/dist/react/primitives/message/MessageParts.d.ts +42 -24
  170. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  171. package/dist/react/primitives/message/MessageParts.js +2 -1
  172. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  173. package/dist/react/primitives/message/MessageQuote.d.ts +2 -2
  174. package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
  175. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +0 -1
  176. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
  177. package/dist/react/primitives/part/PartMessages.d.ts +2 -2
  178. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  179. package/dist/react/primitives/thread/ThreadMessages.d.ts +35 -17
  180. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  181. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +6 -4
  182. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
  183. package/dist/react/primitives/threadList/ThreadListItems.d.ts +4 -3
  184. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  185. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +0 -1
  186. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
  187. package/dist/react/providers/AttachmentByIndexProvider.d.ts +0 -1
  188. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
  189. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +0 -1
  190. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
  191. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +0 -1
  192. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
  193. package/dist/react/providers/MessageByIdProvider.d.ts +0 -1
  194. package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
  195. package/dist/react/providers/MessageByIndexProvider.d.ts +0 -1
  196. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
  197. package/dist/react/providers/PartByIndexProvider.d.ts +0 -1
  198. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
  199. package/dist/react/providers/QueueItemByIndexProvider.d.ts +0 -1
  200. package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
  201. package/dist/react/providers/ReadonlyThreadProvider.d.ts +0 -1
  202. package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
  203. package/dist/react/providers/SuggestionByIndexProvider.d.ts +0 -1
  204. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
  205. package/dist/react/providers/TextMessagePartProvider.d.ts +0 -1
  206. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
  207. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +0 -1
  208. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
  209. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +1 -1
  210. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  211. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +2 -1
  212. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  213. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +1 -1
  214. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  215. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +3 -1
  216. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  217. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +21 -19
  218. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  219. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +0 -1
  220. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
  221. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +0 -1
  222. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  223. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -4
  224. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  225. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +6 -3
  226. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
  227. package/dist/react/runtimes/cloud/auiV0.d.ts +12 -2
  228. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  229. package/dist/react/runtimes/cloud/auiV0.js +30 -1
  230. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  231. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +0 -1
  232. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  233. package/dist/react/runtimes/createMessageConverter.d.ts +1 -7
  234. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
  235. package/dist/react/runtimes/createRuntimeExtras.d.ts +0 -1
  236. package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
  237. package/dist/react/runtimes/external-message-converter.d.ts +1 -8
  238. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  239. package/dist/react/runtimes/external-message-converter.js +42 -44
  240. package/dist/react/runtimes/external-message-converter.js.map +1 -1
  241. package/dist/react/runtimes/useExternalStoreRuntime.d.ts +0 -1
  242. package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
  243. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +0 -1
  244. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
  245. package/dist/react/runtimes/useLocalRuntime.d.ts +2 -5
  246. package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
  247. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +0 -1
  248. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  249. package/dist/react/runtimes/useStreamingTiming.d.ts +0 -1
  250. package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
  251. package/dist/react/types/MessagePartComponentTypes.d.ts +6 -3
  252. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  253. package/dist/react/types/scopes/dataRenderers.d.ts +1 -1
  254. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
  255. package/dist/react/types/scopes/interactables.d.ts +4 -2
  256. package/dist/react/types/scopes/interactables.d.ts.map +1 -1
  257. package/dist/react/types/scopes/tools.d.ts +5 -3
  258. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  259. package/dist/react/types/store-augmentation.d.ts +1 -2
  260. package/dist/react/types/store-augmentation.d.ts.map +1 -1
  261. package/dist/react/utils/getMessageQuote.d.ts +0 -1
  262. package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
  263. package/dist/react/utils/groupParts.d.ts +2 -2
  264. package/dist/react/utils/groupParts.d.ts.map +1 -1
  265. package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
  266. package/dist/runtime/api/assistant-runtime.d.ts +0 -1
  267. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  268. package/dist/runtime/api/attachment-runtime.d.ts +0 -1
  269. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  270. package/dist/runtime/api/bindings.d.ts +0 -1
  271. package/dist/runtime/api/bindings.d.ts.map +1 -1
  272. package/dist/runtime/api/composer-runtime.d.ts +6 -4
  273. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  274. package/dist/runtime/api/message-part-runtime.d.ts +0 -1
  275. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  276. package/dist/runtime/api/message-runtime.d.ts +6 -16
  277. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  278. package/dist/runtime/api/message-runtime.js +1 -1
  279. package/dist/runtime/api/paths.d.ts.map +1 -1
  280. package/dist/runtime/api/thread-list-item-runtime.d.ts +0 -1
  281. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  282. package/dist/runtime/api/thread-list-runtime.d.ts +0 -1
  283. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  284. package/dist/runtime/api/thread-runtime.d.ts +3 -1
  285. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  286. package/dist/runtime/base/base-assistant-runtime-core.d.ts +0 -1
  287. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
  288. package/dist/runtime/base/base-composer-runtime-core.d.ts +0 -1
  289. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  290. package/dist/runtime/base/base-composer-runtime-core.js +17 -3
  291. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  292. package/dist/runtime/base/base-thread-runtime-core.d.ts +2 -4
  293. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  294. package/dist/runtime/base/base-thread-runtime-core.js +1 -1
  295. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +1 -5
  296. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  297. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +1 -0
  298. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  299. package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
  300. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +0 -1
  301. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
  302. package/dist/runtime/interfaces/composer-runtime-core.d.ts +2 -2
  303. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  304. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +0 -1
  305. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  306. package/dist/runtime/interfaces/thread-runtime-core.d.ts +2 -2
  307. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  308. package/dist/runtime/queue/external-thread-queue-adapter.d.ts +0 -1
  309. package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
  310. package/dist/runtime/queue/message-queue.d.ts +6 -4
  311. package/dist/runtime/queue/message-queue.d.ts.map +1 -1
  312. package/dist/runtime/queue/message-queue.js +1 -1
  313. package/dist/runtime/utils/auto-status.d.ts +0 -1
  314. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  315. package/dist/runtime/utils/chat-model-adapter.d.ts +0 -1
  316. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  317. package/dist/runtime/utils/external-store-message.d.ts +0 -1
  318. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  319. package/dist/runtime/utils/message-repository.d.ts +1 -5
  320. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  321. package/dist/runtime/utils/message-repository.js +3 -1
  322. package/dist/runtime/utils/message-repository.js.map +1 -1
  323. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +0 -1
  324. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
  325. package/dist/runtime/utils/streaming-timing.d.ts +5 -3
  326. package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
  327. package/dist/runtime/utils/thread-message-like.d.ts +2 -2
  328. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  329. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  330. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
  331. package/dist/runtimes/external-store/external-store-adapter.d.ts +2 -2
  332. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  333. package/dist/runtimes/external-store/external-store-runtime-core.d.ts +0 -1
  334. package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
  335. package/dist/runtimes/external-store/external-store-shared-options.d.ts +0 -1
  336. package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
  337. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +0 -1
  338. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  339. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +2 -0
  340. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  341. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +1 -1
  342. package/dist/runtimes/external-store/thread-message-converter.d.ts +0 -1
  343. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
  344. package/dist/runtimes/local/local-runtime-core.d.ts +0 -1
  345. package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
  346. package/dist/runtimes/local/local-runtime-options.d.ts +0 -1
  347. package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
  348. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +0 -1
  349. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
  350. package/dist/runtimes/local/local-thread-runtime-core.d.ts +5 -21
  351. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  352. package/dist/runtimes/local/local-thread-runtime-core.js +24 -15
  353. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  354. package/dist/runtimes/local/should-continue.d.ts +0 -1
  355. package/dist/runtimes/local/should-continue.d.ts.map +1 -1
  356. package/dist/runtimes/local/should-continue.js +2 -2
  357. package/dist/runtimes/local/should-continue.js.map +1 -1
  358. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +0 -1
  359. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
  360. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +1 -2
  361. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
  362. package/dist/runtimes/remote-thread-list/adapter/in-memory.js +5 -3
  363. package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -1
  364. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +0 -1
  365. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
  366. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +6 -4
  367. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
  368. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +0 -1
  369. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  370. package/dist/runtimes/remote-thread-list/types.d.ts +0 -1
  371. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  372. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +2 -2
  373. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  374. package/dist/store/clients/chain-of-thought-client.d.ts +0 -1
  375. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
  376. package/dist/store/clients/model-context-client.d.ts +0 -1
  377. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  378. package/dist/store/clients/no-op-composer-client.d.ts +0 -1
  379. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
  380. package/dist/store/clients/runtime-adapter.d.ts +0 -1
  381. package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
  382. package/dist/store/clients/suggestions.d.ts +0 -1
  383. package/dist/store/clients/suggestions.d.ts.map +1 -1
  384. package/dist/store/clients/thread-message-client.d.ts +0 -1
  385. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  386. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +0 -1
  387. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  388. package/dist/store/runtime-clients/composer-runtime-client.d.ts +0 -1
  389. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  390. package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
  391. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +0 -1
  392. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  393. package/dist/store/runtime-clients/message-runtime-client.d.ts +0 -1
  394. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  395. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +0 -1
  396. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  397. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +0 -1
  398. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  399. package/dist/store/runtime-clients/thread-runtime-client.d.ts +0 -1
  400. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  401. package/dist/store/runtime-clients/useSubscribable.d.ts +0 -1
  402. package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
  403. package/dist/store/scope-registration.d.ts +1 -2
  404. package/dist/store/scope-registration.d.ts.map +1 -1
  405. package/dist/store/scopes/attachment.d.ts +0 -1
  406. package/dist/store/scopes/attachment.d.ts.map +1 -1
  407. package/dist/store/scopes/chain-of-thought.d.ts +0 -1
  408. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
  409. package/dist/store/scopes/composer.d.ts +0 -1
  410. package/dist/store/scopes/composer.d.ts.map +1 -1
  411. package/dist/store/scopes/message.d.ts +6 -4
  412. package/dist/store/scopes/message.d.ts.map +1 -1
  413. package/dist/store/scopes/model-context.d.ts +0 -1
  414. package/dist/store/scopes/model-context.d.ts.map +1 -1
  415. package/dist/store/scopes/part.d.ts +0 -1
  416. package/dist/store/scopes/part.d.ts.map +1 -1
  417. package/dist/store/scopes/queue-item.d.ts.map +1 -1
  418. package/dist/store/scopes/suggestion.d.ts.map +1 -1
  419. package/dist/store/scopes/suggestions.d.ts +0 -1
  420. package/dist/store/scopes/suggestions.d.ts.map +1 -1
  421. package/dist/store/scopes/thread-list-item.d.ts +0 -1
  422. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  423. package/dist/store/scopes/thread.d.ts +4 -3
  424. package/dist/store/scopes/thread.d.ts.map +1 -1
  425. package/dist/store/scopes/threads.d.ts +0 -1
  426. package/dist/store/scopes/threads.d.ts.map +1 -1
  427. package/dist/subscribable/subscribable.d.ts +0 -1
  428. package/dist/subscribable/subscribable.d.ts.map +1 -1
  429. package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -1
  430. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
  431. package/dist/types/attachment.d.ts +1 -1
  432. package/dist/types/attachment.d.ts.map +1 -1
  433. package/dist/types/directive.d.ts +3 -2
  434. package/dist/types/directive.d.ts.map +1 -1
  435. package/dist/types/error.d.ts +15 -0
  436. package/dist/types/error.d.ts.map +1 -0
  437. package/dist/types/error.js +46 -0
  438. package/dist/types/error.js.map +1 -0
  439. package/dist/types/index.d.ts +2 -2
  440. package/dist/types/message.d.ts +70 -33
  441. package/dist/types/message.d.ts.map +1 -1
  442. package/dist/types/message.js.map +1 -1
  443. package/dist/types/quote.d.ts.map +1 -1
  444. package/dist/types/trigger.d.ts +0 -1
  445. package/dist/types/trigger.d.ts.map +1 -1
  446. package/dist/types/unsubscribe.d.ts.map +1 -1
  447. package/dist/utils/composite-context-provider.d.ts +1 -0
  448. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  449. package/dist/utils/id.d.ts.map +1 -1
  450. package/dist/utils/json/is-json-equal.d.ts.map +1 -1
  451. package/dist/utils/json/is-json.d.ts +0 -1
  452. package/dist/utils/json/is-json.d.ts.map +1 -1
  453. package/dist/utils/json/is-json.js +1 -1
  454. package/dist/utils/json/is-json.js.map +1 -1
  455. package/dist/utils/json/stable-stringify-tool-args.d.ts +7 -0
  456. package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -0
  457. package/dist/utils/json/stable-stringify-tool-args.js +32 -0
  458. package/dist/utils/json/stable-stringify-tool-args.js.map +1 -0
  459. package/dist/utils/text.d.ts +0 -1
  460. package/dist/utils/text.d.ts.map +1 -1
  461. package/package.json +12 -9
  462. package/src/adapters/attachment.test.ts +107 -0
  463. package/src/adapters/attachment.ts +20 -10
  464. package/src/adapters/index.ts +6 -1
  465. package/src/adapters/suggestion.test.ts +187 -0
  466. package/src/adapters/suggestion.ts +75 -1
  467. package/src/index.ts +15 -1
  468. package/src/internal.ts +16 -0
  469. package/src/model-context/tool.test.ts +110 -0
  470. package/src/model-context/tool.ts +31 -9
  471. package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +222 -0
  472. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +214 -7
  473. package/src/react/index.ts +2 -0
  474. package/src/react/model-context/define-mcp-toolkit.ts +39 -6
  475. package/src/react/model-context/define-toolkit.test.ts +107 -0
  476. package/src/react/primitive-hooks/useMessageError.test.ts +64 -0
  477. package/src/react/primitive-hooks/useMessageError.ts +19 -6
  478. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +3 -1
  479. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +48 -19
  480. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +111 -0
  481. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +13 -3
  482. package/src/react/runtimes/cloud/auiV0.ts +71 -2
  483. package/src/react/runtimes/external-message-converter.test.tsx +102 -0
  484. package/src/react/runtimes/external-message-converter.ts +35 -10
  485. package/src/runtime/base/base-composer-runtime-core.ts +26 -7
  486. package/src/runtime/utils/message-repository.ts +8 -3
  487. package/src/runtime/utils/thread-message-like.ts +2 -0
  488. package/src/runtimes/local/local-thread-runtime-core.test.ts +127 -3
  489. package/src/runtimes/local/local-thread-runtime-core.ts +25 -23
  490. package/src/runtimes/local/should-continue.ts +5 -2
  491. package/src/runtimes/remote-thread-list/adapter/in-memory.test.ts +14 -0
  492. package/src/runtimes/remote-thread-list/adapter/in-memory.ts +13 -5
  493. package/src/tests/MessageRepository.test.ts +26 -0
  494. package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +42 -0
  495. package/src/tests/attachment-adapters.test.ts +14 -2
  496. package/src/tests/auiV0Encode.test.ts +134 -1
  497. package/src/tests/base-composer-runtime-core-addAttachment.test.ts +79 -5
  498. package/src/tests/base-composer-runtime-core-send.test.ts +145 -0
  499. package/src/tests/thread-message-like.test.ts +40 -0
  500. package/src/types/attachment.ts +1 -0
  501. package/src/types/error.test.ts +122 -0
  502. package/src/types/error.ts +74 -0
  503. package/src/types/index.ts +1 -0
  504. package/src/types/message.ts +11 -3
  505. package/src/utils/json/is-json-equal.test.ts +84 -0
  506. package/src/utils/json/is-json.test.ts +123 -0
  507. package/src/utils/json/is-json.ts +1 -1
  508. package/src/utils/json/stable-stringify-tool-args.test.ts +105 -0
  509. package/src/utils/json/stable-stringify-tool-args.ts +70 -0
@@ -7,7 +7,6 @@ import { ComposerRuntimeEventCallback, ComposerRuntimeEventType, DictationState,
7
7
  import { ComposerRuntimePath } from "./paths.js";
8
8
  import { ComposerRuntimeCoreBinding, EditComposerRuntimeCoreBinding, ThreadComposerRuntimeCoreBinding } from "./bindings.js";
9
9
  import { AttachmentRuntime, EditComposerAttachmentRuntimeImpl, ThreadComposerAttachmentRuntimeImpl } from "./attachment-runtime.js";
10
-
11
10
  //#region src/runtime/api/composer-runtime.d.ts
12
11
  type BaseComposerState = {
13
12
  readonly canCancel: boolean;
@@ -28,7 +27,8 @@ type BaseComposerState = {
28
27
  * The currently quoted text, if any.
29
28
  * Undefined when no quote is set.
30
29
  */
31
- readonly quote: QuoteInfo | undefined; /** Messages waiting to be processed. Empty unless the `queue` capability is set. */
30
+ readonly quote: QuoteInfo | undefined;
31
+ /** Messages waiting to be processed. Empty unless the `queue` capability is set. */
32
32
  readonly queue: readonly QueueItemState[];
33
33
  };
34
34
  type ThreadComposerState = BaseComposerState & {
@@ -95,8 +95,10 @@ type ComposerRuntime = {
95
95
  /**
96
96
  * Cancel the current run. In edit mode, this will exit edit mode.
97
97
  */
98
- cancel(): void; /** Promote a queued message so it processes next. */
99
- steerQueueItem(queueItemId: string): void; /** Remove a queued message. */
98
+ cancel(): void;
99
+ /** Promote a queued message so it processes next. */
100
+ steerQueueItem(queueItemId: string): void;
101
+ /** Remove a queued message. */
100
102
  removeQueueItem(queueItemId: string): void;
101
103
  /**
102
104
  * Listens for changes to the composer state.
@@ -1 +1 @@
1
- {"version":3,"file":"composer-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/composer-runtime.ts"],"mappings":"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"}
1
+ {"version":3,"file":"composer-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/composer-runtime.ts"],"mappings":";;;;;;;;;;KA0CK;WACM;WACA;WACA;WACA;WAEA;WACA,MAAM;WACN,sBAAsB;WACtB,WAAW;WAEX;;;;;WAMA,WAAW;;;;;WAMX,OAAO;;WAGP,gBAAgB;;KAGf,sBAAsB;WACvB;;KAGC,oBAAoB;WACrB;WACA;WACA;;KAGC,gBAAgB,sBAAsB;KAuDtC;WACD,MAAM;WACN;;;;EAKT,YAAY;;;;;;;;;;EAWZ,cAAc,kBAAkB,OAAO,mBAAmB;;;;;EAM1D,QAAQ;;;;;EAMR,QAAQ,MAAM;;;;;;;;;;;;EAad,aAAa,WAAW;;;;EAKxB,SAAS;;;;EAKT,oBAAoB;;;;;EAMpB,KAAK,UAAU;;;;EAKf;;EAGA,eAAe;;EAGf,gBAAgB;;;;;EAMhB,UAAU,uBAAuB;;;;;EAMjC,qBAAqB,cAAc;;;;;EAMnC;;;;EAKA;;;;;EAMA,SAAS,OAAO;;;;EAKhB,YAAY,UAAU,0BACpB,OAAO,GACP,UAAU,6BAA6B,KACtC;;uBAGiB,+BAA+B;YAO7B,OAAO;MANlB,QAAI;eAIK;cAEE,OAAO;YAEnB;WAoBM,YAAY;EAErB,QAAQ;EAMR,aAAa,WAAW;EAMxB,cAAc,kBAAkB,OAAO,mBAAgB;EAMvD,SAAK;EAML,oBAAgB;EAMhB,KAAK,UAAU;EAMf;EAMA,eAAe;EAMf,gBAAgB;EAMhB,QAAQ,MAAM;EAMd;EAMA;EAMA,SAAS,OAAO;EAMhB,UAAU,uBAAoB;UAI7B;EAKD,YAAY,UAAU,0BAC3B,OAAO,GACP,UAAU,6BAA6B,KACtC;WAYa,qBAAqB,cAAc;;KAGzC,wBAAwB,KAClC;WAGS,MAAM;IAAwB;;WAC9B;EACT,YAAY;EAEZ,qBACE,cACC;IAAsB;;;cAGd,kCACH,+BACG;MAES,QACQ;IACxB;;MAIO;UAIH;cAEI,MAAM;EAgBF,YAAY;EAIrB,qBAAqB,cAAW;;KA0B7B,sBAAsB,KAChC;WAGS,MAAM;IAAwB;;WAC9B;EAET,YAAY;EACZ;EAEA,qBACE,cACC;IAAsB;;;cAGd,gCACH,+BACG;UAaD;MAXU,QACQ;IAAwB;;MAGzC;UAIH;cAEN,MAAM,gCACE;EAmBM;EAKA,YAAY;EAIrB;EAIA,qBAAqB,cAAW"}
@@ -5,7 +5,6 @@ import { SubscribableWithState } from "../../subscribable/subscribable.js";
5
5
  import { MessageStateBinding } from "./bindings.js";
6
6
  import { ThreadRuntimeCoreBinding } from "./thread-runtime.js";
7
7
  import { ToolResponse } from "assistant-stream";
8
-
9
8
  //#region src/runtime/api/message-part-runtime.d.ts
10
9
  type MessagePartState = (ThreadUserMessagePart | ThreadAssistantMessagePart) & {
11
10
  readonly status: MessagePartStatus | ToolCallMessagePartStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"message-part-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/message-part-runtime.ts"],"mappings":";;;;;;;;;KAeY,gBAAA,IACR,qBAAA,GACA,0BAAA;EAAA,SAEO,MAAA,EAAQ,iBAAA,GAAoB,yBAAA;AAAA;AAAA,KAGlC,0BAAA,GAA6B,qBAAA,CAChC,gBAAA,EACA,sBAAA;AAAA,KAGU,kBAAA;EACV,aAAA,CAAc,MAAA,QAAc,YAAA;EAC5B,cAAA,CAAe,OAAA;EACf,qBAAA,CAAsB,QAAA,EAAU,oBAAA;EAAA,SAEvB,IAAA,EAAM,sBAAA;EACf,QAAA,IAAY,gBAAA;EACZ,SAAA,CAAU,QAAA,eAAuB,WAAA;AAAA;AAAA,cAGtB,sBAAA,YAAkC,kBAAA;EAAA,QAMnC,cAAA;EAAA,QACA,UAAA;EAAA,QACA,SAAA;EAAA,IAPC,IAAA,IAAI,sBAAA;cAKL,cAAA,EAAgB,0BAAA,EAChB,UAAA,GAAa,mBAAA,cACb,SAAA,GAAY,wBAAA;EAAA,UAKZ,sBAAA;EAQH,QAAA,IAAQ,gBAAA;EAIR,aAAA,CAAc,MAAA,QAAc,YAAA;EA8B5B,cAAA,CAAe,OAAA;EAgBf,qBAAA,CAAsB,QAAA,EAAU,oBAAA;EAyBhC,SAAA,CAAU,QAAA,eAAoB,WAAA;AAAA"}
1
+ {"version":3,"file":"message-part-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/message-part-runtime.ts"],"mappings":";;;;;;;;KAeY,oBACR,wBACA;WAEO,QAAQ,oBAAoB;;KAGlC,6BAA6B,sBAChC,kBACA;KAGU;EACV,cAAc,cAAc;EAC5B,eAAe;EACf,sBAAsB,UAAU;WAEvB,MAAM;EACf,YAAY;EACZ,UAAU,uBAAuB;;cAGtB,kCAAkC;UAMnC;UACA;UACA;MAPC,QAAI;cAKL,gBAAgB,4BAChB,aAAa,iCACb,YAAY;YAKZ;EAQH,YAAQ;EAIR,cAAc,cAAc;EA8B5B,eAAe;EAgBf,sBAAsB,UAAU;EAyBhC,UAAU,uBAAoB"}
@@ -7,11 +7,11 @@ import { AttachmentRuntime, MessageAttachmentRuntimeImpl } from "./attachment-ru
7
7
  import { EditComposerRuntime, EditComposerRuntimeImpl } from "./composer-runtime.js";
8
8
  import { MessagePartRuntime, MessagePartRuntimeImpl } from "./message-part-runtime.js";
9
9
  import { ThreadRuntimeCoreBinding } from "./thread-runtime.js";
10
-
11
10
  //#region src/runtime/api/message-runtime.d.ts
12
11
  declare const toMessagePartStatus: (message: ThreadMessage, partIndex: number, part: ThreadUserMessagePart | ThreadAssistantMessagePart) => ToolCallMessagePartStatus;
13
12
  type MessageState = ThreadMessage & {
14
- readonly parentId: string | null; /** The position of this message in the thread (0 for first message) */
13
+ readonly parentId: string | null;
14
+ /** The position of this message in the thread (0 for first message) */
15
15
  readonly index: number;
16
16
  readonly isLast: boolean;
17
17
  readonly branchNumber: number;
@@ -38,15 +38,10 @@ type MessageRuntime = {
38
38
  * @deprecated This API is still under active development and might change without notice.
39
39
  */
40
40
  stopSpeaking(): void;
41
- submitFeedback({
42
- type
43
- }: {
41
+ submitFeedback({ type }: {
44
42
  type: "positive" | "negative";
45
43
  }): void;
46
- switchToBranch({
47
- position,
48
- branchId
49
- }: {
44
+ switchToBranch({ position, branchId }: {
50
45
  position?: "previous" | "next" | undefined;
51
46
  branchId?: string | undefined;
52
47
  }): void;
@@ -78,15 +73,10 @@ declare class MessageRuntimeImpl implements MessageRuntime {
78
73
  reload(reloadConfig?: ReloadConfig): void;
79
74
  speak(): void;
80
75
  stopSpeaking(): void;
81
- submitFeedback({
82
- type
83
- }: {
76
+ submitFeedback({ type }: {
84
77
  type: "positive" | "negative";
85
78
  }): void;
86
- switchToBranch({
87
- position,
88
- branchId
89
- }: {
79
+ switchToBranch({ position, branchId }: {
90
80
  position?: "previous" | "next" | undefined;
91
81
  branchId?: string | undefined;
92
82
  }): void;
@@ -1 +1 @@
1
- {"version":3,"file":"message-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/message-runtime.ts"],"mappings":";;;;;;;;;;;cAsCa,mBAAA,GACX,OAAA,EAAS,aAAA,EACT,SAAA,UACA,IAAA,EAAM,qBAAA,GAAwB,0BAAA,KAC7B,yBAAA;AAAA,KAkCS,YAAA,GAAe,aAAA;EAAA,SAChB,QAAA;WAEA,KAAA;EAAA,SACA,MAAA;EAAA,SAEA,YAAA;EAAA,SACA,WAAA;EA3BV;;;EAAA,SAgCU,MAAA,EAAQ,WAAW;AAAA;AAAA,KAKzB,YAAA;EACH,SAAA,GAAY,SAAS;AAAA;AAAA,KAGX,cAAA;EAAA,SACD,IAAA,EAAM,kBAAA;EAAA,SAEN,QAAA,EAAU,mBAAA;EAEnB,QAAA,IAAY,YAAA;EACZ,MAAA,WAAiB,OAAA;EACjB,MAAA,CAAO,MAAA,GAAS,YAAA;EA5BS;;;EAgCzB,KAAA;EA1BS;;;EA8BT,YAAA;EACA,cAAA;IAAiB;EAAA;IAAU,IAAA;EAAA;EAC3B,cAAA;IACE,QAAA;IACA;EAAA;IAEA,QAAA;IACA,QAAA;EAAA;EAEF,oBAAA;EAEA,SAAA,CAAU,QAAA,eAAuB,WAAA;EAEjC,qBAAA,CAAsB,GAAA,WAAc,kBAAA;EACpC,0BAAA,CAA2B,UAAA,WAAqB,kBAAA;EAEhD,oBAAA,CAAqB,GAAA,WAAc,iBAAA;IAAsB,MAAA;EAAA;AAAA;AAAA,cAG9C,kBAAA,YAA8B,cAAA;EAAA,QAM/B,KAAA;EAAA,QACA,cAAA;EAAA,IANC,IAAA,IAAI,kBAAA;cAKL,KAAA,EAAO,mBAAA,EACP,cAAA,EAAgB,wBAAA;EAAA,UAkBhB,sBAAA;EAAA,SAgBM,QAAA,EAAQ,uBAAA;EAAA,QAEhB,2BAAA;EAMD,QAAA,IAAQ,aAAA;IAAA;;;;;;;EAIR,MAAA,WAAM,OAAA;EAKN,MAAA,CAAO,YAAA,GAAc,YAAA;EAkBrB,KAAA;EAKA,YAAA;EAUA,cAAA;IAAiB;EAAA;IAAU,IAAA;EAAA;EAQ3B,cAAA;IACL,QAAA;IACA;EAAA;IAEA,QAAA;IACA,QAAA;EAAA;EAsBK,oBAAA;EAIA,SAAA,CAAU,QAAA,eAAoB,WAAA;EAI9B,qBAAA,CAAsB,GAAA,WAAW,sBAAA;EAmBjC,0BAAA,CAA2B,UAAA,WAAkB,sBAAA;EA0B7C,oBAAA,CAAqB,GAAA,WAAW,4BAAA;AAAA"}
1
+ {"version":3,"file":"message-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/message-runtime.ts"],"mappings":";;;;;;;;;;cAsCa,sBACX,SAAS,eACT,mBACA,MAAM,wBAAwB,+BAC7B;KAkCS,eAAe;WAChB;;WAEA;WACA;WAEA;WACA;;;;WAKA,QAAQ;;KAKd;EACH,YAAY;;KAGF;WACD,MAAM;WAEN,UAAU;EAEnB,YAAY;EACZ,iBAAiB;EACjB,OAAO,SAAS;;;;EAIhB;;;;EAIA;EACA,iBAAiB;IAAU;;EAC3B,iBACE,UACA;IAEA;IACA;;EAEF;EAEA,UAAU,uBAAuB;EAEjC,sBAAsB,cAAc;EACpC,2BAA2B,qBAAqB;EAEhD,qBAAqB,cAAc;IAAsB;;;cAG9C,8BAA8B;UAM/B;UACA;MANC,QAAI;cAKL,OAAO,qBACP,gBAAgB;YAkBhB;WAgBM,UAAQ;UAEhB;EAMD,YAAQ;;;;;;;;EAIR,iBAAM;EAKN,OAAO,eAAc;EAkBrB;EAKA;EAUA,iBAAiB;IAAU;;EAQ3B,iBACL,UACA;IAEA;IACA;;EAsBK;EAIA,UAAU,uBAAoB;EAI9B,sBAAsB,cAAW;EAmBjC,2BAA2B,qBAAkB;EA0B7C,qBAAqB,cAAW"}
@@ -1,5 +1,5 @@
1
- import { symbolInnerMessage } from "../utils/external-store-message.js";
2
1
  import { getThreadMessageText } from "../../utils/text.js";
2
+ import { symbolInnerMessage } from "../utils/external-store-message.js";
3
3
  import { NestedSubscriptionSubject, SKIP_UPDATE, ShallowMemoizeSubject } from "../../subscribable/subscribable.js";
4
4
  import { MessageAttachmentRuntimeImpl } from "./attachment-runtime.js";
5
5
  import { EditComposerRuntimeImpl } from "./composer-runtime.js";
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","names":[],"sources":["../../../src/runtime/api/paths.ts"],"mappings":";KAAY,yBAAA;EAAA,SACD,GAAA;EAAA,SACA,cAAA;IAAA,SACM,IAAA;EAAA;IAAA,SACA,IAAA;IAAA,SAAwB,KAAA;EAAA;IAAA,SACxB,IAAA;IAAA,SAA+B,KAAA;EAAA;IAAA,SAC/B,IAAA;IAAA,SAA2B,QAAA;EAAA;AAAA;AAAA,KAGhC,iBAAA;EAAA,SACD,GAAA;EAAA,SACA,cAAA;IAAA,SACM,IAAA;EAAA;IAAA,SAEA,IAAA;IAAA,SACA,QAAA;EAAA;AAAA;AAAA,KAIL,kBAAA,GAAqB,iBAAiB;EAAA,SACvC,eAAA;IAAA,SACM,IAAA;IAAA,SAA4B,SAAA;EAAA;IAAA,SAC5B,IAAA;IAAA,SAAwB,KAAA;EAAA;AAAA;AAAA,KAG7B,sBAAA,GAAyB,kBAAkB;EAAA,SAC5C,mBAAA;IAAA,SACM,IAAA;IAAA,SAAwB,KAAA;EAAA;IAAA,SACxB,IAAA;IAAA,SAA6B,UAAA;EAAA;AAAA;AAAA,KAGlC,qBAAA,KACP,kBAAA;EAAA,SACU,gBAAA;AAAA,MAEV,iBAAiB;EAAA,SACP,gBAAA;AAAA;EAAA,SAGJ,kBAAA;IAAA,SAEM,IAAA;IAAA,SACA,KAAA;EAAA;IAAA,SAGA,IAAA;IAAA,SACA,KAAA;EAAA;IAAA,SAGA,IAAA;IAAA,SACA,KAAA;EAAA;AAAA;AAAA,KAIL,mBAAA,IACP,iBAAA;EAAA,SACU,cAAA;AAAA,MAEV,kBAAkB;EAAA,SACR,cAAA;AAAA"}
1
+ {"version":3,"file":"paths.d.ts","names":[],"sources":["../../../src/runtime/api/paths.ts"],"mappings":";KAAY;WACD;WACA;aACM;;aACA;aAAwB;;aACxB;aAA+B;;aAC/B;aAA2B;;;KAGhC;WACD;WACA;aACM;;aAEA;aACA;;;KAIL,qBAAqB;WACtB;aACM;aAA4B;;aAC5B;aAAwB;;;KAG7B,yBAAyB;WAC1B;aACM;aAAwB;;aACxB;aAA6B;;;KAGlC,0BACP;WACU;MAEV;WACU;;WAGJ;aAEM;aACA;;aAGA;aACA;;aAGA;aACA;;;KAIL,uBACP;WACU;MAEV;WACU"}
@@ -4,7 +4,6 @@ import { ThreadListItemStatus } from "../interfaces/thread-list-runtime-core.js"
4
4
  import { SubscribableWithState } from "../../subscribable/subscribable.js";
5
5
  import { ThreadListItemState } from "./bindings.js";
6
6
  import { ThreadListRuntimeCoreBinding } from "./thread-list-runtime.js";
7
-
8
7
  //#region src/runtime/api/thread-list-item-runtime.d.ts
9
8
  type ThreadListItemEventPayload = {
10
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list-item-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-list-item-runtime.ts"],"mappings":";;;;;;;;KAKY,0BAAA;;;;AAAZ;;EAME,UAAA,EAAY,MAAA;EAMQ;;;;;EAApB,YAAA,EAAc,MAAM;AAAA;AAAA,KAGV,uBAAA,SAAgC,0BAA0B;AAAA,KAE1D,2BAAA,WAAsC,uBAAA,KAChD,OAAA,EAAS,0BAAA,CAA2B,CAAA;AAAA,KAQ1B,qBAAA;EAAA,SACD,IAAA,EAAM,yBAAA;EACf,QAAA,IAAY,mBAAA;EAEZ,UAAA,IAAc,OAAA;IAAU,QAAA;IAAkB,UAAA;EAAA;EAC1C,aAAA,IAAiB,OAAA;EAEjB,QAAA,CAAS,OAAA;IAAY,SAAA;EAAA,IAAwB,OAAA;EAC7C,MAAA,CAAO,QAAA,WAAmB,OAAA;EAC1B,YAAA,CAAa,MAAA,EAAQ,MAAA,gCAAsC,OAAA;EAC3D,OAAA,IAAW,OAAA;EACX,SAAA,IAAa,OAAA;EACb,MAAA,IAAU,OAAA;EAEV,MAAA;EAEA,SAAA,CAAU,QAAA,eAAuB,WAAA;EAEjC,WAAA,WAAsB,uBAAA,EACpB,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,2BAAA,CAA4B,CAAA,IACrC,WAAA;EAEH,qBAAA,IAAyB,qBAAA;AAAA;AAAA,KAGf,0BAAA,GAA6B,qBAAA,CACvC,mBAAA,EACA,yBAAA;AAAA,cAGW,yBAAA,YAAqC,qBAAA;EAAA,QAMtC,KAAA;EAAA,QACA,kBAAA;EAAA,IANC,IAAA,IAAI,yBAAA;cAKL,KAAA,EAAO,0BAAA,EACP,kBAAA,EAAoB,4BAAA;EAAA,UAKpB,sBAAA;EAeH,QAAA,IAAY,mBAAA;EAIZ,QAAA,CAAS,OAAA;IAAY,SAAA;EAAA,IAAwB,OAAA;EAK7C,MAAA,CAAO,QAAA,WAAmB,OAAA;EAM1B,YAAA,CACL,MAAA,EAAQ,MAAA,gCACP,OAAA;EAWI,OAAA,IAAW,OAAA;EAMX,SAAA,IAAa,OAAA;EAMb,MAAA,IAAU,OAAA;EAMV,UAAA,IAAc,OAAA;IACnB,QAAA;IACA,UAAA;EAAA;EAMK,aAAA,IAAiB,OAAA;EAKjB,WAAA,WAAsB,uBAAA,EAC3B,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,2BAAA,CAA4B,CAAA,IAAE,WAAA;EAkBnC,SAAA,CAAU,QAAA,eAAuB,WAAA;EAIjC,MAAA;EAMA,qBAAA,IAAyB,qBAAA;AAAA"}
1
+ {"version":3,"file":"thread-list-item-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-list-item-runtime.ts"],"mappings":";;;;;;;KAKY;;;;;;EAMV,YAAY;;;;;;EAMZ,cAAc;;KAGJ,gCAAgC;KAEhC,4BAA4B,UAAU,4BAChD,SAAS,2BAA2B;KAQ1B;WACD,MAAM;EACf,YAAY;EAEZ,cAAc;IAAU;IAAkB;;EAC1C,iBAAiB;EAEjB,SAAS;IAAY;MAAwB;EAC7C,OAAO,mBAAmB;EAC1B,aAAa,QAAQ,sCAAsC;EAC3D,WAAW;EACX,aAAa;EACb,UAAU;EAEV;EAEA,UAAU,uBAAuB;EAEjC,YAAY,UAAU,yBACpB,OAAO,GACP,UAAU,4BAA4B,KACrC;EAEH,yBAAyB;;KAGf,6BAA6B,sBACvC,qBACA;cAGW,qCAAqC;UAMtC;UACA;MANC,QAAI;cAKL,OAAO,4BACP,oBAAoB;YAKpB;EAeH,YAAY;EAIZ,SAAS;IAAY;MAAwB;EAK7C,OAAO,mBAAmB;EAM1B,aACL,QAAQ,sCACP;EAWI,WAAW;EAMX,aAAa;EAMb,UAAU;EAMV,cAAc;IACnB;IACA;;EAMK,iBAAiB;EAKjB,YAAY,UAAU,yBAC3B,OAAO,GACP,UAAU,4BAA4B,KAAE;EAkBnC,UAAU,uBAAuB;EAIjC;EAMA,yBAAyB"}
@@ -3,7 +3,6 @@ import { ThreadListRuntimeCore } from "../interfaces/thread-list-runtime-core.js
3
3
  import { ThreadListItemState } from "./bindings.js";
4
4
  import { ThreadListItemRuntime, ThreadListItemRuntimeImpl } from "./thread-list-item-runtime.js";
5
5
  import { ThreadListItemRuntimeBinding, ThreadRuntime, ThreadRuntimeCoreBinding } from "./thread-runtime.js";
6
-
7
6
  //#region src/runtime/api/thread-list-runtime.d.ts
8
7
  type ThreadListState = {
9
8
  readonly mainThreadId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-list-runtime.ts"],"mappings":";;;;;;;KAwBY,eAAA;EAAA,SACD,YAAA;EAAA,SACA,WAAA;EAAA,SACA,SAAA;EAAA,SACA,iBAAA;EAAA,SACA,SAAA;EAAA,SACA,aAAA;EAAA,SACA,OAAA;EAAA,SACA,WAAA,EAAa,QAAA,CACpB,MAAA,SAAe,IAAA,CAAK,mBAAA;AAAA;AAAA,KAIZ,iBAAA;EACV,QAAA,IAAY,eAAA;EAEZ,SAAA,CAAU,QAAA,eAAuB,WAAA;EAAA,SAExB,IAAA,EAAM,aAAA;EACf,OAAA,CAAQ,QAAA,WAAmB,aAAA;EAAA,SAElB,QAAA,EAAU,qBAAA;EACnB,WAAA,CAAY,QAAA,WAAmB,qBAAA;EAC/B,cAAA,CAAe,GAAA,WAAc,qBAAA;EAC7B,sBAAA,CAAuB,GAAA,WAAc,qBAAA;EAErC,cAAA,CACE,QAAA,UACA,OAAA;IAAY,SAAA;EAAA,IACX,OAAA;EACH,iBAAA,IAAqB,OAAA;EAErB,qBAAA,IAAyB,OAAA;EACzB,MAAA,IAAU,OAAA;EACV,QAAA,IAAY,OAAA;AAAA;AAAA,KAsCF,4BAAA,GAA+B,qBAAqB;AAAA,cAEnD,qBAAA,YAAiC,iBAAA;EAAA,QAGlC,KAAA;EAAA,QACA,eAAA;EAAA,QAHF,SAAA;cAEE,KAAA,EAAO,4BAAA,EACP,eAAA,QACN,OAAA,EAAS,wBAAA,EACT,qBAAA,EAAuB,4BAAA,KACpB,aAAA;EAAA,UAuCG,sBAAA;EAcH,cAAA,CACL,QAAA,UACA,OAAA;IAAY,SAAA;EAAA,IACX,OAAA;EAII,iBAAA,IAAqB,OAAA;EAIrB,qBAAA,IAAyB,OAAA;EAIzB,MAAA,IAAU,OAAA;EAIV,QAAA,IAAY,OAAA;EAIZ,QAAA,IAAY,eAAA;EAIZ,SAAA,CAAU,QAAA,eAAuB,WAAA;EAAA,QAIhC,0BAAA;EAAA,SAEQ,IAAA,EAAM,aAAA;EAAA,IAEX,QAAA,IAAQ,yBAAA;EAIZ,OAAA,CAAQ,QAAA,WAAgB,aAAA;EAcxB,cAAA,CAAe,GAAA,WAAW,yBAAA;EAgB1B,sBAAA,CAAuB,GAAA,WAAW,yBAAA;EAmBlC,WAAA,CAAY,QAAA,WAAgB,yBAAA;AAAA"}
1
+ {"version":3,"file":"thread-list-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-list-runtime.ts"],"mappings":";;;;;;KAwBY;WACD;WACA;WACA;WACA;WACA;WACA;WACA;WACA,aAAa,SACpB,eAAe,KAAK;;KAIZ;EACV,YAAY;EAEZ,UAAU,uBAAuB;WAExB,MAAM;EACf,QAAQ,mBAAmB;WAElB,UAAU;EACnB,YAAY,mBAAmB;EAC/B,eAAe,cAAc;EAC7B,uBAAuB,cAAc;EAErC,eACE,kBACA;IAAY;MACX;EACH,qBAAqB;EAErB,yBAAyB;EACzB,UAAU;EACV,YAAY;;KAsCF,+BAA+B;cAE9B,iCAAiC;UAGlC;UACA;UAHF;cAEE,OAAO,8BACP,uBACN,SAAS,0BACT,uBAAuB,iCACpB;YAuCG;EAcH,eACL,kBACA;IAAY;MACX;EAII,qBAAqB;EAIrB,yBAAyB;EAIzB,UAAU;EAIV,YAAY;EAIZ,YAAY;EAIZ,UAAU,uBAAuB;UAIhC;WAEQ,MAAM;MAEX,YAAQ;EAIZ,QAAQ,mBAAgB;EAcxB,eAAe,cAAW;EAgB1B,uBAAuB,cAAW;EAmBlC,YAAY,mBAAgB"}
@@ -14,8 +14,10 @@ import { Subscribable, SubscribableWithState } from "../../subscribable/subscrib
14
14
  import { ThreadListItemState } from "./bindings.js";
15
15
  import { ThreadComposerRuntime, ThreadComposerRuntimeImpl } from "./composer-runtime.js";
16
16
  import { MessageRuntime, MessageRuntimeImpl } from "./message-runtime.js";
17
+ import "../../store/index.js";
18
+ import "../../internal.js";
19
+ import "../../index.js";
17
20
  import { ReadonlyJSONValue } from "assistant-stream/utils";
18
-
19
21
  //#region src/runtime/api/thread-runtime.d.ts
20
22
  type CreateStartRunConfig = {
21
23
  parentId: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"thread-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-runtime.ts"],"mappings":"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"}
1
+ {"version":3,"file":"thread-runtime.d.ts","names":[],"sources":["../../../src/runtime/api/thread-runtime.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;KA8CY;EACV;EACA;EACA,YAAY;;KAGF,wBAAwB;EAClC,UACE,SAAS,wBACN,eAAe;;KAoBV;EAGN;EACA;EACA,OAAO;EACP,SAAS;EACT,cAAc;EACd,WAAW;EACX,YAAY;EACZ,YAAY;EACZ;;KAiCM,2BAA2B,sBACrC,mBACA;EAEA,eAAe,uBAAuB;;KAG5B,+BAA+B,sBACzC,qBACA;KAGU;;;;;WAKD;;;;;;WAOA,UAAU;;;;WAKV;;;;WAKA;;;;WAKA;;;;WAKA,cAAc;;;;WAKd,mBAAmB;;;;;;WAOnB,OAAO;;;;WAKP,sBAAsB;;;;WAKtB;;;;WAKA,QAAQ;WAER,OAAO;;cAGL,iBACX,SAAS,mBACT,qBAAqB,wBACpB;KAsBS;;;;WAID,MAAM;;;;WAKN,UAAU;;;;EAKnB,YAAY;;;;;;;;;;;;;;;;;EAkBZ,OAAO,SAAS;EAEhB,cAAc,2BAA2B;;;;;EAMzC,SAAS,QAAQ;;;;;EAMjB,UAAU,QAAQ;;;;;;;EAQlB;;;;;;;EAQA,oBAAoB;EAEpB,UAAU,uBAAuB;EACjC;EACA,mBAAmB;EAEnB,UAAU;EACV,OAAO,YAAY;;;;;;EAOnB,MAAM,2BAA2B;EAEjC,kBAAkB,cAAc;EAChC,eAAe,oBAAoB;;;;EAKnC;EAEA;EACA;EACA;EACA,qBAAqB,uBAAuB;EAC5C;EACA;EAEA,YAAY,UAAU,wBACpB,OAAO,GACP,UAAU,2BAA2B,KACpC;;cAGQ,6BAA6B;MAC7B,QAAI;MAIJ,4BAJI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBArPR;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;0CAgD+B;;qBA8MnB;;mBADF;cAKf,eAAe,0BACf,uBAAuB;YA0Cf;WA0BM,UAAQ;EAEjB,YAAQ;EAIR,OAAO,SAAS;EAQhB,cAAc,2BAAiB;EAI/B,UAAU,uBAAoB;EAI9B,mBAAe;EAIf,SAAS,QAAQ;EAIjB,UAAU,QAAQ;EAIlB;EAIA,oBAAoB;EAIpB;EAIA;EAIA;EAIA;EAIA;EAIA,qBAAqB,uBAAoB;EAIzC;EAIA;EAIA,UAAM;EAIN,OAAO,MAAM;EAIb,MAAM,2BAA2B;EAIjC,kBAAkB,cAAW;EAsB7B,eAAe,oBAAiB;UAW/B;UA2CA;EAKD,YAAY,UAAU,wBAC3B,OAAO,GACP,UAAU,2BAA2B,KACpC"}
@@ -3,7 +3,6 @@ import { ModelContextProvider } from "../../model-context/types.js";
3
3
  import { ThreadListRuntimeCore } from "../interfaces/thread-list-runtime-core.js";
4
4
  import { AssistantRuntimeCore } from "../interfaces/assistant-runtime-core.js";
5
5
  import { CompositeContextProvider } from "../../utils/composite-context-provider.js";
6
-
7
6
  //#region src/runtime/base/base-assistant-runtime-core.d.ts
8
7
  declare abstract class BaseAssistantRuntimeCore implements AssistantRuntimeCore {
9
8
  protected readonly _contextProvider: CompositeContextProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"base-assistant-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-assistant-runtime-core.ts"],"mappings":";;;;;;;uBAMsB,wBAAA,YAAoC,oBAAA;EAAA,mBACrC,gBAAA,EAAgB,wBAAA;EAAA,aACf,OAAA,IAAW,qBAAA;EAExB,4BAAA,CACL,QAAA,EAAU,oBAAA,GACT,WAAA;EAII,uBAAA,IAA2B,oBAAA;AAAA"}
1
+ {"version":3,"file":"base-assistant-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-assistant-runtime-core.ts"],"mappings":";;;;;;uBAMsB,oCAAoC;qBACrC,kBAAgB;eACf,WAAW;EAExB,6BACL,UAAU,uBACT;EAII,2BAA2B"}
@@ -6,7 +6,6 @@ import { QuoteInfo } from "../../types/quote.js";
6
6
  import { QueueItemState } from "../../store/scopes/queue-item.js";
7
7
  import { ComposerRuntimeCore, ComposerRuntimeEventCallback, ComposerRuntimeEventPayload, ComposerRuntimeEventType, DictationState, SendOptions } from "../interfaces/composer-runtime-core.js";
8
8
  import { BaseSubscribable } from "../../subscribable/subscribable.js";
9
-
10
9
  //#region src/runtime/base/base-composer-runtime-core.d.ts
11
10
  declare abstract class BaseComposerRuntimeCore extends BaseSubscribable implements ComposerRuntimeCore {
12
11
  readonly isEditing = true;
@@ -1 +1 @@
1
- {"version":3,"file":"base-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-composer-runtime-core.ts"],"mappings":";;;;;;;;;;uBAkCsB,uBAAA,SACZ,gBAAA,YACG,mBAAA;EAAA,SAEK,SAAA;EAAA,mBAEG,oBAAA,IAAwB,iBAAA;EAAA,mBACxB,mBAAA,IAAuB,gBAAA;EAAA,UAEhC,0BAAA;IACI,QAAA;MAAa,MAAA,GAAS,MAAA;IAAA;EAAA,GAClC,OAAA,EAAS,CAAA,EAAG,gBAAA,EAAkB,MAAA,gCAAsC,CAAA;EAAA,IAW3D,gBAAA;EAAA,QAIH,YAAA;EAAA,IACG,WAAA,aAAW,UAAA;EAAA,UAIZ,cAAA,CAAe,KAAA,WAAgB,UAAA;EAAA,aAKrB,SAAA;EAAA,aACA,OAAA;EAAA,IAET,OAAA;EAAA,QAIH,KAAA;EAAA,IAEJ,IAAA;EAAA,QAII,KAAA;EAAA,IAEJ,IAAA;EAAA,QAII,UAAA;EAAA,IAEJ,SAAA,IAAS,SAAA;EAAA,QAIL,MAAA;EAAA,IAEJ,KAAA,IAAK,SAAA;EAIF,QAAA,CAAS,KAAA,EAAO,SAAA;EAOhB,OAAA,CAAQ,KAAA;EAaR,OAAA,CAAQ,IAAA,EAAM,WAAA;EAOd,YAAA,CAAa,SAAA,EAAW,SAAA;EAAA,QAOvB,wBAAA;EAAA,QAMM,mBAAA;EAQD,KAAA,IAAK,OAAA;EAoBL,gBAAA,IAAgB,OAAA;EAOhB,IAAA,CAAK,OAAA,GAAU,WAAA,GAAW,OAAA;EAuChC,MAAA;EAAA,IAII,KAAA,aAAkB,cAAA;EAItB,cAAA,CAAe,YAAA;EACf,eAAA,CAAgB,YAAA;EAAA,mBAEJ,UAAA,CACjB,OAAA,EAAS,IAAA,CAAK,aAAA,4BACd,OAAA,GAAU,WAAA;EAAA,mBAEO,YAAA;EAEb,aAAA,CAAc,gBAAA,EAAkB,IAAA,GAAO,gBAAA,GAAgB,OAAA;EAAA,QAqHrD,2BAAA;EAqBF,gBAAA,CAAiB,YAAA,WAAoB,OAAA;EAAA,QAenC,UAAA;EAAA,QACA,iBAAA;EAAA,QACA,sBAAA;EAAA,QACA,kBAAA;EAAA,QACA,mBAAA;EAAA,QACA,0BAAA;EAAA,QACA,yBAAA;EAAA,QACA,oBAAA;EAAA,IAEG,SAAA,IAAa,cAAA;EAAA,QAIhB,gBAAA;EAUD,cAAA;EA6FA,aAAA;EAAA,QAUC,iBAAA;EAAA,QAuBA,iBAAA;EAAA,UAKE,uBAAA,WAAkC,wBAAA,EAC1C,KAAA,EAAO,CAAA,EACP,OAAA,EAAS,2BAAA,CAA4B,CAAA;EAQhC,WAAA,WAAsB,wBAAA,EAC3B,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,4BAAA,CAA6B,CAAA;AAAA"}
1
+ {"version":3,"file":"base-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-composer-runtime-core.ts"],"mappings":";;;;;;;;;uBAkCsB,gCACZ,4BACG;WAEK;qBAEG,wBAAwB;qBACxB,uBAAuB;YAEhC,2BACR;IAAY;MAAa,SAAS;;KAClC,SAAS,GAAG,kBAAkB,sCAAsC;MAW3D;UAIH;MACG,wBAAW;YAIZ,eAAe,gBAAgB;eAKrB;eACA;MAET;UAIH;MAEJ;UAII;MAEJ;UAII;MAEJ,aAAS;UAIL;MAEJ,SAAK;EAIF,SAAS,OAAO;EAOhB,QAAQ;EAaR,QAAQ,MAAM;EAOd,aAAa,WAAW;UAOvB;UAMM;EAQD,SAAK;EAoBL,oBAAgB;EAOhB,KAAK,UAAU,cAAW;EAqDhC;MAII,kBAAkB;EAItB,eAAe;EACf,gBAAgB;qBAEJ,WACjB,SAAS,KAAK,yCACd,UAAU;qBAEO;EAEb,cAAc,kBAAkB,OAAO,mBAAgB;UA0HrD;EAqBF,iBAAiB,uBAAoB;UAenC;UACA;UACA;UACA;UACA;UACA;UACA;UACA;MAEG,aAAa;UAIhB;EAUD;EA6FA;UAUC;UAuBA;YAKE,wBAAwB,UAAU,0BAC1C,OAAO,GACP,SAAS,4BAA4B;EAQhC,YAAY,UAAU,0BAC3B,OAAO,GACP,UAAU,6BAA6B"}
@@ -116,10 +116,23 @@ var BaseComposerRuntimeCore = class extends BaseSubscribable {
116
116
  if (!adapter) throw new Error("Attachments are not supported");
117
117
  return await adapter.send(a);
118
118
  })) : [];
119
+ const originalAttachments = this.attachments;
119
120
  const text = this.text;
120
121
  const quote = this._quote;
121
122
  this._quote = void 0;
122
123
  this._emptyTextAndAttachments();
124
+ let resolvedAttachments;
125
+ try {
126
+ resolvedAttachments = await attachments;
127
+ } catch (e) {
128
+ if (this.isEmpty && this._quote === void 0) {
129
+ this._attachments = originalAttachments;
130
+ this._text = text;
131
+ this._quote = quote;
132
+ this._notifySubscribers();
133
+ }
134
+ throw e;
135
+ }
123
136
  const message = {
124
137
  createdAt: /* @__PURE__ */ new Date(),
125
138
  role: this.role,
@@ -127,7 +140,7 @@ var BaseComposerRuntimeCore = class extends BaseSubscribable {
127
140
  type: "text",
128
141
  text
129
142
  }] : [],
130
- attachments: await attachments,
143
+ attachments: resolvedAttachments,
131
144
  runConfig: this.runConfig,
132
145
  metadata: { custom: { ...quote ? { quote } : {} } }
133
146
  };
@@ -209,13 +222,14 @@ var BaseComposerRuntimeCore = class extends BaseSubscribable {
209
222
  ...lastAttachment,
210
223
  status: {
211
224
  type: "incomplete",
212
- reason: "error"
225
+ reason: "error",
226
+ message: e instanceof Error ? e.message : String(e)
213
227
  }
214
228
  });
215
229
  this._safeEmitAttachmentAddError("adapter-error", e instanceof Error ? e.message : String(e), lastAttachment?.id, e instanceof Error ? e : void 0);
216
230
  throw e;
217
231
  }
218
- if (lastAttachment?.status.type === "incomplete" && lastAttachment.status.reason === "error") this._safeEmitAttachmentAddError("adapter-error", "Attachment upload did not complete successfully.", lastAttachment?.id);
232
+ if (lastAttachment?.status.type === "incomplete" && lastAttachment.status.reason === "error") this._safeEmitAttachmentAddError("adapter-error", lastAttachment.status.message ?? "Attachment upload did not complete successfully.", lastAttachment.id);
219
233
  else this._notifyEventSubscribers("attachmentAdd", {});
220
234
  }
221
235
  _safeEmitAttachmentAddError(reason, message, attachmentId, error) {
@@ -1 +1 @@
1
- {"version":3,"file":"base-composer-runtime-core.js","names":["Attachment","CompleteAttachment","CreateAttachment","PendingAttachment","MessageRole","AppendMessage","QuoteInfo","Unsubscribe","RunConfig","BaseSubscribable","AttachmentAdapter","fileMatchesAccept","AttachmentAddErrorReason","ComposerRuntimeCore","ComposerRuntimeEventCallback","ComposerRuntimeEventPayload","ComposerRuntimeEventType","DictationState","SendOptions","DictationAdapter","EMPTY_QUEUE_ITEMS","QueueItemState","generateId","isAttachmentComplete","a","status","type","BaseComposerRuntimeCore","isEditing","getAttachmentAdapter","getDictationAdapter","enrichWithComposerMetadata","metadata","custom","Record","message","T","composerMetadata","attachmentAccept","accept","_attachments","attachments","setAttachments","value","_notifySubscribers","canCancel","canSend","isEmpty","text","trim","length","_text","_role","role","_runConfig","runConfig","_quote","undefined","quote","setQuote","setText","_dictation","_dictationBaseText","_currentInterimText","inputDisabled","setRole","setRunConfig","_emptyTextAndAttachments","_onClearAttachments","adapter","pending","filter","Promise","all","map","remove","reset","Object","keys","task","clearAttachments","send","options","_dictationSession","cancel","_cleanupDictation","Error","result","Omit","createdAt","Date","content","handleSend","_notifyEventSubscribers","handleCancel","queue","steerQueueItem","_queueItemId","removeQueueItem","addAttachment","fileOrAttachment","File","name","contentType","err","_safeEmitAttachmentAddError","id","upsertAttachment","idx","findIndex","attachment","slice","lastAttachment","promiseOrGenerator","add","file","Symbol","asyncIterator","r","e","reason","String","hasError","attachmentId","error","subscriberError","console","removeAttachment","index","Session","_dictationUnsubscribes","_dictationSessionIdCounter","_activeDictationSessionId","_isCleaningDictation","dictation","_isActiveSession","sessionId","session","startDictation","unsub","oldSession","stop","catch","disableInputDuringDictation","listen","unsubSpeech","onSpeech","isFinal","needsSeparator","endsWith","transcript","separator","_","rest","push","unsubStart","onSpeechStart","unsubEnd","onSpeechEnd","statusInterval","setInterval","clearInterval","stopDictation","finally","isStaleSession","_eventSubscribers","Map","Set","payload","event","E","subscribers","get","callback","unstable_on","wrapped","set","delete"],"sources":["../../../src/runtime/base/base-composer-runtime-core.ts"],"sourcesContent":["import type {\n Attachment,\n CompleteAttachment,\n CreateAttachment,\n PendingAttachment,\n} from \"../../types/attachment\";\nimport type { MessageRole, AppendMessage } from \"../../types/message\";\nimport type { QuoteInfo } from \"../../types/quote\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport type { RunConfig } from \"../../types/message\";\nimport { BaseSubscribable } from \"../../subscribable/subscribable\";\nimport {\n type AttachmentAdapter,\n fileMatchesAccept,\n} from \"../../adapters/attachment\";\nimport type {\n AttachmentAddErrorReason,\n ComposerRuntimeCore,\n ComposerRuntimeEventCallback,\n ComposerRuntimeEventPayload,\n ComposerRuntimeEventType,\n DictationState,\n SendOptions,\n} from \"../interfaces/composer-runtime-core\";\nimport type { DictationAdapter } from \"../../adapters/speech\";\nimport {\n EMPTY_QUEUE_ITEMS,\n type QueueItemState,\n} from \"../../store/scopes/queue-item\";\nimport { generateId } from \"../../utils/id\";\n\nconst isAttachmentComplete = (a: Attachment): a is CompleteAttachment =>\n a.status.type === \"complete\";\n\nexport abstract class BaseComposerRuntimeCore\n extends BaseSubscribable\n implements ComposerRuntimeCore\n{\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n protected abstract getDictationAdapter(): DictationAdapter | undefined;\n\n protected enrichWithComposerMetadata<\n T extends { metadata?: { custom?: Record<string, unknown> } },\n >(message: T, composerMetadata: Record<string, unknown> | undefined): T {\n if (!composerMetadata) return message;\n return {\n ...message,\n metadata: {\n ...message.metadata,\n custom: { ...message.metadata?.custom, ...composerMetadata },\n },\n } as T;\n }\n\n public get attachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this._notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n public abstract get canSend(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n private _runConfig: RunConfig = {};\n\n get runConfig() {\n return this._runConfig;\n }\n\n private _quote: QuoteInfo | undefined = undefined;\n\n get quote() {\n return this._quote;\n }\n\n public setQuote(quote: QuoteInfo | undefined) {\n if (this._quote === quote) return;\n\n this._quote = quote;\n this._notifySubscribers();\n }\n\n public setText(value: string) {\n if (this._text === value) return;\n\n this._text = value;\n if (this._dictation) {\n this._dictationBaseText = value;\n this._currentInterimText = \"\";\n const { status, inputDisabled } = this._dictation;\n this._dictation = inputDisabled ? { status, inputDisabled } : { status };\n }\n this._notifySubscribers();\n }\n\n public setRole(role: MessageRole) {\n if (this._role === role) return;\n\n this._role = role;\n this._notifySubscribers();\n }\n\n public setRunConfig(runConfig: RunConfig) {\n if (this._runConfig === runConfig) return;\n\n this._runConfig = runConfig;\n this._notifySubscribers();\n }\n\n private _emptyTextAndAttachments() {\n this._attachments = [];\n this._text = \"\";\n this._notifySubscribers();\n }\n\n private async _onClearAttachments() {\n const adapter = this.getAttachmentAdapter();\n if (adapter) {\n const pending = this._attachments.filter((a) => !isAttachmentComplete(a));\n await Promise.all(pending.map((a) => adapter.remove(a)));\n }\n }\n\n public async reset() {\n if (\n this._attachments.length === 0 &&\n this._text === \"\" &&\n this._role === \"user\" &&\n Object.keys(this._runConfig).length === 0 &&\n this._quote === undefined\n ) {\n return;\n }\n\n this._role = \"user\";\n this._runConfig = {};\n this._quote = undefined;\n\n const task = this._onClearAttachments();\n this._emptyTextAndAttachments();\n await task;\n }\n\n public async clearAttachments() {\n const task = this._onClearAttachments();\n this.setAttachments([]);\n\n await task;\n }\n\n public async send(options?: SendOptions) {\n if (!this.canSend) return;\n\n if (this._dictationSession) {\n this._dictationSession.cancel();\n this._cleanupDictation();\n }\n\n const adapter = this.getAttachmentAdapter();\n const attachments =\n this.attachments.length > 0\n ? Promise.all(\n this.attachments.map(async (a) => {\n if (isAttachmentComplete(a)) return a;\n if (!adapter) throw new Error(\"Attachments are not supported\");\n const result = await adapter.send(a);\n return result as CompleteAttachment;\n }),\n )\n : [];\n\n const text = this.text;\n const quote = this._quote;\n this._quote = undefined;\n this._emptyTextAndAttachments();\n\n const message: Omit<AppendMessage, \"parentId\" | \"sourceId\"> = {\n createdAt: new Date(),\n role: this.role,\n content: text ? [{ type: \"text\", text }] : [],\n attachments: await attachments,\n runConfig: this.runConfig,\n metadata: { custom: { ...(quote ? { quote } : {}) } },\n };\n\n this.handleSend(message, options);\n this._notifyEventSubscribers(\"send\", {});\n }\n\n public cancel() {\n this.handleCancel();\n }\n\n public get queue(): readonly QueueItemState[] {\n return EMPTY_QUEUE_ITEMS;\n }\n\n public steerQueueItem(_queueItemId: string): void {}\n public removeQueueItem(_queueItemId: string): void {}\n\n protected abstract handleSend(\n message: Omit<AppendMessage, \"parentId\" | \"sourceId\">,\n options?: SendOptions,\n ): void;\n protected abstract handleCancel(): void;\n\n async addAttachment(fileOrAttachment: File | CreateAttachment) {\n if (!(fileOrAttachment instanceof File)) {\n const adapter = this.getAttachmentAdapter();\n if (\n adapter &&\n !fileMatchesAccept(\n {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n },\n adapter.accept,\n )\n ) {\n const message = `File type ${fileOrAttachment.contentType || \"unknown\"} is not accepted. Accepted types: ${adapter.accept}`;\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\n \"not-accepted\",\n message,\n undefined,\n err,\n );\n throw err;\n }\n\n const a: CompleteAttachment = {\n id: fileOrAttachment.id ?? generateId(),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n this._attachments = [...this._attachments, a];\n this._notifySubscribers();\n this._notifyEventSubscribers(\"attachmentAdd\", {});\n return;\n }\n\n const upsertAttachment = (a: PendingAttachment) => {\n const idx = this._attachments.findIndex(\n (attachment) => attachment.id === a.id,\n );\n if (idx !== -1)\n this._attachments = [\n ...this._attachments.slice(0, idx),\n a,\n ...this._attachments.slice(idx + 1),\n ];\n else {\n this._attachments = [...this._attachments, a];\n }\n\n this._notifySubscribers();\n };\n\n const adapter = this.getAttachmentAdapter();\n if (!adapter) {\n const message = \"Attachments are not supported\";\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\"no-adapter\", message, undefined, err);\n throw err;\n }\n\n if (\n !fileMatchesAccept(\n { name: fileOrAttachment.name, type: fileOrAttachment.type },\n adapter.accept,\n )\n ) {\n const message = `File type ${fileOrAttachment.type || \"unknown\"} is not accepted. Accepted types: ${adapter.accept}`;\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\"not-accepted\", message, undefined, err);\n throw err;\n }\n\n let lastAttachment: PendingAttachment | undefined;\n try {\n const promiseOrGenerator = adapter.add({ file: fileOrAttachment });\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n lastAttachment = r;\n upsertAttachment(r);\n }\n } else {\n lastAttachment = await promiseOrGenerator;\n upsertAttachment(lastAttachment);\n }\n } catch (e) {\n if (lastAttachment) {\n upsertAttachment({\n ...lastAttachment,\n status: { type: \"incomplete\", reason: \"error\" },\n });\n }\n this._safeEmitAttachmentAddError(\n \"adapter-error\",\n e instanceof Error ? e.message : String(e),\n lastAttachment?.id,\n e instanceof Error ? e : undefined,\n );\n throw e;\n }\n\n const hasError =\n lastAttachment?.status.type === \"incomplete\" &&\n lastAttachment.status.reason === \"error\";\n if (hasError) {\n this._safeEmitAttachmentAddError(\n \"adapter-error\",\n \"Attachment upload did not complete successfully.\",\n lastAttachment?.id,\n );\n } else {\n this._notifyEventSubscribers(\"attachmentAdd\", {});\n }\n }\n\n private _safeEmitAttachmentAddError(\n reason: AttachmentAddErrorReason,\n message: string,\n attachmentId?: string,\n error?: Error,\n ) {\n try {\n this._notifyEventSubscribers(\"attachmentAddError\", {\n reason,\n message,\n ...(attachmentId !== undefined && { attachmentId }),\n ...(error !== undefined && { error }),\n });\n } catch (subscriberError) {\n console.error(\n \"[assistant-ui] attachmentAddError subscriber threw:\",\n subscriberError,\n );\n }\n }\n\n async removeAttachment(attachmentId: string) {\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) throw new Error(\"Attachment not found\");\n const attachment = this._attachments[index]!;\n\n if (!isAttachmentComplete(attachment)) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n await adapter.remove(attachment);\n }\n\n this._attachments = this._attachments.filter((a) => a.id !== attachmentId);\n this._notifySubscribers();\n }\n\n private _dictation: DictationState | undefined;\n private _dictationSession: DictationAdapter.Session | undefined;\n private _dictationUnsubscribes: Unsubscribe[] = [];\n private _dictationBaseText = \"\";\n private _currentInterimText = \"\";\n private _dictationSessionIdCounter = 0;\n private _activeDictationSessionId: number | undefined;\n private _isCleaningDictation = false;\n\n public get dictation(): DictationState | undefined {\n return this._dictation;\n }\n\n private _isActiveSession(\n sessionId: number,\n session: DictationAdapter.Session,\n ): boolean {\n return (\n this._activeDictationSessionId === sessionId &&\n this._dictationSession === session\n );\n }\n\n public startDictation(): void {\n const adapter = this.getDictationAdapter();\n if (!adapter) {\n throw new Error(\"Dictation adapter not configured\");\n }\n\n if (this._dictationSession) {\n for (const unsub of this._dictationUnsubscribes) {\n unsub();\n }\n this._dictationUnsubscribes = [];\n const oldSession = this._dictationSession;\n oldSession.stop().catch(() => {});\n this._dictationSession = undefined;\n }\n\n const inputDisabled = adapter.disableInputDuringDictation ?? false;\n\n this._dictationBaseText = this._text;\n this._currentInterimText = \"\";\n\n const session = adapter.listen();\n this._dictationSession = session;\n const sessionId = ++this._dictationSessionIdCounter;\n this._activeDictationSessionId = sessionId;\n this._dictation = { status: session.status, inputDisabled };\n this._notifySubscribers();\n\n const unsubSpeech = session.onSpeech((result) => {\n if (!this._isActiveSession(sessionId, session)) return;\n const isFinal = result.isFinal !== false;\n\n const needsSeparator =\n this._dictationBaseText &&\n !this._dictationBaseText.endsWith(\" \") &&\n result.transcript;\n const separator = needsSeparator ? \" \" : \"\";\n\n if (isFinal) {\n this._dictationBaseText =\n this._dictationBaseText + separator + result.transcript;\n this._currentInterimText = \"\";\n this._text = this._dictationBaseText;\n\n if (this._dictation) {\n const { transcript: _, ...rest } = this._dictation;\n this._dictation = rest;\n }\n this._notifySubscribers();\n } else {\n this._currentInterimText = separator + result.transcript;\n this._text = this._dictationBaseText + this._currentInterimText;\n\n if (this._dictation) {\n this._dictation = {\n ...this._dictation,\n transcript: result.transcript,\n };\n }\n this._notifySubscribers();\n }\n });\n this._dictationUnsubscribes.push(unsubSpeech);\n\n const unsubStart = session.onSpeechStart(() => {\n if (!this._isActiveSession(sessionId, session)) return;\n\n this._dictation = {\n status: { type: \"running\" },\n inputDisabled,\n ...(this._dictation?.transcript && {\n transcript: this._dictation.transcript,\n }),\n };\n this._notifySubscribers();\n });\n this._dictationUnsubscribes.push(unsubStart);\n\n const unsubEnd = session.onSpeechEnd(() => {\n this._cleanupDictation({ sessionId });\n });\n this._dictationUnsubscribes.push(unsubEnd);\n\n const statusInterval = setInterval(() => {\n if (!this._isActiveSession(sessionId, session)) return;\n\n if (session.status.type === \"ended\") {\n this._cleanupDictation({ sessionId });\n }\n }, 100);\n this._dictationUnsubscribes.push(() => clearInterval(statusInterval));\n }\n\n public stopDictation(): void {\n if (!this._dictationSession) return;\n\n const session = this._dictationSession;\n const sessionId = this._activeDictationSessionId;\n session.stop().finally(() => {\n this._cleanupDictation({ sessionId });\n });\n }\n\n private _cleanupDictation(options?: { sessionId: number | undefined }): void {\n const isStaleSession =\n options?.sessionId !== undefined &&\n options.sessionId !== this._activeDictationSessionId;\n if (isStaleSession || this._isCleaningDictation) return;\n\n this._isCleaningDictation = true;\n try {\n for (const unsub of this._dictationUnsubscribes) {\n unsub();\n }\n this._dictationUnsubscribes = [];\n this._dictationSession = undefined;\n this._activeDictationSessionId = undefined;\n this._dictation = undefined;\n this._dictationBaseText = \"\";\n this._currentInterimText = \"\";\n this._notifySubscribers();\n } finally {\n this._isCleaningDictation = false;\n }\n }\n\n private _eventSubscribers = new Map<\n ComposerRuntimeEventType,\n Set<(payload?: unknown) => void>\n >();\n\n protected _notifyEventSubscribers<E extends ComposerRuntimeEventType>(\n event: E,\n payload: ComposerRuntimeEventPayload[E],\n ) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n for (const callback of subscribers) callback(payload);\n }\n\n public unstable_on<E extends ComposerRuntimeEventType>(\n event: E,\n callback: ComposerRuntimeEventCallback<E>,\n ) {\n const wrapped = callback as (payload?: unknown) => void;\n let subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n subscribers = new Set();\n this._eventSubscribers.set(event, subscribers);\n }\n subscribers.add(wrapped);\n\n return () => {\n this._eventSubscribers.get(event)?.delete(wrapped);\n };\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"base-composer-runtime-core.js","names":["Attachment","CompleteAttachment","CreateAttachment","PendingAttachment","MessageRole","AppendMessage","QuoteInfo","Unsubscribe","RunConfig","BaseSubscribable","AttachmentAdapter","fileMatchesAccept","AttachmentAddErrorReason","ComposerRuntimeCore","ComposerRuntimeEventCallback","ComposerRuntimeEventPayload","ComposerRuntimeEventType","DictationState","SendOptions","DictationAdapter","EMPTY_QUEUE_ITEMS","QueueItemState","generateId","isAttachmentComplete","a","status","type","BaseComposerRuntimeCore","isEditing","getAttachmentAdapter","getDictationAdapter","enrichWithComposerMetadata","metadata","custom","Record","message","T","composerMetadata","attachmentAccept","accept","_attachments","attachments","setAttachments","value","_notifySubscribers","canCancel","canSend","isEmpty","text","trim","length","_text","_role","role","_runConfig","runConfig","_quote","undefined","quote","setQuote","setText","_dictation","_dictationBaseText","_currentInterimText","inputDisabled","setRole","setRunConfig","_emptyTextAndAttachments","_onClearAttachments","adapter","pending","filter","Promise","all","map","remove","reset","Object","keys","task","clearAttachments","send","options","_dictationSession","cancel","_cleanupDictation","Error","result","originalAttachments","resolvedAttachments","Awaited","e","Omit","createdAt","Date","content","handleSend","_notifyEventSubscribers","handleCancel","queue","steerQueueItem","_queueItemId","removeQueueItem","addAttachment","fileOrAttachment","File","name","contentType","err","_safeEmitAttachmentAddError","id","upsertAttachment","idx","findIndex","attachment","slice","lastAttachment","promiseOrGenerator","add","file","Symbol","asyncIterator","r","reason","String","attachmentId","error","subscriberError","console","removeAttachment","index","Session","_dictationUnsubscribes","_dictationSessionIdCounter","_activeDictationSessionId","_isCleaningDictation","dictation","_isActiveSession","sessionId","session","startDictation","unsub","oldSession","stop","catch","disableInputDuringDictation","listen","unsubSpeech","onSpeech","isFinal","needsSeparator","endsWith","transcript","separator","_","rest","push","unsubStart","onSpeechStart","unsubEnd","onSpeechEnd","statusInterval","setInterval","clearInterval","stopDictation","finally","isStaleSession","_eventSubscribers","Map","Set","payload","event","E","subscribers","get","callback","unstable_on","wrapped","set","delete"],"sources":["../../../src/runtime/base/base-composer-runtime-core.ts"],"sourcesContent":["import type {\n Attachment,\n CompleteAttachment,\n CreateAttachment,\n PendingAttachment,\n} from \"../../types/attachment\";\nimport type { MessageRole, AppendMessage } from \"../../types/message\";\nimport type { QuoteInfo } from \"../../types/quote\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport type { RunConfig } from \"../../types/message\";\nimport { BaseSubscribable } from \"../../subscribable/subscribable\";\nimport {\n type AttachmentAdapter,\n fileMatchesAccept,\n} from \"../../adapters/attachment\";\nimport type {\n AttachmentAddErrorReason,\n ComposerRuntimeCore,\n ComposerRuntimeEventCallback,\n ComposerRuntimeEventPayload,\n ComposerRuntimeEventType,\n DictationState,\n SendOptions,\n} from \"../interfaces/composer-runtime-core\";\nimport type { DictationAdapter } from \"../../adapters/speech\";\nimport {\n EMPTY_QUEUE_ITEMS,\n type QueueItemState,\n} from \"../../store/scopes/queue-item\";\nimport { generateId } from \"../../utils/id\";\n\nconst isAttachmentComplete = (a: Attachment): a is CompleteAttachment =>\n a.status.type === \"complete\";\n\nexport abstract class BaseComposerRuntimeCore\n extends BaseSubscribable\n implements ComposerRuntimeCore\n{\n public readonly isEditing = true;\n\n protected abstract getAttachmentAdapter(): AttachmentAdapter | undefined;\n protected abstract getDictationAdapter(): DictationAdapter | undefined;\n\n protected enrichWithComposerMetadata<\n T extends { metadata?: { custom?: Record<string, unknown> } },\n >(message: T, composerMetadata: Record<string, unknown> | undefined): T {\n if (!composerMetadata) return message;\n return {\n ...message,\n metadata: {\n ...message.metadata,\n custom: { ...message.metadata?.custom, ...composerMetadata },\n },\n } as T;\n }\n\n public get attachmentAccept(): string {\n return this.getAttachmentAdapter()?.accept ?? \"*\";\n }\n\n private _attachments: readonly Attachment[] = [];\n public get attachments() {\n return this._attachments;\n }\n\n protected setAttachments(value: readonly Attachment[]) {\n this._attachments = value;\n this._notifySubscribers();\n }\n\n public abstract get canCancel(): boolean;\n public abstract get canSend(): boolean;\n\n public get isEmpty() {\n return !this.text.trim() && !this.attachments.length;\n }\n\n private _text = \"\";\n\n get text() {\n return this._text;\n }\n\n private _role: MessageRole = \"user\";\n\n get role() {\n return this._role;\n }\n\n private _runConfig: RunConfig = {};\n\n get runConfig() {\n return this._runConfig;\n }\n\n private _quote: QuoteInfo | undefined = undefined;\n\n get quote() {\n return this._quote;\n }\n\n public setQuote(quote: QuoteInfo | undefined) {\n if (this._quote === quote) return;\n\n this._quote = quote;\n this._notifySubscribers();\n }\n\n public setText(value: string) {\n if (this._text === value) return;\n\n this._text = value;\n if (this._dictation) {\n this._dictationBaseText = value;\n this._currentInterimText = \"\";\n const { status, inputDisabled } = this._dictation;\n this._dictation = inputDisabled ? { status, inputDisabled } : { status };\n }\n this._notifySubscribers();\n }\n\n public setRole(role: MessageRole) {\n if (this._role === role) return;\n\n this._role = role;\n this._notifySubscribers();\n }\n\n public setRunConfig(runConfig: RunConfig) {\n if (this._runConfig === runConfig) return;\n\n this._runConfig = runConfig;\n this._notifySubscribers();\n }\n\n private _emptyTextAndAttachments() {\n this._attachments = [];\n this._text = \"\";\n this._notifySubscribers();\n }\n\n private async _onClearAttachments() {\n const adapter = this.getAttachmentAdapter();\n if (adapter) {\n const pending = this._attachments.filter((a) => !isAttachmentComplete(a));\n await Promise.all(pending.map((a) => adapter.remove(a)));\n }\n }\n\n public async reset() {\n if (\n this._attachments.length === 0 &&\n this._text === \"\" &&\n this._role === \"user\" &&\n Object.keys(this._runConfig).length === 0 &&\n this._quote === undefined\n ) {\n return;\n }\n\n this._role = \"user\";\n this._runConfig = {};\n this._quote = undefined;\n\n const task = this._onClearAttachments();\n this._emptyTextAndAttachments();\n await task;\n }\n\n public async clearAttachments() {\n const task = this._onClearAttachments();\n this.setAttachments([]);\n\n await task;\n }\n\n public async send(options?: SendOptions) {\n if (!this.canSend) return;\n\n if (this._dictationSession) {\n this._dictationSession.cancel();\n this._cleanupDictation();\n }\n\n const adapter = this.getAttachmentAdapter();\n const attachments =\n this.attachments.length > 0\n ? Promise.all(\n this.attachments.map(async (a) => {\n if (isAttachmentComplete(a)) return a;\n if (!adapter) throw new Error(\"Attachments are not supported\");\n const result = await adapter.send(a);\n return result as CompleteAttachment;\n }),\n )\n : [];\n\n const originalAttachments = this.attachments;\n const text = this.text;\n const quote = this._quote;\n this._quote = undefined;\n this._emptyTextAndAttachments();\n\n let resolvedAttachments: Awaited<typeof attachments>;\n try {\n resolvedAttachments = await attachments;\n } catch (e) {\n if (this.isEmpty && this._quote === undefined) {\n this._attachments = originalAttachments;\n this._text = text;\n this._quote = quote;\n this._notifySubscribers();\n }\n throw e;\n }\n\n const message: Omit<AppendMessage, \"parentId\" | \"sourceId\"> = {\n createdAt: new Date(),\n role: this.role,\n content: text ? [{ type: \"text\", text }] : [],\n attachments: resolvedAttachments,\n runConfig: this.runConfig,\n metadata: { custom: { ...(quote ? { quote } : {}) } },\n };\n\n this.handleSend(message, options);\n this._notifyEventSubscribers(\"send\", {});\n }\n\n public cancel() {\n this.handleCancel();\n }\n\n public get queue(): readonly QueueItemState[] {\n return EMPTY_QUEUE_ITEMS;\n }\n\n public steerQueueItem(_queueItemId: string): void {}\n public removeQueueItem(_queueItemId: string): void {}\n\n protected abstract handleSend(\n message: Omit<AppendMessage, \"parentId\" | \"sourceId\">,\n options?: SendOptions,\n ): void;\n protected abstract handleCancel(): void;\n\n async addAttachment(fileOrAttachment: File | CreateAttachment) {\n if (!(fileOrAttachment instanceof File)) {\n const adapter = this.getAttachmentAdapter();\n if (\n adapter &&\n !fileMatchesAccept(\n {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n },\n adapter.accept,\n )\n ) {\n const message = `File type ${fileOrAttachment.contentType || \"unknown\"} is not accepted. Accepted types: ${adapter.accept}`;\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\n \"not-accepted\",\n message,\n undefined,\n err,\n );\n throw err;\n }\n\n const a: CompleteAttachment = {\n id: fileOrAttachment.id ?? generateId(),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n this._attachments = [...this._attachments, a];\n this._notifySubscribers();\n this._notifyEventSubscribers(\"attachmentAdd\", {});\n return;\n }\n\n const upsertAttachment = (a: PendingAttachment) => {\n const idx = this._attachments.findIndex(\n (attachment) => attachment.id === a.id,\n );\n if (idx !== -1)\n this._attachments = [\n ...this._attachments.slice(0, idx),\n a,\n ...this._attachments.slice(idx + 1),\n ];\n else {\n this._attachments = [...this._attachments, a];\n }\n\n this._notifySubscribers();\n };\n\n const adapter = this.getAttachmentAdapter();\n if (!adapter) {\n const message = \"Attachments are not supported\";\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\"no-adapter\", message, undefined, err);\n throw err;\n }\n\n if (\n !fileMatchesAccept(\n { name: fileOrAttachment.name, type: fileOrAttachment.type },\n adapter.accept,\n )\n ) {\n const message = `File type ${fileOrAttachment.type || \"unknown\"} is not accepted. Accepted types: ${adapter.accept}`;\n const err = new Error(message);\n this._safeEmitAttachmentAddError(\"not-accepted\", message, undefined, err);\n throw err;\n }\n\n let lastAttachment: PendingAttachment | undefined;\n try {\n const promiseOrGenerator = adapter.add({ file: fileOrAttachment });\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n lastAttachment = r;\n upsertAttachment(r);\n }\n } else {\n lastAttachment = await promiseOrGenerator;\n upsertAttachment(lastAttachment);\n }\n } catch (e) {\n if (lastAttachment) {\n upsertAttachment({\n ...lastAttachment,\n status: {\n type: \"incomplete\",\n reason: \"error\",\n message: e instanceof Error ? e.message : String(e),\n },\n });\n }\n this._safeEmitAttachmentAddError(\n \"adapter-error\",\n e instanceof Error ? e.message : String(e),\n lastAttachment?.id,\n e instanceof Error ? e : undefined,\n );\n throw e;\n }\n\n if (\n lastAttachment?.status.type === \"incomplete\" &&\n lastAttachment.status.reason === \"error\"\n ) {\n this._safeEmitAttachmentAddError(\n \"adapter-error\",\n lastAttachment.status.message ??\n \"Attachment upload did not complete successfully.\",\n lastAttachment.id,\n );\n } else {\n this._notifyEventSubscribers(\"attachmentAdd\", {});\n }\n }\n\n private _safeEmitAttachmentAddError(\n reason: AttachmentAddErrorReason,\n message: string,\n attachmentId?: string,\n error?: Error,\n ) {\n try {\n this._notifyEventSubscribers(\"attachmentAddError\", {\n reason,\n message,\n ...(attachmentId !== undefined && { attachmentId }),\n ...(error !== undefined && { error }),\n });\n } catch (subscriberError) {\n console.error(\n \"[assistant-ui] attachmentAddError subscriber threw:\",\n subscriberError,\n );\n }\n }\n\n async removeAttachment(attachmentId: string) {\n const index = this._attachments.findIndex((a) => a.id === attachmentId);\n if (index === -1) throw new Error(\"Attachment not found\");\n const attachment = this._attachments[index]!;\n\n if (!isAttachmentComplete(attachment)) {\n const adapter = this.getAttachmentAdapter();\n if (!adapter) throw new Error(\"Attachments are not supported\");\n await adapter.remove(attachment);\n }\n\n this._attachments = this._attachments.filter((a) => a.id !== attachmentId);\n this._notifySubscribers();\n }\n\n private _dictation: DictationState | undefined;\n private _dictationSession: DictationAdapter.Session | undefined;\n private _dictationUnsubscribes: Unsubscribe[] = [];\n private _dictationBaseText = \"\";\n private _currentInterimText = \"\";\n private _dictationSessionIdCounter = 0;\n private _activeDictationSessionId: number | undefined;\n private _isCleaningDictation = false;\n\n public get dictation(): DictationState | undefined {\n return this._dictation;\n }\n\n private _isActiveSession(\n sessionId: number,\n session: DictationAdapter.Session,\n ): boolean {\n return (\n this._activeDictationSessionId === sessionId &&\n this._dictationSession === session\n );\n }\n\n public startDictation(): void {\n const adapter = this.getDictationAdapter();\n if (!adapter) {\n throw new Error(\"Dictation adapter not configured\");\n }\n\n if (this._dictationSession) {\n for (const unsub of this._dictationUnsubscribes) {\n unsub();\n }\n this._dictationUnsubscribes = [];\n const oldSession = this._dictationSession;\n oldSession.stop().catch(() => {});\n this._dictationSession = undefined;\n }\n\n const inputDisabled = adapter.disableInputDuringDictation ?? false;\n\n this._dictationBaseText = this._text;\n this._currentInterimText = \"\";\n\n const session = adapter.listen();\n this._dictationSession = session;\n const sessionId = ++this._dictationSessionIdCounter;\n this._activeDictationSessionId = sessionId;\n this._dictation = { status: session.status, inputDisabled };\n this._notifySubscribers();\n\n const unsubSpeech = session.onSpeech((result) => {\n if (!this._isActiveSession(sessionId, session)) return;\n const isFinal = result.isFinal !== false;\n\n const needsSeparator =\n this._dictationBaseText &&\n !this._dictationBaseText.endsWith(\" \") &&\n result.transcript;\n const separator = needsSeparator ? \" \" : \"\";\n\n if (isFinal) {\n this._dictationBaseText =\n this._dictationBaseText + separator + result.transcript;\n this._currentInterimText = \"\";\n this._text = this._dictationBaseText;\n\n if (this._dictation) {\n const { transcript: _, ...rest } = this._dictation;\n this._dictation = rest;\n }\n this._notifySubscribers();\n } else {\n this._currentInterimText = separator + result.transcript;\n this._text = this._dictationBaseText + this._currentInterimText;\n\n if (this._dictation) {\n this._dictation = {\n ...this._dictation,\n transcript: result.transcript,\n };\n }\n this._notifySubscribers();\n }\n });\n this._dictationUnsubscribes.push(unsubSpeech);\n\n const unsubStart = session.onSpeechStart(() => {\n if (!this._isActiveSession(sessionId, session)) return;\n\n this._dictation = {\n status: { type: \"running\" },\n inputDisabled,\n ...(this._dictation?.transcript && {\n transcript: this._dictation.transcript,\n }),\n };\n this._notifySubscribers();\n });\n this._dictationUnsubscribes.push(unsubStart);\n\n const unsubEnd = session.onSpeechEnd(() => {\n this._cleanupDictation({ sessionId });\n });\n this._dictationUnsubscribes.push(unsubEnd);\n\n const statusInterval = setInterval(() => {\n if (!this._isActiveSession(sessionId, session)) return;\n\n if (session.status.type === \"ended\") {\n this._cleanupDictation({ sessionId });\n }\n }, 100);\n this._dictationUnsubscribes.push(() => clearInterval(statusInterval));\n }\n\n public stopDictation(): void {\n if (!this._dictationSession) return;\n\n const session = this._dictationSession;\n const sessionId = this._activeDictationSessionId;\n session.stop().finally(() => {\n this._cleanupDictation({ sessionId });\n });\n }\n\n private _cleanupDictation(options?: { sessionId: number | undefined }): void {\n const isStaleSession =\n options?.sessionId !== undefined &&\n options.sessionId !== this._activeDictationSessionId;\n if (isStaleSession || this._isCleaningDictation) return;\n\n this._isCleaningDictation = true;\n try {\n for (const unsub of this._dictationUnsubscribes) {\n unsub();\n }\n this._dictationUnsubscribes = [];\n this._dictationSession = undefined;\n this._activeDictationSessionId = undefined;\n this._dictation = undefined;\n this._dictationBaseText = \"\";\n this._currentInterimText = \"\";\n this._notifySubscribers();\n } finally {\n this._isCleaningDictation = false;\n }\n }\n\n private _eventSubscribers = new Map<\n ComposerRuntimeEventType,\n Set<(payload?: unknown) => void>\n >();\n\n protected _notifyEventSubscribers<E extends ComposerRuntimeEventType>(\n event: E,\n payload: ComposerRuntimeEventPayload[E],\n ) {\n const subscribers = this._eventSubscribers.get(event);\n if (!subscribers) return;\n\n for (const callback of subscribers) callback(payload);\n }\n\n public unstable_on<E extends ComposerRuntimeEventType>(\n event: E,\n callback: ComposerRuntimeEventCallback<E>,\n ) {\n const wrapped = callback as (payload?: unknown) => void;\n let subscribers = this._eventSubscribers.get(event);\n if (!subscribers) {\n subscribers = new Set();\n this._eventSubscribers.set(event, subscribers);\n }\n subscribers.add(wrapped);\n\n return () => {\n this._eventSubscribers.get(event)?.delete(wrapped);\n };\n }\n}\n"],"mappings":"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"}
@@ -10,6 +10,7 @@ import { ExportedMessageRepository, MessageRepository } from "../utils/message-r
10
10
  import { AddToolResultOptions, RespondToToolApprovalOptions, ResumeRunConfig, ResumeToolCallOptions, RuntimeCapabilities, SpeechState, StartRunConfig, SubmitFeedbackOptions, ThreadRuntimeCore, ThreadRuntimeEventCallback, ThreadRuntimeEventPayload, ThreadRuntimeEventType, ThreadSuggestion, VoiceSessionState } from "../interfaces/thread-runtime-core.js";
11
11
  import { DefaultThreadComposerRuntimeCore } from "./default-thread-composer-runtime-core.js";
12
12
  import { DefaultEditComposerRuntimeCore } from "./default-edit-composer-runtime-core.js";
13
+ import "../../index.js";
13
14
  //#region src/runtime/base/base-thread-runtime-core.d.ts
14
15
  type BaseThreadAdapters = {
15
16
  speech?: SpeechSynthesisAdapter | undefined;
@@ -64,10 +65,7 @@ declare abstract class BaseThreadRuntimeCore implements ThreadRuntimeCore {
64
65
  protected _notifySubscribers(): void;
65
66
  _notifyEventSubscribers<E extends ThreadRuntimeEventType>(event: E, payload: ThreadRuntimeEventPayload[E]): void;
66
67
  subscribe(callback: () => void): Unsubscribe;
67
- submitFeedback({
68
- messageId,
69
- type
70
- }: SubmitFeedbackOptions): void;
68
+ submitFeedback({ messageId, type }: SubmitFeedbackOptions): void;
71
69
  private _stopSpeaking;
72
70
  speech: SpeechState | undefined;
73
71
  speak(messageId: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"base-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;KAqCK,kBAAA;EACH,MAAA,GAAS,sBAAA;EACT,QAAA,GAAW,eAAA;EACX,WAAA,GAAc,iBAAA;EACd,KAAA,GAAQ,oBAAA;AAAA;AAAA,uBAGY,qBAAA,YAAiC,iBAAA;EAAA,iBAsExB,gBAAA;EAAA,QArErB,cAAA;EAAA,QACA,cAAA;EAAA,mBAEW,UAAA,EAAU,iBAAA;EAAA,aACT,QAAA,IAAY,kBAAA;EAAA,aACZ,UAAA;EAAA,aACA,cAAA;EAAA,aACA,SAAA;EAAA,aACA,WAAA,aAAwB,gBAAA;EAAA,aACxB,MAAA;EAAA,aAEA,YAAA,IAAgB,mBAAA;EAAA,SACpB,MAAA,CAAO,OAAA,EAAS,aAAA;EAAA,SAChB,aAAA,CAAc,SAAA,kBAA2B,OAAA;EAAA,SACzC,QAAA,CAAS,MAAA,EAAQ,cAAA;EAAA,SACjB,SAAA,CAAU,MAAA,EAAQ,eAAA;EAAA,SAClB,aAAA,CAAc,OAAA,EAAS,oBAAA;EAAA,SACvB,cAAA,CAAe,OAAA,EAAS,qBAAA;EAAA,SACxB,qBAAA,CACd,OAAA,EAAS,4BAAA;EAAA,SAEK,SAAA;EAAA,SACA,mBAAA;EAAA,SACA,mBAAA,CAAoB,KAAA;EAAA,UAE1B,cAAA,EAAgB,aAAA;EAAA,UAChB,gBAAA;EAAA,QACF,qBAAA;EAAA,QACA,sBAAA;EAAA,QACA,iBAAA;EAAA,UAEE,uBAAA;EAAA,UAKA,gBAAA,aAA6B,aAAA;EAAA,IAI5B,QAAA,aAAqB,aAAA;EAAA,IAgBrB,KAAA,iEAAK,kBAAA,oCAAA,iBAAA;EAAA,SAWA,QAAA,EAAQ,gCAAA;cAEK,gBAAA,EAAkB,oBAAA;EAExC,eAAA,IAF4D,YAAA;EAAA,QAM3D,cAAA;EACD,eAAA,CAAgB,SAAA,WAAiB,8BAAA;EAGjC,SAAA,CAAU,SAAA;EAeV,cAAA,CAAe,SAAA;;;;;EAsBf,WAAA,CAAY,SAAA;EAOZ,cAAA,CAAe,QAAA;EAAA,UAKZ,kBAAA;EAIH,uBAAA,WAAkC,sBAAA,EACvC,KAAA,EAAO,CAAA,EACP,OAAA,EAAS,yBAAA,CAA0B,CAAA;EAQ9B,SAAA,CAAU,QAAA,eAAuB,WAAA;EAKjC,cAAA;IAAiB,SAAA;IAAW;EAAA,GAAQ,qBAAA;EAAA,QAqBnC,aAAA;EACD,MAAA,EAAQ,WAAA;EAER,KAAA,CAAM,SAAA;EA8BN,YAAA;EAAA,QAMC,aAAA;EAAA,QACA,YAAA;EACD,KAAA,EAAO,iBAAA;EAAA,QAEN,YAAA;EAAA,QACA,uBAAA;EAED,cAAA;EAEA,oBAAA,GAAwB,QAAA,iBAAuB,WAAA;EAK/C,YAAA;EAAA,QA+DC,oBAAA;EAAA,QAEA,sBAAA;EAAA,QA8DA,4BAAA;EAaD,eAAA;EAeA,SAAA;EAUA,WAAA;EAAA,UAUG,iBAAA;EAOH,MAAA,IAAM,yBAAA;EAIN,MAAA,CAAO,IAAA,EAAM,yBAAA;EAOb,KAAA,CAAM,eAAA,YAA2B,iBAAA;EAAA,QAIhC,iBAAA;EAKD,WAAA,WAAsB,sBAAA,EAC3B,KAAA,EAAO,CAAA,EACP,QAAA,EAAU,0BAAA,CAA2B,CAAA,IAAE,WAAA;AAAA"}
1
+ {"version":3,"file":"base-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/base-thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;;KAqCK;EACH,SAAS;EACT,WAAW;EACX,cAAc;EACd,QAAQ;;uBAGY,iCAAiC;mBAsExB;UArErB;UACA;qBAEW,YAAU;eACT,YAAY;eACZ;eACA;eACA;eACA,wBAAwB;eACxB;eAEA,gBAAgB;WACpB,OAAO,SAAS;WAChB,cAAc,2BAA2B;WACzC,SAAS,QAAQ;WACjB,UAAU,QAAQ;WAClB,cAAc,SAAS;WACvB,eAAe,SAAS;WACxB,sBACd,SAAS;WAEK;WACA;WACA,oBAAoB;YAE1B,gBAAgB;YAChB;UACF;UACA;UACA;YAEE;YAKA,6BAA6B;MAI5B,qBAAqB;MAgBrB,sEAAK,sDAAA;WAWA,UAAQ;cAEK,kBAAkB;EAExC,mBAFwC;UAMvC;EACD,gBAAgB,oBAAiB;EAGjC,UAAU;EAeV,eAAe;;;;;EAsBf,YAAY;EAOZ,eAAe;YAKZ;EAIH,wBAAwB,UAAU,wBACvC,OAAO,GACP,SAAS,0BAA0B;EAQ9B,UAAU,uBAAuB;EAKjC,iBAAiB,WAAW,QAAQ;UAqBnC;EACD,QAAQ;EAER,MAAM;EA8BN;UAMC;UACA;EACD,OAAO;UAEN;UACA;EAED;EAEA,uBAAwB,yBAAuB;EAK/C;UA+DC;UAEA;UA8DA;EAaD;EAeA;EAUA;YAUG;EAOH,UAAM;EAIN,OAAO,MAAM;EAOb,MAAM,2BAA2B;UAIhC;EAKD,YAAY,UAAU,wBAC3B,OAAO,GACP,UAAU,2BAA2B,KAAE"}
@@ -1,6 +1,6 @@
1
1
  import { generateId } from "../../utils/id.js";
2
- import { ExportedMessageRepository, MessageRepository } from "../utils/message-repository.js";
3
2
  import { getThreadMessageText } from "../../utils/text.js";
3
+ import { ExportedMessageRepository, MessageRepository } from "../utils/message-repository.js";
4
4
  import { DefaultThreadComposerRuntimeCore } from "./default-thread-composer-runtime-core.js";
5
5
  import { DefaultEditComposerRuntimeCore } from "./default-edit-composer-runtime-core.js";
6
6
  //#region src/runtime/base/base-thread-runtime-core.ts
@@ -4,7 +4,6 @@ import { DictationAdapter } from "../../adapters/speech.js";
4
4
  import { SendOptions } from "../interfaces/composer-runtime-core.js";
5
5
  import { ThreadRuntimeCore } from "../interfaces/thread-runtime-core.js";
6
6
  import { BaseComposerRuntimeCore } from "./base-composer-runtime-core.js";
7
-
8
7
  //#region src/runtime/base/default-edit-composer-runtime-core.d.ts
9
8
  declare class DefaultEditComposerRuntimeCore extends BaseComposerRuntimeCore {
10
9
  private runtime;
@@ -23,10 +22,7 @@ declare class DefaultEditComposerRuntimeCore extends BaseComposerRuntimeCore {
23
22
  attachments?: AttachmentAdapter | undefined;
24
23
  dictation?: DictationAdapter | undefined;
25
24
  } | undefined;
26
- }, endEditCallback: () => void, {
27
- parentId,
28
- message
29
- }: {
25
+ }, endEditCallback: () => void, { parentId, message }: {
30
26
  parentId: string | null;
31
27
  message: ThreadMessage;
32
28
  });
@@ -1 +1 @@
1
- {"version":3,"file":"default-edit-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/default-edit-composer-runtime-core.ts"],"mappings":";;;;;;;;cAWa,8BAAA,SAAuC,uBAAA;EAAA,QAuBxC,OAAA;EAAA,QAQA,eAAA;EAAA,IA9BC,SAAA;EAAA,IAIA,OAAA;EAAA,UAID,oBAAA,IAAoB,iBAAA;EAAA,UAIpB,mBAAA,IAAmB,gBAAA;EAAA,QAIrB,aAAA;EAAA,QACA,oBAAA;EAAA,QACA,mBAAA;EAAA,QACA,SAAA;EAAA,QACA,SAAA;cAEE,OAAA,EAAS,iBAAA;IACf,QAAA;MAEM,WAAA,GAAc,iBAAA;MACd,SAAA,GAAY,gBAAA;IAAA;EAAA,GAIZ,eAAA;IACN,QAAA;IAAU;EAAA;IAAa,QAAA;IAAyB,OAAA,EAAS,aAAA;EAAA;EAAA,IA2BlD,QAAA;EAAA,IAIA,QAAA;EAIE,UAAA,CACX,OAAA,EAAS,IAAA,CAAK,aAAA,4BACd,OAAA,GAAU,WAAA,GAAW,OAAA;EAgDhB,YAAA;AAAA"}
1
+ {"version":3,"file":"default-edit-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/default-edit-composer-runtime-core.ts"],"mappings":";;;;;;;cAWa,uCAAuC;UAuBxC;UAQA;MA9BC;MAIA;YAID,wBAAoB;YAIpB,uBAAmB;UAIrB;UACA;UACA;UACA;UACA;cAEE,SAAS;IACf;MAEM,cAAc;MACd,YAAY;;KAIZ,+BACN,UAAU;IAAa;IAAyB,SAAS;;MA2BlD;MAIA;EAIE,WACX,SAAS,KAAK,yCACd,UAAU,cAAW;EAgDhB"}
@@ -6,6 +6,7 @@ import { QueueItemState } from "../../store/scopes/queue-item.js";
6
6
  import { SendOptions, ThreadComposerRuntimeCore } from "../interfaces/composer-runtime-core.js";
7
7
  import { ThreadRuntimeCore } from "../interfaces/thread-runtime-core.js";
8
8
  import { BaseComposerRuntimeCore } from "./base-composer-runtime-core.js";
9
+ import "../../index.js";
9
10
  //#region src/runtime/base/default-thread-composer-runtime-core.d.ts
10
11
  declare class DefaultThreadComposerRuntimeCore extends BaseComposerRuntimeCore implements ThreadComposerRuntimeCore {
11
12
  private runtime;
@@ -1 +1 @@
1
- {"version":3,"file":"default-thread-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/default-thread-composer-runtime-core.ts"],"mappings":";;;;;;;;;cAea,gCAAA,SACH,uBAAA,YACG,yBAAA;EAAA,QAgCD,OAAA;EAAA,QA9BF,UAAA;EAAA,IACG,SAAA;EAAA,IAIA,OAAA;EAAA,IAIS,KAAA,aAAkB,cAAA;EAItB,cAAA,CAAe,WAAA;EAIf,eAAA,CAAgB,WAAA;EAAA,UAItB,oBAAA,IAAoB,iBAAA;EAAA,UAIpB,mBAAA,IAAmB,gBAAA;cAKnB,OAAA,EAAS,IAAA,CAAK,iBAAA;IACpB,QAAA;MAEM,WAAA,GAAc,iBAAA;MACd,SAAA,GAAY,gBAAA;IAAA;EAAA;EASf,OAAA,IAT+B,WAAA;EA8BzB,UAAA,CACX,OAAA,EAAS,IAAA,CAAK,aAAA,4BACd,OAAA,GAAU,WAAA,GAAW,OAAA;EAoBV,YAAA,IAAY,OAAA;AAAA"}
1
+ {"version":3,"file":"default-thread-composer-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/base/default-thread-composer-runtime-core.ts"],"mappings":";;;;;;;;;;cAea,yCACH,mCACG;UAgCD;UA9BF;MACG;MAIA;MAIS,kBAAkB;EAItB,eAAe;EAIf,gBAAgB;YAItB,wBAAoB;YAIpB,uBAAmB;cAKnB,SAAS,KAAK;IACpB;MAEM,cAAc;MACd,YAAY;;;EASf,WATe;EA8BT,WACX,SAAS,KAAK,yCACd,UAAU,cAAW;EAoBV,gBAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"external-thread-branch-adapter.d.ts","names":[],"sources":["../../../src/runtime/branch/external-thread-branch-adapter.ts"],"mappings":";;AAUA;;;;;;;;;KAAY,2BAAA;;;;;;EAMV,WAAA,GAAc,SAAA;;;;;;;;EAQd,cAAA,GAAiB,QAAA;AAAA"}
1
+ {"version":3,"file":"external-thread-branch-adapter.d.ts","names":[],"sources":["../../../src/runtime/branch/external-thread-branch-adapter.ts"],"mappings":";;;;;;;;;;;KAUY;;;;;;EAMV,cAAc;;;;;;;;EAQd,iBAAiB"}
@@ -1,7 +1,6 @@
1
1
  import { Unsubscribe } from "../../types/unsubscribe.js";
2
2
  import { ModelContextProvider } from "../../model-context/types.js";
3
3
  import { ThreadListRuntimeCore } from "./thread-list-runtime-core.js";
4
-
5
4
  //#region src/runtime/interfaces/assistant-runtime-core.d.ts
6
5
  type AssistantRuntimeCore = {
7
6
  readonly threads: ThreadListRuntimeCore;
@@ -1 +1 @@
1
- {"version":3,"file":"assistant-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/interfaces/assistant-runtime-core.ts"],"mappings":";;;;;KAIY,oBAAA;EAAA,SACD,OAAA,EAAS,qBAAA;EAElB,4BAAA,GAA+B,QAAA,EAAU,oBAAA,KAAyB,WAAA;EAClE,uBAAA,QAA+B,oBAAA;EAAA,SAEtB,eAAA,QAAuB,IAAA;AAAA"}
1
+ {"version":3,"file":"assistant-runtime-core.d.ts","names":[],"sources":["../../../src/runtime/interfaces/assistant-runtime-core.ts"],"mappings":";;;;KAIY;WACD,SAAS;EAElB,+BAA+B,UAAU,yBAAyB;EAClE,+BAA+B;WAEtB,uBAAuB"}
@@ -4,7 +4,6 @@ import { Unsubscribe } from "../../types/unsubscribe.js";
4
4
  import { DictationAdapter } from "../../adapters/speech.js";
5
5
  import { QuoteInfo } from "../../types/quote.js";
6
6
  import { QueueItemState } from "../../store/scopes/queue-item.js";
7
-
8
7
  //#region src/runtime/interfaces/composer-runtime-core.d.ts
9
8
  type AttachmentAddErrorReason = "no-adapter" | "not-accepted" | "adapter-error";
10
9
  type AttachmentAddErrorEvent = {
@@ -34,7 +33,8 @@ type DictationState = {
34
33
  readonly inputDisabled?: boolean;
35
34
  };
36
35
  type SendOptions = {
37
- startRun?: boolean; /** Process this message next; only meaningful with the `queue` capability. */
36
+ startRun?: boolean;
37
+ /** Process this message next; only meaningful with the `queue` capability. */
38
38
  steer?: boolean;
39
39
  };
40
40
  type ComposerRuntimeCore = Readonly<{