@assistant-ui/core 0.2.20 → 0.2.22

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 (610) 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/speech.js +9 -2
  14. package/dist/adapters/speech.js.map +1 -1
  15. package/dist/adapters/suggestion.d.ts +16 -2
  16. package/dist/adapters/suggestion.d.ts.map +1 -1
  17. package/dist/adapters/suggestion.js +36 -0
  18. package/dist/adapters/suggestion.js.map +1 -0
  19. package/dist/adapters/thread-history.d.ts +2 -2
  20. package/dist/adapters/thread-history.d.ts.map +1 -1
  21. package/dist/adapters/trigger.d.ts +5 -3
  22. package/dist/adapters/trigger.d.ts.map +1 -1
  23. package/dist/adapters/voice.d.ts +0 -1
  24. package/dist/adapters/voice.d.ts.map +1 -1
  25. package/dist/adapters/voice.js +13 -5
  26. package/dist/adapters/voice.js.map +1 -1
  27. package/dist/index.d.ts +4 -3
  28. package/dist/index.js +3 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/internal/duplicate-detection.d.ts.map +1 -1
  31. package/dist/internal.d.ts +9 -1
  32. package/dist/internal.js +8 -2
  33. package/dist/model-context/frame/host.d.ts +1 -1
  34. package/dist/model-context/frame/host.d.ts.map +1 -1
  35. package/dist/model-context/frame/host.js +5 -0
  36. package/dist/model-context/frame/host.js.map +1 -1
  37. package/dist/model-context/frame/provider.d.ts +0 -1
  38. package/dist/model-context/frame/provider.d.ts.map +1 -1
  39. package/dist/model-context/frame/provider.js +1 -0
  40. package/dist/model-context/frame/provider.js.map +1 -1
  41. package/dist/model-context/frame/types.d.ts.map +1 -1
  42. package/dist/model-context/interactable-composer-metadata.d.ts +4 -2
  43. package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
  44. package/dist/model-context/interactable-composer-metadata.js.map +1 -1
  45. package/dist/model-context/registry-handles.d.ts +0 -1
  46. package/dist/model-context/registry-handles.d.ts.map +1 -1
  47. package/dist/model-context/registry.d.ts +0 -1
  48. package/dist/model-context/registry.d.ts.map +1 -1
  49. package/dist/model-context/tool.d.ts +23 -9
  50. package/dist/model-context/tool.d.ts.map +1 -1
  51. package/dist/model-context/tool.js +0 -25
  52. package/dist/model-context/tool.js.map +1 -1
  53. package/dist/model-context/types.d.ts +0 -1
  54. package/dist/model-context/types.d.ts.map +1 -1
  55. package/dist/react/AssistantProvider.d.ts +0 -1
  56. package/dist/react/AssistantProvider.d.ts.map +1 -1
  57. package/dist/react/AssistantProvider.js.map +1 -1
  58. package/dist/react/AssistantRuntimeProvider.d.ts +1 -6
  59. package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
  60. package/dist/react/RuntimeAdapter.d.ts +1 -0
  61. package/dist/react/RuntimeAdapter.d.ts.map +1 -1
  62. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +13 -2
  63. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  64. package/dist/react/adapters/LocalStorageThreadListAdapter.js +196 -54
  65. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  66. package/dist/react/adapters/TitleGenerationAdapter.d.ts +0 -1
  67. package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
  68. package/dist/react/client/DataRenderers.d.ts +0 -1
  69. package/dist/react/client/DataRenderers.d.ts.map +1 -1
  70. package/dist/react/client/Interactables.d.ts +0 -1
  71. package/dist/react/client/Interactables.d.ts.map +1 -1
  72. package/dist/react/client/Interactables.js.map +1 -1
  73. package/dist/react/client/Tools.d.ts +3 -2
  74. package/dist/react/client/Tools.d.ts.map +1 -1
  75. package/dist/react/client/interactable-model-context.d.ts +0 -1
  76. package/dist/react/client/interactable-model-context.d.ts.map +1 -1
  77. package/dist/react/index.d.ts +2 -2
  78. package/dist/react/interactables-legacy/Interactables.d.ts +0 -1
  79. package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
  80. package/dist/react/interactables-legacy/interactable-model-context.d.ts +0 -1
  81. package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
  82. package/dist/react/interactables-legacy/scopes.d.ts +4 -2
  83. package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
  84. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +0 -1
  85. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
  86. package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
  87. package/dist/react/model-context/define-mcp-toolkit.d.ts +19 -4
  88. package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
  89. package/dist/react/model-context/define-mcp-toolkit.js +17 -5
  90. package/dist/react/model-context/define-mcp-toolkit.js.map +1 -1
  91. package/dist/react/model-context/define-toolkit.d.ts +1 -2
  92. package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
  93. package/dist/react/model-context/external-tool.d.ts.map +1 -1
  94. package/dist/react/model-context/human-tool.d.ts.map +1 -1
  95. package/dist/react/model-context/interactableTool.d.ts +2 -2
  96. package/dist/react/model-context/interactableTool.d.ts.map +1 -1
  97. package/dist/react/model-context/makeAssistantDataUI.d.ts +2 -2
  98. package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
  99. package/dist/react/model-context/makeAssistantTool.d.ts +2 -2
  100. package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
  101. package/dist/react/model-context/makeAssistantToolUI.d.ts +2 -2
  102. package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
  103. package/dist/react/model-context/provider-tool.d.ts +0 -1
  104. package/dist/react/model-context/provider-tool.d.ts.map +1 -1
  105. package/dist/react/model-context/stub-tool.d.ts.map +1 -1
  106. package/dist/react/model-context/toolbox.d.ts +5 -5
  107. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  108. package/dist/react/model-context/useAssistantContext.d.ts +1 -0
  109. package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
  110. package/dist/react/model-context/useAssistantDataUI.d.ts +3 -2
  111. package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
  112. package/dist/react/model-context/useAssistantInstructions.d.ts +1 -0
  113. package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
  114. package/dist/react/model-context/useAssistantTool.d.ts +4 -2
  115. package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
  116. package/dist/react/model-context/useAssistantToolUI.d.ts +3 -2
  117. package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
  118. package/dist/react/model-context/useAuiToolOverrides.d.ts +0 -1
  119. package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
  120. package/dist/react/model-context/useInlineRender.d.ts +0 -1
  121. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  122. package/dist/react/model-context/useInteractable.d.ts +7 -4
  123. package/dist/react/model-context/useInteractable.d.ts.map +1 -1
  124. package/dist/react/model-context/useInteractable.js.map +1 -1
  125. package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
  126. package/dist/react/model-context/useInteractableVersions.d.ts +0 -1
  127. package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
  128. package/dist/react/model-context/useToolArgsStatus.d.ts +3 -1
  129. package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
  130. package/dist/react/primitive-hooks/useActionBarCopy.d.ts +1 -4
  131. package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
  132. package/dist/react/primitive-hooks/useActionBarCopy.js +13 -13
  133. package/dist/react/primitive-hooks/useActionBarCopy.js.map +1 -1
  134. package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
  135. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
  136. package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
  137. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
  138. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
  139. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
  140. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
  141. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +0 -1
  142. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
  143. package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
  144. package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
  145. package/dist/react/primitive-hooks/useComposerSend.d.ts +0 -1
  146. package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
  147. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
  148. package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
  149. package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
  150. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
  151. package/dist/react/primitive-hooks/useMessageError.js +5 -1
  152. package/dist/react/primitive-hooks/useMessageError.js.map +1 -1
  153. package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
  154. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +1 -5
  155. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
  156. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
  157. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
  158. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
  159. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
  160. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
  161. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
  162. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
  163. package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
  164. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
  165. package/dist/react/primitive-hooks/useThreadMessages.d.ts +0 -1
  166. package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
  167. package/dist/react/primitive-hooks/useVoice.d.ts +0 -1
  168. package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
  169. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +7 -4
  170. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
  171. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +1 -1
  172. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js.map +1 -1
  173. package/dist/react/primitives/composer/ComposerAttachments.d.ts +4 -3
  174. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  175. package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
  176. package/dist/react/primitives/composer/ComposerIf.d.ts +4 -3
  177. package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
  178. package/dist/react/primitives/composer/ComposerQueue.d.ts +2 -2
  179. package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
  180. package/dist/react/primitives/composer/ComposerQueue.js.map +1 -1
  181. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +2 -2
  182. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
  183. package/dist/react/primitives/message/MessageAttachments.d.ts +4 -3
  184. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  185. package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
  186. package/dist/react/primitives/message/MessageGroupedParts.d.ts +1 -6
  187. package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
  188. package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
  189. package/dist/react/primitives/message/MessageParts.d.ts +44 -25
  190. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  191. package/dist/react/primitives/message/MessageParts.js +48 -37
  192. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  193. package/dist/react/primitives/message/MessageQuote.d.ts +2 -2
  194. package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
  195. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +0 -1
  196. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
  197. package/dist/react/primitives/part/PartMessages.d.ts +2 -2
  198. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  199. package/dist/react/primitives/part/PartMessages.js.map +1 -1
  200. package/dist/react/primitives/thread/ThreadMessages.d.ts +35 -17
  201. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  202. package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
  203. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +6 -4
  204. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
  205. package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
  206. package/dist/react/primitives/threadList/ThreadListItems.d.ts +4 -3
  207. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  208. package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
  209. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +0 -1
  210. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
  211. package/dist/react/providers/AttachmentByIndexProvider.d.ts +0 -1
  212. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
  213. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +0 -1
  214. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
  215. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +0 -1
  216. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
  217. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js +18 -30
  218. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js.map +1 -1
  219. package/dist/react/providers/MessageByIdProvider.d.ts +0 -1
  220. package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
  221. package/dist/react/providers/MessageByIndexProvider.d.ts +0 -1
  222. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
  223. package/dist/react/providers/PartByIndexProvider.d.ts +0 -1
  224. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
  225. package/dist/react/providers/PartByIndexProvider.js +18 -30
  226. package/dist/react/providers/PartByIndexProvider.js.map +1 -1
  227. package/dist/react/providers/QueueItemByIndexProvider.d.ts +0 -1
  228. package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
  229. package/dist/react/providers/ReadonlyThreadProvider.d.ts +0 -1
  230. package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
  231. package/dist/react/providers/SuggestionByIndexProvider.d.ts +0 -1
  232. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
  233. package/dist/react/providers/TextMessagePartProvider.d.ts +0 -1
  234. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
  235. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +0 -1
  236. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
  237. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +1 -1
  238. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  239. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +2 -1
  240. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  241. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +2 -1
  242. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  243. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +12 -3
  244. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  245. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +70 -27
  246. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  247. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +0 -1
  248. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
  249. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +0 -1
  250. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  251. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +1 -1
  252. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  253. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -4
  254. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  255. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +8 -4
  256. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
  257. package/dist/react/runtimes/cloud/auiV0.d.ts +12 -2
  258. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  259. package/dist/react/runtimes/cloud/auiV0.js +30 -1
  260. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  261. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +0 -1
  262. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  263. package/dist/react/runtimes/createMessageConverter.d.ts +1 -7
  264. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
  265. package/dist/react/runtimes/createRuntimeExtras.d.ts +0 -1
  266. package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
  267. package/dist/react/runtimes/external-message-converter.d.ts +1 -8
  268. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  269. package/dist/react/runtimes/external-message-converter.js +43 -45
  270. package/dist/react/runtimes/external-message-converter.js.map +1 -1
  271. package/dist/react/runtimes/useExternalStoreRuntime.d.ts +0 -1
  272. package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
  273. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +0 -1
  274. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
  275. package/dist/react/runtimes/useLocalRuntime.d.ts +3 -5
  276. package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
  277. package/dist/react/runtimes/useLocalRuntime.js +9 -1
  278. package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
  279. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +0 -1
  280. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  281. package/dist/react/runtimes/useStreamingTiming.d.ts +0 -1
  282. package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
  283. package/dist/react/types/MessagePartComponentTypes.d.ts +6 -3
  284. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  285. package/dist/react/types/scopes/dataRenderers.d.ts +1 -1
  286. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
  287. package/dist/react/types/scopes/interactables.d.ts +4 -2
  288. package/dist/react/types/scopes/interactables.d.ts.map +1 -1
  289. package/dist/react/types/scopes/tools.d.ts +5 -3
  290. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  291. package/dist/react/types/store-augmentation.d.ts +1 -2
  292. package/dist/react/types/store-augmentation.d.ts.map +1 -1
  293. package/dist/react/utils/getMessageQuote.d.ts +0 -1
  294. package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
  295. package/dist/react/utils/groupParts.d.ts +2 -2
  296. package/dist/react/utils/groupParts.d.ts.map +1 -1
  297. package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
  298. package/dist/runtime/api/assistant-runtime.d.ts +0 -1
  299. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  300. package/dist/runtime/api/attachment-runtime.d.ts +0 -1
  301. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  302. package/dist/runtime/api/bindings.d.ts +0 -1
  303. package/dist/runtime/api/bindings.d.ts.map +1 -1
  304. package/dist/runtime/api/composer-runtime.d.ts +6 -4
  305. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  306. package/dist/runtime/api/message-part-runtime.d.ts +0 -1
  307. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  308. package/dist/runtime/api/message-runtime.d.ts +6 -16
  309. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  310. package/dist/runtime/api/message-runtime.js +5 -5
  311. package/dist/runtime/api/message-runtime.js.map +1 -1
  312. package/dist/runtime/api/paths.d.ts.map +1 -1
  313. package/dist/runtime/api/thread-list-item-runtime.d.ts +0 -1
  314. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  315. package/dist/runtime/api/thread-list-item-runtime.js +2 -1
  316. package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
  317. package/dist/runtime/api/thread-list-runtime.d.ts +0 -1
  318. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  319. package/dist/runtime/api/thread-runtime.d.ts +3 -1
  320. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  321. package/dist/runtime/base/base-assistant-runtime-core.d.ts +0 -1
  322. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
  323. package/dist/runtime/base/base-composer-runtime-core.d.ts +4 -2
  324. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  325. package/dist/runtime/base/base-composer-runtime-core.js +51 -10
  326. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  327. package/dist/runtime/base/base-thread-runtime-core.d.ts +2 -4
  328. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  329. package/dist/runtime/base/base-thread-runtime-core.js +3 -2
  330. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  331. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +1 -5
  332. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  333. package/dist/runtime/base/default-edit-composer-runtime-core.js +4 -2
  334. package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
  335. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +1 -0
  336. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  337. package/dist/runtime/base/default-thread-composer-runtime-core.js +2 -2
  338. package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
  339. package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
  340. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +0 -1
  341. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
  342. package/dist/runtime/interfaces/composer-runtime-core.d.ts +2 -2
  343. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  344. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +0 -1
  345. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  346. package/dist/runtime/interfaces/thread-runtime-core.d.ts +2 -2
  347. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  348. package/dist/runtime/queue/external-thread-queue-adapter.d.ts +0 -1
  349. package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
  350. package/dist/runtime/queue/message-queue.d.ts +6 -4
  351. package/dist/runtime/queue/message-queue.d.ts.map +1 -1
  352. package/dist/runtime/queue/message-queue.js +1 -1
  353. package/dist/runtime/utils/auto-status.d.ts +0 -1
  354. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  355. package/dist/runtime/utils/chat-model-adapter.d.ts +0 -1
  356. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  357. package/dist/runtime/utils/external-store-message.d.ts +0 -1
  358. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  359. package/dist/runtime/utils/message-repository.d.ts +1 -5
  360. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  361. package/dist/runtime/utils/message-repository.js +3 -1
  362. package/dist/runtime/utils/message-repository.js.map +1 -1
  363. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +0 -1
  364. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
  365. package/dist/runtime/utils/streaming-timing.d.ts +5 -3
  366. package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
  367. package/dist/runtime/utils/thread-message-like.d.ts +2 -2
  368. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  369. package/dist/runtime/utils/thread-message-like.js +4 -1
  370. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  371. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
  372. package/dist/runtimes/external-store/external-store-adapter.d.ts +2 -2
  373. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  374. package/dist/runtimes/external-store/external-store-runtime-core.d.ts +0 -1
  375. package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
  376. package/dist/runtimes/external-store/external-store-shared-options.d.ts +0 -1
  377. package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
  378. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +0 -1
  379. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  380. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +2 -0
  381. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  382. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +1 -1
  383. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  384. package/dist/runtimes/external-store/thread-message-converter.d.ts +0 -1
  385. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
  386. package/dist/runtimes/local/local-runtime-core.d.ts +0 -1
  387. package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
  388. package/dist/runtimes/local/local-runtime-options.d.ts +0 -1
  389. package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
  390. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +0 -1
  391. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
  392. package/dist/runtimes/local/local-thread-runtime-core.d.ts +5 -21
  393. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  394. package/dist/runtimes/local/local-thread-runtime-core.js +29 -17
  395. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  396. package/dist/runtimes/local/should-continue.d.ts +0 -1
  397. package/dist/runtimes/local/should-continue.d.ts.map +1 -1
  398. package/dist/runtimes/local/should-continue.js +2 -2
  399. package/dist/runtimes/local/should-continue.js.map +1 -1
  400. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +0 -1
  401. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
  402. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +1 -2
  403. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
  404. package/dist/runtimes/remote-thread-list/adapter/in-memory.js +5 -3
  405. package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -1
  406. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +0 -1
  407. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
  408. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +10 -8
  409. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
  410. package/dist/runtimes/remote-thread-list/optimistic-state.js +22 -9
  411. package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
  412. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +0 -1
  413. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  414. package/dist/runtimes/remote-thread-list/types.d.ts +1 -2
  415. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  416. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +2 -2
  417. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  418. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +1 -2
  419. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
  420. package/dist/store/clients/chain-of-thought-client.d.ts +0 -1
  421. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
  422. package/dist/store/clients/model-context-client.d.ts +0 -1
  423. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  424. package/dist/store/clients/no-op-composer-client.d.ts +0 -1
  425. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
  426. package/dist/store/clients/runtime-adapter.d.ts +0 -1
  427. package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
  428. package/dist/store/clients/suggestions.d.ts +0 -1
  429. package/dist/store/clients/suggestions.d.ts.map +1 -1
  430. package/dist/store/clients/thread-message-client.d.ts +0 -1
  431. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  432. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +0 -1
  433. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  434. package/dist/store/runtime-clients/composer-runtime-client.d.ts +0 -1
  435. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  436. package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
  437. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +0 -1
  438. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  439. package/dist/store/runtime-clients/message-runtime-client.d.ts +0 -1
  440. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  441. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +0 -1
  442. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  443. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +0 -1
  444. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  445. package/dist/store/runtime-clients/thread-runtime-client.d.ts +0 -1
  446. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  447. package/dist/store/runtime-clients/useSubscribable.d.ts +0 -1
  448. package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
  449. package/dist/store/scope-registration.d.ts +1 -2
  450. package/dist/store/scope-registration.d.ts.map +1 -1
  451. package/dist/store/scopes/attachment.d.ts +0 -1
  452. package/dist/store/scopes/attachment.d.ts.map +1 -1
  453. package/dist/store/scopes/chain-of-thought.d.ts +0 -1
  454. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
  455. package/dist/store/scopes/composer.d.ts +0 -1
  456. package/dist/store/scopes/composer.d.ts.map +1 -1
  457. package/dist/store/scopes/message.d.ts +6 -4
  458. package/dist/store/scopes/message.d.ts.map +1 -1
  459. package/dist/store/scopes/model-context.d.ts +0 -1
  460. package/dist/store/scopes/model-context.d.ts.map +1 -1
  461. package/dist/store/scopes/part.d.ts +0 -1
  462. package/dist/store/scopes/part.d.ts.map +1 -1
  463. package/dist/store/scopes/queue-item.d.ts.map +1 -1
  464. package/dist/store/scopes/suggestion.d.ts.map +1 -1
  465. package/dist/store/scopes/suggestions.d.ts +0 -1
  466. package/dist/store/scopes/suggestions.d.ts.map +1 -1
  467. package/dist/store/scopes/thread-list-item.d.ts +0 -1
  468. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  469. package/dist/store/scopes/thread.d.ts +4 -3
  470. package/dist/store/scopes/thread.d.ts.map +1 -1
  471. package/dist/store/scopes/threads.d.ts +0 -1
  472. package/dist/store/scopes/threads.d.ts.map +1 -1
  473. package/dist/subscribable/subscribable.d.ts +1 -2
  474. package/dist/subscribable/subscribable.d.ts.map +1 -1
  475. package/dist/subscribable/subscribable.js +11 -3
  476. package/dist/subscribable/subscribable.js.map +1 -1
  477. package/dist/tests/remote-thread-list-test-helpers.d.ts +2 -2
  478. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
  479. package/dist/tests/remote-thread-list-test-helpers.js +5 -2
  480. package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
  481. package/dist/types/attachment.d.ts +3 -2
  482. package/dist/types/attachment.d.ts.map +1 -1
  483. package/dist/types/attachment.js +6 -0
  484. package/dist/types/attachment.js.map +1 -0
  485. package/dist/types/directive.d.ts +3 -2
  486. package/dist/types/directive.d.ts.map +1 -1
  487. package/dist/types/error.d.ts +15 -0
  488. package/dist/types/error.d.ts.map +1 -0
  489. package/dist/types/error.js +46 -0
  490. package/dist/types/error.js.map +1 -0
  491. package/dist/types/index.d.ts +2 -2
  492. package/dist/types/message.d.ts +71 -33
  493. package/dist/types/message.d.ts.map +1 -1
  494. package/dist/types/message.js.map +1 -1
  495. package/dist/types/quote.d.ts.map +1 -1
  496. package/dist/types/trigger.d.ts +0 -1
  497. package/dist/types/trigger.d.ts.map +1 -1
  498. package/dist/types/unsubscribe.d.ts.map +1 -1
  499. package/dist/utils/composite-context-provider.d.ts +1 -0
  500. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  501. package/dist/utils/data-url.d.ts +9 -0
  502. package/dist/utils/data-url.d.ts.map +1 -0
  503. package/dist/utils/data-url.js +14 -0
  504. package/dist/utils/data-url.js.map +1 -0
  505. package/dist/utils/id.d.ts.map +1 -1
  506. package/dist/utils/json/is-json-equal.d.ts.map +1 -1
  507. package/dist/utils/json/is-json.d.ts +0 -1
  508. package/dist/utils/json/is-json.d.ts.map +1 -1
  509. package/dist/utils/json/is-json.js +1 -1
  510. package/dist/utils/json/is-json.js.map +1 -1
  511. package/dist/utils/json/stable-stringify-tool-args.d.ts +7 -0
  512. package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -0
  513. package/dist/utils/json/stable-stringify-tool-args.js +32 -0
  514. package/dist/utils/json/stable-stringify-tool-args.js.map +1 -0
  515. package/dist/utils/notify-event-listeners.d.ts +6 -0
  516. package/dist/utils/notify-event-listeners.d.ts.map +1 -0
  517. package/dist/utils/notify-event-listeners.js +16 -0
  518. package/dist/utils/notify-event-listeners.js.map +1 -0
  519. package/dist/utils/text.d.ts +0 -1
  520. package/dist/utils/text.d.ts.map +1 -1
  521. package/package.json +14 -10
  522. package/src/adapters/attachment.test.ts +107 -0
  523. package/src/adapters/attachment.ts +20 -10
  524. package/src/adapters/index.ts +6 -1
  525. package/src/adapters/speech.test.ts +88 -0
  526. package/src/adapters/speech.ts +17 -2
  527. package/src/adapters/suggestion.test.ts +187 -0
  528. package/src/adapters/suggestion.ts +75 -1
  529. package/src/adapters/voice.test.ts +130 -0
  530. package/src/adapters/voice.ts +26 -6
  531. package/src/index.ts +15 -1
  532. package/src/internal.ts +21 -0
  533. package/src/model-context/frame/host.test.ts +100 -0
  534. package/src/model-context/frame/host.ts +10 -0
  535. package/src/model-context/frame/provider.test.ts +83 -0
  536. package/src/model-context/frame/provider.ts +1 -0
  537. package/src/model-context/tool.test.ts +110 -0
  538. package/src/model-context/tool.ts +31 -9
  539. package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +304 -0
  540. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +307 -60
  541. package/src/react/index.ts +2 -0
  542. package/src/react/model-context/define-mcp-toolkit.ts +39 -6
  543. package/src/react/model-context/define-toolkit.test.ts +107 -0
  544. package/src/react/primitive-hooks/useActionBarCopy.test.ts +79 -0
  545. package/src/react/primitive-hooks/useActionBarCopy.ts +4 -3
  546. package/src/react/primitive-hooks/useMessageError.test.ts +64 -0
  547. package/src/react/primitive-hooks/useMessageError.ts +19 -6
  548. package/src/react/primitives/chainOfThought/ChainOfThoughtParts.tsx +1 -3
  549. package/src/react/primitives/message/MessageParts.tsx +48 -35
  550. package/src/react/providers/ChainOfThoughtPartByIndexProvider.tsx +19 -2
  551. package/src/react/providers/PartByIndexProvider.tsx +16 -2
  552. package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +18 -0
  553. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +4 -1
  554. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +96 -26
  555. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +69 -0
  556. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +1 -1
  557. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +127 -0
  558. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +15 -4
  559. package/src/react/runtimes/cloud/auiV0.ts +71 -2
  560. package/src/react/runtimes/external-message-converter.test.tsx +123 -0
  561. package/src/react/runtimes/external-message-converter.ts +36 -11
  562. package/src/react/runtimes/useLocalRuntime.test.tsx +56 -0
  563. package/src/react/runtimes/useLocalRuntime.ts +13 -1
  564. package/src/runtime/api/message-runtime.test.ts +81 -0
  565. package/src/runtime/api/message-runtime.ts +4 -6
  566. package/src/runtime/api/thread-list-item-runtime.ts +6 -1
  567. package/src/runtime/base/base-composer-runtime-core.ts +95 -30
  568. package/src/runtime/base/base-thread-runtime-core.ts +2 -1
  569. package/src/runtime/base/default-edit-composer-runtime-core.ts +4 -2
  570. package/src/runtime/base/default-thread-composer-runtime-core.ts +2 -2
  571. package/src/runtime/utils/message-repository.ts +8 -3
  572. package/src/runtime/utils/thread-message-like.ts +3 -0
  573. package/src/runtimes/local/local-thread-runtime-core.test.ts +276 -3
  574. package/src/runtimes/local/local-thread-runtime-core.ts +29 -25
  575. package/src/runtimes/local/should-continue.ts +5 -2
  576. package/src/runtimes/remote-thread-list/adapter/in-memory.test.ts +14 -0
  577. package/src/runtimes/remote-thread-list/adapter/in-memory.ts +13 -5
  578. package/src/runtimes/remote-thread-list/optimistic-state.test.ts +63 -0
  579. package/src/runtimes/remote-thread-list/optimistic-state.ts +49 -17
  580. package/src/runtimes/remote-thread-list/types.ts +1 -1
  581. package/src/runtimes/tool-invocations/EDGE_CASES.md +13 -19
  582. package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +127 -6
  583. package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +4 -2
  584. package/src/subscribable/subscribable.test.ts +58 -0
  585. package/src/subscribable/subscribable.ts +13 -3
  586. package/src/tests/MessageRepository.test.ts +26 -0
  587. package/src/tests/OptimisticState-list-race.test.ts +33 -0
  588. package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +42 -0
  589. package/src/tests/RemoteThreadListThreadListRuntimeCore-switchToThread-order.test.ts +223 -0
  590. package/src/tests/attachment-adapters.test.ts +14 -2
  591. package/src/tests/auiV0Encode.test.ts +134 -1
  592. package/src/tests/base-composer-runtime-core-addAttachment.test.ts +123 -5
  593. package/src/tests/base-composer-runtime-core-send.test.ts +573 -0
  594. package/src/tests/default-edit-composer-runtime-core.test.ts +43 -5
  595. package/src/tests/event-subscription-listener-errors.test.ts +205 -0
  596. package/src/tests/remote-thread-list-test-helpers.ts +14 -7
  597. package/src/tests/thread-message-like.test.ts +97 -0
  598. package/src/types/attachment.ts +6 -0
  599. package/src/types/error.test.ts +122 -0
  600. package/src/types/error.ts +74 -0
  601. package/src/types/index.ts +1 -0
  602. package/src/types/message.ts +12 -3
  603. package/src/utils/data-url.test.ts +50 -0
  604. package/src/utils/data-url.ts +9 -0
  605. package/src/utils/json/is-json-equal.test.ts +84 -0
  606. package/src/utils/json/is-json.test.ts +123 -0
  607. package/src/utils/json/is-json.ts +1 -1
  608. package/src/utils/json/stable-stringify-tool-args.test.ts +105 -0
  609. package/src/utils/json/stable-stringify-tool-args.ts +70 -0
  610. package/src/utils/notify-event-listeners.ts +30 -0
