@assistant-ui/core 0.2.19 → 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 (512) 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/generativeUI/GenerativeUI.js +1 -1
  166. package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
  167. package/dist/react/primitives/message/MessageAttachments.d.ts +4 -3
  168. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  169. package/dist/react/primitives/message/MessageGroupedParts.d.ts +1 -6
  170. package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
  171. package/dist/react/primitives/message/MessageParts.d.ts +42 -24
  172. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  173. package/dist/react/primitives/message/MessageParts.js +2 -1
  174. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  175. package/dist/react/primitives/message/MessageQuote.d.ts +2 -2
  176. package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
  177. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +0 -1
  178. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
  179. package/dist/react/primitives/part/PartMessages.d.ts +2 -2
  180. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  181. package/dist/react/primitives/thread/ThreadMessages.d.ts +35 -17
  182. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  183. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +6 -4
  184. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
  185. package/dist/react/primitives/threadList/ThreadListItems.d.ts +4 -3
  186. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  187. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +0 -1
  188. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
  189. package/dist/react/providers/AttachmentByIndexProvider.d.ts +0 -1
  190. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
  191. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +0 -1
  192. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
  193. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +0 -1
  194. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
  195. package/dist/react/providers/MessageByIdProvider.d.ts +0 -1
  196. package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
  197. package/dist/react/providers/MessageByIndexProvider.d.ts +0 -1
  198. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
  199. package/dist/react/providers/PartByIndexProvider.d.ts +0 -1
  200. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
  201. package/dist/react/providers/QueueItemByIndexProvider.d.ts +0 -1
  202. package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
  203. package/dist/react/providers/ReadonlyThreadProvider.d.ts +0 -1
  204. package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
  205. package/dist/react/providers/SuggestionByIndexProvider.d.ts +0 -1
  206. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
  207. package/dist/react/providers/TextMessagePartProvider.d.ts +0 -1
  208. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
  209. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +0 -1
  210. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
  211. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +1 -1
  212. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  213. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +2 -1
  214. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  215. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +1 -1
  216. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  217. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +3 -1
  218. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  219. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +21 -19
  220. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  221. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +0 -1
  222. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
  223. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +0 -1
  224. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  225. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -4
  226. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  227. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +6 -3
  228. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
  229. package/dist/react/runtimes/cloud/auiV0.d.ts +12 -2
  230. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  231. package/dist/react/runtimes/cloud/auiV0.js +30 -1
  232. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  233. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +0 -1
  234. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  235. package/dist/react/runtimes/createMessageConverter.d.ts +1 -7
  236. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
  237. package/dist/react/runtimes/createRuntimeExtras.d.ts +0 -1
  238. package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
  239. package/dist/react/runtimes/external-message-converter.d.ts +1 -8
  240. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  241. package/dist/react/runtimes/external-message-converter.js +42 -44
  242. package/dist/react/runtimes/external-message-converter.js.map +1 -1
  243. package/dist/react/runtimes/useExternalStoreRuntime.d.ts +0 -1
  244. package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
  245. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +0 -1
  246. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
  247. package/dist/react/runtimes/useLocalRuntime.d.ts +2 -5
  248. package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
  249. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +0 -1
  250. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  251. package/dist/react/runtimes/useStreamingTiming.d.ts +0 -1
  252. package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
  253. package/dist/react/types/MessagePartComponentTypes.d.ts +6 -3
  254. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  255. package/dist/react/types/scopes/dataRenderers.d.ts +1 -1
  256. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
  257. package/dist/react/types/scopes/interactables.d.ts +4 -2
  258. package/dist/react/types/scopes/interactables.d.ts.map +1 -1
  259. package/dist/react/types/scopes/tools.d.ts +5 -3
  260. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  261. package/dist/react/types/store-augmentation.d.ts +1 -2
  262. package/dist/react/types/store-augmentation.d.ts.map +1 -1
  263. package/dist/react/utils/getMessageQuote.d.ts +0 -1
  264. package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
  265. package/dist/react/utils/groupParts.d.ts +2 -2
  266. package/dist/react/utils/groupParts.d.ts.map +1 -1
  267. package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
  268. package/dist/runtime/api/assistant-runtime.d.ts +0 -1
  269. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  270. package/dist/runtime/api/attachment-runtime.d.ts +0 -1
  271. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  272. package/dist/runtime/api/bindings.d.ts +0 -1
  273. package/dist/runtime/api/bindings.d.ts.map +1 -1
  274. package/dist/runtime/api/composer-runtime.d.ts +6 -4
  275. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  276. package/dist/runtime/api/message-part-runtime.d.ts +0 -1
  277. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  278. package/dist/runtime/api/message-runtime.d.ts +6 -16
  279. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  280. package/dist/runtime/api/message-runtime.js +1 -1
  281. package/dist/runtime/api/paths.d.ts.map +1 -1
  282. package/dist/runtime/api/thread-list-item-runtime.d.ts +0 -1
  283. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  284. package/dist/runtime/api/thread-list-runtime.d.ts +0 -1
  285. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  286. package/dist/runtime/api/thread-runtime.d.ts +3 -1
  287. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  288. package/dist/runtime/base/base-assistant-runtime-core.d.ts +0 -1
  289. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
  290. package/dist/runtime/base/base-composer-runtime-core.d.ts +0 -1
  291. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  292. package/dist/runtime/base/base-composer-runtime-core.js +17 -3
  293. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  294. package/dist/runtime/base/base-thread-runtime-core.d.ts +2 -4
  295. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  296. package/dist/runtime/base/base-thread-runtime-core.js +1 -1
  297. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +1 -5
  298. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  299. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +1 -0
  300. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  301. package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
  302. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +0 -1
  303. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
  304. package/dist/runtime/interfaces/composer-runtime-core.d.ts +2 -2
  305. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  306. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +0 -1
  307. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  308. package/dist/runtime/interfaces/thread-runtime-core.d.ts +2 -2
  309. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  310. package/dist/runtime/queue/external-thread-queue-adapter.d.ts +0 -1
  311. package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
  312. package/dist/runtime/queue/message-queue.d.ts +6 -4
  313. package/dist/runtime/queue/message-queue.d.ts.map +1 -1
  314. package/dist/runtime/queue/message-queue.js +1 -1
  315. package/dist/runtime/utils/auto-status.d.ts +0 -1
  316. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  317. package/dist/runtime/utils/chat-model-adapter.d.ts +0 -1
  318. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  319. package/dist/runtime/utils/external-store-message.d.ts +0 -1
  320. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  321. package/dist/runtime/utils/message-repository.d.ts +1 -5
  322. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  323. package/dist/runtime/utils/message-repository.js +3 -1
  324. package/dist/runtime/utils/message-repository.js.map +1 -1
  325. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +0 -1
  326. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
  327. package/dist/runtime/utils/streaming-timing.d.ts +5 -3
  328. package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
  329. package/dist/runtime/utils/thread-message-like.d.ts +2 -2
  330. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  331. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  332. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
  333. package/dist/runtimes/external-store/external-store-adapter.d.ts +2 -2
  334. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  335. package/dist/runtimes/external-store/external-store-runtime-core.d.ts +0 -1
  336. package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
  337. package/dist/runtimes/external-store/external-store-shared-options.d.ts +0 -1
  338. package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
  339. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +0 -1
  340. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  341. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +2 -0
  342. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  343. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +1 -1
  344. package/dist/runtimes/external-store/thread-message-converter.d.ts +0 -1
  345. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
  346. package/dist/runtimes/local/local-runtime-core.d.ts +0 -1
  347. package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
  348. package/dist/runtimes/local/local-runtime-options.d.ts +0 -1
  349. package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
  350. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +0 -1
  351. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
  352. package/dist/runtimes/local/local-thread-runtime-core.d.ts +5 -21
  353. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  354. package/dist/runtimes/local/local-thread-runtime-core.js +24 -15
  355. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  356. package/dist/runtimes/local/should-continue.d.ts +0 -1
  357. package/dist/runtimes/local/should-continue.d.ts.map +1 -1
  358. package/dist/runtimes/local/should-continue.js +2 -2
  359. package/dist/runtimes/local/should-continue.js.map +1 -1
  360. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +0 -1
  361. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
  362. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +1 -2
  363. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
  364. package/dist/runtimes/remote-thread-list/adapter/in-memory.js +5 -3
  365. package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -1
  366. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +0 -1
  367. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
  368. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +6 -4
  369. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
  370. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +0 -1
  371. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  372. package/dist/runtimes/remote-thread-list/types.d.ts +0 -1
  373. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  374. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +2 -2
  375. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  376. package/dist/store/clients/chain-of-thought-client.d.ts +0 -1
  377. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
  378. package/dist/store/clients/model-context-client.d.ts +0 -1
  379. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  380. package/dist/store/clients/no-op-composer-client.d.ts +0 -1
  381. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
  382. package/dist/store/clients/runtime-adapter.d.ts +0 -1
  383. package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
  384. package/dist/store/clients/suggestions.d.ts +0 -1
  385. package/dist/store/clients/suggestions.d.ts.map +1 -1
  386. package/dist/store/clients/thread-message-client.d.ts +0 -1
  387. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  388. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +0 -1
  389. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  390. package/dist/store/runtime-clients/composer-runtime-client.d.ts +0 -1
  391. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  392. package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
  393. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +0 -1
  394. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  395. package/dist/store/runtime-clients/message-runtime-client.d.ts +0 -1
  396. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  397. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +0 -1
  398. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  399. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +0 -1
  400. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  401. package/dist/store/runtime-clients/thread-runtime-client.d.ts +0 -1
  402. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  403. package/dist/store/runtime-clients/useSubscribable.d.ts +0 -1
  404. package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
  405. package/dist/store/scope-registration.d.ts +1 -2
  406. package/dist/store/scope-registration.d.ts.map +1 -1
  407. package/dist/store/scopes/attachment.d.ts +0 -1
  408. package/dist/store/scopes/attachment.d.ts.map +1 -1
  409. package/dist/store/scopes/chain-of-thought.d.ts +0 -1
  410. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
  411. package/dist/store/scopes/composer.d.ts +0 -1
  412. package/dist/store/scopes/composer.d.ts.map +1 -1
  413. package/dist/store/scopes/message.d.ts +6 -4
  414. package/dist/store/scopes/message.d.ts.map +1 -1
  415. package/dist/store/scopes/model-context.d.ts +0 -1
  416. package/dist/store/scopes/model-context.d.ts.map +1 -1
  417. package/dist/store/scopes/part.d.ts +0 -1
  418. package/dist/store/scopes/part.d.ts.map +1 -1
  419. package/dist/store/scopes/queue-item.d.ts.map +1 -1
  420. package/dist/store/scopes/suggestion.d.ts.map +1 -1
  421. package/dist/store/scopes/suggestions.d.ts +0 -1
  422. package/dist/store/scopes/suggestions.d.ts.map +1 -1
  423. package/dist/store/scopes/thread-list-item.d.ts +0 -1
  424. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  425. package/dist/store/scopes/thread.d.ts +4 -3
  426. package/dist/store/scopes/thread.d.ts.map +1 -1
  427. package/dist/store/scopes/threads.d.ts +0 -1
  428. package/dist/store/scopes/threads.d.ts.map +1 -1
  429. package/dist/subscribable/subscribable.d.ts +0 -1
  430. package/dist/subscribable/subscribable.d.ts.map +1 -1
  431. package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -1
  432. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
  433. package/dist/types/attachment.d.ts +1 -1
  434. package/dist/types/attachment.d.ts.map +1 -1
  435. package/dist/types/directive.d.ts +3 -2
  436. package/dist/types/directive.d.ts.map +1 -1
  437. package/dist/types/error.d.ts +15 -0
  438. package/dist/types/error.d.ts.map +1 -0
  439. package/dist/types/error.js +46 -0
  440. package/dist/types/error.js.map +1 -0
  441. package/dist/types/index.d.ts +2 -2
  442. package/dist/types/message.d.ts +70 -33
  443. package/dist/types/message.d.ts.map +1 -1
  444. package/dist/types/message.js.map +1 -1
  445. package/dist/types/quote.d.ts.map +1 -1
  446. package/dist/types/trigger.d.ts +0 -1
  447. package/dist/types/trigger.d.ts.map +1 -1
  448. package/dist/types/unsubscribe.d.ts.map +1 -1
  449. package/dist/utils/composite-context-provider.d.ts +1 -0
  450. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  451. package/dist/utils/id.d.ts.map +1 -1
  452. package/dist/utils/json/is-json-equal.d.ts.map +1 -1
  453. package/dist/utils/json/is-json.d.ts +0 -1
  454. package/dist/utils/json/is-json.d.ts.map +1 -1
  455. package/dist/utils/json/is-json.js +1 -1
  456. package/dist/utils/json/is-json.js.map +1 -1
  457. package/dist/utils/json/stable-stringify-tool-args.d.ts +7 -0
  458. package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -0
  459. package/dist/utils/json/stable-stringify-tool-args.js +32 -0
  460. package/dist/utils/json/stable-stringify-tool-args.js.map +1 -0
  461. package/dist/utils/text.d.ts +0 -1
  462. package/dist/utils/text.d.ts.map +1 -1
  463. package/package.json +12 -9
  464. package/src/adapters/attachment.test.ts +107 -0
  465. package/src/adapters/attachment.ts +20 -10
  466. package/src/adapters/index.ts +6 -1
  467. package/src/adapters/suggestion.test.ts +187 -0
  468. package/src/adapters/suggestion.ts +75 -1
  469. package/src/index.ts +15 -1
  470. package/src/internal.ts +16 -0
  471. package/src/model-context/tool.test.ts +110 -0
  472. package/src/model-context/tool.ts +31 -9
  473. package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +222 -0
  474. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +214 -7
  475. package/src/react/index.ts +2 -0
  476. package/src/react/model-context/define-mcp-toolkit.ts +39 -6
  477. package/src/react/model-context/define-toolkit.test.ts +107 -0
  478. package/src/react/primitive-hooks/useMessageError.test.ts +64 -0
  479. package/src/react/primitive-hooks/useMessageError.ts +19 -6
  480. package/src/react/primitives/generativeUI/GenerativeUI.tsx +5 -1
  481. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +3 -1
  482. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +48 -19
  483. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +111 -0
  484. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +13 -3
  485. package/src/react/runtimes/cloud/auiV0.ts +71 -2
  486. package/src/react/runtimes/external-message-converter.test.tsx +102 -0
  487. package/src/react/runtimes/external-message-converter.ts +35 -10
  488. package/src/runtime/base/base-composer-runtime-core.ts +26 -7
  489. package/src/runtime/utils/message-repository.ts +8 -3
  490. package/src/runtime/utils/thread-message-like.ts +2 -0
  491. package/src/runtimes/local/local-thread-runtime-core.test.ts +127 -3
  492. package/src/runtimes/local/local-thread-runtime-core.ts +25 -23
  493. package/src/runtimes/local/should-continue.ts +5 -2
  494. package/src/runtimes/remote-thread-list/adapter/in-memory.test.ts +14 -0
  495. package/src/runtimes/remote-thread-list/adapter/in-memory.ts +13 -5
  496. package/src/tests/MessageRepository.test.ts +26 -0
  497. package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +42 -0
  498. package/src/tests/attachment-adapters.test.ts +14 -2
  499. package/src/tests/auiV0Encode.test.ts +134 -1
  500. package/src/tests/base-composer-runtime-core-addAttachment.test.ts +79 -5
  501. package/src/tests/base-composer-runtime-core-send.test.ts +145 -0
  502. package/src/tests/thread-message-like.test.ts +40 -0
  503. package/src/types/attachment.ts +1 -0
  504. package/src/types/error.test.ts +122 -0
  505. package/src/types/error.ts +74 -0
  506. package/src/types/index.ts +1 -0
  507. package/src/types/message.ts +11 -3
  508. package/src/utils/json/is-json-equal.test.ts +84 -0
  509. package/src/utils/json/is-json.test.ts +123 -0
  510. package/src/utils/json/is-json.ts +1 -1
  511. package/src/utils/json/stable-stringify-tool-args.test.ts +105 -0
  512. package/src/utils/json/stable-stringify-tool-args.ts +70 -0
