@assistant-ui/core 0.1.14 → 0.1.16

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 (345) hide show
  1. package/dist/adapters/attachment.d.ts +6 -0
  2. package/dist/adapters/attachment.d.ts.map +1 -1
  3. package/dist/adapters/attachment.js +54 -9
  4. package/dist/adapters/attachment.js.map +1 -1
  5. package/dist/adapters/{mention.d.ts → directive-formatter.d.ts} +2 -4
  6. package/dist/adapters/directive-formatter.d.ts.map +1 -0
  7. package/dist/adapters/{mention.js → directive-formatter.js} +4 -9
  8. package/dist/adapters/directive-formatter.js.map +1 -0
  9. package/dist/adapters/index.d.ts +1 -3
  10. package/dist/adapters/index.d.ts.map +1 -1
  11. package/dist/adapters/index.js +2 -1
  12. package/dist/adapters/index.js.map +1 -1
  13. package/dist/adapters/speech.d.ts.map +1 -1
  14. package/dist/adapters/speech.js +1 -3
  15. package/dist/adapters/speech.js.map +1 -1
  16. package/dist/adapters/thread-history.d.ts +1 -0
  17. package/dist/adapters/thread-history.d.ts.map +1 -1
  18. package/dist/adapters/trigger.d.ts +1 -18
  19. package/dist/adapters/trigger.d.ts.map +1 -1
  20. package/dist/index.d.ts +2 -4
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +2 -1
  23. package/dist/index.js.map +1 -1
  24. package/dist/model-context/frame/host.d.ts +1 -1
  25. package/dist/model-context/frame/host.d.ts.map +1 -1
  26. package/dist/model-context/frame/host.js +1 -0
  27. package/dist/model-context/frame/host.js.map +1 -1
  28. package/dist/model-context/frame/provider.d.ts +1 -1
  29. package/dist/model-context/frame/provider.d.ts.map +1 -1
  30. package/dist/model-context/frame/provider.js +1 -0
  31. package/dist/model-context/frame/provider.js.map +1 -1
  32. package/dist/model-context/registry.d.ts +2 -2
  33. package/dist/model-context/registry.d.ts.map +1 -1
  34. package/dist/model-context/tool.d.ts +1 -1
  35. package/dist/model-context/tool.d.ts.map +1 -1
  36. package/dist/model-context/types.d.ts +1 -1
  37. package/dist/model-context/types.d.ts.map +1 -1
  38. package/dist/model-context/types.js +0 -3
  39. package/dist/model-context/types.js.map +1 -1
  40. package/dist/react/AssistantRuntimeProvider.d.ts +1 -1
  41. package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
  42. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  43. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  44. package/dist/react/client/DataRenderers.d.ts +1 -1
  45. package/dist/react/client/DataRenderers.d.ts.map +1 -1
  46. package/dist/react/client/DataRenderers.js +14 -0
  47. package/dist/react/client/DataRenderers.js.map +1 -1
  48. package/dist/react/client/Tools.d.ts +1 -1
  49. package/dist/react/client/Tools.d.ts.map +1 -1
  50. package/dist/react/client/Tools.js +1 -0
  51. package/dist/react/client/Tools.js.map +1 -1
  52. package/dist/react/model-context/makeAssistantTool.d.ts +1 -1
  53. package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
  54. package/dist/react/model-context/makeAssistantToolUI.d.ts +1 -1
  55. package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
  56. package/dist/react/model-context/useInlineRender.d.ts +2 -2
  57. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  58. package/dist/react/model-context/useInlineRender.js +1 -0
  59. package/dist/react/model-context/useInlineRender.js.map +1 -1
  60. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
  61. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +1 -0
  62. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js.map +1 -1
  63. package/dist/react/primitives/composer/ComposerAttachments.d.ts +1 -1
  64. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  65. package/dist/react/primitives/composer/ComposerAttachments.js +1 -1
  66. package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
  67. package/dist/react/primitives/message/MessageAttachments.d.ts +1 -1
  68. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  69. package/dist/react/primitives/message/MessageAttachments.js +1 -1
  70. package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
  71. package/dist/react/primitives/message/MessageParts.d.ts +7 -1
  72. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  73. package/dist/react/primitives/message/MessageParts.js +60 -44
  74. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  75. package/dist/react/primitives/part/PartMessages.d.ts +1 -1
  76. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  77. package/dist/react/primitives/thread/ThreadMessages.d.ts +1 -1
  78. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  79. package/dist/react/primitives/thread/ThreadMessages.js +2 -1
  80. package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
  81. package/dist/react/primitives/threadList/ThreadListItems.d.ts +1 -1
  82. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  83. package/dist/react/primitives/threadList/ThreadListItems.js +1 -1
  84. package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
  85. package/dist/react/providers/AttachmentByIndexProvider.d.ts +1 -1
  86. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
  87. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +1 -1
  88. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
  89. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +1 -1
  90. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
  91. package/dist/react/providers/MessageByIndexProvider.d.ts +1 -1
  92. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
  93. package/dist/react/providers/PartByIndexProvider.d.ts +1 -1
  94. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
  95. package/dist/react/providers/QueueItemByIndexProvider.d.ts +1 -1
  96. package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
  97. package/dist/react/providers/SuggestionByIndexProvider.d.ts +1 -1
  98. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
  99. package/dist/react/providers/TextMessagePartProvider.d.ts +1 -1
  100. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
  101. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +1 -1
  102. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
  103. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +1 -1
  104. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  105. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +4 -2
  106. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  107. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +28 -6
  108. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  109. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +5 -1
  110. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  111. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +27 -9
  112. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  113. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +1 -1
  114. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
  115. package/dist/react/runtimes/RuntimeAdapterProvider.js.map +1 -1
  116. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +2 -2
  117. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  118. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  119. package/dist/react/runtimes/cloud/auiV0.d.ts +2 -2
  120. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  121. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  122. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  123. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +4 -1
  124. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js.map +1 -1
  125. package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
  126. package/dist/react/runtimes/useLocalRuntime.js +10 -0
  127. package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
  128. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  129. package/dist/react/runtimes/useRemoteThreadListRuntime.js +6 -0
  130. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
  131. package/dist/react/runtimes/useToolInvocations.d.ts.map +1 -1
  132. package/dist/react/runtimes/useToolInvocations.js +2 -0
  133. package/dist/react/runtimes/useToolInvocations.js.map +1 -1
  134. package/dist/react/types/MessagePartComponentTypes.d.ts +1 -1
  135. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  136. package/dist/react/types/scopes/dataRenderers.d.ts +2 -0
  137. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
  138. package/dist/runtime/api/assistant-runtime.d.ts +1 -1
  139. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  140. package/dist/runtime/api/attachment-runtime.d.ts +0 -1
  141. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  142. package/dist/runtime/api/attachment-runtime.js +0 -3
  143. package/dist/runtime/api/attachment-runtime.js.map +1 -1
  144. package/dist/runtime/api/bindings.d.ts +1 -0
  145. package/dist/runtime/api/bindings.d.ts.map +1 -1
  146. package/dist/runtime/api/composer-runtime.d.ts +4 -2
  147. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  148. package/dist/runtime/api/composer-runtime.js.map +1 -1
  149. package/dist/runtime/api/message-runtime.d.ts +6 -6
  150. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  151. package/dist/runtime/api/thread-list-runtime.d.ts +4 -2
  152. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  153. package/dist/runtime/api/thread-list-runtime.js +6 -0
  154. package/dist/runtime/api/thread-list-runtime.js.map +1 -1
  155. package/dist/runtime/api/thread-runtime.d.ts +10 -9
  156. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  157. package/dist/runtime/api/thread-runtime.js +4 -3
  158. package/dist/runtime/api/thread-runtime.js.map +1 -1
  159. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  160. package/dist/runtime/base/base-composer-runtime-core.js +22 -8
  161. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  162. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  163. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +2 -1
  164. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  165. package/dist/runtime/base/default-edit-composer-runtime-core.js +26 -5
  166. package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
  167. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +2 -0
  168. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  169. package/dist/runtime/interfaces/thread-runtime-core.d.ts +7 -0
  170. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  171. package/dist/runtime/internal.d.ts.map +1 -1
  172. package/dist/runtime/internal.js +1 -4
  173. package/dist/runtime/internal.js.map +1 -1
  174. package/dist/runtime/utils/auto-status.d.ts +1 -1
  175. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  176. package/dist/runtime/utils/chat-model-adapter.d.ts +1 -1
  177. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  178. package/dist/runtime/utils/thread-message-like.d.ts +1 -1
  179. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  180. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  181. package/dist/runtimes/assistant-transport/utils.d.ts +1 -1
  182. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
  183. package/dist/runtimes/assistant-transport/utils.js +1 -1
  184. package/dist/runtimes/assistant-transport/utils.js.map +1 -1
  185. package/dist/runtimes/external-store/external-store-adapter.d.ts +8 -0
  186. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  187. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +1 -1
  188. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  189. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +27 -25
  190. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
  191. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +1 -0
  192. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  193. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +4 -0
  194. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  195. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +2 -2
  196. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
  197. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +3 -0
  198. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  199. package/dist/runtimes/remote-thread-list/remote-thread-state.js.map +1 -1
  200. package/dist/runtimes/remote-thread-list/types.d.ts +14 -2
  201. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  202. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +2 -2
  203. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  204. package/dist/store/runtime-clients/composer-runtime-client.d.ts +1 -1
  205. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  206. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +2 -2
  207. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  208. package/dist/store/runtime-clients/message-runtime-client.d.ts +1 -1
  209. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  210. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +1 -1
  211. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  212. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +2 -2
  213. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  214. package/dist/store/runtime-clients/thread-list-runtime-client.js +1 -0
  215. package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -1
  216. package/dist/store/runtime-clients/thread-runtime-client.d.ts +1 -1
  217. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  218. package/dist/store/scopes/thread-list-item.d.ts +1 -0
  219. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  220. package/dist/store/scopes/threads.d.ts +1 -0
  221. package/dist/store/scopes/threads.d.ts.map +1 -1
  222. package/dist/subscribable/subscribable.d.ts.map +1 -1
  223. package/dist/subscribable/subscribable.js +1 -15
  224. package/dist/subscribable/subscribable.js.map +1 -1
  225. package/dist/tests/remote-thread-list-test-helpers.d.ts +12 -0
  226. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -0
  227. package/dist/tests/remote-thread-list-test-helpers.js +48 -0
  228. package/dist/tests/remote-thread-list-test-helpers.js.map +1 -0
  229. package/dist/types/directive.d.ts +19 -0
  230. package/dist/types/directive.d.ts.map +1 -0
  231. package/dist/types/directive.js +2 -0
  232. package/dist/types/directive.js.map +1 -0
  233. package/dist/types/index.d.ts +1 -1
  234. package/dist/types/index.d.ts.map +1 -1
  235. package/dist/types/message.d.ts.map +1 -1
  236. package/dist/types/trigger.d.ts +2 -2
  237. package/dist/types/trigger.d.ts.map +1 -1
  238. package/dist/utils/json/is-json.d.ts +1 -1
  239. package/dist/utils/json/is-json.d.ts.map +1 -1
  240. package/package.json +11 -11
  241. package/src/adapters/attachment.ts +68 -16
  242. package/src/adapters/{mention.ts → directive-formatter.ts} +8 -20
  243. package/src/adapters/index.ts +2 -9
  244. package/src/adapters/speech.ts +1 -16
  245. package/src/adapters/thread-history.ts +1 -8
  246. package/src/adapters/trigger.ts +1 -37
  247. package/src/index.ts +3 -24
  248. package/src/model-context/frame/host.ts +6 -5
  249. package/src/model-context/frame/provider.ts +6 -5
  250. package/src/model-context/registry.ts +6 -6
  251. package/src/model-context/tool.ts +1 -1
  252. package/src/model-context/types.ts +1 -17
  253. package/src/react/AssistantRuntimeProvider.tsx +1 -1
  254. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +3 -1
  255. package/src/react/client/DataRenderers.ts +19 -3
  256. package/src/react/client/Tools.ts +4 -3
  257. package/src/react/model-context/makeAssistantTool.ts +1 -1
  258. package/src/react/model-context/makeAssistantToolUI.ts +1 -1
  259. package/src/react/model-context/useInlineRender.ts +3 -2
  260. package/src/react/primitives/chainOfThought/ChainOfThoughtParts.tsx +1 -0
  261. package/src/react/primitives/composer/ComposerAttachments.tsx +7 -1
  262. package/src/react/primitives/message/MessageAttachments.tsx +7 -1
  263. package/src/react/primitives/message/MessageParts.tsx +94 -57
  264. package/src/react/primitives/part/PartMessages.tsx +1 -1
  265. package/src/react/primitives/thread/ThreadMessages.tsx +3 -2
  266. package/src/react/primitives/threadList/ThreadListItems.tsx +7 -1
  267. package/src/react/providers/AttachmentByIndexProvider.tsx +1 -1
  268. package/src/react/providers/ChainOfThoughtByIndicesProvider.tsx +1 -1
  269. package/src/react/providers/ChainOfThoughtPartByIndexProvider.tsx +1 -1
  270. package/src/react/providers/MessageByIndexProvider.tsx +1 -1
  271. package/src/react/providers/PartByIndexProvider.tsx +1 -1
  272. package/src/react/providers/QueueItemByIndexProvider.tsx +1 -1
  273. package/src/react/providers/SuggestionByIndexProvider.tsx +1 -1
  274. package/src/react/providers/TextMessagePartProvider.tsx +1 -1
  275. package/src/react/providers/ThreadListItemByIndexProvider.tsx +1 -1
  276. package/src/react/providers/ThreadListItemRuntimeProvider.tsx +1 -1
  277. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +47 -15
  278. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +31 -17
  279. package/src/react/runtimes/RuntimeAdapterProvider.tsx +1 -1
  280. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +3 -3
  281. package/src/react/runtimes/cloud/auiV0.ts +5 -2
  282. package/src/react/runtimes/cloud/useCloudThreadListAdapter.tsx +6 -3
  283. package/src/react/runtimes/useLocalRuntime.ts +10 -0
  284. package/src/react/runtimes/useRemoteThreadListRuntime.ts +6 -0
  285. package/src/react/runtimes/useToolInvocations.ts +2 -0
  286. package/src/react/types/MessagePartComponentTypes.ts +1 -1
  287. package/src/react/types/scopes/dataRenderers.ts +2 -0
  288. package/src/runtime/api/assistant-runtime.ts +1 -1
  289. package/src/runtime/api/attachment-runtime.ts +0 -4
  290. package/src/runtime/api/bindings.ts +1 -0
  291. package/src/runtime/api/composer-runtime.ts +4 -2
  292. package/src/runtime/api/message-runtime.ts +8 -8
  293. package/src/runtime/api/thread-list-runtime.ts +14 -5
  294. package/src/runtime/api/thread-runtime.ts +13 -12
  295. package/src/runtime/base/base-composer-runtime-core.ts +37 -16
  296. package/src/runtime/base/base-thread-runtime-core.ts +1 -1
  297. package/src/runtime/base/default-edit-composer-runtime-core.ts +35 -5
  298. package/src/runtime/interfaces/thread-list-runtime-core.ts +2 -0
  299. package/src/runtime/interfaces/thread-runtime-core.ts +7 -0
  300. package/src/runtime/internal.ts +1 -4
  301. package/src/runtime/utils/auto-status.ts +1 -1
  302. package/src/runtime/utils/chat-model-adapter.ts +1 -1
  303. package/src/runtime/utils/thread-message-like.ts +4 -1
  304. package/src/runtimes/assistant-transport/utils.ts +5 -1
  305. package/src/runtimes/external-store/external-store-adapter.ts +8 -0
  306. package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +35 -29
  307. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +4 -0
  308. package/src/runtimes/remote-thread-list/adapter/in-memory.ts +2 -2
  309. package/src/runtimes/remote-thread-list/remote-thread-state.ts +3 -0
  310. package/src/runtimes/remote-thread-list/types.ts +14 -2
  311. package/src/store/runtime-clients/attachment-runtime-client.ts +2 -2
  312. package/src/store/runtime-clients/composer-runtime-client.ts +2 -2
  313. package/src/store/runtime-clients/message-part-runtime-client.ts +2 -2
  314. package/src/store/runtime-clients/message-runtime-client.ts +2 -2
  315. package/src/store/runtime-clients/thread-list-item-runtime-client.ts +1 -1
  316. package/src/store/runtime-clients/thread-list-runtime-client.ts +4 -3
  317. package/src/store/runtime-clients/thread-runtime-client.ts +3 -3
  318. package/src/store/scopes/thread-list-item.ts +1 -0
  319. package/src/store/scopes/threads.ts +1 -0
  320. package/src/subscribable/subscribable.ts +1 -24
  321. package/src/tests/OptimisticState-list-race.test.ts +5 -9
  322. package/src/tests/RemoteThreadListThreadListRuntimeCore-custom-metadata.test.ts +123 -0
  323. package/src/tests/RemoteThreadListThreadListRuntimeCore-reload.test.ts +209 -0
  324. package/src/tests/RemoteThreadListThreadListRuntimeCore-switchToThread-dedupe.test.ts +139 -0
  325. package/src/tests/attachment.test.ts +180 -0
  326. package/src/tests/base-composer-runtime-core-addAttachment.test.ts +154 -0
  327. package/src/tests/default-edit-composer-runtime-core.test.ts +312 -0
  328. package/src/tests/{mention-formatter.test.ts → directive-formatter.test.ts} +26 -1
  329. package/src/tests/external-store-thread-list-runtime-core.test.ts +212 -0
  330. package/src/tests/get-thread-state-isRunning.test.ts +93 -0
  331. package/src/tests/remote-thread-list-isLoading.test.ts +6 -10
  332. package/src/tests/remote-thread-list-test-helpers.ts +70 -0
  333. package/src/tests/thread-list-runtime-getLoadThreadsPromise.test.ts +17 -1
  334. package/src/types/directive.ts +19 -0
  335. package/src/types/index.ts +1 -3
  336. package/src/types/message.ts +0 -12
  337. package/src/types/trigger.ts +2 -10
  338. package/src/utils/json/is-json.ts +1 -1
  339. package/dist/adapters/mention.d.ts.map +0 -1
  340. package/dist/adapters/mention.js.map +0 -1
  341. package/dist/types/mention.d.ts +0 -21
  342. package/dist/types/mention.d.ts.map +0 -1
  343. package/dist/types/mention.js +0 -2
  344. package/dist/types/mention.js.map +0 -1
  345. package/src/types/mention.ts +0 -39