@@ -1,7 +1,6 @@
1
1
  import { Unsubscribe } from "../types/unsubscribe.js";
2
2
  import { AssistantInstructionsConfig, AssistantToolProps, ModelContext, ModelContextProvider } from "./types.js";
3
3
  import { ModelContextRegistryInstructionHandle, ModelContextRegistryProviderHandle, ModelContextRegistryToolHandle } from "./registry-handles.js";
4
-
5
4
  //#region src/model-context/registry.d.ts
6
5
  declare class ModelContextRegistry implements ModelContextProvider {
7
6
  private _tools;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","names":[],"sources":["../../src/model-context/registry.ts"],"mappings":";;;;;cAea,oBAAA,YAAgC,oBAAA;EAAA,QACnC,MAAA;EAAA,QACA,aAAA;EAAA,QACA,UAAA;EAAA,QACA,YAAA;EAAA,QACA,qBAAA;EAER,eAAA,IAAmB,YAAA;EAiDnB,SAAA,CAAU,QAAA,eAAuB,WAAA;EAAA,QAKzB,iBAAA;EAMR,OAAA,eAAsB,MAAA,4BACpB,IAAA,EAAM,kBAAA,CAAmB,KAAA,EAAO,OAAA,IAC/B,8BAAA,CAA+B,KAAA,EAAO,OAAA;EAoBzC,cAAA,CACE,MAAA,WAAiB,2BAAA,GAChB,qCAAA;EAiCH,WAAA,CACE,QAAA,EAAU,oBAAA,GACT,kCAAA;AAAA"}
1
+ {"version":3,"file":"registry.d.ts","names":[],"sources":["../../src/model-context/registry.ts"],"mappings":";;;;cAea,gCAAgC;UACnC;UACA;UACA;UACA;UACA;EAER,mBAAmB;EAiDnB,UAAU,uBAAuB;UAKzB;EAMR,QAAQ,cAAc,yBAAyB,SAC7C,MAAM,mBAAmB,OAAO,WAC/B,+BAA+B,OAAO;EAoBzC,eACE,iBAAiB,8BAChB;EAiCH,YACE,UAAU,uBACT"}
@@ -1,31 +1,45 @@
1
1
  import { Tool } from "assistant-stream";
2
-
3
2
  //#region src/model-context/tool.d.ts
3
+ type StandardSchemaInput<TSchema> = TSchema extends {
4
+ readonly "~standard": {
5
+ readonly types?: {
6
+ readonly input: infer TInput;
7
+ } | undefined;
8
+ };
9
+ } ? TInput extends Record<string, unknown> ? TInput : Record<string, unknown> : Record<string, unknown>;
10
+ type StandardSchemaParameters = Extract<NonNullable<Extract<Tool<any>, {
11
+ parameters: unknown;
12
+ }>["parameters"]>, {
13
+ readonly "~standard": unknown;
14
+ }>;
4
15
  /**
5
16
  * Defines a model tool with its argument schema, execution behavior, and
6
17
  * optional model-output conversion.
7
18
  *
8
19
  * This helper keeps reusable tool definitions type-checked and convenient to
9
20
  * export for a {@link Toolkit} registered with {@link Tools}.
10
- * Inference from parameter schemas is currently limited, so provide generic
11
- * arguments when you need precise args or result types.
21
+ * When `parameters` is a Standard Schema (for example Zod v4), its input type
22
+ * is inferred for `execute`, `streamCall`, and model-output callbacks. Plain
23
+ * JSON Schema objects do not carry TypeScript input types, so provide generic
24
+ * arguments or annotate callbacks when you need precise args for JSON Schema.
12
25
  *
13
26
  * @param tool - Tool definition to expose to the assistant model.
14
27
  *
15
28
  * @example
16
29
  * ```ts
17
- * const getWeather = tool<{ city: string }, string>({
30
+ * import { z } from "zod";
31
+ *
32
+ * const getWeather = tool({
18
33
  * type: "frontend",
19
34
  * description: "Get the weather for a city.",
20
- * parameters: {
21
- * type: "object",
22
- * properties: { city: { type: "string" } },
23
- * required: ["city"],
24
- * },
35
+ * parameters: z.object({ city: z.string() }),
25
36
  * execute: async ({ city }) => `Sunny in ${city}`,
26
37
  * });
27
38
  * ```
28
39
  */
40
+ declare function tool<const TSchema extends StandardSchemaParameters, TResult = any>(tool: Tool<StandardSchemaInput<TSchema>, TResult> & {
41
+ parameters: TSchema;
42
+ }): Tool<StandardSchemaInput<TSchema>, TResult>;
29
43
  declare function tool<TArgs extends Record<string, unknown>, TResult = any>(tool: Tool<TArgs, TResult>): Tool<TArgs, TResult>;
30
44
  //#endregion
31
45
  export { tool };
@@ -1 +1 @@
1
- {"version":3,"file":"tool.d.ts","names":[],"sources":["../../src/model-context/tool.ts"],"mappings":";;;;;AA6BA;;;;;;;;;;;;;;;;;;;;;;;iBAAgB,IAAA,eAAmB,MAAA,kCACjC,IAAA,EAAM,IAAA,CAAK,KAAA,EAAO,OAAA,IACjB,IAAA,CAAK,KAAA,EAAO,OAAA"}
1
+ {"version":3,"file":"tool.d.ts","names":[],"sources":["../../src/model-context/tool.ts"],"mappings":";;KAEK,oBAAoB,WAAW;WACzB;aACE;eAAmB,aAAa;;;IAGzC,eAAe,0BACb,SACA,0BACF;KAEC,2BAA2B,QAC9B,YAAY,QAAQ;EAAa;;WACtB;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA4BG,WACR,gBAAgB,0BACtB,eAEA,MAAM,KAAK,oBAAoB,UAAU;EAAa,YAAY;IACjE,KAAK,oBAAoB,UAAU;iBACtB,KAAK,cAAc,yBAAyB,eAC1D,MAAM,KAAK,OAAO,WACjB,KAAK,OAAO"}
@@ -1,29 +1,4 @@
1
1
  //#region src/model-context/tool.ts
2
- /**
3
- * Defines a model tool with its argument schema, execution behavior, and
4
- * optional model-output conversion.
5
- *
6
- * This helper keeps reusable tool definitions type-checked and convenient to
7
- * export for a {@link Toolkit} registered with {@link Tools}.
8
- * Inference from parameter schemas is currently limited, so provide generic
9
- * arguments when you need precise args or result types.
10
- *
11
- * @param tool - Tool definition to expose to the assistant model.
12
- *
13
- * @example
14
- * ```ts
15
- * const getWeather = tool<{ city: string }, string>({
16
- * type: "frontend",
17
- * description: "Get the weather for a city.",
18
- * parameters: {
19
- * type: "object",
20
- * properties: { city: { type: "string" } },
21
- * required: ["city"],
22
- * },
23
- * execute: async ({ city }) => `Sunny in ${city}`,
24
- * });
25
- * ```
26
- */
27
2
  function tool(tool) {
28
3
  return tool;
29
4
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tool.js","names":["Tool","tool","Record","TArgs","TResult"],"sources":["../../src/model-context/tool.ts"],"sourcesContent":["import type { Tool } from \"assistant-stream\";\n\n// TODO re-add the inferrence of the parameters\n\n/**\n * Defines a model tool with its argument schema, execution behavior, and\n * optional model-output conversion.\n *\n * This helper keeps reusable tool definitions type-checked and convenient to\n * export for a {@link Toolkit} registered with {@link Tools}.\n * Inference from parameter schemas is currently limited, so provide generic\n * arguments when you need precise args or result types.\n *\n * @param tool - Tool definition to expose to the assistant model.\n *\n * @example\n * ```ts\n * const getWeather = tool<{ city: string }, string>({\n * type: \"frontend\",\n * description: \"Get the weather for a city.\",\n * parameters: {\n * type: \"object\",\n * properties: { city: { type: \"string\" } },\n * required: [\"city\"],\n * },\n * execute: async ({ city }) => `Sunny in ${city}`,\n * });\n * ```\n */\nexport function tool<TArgs extends Record<string, unknown>, TResult = any>(\n tool: Tool<TArgs, TResult>,\n): Tool<TArgs, TResult> {\n return tool;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,SAAgBC,KACdA,MACsB;CACtB,OAAOA;AACT"}
1
+ {"version":3,"file":"tool.js","names":["Tool","StandardSchemaInput","TSchema","types","input","TInput","Record","StandardSchemaParameters","Extract","NonNullable","parameters","tool","TResult","TArgs"],"sources":["../../src/model-context/tool.ts"],"sourcesContent":["import type { Tool } from \"assistant-stream\";\n\ntype StandardSchemaInput<TSchema> = TSchema extends {\n readonly \"~standard\": {\n readonly types?: { readonly input: infer TInput } | undefined;\n };\n}\n ? TInput extends Record<string, unknown>\n ? TInput\n : Record<string, unknown>\n : Record<string, unknown>;\n\ntype StandardSchemaParameters = Extract<\n NonNullable<Extract<Tool<any>, { parameters: unknown }>[\"parameters\"]>,\n { readonly \"~standard\": unknown }\n>;\n\n/**\n * Defines a model tool with its argument schema, execution behavior, and\n * optional model-output conversion.\n *\n * This helper keeps reusable tool definitions type-checked and convenient to\n * export for a {@link Toolkit} registered with {@link Tools}.\n * When `parameters` is a Standard Schema (for example Zod v4), its input type\n * is inferred for `execute`, `streamCall`, and model-output callbacks. Plain\n * JSON Schema objects do not carry TypeScript input types, so provide generic\n * arguments or annotate callbacks when you need precise args for JSON Schema.\n *\n * @param tool - Tool definition to expose to the assistant model.\n *\n * @example\n * ```ts\n * import { z } from \"zod\";\n *\n * const getWeather = tool({\n * type: \"frontend\",\n * description: \"Get the weather for a city.\",\n * parameters: z.object({ city: z.string() }),\n * execute: async ({ city }) => `Sunny in ${city}`,\n * });\n * ```\n */\nexport function tool<\n const TSchema extends StandardSchemaParameters,\n TResult = any,\n>(\n tool: Tool<StandardSchemaInput<TSchema>, TResult> & { parameters: TSchema },\n): Tool<StandardSchemaInput<TSchema>, TResult>;\nexport function tool<TArgs extends Record<string, unknown>, TResult = any>(\n tool: Tool<TArgs, TResult>,\n): Tool<TArgs, TResult>;\nexport function tool<TArgs extends Record<string, unknown>, TResult = any>(\n tool: Tool<TArgs, TResult>,\n): Tool<TArgs, TResult> {\n return tool;\n}\n"],"mappings":";AAmDA,SAAgBW,KACdA,MACsB;CACtB,OAAOA;AACT"}
@@ -1,6 +1,5 @@
1
1
  import { Unsubscribe } from "../types/unsubscribe.js";
2
2
  import { Tool } from "assistant-stream";
3
-
4
3
  //#region src/model-context/types.d.ts
5
4
  type LanguageModelV1CallSettings = {
6
5
  maxTokens?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/model-context/types.ts"],"mappings":";;;;KAGY,2BAAA;EACV,SAAA;EACA,WAAA;EACA,IAAA;EACA,eAAA;EACA,gBAAA;EACA,IAAA;EACA,OAAA,GAAU,MAAM;AAAA;AAAA,KAGN,mBAAA;EACV,MAAA;EACA,OAAA;EACA,SAAA;EACA,eAAA;AAAA;AAAA,KAGU,YAAA;EACV,QAAA;EACA,MAAA;EACA,KAAA,GAAQ,MAAA,SAAe,IAAA;EACvB,YAAA,GAAe,2BAAA;EACf,MAAA,GAAS,mBAAA;EAVT;;;;AAEe;EAcf,yBAAA,GAA4B,MAAA;AAAA;AAAA,KAGlB,oBAAA;EACV,eAAA,QAAuB,YAAA;EACvB,SAAA,IAAa,QAAA,iBAAyB,WAAW;AAAA;AAAA,KAGvC,kBAAA,eACI,MAAA,8BAEZ,IAAA,CAAK,KAAA,EAAO,OAAA;EACd,QAAA;EACA,MAAA;AAAA;AAAA,KAGU,2BAAA;EACV,QAAA;EACA,WAAW;AAAA;AAAA,KAGD,sBAAA;EACV,UAAA;EACA,QAAQ;AAAA;AAAA,cAGG,kBAAA,GACX,SAAA,EAAW,GAAA,CAAI,oBAAA,MACd,YAAA"}
1
+ {"version":3,"file":"types.d.ts","names":[],"sources":["../../src/model-context/types.ts"],"mappings":";;;KAGY;EACV;EACA;EACA;EACA;EACA;EACA;EACA,UAAU;;KAGA;EACV;EACA;EACA;EACA;;KAGU;EACV;EACA;EACA,QAAQ,eAAe;EACvB,eAAe;EACf,SAAS;;;;;;EAMT,4BAA4B;;KAGlB;EACV,uBAAuB;EACvB,aAAa,yBAAyB;;KAG5B,mBACV,cAAc,yBACd,WACE,KAAK,OAAO;EACd;EACA;;KAGU;EACV;EACA;;KAGU;EACV;EACA;;cAGW,qBACX,WAAW,IAAI,0BACd"}
@@ -1,7 +1,6 @@
1
1
  import { AssistantRuntime } from "../runtime/api/assistant-runtime.js";
2
2
  import { AssistantClient } from "@assistant-ui/store";
3
3
  import { ComponentType, FC, PropsWithChildren } from "react";
4
-
5
4
  //#region src/react/AssistantProvider.d.ts
6
5
  declare const getRenderComponent: (runtime: AssistantRuntime) => ComponentType | undefined;
7
6
  type AssistantProviderBaseProps = PropsWithChildren<{
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantProvider.d.ts","names":[],"sources":["../../src/react/AssistantProvider.tsx"],"mappings":";;;;;cAWa,kBAAA,GAAsB,OAAA,EAAS,gBAAA,KAEnB,aAAa;AAAA,KAG1B,0BAAA,GAA6B,iBAAA;EACvC,OAAA,EAAS,gBAAA;EACT,GAAA,GAAM,eAAA;AAAA;AAAA,cAGK,qBAAA,EAAuB,EAAE,CAAC,0BAAA"}
1
+ {"version":3,"file":"AssistantProvider.d.ts","names":[],"sources":["../../src/react/AssistantProvider.tsx"],"mappings":";;;;cAWa,qBAAsB,SAAS,qBAEnB;KAGb,6BAA6B;EACvC,SAAS;EACT,MAAM;;cAGK,uBAAuB,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantProvider.js","names":["memo","ComponentType","FC","PropsWithChildren","useAui","AuiProvider","AssistantClient","AssistantRuntime","AssistantRuntimeCore","RuntimeAdapter","getRenderComponent","runtime","_core","RenderComponent","AssistantProviderBaseProps","aui","AssistantProviderBase","parent","children","threads","inner"],"sources":["../../src/react/AssistantProvider.tsx"],"sourcesContent":["import {\n memo,\n type ComponentType,\n type FC,\n type PropsWithChildren,\n} from \"react\";\nimport { useAui, AuiProvider, type AssistantClient } from \"@assistant-ui/store\";\nimport type { AssistantRuntime } from \"../runtime/api/assistant-runtime\";\nimport type { AssistantRuntimeCore } from \"../runtime/interfaces/assistant-runtime-core\";\nimport { RuntimeAdapter } from \"./RuntimeAdapter\";\n\nexport const getRenderComponent = (runtime: AssistantRuntime) => {\n return (runtime as { _core?: AssistantRuntimeCore })._core\n ?.RenderComponent as ComponentType | undefined;\n};\n\nexport type AssistantProviderBaseProps = PropsWithChildren<{\n runtime: AssistantRuntime;\n aui?: AssistantClient | null;\n}>;\n\nexport const AssistantProviderBase: FC<AssistantProviderBaseProps> = memo(\n ({ runtime, aui: parent = null, children }) => {\n // The runtime has a stable identity but mutates in place: its options are\n // pushed in by an unconditional effect inside <RenderComponent />, so that\n // element must be re-created every commit for React to re-render it and\n // re-run the effect. React Compiler caches <RenderComponent /> on the\n // stable RenderComponent type, which silences the effect and stops option\n // changes (e.g. unstable_enableMessageQueue) from reaching the runtime.\n \"use no memo\";\n const aui = useAui({ threads: RuntimeAdapter(runtime) }, { parent });\n const RenderComponent = getRenderComponent(runtime);\n const inner = (\n <AuiProvider value={aui}>\n {RenderComponent && <RenderComponent />}\n {children}\n </AuiProvider>\n );\n if (!parent) return inner;\n return <AuiProvider value={parent}>{inner}</AuiProvider>;\n },\n);\n"],"mappings":";;;;;AAWA,MAAaU,sBAAsBC,YAA8B;CAC/D,OAAQA,QAA6CC,OACjDC;AACN;AAOA,MAAaG,wBAAwDhB,MAClE,EAAEW,SAASI,KAAKE,SAAS,MAAMC,eAAe;CAO7C;CACA,MAAMH,MAAMX,OAAO,EAAEe,SAASV,eAAeE,OAAO,EAAE,GAAG,EAAEM,OAAO,CAAC;CACnE,MAAMJ,kBAAkBH,mBAAmBC,OAAO;CAClD,MAAMS,QACJ,qBAAC,aAAD;EAAa,OAAOL;YAApB,CACGF,mBAAmB,oBAAC,iBAAD,CAAgB,CAAA,GACnCK,QACU;;CAEf,IAAI,CAACD,QAAQ,OAAOG;CACpB,OAAO,oBAAC,aAAD;EAAa,OAAOH;YAASG;CAAmB,CAAA;AACzD,CACF"}
1
+ {"version":3,"file":"AssistantProvider.js","names":["memo","ComponentType","FC","PropsWithChildren","useAui","AuiProvider","AssistantClient","AssistantRuntime","AssistantRuntimeCore","RuntimeAdapter","getRenderComponent","runtime","_core","RenderComponent","AssistantProviderBaseProps","aui","AssistantProviderBase","parent","children","threads","inner"],"sources":["../../src/react/AssistantProvider.tsx"],"sourcesContent":["import {\n memo,\n type ComponentType,\n type FC,\n type PropsWithChildren,\n} from \"react\";\nimport { useAui, AuiProvider, type AssistantClient } from \"@assistant-ui/store\";\nimport type { AssistantRuntime } from \"../runtime/api/assistant-runtime\";\nimport type { AssistantRuntimeCore } from \"../runtime/interfaces/assistant-runtime-core\";\nimport { RuntimeAdapter } from \"./RuntimeAdapter\";\n\nexport const getRenderComponent = (runtime: AssistantRuntime) => {\n return (runtime as { _core?: AssistantRuntimeCore })._core\n ?.RenderComponent as ComponentType | undefined;\n};\n\nexport type AssistantProviderBaseProps = PropsWithChildren<{\n runtime: AssistantRuntime;\n aui?: AssistantClient | null;\n}>;\n\nexport const AssistantProviderBase: FC<AssistantProviderBaseProps> = memo(\n ({ runtime, aui: parent = null, children }) => {\n // The runtime has a stable identity but mutates in place: its options are\n // pushed in by an unconditional effect inside <RenderComponent />, so that\n // element must be re-created every commit for React to re-render it and\n // re-run the effect. React Compiler caches <RenderComponent /> on the\n // stable RenderComponent type, which silences the effect and stops option\n // changes (e.g. unstable_enableMessageQueue) from reaching the runtime.\n \"use no memo\";\n const aui = useAui({ threads: RuntimeAdapter(runtime) }, { parent });\n const RenderComponent = getRenderComponent(runtime);\n const inner = (\n <AuiProvider value={aui}>\n {RenderComponent && <RenderComponent />}\n {children}\n </AuiProvider>\n );\n if (!parent) return inner;\n return <AuiProvider value={parent}>{inner}</AuiProvider>;\n },\n);\n"],"mappings":";;;;;AAWA,MAAaU,sBAAsBC,YAA8B;CAC/D,OAAQA,QAA6CC,OACjDC;AACN;AAOA,MAAaG,wBAAwDhB,MAClE,EAAEW,SAASI,KAAKE,SAAS,MAAMC,eAAe;CAO7C;CACA,MAAMH,MAAMX,OAAO,EAAEe,SAASV,eAAeE,OAAO,EAAE,GAAG,EAAEM,OAAO,CAAC;CACnE,MAAMJ,kBAAkBH,mBAAmBC,OAAO;CAClD,MAAMS,QACJ,qBAAC,aAAD;EAAa,OAAOL;EAApB,UAAA,CACGF,mBAAmB,oBAAC,iBAAD,CAAgB,CAAA,GACnCK,QACU;;CAEf,IAAI,CAACD,QAAQ,OAAOG;CACpB,OAAO,oBAAC,aAAD;EAAa,OAAOH;EAASG,UAAAA;CAAmB,CAAA;AACzD,CACF"}
@@ -1,7 +1,6 @@
1
1
  import { AssistantRuntime } from "../runtime/api/assistant-runtime.js";
2
2
  import { AssistantClient } from "@assistant-ui/store";
3
3
  import { ReactNode } from "react";
4
-
5
4
  //#region src/react/AssistantRuntimeProvider.d.ts
6
5
  /**
7
6
  * Mounts an `AssistantRuntime` into the React tree.
@@ -25,11 +24,7 @@ import { ReactNode } from "react";
25
24
  * }
26
25
  * ```
27
26
  */
28
- declare const AssistantRuntimeProvider: import("react").MemoExoticComponent<({
29
- runtime,
30
- aui,
31
- children
32
- }: {
27
+ declare const AssistantRuntimeProvider: import("react").MemoExoticComponent<({ runtime, aui, children }: {
33
28
  /**
34
29
  * The assistant runtime to expose to descendants. Build one with
35
30
  * `useLocalRuntime`, `useExternalStoreRuntime`, or
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantRuntimeProvider.d.ts","names":[],"sources":["../../src/react/AssistantRuntimeProvider.tsx"],"mappings":";;;;;;;AA2BA;;;;;;;;;;;;;;;;;;;;cAAa,wBAAA,kBAAwB,mBAAA;EAAA,OAAA;EAAA,GAAA;EAAA;AAAA;EAkB3B;;;;;EAPN,OAAA,EAAS,gBAAA;EASV;;;;;;EAFC,GAAA,GAAM,eAAA;EACN,QAAA,EAAU,SAAA;AAAA,sBACX,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"AssistantRuntimeProvider.d.ts","names":[],"sources":["../../src/react/AssistantRuntimeProvider.tsx"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;cA2Ba,0CAAwB,uBAAA,SAAA,KAAA;;;;;;EAWjC,SAAS;;;;;;;EAOT,MAAM;EACN,UAAU;sBACX,IAAA"}
@@ -1,4 +1,5 @@
1
1
  import { AssistantRuntime } from "../runtime/api/assistant-runtime.js";
2
+ import "../index.js";
2
3
  //#region src/react/RuntimeAdapter.d.ts
3
4
  declare const RuntimeAdapter: import("@assistant-ui/tap").Resource<import("@assistant-ui/store").ClientOutput<"threads">, [runtime: AssistantRuntime]>;
4
5
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"RuntimeAdapter.d.ts","names":[],"sources":["../../src/react/RuntimeAdapter.ts"],"mappings":";;cA+Ba,cAAA,8BAAc,QAAA,+BAAA,YAAA,cAAA,OAAA,EAAA,gBAAA"}
1
+ {"version":3,"file":"RuntimeAdapter.d.ts","names":[],"sources":["../../src/react/RuntimeAdapter.ts"],"mappings":";;;cA+Ba,4CAAc,uCAAA,0BAAA,SAAA"}
@@ -1,6 +1,8 @@
1
+ import { ExportedMessageRepository } from "../../runtime/utils/message-repository.js";
1
2
  import { RemoteThreadListAdapter } from "../../runtimes/remote-thread-list/types.js";
3
+ import "../../internal.js";
4
+ import "../../index.js";
2
5
  import { TitleGenerationAdapter } from "./TitleGenerationAdapter.js";
3
-
4
6
  //#region src/react/adapters/LocalStorageThreadListAdapter.d.ts
5
7
  type AsyncStorageLike = {
6
8
  getItem(key: string): Promise<string | null>;
@@ -12,7 +14,16 @@ type LocalStorageAdapterOptions = {
12
14
  prefix?: string | undefined;
13
15
  titleGenerator?: TitleGenerationAdapter | undefined;
14
16
  };
17
+ type StoredThreadMetadata = {
18
+ remoteId: string;
19
+ externalId?: string;
20
+ status: "regular" | "archived";
21
+ title?: string;
22
+ custom?: Record<string, unknown> | undefined;
23
+ };
24
+ declare const parseStoredThreadMetadata: (raw: string | null) => StoredThreadMetadata[];
25
+ declare const parseStoredMessageRepository: (raw: string | null) => ExportedMessageRepository;
15
26
  declare const createLocalStorageAdapter: (options: LocalStorageAdapterOptions) => RemoteThreadListAdapter;
16
27
  //#endregion
17
- export { AsyncStorageLike, createLocalStorageAdapter };
28
+ export { AsyncStorageLike, createLocalStorageAdapter, parseStoredMessageRepository, parseStoredThreadMetadata };
18
29
  //# sourceMappingURL=LocalStorageThreadListAdapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LocalStorageThreadListAdapter.d.ts","names":[],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"mappings":";;;;KAkBY,gBAAA;EACV,OAAA,CAAQ,GAAA,WAAc,OAAA;EACtB,OAAA,CAAQ,GAAA,UAAa,KAAA,WAAgB,OAAA;EACrC,UAAA,CAAW,GAAA,WAAc,OAAA;AAAA;AAAA,KAGtB,0BAAA;EACH,OAAA,EAAS,gBAAA;EACT,MAAA;EACA,cAAA,GAAiB,sBAAsB;AAAA;AAAA,cA2E5B,yBAAA,GACX,OAAA,EAAS,0BAAA,KACR,uBAyIF"}
1
+ {"version":3,"file":"LocalStorageThreadListAdapter.d.ts","names":[],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"mappings":";;;;;;KAmBY;EACV,QAAQ,cAAc;EACtB,QAAQ,aAAa,gBAAgB;EACrC,WAAW,cAAc;;KAkCtB;EACH,SAAS;EACT;EACA,iBAAiB;;KAGd;EACH;EACA;EACA;EACA;EACA,SAAS;;cAwIE,4BACX,uBACC;cAoCU,+BACX,uBACC;cAkGU,4BACX,SAAS,+BACR"}
@@ -4,14 +4,153 @@ import { useAui } from "@assistant-ui/store";
4
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region src/react/adapters/LocalStorageThreadListAdapter.tsx
7
+ var KeyedMutationQueue = class {
8
+ tails = /* @__PURE__ */ new Map();
9
+ run(key, mutation) {
10
+ const previous = this.tails.get(key);
11
+ const result = previous ? previous.then(mutation) : mutation();
12
+ const tail = result.then(() => void 0, () => void 0);
13
+ this.tails.set(key, tail);
14
+ tail.then(() => {
15
+ if (this.tails.get(key) === tail) this.tails.delete(key);
16
+ });
17
+ return result;
18
+ }
19
+ };
20
+ const mutationQueues = /* @__PURE__ */ new WeakMap();
21
+ const getMutationQueue = (storage) => {
22
+ let queue = mutationQueues.get(storage);
23
+ if (!queue) {
24
+ queue = new KeyedMutationQueue();
25
+ mutationQueues.set(storage, queue);
26
+ }
27
+ return queue;
28
+ };
29
+ const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
30
+ const parseJSON = (raw) => {
31
+ if (!raw) return void 0;
32
+ try {
33
+ return JSON.parse(raw);
34
+ } catch {
35
+ return;
36
+ }
37
+ };
38
+ const parseStoredThread = (value) => {
39
+ if (!isRecord(value) || typeof value.remoteId !== "string") return null;
40
+ const status = value.status ?? "regular";
41
+ if (status !== "regular" && status !== "archived") return null;
42
+ return {
43
+ remoteId: value.remoteId,
44
+ status,
45
+ ...typeof value.externalId === "string" ? { externalId: value.externalId } : void 0,
46
+ ...typeof value.title === "string" ? { title: value.title } : void 0,
47
+ ...isRecord(value.custom) ? { custom: value.custom } : void 0
48
+ };
49
+ };
50
+ const parseDate = (value) => {
51
+ if (value instanceof Date && !Number.isNaN(value.getTime())) return value;
52
+ if (typeof value !== "string" && typeof value !== "number") return null;
53
+ const date = new Date(value);
54
+ return Number.isNaN(date.getTime()) ? null : date;
55
+ };
56
+ const isMessageRole = (value) => value === "system" || value === "user" || value === "assistant";
57
+ const parseStoredThreadMessage = (value) => {
58
+ if (!isRecord(value) || typeof value.id !== "string") return null;
59
+ if (!isMessageRole(value.role)) return null;
60
+ if (!Array.isArray(value.content)) return null;
61
+ const createdAt = parseDate(value.createdAt);
62
+ if (!createdAt) return null;
63
+ const metadata = value.metadata;
64
+ if (!isRecord(metadata) || !isRecord(metadata.custom)) return null;
65
+ if (value.role === "assistant") {
66
+ const status = value.status;
67
+ if (!isRecord(status) || typeof status.type !== "string") return null;
68
+ const submittedFeedbackType = (isRecord(metadata.submittedFeedback) ? metadata.submittedFeedback : void 0)?.type;
69
+ return {
70
+ id: value.id,
71
+ role: "assistant",
72
+ content: value.content,
73
+ status,
74
+ createdAt,
75
+ metadata: {
76
+ unstable_state: metadata.unstable_state ?? null,
77
+ unstable_annotations: Array.isArray(metadata.unstable_annotations) ? metadata.unstable_annotations : [],
78
+ unstable_data: Array.isArray(metadata.unstable_data) ? metadata.unstable_data : [],
79
+ steps: Array.isArray(metadata.steps) ? metadata.steps : [],
80
+ ...submittedFeedbackType === "positive" || submittedFeedbackType === "negative" ? { submittedFeedback: { type: submittedFeedbackType } } : void 0,
81
+ ...metadata.timing !== void 0 ? { timing: metadata.timing } : void 0,
82
+ ...metadata.isOptimistic === true ? { isOptimistic: true } : void 0,
83
+ custom: metadata.custom
84
+ }
85
+ };
86
+ }
87
+ if (value.role === "user") return {
88
+ id: value.id,
89
+ role: "user",
90
+ content: value.content,
91
+ attachments: Array.isArray(value.attachments) ? value.attachments : [],
92
+ createdAt,
93
+ metadata: { custom: metadata.custom }
94
+ };
95
+ if (value.content.length !== 1) return null;
96
+ return {
97
+ id: value.id,
98
+ role: "system",
99
+ content: [value.content[0]],
100
+ createdAt,
101
+ metadata: { custom: metadata.custom }
102
+ };
103
+ };
104
+ const parseStoredThreadMetadata = (raw) => {
105
+ const parsed = parseJSON(raw);
106
+ if (!Array.isArray(parsed)) return [];
107
+ return parsed.flatMap((item) => {
108
+ const thread = parseStoredThread(item);
109
+ return thread ? [thread] : [];
110
+ });
111
+ };
112
+ const parseStoredMessageRepositoryItem = (value) => {
113
+ if (!isRecord(value)) return null;
114
+ const message = parseStoredThreadMessage(value.message);
115
+ if (!message) return null;
116
+ const parentId = value.parentId;
117
+ if (parentId !== void 0 && parentId !== null && typeof parentId !== "string") return null;
118
+ return {
119
+ message,
120
+ parentId: parentId ?? null,
121
+ ...isRecord(value.runConfig) ? { runConfig: value.runConfig } : void 0
122
+ };
123
+ };
124
+ const parseStoredMessageRepository = (raw) => {
125
+ const parsed = parseJSON(raw);
126
+ if (!isRecord(parsed) || !Array.isArray(parsed.messages)) return { messages: [] };
127
+ const candidateMessages = parsed.messages.flatMap((item) => {
128
+ const parsedItem = parseStoredMessageRepositoryItem(item);
129
+ return parsedItem ? [parsedItem] : [];
130
+ });
131
+ const acceptedIds = /* @__PURE__ */ new Set();
132
+ const messages = candidateMessages.flatMap((item) => {
133
+ if (acceptedIds.has(item.message.id)) return [];
134
+ if (item.parentId !== null && !acceptedIds.has(item.parentId)) return [];
135
+ acceptedIds.add(item.message.id);
136
+ return [item];
137
+ });
138
+ const headId = parsed.headId === null || typeof parsed.headId === "string" && messages.some((item) => item.message.id === parsed.headId) ? parsed.headId : void 0;
139
+ return {
140
+ ...headId !== void 0 ? { headId } : void 0,
141
+ messages
142
+ };
143
+ };
7
144
  var AsyncStorageHistoryAdapter = class {
8
145
  storage;
9
146
  aui;
10
147
  prefix;
11
- constructor(storage, aui, prefix) {
148
+ mutationQueue;
149
+ constructor(storage, aui, prefix, mutationQueue) {
12
150
  this.storage = storage;
13
151
  this.aui = aui;
14
152
  this.prefix = prefix;
153
+ this.mutationQueue = mutationQueue;
15
154
  }
16
155
  _messagesKey(remoteId) {
17
156
  return `${this.prefix}messages:${remoteId}`;
@@ -20,29 +159,30 @@ var AsyncStorageHistoryAdapter = class {
20
159
  const remoteId = this.aui.threadListItem().getState().remoteId;
21
160
  if (!remoteId) return { messages: [] };
22
161
  const raw = await this.storage.getItem(this._messagesKey(remoteId));
23
- if (!raw) return { messages: [] };
24
- return JSON.parse(raw);
162
+ return parseStoredMessageRepository(raw);
25
163
  }
26
164
  async append(item) {
27
165
  const { remoteId } = await this.aui.threadListItem().initialize();
28
166
  const key = this._messagesKey(remoteId);
29
- const raw = await this.storage.getItem(key);
30
- const repo = raw ? JSON.parse(raw) : { messages: [] };
31
- const idx = repo.messages.findIndex((m) => m.message.id === item.message.id);
32
- if (idx >= 0) repo.messages[idx] = item;
33
- else repo.messages.push(item);
34
- repo.headId = item.message.id;
35
- await this.storage.setItem(key, JSON.stringify(repo));
167
+ await this.mutationQueue.run(key, async () => {
168
+ const raw = await this.storage.getItem(key);
169
+ const repo = parseStoredMessageRepository(raw);
170
+ const idx = repo.messages.findIndex((m) => m.message.id === item.message.id);
171
+ if (idx >= 0) repo.messages[idx] = item;
172
+ else repo.messages.push(item);
173
+ repo.headId = item.message.id;
174
+ await this.storage.setItem(key, JSON.stringify(repo));
175
+ });
36
176
  }
37
177
  };
38
- const createHistoryProvider = (storage, prefix) => {
178
+ const createHistoryProvider = (storage, prefix, mutationQueue) => {
39
179
  const Provider = (t0) => {
40
180
  const $ = c(7);
41
181
  const { children } = t0;
42
182
  const aui = useAui();
43
183
  let t1;
44
184
  if ($[0] !== aui) {
45
- t1 = new AsyncStorageHistoryAdapter(storage, aui, prefix);
185
+ t1 = new AsyncStorageHistoryAdapter(storage, aui, prefix, mutationQueue);
46
186
  $[0] = aui;
47
187
  $[1] = t1;
48
188
  } else t1 = $[1];
@@ -72,15 +212,26 @@ const createLocalStorageAdapter = (options) => {
72
212
  const { storage, prefix = "@assistant-ui:", titleGenerator } = options;
73
213
  const threadsKey = `${prefix}threads`;
74
214
  const messagesKey = (threadId) => `${prefix}messages:${threadId}`;
215
+ const mutationQueue = getMutationQueue(storage);
75
216
  const loadThreadMetadata = async () => {
76
217
  const raw = await storage.getItem(threadsKey);
77
- return raw ? JSON.parse(raw) : [];
218
+ return parseStoredThreadMetadata(raw);
78
219
  };
79
220
  const saveThreadMetadata = async (threads) => {
80
221
  await storage.setItem(threadsKey, JSON.stringify(threads));
81
222
  };
223
+ const updateThreadMetadata = async (remoteId, update) => {
224
+ await mutationQueue.run(threadsKey, async () => {
225
+ const threads = await loadThreadMetadata();
226
+ const thread = threads.find((item) => item.remoteId === remoteId);
227
+ if (thread) {
228
+ update(thread);
229
+ await saveThreadMetadata(threads);
230
+ }
231
+ });
232
+ };
82
233
  return {
83
- unstable_Provider: createHistoryProvider(storage, prefix),
234
+ unstable_Provider: createHistoryProvider(storage, prefix, mutationQueue),
84
235
  async list() {
85
236
  return { threads: (await loadThreadMetadata()).map((t) => ({
86
237
  remoteId: t.remoteId,
@@ -92,58 +243,52 @@ const createLocalStorageAdapter = (options) => {
92
243
  },
93
244
  async initialize(threadId) {
94
245
  const remoteId = threadId;
95
- const threads = await loadThreadMetadata();
96
- if (!threads.some((t) => t.remoteId === remoteId)) {
97
- threads.unshift({
246
+ return mutationQueue.run(threadsKey, async () => {
247
+ const threads = await loadThreadMetadata();
248
+ if (!threads.some((t) => t.remoteId === remoteId)) {
249
+ threads.unshift({
250
+ remoteId,
251
+ status: "regular"
252
+ });
253
+ await saveThreadMetadata(threads);
254
+ }
255
+ return {
98
256
  remoteId,
99
- status: "regular"
100
- });
101
- await saveThreadMetadata(threads);
102
- }
103
- return {
104
- remoteId,
105
- externalId: void 0
106
- };
257
+ externalId: void 0
258
+ };
259
+ });
107
260
  },
108
261
  async rename(remoteId, newTitle) {
109
- const threads = await loadThreadMetadata();
110
- const thread = threads.find((t) => t.remoteId === remoteId);
111
- if (thread) {
262
+ await updateThreadMetadata(remoteId, (thread) => {
112
263
  thread.title = newTitle;
113
- await saveThreadMetadata(threads);
114
- }
264
+ });
115
265
  },
116
266
  async updateCustom(remoteId, custom) {
117
- const threads = await loadThreadMetadata();
118
- const thread = threads.find((t) => t.remoteId === remoteId);
119
- if (thread) {
267
+ await updateThreadMetadata(remoteId, (thread) => {
120
268
  thread.custom = custom;
121
- await saveThreadMetadata(threads);
122
- }
269
+ });
123
270
  },
124
271
  async archive(remoteId) {
125
- const threads = await loadThreadMetadata();
126
- const thread = threads.find((t) => t.remoteId === remoteId);
127
- if (thread) {
272
+ await updateThreadMetadata(remoteId, (thread) => {
128
273
  thread.status = "archived";
129
- await saveThreadMetadata(threads);
130
- }
274
+ });
131
275
  },
132
276
  async unarchive(remoteId) {
133
- const threads = await loadThreadMetadata();
134
- const thread = threads.find((t) => t.remoteId === remoteId);
135
- if (thread) {
277
+ await updateThreadMetadata(remoteId, (thread) => {
136
278
  thread.status = "regular";
137
- await saveThreadMetadata(threads);
138
- }
279
+ });
139
280
  },
140
281
  async delete(remoteId) {
141
- await saveThreadMetadata((await loadThreadMetadata()).filter((t) => t.remoteId !== remoteId));
142
- await storage.removeItem(messagesKey(remoteId));
282
+ await mutationQueue.run(threadsKey, async () => {
283
+ const filtered = (await loadThreadMetadata()).filter((t) => t.remoteId !== remoteId);
284
+ await saveThreadMetadata(filtered);
285
+ });
286
+ const key = messagesKey(remoteId);
287
+ await mutationQueue.run(key, () => storage.removeItem(key));
143
288
  },
144
289
  async fetch(threadId) {
145
290
  const thread = (await loadThreadMetadata()).find((t) => t.remoteId === threadId);
146
- if (!thread) throw new Error("Thread not found");
291
+ if (!thread) throw new Error(`Stored thread "${threadId}" not found while fetching thread metadata.`);
147
292
  return {
148
293
  remoteId: thread.remoteId,
149
294
  externalId: thread.externalId,
@@ -155,12 +300,9 @@ const createLocalStorageAdapter = (options) => {
155
300
  async generateTitle(remoteId, messages) {
156
301
  if (titleGenerator) {
157
302
  const title = await titleGenerator.generateTitle(messages);
158
- const threads = await loadThreadMetadata();
159
- const thread = threads.find((t) => t.remoteId === remoteId);
160
- if (thread) {
303
+ await updateThreadMetadata(remoteId, (thread) => {
161
304
  thread.title = title;
162
- await saveThreadMetadata(threads);
163
- }
305
+ });
164
306
  return createAssistantStream((controller) => {
165
307
  controller.appendText(title);
166
308
  });
@@ -170,6 +312,6 @@ const createLocalStorageAdapter = (options) => {
170
312
  };
171
313
  };
172
314
  //#endregion
173
- export { createLocalStorageAdapter };
315
+ export { createLocalStorageAdapter, parseStoredMessageRepository, parseStoredThreadMetadata };
174
316
 
175
317
  //# sourceMappingURL=LocalStorageThreadListAdapter.js.map