@@ -1,10 +1,10 @@
1
1
  import { generateId } from "../../utils/id.js";
2
+ import { getThreadMessageText } from "../../utils/text.js";
2
3
  import { fromThreadMessageLike } from "../../runtime/utils/thread-message-like.js";
3
4
  import { bindExternalStoreMessage, getExternalStoreMessages } from "../../runtime/utils/external-store-message.js";
4
5
  import { getAutoStatus, isAutoStatus } from "../../runtime/utils/auto-status.js";
5
6
  import { ExportedMessageRepository, MessageRepository } from "../../runtime/utils/message-repository.js";
6
7
  import { EMPTY_QUEUE_ITEMS } from "../../store/scopes/queue-item.js";
7
- import { getThreadMessageText } from "../../utils/text.js";
8
8
  import { BaseThreadRuntimeCore } from "../../runtime/base/base-thread-runtime-core.js";
9
9
  import { ThreadMessageConverter } from "./thread-message-converter.js";
10
10
  import { ToolInvocationTracker } from "../tool-invocations/ToolInvocationTracker.js";
@@ -1,5 +1,4 @@
1
1
  import { ThreadMessage } from "../../types/message.js";
2
-
3
2
  //#region src/runtimes/external-store/thread-message-converter.d.ts
4
3
  type ConverterCallback<TIn> = (cache: ThreadMessage | undefined, message: TIn, idx: number) => ThreadMessage;
5
4
  declare class ThreadMessageConverter {
@@ -1 +1 @@
1
- {"version":3,"file":"thread-message-converter.d.ts","names":[],"sources":["../../../src/runtimes/external-store/thread-message-converter.ts"],"mappings":";;;KAEY,iBAAA,SACV,KAAA,EAAO,aAAA,cACP,OAAA,EAAS,GAAA,EACT,GAAA,aACG,aAAA;AAAA,cAEQ,sBAAA;EAAA,iBACM,KAAA;EAEjB,eAAA,aAA4B,OAAA,EAC1B,QAAA,WAAmB,GAAA,IACnB,SAAA,EAAW,iBAAA,CAAkB,GAAA,IAC5B,aAAA;AAAA"}
1
+ {"version":3,"file":"thread-message-converter.d.ts","names":[],"sources":["../../../src/runtimes/external-store/thread-message-converter.ts"],"mappings":";;KAEY,kBAAkB,QAC5B,OAAO,2BACP,SAAS,KACT,gBACG;cAEQ;mBACM;EAEjB,gBAAgB,YAAY,SAC1B,mBAAmB,OACnB,WAAW,kBAAkB,OAC5B"}
@@ -2,7 +2,6 @@ import { ThreadMessageLike } from "../../runtime/utils/thread-message-like.js";
2
2
  import { BaseAssistantRuntimeCore } from "../../runtime/base/base-assistant-runtime-core.js";
3
3
  import { LocalRuntimeOptionsBase } from "./local-runtime-options.js";
4
4
  import { LocalThreadListRuntimeCore } from "./local-thread-list-runtime-core.js";
5
-
6
5
  //#region src/runtimes/local/local-runtime-core.d.ts
7
6
  declare class LocalRuntimeCore extends BaseAssistantRuntimeCore {
8
7
  readonly threads: LocalThreadListRuntimeCore;
@@ -1 +1 @@
1
- {"version":3,"file":"local-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-runtime-core.ts"],"mappings":";;;;;;cAOa,gBAAA,SAAyB,wBAAA;EAAA,SACpB,OAAA,EAAO,0BAAA;EAAA,SACP,QAAA;EAAA,QAER,QAAA;cAGN,OAAA,EAAS,uBAAA,EACT,eAAA,WAA0B,iBAAA;AAAA"}
1
+ {"version":3,"file":"local-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-runtime-core.ts"],"mappings":";;;;;cAOa,yBAAyB;WACpB,SAAO;WACP;UAER;cAGN,SAAS,yBACT,0BAA0B"}
@@ -5,7 +5,6 @@ import { RealtimeVoiceAdapter } from "../../adapters/voice.js";
5
5
  import { ChatModelAdapter } from "../../runtime/utils/chat-model-adapter.js";
6
6
  import { SuggestionAdapter } from "../../adapters/suggestion.js";
7
7
  import { ThreadHistoryAdapter } from "../../adapters/thread-history.js";
8
-
9
8
  //#region src/runtimes/local/local-runtime-options.d.ts
10
9
  type LocalRuntimeOptionsBase = {
11
10
  maxSteps?: number | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"local-runtime-options.d.ts","names":[],"sources":["../../../src/runtimes/local/local-runtime-options.ts"],"mappings":";;;;;;;;;KAWY,uBAAA;EACV,QAAA;EACA,QAAA;IACE,SAAA,EAAW,gBAAA;IACX,OAAA,GAAU,oBAAA;IACV,WAAA,GAAc,iBAAA;IACd,MAAA,GAAS,sBAAA;IACT,SAAA,GAAY,gBAAA;IACZ,KAAA,GAAQ,oBAAA;IACR,QAAA,GAAW,eAAA;IACX,UAAA,GAAa,iBAAA;EAAA;EAAA;;;EAMf,uBAAA;EAdA;;;;EAoBA,2BAAA;AAAA"}
1
+ {"version":3,"file":"local-runtime-options.d.ts","names":[],"sources":["../../../src/runtimes/local/local-runtime-options.ts"],"mappings":";;;;;;;;KAWY;EACV;EACA;IACE,WAAW;IACX,UAAU;IACV,cAAc;IACd,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,WAAW;IACX,aAAa;;;;;EAMf;;;;;EAMA"}
@@ -1,7 +1,6 @@
1
1
  import { ThreadListRuntimeCore } from "../../runtime/interfaces/thread-list-runtime-core.js";
2
2
  import { BaseSubscribable } from "../../subscribable/subscribable.js";
3
3
  import { LocalThreadRuntimeCore } from "./local-thread-runtime-core.js";
4
-
5
4
  //#region src/runtimes/local/local-thread-list-runtime-core.d.ts
6
5
  type LocalThreadFactory = () => LocalThreadRuntimeCore;
7
6
  declare class LocalThreadListRuntimeCore extends BaseSubscribable implements ThreadListRuntimeCore {
@@ -1 +1 @@
1
- {"version":3,"file":"local-thread-list-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-thread-list-runtime-core.ts"],"mappings":";;;;;KAIY,kBAAA,SAA2B,sBAAsB;AAAA,cAahD,0BAAA,SACH,gBAAA,YACG,qBAAA;EAAA,QAEH,WAAA;cACI,cAAA,EAAgB,kBAAA;EAAA,IAMjB,SAAA;EAIJ,wBAAA,IAAwB,sBAAA;EAAA,IAIpB,WAAA;EAAA,IAIA,SAAA;EAAA,IAIA,iBAAA;EAAA,IAIA,YAAA;EAAA,IAIA,WAAA,IAAW,QAAA;;;;;;;;;EAIf,oBAAA;EAIA,qBAAA,IAAyB,OAAA;EAIzB,WAAA,CAAY,QAAA;;;;;;;;EAcN,cAAA,IAAkB,OAAA;EAIxB,iBAAA,IAAqB,OAAA;EAIrB,MAAA,IAAU,OAAA;EAIV,OAAA,IAAW,OAAA;EAIX,MAAA,IAAU,OAAA;EAIV,SAAA,IAAa,OAAA;EAIb,MAAA,IAAU,OAAA;EAIV,UAAA,CACL,QAAA,WACC,OAAA;IAAU,QAAA;IAAkB,UAAA;EAAA;EAIxB,aAAA;AAAA"}
1
+ {"version":3,"file":"local-thread-list-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-thread-list-runtime-core.ts"],"mappings":";;;;KAIY,2BAA2B;cAa1B,mCACH,4BACG;UAEH;cACI,gBAAgB;MAMjB;EAIJ,4BAAwB;MAIpB;MAIA;MAIA;MAIA;MAIA,eAAW;;;;;;;;;EAIf;EAIA,yBAAyB;EAIzB,YAAY;;;;;;;;EAcN,kBAAkB;EAIxB,qBAAqB;EAIrB,UAAU;EAIV,WAAW;EAIX,UAAU;EAIV,aAAa;EAIb,UAAU;EAIV,WACL,mBACC;IAAU;IAAkB;;EAIxB"}
@@ -11,6 +11,7 @@ import { SuggestionAdapter } from "../../adapters/suggestion.js";
11
11
  import { ThreadHistoryAdapter } from "../../adapters/thread-history.js";
12
12
  import { BaseThreadRuntimeCore } from "../../runtime/base/base-thread-runtime-core.js";
13
13
  import { LocalRuntimeOptionsBase } from "./local-runtime-options.js";
14
+ import "../../index.js";
14
15
  //#region src/runtimes/local/local-thread-runtime-core.d.ts
