@assistant-ui/core 0.3.16 → 0.3.17

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 (305) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.js +2 -2
  3. package/dist/index.js.map +1 -1
  4. package/dist/internal.d.ts +2 -1
  5. package/dist/internal.js +2 -1
  6. package/dist/model-context/frame/provider.d.ts +3 -0
  7. package/dist/model-context/frame/provider.d.ts.map +1 -1
  8. package/dist/model-context/frame/provider.js +71 -21
  9. package/dist/model-context/frame/provider.js.map +1 -1
  10. package/dist/model-context/tool-call-text.d.ts +26 -0
  11. package/dist/model-context/tool-call-text.d.ts.map +1 -0
  12. package/dist/model-context/tool-call-text.js +18 -0
  13. package/dist/model-context/tool-call-text.js.map +1 -0
  14. package/dist/react/RuntimeAdapter.js +1 -1
  15. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  16. package/dist/react/adapters/LocalStorageThreadListAdapter.js +1 -1
  17. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  18. package/dist/react/client/AdaptedRemoteThread.js +1 -1
  19. package/dist/react/client/InMemoryThreadList.js +1 -1
  20. package/dist/react/client/Interactables.js +1 -1
  21. package/dist/react/client/RemoteThreadList.d.ts +15 -0
  22. package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
  23. package/dist/react/client/RemoteThreadList.js +240 -138
  24. package/dist/react/client/RemoteThreadList.js.map +1 -1
  25. package/dist/react/client/Tools.d.ts.map +1 -1
  26. package/dist/react/client/Tools.js +6 -2
  27. package/dist/react/client/Tools.js.map +1 -1
  28. package/dist/react/index.d.ts +2 -1
  29. package/dist/react/index.js +2 -1
  30. package/dist/react/interactables-legacy/Interactables.js +4 -4
  31. package/dist/react/interactables-legacy/Interactables.js.map +1 -1
  32. package/dist/react/model-context/toolbox.d.ts +2 -14
  33. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  34. package/dist/react/model-context/toolbox.js +1 -13
  35. package/dist/react/model-context/toolbox.js.map +1 -1
  36. package/dist/react/model-context/useAssistantContext.js +37 -7
  37. package/dist/react/model-context/useAssistantContext.js.map +1 -1
  38. package/dist/react/model-context/useAuiToolOverrides.js +31 -5
  39. package/dist/react/model-context/useAuiToolOverrides.js.map +1 -1
  40. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  41. package/dist/react/model-context/useInlineRender.js +10 -36
  42. package/dist/react/model-context/useInlineRender.js.map +1 -1
  43. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
  44. package/dist/react/primitive-hooks/useMessageError.js +2 -8
  45. package/dist/react/primitive-hooks/useMessageError.js.map +1 -1
  46. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
  47. package/dist/react/primitive-hooks/useThreadListLoadMore.js +2 -4
  48. package/dist/react/primitive-hooks/useThreadListLoadMore.js.map +1 -1
  49. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  50. package/dist/react/primitives/composer/ComposerAttachments.js +4 -3
  51. package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
  52. package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
  53. package/dist/react/primitives/composer/ComposerQueue.js +4 -3
  54. package/dist/react/primitives/composer/ComposerQueue.js.map +1 -1
  55. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  56. package/dist/react/primitives/message/MessageAttachments.js +7 -6
  57. package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
  58. package/dist/react/primitives/message/MessageGroupedParts.js +2 -2
  59. package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
  60. package/dist/react/primitives/message/MessageParts.js +3 -3
  61. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  62. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  63. package/dist/react/primitives/threadList/ThreadListItems.js +5 -4
  64. package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
  65. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +6 -4
  66. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  67. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +44 -22
  68. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  69. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +6 -5
  70. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  71. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +79 -62
  72. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  73. package/dist/react/runtimes/RemoteThreadResource.d.ts +1 -6
  74. package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
  75. package/dist/react/runtimes/RemoteThreadResource.js +3 -3
  76. package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
  77. package/dist/react/runtimes/assistant-transport/useLatestRef.js +2 -2
  78. package/dist/react/runtimes/assistant-transport/useLatestRef.js.map +1 -1
  79. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  80. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +23 -18
  81. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  82. package/dist/react/runtimes/cloud/auiV0.d.ts +5 -1
  83. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  84. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  85. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +29 -0
  86. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -0
  87. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js +159 -0
  88. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js.map +1 -0
  89. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +1 -9
  90. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  91. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +16 -153
  92. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
  93. package/dist/react/runtimes/external-message-converter.js +1 -1
  94. package/dist/react/runtimes/external-message-converter.js.map +1 -1
  95. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  96. package/dist/react/runtimes/useRemoteThreadListRuntime.js +14 -6
  97. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
  98. package/dist/react/types/MessagePartComponentTypes.d.ts +7 -3
  99. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  100. package/dist/react/types/scopes/tools.d.ts +2 -0
  101. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  102. package/dist/runtime/api/message-part-runtime.d.ts +2 -2
  103. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  104. package/dist/runtime/api/message-part-runtime.js +1 -1
  105. package/dist/runtime/api/message-part-runtime.js.map +1 -1
  106. package/dist/runtime/api/thread-list-runtime.d.ts +9 -1
  107. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  108. package/dist/runtime/api/thread-list-runtime.js +5 -0
  109. package/dist/runtime/api/thread-list-runtime.js.map +1 -1
  110. package/dist/runtime/api/thread-runtime.d.ts +1 -1
  111. package/dist/runtime/base/base-thread-runtime-core.d.ts +2 -2
  112. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  113. package/dist/runtime/base/base-thread-runtime-core.js +2 -2
  114. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  115. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +14 -2
  116. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  117. package/dist/runtime/interfaces/thread-runtime-core.d.ts +15 -1
  118. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  119. package/dist/runtime/utils/auto-status.d.ts +1 -1
  120. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  121. package/dist/runtime/utils/auto-status.js +6 -2
  122. package/dist/runtime/utils/auto-status.js.map +1 -1
  123. package/dist/runtime/utils/external-message-conversion.d.ts +3 -2
  124. package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
  125. package/dist/runtime/utils/external-message-conversion.js +4 -3
  126. package/dist/runtime/utils/external-message-conversion.js.map +1 -1
  127. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +6 -3
  128. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
  129. package/dist/runtime/utils/resolveToolApprovalResponse.js +12 -3
  130. package/dist/runtime/utils/resolveToolApprovalResponse.js.map +1 -1
  131. package/dist/runtime/utils/thread-message-like.d.ts +2 -10
  132. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  133. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  134. package/dist/runtime/utils/tool-call-tree.d.ts +39 -0
  135. package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -0
  136. package/dist/runtime/utils/tool-call-tree.js +85 -0
  137. package/dist/runtime/utils/tool-call-tree.js.map +1 -0
  138. package/dist/runtimes/external-store/external-store-adapter.d.ts +29 -2
  139. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  140. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +2 -1
  141. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  142. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +34 -28
  143. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  144. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +1 -1
  145. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
  146. package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
  147. package/dist/runtimes/local/local-thread-runtime-core.d.ts +1 -1
  148. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  149. package/dist/runtimes/local/local-thread-runtime-core.js +3 -1
  150. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  151. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +1 -1
  152. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  153. package/dist/runtimes/remote-thread-list/remote-thread-state.js +30 -13
  154. package/dist/runtimes/remote-thread-list/remote-thread-state.js.map +1 -1
  155. package/dist/runtimes/remote-thread-list/title.d.ts +9 -0
  156. package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -0
  157. package/dist/runtimes/remote-thread-list/title.js +6 -0
  158. package/dist/runtimes/remote-thread-list/title.js.map +1 -0
  159. package/dist/runtimes/remote-thread-list/types.d.ts +6 -5
  160. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  161. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +31 -8
  162. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  163. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +97 -60
  164. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
  165. package/dist/store/clients/external-thread.d.ts +1 -1
  166. package/dist/store/clients/external-thread.d.ts.map +1 -1
  167. package/dist/store/clients/external-thread.js +11 -4
  168. package/dist/store/clients/external-thread.js.map +1 -1
  169. package/dist/store/clients/single-thread-list.js +1 -1
  170. package/dist/store/clients/suggestions.d.ts.map +1 -1
  171. package/dist/store/clients/suggestions.js +18 -6
  172. package/dist/store/clients/suggestions.js.map +1 -1
  173. package/dist/store/clients/thread-message-client.js +1 -1
  174. package/dist/store/clients/thread-selection-events.js +1 -1
  175. package/dist/store/index.d.ts +2 -1
  176. package/dist/store/index.js +2 -1
  177. package/dist/store/internal.d.ts +2 -2
  178. package/dist/store/internal.js +2 -2
  179. package/dist/store/primitive-predicates.d.ts +4 -1
  180. package/dist/store/primitive-predicates.d.ts.map +1 -1
  181. package/dist/store/primitive-predicates.js +9 -1
  182. package/dist/store/primitive-predicates.js.map +1 -1
  183. package/dist/store/runtime-clients/composer-runtime-client.js +1 -1
  184. package/dist/store/runtime-clients/message-runtime-client.js +1 -1
  185. package/dist/store/runtime-clients/thread-list-item-runtime-client.js +1 -1
  186. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  187. package/dist/store/runtime-clients/thread-list-runtime-client.js +124 -105
  188. package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
  189. package/dist/store/runtime-clients/thread-runtime-client.js +1 -1
  190. package/dist/store/runtime-clients/useSubscribable.d.ts +3 -1
  191. package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
  192. package/dist/store/runtime-clients/useSubscribable.js +1 -1
  193. package/dist/store/runtime-clients/useSubscribable.js.map +1 -1
  194. package/dist/store/scopes/part.d.ts +6 -3
  195. package/dist/store/scopes/part.d.ts.map +1 -1
  196. package/dist/subscribable/subscribable.d.ts +8 -1
  197. package/dist/subscribable/subscribable.d.ts.map +1 -1
  198. package/dist/subscribable/subscribable.js +24 -16
  199. package/dist/subscribable/subscribable.js.map +1 -1
  200. package/dist/types/message.d.ts +40 -1
  201. package/dist/types/message.d.ts.map +1 -1
  202. package/dist/types/message.js +7 -1
  203. package/dist/types/message.js.map +1 -1
  204. package/package.json +12 -17
  205. package/src/index.ts +6 -1
  206. package/src/internal.ts +8 -0
  207. package/src/model-context/frame/provider.test.ts +217 -1
  208. package/src/model-context/frame/provider.ts +111 -23
  209. package/src/model-context/tool-call-text.test.ts +67 -0
  210. package/src/model-context/tool-call-text.ts +67 -0
  211. package/src/react/AssistantRuntimeProvider.test.tsx +66 -2
  212. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +1 -3
  213. package/src/react/client/RemoteThreadList.background.test.ts +384 -0
  214. package/src/react/client/RemoteThreadList.concurrent.test.tsx +274 -0
  215. package/src/react/client/RemoteThreadList.test.ts +273 -1
  216. package/src/react/client/RemoteThreadList.ts +293 -83
  217. package/src/react/client/Tools.ts +7 -1
  218. package/src/react/index.ts +4 -0
  219. package/src/react/model-context/modelContextHooks.test.tsx +131 -0
  220. package/src/react/model-context/toolbox.test.ts +9 -9
  221. package/src/react/model-context/toolbox.ts +9 -36
  222. package/src/react/model-context/useAssistantContext.ts +4 -2
  223. package/src/react/model-context/useAuiToolOverrides.ts +4 -2
  224. package/src/react/model-context/useInlineRender.test.tsx +48 -0
  225. package/src/react/model-context/useInlineRender.ts +14 -10
  226. package/src/react/primitive-hooks/useMessageError.ts +2 -19
  227. package/src/react/primitive-hooks/useThreadListLoadMore.ts +2 -3
  228. package/src/react/primitives/composer/ComposerAttachments.test.tsx +76 -0
  229. package/src/react/primitives/composer/ComposerAttachments.tsx +9 -4
  230. package/src/react/primitives/composer/ComposerQueue.test.tsx +72 -0
  231. package/src/react/primitives/composer/ComposerQueue.tsx +7 -4
  232. package/src/react/primitives/message/MessageAttachments.test.tsx +107 -37
  233. package/src/react/primitives/message/MessageAttachments.tsx +10 -7
  234. package/src/react/primitives/message/MessageGroupedParts.tsx +2 -2
  235. package/src/react/primitives/message/MessageParts.tsx +3 -3
  236. package/src/react/primitives/threadList/ThreadListItems.test.tsx +99 -0
  237. package/src/react/primitives/threadList/ThreadListItems.tsx +8 -5
  238. package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +94 -1
  239. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +72 -31
  240. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.switch-delete.test.ts +169 -0
  241. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +114 -68
  242. package/src/react/runtimes/RemoteThreadResource.ts +1 -4
  243. package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +51 -2
  244. package/src/react/runtimes/assistant-transport/useLatestRef.ts +2 -2
  245. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +45 -0
  246. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +65 -1
  247. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +42 -35
  248. package/src/react/runtimes/cloud/auiV0.ts +5 -0
  249. package/src/react/runtimes/cloud/createCloudThreadListAdapter.test.ts +88 -0
  250. package/src/react/runtimes/cloud/createCloudThreadListAdapter.ts +236 -0
  251. package/src/react/runtimes/cloud/useCloudThreadListAdapter.test.tsx +90 -1
  252. package/src/react/runtimes/cloud/useCloudThreadListAdapter.tsx +33 -238
  253. package/src/react/runtimes/external-message-converter.ts +1 -0
  254. package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +216 -0
  255. package/src/react/runtimes/useRemoteThreadListRuntime.ts +24 -6
  256. package/src/react/types/MessagePartComponentTypes.ts +7 -3
  257. package/src/react/types/scopes/tools.ts +2 -0
  258. package/src/runtime/api/message-part-runtime.ts +3 -3
  259. package/src/runtime/api/thread-list-runtime.ts +25 -1
  260. package/src/runtime/base/base-thread-runtime-core.test.ts +94 -3
  261. package/src/runtime/base/base-thread-runtime-core.ts +10 -4
  262. package/src/runtime/interfaces/thread-list-runtime-core.ts +20 -1
  263. package/src/runtime/interfaces/thread-runtime-core.ts +17 -1
  264. package/src/runtime/utils/auto-status.test.ts +57 -0
  265. package/src/runtime/utils/auto-status.ts +13 -1
  266. package/src/runtime/utils/external-message-conversion.test.ts +97 -0
  267. package/src/runtime/utils/external-message-conversion.ts +17 -1
  268. package/src/runtime/utils/resolveToolApprovalResponse.test.ts +73 -0
  269. package/src/runtime/utils/resolveToolApprovalResponse.ts +27 -6
  270. package/src/runtime/utils/thread-message-like.ts +2 -10
  271. package/src/runtime/utils/tool-call-tree.test.ts +191 -0
  272. package/src/runtime/utils/tool-call-tree.ts +97 -0
  273. package/src/runtimes/external-store/external-store-adapter.ts +38 -2
  274. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +56 -33
  275. package/src/runtimes/inert/InertThreadRuntimeCore.ts +1 -1
  276. package/src/runtimes/local/local-thread-runtime-core.test.ts +29 -3
  277. package/src/runtimes/local/local-thread-runtime-core.ts +5 -1
  278. package/src/runtimes/remote-thread-list/remote-thread-state.test.ts +112 -0
  279. package/src/runtimes/remote-thread-list/remote-thread-state.ts +55 -16
  280. package/src/runtimes/remote-thread-list/title.ts +3 -0
  281. package/src/runtimes/remote-thread-list/types.ts +6 -5
  282. package/src/runtimes/tool-invocations/EDGE_CASES.md +110 -5
  283. package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +750 -136
  284. package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +144 -91
  285. package/src/store/clients/external-thread.ts +14 -8
  286. package/src/store/clients/suggestions.test.ts +155 -1
  287. package/src/store/clients/suggestions.ts +42 -34
  288. package/src/store/index.ts +4 -0
  289. package/src/store/internal.ts +2 -0
  290. package/src/store/primitive-predicates.ts +35 -0
  291. package/src/store/runtime-clients/thread-list-runtime-client.ts +16 -2
  292. package/src/store/runtime-clients/useSubscribable.ts +8 -2
  293. package/src/store/scopes/part.ts +6 -3
  294. package/src/subscribable/subscribable.test.ts +50 -0
  295. package/src/subscribable/subscribable.ts +33 -21
  296. package/src/tests/RemoteThreadListThreadListRuntimeCore-load-race.test.ts +111 -0
  297. package/src/tests/RemoteThreadListThreadListRuntimeCore-loadMore.test.ts +78 -0
  298. package/src/tests/RemoteThreadListThreadListRuntimeCore-reload.test.ts +52 -0
  299. package/src/tests/external-store-optimistic-id.test.ts +79 -0
  300. package/src/tests/external-store-repository-instance.test.ts +166 -0
  301. package/src/tests/external-store-thread-runtime-core-adapter.test.ts +22 -16
  302. package/src/tests/external-thread-attachments.test.tsx +85 -1
  303. package/src/tests/remote-thread-list-adapter-switch.test.ts +66 -1
  304. package/src/tests/thread-switch-events.test.tsx +397 -2
  305. package/src/types/message.ts +50 -2
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /// <reference path="./store/scope-registration.d.ts" />
2
- import { AppendMessage, DataMessagePart, FileMessagePart, GenerativeUIMessagePart, GenerativeUINode, GenerativeUISpec, ImageMessagePart, MCP_APP_URI_SCHEME, McpAppMetadata, MessagePartStatus, MessagePartStreamStatus, MessageRole, MessageStatus, MessageTiming, PartProviderMetadata, ReasoningMessagePart, RunConfig, SourceMessagePart, SourceProviderMetadata, TextMessagePart, ThreadAssistantMessage, ThreadAssistantMessagePart, ThreadMessage, ThreadStep, ThreadSystemMessage, ThreadUserMessage, ThreadUserMessagePart, ToolApprovalOption, ToolApprovalOptionKind, ToolApprovalResponse, ToolCallMessagePart, ToolCallMessagePartMcpMetadata, ToolCallMessagePartStatus, ToolCallTiming, ToolModelContentPart, Unstable_AudioMessagePart, isMcpAppUri } from "./types/message.js";
2
+ import { AppendMessage, DataMessagePart, FileMessagePart, GenerativeUIMessagePart, GenerativeUINode, GenerativeUISpec, ImageMessagePart, MCP_APP_URI_SCHEME, McpAppMetadata, MessagePartStatus, MessagePartStreamStatus, MessageRole, MessageStatus, MessageTiming, PartProviderMetadata, ReasoningMessagePart, RunConfig, SourceMessagePart, SourceProviderMetadata, TextMessagePart, ThreadAssistantMessage, ThreadAssistantMessagePart, ThreadMessage, ThreadStep, ThreadSystemMessage, ThreadUserMessage, ThreadUserMessagePart, ToolApprovalDisplay, ToolApprovalOption, ToolApprovalOptionKind, ToolApprovalResponse, ToolCallMessagePart, ToolCallMessagePartMcpMetadata, ToolCallMessagePartStatus, ToolCallTiming, ToolModelContentPart, Unstable_AudioMessagePart, isMcpAppUri, toolApprovalAcceptsText } from "./types/message.js";
3
3
  import { Attachment, AttachmentStatus, CompleteAttachment, CompleteAttachmentStatus, CreateAttachment, PendingAttachment, PendingAttachmentStatus } from "./types/attachment.js";
