@assistant-ui/core 0.3.16 → 0.3.18

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 (474) hide show
  1. package/dist/adapters/attachment.d.ts.map +1 -1
  2. package/dist/adapters/attachment.js +5 -4
  3. package/dist/adapters/attachment.js.map +1 -1
  4. package/dist/index.d.ts +3 -3
  5. package/dist/index.js +2 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/internal.d.ts +4 -2
  8. package/dist/internal.js +4 -2
  9. package/dist/model-context/frame/host.d.ts.map +1 -1
  10. package/dist/model-context/frame/host.js +10 -4
  11. package/dist/model-context/frame/host.js.map +1 -1
  12. package/dist/model-context/frame/provider.d.ts +5 -0
  13. package/dist/model-context/frame/provider.d.ts.map +1 -1
  14. package/dist/model-context/frame/provider.js +101 -28
  15. package/dist/model-context/frame/provider.js.map +1 -1
  16. package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
  17. package/dist/model-context/interactable-composer-metadata.js +16 -9
  18. package/dist/model-context/interactable-composer-metadata.js.map +1 -1
  19. package/dist/model-context/registry.d.ts.map +1 -1
  20. package/dist/model-context/registry.js +3 -5
  21. package/dist/model-context/registry.js.map +1 -1
  22. package/dist/model-context/tool-call-text.d.ts +26 -0
  23. package/dist/model-context/tool-call-text.d.ts.map +1 -0
  24. package/dist/model-context/tool-call-text.js +18 -0
  25. package/dist/model-context/tool-call-text.js.map +1 -0
  26. package/dist/model-context/types.d.ts.map +1 -1
  27. package/dist/model-context/types.js +5 -4
  28. package/dist/model-context/types.js.map +1 -1
  29. package/dist/react/RuntimeAdapter.js +1 -1
  30. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  31. package/dist/react/adapters/LocalStorageThreadListAdapter.js +1 -1
  32. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  33. package/dist/react/client/AdaptedRemoteThread.js +1 -1
  34. package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
  35. package/dist/react/client/InMemoryThreadList.js +63 -57
  36. package/dist/react/client/InMemoryThreadList.js.map +1 -1
  37. package/dist/react/client/Interactables.d.ts.map +1 -1
  38. package/dist/react/client/Interactables.js +25 -28
  39. package/dist/react/client/Interactables.js.map +1 -1
  40. package/dist/react/client/RemoteThreadList.d.ts +16 -0
  41. package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
  42. package/dist/react/client/RemoteThreadList.js +354 -242
  43. package/dist/react/client/RemoteThreadList.js.map +1 -1
  44. package/dist/react/client/Tools.d.ts.map +1 -1
  45. package/dist/react/client/Tools.js +24 -18
  46. package/dist/react/client/Tools.js.map +1 -1
  47. package/dist/react/index.d.ts +2 -1
  48. package/dist/react/index.js +2 -1
  49. package/dist/react/interactables-legacy/Interactables.js +246 -125
  50. package/dist/react/interactables-legacy/Interactables.js.map +1 -1
  51. package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
  52. package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +11 -9
  53. package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
  54. package/dist/react/model-context/makeAssistantTool.d.ts +2 -2
  55. package/dist/react/model-context/makeAssistantTool.js +1 -1
  56. package/dist/react/model-context/makeAssistantTool.js.map +1 -1
  57. package/dist/react/model-context/toolbox.d.ts +2 -14
  58. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  59. package/dist/react/model-context/toolbox.js +1 -13
  60. package/dist/react/model-context/toolbox.js.map +1 -1
  61. package/dist/react/model-context/useAssistantContext.js +37 -7
  62. package/dist/react/model-context/useAssistantContext.js.map +1 -1
  63. package/dist/react/model-context/useAssistantTool.d.ts +2 -2
  64. package/dist/react/model-context/useAssistantTool.js +1 -1
  65. package/dist/react/model-context/useAssistantTool.js.map +1 -1
  66. package/dist/react/model-context/useAuiToolOverrides.js +31 -5
  67. package/dist/react/model-context/useAuiToolOverrides.js.map +1 -1
  68. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  69. package/dist/react/model-context/useInlineRender.js +10 -36
  70. package/dist/react/model-context/useInlineRender.js.map +1 -1
  71. package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
  72. package/dist/react/model-context/useToolArgsStatus.js +2 -1
  73. package/dist/react/model-context/useToolArgsStatus.js.map +1 -1
  74. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
  75. package/dist/react/primitive-hooks/useMessageError.js +2 -8
  76. package/dist/react/primitive-hooks/useMessageError.js.map +1 -1
  77. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
  78. package/dist/react/primitive-hooks/useThreadListLoadMore.js +2 -4
  79. package/dist/react/primitive-hooks/useThreadListLoadMore.js.map +1 -1
  80. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  81. package/dist/react/primitives/composer/ComposerAttachments.js +4 -3
  82. package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
  83. package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
  84. package/dist/react/primitives/composer/ComposerQueue.js +4 -3
  85. package/dist/react/primitives/composer/ComposerQueue.js.map +1 -1
  86. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  87. package/dist/react/primitives/message/MessageAttachments.js +7 -6
  88. package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
  89. package/dist/react/primitives/message/MessageGroupedParts.js +2 -2
  90. package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
  91. package/dist/react/primitives/message/MessageParts.js +3 -3
  92. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  93. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  94. package/dist/react/primitives/threadList/ThreadListItems.js +5 -4
  95. package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
  96. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +6 -4
  97. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  98. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +59 -29
  99. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  100. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +11 -6
  101. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  102. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +160 -143
  103. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  104. package/dist/react/runtimes/RemoteThreadResource.d.ts +2 -6
  105. package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
  106. package/dist/react/runtimes/RemoteThreadResource.js +15 -13
  107. package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
  108. package/dist/react/runtimes/assistant-transport/useLatestRef.js +2 -2
  109. package/dist/react/runtimes/assistant-transport/useLatestRef.js.map +1 -1
  110. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +4 -1
  111. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  112. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +424 -52
  113. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  114. package/dist/react/runtimes/cloud/auiV0.d.ts +5 -1
  115. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  116. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  117. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +29 -0
  118. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -0
  119. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js +160 -0
  120. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js.map +1 -0
  121. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +1 -9
  122. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  123. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +16 -153
  124. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
  125. package/dist/react/runtimes/external-message-converter.js +1 -1
  126. package/dist/react/runtimes/external-message-converter.js.map +1 -1
  127. package/dist/react/runtimes/useExternalStoreRuntime.js +75 -46
  128. package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
  129. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  130. package/dist/react/runtimes/useRemoteThreadListRuntime.js +77 -29
  131. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
  132. package/dist/react/types/MessagePartComponentTypes.d.ts +7 -3
  133. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  134. package/dist/react/types/scopes/tools.d.ts +2 -0
  135. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  136. package/dist/runtime/api/message-part-runtime.d.ts +2 -2
  137. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  138. package/dist/runtime/api/message-part-runtime.js +1 -1
  139. package/dist/runtime/api/message-part-runtime.js.map +1 -1
  140. package/dist/runtime/api/thread-list-item-runtime.d.ts +7 -3
  141. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  142. package/dist/runtime/api/thread-list-item-runtime.js +2 -2
  143. package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
  144. package/dist/runtime/api/thread-list-runtime.d.ts +12 -1
  145. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  146. package/dist/runtime/api/thread-list-runtime.js +23 -14
  147. package/dist/runtime/api/thread-list-runtime.js.map +1 -1
  148. package/dist/runtime/api/thread-runtime.d.ts +5 -1
  149. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  150. package/dist/runtime/api/thread-runtime.js +1 -1
  151. package/dist/runtime/api/thread-runtime.js.map +1 -1
  152. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  153. package/dist/runtime/base/base-composer-runtime-core.js +16 -12
  154. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  155. package/dist/runtime/base/base-thread-runtime-core.d.ts +2 -2
  156. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  157. package/dist/runtime/base/base-thread-runtime-core.js +8 -7
  158. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  159. package/dist/runtime/interfaces/composer-runtime-core.d.ts +12 -5
  160. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  161. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +18 -3
  162. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  163. package/dist/runtime/interfaces/thread-runtime-core.d.ts +15 -1
  164. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  165. package/dist/runtime/utils/auto-status.d.ts +1 -1
  166. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  167. package/dist/runtime/utils/auto-status.js +6 -2
  168. package/dist/runtime/utils/auto-status.js.map +1 -1
  169. package/dist/runtime/utils/external-message-conversion.d.ts +3 -2
  170. package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
  171. package/dist/runtime/utils/external-message-conversion.js +5 -4
  172. package/dist/runtime/utils/external-message-conversion.js.map +1 -1
  173. package/dist/runtime/utils/message-repository.d.ts +1 -0
  174. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  175. package/dist/runtime/utils/message-repository.js +15 -6
  176. package/dist/runtime/utils/message-repository.js.map +1 -1
  177. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +6 -3
  178. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
  179. package/dist/runtime/utils/resolveToolApprovalResponse.js +12 -3
  180. package/dist/runtime/utils/resolveToolApprovalResponse.js.map +1 -1
  181. package/dist/runtime/utils/thread-message-like.d.ts +2 -10
  182. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  183. package/dist/runtime/utils/thread-message-like.js +1 -1
  184. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  185. package/dist/runtime/utils/tool-call-tree.d.ts +39 -0
  186. package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -0
  187. package/dist/runtime/utils/tool-call-tree.js +85 -0
  188. package/dist/runtime/utils/tool-call-tree.js.map +1 -0
  189. package/dist/runtimes/external-store/external-store-adapter.d.ts +29 -2
  190. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  191. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  192. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +21 -27
  193. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
  194. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +2 -1
  195. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  196. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +34 -28
  197. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  198. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +1 -1
  199. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
  200. package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
  201. package/dist/runtimes/internal.d.ts +2 -2
  202. package/dist/runtimes/internal.js +2 -2
  203. package/dist/runtimes/local/local-thread-runtime-core.d.ts +1 -1
  204. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  205. package/dist/runtimes/local/local-thread-runtime-core.js +3 -1
  206. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  207. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +18 -1
  208. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  209. package/dist/runtimes/remote-thread-list/remote-thread-state.js +148 -43
  210. package/dist/runtimes/remote-thread-list/remote-thread-state.js.map +1 -1
  211. package/dist/runtimes/remote-thread-list/title-generation.d.ts +49 -0
  212. package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -0
  213. package/dist/runtimes/remote-thread-list/title-generation.js +197 -0
  214. package/dist/runtimes/remote-thread-list/title-generation.js.map +1 -0
  215. package/dist/runtimes/remote-thread-list/title.d.ts +11 -0
  216. package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -0
  217. package/dist/runtimes/remote-thread-list/title.js +14 -0
  218. package/dist/runtimes/remote-thread-list/title.js.map +1 -0
  219. package/dist/runtimes/remote-thread-list/types.d.ts +16 -5
  220. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  221. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +31 -8
  222. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  223. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +97 -60
  224. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
  225. package/dist/store/clients/external-thread.d.ts +1 -1
  226. package/dist/store/clients/external-thread.d.ts.map +1 -1
  227. package/dist/store/clients/external-thread.js +30 -7
  228. package/dist/store/clients/external-thread.js.map +1 -1
  229. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  230. package/dist/store/clients/model-context-client.js +2 -1
  231. package/dist/store/clients/model-context-client.js.map +1 -1
  232. package/dist/store/clients/single-thread-list.d.ts.map +1 -1
  233. package/dist/store/clients/single-thread-list.js +2 -1
  234. package/dist/store/clients/single-thread-list.js.map +1 -1
  235. package/dist/store/clients/suggestions.d.ts.map +1 -1
  236. package/dist/store/clients/suggestions.js +19 -6
  237. package/dist/store/clients/suggestions.js.map +1 -1
  238. package/dist/store/clients/thread-message-client.js +1 -1
  239. package/dist/store/clients/thread-selection-events.js +1 -1
  240. package/dist/store/index.d.ts +2 -1
  241. package/dist/store/index.js +2 -1
  242. package/dist/store/internal.d.ts +2 -2
  243. package/dist/store/internal.js +2 -2
  244. package/dist/store/primitive-predicates.d.ts +4 -1
  245. package/dist/store/primitive-predicates.d.ts.map +1 -1
  246. package/dist/store/primitive-predicates.js +9 -1
  247. package/dist/store/primitive-predicates.js.map +1 -1
  248. package/dist/store/runtime-clients/composer-runtime-client.d.ts +1 -0
  249. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  250. package/dist/store/runtime-clients/composer-runtime-client.js +98 -62
  251. package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
  252. package/dist/store/runtime-clients/message-runtime-client.d.ts +1 -0
  253. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  254. package/dist/store/runtime-clients/message-runtime-client.js +221 -144
  255. package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
  256. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  257. package/dist/store/runtime-clients/thread-list-item-runtime-client.js +2 -2
  258. package/dist/store/runtime-clients/thread-list-item-runtime-client.js.map +1 -1
  259. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  260. package/dist/store/runtime-clients/thread-list-runtime-client.js +128 -107
  261. package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
  262. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  263. package/dist/store/runtime-clients/thread-runtime-client.js +194 -122
  264. package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
  265. package/dist/store/runtime-clients/useSubscribable.d.ts +3 -1
  266. package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
  267. package/dist/store/runtime-clients/useSubscribable.js +1 -1
  268. package/dist/store/runtime-clients/useSubscribable.js.map +1 -1
  269. package/dist/store/scopes/composer.d.ts +10 -2
  270. package/dist/store/scopes/composer.d.ts.map +1 -1
  271. package/dist/store/scopes/message.d.ts +30 -1
  272. package/dist/store/scopes/message.d.ts.map +1 -1
  273. package/dist/store/scopes/part.d.ts +6 -3
  274. package/dist/store/scopes/part.d.ts.map +1 -1
  275. package/dist/store/scopes/thread-list-item.d.ts +2 -2
  276. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  277. package/dist/store/scopes/thread.d.ts +8 -0
  278. package/dist/store/scopes/thread.d.ts.map +1 -1
  279. package/dist/store/scopes/threads.d.ts +1 -0
  280. package/dist/store/scopes/threads.d.ts.map +1 -1
  281. package/dist/subscribable/subscribable.d.ts +8 -1
  282. package/dist/subscribable/subscribable.d.ts.map +1 -1
  283. package/dist/subscribable/subscribable.js +24 -16
  284. package/dist/subscribable/subscribable.js.map +1 -1
  285. package/dist/types/attachment.d.ts +2 -1
  286. package/dist/types/attachment.d.ts.map +1 -1
  287. package/dist/types/attachment.js +2 -1
  288. package/dist/types/attachment.js.map +1 -1
  289. package/dist/types/message.d.ts +40 -1
  290. package/dist/types/message.d.ts.map +1 -1
  291. package/dist/types/message.js +7 -1
  292. package/dist/types/message.js.map +1 -1
  293. package/dist/utils/abortable-iterable.d.ts +19 -0
  294. package/dist/utils/abortable-iterable.d.ts.map +1 -0
  295. package/dist/utils/abortable-iterable.js +72 -0
  296. package/dist/utils/abortable-iterable.js.map +1 -0
  297. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  298. package/dist/utils/composite-context-provider.js +20 -2
  299. package/dist/utils/composite-context-provider.js.map +1 -1
  300. package/dist/utils/record.d.ts +11 -0
  301. package/dist/utils/record.d.ts.map +1 -0
  302. package/dist/utils/record.js +12 -0
  303. package/dist/utils/record.js.map +1 -0
  304. package/package.json +12 -17
  305. package/src/adapters/attachment.test.ts +50 -1
  306. package/src/adapters/attachment.ts +7 -4
  307. package/src/index.ts +7 -1
  308. package/src/internal.ts +12 -0
  309. package/src/model-context/frame/host.test.ts +24 -0
  310. package/src/model-context/frame/host.ts +10 -4
  311. package/src/model-context/frame/provider.test.ts +288 -1
  312. package/src/model-context/frame/provider.ts +148 -30
  313. package/src/model-context/interactable-composer-metadata.test.ts +28 -0
  314. package/src/model-context/interactable-composer-metadata.ts +9 -3
  315. package/src/model-context/registry.test.ts +12 -0
  316. package/src/model-context/registry.ts +3 -2
  317. package/src/model-context/tool-call-text.test.ts +67 -0
  318. package/src/model-context/tool-call-text.ts +67 -0
  319. package/src/model-context/types.test.ts +25 -0
  320. package/src/model-context/types.ts +9 -4
  321. package/src/react/AssistantRuntimeProvider.test.tsx +66 -2
  322. package/src/react/RuntimeAdapter.test.ts +34 -0
  323. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +1 -3
  324. package/src/react/client/InMemoryThreadList.ts +1 -0
  325. package/src/react/client/Interactables.test.ts +28 -0
  326. package/src/react/client/Interactables.ts +15 -13
  327. package/src/react/client/RemoteThreadList.background.test.ts +526 -0
  328. package/src/react/client/RemoteThreadList.concurrent.test.tsx +315 -0
  329. package/src/react/client/RemoteThreadList.test.ts +617 -3
  330. package/src/react/client/RemoteThreadList.ts +433 -167
  331. package/src/react/client/Tools.ts +29 -12
  332. package/src/react/index.ts +4 -0
  333. package/src/react/interactables-legacy/Interactables.ts +16 -16
  334. package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +9 -10
  335. package/src/react/model-context/makeAssistantTool.ts +2 -2
  336. package/src/react/model-context/modelContextHooks.test.tsx +131 -0
  337. package/src/react/model-context/toolbox.test.ts +9 -9
  338. package/src/react/model-context/toolbox.ts +9 -36
  339. package/src/react/model-context/useAssistantContext.ts +4 -2
  340. package/src/react/model-context/useAssistantTool.ts +2 -2
  341. package/src/react/model-context/useAuiToolOverrides.ts +4 -2
  342. package/src/react/model-context/useInlineRender.test.tsx +48 -0
  343. package/src/react/model-context/useInlineRender.ts +14 -10
  344. package/src/react/model-context/useToolArgsStatus.test.tsx +30 -0
  345. package/src/react/model-context/useToolArgsStatus.ts +2 -1
  346. package/src/react/primitive-hooks/useMessageError.ts +2 -19
  347. package/src/react/primitive-hooks/useThreadListLoadMore.ts +2 -3
  348. package/src/react/primitives/composer/ComposerAttachments.test.tsx +76 -0
  349. package/src/react/primitives/composer/ComposerAttachments.tsx +9 -4
  350. package/src/react/primitives/composer/ComposerQueue.test.tsx +72 -0
  351. package/src/react/primitives/composer/ComposerQueue.tsx +7 -4
  352. package/src/react/primitives/message/MessageAttachments.test.tsx +107 -37
  353. package/src/react/primitives/message/MessageAttachments.tsx +10 -7
  354. package/src/react/primitives/message/MessageGroupedParts.tsx +2 -2
  355. package/src/react/primitives/message/MessageParts.tsx +3 -3
  356. package/src/react/primitives/threadList/ThreadListItems.test.tsx +99 -0
  357. package/src/react/primitives/threadList/ThreadListItems.tsx +8 -5
  358. package/src/react/runtimes/RemoteThreadListHookInstanceManager.destroy.test.tsx +172 -0
  359. package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +127 -1
  360. package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +7 -1
  361. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +99 -35
  362. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.load-error.test.ts +132 -0
  363. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.switch-delete.test.ts +274 -0
  364. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +223 -152
  365. package/src/react/runtimes/RemoteThreadResource.test.ts +9 -0
  366. package/src/react/runtimes/RemoteThreadResource.ts +20 -16
  367. package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +51 -2
  368. package/src/react/runtimes/assistant-transport/useLatestRef.ts +2 -2
  369. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +45 -0
  370. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +546 -5
  371. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +546 -103
  372. package/src/react/runtimes/cloud/auiV0.ts +5 -0
  373. package/src/react/runtimes/cloud/createCloudThreadListAdapter.test.ts +103 -0
  374. package/src/react/runtimes/cloud/createCloudThreadListAdapter.ts +237 -0
  375. package/src/react/runtimes/cloud/useCloudThreadListAdapter.test.tsx +90 -1
  376. package/src/react/runtimes/cloud/useCloudThreadListAdapter.tsx +33 -238
  377. package/src/react/runtimes/external-message-converter.ts +1 -0
  378. package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +41 -0
  379. package/src/react/runtimes/useExternalStoreRuntime.ts +10 -4
  380. package/src/react/runtimes/useLocalRuntime.test.tsx +20 -0
  381. package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +216 -0
  382. package/src/react/runtimes/useRemoteThreadListRuntime.load-error.test.tsx +108 -0
  383. package/src/react/runtimes/useRemoteThreadListRuntime.ts +57 -6
  384. package/src/react/types/MessagePartComponentTypes.ts +7 -3
  385. package/src/react/types/scopes/tools.ts +2 -0
  386. package/src/runtime/api/message-part-runtime.ts +3 -3
  387. package/src/runtime/api/message-runtime.test.ts +75 -0
  388. package/src/runtime/api/thread-list-item-runtime.ts +10 -3
  389. package/src/runtime/api/thread-list-runtime.ts +46 -12
  390. package/src/runtime/api/thread-runtime.test.ts +78 -0
  391. package/src/runtime/api/thread-runtime.ts +8 -1
  392. package/src/runtime/base/base-composer-runtime-core.ts +36 -8
  393. package/src/runtime/base/base-thread-runtime-core.test.ts +149 -4
  394. package/src/runtime/base/base-thread-runtime-core.ts +16 -8
  395. package/src/runtime/interfaces/composer-runtime-core.ts +10 -5
  396. package/src/runtime/interfaces/thread-list-runtime-core.ts +25 -2
  397. package/src/runtime/interfaces/thread-runtime-core.ts +17 -1
  398. package/src/runtime/utils/auto-status.test.ts +57 -0
  399. package/src/runtime/utils/auto-status.ts +13 -1
  400. package/src/runtime/utils/external-message-conversion.test.ts +165 -0
  401. package/src/runtime/utils/external-message-conversion.ts +18 -2
  402. package/src/runtime/utils/message-repository.ts +29 -17
  403. package/src/runtime/utils/resolveToolApprovalResponse.test.ts +73 -0
  404. package/src/runtime/utils/resolveToolApprovalResponse.ts +27 -6
  405. package/src/runtime/utils/thread-message-like.ts +3 -11
  406. package/src/runtime/utils/tool-call-tree.test.ts +191 -0
  407. package/src/runtime/utils/tool-call-tree.ts +97 -0
  408. package/src/runtimes/external-store/external-store-adapter.ts +38 -2
  409. package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +18 -13
  410. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +56 -33
  411. package/src/runtimes/inert/InertThreadRuntimeCore.ts +1 -1
  412. package/src/runtimes/internal.ts +1 -0
  413. package/src/runtimes/local/local-thread-runtime-core.test.ts +29 -3
  414. package/src/runtimes/local/local-thread-runtime-core.ts +5 -1
  415. package/src/runtimes/remote-thread-list/remote-thread-state.test.ts +238 -0
  416. package/src/runtimes/remote-thread-list/remote-thread-state.ts +223 -44
  417. package/src/runtimes/remote-thread-list/title-generation.test.ts +602 -0
  418. package/src/runtimes/remote-thread-list/title-generation.ts +329 -0
  419. package/src/runtimes/remote-thread-list/title.test.ts +62 -0
  420. package/src/runtimes/remote-thread-list/title.ts +16 -0
  421. package/src/runtimes/remote-thread-list/types.ts +16 -5
  422. package/src/runtimes/tool-invocations/EDGE_CASES.md +110 -5
  423. package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +750 -136
  424. package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +144 -91
  425. package/src/store/clients/external-thread.ts +62 -11
  426. package/src/store/clients/model-context-client.ts +5 -1
  427. package/src/store/clients/single-thread-list.ts +1 -0
  428. package/src/store/clients/suggestions.test.ts +195 -1
  429. package/src/store/clients/suggestions.ts +45 -34
  430. package/src/store/index.ts +4 -0
  431. package/src/store/internal.ts +2 -0
  432. package/src/store/primitive-predicates.ts +35 -0
  433. package/src/store/runtime-clients/composer-runtime-client.ts +42 -9
  434. package/src/store/runtime-clients/message-runtime-client.ts +54 -6
  435. package/src/store/runtime-clients/thread-list-item-runtime-client.ts +4 -2
  436. package/src/store/runtime-clients/thread-list-runtime-client.ts +17 -2
  437. package/src/store/runtime-clients/thread-runtime-client.ts +58 -10
  438. package/src/store/runtime-clients/useSubscribable.ts +8 -2
  439. package/src/store/scopes/composer.ts +16 -4
  440. package/src/store/scopes/message.ts +14 -0
  441. package/src/store/scopes/part.ts +6 -3
  442. package/src/store/scopes/thread-list-item.ts +5 -2
  443. package/src/store/scopes/thread.ts +4 -0
  444. package/src/store/scopes/threads.ts +1 -0
  445. package/src/subscribable/subscribable.test.ts +50 -0
  446. package/src/subscribable/subscribable.ts +33 -21
  447. package/src/tests/MessageRepository.test.ts +116 -0
  448. package/src/tests/OptimisticState-list-race.test.ts +1 -0
  449. package/src/tests/RemoteThreadListThreadListRuntimeCore-initialize-adapter-change.test.ts +38 -0
  450. package/src/tests/RemoteThreadListThreadListRuntimeCore-load-race.test.ts +158 -0
  451. package/src/tests/RemoteThreadListThreadListRuntimeCore-loadMore.test.ts +78 -0
  452. package/src/tests/RemoteThreadListThreadListRuntimeCore-reload.test.ts +52 -0
  453. package/src/tests/RemoteThreadListThreadListRuntimeCore-title-race.test.ts +89 -0
  454. package/src/tests/attachment-adapters.test.ts +14 -0
  455. package/src/tests/base-composer-runtime-core.test.ts +39 -0
  456. package/src/tests/external-store-optimistic-id.test.ts +79 -0
  457. package/src/tests/external-store-repository-instance.test.ts +166 -0
  458. package/src/tests/external-store-thread-list-runtime-core.test.ts +83 -0
  459. package/src/tests/external-store-thread-runtime-core-adapter.test.ts +49 -34
  460. package/src/tests/external-thread-attachments.test.tsx +224 -1
  461. package/src/tests/external-thread-parity.test.tsx +23 -0
  462. package/src/tests/remote-thread-list-adapter-switch.test.ts +66 -1
  463. package/src/tests/remote-thread-list-isLoading.test.ts +1 -0
  464. package/src/tests/thread-list-runtime-getLoadThreadsPromise.test.ts +1 -0
  465. package/src/tests/thread-switch-events.test.tsx +475 -2
  466. package/src/tests/tools-scope-migration.test.tsx +28 -0
  467. package/src/types/attachment.ts +4 -0
  468. package/src/types/message.ts +50 -2
  469. package/src/utils/abortable-iterable.test.ts +213 -0
  470. package/src/utils/abortable-iterable.ts +93 -0
  471. package/src/utils/composite-context-provider.test.ts +25 -0
  472. package/src/utils/composite-context-provider.ts +23 -2
  473. package/src/utils/record.test.ts +48 -0
  474. package/src/utils/record.ts +11 -0