15
16
  declare class LocalThreadRuntimeCore extends BaseThreadRuntimeCore implements ThreadRuntimeCore {
16
17
  readonly capabilities: {
@@ -65,34 +66,17 @@ declare class LocalThreadRuntimeCore extends BaseThreadRuntimeCore implements Th
65
66
  removeQueueItem(queueItemId: string): void;
66
67
  private _runAppend;
67
68
  deleteMessage(messageId: string): Promise<void>;
68
- resumeRun({
69
- stream,
70
- ...startConfig
71
- }: ResumeRunConfig): Promise<void>;
69
+ resumeRun({ stream, ...startConfig }: ResumeRunConfig): Promise<void>;
72
70
  exportExternalState(): any;
73
71
  importExternalState(): void;
74
- startRun({
75
- parentId,
76
- runConfig
77
- }: StartRunConfig, runCallback?: ChatModelAdapter["run"]): Promise<void>;
72
+ startRun({ parentId, runConfig }: StartRunConfig, runCallback?: ChatModelAdapter["run"]): Promise<void>;
78
73
  private _runLoop;
79
74
  private performRoundtrip;
80
75
  detach(): void;
81
76
  cancelRun(): void;
82
- addToolResult({
83
- messageId,
84
- toolCallId,
85
- result,
86
- isError,
87
- artifact
88
- }: AddToolResultOptions): void;
77
+ addToolResult({ messageId, toolCallId, result, isError, artifact }: AddToolResultOptions): void;
89
78
  resumeToolCall(_options: ResumeToolCallOptions): void;
90
- respondToToolApproval({
91
- approvalId,
92
- approved,
93
- optionId,
94
- reason
95
- }: RespondToToolApprovalOptions): void;
79
+ respondToToolApproval({ approvalId, approved, optionId, reason }: RespondToToolApprovalOptions): void;
96
80
  }
97
81
  //#endregion
98
82
  export { LocalThreadRuntimeCore };
@@ -1 +1 @@
1
- {"version":3,"file":"local-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;;cA2Ca,sBAAA,SACH,qBAAA,YACG,iBAAA;EAAA,SAEK,YAAA;;;;;;;;;;;;;;;UAgBR,eAAA;EAAA,QAEA,MAAA;EAAA,QACA,iBAAA;EAAA,SAEQ,UAAA;EAAA,SACA,cAAA;EAAA,QAER,UAAA;EAAA,IACG,SAAA;EAAA,QAIH,YAAA;EAAA,QACA,sBAAA;EAAA,IACG,WAAA,aAAwB,gBAAA;EAAA,IAIxB,QAAA;;;;;;;;;;cAKT,eAAA,EAAiB,oBAAA,EACjB,OAAA,EAAS,uBAAA;EAAA,QAMH,QAAA;EAAA,QAEA,cAAA;EAAA,QAEA,YAAA;EAED,yBAAA,CAA0B,WAAA;EAAA,QAIzB,qBAAA;EAED,kCAAA,CACL,UAAA,QAAkB,OAAA;EAAA,IAKT,MAAA;EAIJ,qBAAA,CAAsB,OAAA,EAAS,uBAAA;EAAA,QAuE9B,YAAA;EACD,eAAA,IAAe,OAAA;EAuCT,MAAA,CAAO,OAAA,EAAS,aAAA,GAAgB,OAAA;EAWtC,aAAA,aAA0B,cAAA;EAM1B,cAAA,CAAe,WAAA;EAIf,eAAA,CAAgB,WAAA;EAAA,QAIT,UAAA;EAgCD,aAAA,CAAc,SAAA,WAAoB,OAAA;EAmBxC,SAAA;IAAY,MAAA;IAAA,GAAW;EAAA,GAAe,eAAA,GAAkB,OAAA;EAMxD,mBAAA;EAIA,mBAAA;EAIM,QAAA;IACT,QAAA;IAAU;EAAA,GAAa,cAAA,EACzB,WAAA,GAAc,gBAAA,UACb,OAAA;EAAA,QAuBW,QAAA;EAAA,QA2DA,gBAAA;EAmLP,MAAA;EAOA,SAAA;EAOA,aAAA;IACL,SAAA;IACA,UAAA;IACA,MAAA;IACA,OAAA;IACA;EAAA,GACC,oBAAA;EA2CI,cAAA,CAAe,QAAA,EAAU,qBAAA;EAMzB,qBAAA;IACL,UAAA;IACA,QAAA;IACA,QAAA;IACA;EAAA,GACC,4BAAA;AAAA"}
1
+ {"version":3,"file":"local-thread-runtime-core.d.ts","names":[],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"mappings":";;;;;;;;;;;;;;;cA6Ca,+BACH,iCACG;WAEK;;;;;;;;;;;;;;;UAgBR;UAEA;UACA;WAEQ;WACA;UAER;MACG;UAIH;UACA;MACG,wBAAwB;MAIxB;;;;;;;;;;cAKT,iBAAiB,sBACjB,SAAS;UAMH;UAEA;UAEA;EAED,0BAA0B;UAIzB;EAED,mCACL,kBAAkB;MAKT;EAIJ,sBAAsB,SAAS;UAuE9B;EACD,mBAAe;EAuCT,OAAO,SAAS,gBAAgB;EAWtC,0BAA0B;EAM1B,eAAe;EAIf,gBAAgB;UAIT;EAgCD,cAAc,oBAAoB;EAmBxC,YAAY,WAAW,eAAe,kBAAkB;EAMxD;EAIA;EAIM,WACT,UAAU,aAAa,gBACzB,cAAc,0BACb;UAuBW;UA2DA;EA+KP;EASA;EASA,gBACL,WACA,YACA,QACA,SACA,YACC;EA2CI,eAAe,UAAU;EAMzB,wBACL,YACA,UACA,UACA,UACC"}
@@ -1,4 +1,6 @@
1
1
  import { generateId } from "../../utils/id.js";
2
+ import { consumeSuggestionResult } from "../../adapters/suggestion.js";
3
+ import { toAssistantError } from "../../types/error.js";
2
4
  import { fromThreadMessageLike } from "../../runtime/utils/thread-message-like.js";
3
5
  import { EMPTY_QUEUE_ITEMS } from "../../store/scopes/queue-item.js";
4
6
  import { createMessageQueue } from "../../runtime/queue/message-queue.js";
@@ -240,21 +242,24 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
240
242
  this._notifyEventSubscribers("runEnd", {});
241
243
  if (!this._queueRunInFlight) queueMicrotask(() => this._queue?.notifyIdle());
242
244
  }
243
- this._suggestionsController = new AbortController();
244
- const signal = this._suggestionsController.signal;
245
245
  if (this.adapters.suggestion && message.status?.type !== "requires-action") {
246
- const promiseOrGenerator = this.adapters.suggestion?.generate({ messages: this.messages });
247
- if (Symbol.asyncIterator in promiseOrGenerator) for await (const r of promiseOrGenerator) {
248
- if (signal.aborted) break;
249
- this._suggestions = r;
250
- this._notifySubscribers();
251
- }
252
- else {
253
- const result = await promiseOrGenerator;
254
- if (signal.aborted) return;
255
- this._suggestions = result;
256
- this._notifySubscribers();
257
- }
246
+ this._suggestionsController = new AbortController();
247
+ const signal = this._suggestionsController.signal;
248
+ const adapter = this.adapters.suggestion;
249
+ (async () => {
250
+ try {
251
+ await consumeSuggestionResult(adapter.generate({
252
+ messages: this.messages,
253
+ signal
254
+ }), {
255
+ signal,
256
+ onUpdate: (r) => {
257
+ this._suggestions = r;
258
+ this._notifySubscribers();
259
+ }
260
+ });
261
+ } catch {}
262
+ })();
258
263
  }
259
264
  }
260
265
  async performRoundtrip(parentId, message, runConfig, runCallback) {
@@ -351,7 +356,7 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
351
356
  updateMessage({ status: {
352
357
  type: "incomplete",
353
358
  reason: "error",
354
- error: e instanceof Error ? e.message : `[${typeof e}] ${new String(e).toString()}`
359
+ error: toAssistantError(e)
355
360
  } });
356
361
  throw e;
357
362
  }
@@ -370,12 +375,16 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
370
375
  const error = new AbortError(true);
371
376
  this.abortController?.abort(error);
372
377
  this.abortController = null;
378
+ this._suggestionsController?.abort();
379
+ this._suggestionsController = null;
373
380
  }
374
381
  cancelRun() {
375
382
  this._queue?.adapter.clear("cancel-run");
376
383
  const error = new AbortError(false);
377
384
  this.abortController?.abort(error);
378
385
  this.abortController = null;
386
+ this._suggestionsController?.abort();
387
+ this._suggestionsController = null;
379
388
  }