4
4
  import { AttachmentAdapter, CompositeAttachmentAdapter, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter } from "./adapters/attachment.js";
5
5
  import { Unstable_TriggerCategory, Unstable_TriggerItem } from "./types/trigger.js";
@@ -53,4 +53,4 @@ import { ExternalStoreSharedOptions, pickExternalStoreSharedOptions } from "./ru
53
53
  import { MessageQueueController, MessageQueueDriver, createMessageQueue } from "./runtime/queue/message-queue.js";
54
54
  import { InMemoryThreadListAdapter } from "./runtimes/remote-thread-list/adapter/in-memory.js";
55
55
  import { createRequestHeaders } from "./runtimes/assistant-transport/utils.js";
56
- export { type AddToolResultOptions, type AppendMessage, type Assistant, type AssistantContextConfig, type AssistantError, type AssistantErrorCode, AssistantFrameHost, AssistantFrameProvider, type AssistantInstructionsConfig, type AssistantRuntime, type AssistantRuntimeCore, type AssistantToolProps, type Attachment, type AttachmentAdapter, type AttachmentAddErrorEvent, type AttachmentAddErrorReason, type AttachmentRuntime, type AttachmentRuntimePath, type AttachmentState, type AttachmentStatus, type ChatModelAdapter, type ChatModelRunOptions, type ChatModelRunResult, type ChatModelRunUpdate, type CompleteAttachment, type CompleteAttachmentStatus, type ComposerRuntime, type ComposerRuntimeCore, type ComposerRuntimeEventCallback, type ComposerRuntimeEventPayload, type ComposerRuntimeEventType, type ComposerRuntimePath, type ComposerState, CompositeAttachmentAdapter, type CoreChatModelRunResult, type CreateAppendMessage, type CreateAttachment, type CreateResumeRunConfig, type CreateStartRunConfig, type CreateSuggestionAdapterOptions, type DataMessagePart, type DictationAdapter, type DictationState, type EditComposerRuntime, type EditComposerRuntimeCore, type EditComposerState, type ErrorDisplay, type ErrorSeverity, ExportedMessageRepository, type ExportedMessageRepositoryItem, type ExternalStoreAdapter, type ExternalStoreBranchChange, type ExternalStoreMessageConverter, type ExternalStoreSharedOptions, type ExternalStoreThreadData, type ExternalStoreThreadListAdapter, type ExternalThreadBranchAdapter, type ExternalThreadQueueAdapter, FRAME_MESSAGE_CHANNEL, type FeedbackAdapter, type FileMessagePart, type FrameMessage, type FrameMessageType, type GenerativeUIMessagePart, type GenerativeUINode, type GenerativeUISpec, type GenericThreadHistoryAdapter, type ImageMessagePart, InMemoryThreadListAdapter, type LanguageModelConfig, type LanguageModelV1CallSettings, type LocalRuntimeOptionsBase, MCP_APP_URI_SCHEME, type McpAppMetadata, type MessageFormatAdapter, type MessageFormatItem, type MessageFormatRepository, MessageNotSentError, type MessagePartRuntime, type MessagePartRuntimePath, type MessagePartState, type MessagePartStatus, type MessagePartStreamStatus, type MessageQueueController, type MessageQueueDriver, type MessageRole, type MessageRuntime, type MessageRuntimePath, type MessageState, type MessageStatus, type MessageStorageEntry, type MessageTiming, type ModelContext, type ModelContextProvider, ModelContextRegistry, type ModelContextRegistryInstructionHandle, type ModelContextRegistryProviderHandle, type ModelContextRegistryToolHandle, type PartProviderMetadata, type PendingAttachment, type PendingAttachmentStatus, type QueuePlacement, type QuoteInfo, type RealtimeVoiceAdapter, type ReasoningMessagePart, type RemoteThreadInitializeResponse, type RemoteThreadListAdapter, type RemoteThreadListOptions, type RemoteThreadListPageOptions, type RemoteThreadListProviderComponent, type RemoteThreadListResponse, type RemoteThreadMetadata, type RespondToToolApprovalOptions, type ResumeRunConfig, type ResumeToolCallOptions, type RunConfig, type RuntimeAdapters, type RuntimeCapabilities, type SendOptions, type SerializedModelContext, type SerializedTool, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, type SourceMessagePart, type SourceProviderMetadata, type SpeechState, type SpeechSynthesisAdapter, type StartRunConfig, type StreamingTimingAccessors, type StreamingTimingOptions, type StreamingTimingState, type SubmitFeedbackOptions, type SubmittedFeedback, type SuggestionAdapter, type SuggestionAdapterGenerateOptions, type TextMessagePart, type ThreadAssistantMessage, type ThreadAssistantMessagePart, type ThreadComposerRuntime, type ThreadComposerRuntimeCore, type ThreadComposerState, type ThreadHistoryAdapter, type ThreadListItemCoreState, type ThreadListItemEventCallback, type ThreadListItemEventPayload, type ThreadListItemEventType, type ThreadListItemRuntime, type ThreadListItemRuntimePath, type ThreadListItemState, type ThreadListItemStatus, type ThreadListRuntime, type ThreadListRuntimeCore, type ThreadListState, type ThreadMessage, type ThreadMessageLike, type ThreadRuntime, type ThreadRuntimeCore, type ThreadRuntimeEventCallback, type ThreadRuntimeEventPayload, type ThreadRuntimeEventType, type ThreadRuntimePath, type ThreadState, type ThreadStep, type ThreadSuggestion, type ThreadSystemMessage, type ThreadUserMessage, type ThreadUserMessagePart, type ToolApprovalOption, type ToolApprovalOptionKind, type ToolApprovalResponse, type ToolCallMessagePart, type ToolCallMessagePartMcpMetadata, type ToolCallMessagePartStatus, type ToolCallTiming, type ToolExecutionStatus, type ToolModelContentPart, type Unstable_AudioMessagePart, type Unstable_DirectiveFormatter, type Unstable_DirectiveSegment, type Unstable_InteractableSnapshotEntry, type Unstable_InteractableVersion, type Unstable_TriggerAdapter, type Unstable_TriggerCategory, type Unstable_TriggerItem, type Unsubscribe, type UserCommands, type UserExternalState, type VoiceSessionControls, type VoiceSessionHelpers, type VoiceSessionState, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createRequestHeaders, createSuggestionAdapter, createVoiceSession, fromThreadMessageLike, generateId, getExternalStoreMessages, isAssistantError, isMcpAppUri, isMessageNotSentError, mergeModelContexts, pickExternalStoreSharedOptions, stepStreamingTiming, toAssistantError, tool, unstable_defaultDirectiveFormatter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions };
56
+ export { type AddToolResultOptions, type AppendMessage, type Assistant, type AssistantContextConfig, type AssistantError, type AssistantErrorCode, AssistantFrameHost, AssistantFrameProvider, type AssistantInstructionsConfig, type AssistantRuntime, type AssistantRuntimeCore, type AssistantToolProps, type Attachment, type AttachmentAdapter, type AttachmentAddErrorEvent, type AttachmentAddErrorReason, type AttachmentRuntime, type AttachmentRuntimePath, type AttachmentState, type AttachmentStatus, type ChatModelAdapter, type ChatModelRunOptions, type ChatModelRunResult, type ChatModelRunUpdate, type CompleteAttachment, type CompleteAttachmentStatus, type ComposerRuntime, type ComposerRuntimeCore, type ComposerRuntimeEventCallback, type ComposerRuntimeEventPayload, type ComposerRuntimeEventType, type ComposerRuntimePath, type ComposerState, CompositeAttachmentAdapter, type CoreChatModelRunResult, type CreateAppendMessage, type CreateAttachment, type CreateResumeRunConfig, type CreateStartRunConfig, type CreateSuggestionAdapterOptions, type DataMessagePart, type DictationAdapter, type DictationState, type EditComposerRuntime, type EditComposerRuntimeCore, type EditComposerState, type ErrorDisplay, type ErrorSeverity, ExportedMessageRepository, type ExportedMessageRepositoryItem, type ExternalStoreAdapter, type ExternalStoreBranchChange, type ExternalStoreMessageConverter, type ExternalStoreSharedOptions, type ExternalStoreThreadData, type ExternalStoreThreadListAdapter, type ExternalThreadBranchAdapter, type ExternalThreadQueueAdapter, FRAME_MESSAGE_CHANNEL, type FeedbackAdapter, type FileMessagePart, type FrameMessage, type FrameMessageType, type GenerativeUIMessagePart, type GenerativeUINode, type GenerativeUISpec, type GenericThreadHistoryAdapter, type ImageMessagePart, InMemoryThreadListAdapter, type LanguageModelConfig, type LanguageModelV1CallSettings, type LocalRuntimeOptionsBase, MCP_APP_URI_SCHEME, type McpAppMetadata, type MessageFormatAdapter, type MessageFormatItem, type MessageFormatRepository, MessageNotSentError, type MessagePartRuntime, type MessagePartRuntimePath, type MessagePartState, type MessagePartStatus, type MessagePartStreamStatus, type MessageQueueController, type MessageQueueDriver, type MessageRole, type MessageRuntime, type MessageRuntimePath, type MessageState, type MessageStatus, type MessageStorageEntry, type MessageTiming, type ModelContext, type ModelContextProvider, ModelContextRegistry, type ModelContextRegistryInstructionHandle, type ModelContextRegistryProviderHandle, type ModelContextRegistryToolHandle, type PartProviderMetadata, type PendingAttachment, type PendingAttachmentStatus, type QueuePlacement, type QuoteInfo, type RealtimeVoiceAdapter, type ReasoningMessagePart, type RemoteThreadInitializeResponse, type RemoteThreadListAdapter, type RemoteThreadListOptions, type RemoteThreadListPageOptions, type RemoteThreadListProviderComponent, type RemoteThreadListResponse, type RemoteThreadMetadata, type RespondToToolApprovalOptions, type ResumeRunConfig, type ResumeToolCallOptions, type RunConfig, type RuntimeAdapters, type RuntimeCapabilities, type SendOptions, type SerializedModelContext, type SerializedTool, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, type SourceMessagePart, type SourceProviderMetadata, type SpeechState, type SpeechSynthesisAdapter, type StartRunConfig, type StreamingTimingAccessors, type StreamingTimingOptions, type StreamingTimingState, type SubmitFeedbackOptions, type SubmittedFeedback, type SuggestionAdapter, type SuggestionAdapterGenerateOptions, type TextMessagePart, type ThreadAssistantMessage, type ThreadAssistantMessagePart, type ThreadComposerRuntime, type ThreadComposerRuntimeCore, type ThreadComposerState, type ThreadHistoryAdapter, type ThreadListItemCoreState, type ThreadListItemEventCallback, type ThreadListItemEventPayload, type ThreadListItemEventType, type ThreadListItemRuntime, type ThreadListItemRuntimePath, type ThreadListItemState, type ThreadListItemStatus, type ThreadListRuntime, type ThreadListRuntimeCore, type ThreadListState, type ThreadMessage, type ThreadMessageLike, type ThreadRuntime, type ThreadRuntimeCore, type ThreadRuntimeEventCallback, type ThreadRuntimeEventPayload, type ThreadRuntimeEventType, type ThreadRuntimePath, type ThreadState, type ThreadStep, type ThreadSuggestion, type ThreadSystemMessage, type ThreadUserMessage, type ThreadUserMessagePart, type ToolApprovalDisplay, type ToolApprovalOption, type ToolApprovalOptionKind, type ToolApprovalResponse, type ToolCallMessagePart, type ToolCallMessagePartMcpMetadata, type ToolCallMessagePartStatus, type ToolCallTiming, type ToolExecutionStatus, type ToolModelContentPart, type Unstable_AudioMessagePart, type Unstable_DirectiveFormatter, type Unstable_DirectiveSegment, type Unstable_InteractableSnapshotEntry, type Unstable_InteractableVersion, type Unstable_TriggerAdapter, type Unstable_TriggerCategory, type Unstable_TriggerItem, type Unsubscribe, type UserCommands, type UserExternalState, type VoiceSessionControls, type VoiceSessionHelpers, type VoiceSessionState, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createRequestHeaders, createSuggestionAdapter, createVoiceSession, fromThreadMessageLike, generateId, getExternalStoreMessages, isAssistantError, isMcpAppUri, isMessageNotSentError, mergeModelContexts, pickExternalStoreSharedOptions, stepStreamingTiming, toAssistantError, tool, toolApprovalAcceptsText, unstable_defaultDirectiveFormatter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions };
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { checkDuplicateCore } from "./internal/duplicate-detection.js";
2
- import { MCP_APP_URI_SCHEME, isMcpAppUri } from "./types/message.js";
2
+ import { MCP_APP_URI_SCHEME, isMcpAppUri, toolApprovalAcceptsText } from "./types/message.js";
3
3
  import { mergeModelContexts } from "./model-context/types.js";