@@ -6,6 +6,7 @@ import {
6
6
  type THREAD_MAPPING_ID,
7
7
  createThreadMappingId,
8
8
  } from "../runtimes/remote-thread-list/remote-thread-state";
9
+ import { deferred } from "./remote-thread-list-test-helpers";
9
10
 
10
11
  /**
11
12
  * Tests for the isLoading lifecycle of RemoteThreadListThreadListRuntimeCore.
@@ -70,16 +71,6 @@ const applyListResult = (
70
71
  };
71
72
  };
72
73
 
73
- function deferred<T>() {
74
- let resolve!: (v: T) => void;
75
- let reject!: (e: unknown) => void;
76
- const promise = new Promise<T>((res, rej) => {
77
- resolve = res;
78
- reject = rej;
79
- });
80
- return { promise, resolve, reject };
81
- }
82
-
83
74
  describe("RemoteThreadList isLoading lifecycle", () => {
84
75
  it("starts as true before any loading begins", () => {
85
76
  const state = new OptimisticState<RemoteThreadState>(INITIAL_STATE);
@@ -93,6 +84,7 @@ describe("RemoteThreadList isLoading lifecycle", () => {
93
84
  state.optimisticUpdate({
94
85
  execute: () => d.promise,
95
86
  loading: (s) => ({ ...s, isLoading: true }),
87
+ // biome-ignore lint/suspicious/noThenProperty: OptimisticState reducer pattern
96
88
  then: applyListResult,
97
89
  });
98
90
 
@@ -106,6 +98,7 @@ describe("RemoteThreadList isLoading lifecycle", () => {
106
98
  const promise = state.optimisticUpdate({
107
99
  execute: () => d.promise,
108
100
  loading: (s) => ({ ...s, isLoading: true }),
101
+ // biome-ignore lint/suspicious/noThenProperty: OptimisticState reducer pattern
109
102
  then: applyListResult,
110
103
  });
111
104
 
@@ -122,6 +115,7 @@ describe("RemoteThreadList isLoading lifecycle", () => {
122
115
  const promise = state.optimisticUpdate({
123
116
  execute: () => d.promise,
124
117
  loading: (s) => ({ ...s, isLoading: true }),
118
+ // biome-ignore lint/suspicious/noThenProperty: OptimisticState reducer pattern
125
119
  then: applyListResult,
126
120
  });
127
121
 
@@ -146,6 +140,7 @@ describe("RemoteThreadList isLoading lifecycle", () => {
146
140
  const promise = state.optimisticUpdate({
147
141
  execute: () => d.promise,
148
142
  loading: (s) => ({ ...s, isLoading: true }),
143
+ // biome-ignore lint/suspicious/noThenProperty: OptimisticState reducer pattern
149
144
  then: applyListResult,
150
145
  });
151
146
 
@@ -169,6 +164,7 @@ describe("RemoteThreadList isLoading error path", () => {
169
164
  .optimisticUpdate({
170
165
  execute: () => d.promise,
171
166
  loading: (s) => ({ ...s, isLoading: true }),
167
+ // biome-ignore lint/suspicious/noThenProperty: OptimisticState reducer pattern
172
168
  then: applyListResult,
173
169
  })
174
170
  .catch(() => {
@@ -0,0 +1,70 @@
1
+ import { vi } from "vitest";
2
+ import { RemoteThreadListThreadListRuntimeCore } from "../react/runtimes/RemoteThreadListThreadListRuntimeCore";
3
+ import type { RemoteThreadListAdapter } from "../runtimes/remote-thread-list/types";
4
+ import type { ModelContextProvider } from "../model-context/types";
5
+
6
+ export function deferred<T>() {
7
+ let resolve!: (value: T) => void;
8
+ let reject!: (reason?: unknown) => void;
9
+ const promise = new Promise<T>((res, rej) => {
10
+ resolve = res;
11
+ reject = rej;
12
+ });
13
+ return { promise, resolve, reject };
14
+ }
15
+
16
+ export const contextProvider: ModelContextProvider = {
17
+ getModelContext: () => ({}),
18
+ subscribe: () => () => {},
19
+ };
20
+
21
+ export function makeAdapter(
22
+ overrides: Partial<RemoteThreadListAdapter> = {},
23
+ ): RemoteThreadListAdapter {
24
+ return {
25
+ list: vi.fn(async () => ({ threads: [] })),
26
+ initialize: vi.fn(async (threadId: string) => ({
27
+ remoteId: threadId,
28
+ externalId: threadId,
29
+ })),
30
+ rename: vi.fn(async () => {}),
31
+ archive: vi.fn(async () => {}),
32
+ unarchive: vi.fn(async () => {}),
33
+ delete: vi.fn(async () => {}),
34
+ generateTitle: vi.fn(
35
+ async () =>
36
+ new ReadableStream({
37
+ start(c) {
38
+ c.close();
39
+ },
40
+ }) as never,
41
+ ),
42
+ fetch: vi.fn(async (id: string) => ({
43
+ status: "regular" as const,
44
+ remoteId: id,
45
+ externalId: id,
46
+ title: "Test",
47
+ })),
48
+ ...overrides,
49
+ };
50
+ }
51
+
52
+ export function createCore(
53
+ adapter: RemoteThreadListAdapter,
54
+ threadId?: string,
55
+ ): RemoteThreadListThreadListRuntimeCore {
56
+ const core = new RemoteThreadListThreadListRuntimeCore(
57
+ { adapter, runtimeHook: () => ({}) as never, threadId },
58
+ contextProvider,
59
+ );
60
+ // `startThreadRuntime` blocks until a React component attaches a runtime;
61
+ // stub it so non-React unit tests don't hang.
62
+ (
63
+ core as unknown as {
64
+ _hookManager: {
65
+ startThreadRuntime: (id: string) => Promise<unknown>;
66
+ };
67
+ }
68
+ )._hookManager.startThreadRuntime = async () => ({});
69
+ return core;
70
+ }
@@ -1,4 +1,4 @@
1
- import { describe, it, expect } from "vitest";
1
+ import { describe, it, expect, vi } from "vitest";
2
2
  import { ThreadListRuntimeImpl } from "../runtime/api/thread-list-runtime";
3
3
  import type { ThreadListRuntimeCore } from "../runtime/interfaces/thread-list-runtime-core";
4
4
  import { EMPTY_THREAD_CORE } from "../runtimes/remote-thread-list/empty-thread-core";
@@ -73,3 +73,19 @@ describe("ThreadListRuntime.getLoadThreadsPromise", () => {
73
73
  expect(resolved).toBe(true);
74
74
  });
75
75
  });
76
+
77
+ describe("ThreadListRuntime.reload", () => {
78
+ it("resolves to undefined when core omits reload", async () => {
79
+ const runtime = new ThreadListRuntimeImpl(createMockCore());
80
+ await expect(runtime.reload()).resolves.toBeUndefined();
81
+ });
82
+
83
+ it("delegates to core.reload when implemented", async () => {
84
+ const reload = vi.fn<() => Promise<void>>(() => Promise.resolve());
85
+ const core = { ...createMockCore(), reload };
86
+ const runtime = new ThreadListRuntimeImpl(core);
87
+
88
+ await runtime.reload();
89
+ expect(reload).toHaveBeenCalledTimes(1);
90
+ });
91
+ });
@@ -0,0 +1,19 @@
1
+ import type { Unstable_TriggerItem } from "./trigger";
2
+
3
+ /** Parsed segment from directive text: either literal text or a resolved directive. */
4
+ export type Unstable_DirectiveSegment =
5
+ | { readonly kind: "text"; readonly text: string }
6
+ | {
7
+ readonly kind: "mention";
8
+ readonly type: string;
9
+ readonly label: string;
10
+ readonly id: string;
11
+ };
12
+
13
+ /** Configurable formatter for directive serialization and parsing. */
14
+ export type Unstable_DirectiveFormatter = {
15
+ /** Serialize a trigger item to directive text. */
16
+ serialize(item: Unstable_TriggerItem): string;
17
+ /** Parse text into alternating text and directive segments. */
18
+ parse(text: string): readonly Unstable_DirectiveSegment[];
19
+ };
@@ -40,11 +40,9 @@ export type { Unsubscribe } from "./unsubscribe";
40
40
  export type { QuoteInfo } from "./quote";