380
389
  addToolResult({ messageId, toolCallId, result, isError, artifact }) {
381
390
  const messageData = this.repository.getMessage(messageId);
@@ -1 +1 @@
1
- {"version":3,"file":"local-thread-runtime-core.js","names":["fromThreadMessageLike","generateId","ChatModelAdapter","ChatModelRunResult","shouldContinue","LocalRuntimeOptionsBase","AddToolResultOptions","ResumeToolCallOptions","RespondToToolApprovalOptions","ThreadSuggestion","ThreadRuntimeCore","StartRunConfig","ResumeRunConfig","BaseThreadRuntimeCore","AppendMessage","ThreadAssistantMessage","RunConfig","ModelContextProvider","createMessageQueue","MessageQueueController","EMPTY_QUEUE_ITEMS","QueueItemState","AbortError","Error","name","detach","constructor","message","LocalThreadRuntimeCore","capabilities","switchToBranch","switchBranchDuringRun","edit","delete","reload","cancel","unstable_copy","speech","dictation","voice","attachments","feedback","queue","abortController","AbortController","_queue","_queueRunInFlight","isDisabled","isSendDisabled","_isLoading","isLoading","_suggestions","_suggestionsController","suggestions","adapters","_options","contextProvider","options","__internal_setOptions","_lastRunConfig","_getThreadId","__internal_setGetThreadId","getThreadId","_getInitializePromise","Promise","__internal_setGetInitializePromise","getPromise","extras","undefined","hasUpdates","canSpeak","canDictate","canVoice","canAttach","canFeedback","canDelete","history","canQueue","unstable_enableMessageQueue","run","_runAppend","finally","notifyIdle","catch","subscribe","_notifySubscribers","adapter","clear","_loadPromise","__internal_load","promise","load","resolve","then","repo","repository","import","messages","length","ensureInitialized","resume","bind","unstable_resume","startRun","parentId","headId","sourceId","runConfig","append","isTail","at","id","willRun","role","enqueue","steer","getQueueItems","items","steerQueueItem","queueItemId","removeQueueItem","remove","initPromise","newMessage","type","reason","addOrUpdateMessage","resetHead","deleteMessage","messageId","getMessages","messageIndex","findIndex","m","resumeRun","stream","startConfig","exportExternalState","importExternalState","runCallback","status","content","metadata","unstable_state","state","unstable_annotations","unstable_data","steps","custom","createdAt","Date","_runLoop","_notifyEventSubscribers","notifyBusy","abort","performRoundtrip","unstable_humanToolNames","queueMicrotask","signal","suggestion","promiseOrGenerator","generate","Symbol","asyncIterator","r","aborted","result","initialContent","initialAnnotations","initialData","initialSteps","initialCustom","updateMessage","Partial","newSteps","newAnnotations","newData","annotations","data","timing","maxSteps","unstable_composerMetadata","_","context","getModelContext","chatModel","abortSignal","threadId","unstable_assistantMessageId","unstable_threadId","unstable_parentId","unstable_getMessage","e","error","String","toString","cancelRun","addToolResult","toolCallId","isError","artifact","messageData","getMessage","added","found","newContent","map","c","resumeToolCall","respondToToolApproval","approvalId","approved","optionId","findLast","some","approval","target","find","resolution","targetApproval"],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"sourcesContent":["import { fromThreadMessageLike } from \"../../runtime/utils/thread-message-like\";\nimport { generateId } from \"../../utils/id\";\nimport type {\n ChatModelAdapter,\n ChatModelRunResult,\n} from \"../../runtime/utils/chat-model-adapter\";\nimport { shouldContinue } from \"./should-continue\";\nimport type { LocalRuntimeOptionsBase } from \"./local-runtime-options\";\nimport type {\n AddToolResultOptions,\n ResumeToolCallOptions,\n RespondToToolApprovalOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n StartRunConfig,\n ResumeRunConfig,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport { BaseThreadRuntimeCore } from \"../../runtime/base/base-thread-runtime-core\";\nimport type {\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types/message\";\nimport type { RunConfig } from \"../../types/message\";\nimport type { ModelContextProvider } from \"../../model-context/types\";\nimport {\n createMessageQueue,\n type MessageQueueController,\n} from \"../../runtime/queue/message-queue\";\nimport {\n EMPTY_QUEUE_ITEMS,\n type QueueItemState,\n} from \"../../store/scopes/queue-item\";\n\nclass AbortError extends Error {\n override name = \"AbortError\";\n detach: boolean;\n\n constructor(detach: boolean, message?: string) {\n super(message);\n this.detach = detach;\n }\n}\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n switchBranchDuringRun: true,\n edit: true,\n delete: false,\n reload: true,\n cancel: true,\n unstable_copy: true,\n speech: false,\n dictation: false,\n voice: false,\n attachments: false,\n feedback: false,\n queue: false,\n };\n\n private abortController: AbortController | null = null;\n\n private _queue: MessageQueueController | null = null;\n private _queueRunInFlight = false;\n\n public readonly isDisabled = false;\n public readonly isSendDisabled = false;\n\n private _isLoading = false;\n public get isLoading() {\n return this._isLoading;\n }\n\n private _suggestions: readonly ThreadSuggestion[] = [];\n private _suggestionsController: AbortController | null = null;\n public get suggestions(): readonly ThreadSuggestion[] {\n return this._suggestions;\n }\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n contextProvider: ModelContextProvider,\n options: LocalRuntimeOptionsBase,\n ) {\n super(contextProvider);\n this.__internal_setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n private _lastRunConfig: RunConfig = {};\n\n private _getThreadId?: () => string | undefined;\n\n public __internal_setGetThreadId(getThreadId: () => string | undefined) {\n this._getThreadId = getThreadId;\n }\n\n private _getInitializePromise?: () => Promise<unknown> | undefined;\n\n public __internal_setGetInitializePromise(\n getPromise: () => Promise<unknown> | undefined,\n ) {\n this._getInitializePromise = getPromise;\n }\n\n public get extras() {\n return undefined;\n }\n\n public __internal_setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canDictate = options.adapters?.dictation !== undefined;\n if (this.capabilities.dictation !== canDictate) {\n this.capabilities.dictation = canDictate;\n hasUpdates = true;\n }\n\n const canVoice = options.adapters?.voice !== undefined;\n if (this.capabilities.voice !== canVoice) {\n this.capabilities.voice = canVoice;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n const canDelete = options.adapters?.history?.delete !== undefined;\n if (this.capabilities.delete !== canDelete) {\n this.capabilities.delete = canDelete;\n hasUpdates = true;\n }\n\n const canQueue = options.unstable_enableMessageQueue === true;\n if (canQueue && !this._queue) {\n this._queue = createMessageQueue({\n run: (message) => {\n // release the queue when the dispatch settles, even if it rejects\n // before reaching startRun's finally, so a failure can't deadlock it\n this._queueRunInFlight = true;\n void this._runAppend(message)\n .finally(() => {\n this._queueRunInFlight = false;\n this._queue?.notifyIdle();\n })\n .catch(() => {});\n },\n });\n this._queue.subscribe(() => this._notifySubscribers());\n } else if (!canQueue && this._queue) {\n this._queue.adapter.clear(\"cancel-run\");\n this._queue = null;\n }\n if (this.capabilities.queue !== canQueue) {\n this.capabilities.queue = canQueue;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n }\n\n private _loadPromise: Promise<void> | undefined;\n public __internal_load() {\n if (this._loadPromise) return this._loadPromise;\n\n const promise = this.adapters.history?.load() ?? Promise.resolve(null);\n\n this._isLoading = true;\n this._notifySubscribers();\n\n this._loadPromise = promise\n .then((repo) => {\n if (!repo) return;\n this.repository.import(repo);\n if (repo.messages.length > 0) {\n this.ensureInitialized();\n }\n this._notifySubscribers();\n\n const resume = this.adapters.history?.resume?.bind(\n this.adapters.history,\n );\n if (repo.unstable_resume && resume) {\n this.startRun(\n {\n parentId: this.repository.headId,\n sourceId: this.repository.headId,\n runConfig: this._lastRunConfig,\n },\n resume,\n ).catch(() => {});\n }\n })\n .finally(() => {\n this._isLoading = false;\n this._notifySubscribers();\n });\n\n return this._loadPromise;\n }\n\n public async append(message: AppendMessage): Promise<void> {\n const isTail = message.parentId === (this.messages.at(-1)?.id ?? null);\n const willRun = message.startRun ?? message.role === \"user\";\n if (this._queue && willRun && isTail) {\n this._queue.adapter.enqueue(message, { steer: message.steer ?? false });\n return;\n }\n if (this._queue && !isTail) this._queue.adapter.clear(\"edit\");\n return this._runAppend(message);\n }\n\n public getQueueItems(): readonly QueueItemState[] {\n // Reads can arrive during base-thread construction, before the queue field\n // is assigned, so guard against the unset field.\n return this._queue?.adapter.items ?? EMPTY_QUEUE_ITEMS;\n }\n\n public steerQueueItem(queueItemId: string): void {\n this._queue?.adapter.steer(queueItemId);\n }\n\n public removeQueueItem(queueItemId: string): void {\n this._queue?.adapter.remove(queueItemId);\n }\n\n private async _runAppend(message: AppendMessage): Promise<void> {\n this.ensureInitialized();\n\n const initPromise = this._getInitializePromise?.();\n if (initPromise) {\n await initPromise;\n }\n\n const newMessage = fromThreadMessageLike(message, generateId(), {\n type: \"complete\",\n reason: \"unknown\",\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n this._options.adapters.history?.append({\n parentId: message.parentId,\n message: newMessage,\n ...(message.runConfig !== undefined && { runConfig: message.runConfig }),\n });\n\n const startRun = message.startRun ?? message.role === \"user\";\n if (startRun) {\n await this.startRun({\n parentId: newMessage.id,\n sourceId: message.sourceId,\n runConfig: message.runConfig ?? {},\n });\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n }\n }\n\n public async deleteMessage(messageId: string): Promise<void> {\n const adapter = this._options.adapters.history;\n if (!adapter?.delete)\n throw new Error(\"Runtime does not support deleting messages.\");\n\n const messages = this.repository.getMessages();\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) throw new Error(\"Message not found.\");\n\n const message = messages[messageIndex]!;\n const parentId = messages[messageIndex - 1]?.id ?? null;\n const items = [{ parentId, message }];\n\n await adapter.delete(items);\n\n this.repository.deleteMessage(messageId);\n this._notifySubscribers();\n }\n\n public resumeRun({ stream, ...startConfig }: ResumeRunConfig): Promise<void> {\n if (!stream)\n throw new Error(\"You must pass a stream parameter to resume runs.\");\n return this.startRun(startConfig, stream);\n }\n\n public exportExternalState(): any {\n throw new Error(\"Runtime does not support exporting external states.\");\n }\n\n public importExternalState(): void {\n throw new Error(\"Runtime does not support importing external states.\");\n }\n\n public async startRun(\n { parentId, runConfig }: StartRunConfig,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this.ensureInitialized();\n\n // add assistant message\n const id = generateId();\n const message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n metadata: {\n unstable_state: this.state,\n unstable_annotations: [],\n unstable_data: [],\n steps: [],\n custom: {},\n },\n createdAt: new Date(),\n };\n\n return this._runLoop(parentId, message, runConfig, runCallback);\n }\n\n private async _runLoop(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this._notifyEventSubscribers(\"runStart\", {});\n\n try {\n // mark busy for runs not started through the queue (regenerate, resume)\n this._queue?.notifyBusy();\n this._suggestions = [];\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n this._notifySubscribers();\n\n do {\n message = await this.performRoundtrip(\n parentId,\n message,\n runConfig,\n runCallback,\n );\n runCallback = undefined;\n } while (shouldContinue(message, this._options.unstable_humanToolNames));\n } finally {\n this._notifyEventSubscribers(\"runEnd\", {});\n // queue-driven runs release from the driver settle handler; a direct\n // run (regenerate, resume) releases here\n if (!this._queueRunInFlight) {\n queueMicrotask(() => this._queue?.notifyIdle());\n }\n }\n\n this._suggestionsController = new AbortController();\n const signal = this._suggestionsController.signal;\n if (\n this.adapters.suggestion &&\n message.status?.type !== \"requires-action\"\n ) {\n const promiseOrGenerator = this.adapters.suggestion?.generate({\n messages: this.messages,\n });\n\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n if (signal.aborted) break;\n this._suggestions = r;\n this._notifySubscribers();\n }\n } else {\n const result = await promiseOrGenerator;\n if (signal.aborted) return;\n this._suggestions = result;\n this._notifySubscribers();\n }\n }\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ) {\n const messages = parentId ? this.repository.getMessages(parentId) : [];\n\n // abort existing run\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n const initialContent = message.content;\n const initialAnnotations = message.metadata?.unstable_annotations;\n const initialData = message.metadata?.unstable_data;\n const initialSteps = message.metadata?.steps;\n const initialCustom = message.metadata?.custom;\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n const newSteps = m.metadata?.steps;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n const newAnnotations = m.metadata?.unstable_annotations;\n const newData = m.metadata?.unstable_data;\n const annotations = newAnnotations\n ? [...(initialAnnotations ?? []), ...newAnnotations]\n : undefined;\n const data = newData ? [...(initialData ?? []), ...newData] : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(m.metadata.unstable_state\n ? { unstable_state: m.metadata.unstable_state }\n : undefined),\n ...(annotations\n ? { unstable_annotations: annotations }\n : undefined),\n ...(data ? { unstable_data: data } : undefined),\n ...(steps ? { steps } : undefined),\n ...(m.metadata?.timing\n ? { timing: m.metadata.timing }\n : undefined),\n ...(m.metadata?.custom\n ? {\n custom: {\n ...(initialCustom ?? {}),\n ...m.metadata.custom,\n },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps ?? 2;\n\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n // reached max tool steps\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n } else {\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n\n // Switch to the new message branch right after adding it for the first time\n this.repository.resetHead(message.id);\n this._notifySubscribers();\n }\n\n try {\n this._lastRunConfig = runConfig ?? {};\n // unstable_composerMetadata is composer-only (stamped onto the outgoing\n // message); never expose it to the chat-model adapter's run context.\n const { unstable_composerMetadata: _, ...context } =\n this.getModelContext();\n\n runCallback =\n runCallback ??\n this.adapters.chatModel.run.bind(this.adapters.chatModel);\n\n const abortSignal = this.abortController.signal;\n const threadId = this._getThreadId?.();\n const promiseOrGenerator = runCallback({\n messages,\n runConfig: this._lastRunConfig,\n abortSignal,\n context,\n unstable_assistantMessageId: message.id,\n unstable_threadId: threadId,\n unstable_parentId: parentId,\n unstable_getMessage() {\n return message;\n },\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n if (abortSignal.aborted) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n break;\n }\n\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n // TODO this should be handled by the run result stream\n if (e instanceof AbortError) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"error\",\n error:\n e instanceof Error\n ? e.message\n : `[${typeof e}] ${new String(e).toString()}`,\n },\n });\n\n throw e;\n }\n } finally {\n this.abortController = null;\n\n if (\n message.status.type === \"complete\" ||\n message.status.type === \"incomplete\"\n ) {\n await this._options.adapters.history?.append({\n parentId,\n message: message,\n runConfig: this._lastRunConfig,\n });\n }\n }\n return message;\n }\n\n public detach() {\n this._queue?.adapter.clear(\"cancel-run\");\n const error = new AbortError(true);\n this.abortController?.abort(error);\n this.abortController = null;\n }\n\n public cancelRun() {\n this._queue?.adapter.clear(\"cancel-run\");\n const error = new AbortError(false);\n this.abortController?.abort(error);\n this.abortController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n isError,\n artifact,\n }: AddToolResultOptions) {\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (!c.result) added = true;\n return {\n ...c,\n result,\n artifact,\n isError,\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n // a result may arrive mid-run or on a non-head message; the resume\n // intentionally aborts any in-flight run, unlike respondToToolApproval\n if (\n added &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n }\n }\n\n public resumeToolCall(_options: ResumeToolCallOptions) {\n throw new Error(\n \"Local runtime does not support resuming tool calls. For human-in-the-loop tools, list the tool in unstable_humanToolNames and complete the call with addToolResult.\",\n );\n }\n\n public respondToToolApproval({\n approvalId,\n approved,\n optionId,\n reason,\n }: RespondToToolApprovalOptions) {\n let message = this.repository\n .getMessages()\n .findLast(\n (m): m is ThreadAssistantMessage =>\n m.role === \"assistant\" &&\n m.content.some(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n ),\n );\n\n if (!message)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n\n if (this.abortController !== null)\n throw new Error(\n \"Tried to respond to a tool approval while a run is in progress\",\n );\n\n if (message.status?.type !== \"requires-action\")\n throw new Error(\n \"Tried to respond to a tool approval on a message whose status is not requires-action\",\n );\n\n const target = message.content.find(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n );\n if (target?.type !== \"tool-call\" || !target.approval)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n if (target.approval.resolution !== undefined)\n throw new Error(\n \"Tried to respond to a tool approval that was cancelled or expired\",\n );\n if (target.approval.approved !== undefined)\n throw new Error(\"Tried to respond to an already decided tool approval\");\n\n const targetApproval = target.approval;\n const newContent = message.content.map((c) => {\n if (c !== target) return c;\n const approval = {\n ...targetApproval,\n approved,\n ...(optionId != null && { optionId }),\n ...(reason != null && { reason }),\n };\n if (approved) return { ...c, approval };\n return {\n ...c,\n approval,\n result: { error: reason || \"Tool approval denied\" },\n isError: true,\n };\n });\n\n message = { ...message, content: newContent };\n const { parentId } = this.repository.getMessage(message.id);\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n if (\n this.repository.headId === message.id &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"local-thread-runtime-core.js","names":["fromThreadMessageLike","generateId","ChatModelAdapter","ChatModelRunResult","shouldContinue","LocalRuntimeOptionsBase","consumeSuggestionResult","AddToolResultOptions","ResumeToolCallOptions","RespondToToolApprovalOptions","ThreadSuggestion","ThreadRuntimeCore","StartRunConfig","ResumeRunConfig","BaseThreadRuntimeCore","AppendMessage","ThreadAssistantMessage","RunConfig","toAssistantError","ModelContextProvider","createMessageQueue","MessageQueueController","EMPTY_QUEUE_ITEMS","QueueItemState","AbortError","Error","name","detach","constructor","message","LocalThreadRuntimeCore","capabilities","switchToBranch","switchBranchDuringRun","edit","delete","reload","cancel","unstable_copy","speech","dictation","voice","attachments","feedback","queue","abortController","AbortController","_queue","_queueRunInFlight","isDisabled","isSendDisabled","_isLoading","isLoading","_suggestions","_suggestionsController","suggestions","adapters","_options","contextProvider","options","__internal_setOptions","_lastRunConfig","_getThreadId","__internal_setGetThreadId","getThreadId","_getInitializePromise","Promise","__internal_setGetInitializePromise","getPromise","extras","undefined","hasUpdates","canSpeak","canDictate","canVoice","canAttach","canFeedback","canDelete","history","canQueue","unstable_enableMessageQueue","run","_runAppend","finally","notifyIdle","catch","subscribe","_notifySubscribers","adapter","clear","_loadPromise","__internal_load","promise","load","resolve","then","repo","repository","import","messages","length","ensureInitialized","resume","bind","unstable_resume","startRun","parentId","headId","sourceId","runConfig","append","isTail","at","id","willRun","role","enqueue","steer","getQueueItems","items","steerQueueItem","queueItemId","removeQueueItem","remove","initPromise","newMessage","type","reason","addOrUpdateMessage","resetHead","deleteMessage","messageId","getMessages","messageIndex","findIndex","m","resumeRun","stream","startConfig","exportExternalState","importExternalState","runCallback","status","content","metadata","unstable_state","state","unstable_annotations","unstable_data","steps","custom","createdAt","Date","_runLoop","_notifyEventSubscribers","notifyBusy","abort","performRoundtrip","unstable_humanToolNames","queueMicrotask","suggestion","signal","promiseOrGenerator","generate","onUpdate","r","initialContent","initialAnnotations","initialData","initialSteps","initialCustom","updateMessage","Partial","newSteps","newAnnotations","newData","annotations","data","timing","maxSteps","unstable_composerMetadata","_","context","getModelContext","chatModel","abortSignal","threadId","unstable_assistantMessageId","unstable_threadId","unstable_parentId","unstable_getMessage","Symbol","asyncIterator","aborted","e","error","cancelRun","addToolResult","toolCallId","result","isError","artifact","messageData","getMessage","added","found","newContent","map","c","resumeToolCall","respondToToolApproval","approvalId","approved","optionId","findLast","some","approval","target","find","resolution","targetApproval"],"sources":["../../../src/runtimes/local/local-thread-runtime-core.ts"],"sourcesContent":["import { fromThreadMessageLike } from \"../../runtime/utils/thread-message-like\";\nimport { generateId } from \"../../utils/id\";\nimport type {\n ChatModelAdapter,\n ChatModelRunResult,\n} from \"../../runtime/utils/chat-model-adapter\";\nimport { shouldContinue } from \"./should-continue\";\nimport type { LocalRuntimeOptionsBase } from \"./local-runtime-options\";\nimport { consumeSuggestionResult } from \"../../adapters/suggestion\";\nimport type {\n AddToolResultOptions,\n ResumeToolCallOptions,\n RespondToToolApprovalOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n StartRunConfig,\n ResumeRunConfig,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport { BaseThreadRuntimeCore } from \"../../runtime/base/base-thread-runtime-core\";\nimport type {\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types/message\";\nimport type { RunConfig } from \"../../types/message\";\nimport { toAssistantError } from \"../../types/error\";\nimport type { ModelContextProvider } from \"../../model-context/types\";\nimport {\n createMessageQueue,\n type MessageQueueController,\n} from \"../../runtime/queue/message-queue\";\nimport {\n EMPTY_QUEUE_ITEMS,\n type QueueItemState,\n} from \"../../store/scopes/queue-item\";\n\nclass AbortError extends Error {\n override name = \"AbortError\";\n detach: boolean;\n\n constructor(detach: boolean, message?: string) {\n super(message);\n this.detach = detach;\n }\n}\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n switchBranchDuringRun: true,\n edit: true,\n delete: false,\n reload: true,\n cancel: true,\n unstable_copy: true,\n speech: false,\n dictation: false,\n voice: false,\n attachments: false,\n feedback: false,\n queue: false,\n };\n\n private abortController: AbortController | null = null;\n\n private _queue: MessageQueueController | null = null;\n private _queueRunInFlight = false;\n\n public readonly isDisabled = false;\n public readonly isSendDisabled = false;\n\n private _isLoading = false;\n public get isLoading() {\n return this._isLoading;\n }\n\n private _suggestions: readonly ThreadSuggestion[] = [];\n private _suggestionsController: AbortController | null = null;\n public get suggestions(): readonly ThreadSuggestion[] {\n return this._suggestions;\n }\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n contextProvider: ModelContextProvider,\n options: LocalRuntimeOptionsBase,\n ) {\n super(contextProvider);\n this.__internal_setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n private _lastRunConfig: RunConfig = {};\n\n private _getThreadId?: () => string | undefined;\n\n public __internal_setGetThreadId(getThreadId: () => string | undefined) {\n this._getThreadId = getThreadId;\n }\n\n private _getInitializePromise?: () => Promise<unknown> | undefined;\n\n public __internal_setGetInitializePromise(\n getPromise: () => Promise<unknown> | undefined,\n ) {\n this._getInitializePromise = getPromise;\n }\n\n public get extras() {\n return undefined;\n }\n\n public __internal_setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canDictate = options.adapters?.dictation !== undefined;\n if (this.capabilities.dictation !== canDictate) {\n this.capabilities.dictation = canDictate;\n hasUpdates = true;\n }\n\n const canVoice = options.adapters?.voice !== undefined;\n if (this.capabilities.voice !== canVoice) {\n this.capabilities.voice = canVoice;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n const canDelete = options.adapters?.history?.delete !== undefined;\n if (this.capabilities.delete !== canDelete) {\n this.capabilities.delete = canDelete;\n hasUpdates = true;\n }\n\n const canQueue = options.unstable_enableMessageQueue === true;\n if (canQueue && !this._queue) {\n this._queue = createMessageQueue({\n run: (message) => {\n // release the queue when the dispatch settles, even if it rejects\n // before reaching startRun's finally, so a failure can't deadlock it\n this._queueRunInFlight = true;\n void this._runAppend(message)\n .finally(() => {\n this._queueRunInFlight = false;\n this._queue?.notifyIdle();\n })\n .catch(() => {});\n },\n });\n this._queue.subscribe(() => this._notifySubscribers());\n } else if (!canQueue && this._queue) {\n this._queue.adapter.clear(\"cancel-run\");\n this._queue = null;\n }\n if (this.capabilities.queue !== canQueue) {\n this.capabilities.queue = canQueue;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n }\n\n private _loadPromise: Promise<void> | undefined;\n public __internal_load() {\n if (this._loadPromise) return this._loadPromise;\n\n const promise = this.adapters.history?.load() ?? Promise.resolve(null);\n\n this._isLoading = true;\n this._notifySubscribers();\n\n this._loadPromise = promise\n .then((repo) => {\n if (!repo) return;\n this.repository.import(repo);\n if (repo.messages.length > 0) {\n this.ensureInitialized();\n }\n this._notifySubscribers();\n\n const resume = this.adapters.history?.resume?.bind(\n this.adapters.history,\n );\n if (repo.unstable_resume && resume) {\n this.startRun(\n {\n parentId: this.repository.headId,\n sourceId: this.repository.headId,\n runConfig: this._lastRunConfig,\n },\n resume,\n ).catch(() => {});\n }\n })\n .finally(() => {\n this._isLoading = false;\n this._notifySubscribers();\n });\n\n return this._loadPromise;\n }\n\n public async append(message: AppendMessage): Promise<void> {\n const isTail = message.parentId === (this.messages.at(-1)?.id ?? null);\n const willRun = message.startRun ?? message.role === \"user\";\n if (this._queue && willRun && isTail) {\n this._queue.adapter.enqueue(message, { steer: message.steer ?? false });\n return;\n }\n if (this._queue && !isTail) this._queue.adapter.clear(\"edit\");\n return this._runAppend(message);\n }\n\n public getQueueItems(): readonly QueueItemState[] {\n // Reads can arrive during base-thread construction, before the queue field\n // is assigned, so guard against the unset field.\n return this._queue?.adapter.items ?? EMPTY_QUEUE_ITEMS;\n }\n\n public steerQueueItem(queueItemId: string): void {\n this._queue?.adapter.steer(queueItemId);\n }\n\n public removeQueueItem(queueItemId: string): void {\n this._queue?.adapter.remove(queueItemId);\n }\n\n private async _runAppend(message: AppendMessage): Promise<void> {\n this.ensureInitialized();\n\n const initPromise = this._getInitializePromise?.();\n if (initPromise) {\n await initPromise;\n }\n\n const newMessage = fromThreadMessageLike(message, generateId(), {\n type: \"complete\",\n reason: \"unknown\",\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n this._options.adapters.history?.append({\n parentId: message.parentId,\n message: newMessage,\n ...(message.runConfig !== undefined && { runConfig: message.runConfig }),\n });\n\n const startRun = message.startRun ?? message.role === \"user\";\n if (startRun) {\n await this.startRun({\n parentId: newMessage.id,\n sourceId: message.sourceId,\n runConfig: message.runConfig ?? {},\n });\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n }\n }\n\n public async deleteMessage(messageId: string): Promise<void> {\n const adapter = this._options.adapters.history;\n if (!adapter?.delete)\n throw new Error(\"Runtime does not support deleting messages.\");\n\n const messages = this.repository.getMessages();\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) throw new Error(\"Message not found.\");\n\n const message = messages[messageIndex]!;\n const parentId = messages[messageIndex - 1]?.id ?? null;\n const items = [{ parentId, message }];\n\n await adapter.delete(items);\n\n this.repository.deleteMessage(messageId);\n this._notifySubscribers();\n }\n\n public resumeRun({ stream, ...startConfig }: ResumeRunConfig): Promise<void> {\n if (!stream)\n throw new Error(\"You must pass a stream parameter to resume runs.\");\n return this.startRun(startConfig, stream);\n }\n\n public exportExternalState(): any {\n throw new Error(\"Runtime does not support exporting external states.\");\n }\n\n public importExternalState(): void {\n throw new Error(\"Runtime does not support importing external states.\");\n }\n\n public async startRun(\n { parentId, runConfig }: StartRunConfig,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this.ensureInitialized();\n\n // add assistant message\n const id = generateId();\n const message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n metadata: {\n unstable_state: this.state,\n unstable_annotations: [],\n unstable_data: [],\n steps: [],\n custom: {},\n },\n createdAt: new Date(),\n };\n\n return this._runLoop(parentId, message, runConfig, runCallback);\n }\n\n private async _runLoop(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ): Promise<void> {\n this._notifyEventSubscribers(\"runStart\", {});\n\n try {\n // mark busy for runs not started through the queue (regenerate, resume)\n this._queue?.notifyBusy();\n this._suggestions = [];\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n this._notifySubscribers();\n\n do {\n message = await this.performRoundtrip(\n parentId,\n message,\n runConfig,\n runCallback,\n );\n runCallback = undefined;\n } while (shouldContinue(message, this._options.unstable_humanToolNames));\n } finally {\n this._notifyEventSubscribers(\"runEnd\", {});\n // queue-driven runs release from the driver settle handler; a direct\n // run (regenerate, resume) releases here\n if (!this._queueRunInFlight) {\n queueMicrotask(() => this._queue?.notifyIdle());\n }\n }\n\n if (\n this.adapters.suggestion &&\n message.status?.type !== \"requires-action\"\n ) {\n this._suggestionsController = new AbortController();\n const signal = this._suggestionsController.signal;\n const adapter = this.adapters.suggestion;\n void (async () => {\n try {\n const promiseOrGenerator = adapter.generate({\n messages: this.messages,\n signal,\n });\n await consumeSuggestionResult(promiseOrGenerator, {\n signal,\n onUpdate: (r) => {\n this._suggestions = r;\n this._notifySubscribers();\n },\n });\n } catch {}\n })();\n }\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n runConfig: RunConfig | undefined,\n runCallback?: ChatModelAdapter[\"run\"],\n ) {\n const messages = parentId ? this.repository.getMessages(parentId) : [];\n\n // abort existing run\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n const initialContent = message.content;\n const initialAnnotations = message.metadata?.unstable_annotations;\n const initialData = message.metadata?.unstable_data;\n const initialSteps = message.metadata?.steps;\n const initialCustom = message.metadata?.custom;\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n const newSteps = m.metadata?.steps;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n const newAnnotations = m.metadata?.unstable_annotations;\n const newData = m.metadata?.unstable_data;\n const annotations = newAnnotations\n ? [...(initialAnnotations ?? []), ...newAnnotations]\n : undefined;\n const data = newData ? [...(initialData ?? []), ...newData] : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(m.metadata.unstable_state\n ? { unstable_state: m.metadata.unstable_state }\n : undefined),\n ...(annotations\n ? { unstable_annotations: annotations }\n : undefined),\n ...(data ? { unstable_data: data } : undefined),\n ...(steps ? { steps } : undefined),\n ...(m.metadata?.timing\n ? { timing: m.metadata.timing }\n : undefined),\n ...(m.metadata?.custom\n ? {\n custom: {\n ...(initialCustom ?? {}),\n ...m.metadata.custom,\n },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps ?? 2;\n\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n // reached max tool steps\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n } else {\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n\n // Switch to the new message branch right after adding it for the first time\n this.repository.resetHead(message.id);\n this._notifySubscribers();\n }\n\n try {\n this._lastRunConfig = runConfig ?? {};\n // unstable_composerMetadata is composer-only (stamped onto the outgoing\n // message); never expose it to the chat-model adapter's run context.\n const { unstable_composerMetadata: _, ...context } =\n this.getModelContext();\n\n runCallback =\n runCallback ??\n this.adapters.chatModel.run.bind(this.adapters.chatModel);\n\n const abortSignal = this.abortController.signal;\n const threadId = this._getThreadId?.();\n const promiseOrGenerator = runCallback({\n messages,\n runConfig: this._lastRunConfig,\n abortSignal,\n context,\n unstable_assistantMessageId: message.id,\n unstable_threadId: threadId,\n unstable_parentId: parentId,\n unstable_getMessage() {\n return message;\n },\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n if (abortSignal.aborted) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n break;\n }\n\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n if (e instanceof AbortError) {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"error\",\n error: toAssistantError(e),\n },\n });\n\n throw e;\n }\n } finally {\n this.abortController = null;\n\n if (\n message.status.type === \"complete\" ||\n message.status.type === \"incomplete\"\n ) {\n await this._options.adapters.history?.append({\n parentId,\n message: message,\n runConfig: this._lastRunConfig,\n });\n }\n }\n return message;\n }\n\n public detach() {\n this._queue?.adapter.clear(\"cancel-run\");\n const error = new AbortError(true);\n this.abortController?.abort(error);\n this.abortController = null;\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n }\n\n public cancelRun() {\n this._queue?.adapter.clear(\"cancel-run\");\n const error = new AbortError(false);\n this.abortController?.abort(error);\n this.abortController = null;\n this._suggestionsController?.abort();\n this._suggestionsController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n isError,\n artifact,\n }: AddToolResultOptions) {\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (!c.result) added = true;\n return {\n ...c,\n result,\n artifact,\n isError,\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n // a result may arrive mid-run or on a non-head message; the resume\n // intentionally aborts any in-flight run, unlike respondToToolApproval\n if (\n added &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n }\n }\n\n public resumeToolCall(_options: ResumeToolCallOptions) {\n throw new Error(\n \"Local runtime does not support resuming tool calls. For human-in-the-loop tools, list the tool in unstable_humanToolNames and complete the call with addToolResult.\",\n );\n }\n\n public respondToToolApproval({\n approvalId,\n approved,\n optionId,\n reason,\n }: RespondToToolApprovalOptions) {\n let message = this.repository\n .getMessages()\n .findLast(\n (m): m is ThreadAssistantMessage =>\n m.role === \"assistant\" &&\n m.content.some(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n ),\n );\n\n if (!message)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n\n if (this.abortController !== null)\n throw new Error(\n \"Tried to respond to a tool approval while a run is in progress\",\n );\n\n if (message.status?.type !== \"requires-action\")\n throw new Error(\n \"Tried to respond to a tool approval on a message whose status is not requires-action\",\n );\n\n const target = message.content.find(\n (c) => c.type === \"tool-call\" && c.approval?.id === approvalId,\n );\n if (target?.type !== \"tool-call\" || !target.approval)\n throw new Error(\"Tried to respond to a non-existing tool approval\");\n if (target.approval.resolution !== undefined)\n throw new Error(\n \"Tried to respond to a tool approval that was cancelled or expired\",\n );\n if (target.approval.approved !== undefined)\n throw new Error(\"Tried to respond to an already decided tool approval\");\n\n const targetApproval = target.approval;\n const newContent = message.content.map((c) => {\n if (c !== target) return c;\n const approval = {\n ...targetApproval,\n approved,\n ...(optionId != null && { optionId }),\n ...(reason != null && { reason }),\n };\n if (approved) return { ...c, approval };\n return {\n ...c,\n approval,\n result: { error: reason || \"Tool approval denied\" },\n isError: true,\n };\n });\n\n message = { ...message, content: newContent };\n const { parentId } = this.repository.getMessage(message.id);\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n\n if (\n this.repository.headId === message.id &&\n shouldContinue(message, this._options.unstable_humanToolNames)\n ) {\n this._runLoop(parentId, message, this._lastRunConfig).catch(() => {});\n }\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  import { ThreadAssistantMessage } from "../../types/message.js";
2
-
3
2
  //#region src/runtimes/local/should-continue.d.ts
4
3
  declare const shouldContinue: (result: ThreadAssistantMessage, humanToolNames: string[] | undefined) => boolean;
5
4
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"should-continue.d.ts","names":[],"sources":["../../../src/runtimes/local/should-continue.ts"],"mappings":";;;cAEa,cAAA,GACX,MAAA,EAAQ,sBAAsB,EAC9B,cAAA"}
1
+ {"version":3,"file":"should-continue.d.ts","names":[],"sources":["../../../src/runtimes/local/should-continue.ts"],"mappings":";;cAEa,iBACX,QAAQ,wBACR"}
@@ -2,8 +2,8 @@
2
2
  const shouldContinue = (result, humanToolNames) => {
3
3
  if (result.status?.type !== "requires-action" || result.status.reason !== "tool-calls") return false;
4
4
  if (result.content.some((c) => c.type === "tool-call" && c.result === void 0 && c.approval !== void 0 && c.approval.approved === void 0 && c.approval.resolution === void 0)) return false;
5
- if (humanToolNames === void 0) return result.content.every((c) => c.type !== "tool-call" || !!c.result || c.approval !== void 0);
6
- return result.content.every((c) => c.type !== "tool-call" || !!c.result || c.approval !== void 0 || !humanToolNames.includes(c.toolName));
5
+ if (humanToolNames === void 0) return result.content.every((c) => c.type !== "tool-call" || c.result !== void 0 || c.approval !== void 0);
6
+ return result.content.every((c) => c.type !== "tool-call" || c.result !== void 0 || c.approval !== void 0 || !humanToolNames.includes(c.toolName));
7
7
  };
8
8
  //#endregion
9
9
  export { shouldContinue };
@@ -1 +1 @@
1
- {"version":3,"file":"should-continue.js","names":["ThreadAssistantMessage","shouldContinue","result","humanToolNames","status","type","reason","hasPendingApproval","content","some","c","undefined","approval","approved","resolution","every","includes","toolName"],"sources":["../../../src/runtimes/local/should-continue.ts"],"sourcesContent":["import type { ThreadAssistantMessage } from \"../../types/message\";\n\nexport const shouldContinue = (\n result: ThreadAssistantMessage,\n humanToolNames: string[] | undefined,\n) => {\n if (\n result.status?.type !== \"requires-action\" ||\n result.status.reason !== \"tool-calls\"\n )\n return false;\n\n const hasPendingApproval = result.content.some(\n (c) =>\n c.type === \"tool-call\" &&\n c.result === undefined &&\n c.approval !== undefined &&\n c.approval.approved === undefined &&\n c.approval.resolution === undefined,\n );\n if (hasPendingApproval) return false;\n\n // TODO legacy behavior -- make specifying human tool names required\n if (humanToolNames === undefined) {\n return result.content.every(\n (c) => c.type !== \"tool-call\" || !!c.result || c.approval !== undefined,\n );\n }\n\n return result.content.every(\n (c) =>\n c.type !== \"tool-call\" ||\n !!c.result ||\n c.approval !== undefined ||\n !humanToolNames.includes(c.toolName),\n );\n};\n"],"mappings":";AAEA,MAAaC,kBACXC,QACAC,mBACG;CACH,IACED,OAAOE,QAAQC,SAAS,qBACxBH,OAAOE,OAAOE,WAAW,cAEzB,OAAO;CAUT,IAR2BJ,OAAOM,QAAQC,MACvCC,MACCA,EAAEL,SAAS,eACXK,EAAER,WAAWS,KAAAA,KACbD,EAAEE,aAAaD,KAAAA,KACfD,EAAEE,SAASC,aAAaF,KAAAA,KACxBD,EAAEE,SAASE,eAAeH,KAAAA,CAE1BJ,GAAoB,OAAO;CAG/B,IAAIJ,mBAAmBQ,KAAAA,GACrB,OAAOT,OAAOM,QAAQO,OACnBL,MAAMA,EAAEL,SAAS,eAAe,CAAC,CAACK,EAAER,UAAUQ,EAAEE,aAAaD,KAAAA,CAChE;CAGF,OAAOT,OAAOM,QAAQO,OACnBL,MACCA,EAAEL,SAAS,eACX,CAAC,CAACK,EAAER,UACJQ,EAAEE,aAAaD,KAAAA,KACf,CAACR,eAAea,SAASN,EAAEO,QAAQ,CACvC;AACF"}
1
+ {"version":3,"file":"should-continue.js","names":["ThreadAssistantMessage","shouldContinue","result","humanToolNames","status","type","reason","hasPendingApproval","content","some","c","undefined","approval","approved","resolution","every","includes","toolName"],"sources":["../../../src/runtimes/local/should-continue.ts"],"sourcesContent":["import type { ThreadAssistantMessage } from \"../../types/message\";\n\nexport const shouldContinue = (\n result: ThreadAssistantMessage,\n humanToolNames: string[] | undefined,\n) => {\n if (\n result.status?.type !== \"requires-action\" ||\n result.status.reason !== \"tool-calls\"\n )\n return false;\n\n const hasPendingApproval = result.content.some(\n (c) =>\n c.type === \"tool-call\" &&\n c.result === undefined &&\n c.approval !== undefined &&\n c.approval.approved === undefined &&\n c.approval.resolution === undefined,\n );\n if (hasPendingApproval) return false;\n\n // TODO legacy behavior -- make specifying human tool names required\n if (humanToolNames === undefined) {\n return result.content.every(\n (c) =>\n c.type !== \"tool-call\" ||\n c.result !== undefined ||\n c.approval !== undefined,\n );\n }\n\n return result.content.every(\n (c) =>\n c.type !== \"tool-call\" ||\n c.result !== undefined ||\n c.approval !== undefined ||\n !humanToolNames.includes(c.toolName),\n );\n};\n"],"mappings":";AAEA,MAAaC,kBACXC,QACAC,mBACG;CACH,IACED,OAAOE,QAAQC,SAAS,qBACxBH,OAAOE,OAAOE,WAAW,cAEzB,OAAO;CAUT,IAR2BJ,OAAOM,QAAQC,MACvCC,MACCA,EAAEL,SAAS,eACXK,EAAER,WAAWS,KAAAA,KACbD,EAAEE,aAAaD,KAAAA,KACfD,EAAEE,SAASC,aAAaF,KAAAA,KACxBD,EAAEE,SAASE,eAAeH,KAAAA,CAE1BJ,GAAoB,OAAO;CAG/B,IAAIJ,mBAAmBQ,KAAAA,GACrB,OAAOT,OAAOM,QAAQO,OACnBL,MACCA,EAAEL,SAAS,eACXK,EAAER,WAAWS,KAAAA,KACbD,EAAEE,aAAaD,KAAAA,CACnB;CAGF,OAAOT,OAAOM,QAAQO,OACnBL,MACCA,EAAEL,SAAS,eACXK,EAAER,WAAWS,KAAAA,KACbD,EAAEE,aAAaD,KAAAA,KACf,CAACR,eAAea,SAASN,EAAEO,QAAQ,CACvC;AACF"}
@@ -2,7 +2,6 @@ import { ThreadMessage } from "../../types/message.js";
2
2
  import { Unsubscribe } from "../../types/unsubscribe.js";
3
3
  import { ThreadRuntimeCore } from "../../runtime/interfaces/thread-runtime-core.js";
4
4
  import { BaseSubscribable } from "../../subscribable/subscribable.js";
5
-
6
5
  //#region src/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts
7
6
  declare class ReadonlyThreadRuntimeCore extends BaseSubscribable implements ThreadRuntimeCore {
8
7
  private _messages;
@@ -1 +1 @@
1
- {"version":3,"file":"ReadonlyThreadRuntimeCore.d.ts","names":[],"sources":["../../../src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts"],"mappings":";;;;;;cASa,yBAAA,SACH,gBAAA,YACG,iBAAA;EAAA,QAEH,SAAA;EAAA,IAEJ,QAAA,aAAQ,aAAA;EAIZ,WAAA,CAAY,QAAA,WAAmB,aAAA;EAM/B,cAAA,CAAe,SAAA;;;;;EAUf,WAAA,CAAY,SAAA;EAMZ,cAAA;EAIA,MAAA;EAIA,aAAA;EAIA,QAAA;EAIA,SAAA;EAIA,SAAA;EAEA,aAAA;EAIA,cAAA;EAIA,qBAAA;EAIA,KAAA;EAIA,YAAA;EAEA,YAAA;EAIA,eAAA;EAEA,cAAA;EACA,oBAAA,QAA2B,WAAA;EAE3B,SAAA;EAIA,WAAA;EAIA,cAAA;EAIA,eAAA;EAIA,mBAAA;EAIA,mBAAA;EAIA,QAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+EA,eAAA;EAIA,SAAA;EAIA,MAAA;EACA,KAAA;EAEA,YAAA;IAAA;;;;;;;;;;;;;;EAgBA,UAAA;EACA,cAAA;EACA,SAAA;EAEA,KAAA;EACA,WAAA;EACA,MAAA;EAEA,MAAA;EAIA,MAAA;;;;;;EASA,KAAA;EAIA,WAAA,IAAe,WAAA;AAAA"}
1
+ {"version":3,"file":"ReadonlyThreadRuntimeCore.d.ts","names":[],"sources":["../../../src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts"],"mappings":";;;;;cASa,kCACH,4BACG;UAEH;MAEJ,qBAAQ;EAIZ,YAAY,mBAAmB;EAM/B,eAAe;;;;;EAUf,YAAY;EAMZ;EAIA;EAIA;EAIA;EAIA;EAIA;EAEA;EAIA;EAIA;EAIA;EAIA;EAEA;EAIA;EAEA;EACA,4BAA2B;EAE3B;EAIA;EAIA;EAIA;EAIA;EAIA;EAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+EA;EAIA;EAIA;EACA;EAEA;;;;;;;;;;;;;;;EAgBA;EACA;EACA;EAEA;EACA;EACA;EAEA;EAIA;;;;;;EASA;EAIA,eAAe"}
@@ -1,6 +1,5 @@
1
1
  import { RemoteThreadInitializeResponse, RemoteThreadListAdapter, RemoteThreadListResponse, RemoteThreadMetadata } from "../types.js";
2
2
  import { AssistantStream } from "assistant-stream";
3
-
4
3
  //#region src/runtimes/remote-thread-list/adapter/in-memory.d.ts
5
4
  declare class InMemoryThreadListAdapter implements RemoteThreadListAdapter {
6
5
  list(): Promise<RemoteThreadListResponse>;
@@ -11,7 +10,7 @@ declare class InMemoryThreadListAdapter implements RemoteThreadListAdapter {
11
10
  delete(): Promise<void>;
12
11
  initialize(threadId: string): Promise<RemoteThreadInitializeResponse>;
13
12
  generateTitle(): Promise<AssistantStream>;
14
- fetch(_threadId: string): Promise<RemoteThreadMetadata>;
13
+ fetch(threadId: string): Promise<RemoteThreadMetadata>;
15
14
  }
16
15
  //#endregion
17
16
  export { InMemoryThreadListAdapter };
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.d.ts","names":[],"sources":["../../../../src/runtimes/remote-thread-list/adapter/in-memory.ts"],"mappings":";;;;cAQa,yBAAA,YAAqC,uBAAA;EAChD,IAAA,IAAQ,OAAA,CAAQ,wBAAA;EAMhB,MAAA,IAAU,OAAA;EAIV,YAAA,IAAgB,OAAA;EAIhB,OAAA,IAAW,OAAA;EAIX,SAAA,IAAa,OAAA;EAIb,MAAA,IAAU,OAAA;EAIV,UAAA,CAAW,QAAA,WAAmB,OAAA,CAAQ,8BAAA;EAItC,aAAA,IAAiB,OAAA,CAAQ,eAAA;EAIzB,KAAA,CAAM,SAAA,WAAoB,OAAA,CAAQ,oBAAA;AAAA"}
1
+ {"version":3,"file":"in-memory.d.ts","names":[],"sources":["../../../../src/runtimes/remote-thread-list/adapter/in-memory.ts"],"mappings":";;;cAQa,qCAAqC;EAChD,QAAQ,QAAQ;EAMhB,UAAU;EAIV,gBAAgB;EAIhB,WAAW;EAIX,aAAa;EAIb,UAAU;EAIV,WAAW,mBAAmB,QAAQ;EAItC,iBAAiB,QAAQ;EAUzB,MAAM,mBAAmB,QAAQ"}
@@ -25,10 +25,12 @@ var InMemoryThreadListAdapter = class {
25
25
  });
26
26
  }
27
27
  generateTitle() {
28
- return Promise.resolve(new ReadableStream());
28
+ return Promise.resolve(new ReadableStream({ start(controller) {
29
+ controller.close();
30
+ } }));
29
31
  }
30
- fetch(_threadId) {
31
- return Promise.reject(/* @__PURE__ */ new Error("Thread not found"));
32
+ fetch(threadId) {
33
+ return Promise.reject(/* @__PURE__ */ new Error(`Thread "${threadId}" not found in in-memory thread list.`));
32
34
  }
33
35
  };
34
36
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"in-memory.js","names":["AssistantStream","AssistantStreamChunk","RemoteThreadInitializeResponse","RemoteThreadListAdapter","RemoteThreadListResponse","RemoteThreadMetadata","InMemoryThreadListAdapter","list","Promise","resolve","threads","rename","updateCustom","archive","unarchive","delete","initialize","threadId","remoteId","externalId","undefined","generateTitle","ReadableStream","fetch","_threadId","reject","Error"],"sources":["../../../../src/runtimes/remote-thread-list/adapter/in-memory.ts"],"sourcesContent":["import type { AssistantStream, AssistantStreamChunk } from \"assistant-stream\";\nimport type {\n RemoteThreadInitializeResponse,\n RemoteThreadListAdapter,\n RemoteThreadListResponse,\n RemoteThreadMetadata,\n} from \"../types\";\n\nexport class InMemoryThreadListAdapter implements RemoteThreadListAdapter {\n list(): Promise<RemoteThreadListResponse> {\n return Promise.resolve({\n threads: [],\n });\n }\n\n rename(): Promise<void> {\n return Promise.resolve();\n }\n\n updateCustom(): Promise<void> {\n return Promise.resolve();\n }\n\n archive(): Promise<void> {\n return Promise.resolve();\n }\n\n unarchive(): Promise<void> {\n return Promise.resolve();\n }\n\n delete(): Promise<void> {\n return Promise.resolve();\n }\n\n initialize(threadId: string): Promise<RemoteThreadInitializeResponse> {\n return Promise.resolve({ remoteId: threadId, externalId: undefined });\n }\n\n generateTitle(): Promise<AssistantStream> {\n return Promise.resolve(new ReadableStream<AssistantStreamChunk>());\n }\n\n fetch(_threadId: string): Promise<RemoteThreadMetadata> {\n return Promise.reject(new Error(\"Thread not found\"));\n }\n}\n"],"mappings":";AAQA,IAAaM,4BAAb,MAA0E;CACxEC,OAA0C;EACxC,OAAOC,QAAQC,QAAQ,EACrBC,SAAS,CAAA,EACX,CAAC;CACH;CAEAC,SAAwB;EACtB,OAAOH,QAAQC,QAAQ;CACzB;CAEAG,eAA8B;EAC5B,OAAOJ,QAAQC,QAAQ;CACzB;CAEAI,UAAyB;EACvB,OAAOL,QAAQC,QAAQ;CACzB;CAEAK,YAA2B;EACzB,OAAON,QAAQC,QAAQ;CACzB;CAEAM,SAAwB;EACtB,OAAOP,QAAQC,QAAQ;CACzB;CAEAO,WAAWC,UAA2D;EACpE,OAAOT,QAAQC,QAAQ;GAAES,UAAUD;GAAUE,YAAYC,KAAAA;EAAU,CAAC;CACtE;CAEAC,gBAA0C;EACxC,OAAOb,QAAQC,QAAQ,IAAIa,eAAqC,CAAC;CACnE;CAEAC,MAAMC,WAAkD;EACtD,OAAOhB,QAAQiB,uBAAO,IAAIC,MAAM,kBAAkB,CAAC;CACrD;AACF"}
1
+ {"version":3,"file":"in-memory.js","names":["AssistantStream","AssistantStreamChunk","RemoteThreadInitializeResponse","RemoteThreadListAdapter","RemoteThreadListResponse","RemoteThreadMetadata","InMemoryThreadListAdapter","list","Promise","resolve","threads","rename","updateCustom","archive","unarchive","delete","initialize","threadId","remoteId","externalId","undefined","generateTitle","ReadableStream","start","controller","close","fetch","reject","Error"],"sources":["../../../../src/runtimes/remote-thread-list/adapter/in-memory.ts"],"sourcesContent":["import type { AssistantStream, AssistantStreamChunk } from \"assistant-stream\";\nimport type {\n RemoteThreadInitializeResponse,\n RemoteThreadListAdapter,\n RemoteThreadListResponse,\n RemoteThreadMetadata,\n} from \"../types\";\n\nexport class InMemoryThreadListAdapter implements RemoteThreadListAdapter {\n list(): Promise<RemoteThreadListResponse> {\n return Promise.resolve({\n threads: [],\n });\n }\n\n rename(): Promise<void> {\n return Promise.resolve();\n }\n\n updateCustom(): Promise<void> {\n return Promise.resolve();\n }\n\n archive(): Promise<void> {\n return Promise.resolve();\n }\n\n unarchive(): Promise<void> {\n return Promise.resolve();\n }\n\n delete(): Promise<void> {\n return Promise.resolve();\n }\n\n initialize(threadId: string): Promise<RemoteThreadInitializeResponse> {\n return Promise.resolve({ remoteId: threadId, externalId: undefined });\n }\n\n generateTitle(): Promise<AssistantStream> {\n return Promise.resolve(\n new ReadableStream<AssistantStreamChunk>({\n start(controller) {\n controller.close();\n },\n }),\n );\n }\n\n fetch(threadId: string): Promise<RemoteThreadMetadata> {\n return Promise.reject(\n new Error(`Thread \"${threadId}\" not found in in-memory thread list.`),\n );\n }\n}\n"],"mappings":";AAQA,IAAaM,4BAAb,MAA0E;CACxEC,OAA0C;EACxC,OAAOC,QAAQC,QAAQ,EACrBC,SAAS,CAAA,EACX,CAAC;CACH;CAEAC,SAAwB;EACtB,OAAOH,QAAQC,QAAQ;CACzB;CAEAG,eAA8B;EAC5B,OAAOJ,QAAQC,QAAQ;CACzB;CAEAI,UAAyB;EACvB,OAAOL,QAAQC,QAAQ;CACzB;CAEAK,YAA2B;EACzB,OAAON,QAAQC,QAAQ;CACzB;CAEAM,SAAwB;EACtB,OAAOP,QAAQC,QAAQ;CACzB;CAEAO,WAAWC,UAA2D;EACpE,OAAOT,QAAQC,QAAQ;GAAES,UAAUD;GAAUE,YAAYC,KAAAA;EAAU,CAAC;CACtE;CAEAC,gBAA0C;EACxC,OAAOb,QAAQC,QACb,IAAIa,eAAqC,EACvCC,MAAMC,YAAY;GAChBA,WAAWC,MAAM;EACnB,EACF,CAAC,CACH;CACF;CAEAC,MAAMT,UAAiD;EACrD,OAAOT,QAAQmB,uBACb,IAAIC,MAAM,WAAWX,SAAQ,sCAAuC,CACtE;CACF;AACF"}
@@ -1,5 +1,4 @@
1
1
  import { ThreadRuntimeCore } from "../../runtime/interfaces/thread-runtime-core.js";
2
-
3
2
  //#region src/runtimes/remote-thread-list/empty-thread-core.d.ts
4
3
  declare const EMPTY_THREAD_CORE: ThreadRuntimeCore;
5
4
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"empty-thread-core.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/empty-thread-core.ts"],"mappings":";;;cAKa,iBAAA,EAAmB,iBAmO/B"}
1
+ {"version":3,"file":"empty-thread-core.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/empty-thread-core.ts"],"mappings":";;cAKa,mBAAmB"}
@@ -1,10 +1,12 @@
1
1
  import { BaseSubscribable } from "../../subscribable/subscribable.js";