@@ -3,10 +3,10 @@ import { AttachmentRuntimeClient } from "./attachment-runtime-client.js";
3
3
  import { MessagePartClient } from "./message-part-runtime-client.js";
4
4
  import { ComposerClient } from "./composer-runtime-client.js";
5
5
  import { liveRef } from "./liveRef.js";
6
+ import { useAssistantEmit, useClientLookup, useClientResource } from "@assistant-ui/store/client";
6
7
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
7
- import { useState } from "@assistant-ui/tap/react-shim";
8
+ import { useEffect, useRef, useState } from "@assistant-ui/tap/react-shim";
8
9
  import { resource, useResource, withKey } from "@assistant-ui/tap";
9
- import { useClientLookup, useClientResource } from "@assistant-ui/store/client";
10
10
  //#region src/store/runtime-clients/message-runtime-client.ts
11
11
  const useMessageAttachmentClientByIndex = (t0) => {
12
12
  const $ = c(5);
@@ -49,9 +49,10 @@ const useMessagePartByIndex = (t0) => {
49
49
  };
50
50
  const MessagePartByIndex = resource(useMessagePartByIndex);
51
51
  const useMessageClient = (t0) => {
52
- const $ = c(55);
53
- const { runtime, threadIdRef } = t0;
52
+ const $ = c(74);
53
+ const { runtime, threadIdRef, threadId } = t0;
54
54
  const runtimeState = useSubscribable(runtime);
55
+ const emit = useAssistantEmit();
55
56
  const [isCopiedState, setIsCopied] = useState(false);
56
57
  const [isHoveringState, setIsHovering] = useState(false);
57
58
  let t1;
@@ -61,178 +62,254 @@ const useMessageClient = (t0) => {
61
62
  $[1] = t1;
62
63
  } else t1 = $[1];
63
64
  const messageIdRef = t1;
65
+ const previousStatus = useRef(runtimeState.status);
64
66
  let t2;
65
- if ($[2] !== messageIdRef || $[3] !== runtime.composer || $[4] !== threadIdRef) {
66
- t2 = ComposerClient({
67
+ if ($[2] !== emit || $[3] !== runtime || $[4] !== threadId) {
68
+ t2 = (event) => {
69
+ emit(event, {
70
+ threadId,
71
+ messageId: runtime.getState().id
72
+ });
73
+ };
74
+ $[2] = emit;
75
+ $[3] = runtime;
76
+ $[4] = threadId;
77
+ $[5] = t2;
78
+ } else t2 = $[5];
79
+ const emitMessageEvent = t2;
80
+ let t3;
81
+ let t4;
82
+ if ($[6] !== emit || $[7] !== runtimeState.id || $[8] !== runtimeState.status || $[9] !== threadId) {
83
+ t3 = () => {
84
+ const status = runtimeState.status;
85
+ const previous = previousStatus.current;
86
+ previousStatus.current = status;
87
+ if (status?.type === "incomplete" && status.reason === "error" && (previous?.type !== "incomplete" || previous.reason !== "error")) emit("message.error", {
88
+ threadId,
89
+ messageId: runtimeState.id,
90
+ reason: "error"
91
+ });
92
+ };
93
+ t4 = [
94
+ runtimeState.status,
95
+ runtimeState.id,
96
+ emit,
97
+ threadId
98
+ ];
99
+ $[6] = emit;
100
+ $[7] = runtimeState.id;
101
+ $[8] = runtimeState.status;
102
+ $[9] = threadId;
103
+ $[10] = t3;
104
+ $[11] = t4;
105
+ } else {
106
+ t3 = $[10];
107
+ t4 = $[11];
108
+ }
109
+ useEffect(t3, t4);
110
+ let t5;
111
+ if ($[12] !== messageIdRef || $[13] !== runtime.composer || $[14] !== threadIdRef) {
112
+ t5 = ComposerClient({
67
113
  runtime: runtime.composer,
68
114
  threadIdRef,
69
115
  messageIdRef
70
116
  });
71
- $[2] = messageIdRef;
72
- $[3] = runtime.composer;
73
- $[4] = threadIdRef;
74
- $[5] = t2;
75
- } else t2 = $[5];
76
- const composer = useClientResource(t2);
77
- let t3;
78
- if ($[6] !== runtime || $[7] !== runtimeState.content) {
79
- let t4;
80
- if ($[9] !== runtime) {
81
- t4 = (part, idx) => withKey("toolCallId" in part && part.toolCallId != null ? `toolCallId-${part.toolCallId}` : `index-${idx}`, MessagePartByIndex({
117
+ $[12] = messageIdRef;
118
+ $[13] = runtime.composer;
119
+ $[14] = threadIdRef;
120
+ $[15] = t5;
121
+ } else t5 = $[15];
122
+ const composer = useClientResource(t5);
123
+ let t6;
124
+ if ($[16] !== runtime || $[17] !== runtimeState.content) {
125
+ let t7;
126
+ if ($[19] !== runtime) {
127
+ t7 = (part, idx) => withKey("toolCallId" in part && part.toolCallId != null ? `toolCallId-${part.toolCallId}` : `index-${idx}`, MessagePartByIndex({
82
128
  runtime,
83
129
  index: idx
84
130
  }), [runtime, idx]);
85
- $[9] = runtime;
86
- $[10] = t4;
87
- } else t4 = $[10];
88
- t3 = runtimeState.content.map(t4);
89
- $[6] = runtime;
90
- $[7] = runtimeState.content;
91
- $[8] = t3;
92
- } else t3 = $[8];
93
- const parts = useClientLookup(t3);
94
- let t4;
95
- if ($[11] !== runtimeState.attachments) {
96
- t4 = runtimeState.attachments ?? [];
97
- $[11] = runtimeState.attachments;
98
- $[12] = t4;
99
- } else t4 = $[12];
100
- let t5;
101
- if ($[13] !== runtime || $[14] !== t4) {
102
- let t6;
103
- if ($[16] !== runtime) {
104
- t6 = (attachment, idx_0) => withKey(attachment.id, MessageAttachmentClientByIndex({
131
+ $[19] = runtime;
132
+ $[20] = t7;
133
+ } else t7 = $[20];
134
+ t6 = runtimeState.content.map(t7);
135
+ $[16] = runtime;
136
+ $[17] = runtimeState.content;
137
+ $[18] = t6;
138
+ } else t6 = $[18];
139
+ const parts = useClientLookup(t6);
140
+ let t7;
141
+ if ($[21] !== runtimeState.attachments) {
142
+ t7 = runtimeState.attachments ?? [];
143
+ $[21] = runtimeState.attachments;
144
+ $[22] = t7;
145
+ } else t7 = $[22];
146
+ let t8;
147
+ if ($[23] !== runtime || $[24] !== t7) {
148
+ let t9;
149
+ if ($[26] !== runtime) {
150
+ t9 = (attachment, idx_0) => withKey(attachment.id, MessageAttachmentClientByIndex({
105
151
  runtime,
106
152
  index: idx_0
107
153
  }), [runtime, idx_0]);
108
- $[16] = runtime;
109
- $[17] = t6;
110
- } else t6 = $[17];
111
- t5 = t4.map(t6);
112
- $[13] = runtime;
113
- $[14] = t4;
114
- $[15] = t5;
115
- } else t5 = $[15];
116
- const attachments = useClientLookup(t5);
117
- const t6 = runtimeState;
118
- let t7;
119
- if ($[18] !== composer.state || $[19] !== isCopiedState || $[20] !== isHoveringState || $[21] !== parts.state || $[22] !== t6) {
120
- t7 = {
121
- ...t6,
154
+ $[26] = runtime;
155
+ $[27] = t9;
156
+ } else t9 = $[27];
157
+ t8 = t7.map(t9);
158
+ $[23] = runtime;
159
+ $[24] = t7;
160
+ $[25] = t8;
161
+ } else t8 = $[25];
162
+ const attachments = useClientLookup(t8);
163
+ const t9 = runtimeState;
164
+ let t10;
165
+ if ($[28] !== composer.state || $[29] !== isCopiedState || $[30] !== isHoveringState || $[31] !== parts.state || $[32] !== t9) {
166
+ t10 = {
167
+ ...t9,
122
168
  parts: parts.state,
123
169
  composer: composer.state,
124
170
  isCopied: isCopiedState,
125
171
  isHovering: isHoveringState
126
172
  };
127
- $[18] = composer.state;
128
- $[19] = isCopiedState;
129
- $[20] = isHoveringState;
130
- $[21] = parts.state;
131
- $[22] = t6;
132
- $[23] = t7;
133
- } else t7 = $[23];
134
- const state = t7;
135
- let t8;
136
- if ($[24] !== state) {
137
- t8 = () => state;
138
- $[24] = state;
139
- $[25] = t8;
140
- } else t8 = $[25];
141
- let t9;
142
- if ($[26] !== composer.methods) {
143
- t9 = () => composer.methods;
144
- $[26] = composer.methods;
145
- $[27] = t9;
146
- } else t9 = $[27];
147
- let t10;
173
+ $[28] = composer.state;
174
+ $[29] = isCopiedState;
175
+ $[30] = isHoveringState;
176
+ $[31] = parts.state;
177
+ $[32] = t9;
178
+ $[33] = t10;
179
+ } else t10 = $[33];
180
+ const state = t10;
148
181
  let t11;
182
+ if ($[34] !== state) {
183
+ t11 = () => state;
184
+ $[34] = state;
185
+ $[35] = t11;
186
+ } else t11 = $[35];
149
187
  let t12;
188
+ if ($[36] !== composer.methods) {
189
+ t12 = () => composer.methods;
190
+ $[36] = composer.methods;
191
+ $[37] = t12;
192
+ } else t12 = $[37];
150
193
  let t13;
194
+ if ($[38] !== runtime) {
195
+ t13 = () => runtime.delete();
196
+ $[38] = runtime;
197
+ $[39] = t13;
198
+ } else t13 = $[39];
151
199
  let t14;
152
200
  let t15;
153
- let t16;
154
- if ($[28] !== runtime) {
155
- t10 = () => runtime.delete();
156
- t11 = (config) => runtime.reload(config);
157
- t12 = () => runtime.speak();
158
- t13 = () => runtime.stopSpeaking();
159
- t14 = (feedback) => runtime.submitFeedback(feedback);
160
- t15 = (options) => runtime.switchToBranch(options);
161
- t16 = () => runtime.unstable_getCopyText();
162
- $[28] = runtime;
163
- $[29] = t10;
164
- $[30] = t11;
165
- $[31] = t12;
166
- $[32] = t13;
167
- $[33] = t14;
168
- $[34] = t15;
169
- $[35] = t16;
201
+ if ($[40] !== emitMessageEvent || $[41] !== runtime) {
202
+ t14 = (config) => {
203
+ emitMessageEvent("message.reload");
204
+ return runtime.reload(config);
205
+ };
206
+ t15 = () => {
207
+ emitMessageEvent("message.speak");
208
+ return runtime.speak();
209
+ };
210
+ $[40] = emitMessageEvent;
211
+ $[41] = runtime;
212
+ $[42] = t14;
213
+ $[43] = t15;
170
214
  } else {
171
- t10 = $[29];
172
- t11 = $[30];
173
- t12 = $[31];
174
- t13 = $[32];
175
- t14 = $[33];
176
- t15 = $[34];
177
- t16 = $[35];
215
+ t14 = $[42];
216
+ t15 = $[43];
178
217
  }
218
+ let t16;
179
219
  let t17;
180
- if ($[36] !== parts) {
181
- t17 = (selector) => {
220
+ if ($[44] !== runtime) {
221
+ t16 = () => runtime.stopSpeaking();
222
+ t17 = (feedback) => runtime.submitFeedback(feedback);
223
+ $[44] = runtime;
224
+ $[45] = t16;
225
+ $[46] = t17;
226
+ } else {
227
+ t16 = $[45];
228
+ t17 = $[46];
229
+ }
230
+ let t18;
231
+ if ($[47] !== emitMessageEvent || $[48] !== runtime) {
232
+ t18 = (options) => {
233
+ emitMessageEvent("message.branchSwitched");
234
+ return runtime.switchToBranch(options);
235
+ };
236
+ $[47] = emitMessageEvent;
237
+ $[48] = runtime;
238
+ $[49] = t18;
239
+ } else t18 = $[49];
240
+ let t19;
241
+ if ($[50] !== runtime) {
242
+ t19 = () => runtime.unstable_getCopyText();
243
+ $[50] = runtime;
244
+ $[51] = t19;
245
+ } else t19 = $[51];
246
+ let t20;
247
+ if ($[52] !== parts) {
248
+ t20 = (selector) => {
182
249
  if ("index" in selector) return parts.get({ index: selector.index });
183
250
  else return parts.get({ key: `toolCallId-${selector.toolCallId}` });
184
251
  };
185
- $[36] = parts;
186
- $[37] = t17;
187
- } else t17 = $[37];
188
- let t18;
189
- if ($[38] !== attachments) {
190
- t18 = (selector_0) => {
252
+ $[52] = parts;
253
+ $[53] = t20;
254
+ } else t20 = $[53];
255
+ let t21;
256
+ if ($[54] !== attachments) {
257
+ t21 = (selector_0) => {
191
258
  if ("id" in selector_0) return attachments.get({ key: selector_0.id });
192
259
  else return attachments.get(selector_0);
193
260
  };
194
- $[38] = attachments;
195
- $[39] = t18;
196
- } else t18 = $[39];
197
- let t19;
198
- if ($[40] !== runtime) {
199
- t19 = () => runtime;
200
- $[40] = runtime;
201
- $[41] = t19;
202
- } else t19 = $[41];
203
- let t20;
204
- if ($[42] !== t10 || $[43] !== t11 || $[44] !== t12 || $[45] !== t13 || $[46] !== t14 || $[47] !== t15 || $[48] !== t16 || $[49] !== t17 || $[50] !== t18 || $[51] !== t19 || $[52] !== t8 || $[53] !== t9) {
205
- t20 = {
206
- getState: t8,
207
- composer: t9,
208
- delete: t10,
209
- reload: t11,
210
- speak: t12,
211
- stopSpeaking: t13,
212
- submitFeedback: t14,
213
- switchToBranch: t15,
214
- getCopyText: t16,
215
- part: t17,
216
- attachment: t18,
217
- setIsCopied,
261
+ $[54] = attachments;
262
+ $[55] = t21;
263
+ } else t21 = $[55];
264
+ let t22;
265
+ if ($[56] !== emitMessageEvent) {
266
+ t22 = (value) => {
267
+ if (value) emitMessageEvent("message.copied");
268
+ setIsCopied(value);
269
+ };
270
+ $[56] = emitMessageEvent;
271
+ $[57] = t22;
272
+ } else t22 = $[57];
273
+ let t23;
274
+ if ($[58] !== runtime) {
275
+ t23 = () => runtime;
276
+ $[58] = runtime;
277
+ $[59] = t23;
278
+ } else t23 = $[59];
279
+ let t24;
280
+ if ($[60] !== t11 || $[61] !== t12 || $[62] !== t13 || $[63] !== t14 || $[64] !== t15 || $[65] !== t16 || $[66] !== t17 || $[67] !== t18 || $[68] !== t19 || $[69] !== t20 || $[70] !== t21 || $[71] !== t22 || $[72] !== t23) {
281
+ t24 = {
282
+ getState: t11,
283
+ composer: t12,
284
+ delete: t13,
285
+ reload: t14,
286
+ speak: t15,
287
+ stopSpeaking: t16,
288
+ submitFeedback: t17,
289
+ switchToBranch: t18,
290
+ getCopyText: t19,
291
+ part: t20,
292
+ attachment: t21,
293
+ setIsCopied: t22,
218
294
  setIsHovering,
219
- __internal_getRuntime: t19
295
+ __internal_getRuntime: t23
220
296
  };
221
- $[42] = t10;
222
- $[43] = t11;
223
- $[44] = t12;
224
- $[45] = t13;
225
- $[46] = t14;
226
- $[47] = t15;
227
- $[48] = t16;
228
- $[49] = t17;
229
- $[50] = t18;
230
- $[51] = t19;
231
- $[52] = t8;
232
- $[53] = t9;
233
- $[54] = t20;
234
- } else t20 = $[54];
235
- return t20;
297
+ $[60] = t11;
298
+ $[61] = t12;
299
+ $[62] = t13;
300
+ $[63] = t14;
301
+ $[64] = t15;
302
+ $[65] = t16;
303
+ $[66] = t17;
304
+ $[67] = t18;
305
+ $[68] = t19;
306
+ $[69] = t20;
307
+ $[70] = t21;
308
+ $[71] = t22;
309
+ $[72] = t23;
310
+ $[73] = t24;
311
+ } else t24 = $[73];
312
+ return t24;
236
313
  };
237
314
  const MessageClient = resource(useMessageClient);
238
315
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"message-runtime-client.js","names":["useMemo","useState","useResource","withKey","resource","ClientOutput","useClientLookup","useClientResource","MessageRuntime","useSubscribable","liveRef","ComposerClient","MessagePartClient","MessageState","AttachmentRuntimeClient","useMessageAttachmentClientByIndex","t0","$","_c","runtime","index","t1","getAttachmentByIndex","attachmentRuntime","t2","MessageAttachmentClientByIndex","useMessagePartByIndex","getMessagePartByIndex","partRuntime","MessagePartByIndex","useMessageClient","threadIdRef","runtimeState","isCopiedState","setIsCopied","isHoveringState","setIsHovering","getState","id","messageIdRef","composer","t3","content","t4","part","idx","toolCallId","map","parts","attachments","t5","t6","attachment","idx_0","t7","state","isCopied","isHovering","t8","t9","methods","t10","t11","t12","t13","t14","t15","t16","delete","config","reload","speak","stopSpeaking","feedback","submitFeedback","options","switchToBranch","unstable_getCopyText","t17","selector","get","key","t18","selector_0","t19","t20","getCopyText","__internal_getRuntime","MessageClient"],"sources":["../../../src/store/runtime-clients/message-runtime-client.ts"],"sourcesContent":["import { useMemo, useState } from \"react\";\nimport { useResource, withKey, resource } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport { useClientLookup, useClientResource } from \"@assistant-ui/store/client\";\nimport type { MessageRuntime } from \"../../runtime/api/message-runtime\";\nimport { useSubscribable } from \"./useSubscribable\";\nimport { liveRef } from \"./liveRef\";\nimport { ComposerClient } from \"./composer-runtime-client\";\nimport { MessagePartClient } from \"./message-part-runtime-client\";\nimport type { MessageState } from \"../scopes/message\";\nimport { AttachmentRuntimeClient } from \"./attachment-runtime-client\";\n\nconst useMessageAttachmentClientByIndex = ({\n runtime,\n index,\n}: {\n runtime: MessageRuntime;\n index: number;\n}) => {\n const attachmentRuntime = useMemo(\n () => runtime.getAttachmentByIndex(index),\n [runtime, index],\n );\n return useResource(AttachmentRuntimeClient({ runtime: attachmentRuntime }));\n};\n\nconst MessageAttachmentClientByIndex = resource(\n useMessageAttachmentClientByIndex,\n);\n\nconst useMessagePartByIndex = ({\n runtime,\n index,\n}: {\n runtime: MessageRuntime;\n index: number;\n}) => {\n const partRuntime = useMemo(\n () => runtime.getMessagePartByIndex(index),\n [runtime, index],\n );\n return useResource(MessagePartClient({ runtime: partRuntime }));\n};\n\nconst MessagePartByIndex = resource(useMessagePartByIndex);\n\nconst useMessageClient = ({\n runtime,\n threadIdRef,\n}: {\n runtime: MessageRuntime;\n threadIdRef: { current: string };\n}): ClientOutput<\"message\"> => {\n const runtimeState = useSubscribable(runtime);\n\n const [isCopiedState, setIsCopied] = useState(false);\n const [isHoveringState, setIsHovering] = useState(false);\n\n const messageIdRef = useMemo(\n () => liveRef(() => runtime.getState().id),\n [runtime],\n );\n\n const composer = useClientResource(\n ComposerClient({\n runtime: runtime.composer,\n threadIdRef,\n messageIdRef,\n }),\n );\n const parts = useClientLookup(\n runtimeState.content.map((part, idx) =>\n withKey(\n \"toolCallId\" in part && part.toolCallId != null\n ? `toolCallId-${part.toolCallId}`\n : `index-${idx}`,\n MessagePartByIndex({ runtime, index: idx }),\n [runtime, idx],\n ),\n ),\n );\n\n const attachments = useClientLookup(\n (runtimeState.attachments ?? []).map((attachment, idx) =>\n withKey(\n attachment.id,\n MessageAttachmentClientByIndex({ runtime, index: idx }),\n [runtime, idx],\n ),\n ),\n );\n\n const state = useMemo<MessageState>(() => {\n return {\n ...(runtimeState as MessageState),\n\n parts: parts.state,\n composer: composer.state,\n\n isCopied: isCopiedState,\n isHovering: isHoveringState,\n };\n }, [\n runtimeState,\n parts.state,\n composer.state,\n isCopiedState,\n isHoveringState,\n ]);\n\n return {\n getState: () => state,\n\n composer: () => composer.methods,\n\n delete: () => runtime.delete(),\n reload: (config) => runtime.reload(config),\n speak: () => runtime.speak(),\n stopSpeaking: () => runtime.stopSpeaking(),\n submitFeedback: (feedback) => runtime.submitFeedback(feedback),\n switchToBranch: (options) => runtime.switchToBranch(options),\n getCopyText: () => runtime.unstable_getCopyText(),\n part: (selector) => {\n if (\"index\" in selector) {\n return parts.get({ index: selector.index });\n } else {\n return parts.get({ key: `toolCallId-${selector.toolCallId}` });\n }\n },\n\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachments.get({ key: selector.id });\n } else {\n return attachments.get(selector);\n }\n },\n\n setIsCopied,\n setIsHovering,\n\n __internal_getRuntime: () => runtime,\n };\n};\n\nexport const MessageClient = resource(useMessageClient);\n"],"mappings":"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"}
1
+ {"version":3,"file":"message-runtime-client.js","names":["useEffect","useMemo","useRef","useState","useResource","withKey","resource","ClientOutput","useAssistantEmit","useClientLookup","useClientResource","MessageRuntime","useSubscribable","liveRef","ComposerClient","MessagePartClient","MessageState","AttachmentRuntimeClient","useMessageAttachmentClientByIndex","t0","$","_c","runtime","index","t1","getAttachmentByIndex","attachmentRuntime","t2","MessageAttachmentClientByIndex","useMessagePartByIndex","getMessagePartByIndex","partRuntime","MessagePartByIndex","useMessageClient","threadIdRef","threadId","runtimeState","emit","isCopiedState","setIsCopied","isHoveringState","setIsHovering","getState","id","messageIdRef","previousStatus","status","event","messageId","emitMessageEvent","t3","t4","previous","current","type","reason","t5","composer","t6","content","t7","part","idx","toolCallId","map","parts","attachments","t8","t9","attachment","idx_0","t10","state","isCopied","isHovering","t11","t12","methods","t13","delete","t14","t15","config","reload","speak","t16","t17","stopSpeaking","feedback","submitFeedback","t18","options","switchToBranch","t19","unstable_getCopyText","t20","selector","get","key","t21","selector_0","t22","value","t23","t24","getCopyText","__internal_getRuntime","MessageClient"],"sources":["../../../src/store/runtime-clients/message-runtime-client.ts"],"sourcesContent":["import { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useResource, withKey, resource } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport {\n useAssistantEmit,\n useClientLookup,\n useClientResource,\n} from \"@assistant-ui/store/client\";\nimport type { MessageRuntime } from \"../../runtime/api/message-runtime\";\nimport { useSubscribable } from \"./useSubscribable\";\nimport { liveRef } from \"./liveRef\";\nimport { ComposerClient } from \"./composer-runtime-client\";\nimport { MessagePartClient } from \"./message-part-runtime-client\";\nimport type { MessageState } from \"../scopes/message\";\nimport { AttachmentRuntimeClient } from \"./attachment-runtime-client\";\n\nconst useMessageAttachmentClientByIndex = ({\n runtime,\n index,\n}: {\n runtime: MessageRuntime;\n index: number;\n}) => {\n const attachmentRuntime = useMemo(\n () => runtime.getAttachmentByIndex(index),\n [runtime, index],\n );\n return useResource(AttachmentRuntimeClient({ runtime: attachmentRuntime }));\n};\n\nconst MessageAttachmentClientByIndex = resource(\n useMessageAttachmentClientByIndex,\n);\n\nconst useMessagePartByIndex = ({\n runtime,\n index,\n}: {\n runtime: MessageRuntime;\n index: number;\n}) => {\n const partRuntime = useMemo(\n () => runtime.getMessagePartByIndex(index),\n [runtime, index],\n );\n return useResource(MessagePartClient({ runtime: partRuntime }));\n};\n\nconst MessagePartByIndex = resource(useMessagePartByIndex);\n\nconst useMessageClient = ({\n runtime,\n threadIdRef,\n threadId,\n}: {\n runtime: MessageRuntime;\n threadIdRef: { current: string };\n threadId: string;\n}): ClientOutput<\"message\"> => {\n const runtimeState = useSubscribable(runtime);\n const emit = useAssistantEmit();\n\n const [isCopiedState, setIsCopied] = useState(false);\n const [isHoveringState, setIsHovering] = useState(false);\n\n const messageIdRef = useMemo(\n () => liveRef(() => runtime.getState().id),\n [runtime],\n );\n const previousStatus = useRef(runtimeState.status);\n const emitMessageEvent = (\n event:\n | \"message.reload\"\n | \"message.speak\"\n | \"message.branchSwitched\"\n | \"message.copied\",\n ) => {\n emit(event, { threadId, messageId: runtime.getState().id });\n };\n\n useEffect(() => {\n const status = runtimeState.status;\n const previous = previousStatus.current;\n previousStatus.current = status;\n if (\n status?.type === \"incomplete\" &&\n status.reason === \"error\" &&\n (previous?.type !== \"incomplete\" || previous.reason !== \"error\")\n ) {\n emit(\"message.error\", {\n threadId,\n messageId: runtimeState.id,\n reason: \"error\",\n });\n }\n }, [runtimeState.status, runtimeState.id, emit, threadId]);\n\n const composer = useClientResource(\n ComposerClient({\n runtime: runtime.composer,\n threadIdRef,\n messageIdRef,\n }),\n );\n const parts = useClientLookup(\n runtimeState.content.map((part, idx) =>\n withKey(\n \"toolCallId\" in part && part.toolCallId != null\n ? `toolCallId-${part.toolCallId}`\n : `index-${idx}`,\n MessagePartByIndex({ runtime, index: idx }),\n [runtime, idx],\n ),\n ),\n );\n\n const attachments = useClientLookup(\n (runtimeState.attachments ?? []).map((attachment, idx) =>\n withKey(\n attachment.id,\n MessageAttachmentClientByIndex({ runtime, index: idx }),\n [runtime, idx],\n ),\n ),\n );\n\n const state = useMemo<MessageState>(() => {\n return {\n ...(runtimeState as MessageState),\n\n parts: parts.state,\n composer: composer.state,\n\n isCopied: isCopiedState,\n isHovering: isHoveringState,\n };\n }, [\n runtimeState,\n parts.state,\n composer.state,\n isCopiedState,\n isHoveringState,\n ]);\n\n return {\n getState: () => state,\n\n composer: () => composer.methods,\n\n delete: () => runtime.delete(),\n reload: (config) => {\n emitMessageEvent(\"message.reload\");\n return runtime.reload(config);\n },\n speak: () => {\n emitMessageEvent(\"message.speak\");\n return runtime.speak();\n },\n stopSpeaking: () => runtime.stopSpeaking(),\n submitFeedback: (feedback) => runtime.submitFeedback(feedback),\n switchToBranch: (options) => {\n emitMessageEvent(\"message.branchSwitched\");\n return runtime.switchToBranch(options);\n },\n getCopyText: () => runtime.unstable_getCopyText(),\n part: (selector) => {\n if (\"index\" in selector) {\n return parts.get({ index: selector.index });\n } else {\n return parts.get({ key: `toolCallId-${selector.toolCallId}` });\n }\n },\n\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachments.get({ key: selector.id });\n } else {\n return attachments.get(selector);\n }\n },\n\n setIsCopied: (value) => {\n if (value) {\n emitMessageEvent(\"message.copied\");\n }\n setIsCopied(value);\n },\n setIsHovering,\n\n __internal_getRuntime: () => runtime,\n };\n};\n\nexport const MessageClient = resource(useMessageClient);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list-item-runtime-client.d.ts","names":[],"sources":["../../../src/store/runtime-clients/thread-list-item-runtime-client.ts"],"mappings":";;;cA8Da,kDAAoB,SAAA;EAlDtB,SAAA;EAIa"}
1
+ {"version":3,"file":"thread-list-item-runtime-client.d.ts","names":[],"sources":["../../../src/store/runtime-clients/thread-list-item-runtime-client.ts"],"mappings":";;;cAgEa,kDAAoB,SAAA;EApDtB,SAAA;EAIa"}
@@ -1,9 +1,9 @@
1
1
  import { useSubscribable } from "./useSubscribable.js";
2
2
  import { handleThreadListAction } from "./handle-thread-list-action.js";
3
+ import { useAssistantEmit } from "@assistant-ui/store/client";
3
4
  import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
4
5
  import { useEffect, useRef } from "@assistant-ui/tap/react-shim";
5
6
  import { resource } from "@assistant-ui/tap";
6
- import { useAssistantEmit } from "@assistant-ui/store/client";
7
7
  //#region src/store/runtime-clients/thread-list-item-runtime-client.ts
8
8
  const useThreadListItemClient = (t0) => {
9
9
  const $ = c(35);
@@ -90,7 +90,7 @@ const useThreadListItemClient = (t0) => {
90
90
  t10 = () => handleThreadListAction("archive", () => runtime.archive());
91
91
  t11 = () => handleThreadListAction("unarchive", () => runtime.unarchive());
92
92
  t12 = () => handleThreadListAction("delete", () => runtime.delete());
93
- t13 = () => handleThreadListAction("generate title", () => runtime.generateTitle());
93
+ t13 = (options_0) => handleThreadListAction("generate title", () => runtime.generateTitle(options_0));
94
94
  $[13] = runtime;
95
95
  $[14] = t10;
96
96
  $[15] = t11;
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list-item-runtime-client.js","names":["useEffect","useMemo","useRef","resource","ClientOutput","useAssistantEmit","ThreadListItemRuntime","useSubscribable","handleThreadListAction","useThreadListItemClient","t0","$","_c","runtime","mainThreadIsRunning","t1","undefined","runtimeState","t2","bb0","isRunning","isMain","t3","state","emit","id","threadId","selectionRef","t4","t5","previous","current","t6","t10","t11","t12","t13","t7","t8","t9","options","switchTo","newTitle","rename","custom","updateCustom","archive","unarchive","delete","generateTitle","t14","t15","detach","initialize","getState","__internal_getRuntime","ThreadListItemClient"],"sources":["../../../src/store/runtime-clients/thread-list-item-runtime-client.ts"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport { useAssistantEmit } from \"@assistant-ui/store/client\";\nimport type { ThreadListItemRuntime } from \"../../runtime/api/thread-list-item-runtime\";\nimport { useSubscribable } from \"./useSubscribable\";\nimport { handleThreadListAction } from \"./handle-thread-list-action\";\n\nconst useThreadListItemClient = ({\n runtime,\n mainThreadIsRunning = false,\n}: {\n runtime: ThreadListItemRuntime;\n // A thread list that cannot report per-thread run state still leaves the open\n // thread observable, and the thread client tracks that reactively. Omitted\n // where the runtime state is already authoritative for every thread.\n mainThreadIsRunning?: boolean | undefined;\n}): ClientOutput<\"threadListItem\"> => {\n const runtimeState = useSubscribable(runtime);\n const state = useMemo(() => {\n const isRunning =\n runtimeState.isRunning || (runtimeState.isMain && mainThreadIsRunning);\n if (isRunning === runtimeState.isRunning) return runtimeState;\n return { ...runtimeState, isRunning };\n }, [runtimeState, mainThreadIsRunning]);\n const emit = useAssistantEmit();\n\n // Emitted after the flush that rebinds the derived scopes; the runtime's own\n // synchronous notification would be delivered against the pre-switch binding.\n const { isMain, id: threadId } = runtimeState;\n const selectionRef = useRef({ isMain, threadId });\n useEffect(() => {\n const previous = selectionRef.current;\n if (previous.isMain === isMain && previous.threadId === threadId) return;\n selectionRef.current = { isMain, threadId };\n emit(isMain ? \"threadListItem.switchedTo\" : \"threadListItem.switchedAway\", {\n threadId,\n });\n }, [isMain, threadId, emit]);\n\n return {\n getState: () => state,\n switchTo: (options) =>\n handleThreadListAction(\"switch\", () => runtime.switchTo(options)),\n rename: (newTitle) =>\n handleThreadListAction(\"rename\", () => runtime.rename(newTitle)),\n updateCustom: (custom) =>\n handleThreadListAction(\"update custom metadata\", () =>\n runtime.updateCustom(custom),\n ),\n archive: () => handleThreadListAction(\"archive\", () => runtime.archive()),\n unarchive: () =>\n handleThreadListAction(\"unarchive\", () => runtime.unarchive()),\n delete: () => handleThreadListAction(\"delete\", () => runtime.delete()),\n generateTitle: () =>\n handleThreadListAction(\"generate title\", () => runtime.generateTitle()),\n initialize: runtime.initialize,\n detach: runtime.detach,\n __internal_getRuntime: () => runtime,\n };\n};\n\nexport const ThreadListItemClient = resource(useThreadListItemClient);\n"],"mappings":"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"}
1
+ {"version":3,"file":"thread-list-item-runtime-client.js","names":["useEffect","useMemo","useRef","resource","ClientOutput","useAssistantEmit","ThreadListItemRuntime","useSubscribable","handleThreadListAction","useThreadListItemClient","t0","$","_c","runtime","mainThreadIsRunning","t1","undefined","runtimeState","t2","bb0","isRunning","isMain","t3","state","emit","id","threadId","selectionRef","t4","t5","previous","current","t6","t10","t11","t12","t13","t7","t8","t9","options","switchTo","newTitle","rename","custom","updateCustom","archive","unarchive","delete","options_0","generateTitle","t14","t15","detach","initialize","getState","__internal_getRuntime","ThreadListItemClient"],"sources":["../../../src/store/runtime-clients/thread-list-item-runtime-client.ts"],"sourcesContent":["import { useEffect, useMemo, useRef } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport { useAssistantEmit } from \"@assistant-ui/store/client\";\nimport type { ThreadListItemRuntime } from \"../../runtime/api/thread-list-item-runtime\";\nimport { useSubscribable } from \"./useSubscribable\";\nimport { handleThreadListAction } from \"./handle-thread-list-action\";\n\nconst useThreadListItemClient = ({\n runtime,\n mainThreadIsRunning = false,\n}: {\n runtime: ThreadListItemRuntime;\n // A thread list that cannot report per-thread run state still leaves the open\n // thread observable, and the thread client tracks that reactively. Omitted\n // where the runtime state is already authoritative for every thread.\n mainThreadIsRunning?: boolean | undefined;\n}): ClientOutput<\"threadListItem\"> => {\n const runtimeState = useSubscribable(runtime);\n const state = useMemo(() => {\n const isRunning =\n runtimeState.isRunning || (runtimeState.isMain && mainThreadIsRunning);\n if (isRunning === runtimeState.isRunning) return runtimeState;\n return { ...runtimeState, isRunning };\n }, [runtimeState, mainThreadIsRunning]);\n const emit = useAssistantEmit();\n\n // Emitted after the flush that rebinds the derived scopes; the runtime's own\n // synchronous notification would be delivered against the pre-switch binding.\n const { isMain, id: threadId } = runtimeState;\n const selectionRef = useRef({ isMain, threadId });\n useEffect(() => {\n const previous = selectionRef.current;\n if (previous.isMain === isMain && previous.threadId === threadId) return;\n selectionRef.current = { isMain, threadId };\n emit(isMain ? \"threadListItem.switchedTo\" : \"threadListItem.switchedAway\", {\n threadId,\n });\n }, [isMain, threadId, emit]);\n\n return {\n getState: () => state,\n switchTo: (options) =>\n handleThreadListAction(\"switch\", () => runtime.switchTo(options)),\n rename: (newTitle) =>\n handleThreadListAction(\"rename\", () => runtime.rename(newTitle)),\n updateCustom: (custom) =>\n handleThreadListAction(\"update custom metadata\", () =>\n runtime.updateCustom(custom),\n ),\n archive: () => handleThreadListAction(\"archive\", () => runtime.archive()),\n unarchive: () =>\n handleThreadListAction(\"unarchive\", () => runtime.unarchive()),\n delete: () => handleThreadListAction(\"delete\", () => runtime.delete()),\n generateTitle: (options) =>\n handleThreadListAction(\"generate title\", () =>\n runtime.generateTitle(options),\n ),\n initialize: runtime.initialize,\n detach: runtime.detach,\n __internal_getRuntime: () => runtime,\n };\n};\n\nexport const ThreadListItemClient = resource(useThreadListItemClient);\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"thread-list-runtime-client.d.ts","names":[],"sources":["../../../src/store/runtime-clients/thread-list-runtime-client.ts"],"mappings":";;;;cAgHa,8CAAgB,SAAA;EAxElB,SAAA;EACoB,6BAAA"}
1
+ {"version":3,"file":"thread-list-runtime-client.d.ts","names":[],"sources":["../../../src/store/runtime-clients/thread-list-runtime-client.ts"],"mappings":";;;;cA+Ha,8CAAgB,SAAA;EAnFlB,SAAA;EACoB,6BAAA"}