41
41
 
42
42
  export type {
43
- Unstable_MentionItem,
44
- Unstable_MentionCategory,
45
43
  Unstable_DirectiveSegment,
46
44
  Unstable_DirectiveFormatter,
47
- } from "./mention";
45
+ } from "./directive";
48
46
 
49
47
  export type {
50
48
  Unstable_TriggerItem,
@@ -4,10 +4,6 @@ import type {
4
4
  } from "assistant-stream/utils";
5
5
  import type { CompleteAttachment } from "./attachment";
6
6
 
7
- // =============================================================================
8
- // Message Parts
9
- // =============================================================================
10
-
11
7
  export type TextMessagePart = {
12
8
  readonly type: "text";
13
9
  readonly text: string;
@@ -90,10 +86,6 @@ export type ThreadAssistantMessagePart =
90
86
  | ImageMessagePart
91
87
  | DataMessagePart;
92
88
 
93
- // =============================================================================
94
- // Message Status
95
- // =============================================================================
96
-
97
89
  export type MessagePartStatus =
98
90
  | {
99
91
  readonly type: "running";
@@ -143,10 +135,6 @@ export type MessageStatus =
143
135
  readonly error?: ReadonlyJSONValue;
144
136
  };
145
137
 
146
- // =============================================================================
147
- // Thread Messages
148
- // =============================================================================
149
-
150
138
  export type MessageTiming = {
151
139
  readonly streamStartTime: number;
152
140
  readonly firstTokenTime?: number;
@@ -1,24 +1,16 @@
1
1
  import type { ReadonlyJSONObject } from "assistant-stream/utils";
2
2
 
3
- // =============================================================================
4
- // Trigger Item (generic item for any trigger-based popover: @mention, /command)
5
- // =============================================================================
6
-
3
+ /** A selectable item displayed inside a trigger popover (e.g. mention, slash command). */
7
4
  export type Unstable_TriggerItem = {
8
5
  readonly id: string;
9
6
  readonly type: string;
10
7
  readonly label: string;
11
- readonly icon?: string | undefined;
12
8
  readonly description?: string | undefined;
13
9
  readonly metadata?: ReadonlyJSONObject | undefined;
14
10
  };
15
11
 
16
- // =============================================================================
17
- // Trigger Category (for hierarchical navigation in trigger popovers)
18
- // =============================================================================
19
-
12
+ /** A grouping of trigger items shown in a trigger popover. */
20
13
  export type Unstable_TriggerCategory = {
21
14
  readonly id: string;
22
15
  readonly label: string;
23
- readonly icon?: string | undefined;
24
16
  };
@@ -1,4 +1,4 @@
1
- import {
1
+ import type {
2
2
  ReadonlyJSONArray,
3
3
  ReadonlyJSONObject,
4
4
  ReadonlyJSONValue,
@@ -1 +0,0 @@
1
- {"version":3,"file":"mention.d.ts","sourceRoot":"","sources":["../../src/adapters/mention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGV,2BAA2B,EAC5B,4BAAyB;AAC1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,qBAAkB;AAMzD,MAAM,MAAM,uBAAuB,GAAG,uBAAuB,CAAC;AAQ9D;;;;GAIG;AACH,eAAO,MAAM,kCAAkC,EAAE,2BAmChD,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"mention.js","sourceRoot":"","sources":["../../src/adapters/mention.ts"],"names":[],"mappings":"AAaA,gFAAgF;AAChF,8BAA8B;AAC9B,gFAAgF;AAEhF,MAAM,YAAY,GAAG,6CAA6C,CAAC;AAEnE;;;;GAIG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAgC;IAC7E,SAAS,CAAC,IAA0B;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,IAAY;QAChB,MAAM,QAAQ,GAAgC,EAAE,CAAC;QACjD,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC;QAC3B,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAClD,IAAI,KAAK,CAAC,KAAK,GAAG,SAAS,EAAE,CAAC;gBAC5B,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC;iBACzC,CAAC,CAAC;YACL,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YACxB,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,KAAK,CAAC,CAAC,CAAE;gBACf,KAAK;gBACL,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK;aACtB,CAAC,CAAC;YACH,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QACrC,CAAC;QAED,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAC5B,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -1,21 +0,0 @@
1
- import type { Unstable_TriggerItem, Unstable_TriggerCategory } from "./trigger.js";
2
- export type Unstable_MentionItem = Unstable_TriggerItem;
3
- export type Unstable_MentionCategory = Unstable_TriggerCategory;
4
- /** Parsed segment from directive text */
5
- export type Unstable_DirectiveSegment = {
6
- readonly kind: "text";
7
- readonly text: string;
8
- } | {
9
- readonly kind: "mention";
10
- readonly type: string;
11
- readonly label: string;
12
- readonly id: string;
13
- };
14
- /** Configurable formatter for mention directive serialization/parsing */
15
- export type Unstable_DirectiveFormatter = {
16
- /** Serialize a mention item to directive text */
17
- serialize(item: Unstable_MentionItem): string;
18
- /** Parse text into alternating text and mention segments */
19
- parse(text: string): readonly Unstable_DirectiveSegment[];
20
- };
21
- //# sourceMappingURL=mention.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mention.d.ts","sourceRoot":"","sources":["../../src/types/mention.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,qBAAkB;AAMhF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAMxD,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,CAAC;AAMhE,yCAAyC;AACzC,MAAM,MAAM,yBAAyB,GACjC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB,CAAC;AAMN,yEAAyE;AACzE,MAAM,MAAM,2BAA2B,GAAG;IACxC,iDAAiD;IACjD,SAAS,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAAC;IAC9C,4DAA4D;IAC5D,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,yBAAyB,EAAE,CAAC;CAC3D,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=mention.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mention.js","sourceRoot":"","sources":["../../src/types/mention.ts"],"names":[],"mappings":""}
@@ -1,39 +0,0 @@
1
- import type { Unstable_TriggerItem, Unstable_TriggerCategory } from "./trigger";
2
-
3
- // =============================================================================
4
- // Mention Item — alias of the generic TriggerItem for backward compatibility
5
- // =============================================================================
6
-
7
- export type Unstable_MentionItem = Unstable_TriggerItem;
8
-
9
- // =============================================================================
10
- // Mention Category — alias of the generic TriggerCategory
11
- // =============================================================================
12
-
13
- export type Unstable_MentionCategory = Unstable_TriggerCategory;
14
-
15
- // =============================================================================
16
- // Directive Segment (parsed representation of mention directives in text)
17
- // =============================================================================
18
-
19
- /** Parsed segment from directive text */
20
- export type Unstable_DirectiveSegment =
21
- | { readonly kind: "text"; readonly text: string }
22
- | {
23
- readonly kind: "mention";
24
- readonly type: string;
25
- readonly label: string;
26
- readonly id: string;
27
- };
28
-
29
- // =============================================================================
30
- // Directive Formatter (configurable serialization/parsing for mentions)
31
- // =============================================================================
32
-
33
- /** Configurable formatter for mention directive serialization/parsing */
34
- export type Unstable_DirectiveFormatter = {
35
- /** Serialize a mention item to directive text */
36
- serialize(item: Unstable_MentionItem): string;
37
- /** Parse text into alternating text and mention segments */
38
- parse(text: string): readonly Unstable_DirectiveSegment[];
39
- };