2
-
3
2
  //#region src/runtimes/remote-thread-list/optimistic-state.d.ts
4
3
  type Transform<TState, TResult> = {
5
- execute: () => Promise<TResult>; /** transform the state after the promise resolves */
6
- then?: (state: TState, result: TResult) => TState; /** transform the state during resolution and afterwards */
7
- optimistic?: (state: TState) => TState; /** transform the state only while loading */
4
+ execute: () => Promise<TResult>;
5
+ /** transform the state after the promise resolves */
6
+ then?: (state: TState, result: TResult) => TState;
7
+ /** transform the state during resolution and afterwards */
8
+ optimistic?: (state: TState) => TState;
9
+ /** transform the state only while loading */
8
10
  loading?: (state: TState, task: Promise<TResult>) => TState;
9
11
  };
10
12
  declare class OptimisticState<TState> extends BaseSubscribable {
@@ -1 +1 @@
1
- {"version":3,"file":"optimistic-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/optimistic-state.ts"],"mappings":";;;KAEK,SAAA;EACH,OAAA,QAAe,OAAA,CAAQ,OAAA,GADpB;EAIH,IAAA,IAAQ,KAAA,EAAO,MAAA,EAAQ,MAAA,EAAQ,OAAA,KAAY,MAAA,EAJ/B;EAOZ,UAAA,IAAc,KAAA,EAAO,MAAA,KAAW,MAAA,EANjB;EASf,OAAA,IAAW,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,OAAA,CAAQ,OAAA,MAAa,MAAA;AAAA;AAAA,cAiB1C,eAAA,iBAAgC,gBAAA;EAAA,iBAC1B,kBAAA;EArBe;;;;;;;;EAAA,iBAgCf,qBAAA;EAAA,QAET,UAAA;EAAA,QACA,YAAA;cAEW,YAAA,EAAc,MAAA;EAAA,QAMzB,YAAA;EAAA,IAWG,SAAA,IAAa,MAAA;EAAA,IAIb,KAAA,IAAS,MAAA;EAIb,MAAA,CAAO,KAAA,EAAO,MAAA;EAKR,gBAAA,UACX,SAAA,EAAW,SAAA,CAAU,MAAA,EAAQ,OAAA,IAC5B,OAAA,CAAQ,OAAA;AAAA"}
1
+ {"version":3,"file":"optimistic-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/optimistic-state.ts"],"mappings":";;KAEK,UAAU,QAAQ;EACrB,eAAe,QAAQ;;EAGvB,QAAQ,OAAO,QAAQ,QAAQ,YAAY;;EAG3C,cAAc,OAAO,WAAW;;EAGhC,WAAW,OAAO,QAAQ,MAAM,QAAQ,aAAa;;cAiB1C,gBAAgB,gBAAgB;mBAC1B;;;;;;;;;mBAWA;UAET;UACA;cAEW,cAAc;UAMzB;MAWG,aAAa;MAIb,SAAS;EAIb,OAAO,OAAO;EAKR,iBAAiB,SAC5B,WAAW,UAAU,QAAQ,WAC5B,QAAQ"}
@@ -1,5 +1,4 @@
1
1
  import { RemoteThreadInitializeResponse, RemoteThreadMetadata } from "./types.js";