4
4
  import { tool } from "./model-context/tool.js";
5
5
  import { unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions } from "./model-context/interactable-composer-metadata.js";
@@ -25,6 +25,6 @@ import { createRequestHeaders } from "./runtimes/assistant-transport/utils.js";
25
25
  //#region src/index.ts
26
26
  if (process.env.NODE_ENV !== "production") checkDuplicateCore();
27
27
  //#endregion
28
- export { AssistantFrameHost, AssistantFrameProvider, CompositeAttachmentAdapter, ExportedMessageRepository, FRAME_MESSAGE_CHANNEL, InMemoryThreadListAdapter, MCP_APP_URI_SCHEME, MessageNotSentError, ModelContextRegistry, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createRequestHeaders, createSuggestionAdapter, createVoiceSession, fromThreadMessageLike, generateId, getExternalStoreMessages, isAssistantError, isMcpAppUri, isMessageNotSentError, mergeModelContexts, pickExternalStoreSharedOptions, stepStreamingTiming, toAssistantError, tool, unstable_defaultDirectiveFormatter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions };
28
+ export { AssistantFrameHost, AssistantFrameProvider, CompositeAttachmentAdapter, ExportedMessageRepository, FRAME_MESSAGE_CHANNEL, InMemoryThreadListAdapter, MCP_APP_URI_SCHEME, MessageNotSentError, ModelContextRegistry, SimpleImageAttachmentAdapter, SimpleTextAttachmentAdapter, WebSpeechDictationAdapter, WebSpeechSynthesisAdapter, bindExternalStoreMessage, createMessageQueue, createRequestHeaders, createSuggestionAdapter, createVoiceSession, fromThreadMessageLike, generateId, getExternalStoreMessages, isAssistantError, isMcpAppUri, isMessageNotSentError, mergeModelContexts, pickExternalStoreSharedOptions, stepStreamingTiming, toAssistantError, tool, toolApprovalAcceptsText, unstable_defaultDirectiveFormatter, unstable_formatInteractableSnapshot, unstable_getInteractableSnapshots, unstable_getInteractableVersions };
29
29
 