2
-
3
2
  //#region src/runtimes/remote-thread-list/remote-thread-state.d.ts
4
3
  type RemoteThreadData = {
5
4
  readonly id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"remote-thread-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/remote-thread-state.ts"],"mappings":";;;KAKY,gBAAA;EAAA,SAEG,EAAA;EAAA,SACA,QAAA;EAAA,SACA,UAAA;EAAA,SACA,MAAA;EAAA,SACA,KAAA;EAAA,SACA,MAAA;AAAA;EAAA,SAGA,EAAA;EAAA,SACA,cAAA,EAAgB,OAAA,CAAQ,8BAAA;EAAA,SACxB,QAAA;EAAA,SACA,UAAA;EAAA,SACA,MAAA;EAAA,SACA,KAAA;EAAA,SACA,MAAA;AAAA;EAAA,SAGA,EAAA;EAAA,SACA,cAAA,EAAgB,OAAA,CAAQ,8BAAA;EAAA,SACxB,QAAA;EAAA,SACA,UAAA;EAAA,SACA,MAAA;EAAA,SACA,KAAA;EAAA,SACA,aAAA,GAAgB,IAAA;EAAA,SAChB,MAAA,GAAS,MAAA;AAAA;AAAA,KAGZ,iBAAA;EAA+B,OAAO;AAAA;AAAA,iBAElC,qBAAA,CAAsB,EAAA,WAAa,iBAAiB;AAAA,cAIvD,eAAA,GAAmB,CAAqB;AAAA,KAGhD,mBAAA;EACH,SAAA;EACA,iBAAA;EACA,WAAA,EAAa,MAAA,SAAe,iBAAA;EAC5B,UAAA,EAAY,MAAA,CAAO,iBAAA,EAAmB,gBAAA;AAAA;AAAA,cAG3B,eAAA,GACX,OAAA,WAAkB,oBAAA,IAClB,GAAA,EAAK,mBAAA,KACJ,mBAAA;AAAA,KAoCS,iBAAA;EAAA,SACD,SAAA;EAAA,SACA,aAAA;EAAA,SACA,MAAA;EAAA,SACA,WAAA;EAAA,SACA,SAAA;EAAA,SACA,iBAAA;EAAA,SACA,WAAA,EAAa,QAAA,CAAS,MAAA,SAAe,iBAAA;EAAA,SACrC,UAAA,EAAY,QAAA,CAAS,MAAA,CAAO,iBAAA,EAAmB,gBAAA;AAAA;AAAA,cAG7C,aAAA,GACX,KAAA,EAAO,iBAAA,EACP,kBAAA,aAA0B,gBAAA;AAAA,cAOf,mBAAA,GACX,KAAA,EAAO,iBAAA,EACP,kBAAA,UACA,SAAA,yCAA6C,iBAoE9C"}
1
+ {"version":3,"file":"remote-thread-state.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/remote-thread-state.ts"],"mappings":";;KAKY;WAEG;WACA;WACA;WACA;WACA;WACA;;WAGA;WACA,gBAAgB,QAAQ;WACxB;WACA;WACA;WACA;WACA;;WAGA;WACA,gBAAgB,QAAQ;WACxB;WACA;WACA;WACA;WACA,gBAAgB;WAChB,SAAS;;KAGZ;EAA+B;;iBAE3B,sBAAsB,aAAa;cAItC,kBAAmB;KAG3B;EACH;EACA;EACA,aAAa,eAAe;EAC5B,YAAY,OAAO,mBAAmB;;cAG3B,kBACX,kBAAkB,wBAClB,KAAK,wBACJ;KAoCS;WACD;WACA;WACA;WACA;WACA;WACA;WACA,aAAa,SAAS,eAAe;WACrC,YAAY,SAAS,OAAO,mBAAmB;;cAG7C,gBACX,OAAO,mBACP,+BAA0B;cAOf,sBACX,OAAO,mBACP,4BACA,kDAA6C"}
@@ -2,7 +2,6 @@ import { ThreadMessage } from "../../types/message.js";
2
2
  import { AssistantRuntime } from "../../runtime/api/assistant-runtime.js";