30
30
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["checkDuplicateCore","process","env","NODE_ENV","TextMessagePart","ReasoningMessagePart","PartProviderMetadata","SourceProviderMetadata","SourceMessagePart","ImageMessagePart","FileMessagePart","DataMessagePart","GenerativeUIMessagePart","GenerativeUINode","GenerativeUISpec","Unstable_AudioMessagePart","ToolApprovalOption","ToolApprovalOptionKind","ToolApprovalResponse","ToolCallMessagePart","ToolCallTiming","ToolCallMessagePartMcpMetadata","McpAppMetadata","ToolModelContentPart","ThreadUserMessagePart","ThreadAssistantMessagePart","MessagePartStatus","MessagePartStreamStatus","ToolCallMessagePartStatus","MessageStatus","MessageTiming","ThreadStep","ThreadSystemMessage","ThreadUserMessage","ThreadAssistantMessage","ThreadMessage","MessageRole","RunConfig","AppendMessage","MCP_APP_URI_SCHEME","isMcpAppUri","Attachment","PendingAttachment","PendingAttachmentStatus","CompleteAttachment","CompleteAttachmentStatus","AttachmentStatus","CreateAttachment","Unsubscribe","Assistant","UserCommands","UserExternalState","QuoteInfo","Unstable_DirectiveSegment","Unstable_DirectiveFormatter","Unstable_TriggerItem","Unstable_TriggerCategory","Unstable_TriggerAdapter","LanguageModelV1CallSettings","LanguageModelConfig","ModelContext","ModelContextProvider","AssistantToolProps","AssistantInstructionsConfig","AssistantContextConfig","mergeModelContexts","tool","unstable_getInteractableSnapshots","unstable_formatInteractableSnapshot","unstable_getInteractableVersions","Unstable_InteractableSnapshotEntry","Unstable_InteractableVersion","ToolExecutionStatus","ModelContextRegistry","ModelContextRegistryToolHandle","ModelContextRegistryInstructionHandle","ModelContextRegistryProviderHandle","AssistantFrameHost","AssistantFrameProvider","SerializedTool","SerializedModelContext","FrameMessageType","FrameMessage","FRAME_MESSAGE_CHANNEL","AttachmentAdapter","SimpleImageAttachmentAdapter","SimpleTextAttachmentAdapter","CompositeAttachmentAdapter","SpeechSynthesisAdapter","DictationAdapter","WebSpeechSynthesisAdapter","WebSpeechDictationAdapter","RealtimeVoiceAdapter","createVoiceSession","VoiceSessionControls","VoiceSessionHelpers","FeedbackAdapter","SuggestionAdapter","SuggestionAdapterGenerateOptions","CreateSuggestionAdapterOptions","createSuggestionAdapter","unstable_defaultDirectiveFormatter","ThreadHistoryAdapter","GenericThreadHistoryAdapter","MessageFormatAdapter","MessageFormatItem","MessageFormatRepository","MessageStorageEntry","ThreadListItemRuntimePath","ThreadRuntimePath","MessageRuntimePath","MessagePartRuntimePath","AttachmentRuntimePath","ComposerRuntimePath","AttachmentAddErrorEvent","AttachmentAddErrorReason","ComposerRuntimeCore","ComposerRuntimeEventCallback","ComposerRuntimeEventPayload","ComposerRuntimeEventType","DictationState","EditComposerRuntimeCore","SendOptions","ThreadComposerRuntimeCore","ErrorSeverity","ErrorDisplay","AssistantErrorCode","AssistantError","toAssistantError","isAssistantError","MessageNotSentError","isMessageNotSentError","RuntimeCapabilities","AddToolResultOptions","ResumeToolCallOptions","RespondToToolApprovalOptions","SubmitFeedbackOptions","ThreadSuggestion","SpeechState","VoiceSessionState","SubmittedFeedback","ThreadRuntimeEventCallback","ThreadRuntimeEventPayload","ThreadRuntimeEventType","StartRunConfig","ResumeRunConfig","ThreadRuntimeCore","ThreadListItemStatus","ThreadListItemCoreState","ThreadListRuntimeCore","AssistantRuntimeCore","AssistantRuntime","CreateStartRunConfig","CreateResumeRunConfig","CreateAppendMessage","ThreadState","ThreadRuntime","ThreadListState","ThreadListRuntime","ThreadListItemEventCallback","ThreadListItemEventPayload","ThreadListItemEventType","ThreadListItemRuntime","ThreadListItemState","MessageState","MessageRuntime","MessagePartState","MessagePartRuntime","ThreadComposerState","EditComposerState","ComposerState","ComposerRuntime","ThreadComposerRuntime","EditComposerRuntime","AttachmentState","AttachmentRuntime","ChatModelRunUpdate","ChatModelRunResult","CoreChatModelRunResult","ChatModelRunOptions","ChatModelAdapter","ThreadMessageLike","fromThreadMessageLike","StreamingTimingAccessors","StreamingTimingOptions","StreamingTimingState","stepStreamingTiming","generateId","getExternalStoreMessages","bindExternalStoreMessage","ExportedMessageRepositoryItem","ExportedMessageRepository","LocalRuntimeOptionsBase","ExternalStoreAdapter","ExternalStoreMessageConverter","ExternalStoreThreadListAdapter","ExternalStoreThreadData","ExternalStoreBranchChange","ExternalStoreSharedOptions","pickExternalStoreSharedOptions","ExternalThreadQueueAdapter","QueuePlacement","ExternalThreadBranchAdapter","createMessageQueue","MessageQueueDriver","MessageQueueController","RemoteThreadListAdapter","RuntimeAdapters","RemoteThreadListOptions","RemoteThreadListProviderComponent","RemoteThreadInitializeResponse","RemoteThreadMetadata","RemoteThreadListResponse","RemoteThreadListPageOptions","InMemoryThreadListAdapter","createRequestHeaders"],"sources":["../src/index.ts"],"sourcesContent":["// @assistant-ui/core - Framework-agnostic core runtime (public API)\n\n/// <reference path=\"./store/scope-registration.ts\" />\n\nimport { checkDuplicateCore } from \"./internal/duplicate-detection\";\n\nif (process.env.NODE_ENV !== \"production\") {\n checkDuplicateCore();\n}\n\nexport type {\n // Message parts\n TextMessagePart,\n ReasoningMessagePart,\n PartProviderMetadata,\n SourceProviderMetadata,\n SourceMessagePart,\n ImageMessagePart,\n FileMessagePart,\n DataMessagePart,\n GenerativeUIMessagePart,\n GenerativeUINode,\n GenerativeUISpec,\n Unstable_AudioMessagePart,\n ToolApprovalOption,\n ToolApprovalOptionKind,\n ToolApprovalResponse,\n ToolCallMessagePart,\n ToolCallTiming,\n ToolCallMessagePartMcpMetadata,\n McpAppMetadata,\n ToolModelContentPart,\n ThreadUserMessagePart,\n ThreadAssistantMessagePart,\n // Message status\n MessagePartStatus,\n MessagePartStreamStatus,\n ToolCallMessagePartStatus,\n MessageStatus,\n // Thread messages\n MessageTiming,\n ThreadStep,\n ThreadSystemMessage,\n ThreadUserMessage,\n ThreadAssistantMessage,\n ThreadMessage,\n MessageRole,\n // Config\n RunConfig,\n AppendMessage,\n} from \"./types/message\";\n\nexport { MCP_APP_URI_SCHEME, isMcpAppUri } from \"./types/message\";\n\nexport type {\n Attachment,\n PendingAttachment,\n PendingAttachmentStatus,\n CompleteAttachment,\n CompleteAttachmentStatus,\n AttachmentStatus,\n CreateAttachment,\n} from \"./types/attachment\";\n\nexport type { Unsubscribe } from \"./types/unsubscribe\";\n\nexport type {\n Assistant,\n UserCommands,\n UserExternalState,\n} from \"./types/augmentations\";\n\nexport type { QuoteInfo } from \"./types/quote\";\n\nexport type {\n Unstable_DirectiveSegment,\n Unstable_DirectiveFormatter,\n} from \"./types/directive\";\n\nexport type {\n Unstable_TriggerItem,\n Unstable_TriggerCategory,\n} from \"./types/trigger\";\n\nexport type { Unstable_TriggerAdapter } from \"./adapters/trigger\";\n\nexport type {\n // Language model settings\n LanguageModelV1CallSettings,\n LanguageModelConfig,\n // Model context\n ModelContext,\n ModelContextProvider,\n // Tool & instruction config\n AssistantToolProps,\n AssistantInstructionsConfig,\n AssistantContextConfig,\n} from \"./model-context/types\";\nexport { mergeModelContexts } from \"./model-context/types\";\n\nexport { tool } from \"./model-context/tool\";\n\nexport {\n unstable_getInteractableSnapshots,\n unstable_formatInteractableSnapshot,\n unstable_getInteractableVersions,\n type Unstable_InteractableSnapshotEntry,\n type Unstable_InteractableVersion,\n} from \"./model-context/interactable-composer-metadata\";\n\nexport type { ToolExecutionStatus } from \"./runtimes/tool-invocations/ToolInvocationTracker\";\n\nexport { ModelContextRegistry } from \"./model-context/registry\";\nexport type {\n ModelContextRegistryToolHandle,\n ModelContextRegistryInstructionHandle,\n ModelContextRegistryProviderHandle,\n} from \"./model-context/registry-handles\";\n\nexport { AssistantFrameHost } from \"./model-context/frame/host\";\nexport { AssistantFrameProvider } from \"./model-context/frame/provider\";\nexport type {\n SerializedTool,\n SerializedModelContext,\n FrameMessageType,\n FrameMessage,\n} from \"./model-context/frame/types\";\nexport { FRAME_MESSAGE_CHANNEL } from \"./model-context/frame/types\";\n\n// Attachment adapters\nexport type { AttachmentAdapter } from \"./adapters/attachment\";\nexport {\n SimpleImageAttachmentAdapter,\n SimpleTextAttachmentAdapter,\n CompositeAttachmentAdapter,\n} from \"./adapters/attachment\";\n\n// Speech adapters\nexport type {\n SpeechSynthesisAdapter,\n DictationAdapter,\n} from \"./adapters/speech\";\nexport {\n WebSpeechSynthesisAdapter,\n WebSpeechDictationAdapter,\n} from \"./adapters/speech\";\n\n// Voice adapter\nexport type { RealtimeVoiceAdapter } from \"./adapters/voice\";\nexport { createVoiceSession } from \"./adapters/voice\";\nexport type {\n VoiceSessionControls,\n VoiceSessionHelpers,\n} from \"./adapters/voice\";\n\n// Feedback adapter\nexport type { FeedbackAdapter } from \"./adapters/feedback\";\n\n// Suggestion adapter\nexport type {\n SuggestionAdapter,\n SuggestionAdapterGenerateOptions,\n CreateSuggestionAdapterOptions,\n} from \"./adapters/suggestion\";\nexport { createSuggestionAdapter } from \"./adapters/suggestion\";\n\n// Directive formatter\nexport { unstable_defaultDirectiveFormatter } from \"./adapters/directive-formatter\";\n\n// Thread history adapters\nexport type {\n ThreadHistoryAdapter,\n GenericThreadHistoryAdapter,\n MessageFormatAdapter,\n MessageFormatItem,\n MessageFormatRepository,\n MessageStorageEntry,\n} from \"./adapters/thread-history\";\n\n// Path Types\nexport type {\n ThreadListItemRuntimePath,\n ThreadRuntimePath,\n MessageRuntimePath,\n MessagePartRuntimePath,\n AttachmentRuntimePath,\n ComposerRuntimePath,\n} from \"./runtime/api/paths\";\n\n// Runtime Core Interface Types\nexport type {\n AttachmentAddErrorEvent,\n AttachmentAddErrorReason,\n ComposerRuntimeCore,\n ComposerRuntimeEventCallback,\n ComposerRuntimeEventPayload,\n ComposerRuntimeEventType,\n DictationState,\n EditComposerRuntimeCore,\n SendOptions,\n ThreadComposerRuntimeCore,\n} from \"./runtime/interfaces/composer-runtime-core\";\n\nexport type {\n ErrorSeverity,\n ErrorDisplay,\n AssistantErrorCode,\n AssistantError,\n} from \"./types/error\";\nexport { toAssistantError, isAssistantError } from \"./types/error\";\nexport { MessageNotSentError, isMessageNotSentError } from \"./types/error\";\n\nexport type {\n RuntimeCapabilities,\n AddToolResultOptions,\n ResumeToolCallOptions,\n RespondToToolApprovalOptions,\n SubmitFeedbackOptions,\n ThreadSuggestion,\n SpeechState,\n VoiceSessionState,\n SubmittedFeedback,\n ThreadRuntimeEventCallback,\n ThreadRuntimeEventPayload,\n ThreadRuntimeEventType,\n StartRunConfig,\n ResumeRunConfig,\n ThreadRuntimeCore,\n} from \"./runtime/interfaces/thread-runtime-core\";\n\nexport type {\n ThreadListItemStatus,\n ThreadListItemCoreState,\n ThreadListRuntimeCore,\n} from \"./runtime/interfaces/thread-list-runtime-core\";\n\nexport type { AssistantRuntimeCore } from \"./runtime/interfaces/assistant-runtime-core\";\n\n// Public Runtime Types\nexport type { AssistantRuntime } from \"./runtime/api/assistant-runtime\";\n\nexport type {\n CreateStartRunConfig,\n CreateResumeRunConfig,\n CreateAppendMessage,\n ThreadState,\n ThreadRuntime,\n} from \"./runtime/api/thread-runtime\";\n\nexport type {\n ThreadListState,\n ThreadListRuntime,\n} from \"./runtime/api/thread-list-runtime\";\n\nexport type {\n ThreadListItemEventCallback,\n ThreadListItemEventPayload,\n ThreadListItemEventType,\n ThreadListItemRuntime,\n} from \"./runtime/api/thread-list-item-runtime\";\n\nexport type { ThreadListItemState } from \"./runtime/api/bindings\";\n\nexport type {\n MessageState,\n MessageRuntime,\n} from \"./runtime/api/message-runtime\";\nexport type {\n MessagePartState,\n MessagePartRuntime,\n} from \"./runtime/api/message-part-runtime\";\n\nexport type {\n ThreadComposerState,\n EditComposerState,\n ComposerState,\n ComposerRuntime,\n ThreadComposerRuntime,\n EditComposerRuntime,\n} from \"./runtime/api/composer-runtime\";\n\nexport type {\n AttachmentState,\n AttachmentRuntime,\n} from \"./runtime/api/attachment-runtime\";\n\n// ChatModel Types\nexport type {\n ChatModelRunUpdate,\n ChatModelRunResult,\n CoreChatModelRunResult,\n ChatModelRunOptions,\n ChatModelAdapter,\n} from \"./runtime/utils/chat-model-adapter\";\n\n// ThreadMessageLike\nexport type { ThreadMessageLike } from \"./runtime/utils/thread-message-like\";\nexport { fromThreadMessageLike } from \"./runtime/utils/thread-message-like\";\n\n// Streaming timing (client-side)\nexport type {\n StreamingTimingAccessors,\n StreamingTimingOptions,\n StreamingTimingState,\n} from \"./runtime/utils/streaming-timing\";\nexport { stepStreamingTiming } from \"./runtime/utils/streaming-timing\";\n\n// ID generation\nexport { generateId } from \"./utils/id\";\n\n// External Store Message Utilities\nexport {\n getExternalStoreMessages,\n bindExternalStoreMessage,\n} from \"./runtime/utils/external-store-message\";\n\n// ExportedMessageRepository\nexport type { ExportedMessageRepositoryItem } from \"./runtime/utils/message-repository\";\nexport { ExportedMessageRepository } from \"./runtime/utils/message-repository\";\n\n// Local Runtime Options\nexport type { LocalRuntimeOptionsBase } from \"./runtimes/local/local-runtime-options\";\n\n// External Store Adapter Types (user-facing)\nexport type {\n ExternalStoreAdapter,\n ExternalStoreMessageConverter,\n ExternalStoreThreadListAdapter,\n ExternalStoreThreadData,\n ExternalStoreBranchChange,\n} from \"./runtimes/external-store/external-store-adapter\";\nexport type { ExternalStoreSharedOptions } from \"./runtimes/external-store/external-store-shared-options\";\nexport { pickExternalStoreSharedOptions } from \"./runtimes/external-store/external-store-shared-options\";\n\n// Message queue\nexport type {\n ExternalThreadQueueAdapter,\n QueuePlacement,\n} from \"./runtime/queue/external-thread-queue-adapter\";\nexport type { ExternalThreadBranchAdapter } from \"./runtime/branch/external-thread-branch-adapter\";\nexport {\n createMessageQueue,\n type MessageQueueDriver,\n type MessageQueueController,\n} from \"./runtime/queue/message-queue\";\n\n// Remote Thread List (user-facing)\nexport type {\n RemoteThreadListAdapter,\n RuntimeAdapters,\n RemoteThreadListOptions,\n RemoteThreadListProviderComponent,\n RemoteThreadInitializeResponse,\n RemoteThreadMetadata,\n RemoteThreadListResponse,\n RemoteThreadListPageOptions,\n} from \"./runtimes/remote-thread-list/types\";\n\nexport { InMemoryThreadListAdapter } from \"./runtimes/remote-thread-list/adapter/in-memory\";\n\n// Assistant Transport Utilities\nexport { createRequestHeaders } from \"./runtimes/assistant-transport/utils\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAIC,QAAQC,IAAIC,aAAa,cAC3BH,mBAAmB"}
1
+ {"version":3,"file":"index.js","names":["checkDuplicateCore","process","env","NODE_ENV","TextMessagePart","ReasoningMessagePart","PartProviderMetadata","SourceProviderMetadata","SourceMessagePart","ImageMessagePart","FileMessagePart","DataMessagePart","GenerativeUIMessagePart","GenerativeUINode","GenerativeUISpec","Unstable_AudioMessagePart","ToolApprovalDisplay","ToolApprovalOption","ToolApprovalOptionKind","ToolApprovalResponse","ToolCallMessagePart","ToolCallTiming","ToolCallMessagePartMcpMetadata","McpAppMetadata","ToolModelContentPart","ThreadUserMessagePart","ThreadAssistantMessagePart","MessagePartStatus","MessagePartStreamStatus","ToolCallMessagePartStatus","MessageStatus","MessageTiming","ThreadStep","ThreadSystemMessage","ThreadUserMessage","ThreadAssistantMessage","ThreadMessage","MessageRole","RunConfig","AppendMessage","MCP_APP_URI_SCHEME","isMcpAppUri","toolApprovalAcceptsText","Attachment","PendingAttachment","PendingAttachmentStatus","CompleteAttachment","CompleteAttachmentStatus","AttachmentStatus","CreateAttachment","Unsubscribe","Assistant","UserCommands","UserExternalState","QuoteInfo","Unstable_DirectiveSegment","Unstable_DirectiveFormatter","Unstable_TriggerItem","Unstable_TriggerCategory","Unstable_TriggerAdapter","LanguageModelV1CallSettings","LanguageModelConfig","ModelContext","ModelContextProvider","AssistantToolProps","AssistantInstructionsConfig","AssistantContextConfig","mergeModelContexts","tool","unstable_getInteractableSnapshots","unstable_formatInteractableSnapshot","unstable_getInteractableVersions","Unstable_InteractableSnapshotEntry","Unstable_InteractableVersion","ToolExecutionStatus","ModelContextRegistry","ModelContextRegistryToolHandle","ModelContextRegistryInstructionHandle","ModelContextRegistryProviderHandle","AssistantFrameHost","AssistantFrameProvider","SerializedTool","SerializedModelContext","FrameMessageType","FrameMessage","FRAME_MESSAGE_CHANNEL","AttachmentAdapter","SimpleImageAttachmentAdapter","SimpleTextAttachmentAdapter","CompositeAttachmentAdapter","SpeechSynthesisAdapter","DictationAdapter","WebSpeechSynthesisAdapter","WebSpeechDictationAdapter","RealtimeVoiceAdapter","createVoiceSession","VoiceSessionControls","VoiceSessionHelpers","FeedbackAdapter","SuggestionAdapter","SuggestionAdapterGenerateOptions","CreateSuggestionAdapterOptions","createSuggestionAdapter","unstable_defaultDirectiveFormatter","ThreadHistoryAdapter","GenericThreadHistoryAdapter","MessageFormatAdapter","MessageFormatItem","MessageFormatRepository","MessageStorageEntry","ThreadListItemRuntimePath","ThreadRuntimePath","MessageRuntimePath","MessagePartRuntimePath","AttachmentRuntimePath","ComposerRuntimePath","AttachmentAddErrorEvent","AttachmentAddErrorReason","ComposerRuntimeCore","ComposerRuntimeEventCallback","ComposerRuntimeEventPayload","ComposerRuntimeEventType","DictationState","EditComposerRuntimeCore","SendOptions","ThreadComposerRuntimeCore","ErrorSeverity","ErrorDisplay","AssistantErrorCode","AssistantError","toAssistantError","isAssistantError","MessageNotSentError","isMessageNotSentError","RuntimeCapabilities","AddToolResultOptions","ResumeToolCallOptions","RespondToToolApprovalOptions","SubmitFeedbackOptions","ThreadSuggestion","SpeechState","VoiceSessionState","SubmittedFeedback","ThreadRuntimeEventCallback","ThreadRuntimeEventPayload","ThreadRuntimeEventType","StartRunConfig","ResumeRunConfig","ThreadRuntimeCore","ThreadListItemStatus","ThreadListItemCoreState","ThreadListRuntimeCore","AssistantRuntimeCore","AssistantRuntime","CreateStartRunConfig","CreateResumeRunConfig","CreateAppendMessage","ThreadState","ThreadRuntime","ThreadListState","ThreadListRuntime","ThreadListItemEventCallback","ThreadListItemEventPayload","ThreadListItemEventType","ThreadListItemRuntime","ThreadListItemState","MessageState","MessageRuntime","MessagePartState","MessagePartRuntime","ThreadComposerState","EditComposerState","ComposerState","ComposerRuntime","ThreadComposerRuntime","EditComposerRuntime","AttachmentState","AttachmentRuntime","ChatModelRunUpdate","ChatModelRunResult","CoreChatModelRunResult","ChatModelRunOptions","ChatModelAdapter","ThreadMessageLike","fromThreadMessageLike","StreamingTimingAccessors","StreamingTimingOptions","StreamingTimingState","stepStreamingTiming","generateId","getExternalStoreMessages","bindExternalStoreMessage","ExportedMessageRepositoryItem","ExportedMessageRepository","LocalRuntimeOptionsBase","ExternalStoreAdapter","ExternalStoreMessageConverter","ExternalStoreThreadListAdapter","ExternalStoreThreadData","ExternalStoreBranchChange","ExternalStoreSharedOptions","pickExternalStoreSharedOptions","ExternalThreadQueueAdapter","QueuePlacement","ExternalThreadBranchAdapter","createMessageQueue","MessageQueueDriver","MessageQueueController","RemoteThreadListAdapter","RuntimeAdapters","RemoteThreadListOptions","RemoteThreadListProviderComponent","RemoteThreadInitializeResponse","RemoteThreadMetadata","RemoteThreadListResponse","RemoteThreadListPageOptions","InMemoryThreadListAdapter","createRequestHeaders"],"sources":["../src/index.ts"],"sourcesContent":["// @assistant-ui/core - Framework-agnostic core runtime (public API)\n\n/// <reference path=\"./store/scope-registration.ts\" />\n\nimport { checkDuplicateCore } from \"./internal/duplicate-detection\";\n\nif (process.env.NODE_ENV !== \"production\") {\n checkDuplicateCore();\n}\n\nexport type {\n // Message parts\n TextMessagePart,\n ReasoningMessagePart,\n PartProviderMetadata,\n SourceProviderMetadata,\n SourceMessagePart,\n ImageMessagePart,\n FileMessagePart,\n DataMessagePart,\n GenerativeUIMessagePart,\n GenerativeUINode,\n GenerativeUISpec,\n Unstable_AudioMessagePart,\n ToolApprovalDisplay,\n ToolApprovalOption,\n ToolApprovalOptionKind,\n ToolApprovalResponse,\n ToolCallMessagePart,\n ToolCallTiming,\n ToolCallMessagePartMcpMetadata,\n McpAppMetadata,\n ToolModelContentPart,\n ThreadUserMessagePart,\n ThreadAssistantMessagePart,\n // Message status\n MessagePartStatus,\n MessagePartStreamStatus,\n ToolCallMessagePartStatus,\n MessageStatus,\n // Thread messages\n MessageTiming,\n ThreadStep,\n ThreadSystemMessage,\n ThreadUserMessage,\n ThreadAssistantMessage,\n ThreadMessage,\n MessageRole,\n // Config\n RunConfig,\n AppendMessage,\n} from \"./types/message\";\n\nexport {\n MCP_APP_URI_SCHEME,\n isMcpAppUri,\n toolApprovalAcceptsText,\n} from \"./types/message\";\n\nexport type {\n Attachment,\n PendingAttachment,\n PendingAttachmentStatus,\n CompleteAttachment,\n CompleteAttachmentStatus,\n AttachmentStatus,\n CreateAttachment,\n} from \"./types/attachment\";\n\nexport type { Unsubscribe } from \"./types/unsubscribe\";\n\nexport type {\n Assistant,\n UserCommands,\n UserExternalState,\n} from \"./types/augmentations\";\n\nexport type { QuoteInfo } from \"./types/quote\";\n\nexport type {\n Unstable_DirectiveSegment,\n Unstable_DirectiveFormatter,\n} from \"./types/directive\";\n\nexport type {\n Unstable_TriggerItem,\n Unstable_TriggerCategory,\n} from \"./types/trigger\";\n\nexport type { Unstable_TriggerAdapter } from \"./adapters/trigger\";\n\nexport type {\n // Language model settings\n LanguageModelV1CallSettings,\n LanguageModelConfig,\n // Model context\n ModelContext,\n ModelContextProvider,\n // Tool & instruction config\n AssistantToolProps,\n AssistantInstructionsConfig,\n AssistantContextConfig,\n} from \"./model-context/types\";\nexport { mergeModelContexts } from \"./model-context/types\";\n\nexport { tool } from \"./model-context/tool\";\n\nexport {\n unstable_getInteractableSnapshots,\n unstable_formatInteractableSnapshot,\n unstable_getInteractableVersions,\n type Unstable_InteractableSnapshotEntry,\n type Unstable_InteractableVersion,\n} from \"./model-context/interactable-composer-metadata\";\n\nexport type { ToolExecutionStatus } from \"./runtimes/tool-invocations/ToolInvocationTracker\";\n\nexport { ModelContextRegistry } from \"./model-context/registry\";\nexport type {\n ModelContextRegistryToolHandle,\n ModelContextRegistryInstructionHandle,\n ModelContextRegistryProviderHandle,\n} from \"./model-context/registry-handles\";\n\nexport { AssistantFrameHost } from \"./model-context/frame/host\";\nexport { AssistantFrameProvider } from \"./model-context/frame/provider\";\nexport type {\n SerializedTool,\n SerializedModelContext,\n FrameMessageType,\n FrameMessage,\n} from \"./model-context/frame/types\";\nexport { FRAME_MESSAGE_CHANNEL } from \"./model-context/frame/types\";\n\n// Attachment adapters\nexport type { AttachmentAdapter } from \"./adapters/attachment\";\nexport {\n SimpleImageAttachmentAdapter,\n SimpleTextAttachmentAdapter,\n CompositeAttachmentAdapter,\n} from \"./adapters/attachment\";\n\n// Speech adapters\nexport type {\n SpeechSynthesisAdapter,\n DictationAdapter,\n} from \"./adapters/speech\";\nexport {\n WebSpeechSynthesisAdapter,\n WebSpeechDictationAdapter,\n} from \"./adapters/speech\";\n\n// Voice adapter\nexport type { RealtimeVoiceAdapter } from \"./adapters/voice\";\nexport { createVoiceSession } from \"./adapters/voice\";\nexport type {\n VoiceSessionControls,\n VoiceSessionHelpers,\n} from \"./adapters/voice\";\n\n// Feedback adapter\nexport type { FeedbackAdapter } from \"./adapters/feedback\";\n\n// Suggestion adapter\nexport type {\n SuggestionAdapter,\n SuggestionAdapterGenerateOptions,\n CreateSuggestionAdapterOptions,\n} from \"./adapters/suggestion\";\nexport { createSuggestionAdapter } from \"./adapters/suggestion\";\n\n// Directive formatter\nexport { unstable_defaultDirectiveFormatter } from \"./adapters/directive-formatter\";\n\n// Thread history adapters\nexport type {\n ThreadHistoryAdapter,\n GenericThreadHistoryAdapter,\n MessageFormatAdapter,\n MessageFormatItem,\n MessageFormatRepository,\n MessageStorageEntry,\n} from \"./adapters/thread-history\";\n\n// Path Types\nexport type {\n ThreadListItemRuntimePath,\n ThreadRuntimePath,\n MessageRuntimePath,\n MessagePartRuntimePath,\n AttachmentRuntimePath,\n ComposerRuntimePath,\n} from \"./runtime/api/paths\";\n\n// Runtime Core Interface Types\nexport type {\n AttachmentAddErrorEvent,\n AttachmentAddErrorReason,\n ComposerRuntimeCore,\n ComposerRuntimeEventCallback,\n ComposerRuntimeEventPayload,\n ComposerRuntimeEventType,\n DictationState,\n EditComposerRuntimeCore,\n SendOptions,\n ThreadComposerRuntimeCore,\n} from \"./runtime/interfaces/composer-runtime-core\";\n\nexport type {\n ErrorSeverity,\n ErrorDisplay,\n AssistantErrorCode,\n AssistantError,\n} from \"./types/error\";\nexport { toAssistantError, isAssistantError } from \"./types/error\";\nexport { MessageNotSentError, isMessageNotSentError } from \"./types/error\";\n\nexport type {\n RuntimeCapabilities,\n AddToolResultOptions,\n ResumeToolCallOptions,\n RespondToToolApprovalOptions,\n SubmitFeedbackOptions,\n ThreadSuggestion,\n SpeechState,\n VoiceSessionState,\n SubmittedFeedback,\n ThreadRuntimeEventCallback,\n ThreadRuntimeEventPayload,\n ThreadRuntimeEventType,\n StartRunConfig,\n ResumeRunConfig,\n ThreadRuntimeCore,\n} from \"./runtime/interfaces/thread-runtime-core\";\n\nexport type {\n ThreadListItemStatus,\n ThreadListItemCoreState,\n ThreadListRuntimeCore,\n} from \"./runtime/interfaces/thread-list-runtime-core\";\n\nexport type { AssistantRuntimeCore } from \"./runtime/interfaces/assistant-runtime-core\";\n\n// Public Runtime Types\nexport type { AssistantRuntime } from \"./runtime/api/assistant-runtime\";\n\nexport type {\n CreateStartRunConfig,\n CreateResumeRunConfig,\n CreateAppendMessage,\n ThreadState,\n ThreadRuntime,\n} from \"./runtime/api/thread-runtime\";\n\nexport type {\n ThreadListState,\n ThreadListRuntime,\n} from \"./runtime/api/thread-list-runtime\";\n\nexport type {\n ThreadListItemEventCallback,\n ThreadListItemEventPayload,\n ThreadListItemEventType,\n ThreadListItemRuntime,\n} from \"./runtime/api/thread-list-item-runtime\";\n\nexport type { ThreadListItemState } from \"./runtime/api/bindings\";\n\nexport type {\n MessageState,\n MessageRuntime,\n} from \"./runtime/api/message-runtime\";\nexport type {\n MessagePartState,\n MessagePartRuntime,\n} from \"./runtime/api/message-part-runtime\";\n\nexport type {\n ThreadComposerState,\n EditComposerState,\n ComposerState,\n ComposerRuntime,\n ThreadComposerRuntime,\n EditComposerRuntime,\n} from \"./runtime/api/composer-runtime\";\n\nexport type {\n AttachmentState,\n AttachmentRuntime,\n} from \"./runtime/api/attachment-runtime\";\n\n// ChatModel Types\nexport type {\n ChatModelRunUpdate,\n ChatModelRunResult,\n CoreChatModelRunResult,\n ChatModelRunOptions,\n ChatModelAdapter,\n} from \"./runtime/utils/chat-model-adapter\";\n\n// ThreadMessageLike\nexport type { ThreadMessageLike } from \"./runtime/utils/thread-message-like\";\nexport { fromThreadMessageLike } from \"./runtime/utils/thread-message-like\";\n\n// Streaming timing (client-side)\nexport type {\n StreamingTimingAccessors,\n StreamingTimingOptions,\n StreamingTimingState,\n} from \"./runtime/utils/streaming-timing\";\nexport { stepStreamingTiming } from \"./runtime/utils/streaming-timing\";\n\n// ID generation\nexport { generateId } from \"./utils/id\";\n\n// External Store Message Utilities\nexport {\n getExternalStoreMessages,\n bindExternalStoreMessage,\n} from \"./runtime/utils/external-store-message\";\n\n// ExportedMessageRepository\nexport type { ExportedMessageRepositoryItem } from \"./runtime/utils/message-repository\";\nexport { ExportedMessageRepository } from \"./runtime/utils/message-repository\";\n\n// Local Runtime Options\nexport type { LocalRuntimeOptionsBase } from \"./runtimes/local/local-runtime-options\";\n\n// External Store Adapter Types (user-facing)\nexport type {\n ExternalStoreAdapter,\n ExternalStoreMessageConverter,\n ExternalStoreThreadListAdapter,\n ExternalStoreThreadData,\n ExternalStoreBranchChange,\n} from \"./runtimes/external-store/external-store-adapter\";\nexport type { ExternalStoreSharedOptions } from \"./runtimes/external-store/external-store-shared-options\";\nexport { pickExternalStoreSharedOptions } from \"./runtimes/external-store/external-store-shared-options\";\n\n// Message queue\nexport type {\n ExternalThreadQueueAdapter,\n QueuePlacement,\n} from \"./runtime/queue/external-thread-queue-adapter\";\nexport type { ExternalThreadBranchAdapter } from \"./runtime/branch/external-thread-branch-adapter\";\nexport {\n createMessageQueue,\n type MessageQueueDriver,\n type MessageQueueController,\n} from \"./runtime/queue/message-queue\";\n\n// Remote Thread List (user-facing)\nexport type {\n RemoteThreadListAdapter,\n RuntimeAdapters,\n RemoteThreadListOptions,\n RemoteThreadListProviderComponent,\n RemoteThreadInitializeResponse,\n RemoteThreadMetadata,\n RemoteThreadListResponse,\n RemoteThreadListPageOptions,\n} from \"./runtimes/remote-thread-list/types\";\n\nexport { InMemoryThreadListAdapter } from \"./runtimes/remote-thread-list/adapter/in-memory\";\n\n// Assistant Transport Utilities\nexport { createRequestHeaders } from \"./runtimes/assistant-transport/utils\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAMA,IAAIC,QAAQC,IAAIC,aAAa,cAC3BH,mBAAmB"}
@@ -18,6 +18,7 @@ import { invokeUserCallback } from "./utils/invoke-user-callback.js";
18
18
  import { detectImageMediaType } from "./utils/image-media-type.js";
19
19
  import { resolveFileMediaType, resolveImageMediaType, toMediaWireUrl } from "./utils/wire-media.js";
20
20
  import { createToolCallCancellationStub, scanPendingToolCalls } from "./runtime/utils/pending-tool-calls.js";
21
+ import { ToolCallTreeEntry, iterateToolCallParts, mapToolCallPartsDeep, walkToolCallTree } from "./runtime/utils/tool-call-tree.js";
21
22
  import { AbortableThreadLoadPurpose, createAbortableThreadLoad } from "./runtime/utils/abortable-thread-load.js";
22
23
  import { createCloudThreadListAdapterCreateFallback } from "./react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.js";
23
24
  import { ComposerRuntimeCoreBinding, EditComposerRuntimeCoreBinding, MessageStateBinding, ThreadComposerRuntimeCoreBinding } from "./runtime/api/bindings.js";
@@ -53,4 +54,4 @@ import { RemoteThreadData, RemoteThreadState, THREAD_MAPPING_ID, createThreadMap
53
54
  import "./runtimes/internal.js";
54
55
  import { ThreadListItemRuntimeBinding, ThreadRuntimeCoreBinding, ThreadRuntimeImpl, getThreadState } from "./runtime/api/thread-runtime.js";
55
56
  import { AssistantRuntimeImpl } from "./runtime/api/assistant-runtime.js";
56
- export { type AbortableThreadLoadPurpose, AssistantRuntimeImpl, AttachmentRuntimeImpl, BaseAssistantRuntimeCore, BaseComposerRuntimeCore, BaseSubject, BaseSubscribable, BaseThreadRuntimeCore, type ComposerRuntimeCoreBinding, ComposerRuntimeImpl, CompositeContextProvider, type ConverterCallback, DefaultEditComposerRuntimeCore, DefaultThreadComposerRuntimeCore, EMPTY_THREAD_CORE, EditComposerAttachmentRuntimeImpl, type EditComposerRuntimeCoreBinding, EditComposerRuntimeImpl, type EventSubscribable, EventSubscriptionSubject, ExportedMessageRepository, type ExportedMessageRepositoryItem, ExternalStoreRuntimeCore, type ExternalStoreThreadFactory, ExternalStoreThreadListRuntimeCore, ExternalStoreThreadRuntimeCore, type FilePartSource, LazyMemoizeSubject, LocalRuntimeCore, type LocalRuntimeOptionsBase, type LocalThreadFactory, LocalThreadListRuntimeCore, LocalThreadRuntimeCore, MessageAttachmentRuntimeImpl, MessagePartRuntimeImpl, MessageRepository, type MessageRepositorySession, type MessageRepositorySessionOptions, MessageRuntimeImpl, type MessageStateBinding, type NestedSubscribable, NestedSubscriptionSubject, OptimisticState, ReadonlyThreadRuntimeCore, type RemoteThreadData, type RemoteThreadInitializeResponse, type RemoteThreadListOptions, type RemoteThreadState, SKIP_UPDATE, type SKIP_UPDATE as SKIP_UPDATE_TYPE, ShallowMemoizeSubject, type Subscribable, type SubscribableWithState, type THREAD_MAPPING_ID, ThreadComposerAttachmentRuntimeImpl, type ThreadComposerRuntimeCoreBinding, ThreadComposerRuntimeImpl, type ThreadListItemRuntimeBinding, ThreadListItemRuntimeImpl, type ThreadListItemStateBinding, type ThreadListRuntimeCoreBinding, ThreadListRuntimeImpl, ThreadMessageConverter, type ThreadRuntimeCoreBinding, ThreadRuntimeImpl, ToolInvocationTracker, consumeSuggestionResult, createAbortableThreadLoad, createCloudThreadListAdapterCreateFallback, createMessageRepositorySession, createThreadMappingId, createToolCallCancellationStub, dataUrlMediaType, detectImageMediaType, fileMatchesAccept, fromThreadMessageLike, generateErrorMessageId, generateId, getAutoStatus, getFileDataURL, getThreadData, getThreadMessageText, getThreadState, hasUpcomingMessage, httpUrlPattern, invokeUserCallback, isAutoStatus, isCreateAttachment, isErrorMessageId, isJSONValue, isParsableUrl, isRecord, notifyEventListeners, parseDataUrl, resolveFileMediaType, resolveFilePartSource, resolveImageMediaType, resolveToolApprovalResponse, scanPendingToolCalls, shouldContinue, stableStringifyToolArgs, symbolInnerMessage, toMediaWireUrl, toMessagePartStatus, trackToolArgsKeyOrder, updateStatusReducer };
57
+ export { type AbortableThreadLoadPurpose, AssistantRuntimeImpl, AttachmentRuntimeImpl, BaseAssistantRuntimeCore, BaseComposerRuntimeCore, BaseSubject, BaseSubscribable, BaseThreadRuntimeCore, type ComposerRuntimeCoreBinding, ComposerRuntimeImpl, CompositeContextProvider, type ConverterCallback, DefaultEditComposerRuntimeCore, DefaultThreadComposerRuntimeCore, EMPTY_THREAD_CORE, EditComposerAttachmentRuntimeImpl, type EditComposerRuntimeCoreBinding, EditComposerRuntimeImpl, type EventSubscribable, EventSubscriptionSubject, ExportedMessageRepository, type ExportedMessageRepositoryItem, ExternalStoreRuntimeCore, type ExternalStoreThreadFactory, ExternalStoreThreadListRuntimeCore, ExternalStoreThreadRuntimeCore, type FilePartSource, LazyMemoizeSubject, LocalRuntimeCore, type LocalRuntimeOptionsBase, type LocalThreadFactory, LocalThreadListRuntimeCore, LocalThreadRuntimeCore, MessageAttachmentRuntimeImpl, MessagePartRuntimeImpl, MessageRepository, type MessageRepositorySession, type MessageRepositorySessionOptions, MessageRuntimeImpl, type MessageStateBinding, type NestedSubscribable, NestedSubscriptionSubject, OptimisticState, ReadonlyThreadRuntimeCore, type RemoteThreadData, type RemoteThreadInitializeResponse, type RemoteThreadListOptions, type RemoteThreadState, SKIP_UPDATE, type SKIP_UPDATE as SKIP_UPDATE_TYPE, ShallowMemoizeSubject, type Subscribable, type SubscribableWithState, type THREAD_MAPPING_ID, ThreadComposerAttachmentRuntimeImpl, type ThreadComposerRuntimeCoreBinding, ThreadComposerRuntimeImpl, type ThreadListItemRuntimeBinding, ThreadListItemRuntimeImpl, type ThreadListItemStateBinding, type ThreadListRuntimeCoreBinding, ThreadListRuntimeImpl, ThreadMessageConverter, type ThreadRuntimeCoreBinding, ThreadRuntimeImpl, type ToolCallTreeEntry, ToolInvocationTracker, consumeSuggestionResult, createAbortableThreadLoad, createCloudThreadListAdapterCreateFallback, createMessageRepositorySession, createThreadMappingId, createToolCallCancellationStub, dataUrlMediaType, detectImageMediaType, fileMatchesAccept, fromThreadMessageLike, generateErrorMessageId, generateId, getAutoStatus, getFileDataURL, getThreadData, getThreadMessageText, getThreadState, hasUpcomingMessage, httpUrlPattern, invokeUserCallback, isAutoStatus, isCreateAttachment, isErrorMessageId, isJSONValue, isParsableUrl, isRecord, iterateToolCallParts, mapToolCallPartsDeep, notifyEventListeners, parseDataUrl, resolveFileMediaType, resolveFilePartSource, resolveImageMediaType, resolveToolApprovalResponse, scanPendingToolCalls, shouldContinue, stableStringifyToolArgs, symbolInnerMessage, toMediaWireUrl, toMessagePartStatus, trackToolArgsKeyOrder, updateStatusReducer, walkToolCallTree };
package/dist/internal.js CHANGED
@@ -19,6 +19,7 @@ import { invokeUserCallback } from "./utils/invoke-user-callback.js";
19
19
  import { detectImageMediaType } from "./utils/image-media-type.js";
20
20
  import { resolveFileMediaType, resolveImageMediaType, toMediaWireUrl } from "./utils/wire-media.js";
21
21
  import { createToolCallCancellationStub, scanPendingToolCalls } from "./runtime/utils/pending-tool-calls.js";
22
+ import { iterateToolCallParts, mapToolCallPartsDeep, walkToolCallTree } from "./runtime/utils/tool-call-tree.js";
22
23
  import { createAbortableThreadLoad } from "./runtime/utils/abortable-thread-load.js";
23
24
  import { createCloudThreadListAdapterCreateFallback } from "./react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.js";
24
25
  import { BaseAssistantRuntimeCore } from "./runtime/base/base-assistant-runtime-core.js";
@@ -48,4 +49,4 @@ import { ReadonlyThreadRuntimeCore } from "./runtimes/readonly/ReadonlyThreadRun
48
49
  import { OptimisticState } from "./runtimes/remote-thread-list/optimistic-state.js";
49
50
  import { EMPTY_THREAD_CORE } from "./runtimes/remote-thread-list/empty-thread-core.js";
50
51
  import { createThreadMappingId, getThreadData, updateStatusReducer } from "./runtimes/remote-thread-list/remote-thread-state.js";
51
- export { AssistantRuntimeImpl, AttachmentRuntimeImpl, BaseAssistantRuntimeCore, BaseComposerRuntimeCore, BaseSubject, BaseSubscribable, BaseThreadRuntimeCore, ComposerRuntimeImpl, CompositeContextProvider, DefaultEditComposerRuntimeCore, DefaultThreadComposerRuntimeCore, EMPTY_THREAD_CORE, EditComposerAttachmentRuntimeImpl, EditComposerRuntimeImpl, EventSubscriptionSubject, ExportedMessageRepository, ExternalStoreRuntimeCore, ExternalStoreThreadListRuntimeCore, ExternalStoreThreadRuntimeCore, LazyMemoizeSubject, LocalRuntimeCore, LocalThreadListRuntimeCore, LocalThreadRuntimeCore, MessageAttachmentRuntimeImpl, MessagePartRuntimeImpl, MessageRepository, MessageRuntimeImpl, NestedSubscriptionSubject, OptimisticState, ReadonlyThreadRuntimeCore, SKIP_UPDATE, ShallowMemoizeSubject, ThreadComposerAttachmentRuntimeImpl, ThreadComposerRuntimeImpl, ThreadListItemRuntimeImpl, ThreadListRuntimeImpl, ThreadMessageConverter, ThreadRuntimeImpl, ToolInvocationTracker, consumeSuggestionResult, createAbortableThreadLoad, createCloudThreadListAdapterCreateFallback, createMessageRepositorySession, createThreadMappingId, createToolCallCancellationStub, dataUrlMediaType, detectImageMediaType, fileMatchesAccept, fromThreadMessageLike, generateErrorMessageId, generateId, getAutoStatus, getFileDataURL, getThreadData, getThreadMessageText, getThreadState, hasUpcomingMessage, httpUrlPattern, invokeUserCallback, isAutoStatus, isCreateAttachment, isErrorMessageId, isJSONValue, isParsableUrl, isRecord, notifyEventListeners, parseDataUrl, resolveFileMediaType, resolveFilePartSource, resolveImageMediaType, resolveToolApprovalResponse, scanPendingToolCalls, shouldContinue, stableStringifyToolArgs, symbolInnerMessage, toMediaWireUrl, toMessagePartStatus, trackToolArgsKeyOrder, updateStatusReducer };
52
+ export { AssistantRuntimeImpl, AttachmentRuntimeImpl, BaseAssistantRuntimeCore, BaseComposerRuntimeCore, BaseSubject, BaseSubscribable, BaseThreadRuntimeCore, ComposerRuntimeImpl, CompositeContextProvider, DefaultEditComposerRuntimeCore, DefaultThreadComposerRuntimeCore, EMPTY_THREAD_CORE, EditComposerAttachmentRuntimeImpl, EditComposerRuntimeImpl, EventSubscriptionSubject, ExportedMessageRepository, ExternalStoreRuntimeCore, ExternalStoreThreadListRuntimeCore, ExternalStoreThreadRuntimeCore, LazyMemoizeSubject, LocalRuntimeCore, LocalThreadListRuntimeCore, LocalThreadRuntimeCore, MessageAttachmentRuntimeImpl, MessagePartRuntimeImpl, MessageRepository, MessageRuntimeImpl, NestedSubscriptionSubject, OptimisticState, ReadonlyThreadRuntimeCore, SKIP_UPDATE, ShallowMemoizeSubject, ThreadComposerAttachmentRuntimeImpl, ThreadComposerRuntimeImpl, ThreadListItemRuntimeImpl, ThreadListRuntimeImpl, ThreadMessageConverter, ThreadRuntimeImpl, ToolInvocationTracker, consumeSuggestionResult, createAbortableThreadLoad, createCloudThreadListAdapterCreateFallback, createMessageRepositorySession, createThreadMappingId, createToolCallCancellationStub, dataUrlMediaType, detectImageMediaType, fileMatchesAccept, fromThreadMessageLike, generateErrorMessageId, generateId, getAutoStatus, getFileDataURL, getThreadData, getThreadMessageText, getThreadState, hasUpcomingMessage, httpUrlPattern, invokeUserCallback, isAutoStatus, isCreateAttachment, isErrorMessageId, isJSONValue, isParsableUrl, isRecord, iterateToolCallParts, mapToolCallPartsDeep, notifyEventListeners, parseDataUrl, resolveFileMediaType, resolveFilePartSource, resolveImageMediaType, resolveToolApprovalResponse, scanPendingToolCalls, shouldContinue, stableStringifyToolArgs, symbolInnerMessage, toMediaWireUrl, toMessagePartStatus, trackToolArgsKeyOrder, updateStatusReducer, walkToolCallTree };
@@ -15,7 +15,10 @@ declare class AssistantFrameProvider {
15
15
  private handleMessage;
16
16
  private handleToolCall;
17
17
  private cancelToolCall;
18
+ private cancelToolCallsForProvider;
18
19
  private sendMessage;
20
+ private getProviders;
21
+ private getTool;
19
22
  private getModelContext;
20
23
  private broadcastUpdate;
21
24
  private removeProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","names":[],"sources":["../../../src/model-context/frame/provider.ts"],"mappings":";;;cAiCa;iBACI;UAEP;UACA;UACA;UAIA;UACA;UACA;UAED;iBAQQ;UAWP;UAsBA;UA0BM;UA2CN;UAOA;UAOA;UAkBA;UAcA;SAsBD,wBACL,UAAU,sBACV,wBACC;SA2DI"}
1
+ {"version":3,"file":"provider.d.ts","names":[],"sources":["../../../src/model-context/frame/provider.ts"],"mappings":";;;cAiCa;iBACI;UAEP;UACA;UACA;UAQA;UACA;UACA;UAED;iBAQQ;UAWP;UAsBA;UA0BM;UAgDN;UAOA;UA+BA;UAOA;UAIA;UAaA;UAkBA;UAcA;SAiCD,wBACL,UAAU,sBACV,wBACC;SA+EI"}
@@ -63,12 +63,14 @@ var AssistantFrameProvider = class AssistantFrameProvider {
63
63
  }
64
64
  }
65
65
  async handleToolCall(message, event) {
66
- const tool = this.getModelContext().tools?.[message.toolName];
66
+ const resolvedTool = this.getTool(message.toolName);
67
+ const tool = resolvedTool?.tool;
67
68
  const abortController = new AbortController();
68
69
  this._activeToolCalls.get(message.id)?.abortController.abort();
69
70
  const activeCall = {
70
71
  abortController,
71
- event
72
+ event,
73
+ provider: resolvedTool?.provider
72
74
  };
73
75
  this._activeToolCalls.set(message.id, activeCall);
74
76
  let result;
@@ -99,14 +101,51 @@ var AssistantFrameProvider = class AssistantFrameProvider {
99
101
  this._activeToolCalls.delete(id);
100
102
  activeCall.abortController.abort();
101
103
  }
104
+ cancelToolCallsForProvider(provider) {
105
+ const matchingCalls = Array.from(this._activeToolCalls).filter(([, activeCall]) => activeCall.provider === provider);
106
+ for (const [id, activeCall] of matchingCalls) {
107
+ this._activeToolCalls.delete(id);
108
+ activeCall.abortController.abort();
109
+ }
110
+ let sendFailed = false;
111
+ let sendError;
112
+ for (const [id, activeCall] of matchingCalls) try {
113
+ this.sendMessage(activeCall.event, {
114
+ type: "tool-result",
115
+ id,
116
+ error: "AssistantFrame tool provider has been removed"
117
+ });
118
+ } catch (error) {
119
+ if (sendFailed) console.error(error);
120
+ else {
121
+ sendFailed = true;
122
+ sendError = error;
123
+ }
124
+ }
125
+ if (sendFailed) throw sendError;
126
+ }
102
127
  sendMessage(event, message) {
103
128
  event.source?.postMessage({
104
129
  channel: FRAME_MESSAGE_CHANNEL,
105
130
  message
106
131
  }, { targetOrigin: event.origin });
107
132
  }
133
+ getProviders() {
134
+ return Array.from(new Set(this._providers.values()));
135
+ }
136
+ getTool(toolName) {
137
+ let resolved;
138
+ for (const provider of this.getProviders()) {
139
+ const tool = provider.getModelContext().tools?.[toolName];
140
+ if (tool) resolved = {
141
+ provider,
142
+ tool
143
+ };
144
+ }
145
+ return resolved;
146
+ }
108
147
  getModelContext() {
109
- return Array.from(new Set(this._providers.values())).map((p) => p.getModelContext()).reduce((merged, context) => ({
148
+ return this.getProviders().map((provider) => provider.getModelContext()).reduce((merged, context) => ({
110
149
  system: context.system ? merged.system ? `${merged.system}\n\n${context.system}` : context.system : merged.system,
111
150
  tools: {
112
151
  ...merged.tools || {},
@@ -127,6 +166,7 @@ var AssistantFrameProvider = class AssistantFrameProvider {
127
166
  }
128
167
  }
129
168
  removeProvider(id, origin) {
169
+ const provider = this._providers.get(id);
130
170
  this._providers.delete(id);
131
171
  const unsubscribe = this._providerUnsubscribes.get(id);
132
172
  this._providerUnsubscribes.delete(id);
@@ -137,7 +177,10 @@ var AssistantFrameProvider = class AssistantFrameProvider {
137
177
  this._strictRegistrations -= 1;
138
178
  if (this._strictRegistrations === 0) this._targetOrigin = this._wildcardRegistrations > 0 ? "*" : getDefaultTargetOrigin();
139
179
  }
140
- return unsubscribe;
180
+ return {
181
+ unsubscribe,
182
+ removedProvider: provider && !this.getProviders().includes(provider) ? provider : void 0
183
+ };
141
184
  }
142
185
  static addModelContextProvider(provider, targetOrigin) {
143
186
  const origin = targetOrigin ?? getDefaultTargetOrigin();
@@ -151,7 +194,12 @@ var AssistantFrameProvider = class AssistantFrameProvider {
151
194
  if (unsubscribe) instance._providerUnsubscribes.set(id, unsubscribe);
152
195
  instance.broadcastUpdate();
153
196
  } catch (error) {
154
- const unsubscribe = instance.removeProvider(id, origin);
197
+ const { unsubscribe, removedProvider } = instance.removeProvider(id, origin);
198
+ try {
199
+ if (removedProvider) instance.cancelToolCallsForProvider(removedProvider);
200
+ } catch (cancelError) {
201
+ console.error(cancelError);
202
+ }
155
203
  try {
156
204
  unsubscribe?.();
157
205
  } catch (unsubscribeError) {
@@ -168,22 +216,24 @@ var AssistantFrameProvider = class AssistantFrameProvider {
168
216
  return () => {
169
217
  if (released) return;
170
218
  released = true;
171
- const unsubscribe = instance.removeProvider(id, origin);
172
- let unsubscribeFailed = false;
173
- let unsubscribeError;
174
- try {
175
- unsubscribe?.();
176
- } catch (error) {
177
- unsubscribeFailed = true;
178
- unsubscribeError = error;
179
- }
180
- try {
181
- instance.broadcastUpdate();
182
- } catch (error) {
183
- if (!unsubscribeFailed) throw error;
184
- console.error(error);
185
- }
186
- if (unsubscribeFailed) throw unsubscribeError;
219
+ const { unsubscribe, removedProvider } = instance.removeProvider(id, origin);
220
+ let cleanupFailed = false;
221
+ let cleanupError;
222
+ const runCleanup = (cleanup) => {
223
+ try {
224
+ cleanup();
225
+ } catch (error) {
226
+ if (cleanupFailed) console.error(error);
227
+ else {
228
+ cleanupFailed = true;
229
+ cleanupError = error;
230
+ }
231
+ }
232
+ };
233
+ if (removedProvider) runCleanup(() => instance.cancelToolCallsForProvider(removedProvider));
234
+ if (unsubscribe) runCleanup(unsubscribe);
235
+ runCleanup(() => instance.broadcastUpdate());
236
+ if (cleanupFailed) throw cleanupError;
187
237
  };
188
238
  }
189
239
  static dispose() {
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","names":["ModelContextProvider","ModelContext","Unsubscribe","Tool","toJSONSchema","FrameMessage","FRAME_MESSAGE_CHANNEL","SerializedModelContext","SerializedTool","serializeTool","tool","description","parameters","undefined","disabled","type","serializeModelContext","context","system","tools","Object","fromEntries","entries","map","name","getDefaultTargetOrigin","window","location","origin","AssistantFrameProvider","_instance","_providers","Map","_providerUnsubscribes","_activeToolCalls","abortController","AbortController","event","MessageEvent","_targetOrigin","_strictRegistrations","_wildcardRegistrations","constructor","targetOrigin","handleMessage","bind","addEventListener","setTimeout","broadcastUpdate","getInstance","reconcileTargetOrigin","size","Error","source","parent","data","channel","message","sendMessage","getModelContext","handleToolCall","cancelToolCall","id","Extract","toolName","get","abort","activeCall","set","result","error","execute","args","toolCallId","abortSignal","signal","human","e","String","delete","postMessage","contexts","Array","from","Set","values","p","reduce","merged","updateMessage","removeProvider","unsubscribe","addModelContextProvider","provider","instance","Symbol","subscribe","unsubscribeError","console","broadcastError","released","unsubscribeFailed","dispose","removeEventListener","cleanupFailed","cleanupError","runCleanup","cleanup","forEach","clear"],"sources":["../../../src/model-context/frame/provider.ts"],"sourcesContent":["import type { ModelContextProvider, ModelContext } from \"../types\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport { type Tool, toJSONSchema } from \"assistant-stream\";\nimport {\n type FrameMessage,\n FRAME_MESSAGE_CHANNEL,\n type SerializedModelContext,\n type SerializedTool,\n} from \"./types\";\n\nconst serializeTool = (tool: Tool<any, any>): SerializedTool => ({\n ...(tool.description && { description: tool.description }),\n parameters: tool.parameters ? toJSONSchema(tool.parameters) : undefined,\n ...(tool.disabled !== undefined && { disabled: tool.disabled }),\n ...(tool.type && { type: tool.type }),\n});\n\nconst serializeModelContext = (\n context: ModelContext,\n): SerializedModelContext => ({\n ...(context.system !== undefined && { system: context.system }),\n ...(context.tools && {\n tools: Object.fromEntries(\n Object.entries(context.tools).map(([name, tool]) => [\n name,\n serializeTool(tool),\n ]),\n ),\n }),\n});\n\nconst getDefaultTargetOrigin = () => window.location.origin;\n\nexport class AssistantFrameProvider {\n private static _instance: AssistantFrameProvider | null = null;\n\n private _providers = new Map<symbol, ModelContextProvider>();\n private _providerUnsubscribes = new Map<symbol, Unsubscribe | undefined>();\n private _activeToolCalls = new Map<\n string,\n { abortController: AbortController; event: MessageEvent }\n >();\n private _targetOrigin: string;\n private _strictRegistrations = 0;\n private _wildcardRegistrations = 0;\n\n private constructor(targetOrigin: string = getDefaultTargetOrigin()) {\n this._targetOrigin = targetOrigin;\n this.handleMessage = this.handleMessage.bind(this);\n window.addEventListener(\"message\", this.handleMessage);\n\n setTimeout(() => this.broadcastUpdate(), 0);\n }\n\n private static getInstance(targetOrigin?: string): AssistantFrameProvider {\n if (!AssistantFrameProvider._instance) {\n AssistantFrameProvider._instance = new AssistantFrameProvider(\n targetOrigin,\n );\n } else {\n AssistantFrameProvider._instance.reconcileTargetOrigin(targetOrigin);\n }\n return AssistantFrameProvider._instance;\n }\n\n private reconcileTargetOrigin(\n targetOrigin: string = getDefaultTargetOrigin(),\n ) {\n if (targetOrigin === this._targetOrigin) return;\n\n if (this._providers.size === 0) {\n this._targetOrigin = targetOrigin;\n return;\n }\n\n if (targetOrigin === \"*\") return;\n\n if (this._targetOrigin === \"*\") {\n this._targetOrigin = targetOrigin;\n return;\n }\n\n throw new Error(\n `AssistantFrameProvider cannot register conflicting target origins: \"${this._targetOrigin}\" and \"${targetOrigin}\"`,\n );\n }\n\n private handleMessage(event: MessageEvent) {\n if (this._targetOrigin !== \"*\" && event.origin !== this._targetOrigin)\n return;\n if (event.source !== window.parent) return;\n if (event.data?.channel !== FRAME_MESSAGE_CHANNEL) return;\n\n const message = event.data.message as FrameMessage;\n\n switch (message.type) {\n case \"model-context-request\":\n this.sendMessage(event, {\n type: \"model-context-update\",\n context: serializeModelContext(this.getModelContext()),\n });\n break;\n\n case \"tool-call\":\n this.handleToolCall(message, event);\n break;\n\n case \"tool-cancel\":\n this.cancelToolCall(message.id);\n break;\n }\n }\n\n private async handleToolCall(\n message: Extract<FrameMessage, { type: \"tool-call\" }>,\n event: MessageEvent,\n ) {\n const tool = this.getModelContext().tools?.[message.toolName];\n const abortController = new AbortController();\n this._activeToolCalls.get(message.id)?.abortController.abort();\n const activeCall = { abortController, event };\n this._activeToolCalls.set(message.id, activeCall);\n\n let result: any;\n let error: string | undefined;\n\n if (!tool) {\n error = `Tool \"${message.toolName}\" not found`;\n } else {\n try {\n result = tool.execute\n ? await tool.execute(message.args, {\n toolCallId: message.id,\n abortSignal: abortController.signal,\n human: async () => {\n throw new Error(\n \"Tool human input is not supported in frame context\",\n );\n },\n })\n : undefined;\n } catch (e) {\n error = e instanceof Error ? e.message : String(e);\n }\n }\n\n if (this._activeToolCalls.get(message.id) !== activeCall) return;\n this._activeToolCalls.delete(message.id);\n\n this.sendMessage(event, {\n type: \"tool-result\",\n id: message.id,\n ...(error !== undefined ? { error } : { result }),\n });\n }\n\n private cancelToolCall(id: string) {\n const activeCall = this._activeToolCalls.get(id);\n if (!activeCall) return;\n this._activeToolCalls.delete(id);\n activeCall.abortController.abort();\n }\n\n private sendMessage(event: MessageEvent, message: FrameMessage) {\n event.source?.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message },\n { targetOrigin: event.origin },\n );\n }\n\n private getModelContext(): ModelContext {\n const contexts = Array.from(new Set(this._providers.values())).map((p) =>\n p.getModelContext(),\n );\n\n return contexts.reduce(\n (merged, context) => ({\n system: context.system\n ? merged.system\n ? `${merged.system}\\n\\n${context.system}`\n : context.system\n : merged.system,\n tools: { ...(merged.tools || {}), ...(context.tools || {}) },\n }),\n {} as ModelContext,\n );\n }\n\n private broadcastUpdate() {\n if (window.parent && window.parent !== window) {\n const updateMessage: FrameMessage = {\n type: \"model-context-update\",\n context: serializeModelContext(this.getModelContext()),\n };\n\n window.parent.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message: updateMessage },\n this._targetOrigin,\n );\n }\n }\n\n private removeProvider(id: symbol, origin: string): Unsubscribe | undefined {\n this._providers.delete(id);\n const unsubscribe = this._providerUnsubscribes.get(id);\n this._providerUnsubscribes.delete(id);\n if (origin === \"*\") {\n this._wildcardRegistrations -= 1;\n if (\n this._wildcardRegistrations === 0 &&\n this._strictRegistrations === 0\n ) {\n this._targetOrigin = getDefaultTargetOrigin();\n }\n } else {\n this._strictRegistrations -= 1;\n if (this._strictRegistrations === 0) {\n this._targetOrigin =\n this._wildcardRegistrations > 0 ? \"*\" : getDefaultTargetOrigin();\n }\n }\n return unsubscribe;\n }\n\n static addModelContextProvider(\n provider: ModelContextProvider,\n targetOrigin?: string,\n ): Unsubscribe {\n const origin = targetOrigin ?? getDefaultTargetOrigin();\n const instance = AssistantFrameProvider.getInstance(origin);\n const id = Symbol();\n instance._providers.set(id, provider);\n if (origin === \"*\") {\n instance._wildcardRegistrations += 1;\n } else {\n instance._strictRegistrations += 1;\n }\n\n try {\n const unsubscribe = provider.subscribe?.(() =>\n instance.broadcastUpdate(),\n );\n if (unsubscribe) {\n instance._providerUnsubscribes.set(id, unsubscribe);\n }\n\n instance.broadcastUpdate();\n } catch (error) {\n const unsubscribe = instance.removeProvider(id, origin);\n // Rollback failures must not replace the registration error.\n try {\n unsubscribe?.();\n } catch (unsubscribeError) {\n console.error(unsubscribeError);\n }\n try {\n instance.broadcastUpdate();\n } catch (broadcastError) {\n console.error(broadcastError);\n }\n throw error;\n }\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n const unsubscribe = instance.removeProvider(id, origin);\n let unsubscribeFailed = false;\n let unsubscribeError: unknown;\n try {\n unsubscribe?.();\n } catch (error) {\n unsubscribeFailed = true;\n unsubscribeError = error;\n }\n try {\n instance.broadcastUpdate();\n } catch (error) {\n if (!unsubscribeFailed) throw error;\n console.error(error);\n }\n if (unsubscribeFailed) throw unsubscribeError;\n };\n }\n\n static dispose() {\n if (AssistantFrameProvider._instance) {\n const instance = AssistantFrameProvider._instance;\n window.removeEventListener(\"message\", instance.handleMessage);\n\n let cleanupFailed = false;\n let cleanupError: unknown;\n const runCleanup = (cleanup: () => void) => {\n try {\n cleanup();\n } catch (error) {\n if (cleanupFailed) {\n console.error(error);\n } else {\n cleanupFailed = true;\n cleanupError = error;\n }\n }\n };\n\n instance._providerUnsubscribes.forEach((unsubscribe) => {\n if (unsubscribe) runCleanup(unsubscribe);\n });\n instance._providerUnsubscribes.clear();\n instance._providers.clear();\n instance._activeToolCalls.forEach(({ abortController, event }, id) => {\n runCleanup(() => {\n abortController.abort();\n instance.sendMessage(event, {\n type: \"tool-result\",\n id,\n error: \"AssistantFrameProvider has been disposed\",\n });\n });\n });\n instance._activeToolCalls.clear();\n\n AssistantFrameProvider._instance = null;\n if (cleanupFailed) throw cleanupError;\n }\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","names":["ModelContextProvider","ModelContext","Unsubscribe","Tool","toJSONSchema","FrameMessage","FRAME_MESSAGE_CHANNEL","SerializedModelContext","SerializedTool","serializeTool","tool","description","parameters","undefined","disabled","type","serializeModelContext","context","system","tools","Object","fromEntries","entries","map","name","getDefaultTargetOrigin","window","location","origin","AssistantFrameProvider","_instance","_providers","Map","_providerUnsubscribes","_activeToolCalls","abortController","AbortController","event","MessageEvent","provider","_targetOrigin","_strictRegistrations","_wildcardRegistrations","constructor","targetOrigin","handleMessage","bind","addEventListener","setTimeout","broadcastUpdate","getInstance","reconcileTargetOrigin","size","Error","source","parent","data","channel","message","sendMessage","getModelContext","handleToolCall","cancelToolCall","id","Extract","resolvedTool","getTool","toolName","get","abort","activeCall","set","result","error","execute","args","toolCallId","abortSignal","signal","human","e","String","delete","cancelToolCallsForProvider","matchingCalls","Array","from","filter","sendFailed","sendError","console","postMessage","getProviders","Set","values","resolved","contexts","reduce","merged","updateMessage","removeProvider","unsubscribe","removedProvider","includes","addModelContextProvider","instance","Symbol","subscribe","cancelError","unsubscribeError","broadcastError","released","cleanupFailed","cleanupError","runCleanup","cleanup","dispose","removeEventListener","forEach","clear"],"sources":["../../../src/model-context/frame/provider.ts"],"sourcesContent":["import type { ModelContextProvider, ModelContext } from \"../types\";\nimport type { Unsubscribe } from \"../../types/unsubscribe\";\nimport { type Tool, toJSONSchema } from \"assistant-stream\";\nimport {\n type FrameMessage,\n FRAME_MESSAGE_CHANNEL,\n type SerializedModelContext,\n type SerializedTool,\n} from \"./types\";\n\nconst serializeTool = (tool: Tool<any, any>): SerializedTool => ({\n ...(tool.description && { description: tool.description }),\n parameters: tool.parameters ? toJSONSchema(tool.parameters) : undefined,\n ...(tool.disabled !== undefined && { disabled: tool.disabled }),\n ...(tool.type && { type: tool.type }),\n});\n\nconst serializeModelContext = (\n context: ModelContext,\n): SerializedModelContext => ({\n ...(context.system !== undefined && { system: context.system }),\n ...(context.tools && {\n tools: Object.fromEntries(\n Object.entries(context.tools).map(([name, tool]) => [\n name,\n serializeTool(tool),\n ]),\n ),\n }),\n});\n\nconst getDefaultTargetOrigin = () => window.location.origin;\n\nexport class AssistantFrameProvider {\n private static _instance: AssistantFrameProvider | null = null;\n\n private _providers = new Map<symbol, ModelContextProvider>();\n private _providerUnsubscribes = new Map<symbol, Unsubscribe | undefined>();\n private _activeToolCalls = new Map<\n string,\n {\n abortController: AbortController;\n event: MessageEvent;\n provider: ModelContextProvider | undefined;\n }\n >();\n private _targetOrigin: string;\n private _strictRegistrations = 0;\n private _wildcardRegistrations = 0;\n\n private constructor(targetOrigin: string = getDefaultTargetOrigin()) {\n this._targetOrigin = targetOrigin;\n this.handleMessage = this.handleMessage.bind(this);\n window.addEventListener(\"message\", this.handleMessage);\n\n setTimeout(() => this.broadcastUpdate(), 0);\n }\n\n private static getInstance(targetOrigin?: string): AssistantFrameProvider {\n if (!AssistantFrameProvider._instance) {\n AssistantFrameProvider._instance = new AssistantFrameProvider(\n targetOrigin,\n );\n } else {\n AssistantFrameProvider._instance.reconcileTargetOrigin(targetOrigin);\n }\n return AssistantFrameProvider._instance;\n }\n\n private reconcileTargetOrigin(\n targetOrigin: string = getDefaultTargetOrigin(),\n ) {\n if (targetOrigin === this._targetOrigin) return;\n\n if (this._providers.size === 0) {\n this._targetOrigin = targetOrigin;\n return;\n }\n\n if (targetOrigin === \"*\") return;\n\n if (this._targetOrigin === \"*\") {\n this._targetOrigin = targetOrigin;\n return;\n }\n\n throw new Error(\n `AssistantFrameProvider cannot register conflicting target origins: \"${this._targetOrigin}\" and \"${targetOrigin}\"`,\n );\n }\n\n private handleMessage(event: MessageEvent) {\n if (this._targetOrigin !== \"*\" && event.origin !== this._targetOrigin)\n return;\n if (event.source !== window.parent) return;\n if (event.data?.channel !== FRAME_MESSAGE_CHANNEL) return;\n\n const message = event.data.message as FrameMessage;\n\n switch (message.type) {\n case \"model-context-request\":\n this.sendMessage(event, {\n type: \"model-context-update\",\n context: serializeModelContext(this.getModelContext()),\n });\n break;\n\n case \"tool-call\":\n this.handleToolCall(message, event);\n break;\n\n case \"tool-cancel\":\n this.cancelToolCall(message.id);\n break;\n }\n }\n\n private async handleToolCall(\n message: Extract<FrameMessage, { type: \"tool-call\" }>,\n event: MessageEvent,\n ) {\n const resolvedTool = this.getTool(message.toolName);\n const tool = resolvedTool?.tool;\n const abortController = new AbortController();\n this._activeToolCalls.get(message.id)?.abortController.abort();\n const activeCall = {\n abortController,\n event,\n provider: resolvedTool?.provider,\n };\n this._activeToolCalls.set(message.id, activeCall);\n\n let result: any;\n let error: string | undefined;\n\n if (!tool) {\n error = `Tool \"${message.toolName}\" not found`;\n } else {\n try {\n result = tool.execute\n ? await tool.execute(message.args, {\n toolCallId: message.id,\n abortSignal: abortController.signal,\n human: async () => {\n throw new Error(\n \"Tool human input is not supported in frame context\",\n );\n },\n })\n : undefined;\n } catch (e) {\n error = e instanceof Error ? e.message : String(e);\n }\n }\n\n if (this._activeToolCalls.get(message.id) !== activeCall) return;\n this._activeToolCalls.delete(message.id);\n\n this.sendMessage(event, {\n type: \"tool-result\",\n id: message.id,\n ...(error !== undefined ? { error } : { result }),\n });\n }\n\n private cancelToolCall(id: string) {\n const activeCall = this._activeToolCalls.get(id);\n if (!activeCall) return;\n this._activeToolCalls.delete(id);\n activeCall.abortController.abort();\n }\n\n private cancelToolCallsForProvider(provider: ModelContextProvider) {\n const matchingCalls = Array.from(this._activeToolCalls).filter(\n ([, activeCall]) => activeCall.provider === provider,\n );\n for (const [id, activeCall] of matchingCalls) {\n this._activeToolCalls.delete(id);\n activeCall.abortController.abort();\n }\n\n let sendFailed = false;\n let sendError: unknown;\n for (const [id, activeCall] of matchingCalls) {\n try {\n this.sendMessage(activeCall.event, {\n type: \"tool-result\",\n id,\n error: \"AssistantFrame tool provider has been removed\",\n });\n } catch (error) {\n if (sendFailed) {\n console.error(error);\n } else {\n sendFailed = true;\n sendError = error;\n }\n }\n }\n\n if (sendFailed) throw sendError;\n }\n\n private sendMessage(event: MessageEvent, message: FrameMessage) {\n event.source?.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message },\n { targetOrigin: event.origin },\n );\n }\n\n private getProviders() {\n return Array.from(new Set(this._providers.values()));\n }\n\n private getTool(toolName: string) {\n let resolved:\n | { provider: ModelContextProvider; tool: Tool<any, any> }\n | undefined;\n\n for (const provider of this.getProviders()) {\n const tool = provider.getModelContext().tools?.[toolName];\n if (tool) resolved = { provider, tool };\n }\n\n return resolved;\n }\n\n private getModelContext(): ModelContext {\n const contexts = this.getProviders().map((provider) =>\n provider.getModelContext(),\n );\n\n return contexts.reduce(\n (merged, context) => ({\n system: context.system\n ? merged.system\n ? `${merged.system}\\n\\n${context.system}`\n : context.system\n : merged.system,\n tools: { ...(merged.tools || {}), ...(context.tools || {}) },\n }),\n {} as ModelContext,\n );\n }\n\n private broadcastUpdate() {\n if (window.parent && window.parent !== window) {\n const updateMessage: FrameMessage = {\n type: \"model-context-update\",\n context: serializeModelContext(this.getModelContext()),\n };\n\n window.parent.postMessage(\n { channel: FRAME_MESSAGE_CHANNEL, message: updateMessage },\n this._targetOrigin,\n );\n }\n }\n\n private removeProvider(\n id: symbol,\n origin: string,\n ): {\n unsubscribe: Unsubscribe | undefined;\n removedProvider: ModelContextProvider | undefined;\n } {\n const provider = this._providers.get(id);\n this._providers.delete(id);\n const unsubscribe = this._providerUnsubscribes.get(id);\n this._providerUnsubscribes.delete(id);\n if (origin === \"*\") {\n this._wildcardRegistrations -= 1;\n if (\n this._wildcardRegistrations === 0 &&\n this._strictRegistrations === 0\n ) {\n this._targetOrigin = getDefaultTargetOrigin();\n }\n } else {\n this._strictRegistrations -= 1;\n if (this._strictRegistrations === 0) {\n this._targetOrigin =\n this._wildcardRegistrations > 0 ? \"*\" : getDefaultTargetOrigin();\n }\n }\n const removedProvider =\n provider && !this.getProviders().includes(provider)\n ? provider\n : undefined;\n return { unsubscribe, removedProvider };\n }\n\n static addModelContextProvider(\n provider: ModelContextProvider,\n targetOrigin?: string,\n ): Unsubscribe {\n const origin = targetOrigin ?? getDefaultTargetOrigin();\n const instance = AssistantFrameProvider.getInstance(origin);\n const id = Symbol();\n instance._providers.set(id, provider);\n if (origin === \"*\") {\n instance._wildcardRegistrations += 1;\n } else {\n instance._strictRegistrations += 1;\n }\n\n try {\n const unsubscribe = provider.subscribe?.(() =>\n instance.broadcastUpdate(),\n );\n if (unsubscribe) {\n instance._providerUnsubscribes.set(id, unsubscribe);\n }\n\n instance.broadcastUpdate();\n } catch (error) {\n const { unsubscribe, removedProvider } = instance.removeProvider(\n id,\n origin,\n );\n // Rollback failures must not replace the registration error.\n try {\n if (removedProvider) {\n instance.cancelToolCallsForProvider(removedProvider);\n }\n } catch (cancelError) {\n console.error(cancelError);\n }\n try {\n unsubscribe?.();\n } catch (unsubscribeError) {\n console.error(unsubscribeError);\n }\n try {\n instance.broadcastUpdate();\n } catch (broadcastError) {\n console.error(broadcastError);\n }\n throw error;\n }\n\n let released = false;\n return () => {\n if (released) return;\n released = true;\n const { unsubscribe, removedProvider } = instance.removeProvider(\n id,\n origin,\n );\n let cleanupFailed = false;\n let cleanupError: unknown;\n const runCleanup = (cleanup: () => void) => {\n try {\n cleanup();\n } catch (error) {\n if (cleanupFailed) {\n console.error(error);\n } else {\n cleanupFailed = true;\n cleanupError = error;\n }\n }\n };\n\n if (removedProvider) {\n runCleanup(() => instance.cancelToolCallsForProvider(removedProvider));\n }\n if (unsubscribe) runCleanup(unsubscribe);\n runCleanup(() => instance.broadcastUpdate());\n\n if (cleanupFailed) throw cleanupError;\n };\n }\n\n static dispose() {\n if (AssistantFrameProvider._instance) {\n const instance = AssistantFrameProvider._instance;\n window.removeEventListener(\"message\", instance.handleMessage);\n\n let cleanupFailed = false;\n let cleanupError: unknown;\n const runCleanup = (cleanup: () => void) => {\n try {\n cleanup();\n } catch (error) {\n if (cleanupFailed) {\n console.error(error);\n } else {\n cleanupFailed = true;\n cleanupError = error;\n }\n }\n };\n\n instance._providerUnsubscribes.forEach((unsubscribe) => {\n if (unsubscribe) runCleanup(unsubscribe);\n });\n instance._providerUnsubscribes.clear();\n instance._providers.clear();\n instance._activeToolCalls.forEach(({ abortController, event }, id) => {\n runCleanup(() => {\n abortController.abort();\n instance.sendMessage(event, {\n type: \"tool-result\",\n id,\n error: \"AssistantFrameProvider has been disposed\",\n });\n });\n });\n instance._activeToolCalls.clear();\n\n AssistantFrameProvider._instance = null;\n if (cleanupFailed) throw cleanupError;\n }\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ //#region src/model-context/tool-call-text.d.ts
2
+ type ToolCallRunningText<TArgs extends Record<string, unknown>, TValue> = TValue | undefined | null | ((options: {
3
+ args: TArgs;
4
+ }) => TValue | undefined | null);
5
+ type ToolCallCompleteText<TArgs extends Record<string, unknown>, TResult, TValue> = TValue | undefined | null | ((options: {
6
+ args: TArgs;
7
+ result: TResult | undefined;
8
+ }) => TValue | undefined | null);
9
+ type ToolCallText<TArgs extends Record<string, unknown>, TResult, TValue = string> = {
10
+ running: ToolCallRunningText<TArgs, TValue>;
11
+ complete?: ToolCallCompleteText<TArgs, TResult, TValue> | undefined;
12
+ } | {
13
+ running?: ToolCallRunningText<TArgs, TValue> | undefined;
14
+ complete: ToolCallCompleteText<TArgs, TResult, TValue>;
15
+ };
16
+ type ToolCallTextPart<TArgs extends Record<string, unknown>, TResult> = {
17
+ readonly args: TArgs;
18
+ readonly result?: TResult | undefined;
19
+ readonly status?: {
20
+ readonly type?: string | undefined;
21
+ } | undefined;
22
+ };
23
+ declare const resolveToolCallText: <TArgs extends Record<string, unknown>, TResult, TValue>(text: ToolCallText<TArgs, TResult, TValue>, part: ToolCallTextPart<TArgs, TResult>) => TValue | undefined | null;
24
+ //#endregion
25
+ export { ToolCallText, resolveToolCallText };
26
+ //# sourceMappingURL=tool-call-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-text.d.ts","names":[],"sources":["../../src/model-context/tool-call-text.ts"],"mappings":";KAAK,oBAAoB,cAAc,yBAAyB,UAC5D,8BAGE;EAAW,MAAM;MAAY;KAE9B,qBACH,cAAc,yBACd,SACA,UAEE,8BAGE;EACA,MAAM;EACN,QAAQ;MACJ;KAEE,aACV,cAAc,yBACd,SACA;EAGI,SAAS,oBAAoB,OAAO;EACpC,WAAW,qBAAqB,OAAO,SAAS;;EAGhD,UAAU,oBAAoB,OAAO;EACrC,UAAU,qBAAqB,OAAO,SAAS;;KAGhD,iBAAiB,cAAc,yBAAyB;WAClD,MAAM;WACN,SAAS;WACT;aAAoB;;;cAGlB,sBACX,cAAc,yBACd,SACA,QAEA,MAAM,aAAa,OAAO,SAAS,SACnC,MAAM,iBAAiB,OAAO,aAC7B"}
@@ -0,0 +1,18 @@
1
+ //#region src/model-context/tool-call-text.ts
2
+ const resolveToolCallText = (text, part) => {
3
+ if (!(part.status?.type === "running" || part.status?.type === "requires-action")) {
4
+ const value = text.complete;
5
+ if (typeof value !== "function") return value ?? null;
6
+ return value({
7
+ args: part.args,
8
+ result: part.result
9
+ });
10
+ }
11
+ const value = text.running;
12
+ if (typeof value !== "function") return value ?? null;
13
+ return value({ args: part.args });
14
+ };
15
+ //#endregion
16
+ export { resolveToolCallText };
17
+
18
+ //# sourceMappingURL=tool-call-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call-text.js","names":["ToolCallRunningText","Record","TValue","options","args","TArgs","ToolCallCompleteText","result","TResult","ToolCallText","running","complete","ToolCallTextPart","status","type","resolveToolCallText","text","part","isRunning","value"],"sources":["../../src/model-context/tool-call-text.ts"],"sourcesContent":["type ToolCallRunningText<TArgs extends Record<string, unknown>, TValue> =\n | TValue\n | undefined\n | null\n | ((options: { args: TArgs }) => TValue | undefined | null);\n\ntype ToolCallCompleteText<\n TArgs extends Record<string, unknown>,\n TResult,\n TValue,\n> =\n | TValue\n | undefined\n | null\n | ((options: {\n args: TArgs;\n result: TResult | undefined;\n }) => TValue | undefined | null);\n\nexport type ToolCallText<\n TArgs extends Record<string, unknown>,\n TResult,\n TValue = string,\n> =\n | {\n running: ToolCallRunningText<TArgs, TValue>;\n complete?: ToolCallCompleteText<TArgs, TResult, TValue> | undefined;\n }\n | {\n running?: ToolCallRunningText<TArgs, TValue> | undefined;\n complete: ToolCallCompleteText<TArgs, TResult, TValue>;\n };\n\ntype ToolCallTextPart<TArgs extends Record<string, unknown>, TResult> = {\n readonly args: TArgs;\n readonly result?: TResult | undefined;\n readonly status?: { readonly type?: string | undefined } | undefined;\n};\n\nexport const resolveToolCallText = <\n TArgs extends Record<string, unknown>,\n TResult,\n TValue,\n>(\n text: ToolCallText<TArgs, TResult, TValue>,\n part: ToolCallTextPart<TArgs, TResult>,\n): TValue | undefined | null => {\n const isRunning =\n part.status?.type === \"running\" || part.status?.type === \"requires-action\";\n\n if (!isRunning) {\n const value = text.complete;\n if (typeof value !== \"function\") return value ?? null;\n return (\n value as (options: {\n args: TArgs;\n result: TResult | undefined;\n }) => TValue | undefined | null\n )({ args: part.args, result: part.result });\n }\n\n const value = text.running;\n if (typeof value !== \"function\") return value ?? null;\n return (value as (options: { args: TArgs }) => TValue | undefined | null)({\n args: part.args,\n });\n};\n"],"mappings":";AAuCA,MAAae,uBAKXC,MACAC,SAC8B;CAI9B,IAAI,EAFFA,KAAKJ,QAAQC,SAAS,aAAaG,KAAKJ,QAAQC,SAAS,oBAE3C;EACd,MAAMK,QAAQH,KAAKL;EACnB,IAAI,OAAOQ,UAAU,YAAY,OAAOA,SAAS;EACjD,OACEA,MAIA;GAAEf,MAAMa,KAAKb;GAAMG,QAAQU,KAAKV;EAAO,CAAC;CAC5C;CAEA,MAAMY,QAAQH,KAAKN;CACnB,IAAI,OAAOS,UAAU,YAAY,OAAOA,SAAS;CACjD,OAAQA,MAAkE,EACxEf,MAAMa,KAAKb,KACb,CAAC;AACH"}
@@ -2,9 +2,9 @@ import { ThreadListClient } from "../store/runtime-clients/thread-list-runtime-c
2
2
  import { baseRuntimeAdapterTransformScopes } from "../store/clients/runtime-adapter.js";
3
3
  import { DataRenderers } from "./client/DataRenderers.js";
4
4
  import { Tools } from "./client/Tools.js";
5
+ import { attachTransformScopes, useAssistantClientRef, useAssistantScopeEffect } from "@assistant-ui/store/client";
5
6
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
6
7
  import { resource, useResource } from "@assistant-ui/tap";
7
- import { attachTransformScopes, useAssistantClientRef, useAssistantScopeEffect } from "@assistant-ui/store/client";
8
8
  //#region src/react/RuntimeAdapter.ts
9
9
  const useRuntimeAdapter = (runtime) => {
10
10
  const $ = c(7);
@@ -1 +1 @@
1
- {"version":3,"file":"LocalStorageThreadListAdapter.d.ts","names":[],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"mappings":";;;;;;KA6BY;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;cAqIU,4BACX,SAAS,+BACR"}
1
+ {"version":3,"file":"LocalStorageThreadListAdapter.d.ts","names":[],"sources":["../../../src/react/adapters/LocalStorageThreadListAdapter.tsx"],"mappings":";;;;;;KA8BY;EACV,QAAQ,cAAc;EACtB,QAAQ,aAAa,gBAAgB;EACrC,WAAW,cAAc;;KAkCtB;EACH,SAAS;EACT;EACA,iBAAiB;;KAGd;EACH;EACA;EACA;EACA;EACA,SAAS;;cAqIE,4BACX,uBACC;cAoCU,+BACX,uBACC;cAqIU,4BACX,SAAS,+BACR"}
@@ -1,3 +1,4 @@
1
+ import { isRecord } from "../../utils/json/is-json.js";
1
2
  import { RuntimeAdapterProvider } from "../runtimes/RuntimeAdapterProvider.js";
2
3
  import { createAssistantStream } from "assistant-stream";
3
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
@@ -27,7 +28,6 @@ const getMutationQueue = (storage) => {
27
28
  }
28
29
  return queue;
29
30
  };
30
- const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
31
31
  const parseJSON = (raw) => {
32
32
  if (!raw) return void 0;
33
33
  try {