3
3
  import { AssistantStream } from "assistant-stream";
4
4
  import { ComponentType, PropsWithChildren } from "react";
5
-
6
5
  //#region src/runtimes/remote-thread-list/types.d.ts
7
6
  type RemoteThreadInitializeResponse = {
8
7
  remoteId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/types.ts"],"mappings":";;;;;;KAKY,8BAAA;EACV,QAAA;EACA,UAAU;AAAA;AAAA,KAGA,oBAAA;EAAA,SACD,MAAA;EAAA,SACA,QAAA;EAAA,SACA,UAAA;EAAA,SACA,KAAA;EAAA,SACA,aAAA,GAAgB,IAAA;EAAA,SAChB,MAAA,GAAS,MAAM;AAAA;AAAA,KAGd,wBAAA;EACV,OAAA,EAAS,oBAAoB;EAC7B,UAAA;AAAA;AAAA,KAGU,2BAAA;EACV,KAAK;AAAA;AAAA,KAGK,uBAAA;EACV,IAAA,CAAK,MAAA,GAAS,2BAAA,GAA8B,OAAA,CAAQ,wBAAA;EAEpD,MAAA,CAAO,QAAA,UAAkB,QAAA,WAAmB,OAAA;EAC5C,YAAA,EACE,QAAA,UACA,MAAA,EAAQ,MAAA,gCACP,OAAA;EACH,OAAA,CAAQ,QAAA,WAAmB,OAAA;EAC3B,SAAA,CAAU,QAAA,WAAmB,OAAA;EAC7B,MAAA,CAAO,QAAA,WAAmB,OAAA;EAC1B,UAAA,CAAW,QAAA,WAAmB,OAAA,CAAQ,8BAAA;EACtC,aAAA,CACE,QAAA,UACA,iBAAA,WAA4B,aAAA,KAC3B,OAAA,CAAQ,eAAA;EACX,KAAA,CAAM,QAAA,WAAmB,OAAA,CAAQ,oBAAA;EAvBvB;AAGZ;;;;AACO;AAGP;;;;EA4BE,iBAAA,GAAoB,aAAA,CAAc,iBAAA;AAAA;AAAA,KAGxB,uBAAA;EACV,WAAA,QAAmB,gBAAA;EACnB,OAAA,EAAS,uBAAuB;EAzBL;;;;;;;EAkC3B,eAAA;EA1BiC;;;;;EAiCjC,QAAA;EAhDA;;;;;;;;;;;EA6DA,gBAAA,KAAqB,QAAA;EAxDnB;;;;;EA+DF,YAAA;AAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/runtimes/remote-thread-list/types.ts"],"mappings":";;;;;KAKY;EACV;EACA;;KAGU;WACD;WACA;WACA;WACA;WACA,gBAAgB;WAChB,SAAS;;KAGR;EACV,SAAS;EACT;;KAGU;EACV;;KAGU;EACV,KAAK,SAAS,8BAA8B,QAAQ;EAEpD,OAAO,kBAAkB,mBAAmB;EAC5C,cACE,kBACA,QAAQ,sCACP;EACH,QAAQ,mBAAmB;EAC3B,UAAU,mBAAmB;EAC7B,OAAO,mBAAmB;EAC1B,WAAW,mBAAmB,QAAQ;EACtC,cACE,kBACA,4BAA4B,kBAC3B,QAAQ;EACX,MAAM,mBAAmB,QAAQ;;;;;;;;;;;EAYjC,oBAAoB,cAAc;;KAGxB;EACV,mBAAmB;EACnB,SAAS;;;;;;;;EAST;;;;;;EAOA;;;;;;;;;;;;EAaA,qBAAqB;;;;;;EAOrB"}