@assistant-ui/core 0.1.0

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 (599) hide show
  1. package/dist/adapters/attachment.d.ts +36 -0
  2. package/dist/adapters/attachment.d.ts.map +1 -0
  3. package/dist/adapters/attachment.js +148 -0
  4. package/dist/adapters/attachment.js.map +1 -0
  5. package/dist/adapters/feedback.d.ts +10 -0
  6. package/dist/adapters/feedback.d.ts.map +1 -0
  7. package/dist/adapters/feedback.js +2 -0
  8. package/dist/adapters/feedback.js.map +1 -0
  9. package/dist/adapters/index.d.ts +8 -0
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters/index.js +3 -0
  12. package/dist/adapters/index.js.map +1 -0
  13. package/dist/adapters/speech.d.ts +76 -0
  14. package/dist/adapters/speech.d.ts.map +1 -0
  15. package/dist/adapters/speech.js +179 -0
  16. package/dist/adapters/speech.js.map +1 -0
  17. package/dist/adapters/suggestion.d.ts +10 -0
  18. package/dist/adapters/suggestion.d.ts.map +1 -0
  19. package/dist/adapters/suggestion.js +2 -0
  20. package/dist/adapters/suggestion.js.map +1 -0
  21. package/dist/adapters/thread-history.d.ts +43 -0
  22. package/dist/adapters/thread-history.d.ts.map +1 -0
  23. package/dist/adapters/thread-history.js +2 -0
  24. package/dist/adapters/thread-history.js.map +1 -0
  25. package/dist/index.d.ts +6 -0
  26. package/dist/index.d.ts.map +1 -0
  27. package/dist/index.js +7 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/internal.d.ts +5 -0
  30. package/dist/internal.d.ts.map +1 -0
  31. package/dist/internal.js +7 -0
  32. package/dist/internal.js.map +1 -0
  33. package/dist/model-context/frame/host.d.ts +21 -0
  34. package/dist/model-context/frame/host.d.ts.map +1 -0
  35. package/dist/model-context/frame/host.js +141 -0
  36. package/dist/model-context/frame/host.js.map +1 -0
  37. package/dist/model-context/frame/index.d.ts +5 -0
  38. package/dist/model-context/frame/index.d.ts.map +1 -0
  39. package/dist/model-context/frame/index.js +4 -0
  40. package/dist/model-context/frame/index.js.map +1 -0
  41. package/dist/model-context/frame/provider.d.ts +18 -0
  42. package/dist/model-context/frame/provider.d.ts.map +1 -0
  43. package/dist/model-context/frame/provider.js +133 -0
  44. package/dist/model-context/frame/provider.js.map +1 -0
  45. package/dist/model-context/frame/types.d.ts +29 -0
  46. package/dist/model-context/frame/types.d.ts.map +1 -0
  47. package/dist/model-context/frame/types.js +2 -0
  48. package/dist/model-context/frame/types.js.map +1 -0
  49. package/dist/model-context/index.d.ts +8 -0
  50. package/dist/model-context/index.d.ts.map +1 -0
  51. package/dist/model-context/index.js +9 -0
  52. package/dist/model-context/index.js.map +1 -0
  53. package/dist/model-context/registry-handles.d.ts +13 -0
  54. package/dist/model-context/registry-handles.d.ts.map +1 -0
  55. package/dist/model-context/registry-handles.js +2 -0
  56. package/dist/model-context/registry-handles.js.map +1 -0
  57. package/dist/model-context/registry.d.ts +17 -0
  58. package/dist/model-context/registry.d.ts.map +1 -0
  59. package/dist/model-context/registry.js +108 -0
  60. package/dist/model-context/registry.js.map +1 -0
  61. package/dist/model-context/tool.d.ts +3 -0
  62. package/dist/model-context/tool.d.ts.map +1 -0
  63. package/dist/model-context/tool.js +5 -0
  64. package/dist/model-context/tool.js.map +1 -0
  65. package/dist/model-context/types.d.ts +37 -0
  66. package/dist/model-context/types.d.ts.map +1 -0
  67. package/dist/model-context/types.js +43 -0
  68. package/dist/model-context/types.js.map +1 -0
  69. package/dist/runtime/api/assistant-runtime.d.ts +64 -0
  70. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -0
  71. package/dist/runtime/api/assistant-runtime.js +46 -0
  72. package/dist/runtime/api/assistant-runtime.js.map +1 -0
  73. package/dist/runtime/api/attachment-runtime.d.ts +63 -0
  74. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -0
  75. package/dist/runtime/api/attachment-runtime.js +56 -0
  76. package/dist/runtime/api/attachment-runtime.js.map +1 -0
  77. package/dist/runtime/api/bindings.d.ts +31 -0
  78. package/dist/runtime/api/bindings.d.ts.map +1 -0
  79. package/dist/runtime/api/bindings.js +2 -0
  80. package/dist/runtime/api/bindings.js.map +1 -0
  81. package/dist/runtime/api/composer-runtime.d.ts +181 -0
  82. package/dist/runtime/api/composer-runtime.d.ts.map +1 -0
  83. package/dist/runtime/api/composer-runtime.js +247 -0
  84. package/dist/runtime/api/composer-runtime.js.map +1 -0
  85. package/dist/runtime/api/message-part-runtime.d.ts +31 -0
  86. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -0
  87. package/dist/runtime/api/message-part-runtime.js +67 -0
  88. package/dist/runtime/api/message-part-runtime.js.map +1 -0
  89. package/dist/runtime/api/message-runtime.d.ts +91 -0
  90. package/dist/runtime/api/message-runtime.d.ts.map +1 -0
  91. package/dist/runtime/api/message-runtime.js +199 -0
  92. package/dist/runtime/api/message-runtime.js.map +1 -0
  93. package/dist/runtime/api/paths.d.ts +64 -0
  94. package/dist/runtime/api/paths.d.ts.map +1 -0
  95. package/dist/runtime/api/paths.js +2 -0
  96. package/dist/runtime/api/paths.js.map +1 -0
  97. package/dist/runtime/api/thread-list-item-runtime.d.ts +50 -0
  98. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -0
  99. package/dist/runtime/api/thread-list-item-runtime.js +85 -0
  100. package/dist/runtime/api/thread-list-item-runtime.js.map +1 -0
  101. package/dist/runtime/api/thread-list-runtime.d.ts +44 -0
  102. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -0
  103. package/dist/runtime/api/thread-list-runtime.js +136 -0
  104. package/dist/runtime/api/thread-list-runtime.js.map +1 -0
  105. package/dist/runtime/api/thread-runtime.d.ts +272 -0
  106. package/dist/runtime/api/thread-runtime.d.ts.map +1 -0
  107. package/dist/runtime/api/thread-runtime.js +240 -0
  108. package/dist/runtime/api/thread-runtime.js.map +1 -0
  109. package/dist/runtime/base/base-assistant-runtime-core.d.ts +12 -0
  110. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -0
  111. package/dist/runtime/base/base-assistant-runtime-core.js +11 -0
  112. package/dist/runtime/base/base-assistant-runtime-core.js.map +1 -0
  113. package/dist/runtime/base/base-composer-runtime-core.d.ts +55 -0
  114. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -0
  115. package/dist/runtime/base/base-composer-runtime-core.js +320 -0
  116. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -0
  117. package/dist/runtime/base/base-thread-runtime-core.d.ts +67 -0
  118. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -0
  119. package/dist/runtime/base/base-thread-runtime-core.js +157 -0
  120. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -0
  121. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +28 -0
  122. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -0
  123. package/dist/runtime/base/default-edit-composer-runtime-core.js +49 -0
  124. package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -0
  125. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +24 -0
  126. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -0
  127. package/dist/runtime/base/default-thread-composer-runtime-core.js +41 -0
  128. package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -0
  129. package/dist/runtime/index.d.ts +20 -0
  130. package/dist/runtime/index.d.ts.map +1 -0
  131. package/dist/runtime/index.js +7 -0
  132. package/dist/runtime/index.js.map +1 -0
  133. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +10 -0
  134. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -0
  135. package/dist/runtime/interfaces/assistant-runtime-core.js +2 -0
  136. package/dist/runtime/interfaces/assistant-runtime-core.js.map +1 -0
  137. package/dist/runtime/interfaces/composer-runtime-core.d.ts +38 -0
  138. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -0
  139. package/dist/runtime/interfaces/composer-runtime-core.js +2 -0
  140. package/dist/runtime/interfaces/composer-runtime-core.js.map +1 -0
  141. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +37 -0
  142. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -0
  143. package/dist/runtime/interfaces/thread-list-runtime-core.js +2 -0
  144. package/dist/runtime/interfaces/thread-list-runtime-core.js.map +1 -0
  145. package/dist/runtime/interfaces/thread-runtime-core.d.ts +97 -0
  146. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -0
  147. package/dist/runtime/interfaces/thread-runtime-core.js +2 -0
  148. package/dist/runtime/interfaces/thread-runtime-core.js.map +1 -0
  149. package/dist/runtime/internal.d.ts +23 -0
  150. package/dist/runtime/internal.d.ts.map +1 -0
  151. package/dist/runtime/internal.js +25 -0
  152. package/dist/runtime/internal.js.map +1 -0
  153. package/dist/runtime/utils/auto-status.d.ts +5 -0
  154. package/dist/runtime/utils/auto-status.d.ts.map +1 -0
  155. package/dist/runtime/utils/auto-status.js +32 -0
  156. package/dist/runtime/utils/auto-status.js.map +1 -0
  157. package/dist/runtime/utils/chat-model-adapter.d.ts +40 -0
  158. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -0
  159. package/dist/runtime/utils/chat-model-adapter.js +2 -0
  160. package/dist/runtime/utils/chat-model-adapter.js.map +1 -0
  161. package/dist/runtime/utils/external-store-message.d.ts +10 -0
  162. package/dist/runtime/utils/external-store-message.d.ts.map +1 -0
  163. package/dist/runtime/utils/external-store-message.js +22 -0
  164. package/dist/runtime/utils/external-store-message.js.map +1 -0
  165. package/dist/runtime/utils/message-repository.d.ts +43 -0
  166. package/dist/runtime/utils/message-repository.d.ts.map +1 -0
  167. package/dist/runtime/utils/message-repository.js +257 -0
  168. package/dist/runtime/utils/message-repository.js.map +1 -0
  169. package/dist/runtime/utils/thread-message-like.d.ts +34 -0
  170. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -0
  171. package/dist/runtime/utils/thread-message-like.js +129 -0
  172. package/dist/runtime/utils/thread-message-like.js.map +1 -0
  173. package/dist/runtimes/assistant-transport/utils.d.ts +11 -0
  174. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -0
  175. package/dist/runtimes/assistant-transport/utils.js +20 -0
  176. package/dist/runtimes/assistant-transport/utils.js.map +1 -0
  177. package/dist/runtimes/external-store/external-store-adapter.d.ts +81 -0
  178. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -0
  179. package/dist/runtimes/external-store/external-store-adapter.js +2 -0
  180. package/dist/runtimes/external-store/external-store-adapter.js.map +1 -0
  181. package/dist/runtimes/external-store/external-store-runtime-core.d.ts +9 -0
  182. package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -0
  183. package/dist/runtimes/external-store/external-store-runtime-core.js +19 -0
  184. package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -0
  185. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +42 -0
  186. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -0
  187. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +174 -0
  188. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -0
  189. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +47 -0
  190. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -0
  191. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +260 -0
  192. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -0
  193. package/dist/runtimes/external-store/index.d.ts +8 -0
  194. package/dist/runtimes/external-store/index.d.ts.map +1 -0
  195. package/dist/runtimes/external-store/index.js +5 -0
  196. package/dist/runtimes/external-store/index.js.map +1 -0
  197. package/dist/runtimes/external-store/thread-message-converter.d.ts +7 -0
  198. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -0
  199. package/dist/runtimes/external-store/thread-message-converter.js +12 -0
  200. package/dist/runtimes/external-store/thread-message-converter.js.map +1 -0
  201. package/dist/runtimes/index.d.ts +6 -0
  202. package/dist/runtimes/index.d.ts.map +1 -0
  203. package/dist/runtimes/index.js +4 -0
  204. package/dist/runtimes/index.js.map +1 -0
  205. package/dist/runtimes/internal.d.ts +18 -0
  206. package/dist/runtimes/internal.d.ts.map +1 -0
  207. package/dist/runtimes/internal.js +15 -0
  208. package/dist/runtimes/internal.js.map +1 -0
  209. package/dist/runtimes/local/index.d.ts +7 -0
  210. package/dist/runtimes/local/index.d.ts.map +1 -0
  211. package/dist/runtimes/local/index.js +5 -0
  212. package/dist/runtimes/local/index.js.map +1 -0
  213. package/dist/runtimes/local/local-runtime-core.d.ts +11 -0
  214. package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -0
  215. package/dist/runtimes/local/local-runtime-core.js +22 -0
  216. package/dist/runtimes/local/local-runtime-core.js.map +1 -0
  217. package/dist/runtimes/local/local-runtime-options.d.ts +23 -0
  218. package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -0
  219. package/dist/runtimes/local/local-runtime-options.js +2 -0
  220. package/dist/runtimes/local/local-runtime-options.js.map +1 -0
  221. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +46 -0
  222. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -0
  223. package/dist/runtimes/local/local-thread-list-runtime-core.js +87 -0
  224. package/dist/runtimes/local/local-thread-list-runtime-core.js.map +1 -0
  225. package/dist/runtimes/local/local-thread-runtime-core.d.ts +59 -0
  226. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -0
  227. package/dist/runtimes/local/local-thread-runtime-core.js +423 -0
  228. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -0
  229. package/dist/runtimes/local/should-continue.d.ts +3 -0
  230. package/dist/runtimes/local/should-continue.d.ts.map +1 -0
  231. package/dist/runtimes/local/should-continue.js +14 -0
  232. package/dist/runtimes/local/should-continue.js.map +1 -0
  233. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +13 -0
  234. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -0
  235. package/dist/runtimes/remote-thread-list/adapter/in-memory.js +29 -0
  236. package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -0
  237. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +3 -0
  238. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -0
  239. package/dist/runtimes/remote-thread-list/empty-thread-core.js +146 -0
  240. package/dist/runtimes/remote-thread-list/empty-thread-core.js.map +1 -0
  241. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +23 -0
  242. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -0
  243. package/dist/runtimes/remote-thread-list/optimistic-state.js +57 -0
  244. package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -0
  245. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +37 -0
  246. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -0
  247. package/dist/runtimes/remote-thread-list/remote-thread-state.js +62 -0
  248. package/dist/runtimes/remote-thread-list/remote-thread-state.js.map +1 -0
  249. package/dist/runtimes/remote-thread-list/types.d.ts +38 -0
  250. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -0
  251. package/dist/runtimes/remote-thread-list/types.js +2 -0
  252. package/dist/runtimes/remote-thread-list/types.js.map +1 -0
  253. package/dist/store/clients/chain-of-thought-client.d.ts +15 -0
  254. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -0
  255. package/dist/store/clients/chain-of-thought-client.js +18 -0
  256. package/dist/store/clients/chain-of-thought-client.js.map +1 -0
  257. package/dist/store/clients/index.d.ts +6 -0
  258. package/dist/store/clients/index.d.ts.map +1 -0
  259. package/dist/store/clients/index.js +6 -0
  260. package/dist/store/clients/index.js.map +1 -0
  261. package/dist/store/clients/model-context-client.d.ts +3 -0
  262. package/dist/store/clients/model-context-client.d.ts.map +1 -0
  263. package/dist/store/clients/model-context-client.js +14 -0
  264. package/dist/store/clients/model-context-client.js.map +1 -0
  265. package/dist/store/clients/no-op-composer-client.d.ts +7 -0
  266. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -0
  267. package/dist/store/clients/no-op-composer-client.js +61 -0
  268. package/dist/store/clients/no-op-composer-client.js.map +1 -0
  269. package/dist/store/clients/suggestions.d.ts +11 -0
  270. package/dist/store/clients/suggestions.d.ts.map +1 -0
  271. package/dist/store/clients/suggestions.js +37 -0
  272. package/dist/store/clients/suggestions.js.map +1 -0
  273. package/dist/store/clients/thread-message-client.d.ts +11 -0
  274. package/dist/store/clients/thread-message-client.d.ts.map +1 -0
  275. package/dist/store/clients/thread-message-client.js +112 -0
  276. package/dist/store/clients/thread-message-client.js.map +1 -0
  277. package/dist/store/index.d.ts +14 -0
  278. package/dist/store/index.d.ts.map +1 -0
  279. package/dist/store/index.js +14 -0
  280. package/dist/store/index.js.map +1 -0
  281. package/dist/store/internal.d.ts +11 -0
  282. package/dist/store/internal.d.ts.map +1 -0
  283. package/dist/store/internal.js +12 -0
  284. package/dist/store/internal.js.map +1 -0
  285. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +8 -0
  286. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -0
  287. package/dist/store/runtime-clients/attachment-runtime-client.js +11 -0
  288. package/dist/store/runtime-clients/attachment-runtime-client.js.map +1 -0
  289. package/dist/store/runtime-clients/composer-runtime-client.d.ts +13 -0
  290. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -0
  291. package/dist/store/runtime-clients/composer-runtime-client.js +83 -0
  292. package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -0
  293. package/dist/store/runtime-clients/index.d.ts +8 -0
  294. package/dist/store/runtime-clients/index.d.ts.map +1 -0
  295. package/dist/store/runtime-clients/index.js +8 -0
  296. package/dist/store/runtime-clients/index.js.map +1 -0
  297. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +8 -0
  298. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -0
  299. package/dist/store/runtime-clients/message-part-runtime-client.js +12 -0
  300. package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -0
  301. package/dist/store/runtime-clients/message-runtime-client.d.ts +11 -0
  302. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -0
  303. package/dist/store/runtime-clients/message-runtime-client.js +78 -0
  304. package/dist/store/runtime-clients/message-runtime-client.js.map +1 -0
  305. package/dist/store/runtime-clients/tap-subscribable.d.ts +3 -0
  306. package/dist/store/runtime-clients/tap-subscribable.d.ts.map +1 -0
  307. package/dist/store/runtime-clients/tap-subscribable.js +12 -0
  308. package/dist/store/runtime-clients/tap-subscribable.js.map +1 -0
  309. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +8 -0
  310. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -0
  311. package/dist/store/runtime-clients/thread-list-item-runtime-client.js +41 -0
  312. package/dist/store/runtime-clients/thread-list-item-runtime-client.js.map +1 -0
  313. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +10 -0
  314. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -0
  315. package/dist/store/runtime-clients/thread-list-runtime-client.js +54 -0
  316. package/dist/store/runtime-clients/thread-list-runtime-client.js.map +1 -0
  317. package/dist/store/runtime-clients/thread-runtime-client.d.ts +8 -0
  318. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -0
  319. package/dist/store/runtime-clients/thread-runtime-client.js +91 -0
  320. package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -0
  321. package/dist/store/scopes/attachment.d.ts +23 -0
  322. package/dist/store/scopes/attachment.d.ts.map +1 -0
  323. package/dist/store/scopes/attachment.js +2 -0
  324. package/dist/store/scopes/attachment.js.map +1 -0
  325. package/dist/store/scopes/chain-of-thought.d.ts +39 -0
  326. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -0
  327. package/dist/store/scopes/chain-of-thought.js +2 -0
  328. package/dist/store/scopes/chain-of-thought.js.map +1 -0
  329. package/dist/store/scopes/composer.d.ts +75 -0
  330. package/dist/store/scopes/composer.d.ts.map +1 -0
  331. package/dist/store/scopes/composer.js +2 -0
  332. package/dist/store/scopes/composer.js.map +1 -0
  333. package/dist/store/scopes/index.d.ts +12 -0
  334. package/dist/store/scopes/index.d.ts.map +1 -0
  335. package/dist/store/scopes/index.js +2 -0
  336. package/dist/store/scopes/index.js.map +1 -0
  337. package/dist/store/scopes/message.d.ts +86 -0
  338. package/dist/store/scopes/message.d.ts.map +1 -0
  339. package/dist/store/scopes/message.js +2 -0
  340. package/dist/store/scopes/message.js.map +1 -0
  341. package/dist/store/scopes/model-context.d.ts +11 -0
  342. package/dist/store/scopes/model-context.d.ts.map +1 -0
  343. package/dist/store/scopes/model-context.js +2 -0
  344. package/dist/store/scopes/model-context.js.map +1 -0
  345. package/dist/store/scopes/part.d.ts +44 -0
  346. package/dist/store/scopes/part.d.ts.map +1 -0
  347. package/dist/store/scopes/part.js +2 -0
  348. package/dist/store/scopes/part.js.map +1 -0
  349. package/dist/store/scopes/suggestion.d.ts +19 -0
  350. package/dist/store/scopes/suggestion.d.ts.map +1 -0
  351. package/dist/store/scopes/suggestion.js +2 -0
  352. package/dist/store/scopes/suggestion.js.map +1 -0
  353. package/dist/store/scopes/suggestions.d.ts +19 -0
  354. package/dist/store/scopes/suggestions.d.ts.map +1 -0
  355. package/dist/store/scopes/suggestions.js +2 -0
  356. package/dist/store/scopes/suggestions.js.map +1 -0
  357. package/dist/store/scopes/thread-list-item.d.ts +50 -0
  358. package/dist/store/scopes/thread-list-item.d.ts.map +1 -0
  359. package/dist/store/scopes/thread-list-item.js +2 -0
  360. package/dist/store/scopes/thread-list-item.js.map +1 -0
  361. package/dist/store/scopes/thread.d.ts +135 -0
  362. package/dist/store/scopes/thread.d.ts.map +1 -0
  363. package/dist/store/scopes/thread.js +2 -0
  364. package/dist/store/scopes/thread.js.map +1 -0
  365. package/dist/store/scopes/threads.d.ts +29 -0
  366. package/dist/store/scopes/threads.d.ts.map +1 -0
  367. package/dist/store/scopes/threads.js +2 -0
  368. package/dist/store/scopes/threads.js.map +1 -0
  369. package/dist/store/types/client.d.ts +137 -0
  370. package/dist/store/types/client.d.ts.map +1 -0
  371. package/dist/store/types/client.js +2 -0
  372. package/dist/store/types/client.js.map +1 -0
  373. package/dist/store/types/events.d.ts +33 -0
  374. package/dist/store/types/events.d.ts.map +1 -0
  375. package/dist/store/types/events.js +8 -0
  376. package/dist/store/types/events.js.map +1 -0
  377. package/dist/store/types/index.d.ts +3 -0
  378. package/dist/store/types/index.d.ts.map +1 -0
  379. package/dist/store/types/index.js +2 -0
  380. package/dist/store/types/index.js.map +1 -0
  381. package/dist/store/utils/attach-transform-scopes.d.ts +11 -0
  382. package/dist/store/utils/attach-transform-scopes.d.ts.map +1 -0
  383. package/dist/store/utils/attach-transform-scopes.js +12 -0
  384. package/dist/store/utils/attach-transform-scopes.js.map +1 -0
  385. package/dist/store/utils/base-proxy-handler.d.ts +23 -0
  386. package/dist/store/utils/base-proxy-handler.d.ts.map +1 -0
  387. package/dist/store/utils/base-proxy-handler.js +46 -0
  388. package/dist/store/utils/base-proxy-handler.js.map +1 -0
  389. package/dist/store/utils/derived.d.ts +34 -0
  390. package/dist/store/utils/derived.d.ts.map +1 -0
  391. package/dist/store/utils/derived.js +24 -0
  392. package/dist/store/utils/derived.js.map +1 -0
  393. package/dist/store/utils/index.d.ts +7 -0
  394. package/dist/store/utils/index.d.ts.map +1 -0
  395. package/dist/store/utils/index.js +7 -0
  396. package/dist/store/utils/index.js.map +1 -0
  397. package/dist/store/utils/notification-manager.d.ts +11 -0
  398. package/dist/store/utils/notification-manager.d.ts.map +1 -0
  399. package/dist/store/utils/notification-manager.js +84 -0
  400. package/dist/store/utils/notification-manager.js.map +1 -0
  401. package/dist/store/utils/proxied-assistant-state.d.ts +8 -0
  402. package/dist/store/utils/proxied-assistant-state.d.ts.map +1 -0
  403. package/dist/store/utils/proxied-assistant-state.js +33 -0
  404. package/dist/store/utils/proxied-assistant-state.js.map +1 -0
  405. package/dist/store/utils/split-clients.d.ts +10 -0
  406. package/dist/store/utils/split-clients.d.ts.map +1 -0
  407. package/dist/store/utils/split-clients.js +53 -0
  408. package/dist/store/utils/split-clients.js.map +1 -0
  409. package/dist/store/utils/tap-assistant-context.d.ts +19 -0
  410. package/dist/store/utils/tap-assistant-context.d.ts.map +1 -0
  411. package/dist/store/utils/tap-assistant-context.js +23 -0
  412. package/dist/store/utils/tap-assistant-context.js.map +1 -0
  413. package/dist/store/utils/tap-client-list.d.ts +28 -0
  414. package/dist/store/utils/tap-client-list.d.ts.map +1 -0
  415. package/dist/store/utils/tap-client-list.js +68 -0
  416. package/dist/store/utils/tap-client-list.js.map +1 -0
  417. package/dist/store/utils/tap-client-lookup.d.ts +15 -0
  418. package/dist/store/utils/tap-client-lookup.d.ts.map +1 -0
  419. package/dist/store/utils/tap-client-lookup.js +42 -0
  420. package/dist/store/utils/tap-client-lookup.js.map +1 -0
  421. package/dist/store/utils/tap-client-resource.d.ts +13 -0
  422. package/dist/store/utils/tap-client-resource.d.ts.map +1 -0
  423. package/dist/store/utils/tap-client-resource.js +114 -0
  424. package/dist/store/utils/tap-client-resource.js.map +1 -0
  425. package/dist/store/utils/tap-client-stack-context.d.ts +23 -0
  426. package/dist/store/utils/tap-client-stack-context.d.ts.map +1 -0
  427. package/dist/store/utils/tap-client-stack-context.js +28 -0
  428. package/dist/store/utils/tap-client-stack-context.js.map +1 -0
  429. package/dist/store/utils/wrapper-resource.d.ts +3 -0
  430. package/dist/store/utils/wrapper-resource.d.ts.map +1 -0
  431. package/dist/store/utils/wrapper-resource.js +11 -0
  432. package/dist/store/utils/wrapper-resource.js.map +1 -0
  433. package/dist/subscribable/index.d.ts +3 -0
  434. package/dist/subscribable/index.d.ts.map +1 -0
  435. package/dist/subscribable/index.js +8 -0
  436. package/dist/subscribable/index.js.map +1 -0
  437. package/dist/subscribable/subscribable.d.ts +68 -0
  438. package/dist/subscribable/subscribable.d.ts.map +1 -0
  439. package/dist/subscribable/subscribable.js +237 -0
  440. package/dist/subscribable/subscribable.js.map +1 -0
  441. package/dist/types/attachment.d.ts +35 -0
  442. package/dist/types/attachment.d.ts.map +1 -0
  443. package/dist/types/attachment.js +2 -0
  444. package/dist/types/attachment.js.map +1 -0
  445. package/dist/types/index.d.ts +5 -0
  446. package/dist/types/index.d.ts.map +1 -0
  447. package/dist/types/index.js +2 -0
  448. package/dist/types/index.js.map +1 -0
  449. package/dist/types/message.d.ts +179 -0
  450. package/dist/types/message.d.ts.map +1 -0
  451. package/dist/types/message.js +2 -0
  452. package/dist/types/message.js.map +1 -0
  453. package/dist/types/quote.d.ts +5 -0
  454. package/dist/types/quote.d.ts.map +1 -0
  455. package/dist/types/quote.js +2 -0
  456. package/dist/types/quote.js.map +1 -0
  457. package/dist/types/unsubscribe.d.ts +2 -0
  458. package/dist/types/unsubscribe.d.ts.map +1 -0
  459. package/dist/types/unsubscribe.js +2 -0
  460. package/dist/types/unsubscribe.js.map +1 -0
  461. package/dist/utils/composite-context-provider.d.ts +10 -0
  462. package/dist/utils/composite-context-provider.d.ts.map +1 -0
  463. package/dist/utils/composite-context-provider.js +29 -0
  464. package/dist/utils/composite-context-provider.js.map +1 -0
  465. package/dist/utils/id.d.ts +6 -0
  466. package/dist/utils/id.d.ts.map +1 -0
  467. package/dist/utils/id.js +9 -0
  468. package/dist/utils/id.js.map +1 -0
  469. package/dist/utils/index.d.ts +4 -0
  470. package/dist/utils/index.d.ts.map +1 -0
  471. package/dist/utils/index.js +7 -0
  472. package/dist/utils/index.js.map +1 -0
  473. package/dist/utils/text.d.ts +3 -0
  474. package/dist/utils/text.d.ts.map +1 -0
  475. package/dist/utils/text.js +5 -0
  476. package/dist/utils/text.js.map +1 -0
  477. package/package.json +85 -0
  478. package/src/adapters/attachment.ts +209 -0
  479. package/src/adapters/feedback.ts +10 -0
  480. package/src/adapters/index.ts +30 -0
  481. package/src/adapters/speech.ts +338 -0
  482. package/src/adapters/suggestion.ts +14 -0
  483. package/src/adapters/thread-history.ts +72 -0
  484. package/src/index.ts +7 -0
  485. package/src/internal.ts +7 -0
  486. package/src/model-context/frame/host.ts +195 -0
  487. package/src/model-context/frame/index.ts +10 -0
  488. package/src/model-context/frame/provider.ts +193 -0
  489. package/src/model-context/frame/types.ts +40 -0
  490. package/src/model-context/index.ts +35 -0
  491. package/src/model-context/registry-handles.ts +18 -0
  492. package/src/model-context/registry.ts +159 -0
  493. package/src/model-context/tool.ts +9 -0
  494. package/src/model-context/types.ts +104 -0
  495. package/src/runtime/api/assistant-runtime.ts +115 -0
  496. package/src/runtime/api/attachment-runtime.ts +119 -0
  497. package/src/runtime/api/bindings.ts +49 -0
  498. package/src/runtime/api/composer-runtime.ts +505 -0
  499. package/src/runtime/api/message-part-runtime.ts +108 -0
  500. package/src/runtime/api/message-runtime.ts +335 -0
  501. package/src/runtime/api/paths.ts +61 -0
  502. package/src/runtime/api/thread-list-item-runtime.ts +145 -0
  503. package/src/runtime/api/thread-list-runtime.ts +227 -0
  504. package/src/runtime/api/thread-runtime.ts +568 -0
  505. package/src/runtime/base/base-assistant-runtime-core.ts +20 -0
  506. package/src/runtime/base/base-composer-runtime-core.ts +418 -0
  507. package/src/runtime/base/base-thread-runtime-core.ts +234 -0
  508. package/src/runtime/base/default-edit-composer-runtime-core.ts +71 -0
  509. package/src/runtime/base/default-thread-composer-runtime-core.ts +65 -0
  510. package/src/runtime/index.ts +108 -0
  511. package/src/runtime/interfaces/assistant-runtime-core.ts +12 -0
  512. package/src/runtime/interfaces/composer-runtime-core.ts +64 -0
  513. package/src/runtime/interfaces/thread-list-runtime-core.ts +49 -0
  514. package/src/runtime/interfaces/thread-runtime-core.ts +142 -0
  515. package/src/runtime/internal.ts +64 -0
  516. package/src/runtime/utils/auto-status.ts +67 -0
  517. package/src/runtime/utils/chat-model-adapter.ts +66 -0
  518. package/src/runtime/utils/external-store-message.ts +37 -0
  519. package/src/runtime/utils/message-repository.ts +390 -0
  520. package/src/runtime/utils/thread-message-like.ts +225 -0
  521. package/src/runtimes/assistant-transport/utils.ts +37 -0
  522. package/src/runtimes/external-store/external-store-adapter.ts +111 -0
  523. package/src/runtimes/external-store/external-store-runtime-core.ts +26 -0
  524. package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +235 -0
  525. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +368 -0
  526. package/src/runtimes/external-store/index.ts +15 -0
  527. package/src/runtimes/external-store/thread-message-converter.ts +23 -0
  528. package/src/runtimes/index.ts +28 -0
  529. package/src/runtimes/internal.ts +36 -0
  530. package/src/runtimes/local/index.ts +6 -0
  531. package/src/runtimes/local/local-runtime-core.ts +32 -0
  532. package/src/runtimes/local/local-runtime-options.ts +27 -0
  533. package/src/runtimes/local/local-thread-list-runtime-core.ts +116 -0
  534. package/src/runtimes/local/local-thread-runtime-core.ts +534 -0
  535. package/src/runtimes/local/should-continue.ts +26 -0
  536. package/src/runtimes/remote-thread-list/adapter/in-memory.ts +43 -0
  537. package/src/runtimes/remote-thread-list/empty-thread-core.ts +200 -0
  538. package/src/runtimes/remote-thread-list/optimistic-state.ts +89 -0
  539. package/src/runtimes/remote-thread-list/remote-thread-state.ts +123 -0
  540. package/src/runtimes/remote-thread-list/types.ts +48 -0
  541. package/src/store/clients/chain-of-thought-client.ts +40 -0
  542. package/src/store/clients/index.ts +8 -0
  543. package/src/store/clients/model-context-client.ts +20 -0
  544. package/src/store/clients/no-op-composer-client.ts +66 -0
  545. package/src/store/clients/suggestions.ts +69 -0
  546. package/src/store/clients/thread-message-client.ts +170 -0
  547. package/src/store/index.ts +44 -0
  548. package/src/store/internal.ts +32 -0
  549. package/src/store/runtime-clients/attachment-runtime-client.ts +16 -0
  550. package/src/store/runtime-clients/composer-runtime-client.ts +131 -0
  551. package/src/store/runtime-clients/index.ts +7 -0
  552. package/src/store/runtime-clients/message-part-runtime-client.ts +17 -0
  553. package/src/store/runtime-clients/message-runtime-client.ts +141 -0
  554. package/src/store/runtime-clients/tap-subscribable.ts +16 -0
  555. package/src/store/runtime-clients/thread-list-item-runtime-client.ts +53 -0
  556. package/src/store/runtime-clients/thread-list-runtime-client.ts +86 -0
  557. package/src/store/runtime-clients/thread-runtime-client.ts +141 -0
  558. package/src/store/scopes/attachment.ts +20 -0
  559. package/src/store/scopes/chain-of-thought.ts +38 -0
  560. package/src/store/scopes/composer.ts +80 -0
  561. package/src/store/scopes/index.ts +68 -0
  562. package/src/store/scopes/message.ts +75 -0
  563. package/src/store/scopes/model-context.ts +13 -0
  564. package/src/store/scopes/part.ts +47 -0
  565. package/src/store/scopes/suggestion.ts +19 -0
  566. package/src/store/scopes/suggestions.ts +20 -0
  567. package/src/store/scopes/thread-list-item.ts +44 -0
  568. package/src/store/scopes/thread.ts +135 -0
  569. package/src/store/scopes/threads.ts +34 -0
  570. package/src/store/types/client.ts +203 -0
  571. package/src/store/types/events.ts +77 -0
  572. package/src/store/types/index.ts +23 -0
  573. package/src/store/utils/attach-transform-scopes.ts +38 -0
  574. package/src/store/utils/base-proxy-handler.ts +50 -0
  575. package/src/store/utils/derived.ts +46 -0
  576. package/src/store/utils/index.ts +28 -0
  577. package/src/store/utils/notification-manager.ts +114 -0
  578. package/src/store/utils/proxied-assistant-state.ts +55 -0
  579. package/src/store/utils/split-clients.ts +82 -0
  580. package/src/store/utils/tap-assistant-context.ts +58 -0
  581. package/src/store/utils/tap-client-list.ts +121 -0
  582. package/src/store/utils/tap-client-lookup.ts +79 -0
  583. package/src/store/utils/tap-client-resource.ts +187 -0
  584. package/src/store/utils/tap-client-stack-context.ts +51 -0
  585. package/src/store/utils/wrapper-resource.ts +17 -0
  586. package/src/subscribable/index.ts +21 -0
  587. package/src/subscribable/subscribable.ts +317 -0
  588. package/src/tests/BaseSubscribable.test.ts +54 -0
  589. package/src/tests/MessageRepository.test.ts +607 -0
  590. package/src/tests/OptimisticState-delete-crash.test.ts +206 -0
  591. package/src/types/attachment.ts +45 -0
  592. package/src/types/index.ts +39 -0
  593. package/src/types/message.ts +248 -0
  594. package/src/types/quote.ts +4 -0
  595. package/src/types/unsubscribe.ts +1 -0
  596. package/src/utils/composite-context-provider.ts +36 -0
  597. package/src/utils/id.ts +14 -0
  598. package/src/utils/index.ts +14 -0
  599. package/src/utils/text.ts +11 -0
@@ -0,0 +1,368 @@
1
+ import type { AppendMessage, ThreadMessage } from "../../types";
2
+ import type {
3
+ AddToolResultOptions,
4
+ ResumeRunConfig,
5
+ ResumeToolCallOptions,
6
+ StartRunConfig,
7
+ ThreadSuggestion,
8
+ } from "../../runtime/interfaces/thread-runtime-core";
9
+
10
+ import type { ExternalStoreAdapter } from "./external-store-adapter";
11
+ import {
12
+ getExternalStoreMessage,
13
+ symbolInnerMessage,
14
+ } from "../../runtime/utils/external-store-message";
15
+ import { ThreadMessageConverter } from "./thread-message-converter";
16
+ import { getAutoStatus, isAutoStatus } from "../../runtime/utils/auto-status";
17
+ import {
18
+ fromThreadMessageLike,
19
+ type ThreadMessageLike,
20
+ } from "../../runtime/utils/thread-message-like";
21
+ import { getThreadMessageText } from "../../utils/text";
22
+ import type {
23
+ RuntimeCapabilities,
24
+ ThreadRuntimeCore,
25
+ } from "../../runtime/interfaces/thread-runtime-core";
26
+ import { BaseThreadRuntimeCore } from "../../runtime/base/base-thread-runtime-core";
27
+ import type { ModelContextProvider } from "../../model-context";
28
+ import {
29
+ ExportedMessageRepository,
30
+ MessageRepository,
31
+ } from "../../runtime/utils/message-repository";
32
+
33
+ const EMPTY_ARRAY = Object.freeze([]);
34
+
35
+ export const hasUpcomingMessage = (
36
+ isRunning: boolean,
37
+ messages: readonly ThreadMessage[],
38
+ ) => {
39
+ return isRunning && messages[messages.length - 1]?.role !== "assistant";
40
+ };
41
+
42
+ export class ExternalStoreThreadRuntimeCore
43
+ extends BaseThreadRuntimeCore
44
+ implements ThreadRuntimeCore
45
+ {
46
+ private _assistantOptimisticId: string | null = null;
47
+
48
+ private _capabilities: RuntimeCapabilities = {
49
+ switchToBranch: false,
50
+ switchBranchDuringRun: false,
51
+ edit: false,
52
+ reload: false,
53
+ cancel: false,
54
+ unstable_copy: false,
55
+ speech: false,
56
+ dictation: false,
57
+ attachments: false,
58
+ feedback: false,
59
+ };
60
+
61
+ public get capabilities() {
62
+ return this._capabilities;
63
+ }
64
+
65
+ private _messages!: readonly ThreadMessage[];
66
+ public isDisabled!: boolean;
67
+ public get isLoading() {
68
+ return this._store.isLoading ?? false;
69
+ }
70
+
71
+ public override get messages() {
72
+ return this._messages;
73
+ }
74
+
75
+ public override get state() {
76
+ return this._store.state ?? super.state;
77
+ }
78
+
79
+ public get adapters() {
80
+ return this._store.adapters;
81
+ }
82
+
83
+ public suggestions: readonly ThreadSuggestion[] = [];
84
+ public extras: unknown = undefined;
85
+
86
+ private _converter = new ThreadMessageConverter();
87
+
88
+ private _store!: ExternalStoreAdapter<any>;
89
+
90
+ public override beginEdit(messageId: string) {
91
+ if (!this._store.onEdit)
92
+ throw new Error("Runtime does not support editing.");
93
+
94
+ super.beginEdit(messageId);
95
+ }
96
+
97
+ constructor(
98
+ contextProvider: ModelContextProvider,
99
+ store: ExternalStoreAdapter<any>,
100
+ ) {
101
+ super(contextProvider);
102
+ this.__internal_setAdapter(store);
103
+ }
104
+
105
+ public __internal_setAdapter(store: ExternalStoreAdapter<any>) {
106
+ if (this._store === store) return;
107
+
108
+ const isRunning = store.isRunning ?? false;
109
+ this.isDisabled = store.isDisabled ?? false;
110
+
111
+ const oldStore = this._store as ExternalStoreAdapter<any> | undefined;
112
+ this._store = store;
113
+ this.extras = store.extras;
114
+ this.suggestions = store.suggestions ?? EMPTY_ARRAY;
115
+ this._capabilities = {
116
+ switchToBranch: this._store.setMessages !== undefined,
117
+ switchBranchDuringRun: false, // External store never supports branch switching during run
118
+ edit: this._store.onEdit !== undefined,
119
+ reload: this._store.onReload !== undefined,
120
+ cancel: this._store.onCancel !== undefined,
121
+ speech: this._store.adapters?.speech !== undefined,
122
+ dictation: this._store.adapters?.dictation !== undefined,
123
+ unstable_copy: this._store.unstable_capabilities?.copy !== false, // default true
124
+ attachments: !!this._store.adapters?.attachments,
125
+ feedback: !!this._store.adapters?.feedback,
126
+ };
127
+
128
+ let messages: readonly ThreadMessage[];
129
+
130
+ if (store.messageRepository) {
131
+ // Handle messageRepository
132
+ if (
133
+ oldStore &&
134
+ oldStore.isRunning === store.isRunning &&
135
+ oldStore.messageRepository === store.messageRepository
136
+ ) {
137
+ this._notifySubscribers();
138
+ return;
139
+ }
140
+
141
+ // Clear and import the message repository
142
+ this.repository.clear();
143
+ this._assistantOptimisticId = null;
144
+ this.repository.import(store.messageRepository);
145
+
146
+ messages = this.repository.getMessages();
147
+ } else if (store.messages) {
148
+ // Handle messages array
149
+
150
+ if (oldStore) {
151
+ // flush the converter cache when the convertMessage prop changes
152
+ if (oldStore.convertMessage !== store.convertMessage) {
153
+ this._converter = new ThreadMessageConverter();
154
+ } else if (
155
+ oldStore.isRunning === store.isRunning &&
156
+ oldStore.messages === store.messages
157
+ ) {
158
+ this._notifySubscribers();
159
+ // no conversion update
160
+ return;
161
+ }
162
+ }
163
+
164
+ messages = !store.convertMessage
165
+ ? store.messages
166
+ : this._converter.convertMessages(store.messages, (cache, m, idx) => {
167
+ if (!store.convertMessage) return m;
168
+
169
+ const isLast = idx === (store.messages?.length ?? 0) - 1;
170
+ const autoStatus = getAutoStatus(
171
+ isLast,
172
+ isRunning,
173
+ false,
174
+ false,
175
+ undefined,
176
+ );
177
+
178
+ if (
179
+ cache &&
180
+ (cache.role !== "assistant" ||
181
+ !isAutoStatus(cache.status) ||
182
+ cache.status === autoStatus)
183
+ )
184
+ return cache;
185
+
186
+ const messageLike = store.convertMessage(m, idx);
187
+ const newMessage = fromThreadMessageLike(
188
+ messageLike,
189
+ idx.toString(),
190
+ autoStatus,
191
+ );
192
+ (newMessage as any)[symbolInnerMessage] = m;
193
+ return newMessage;
194
+ });
195
+
196
+ for (let i = 0; i < messages.length; i++) {
197
+ const message = messages[i]!;
198
+ const parent = messages[i - 1];
199
+ this.repository.addOrUpdateMessage(parent?.id ?? null, message);
200
+ }
201
+ } else {
202
+ throw new Error(
203
+ "ExternalStoreAdapter must provide either 'messages' or 'messageRepository'",
204
+ );
205
+ }
206
+
207
+ // Common logic for both paths
208
+ if (messages.length > 0) this.ensureInitialized();
209
+
210
+ if ((oldStore?.isRunning ?? false) !== (store.isRunning ?? false)) {
211
+ if (store.isRunning) {
212
+ this._notifyEventSubscribers("runStart");
213
+ } else {
214
+ this._notifyEventSubscribers("runEnd");
215
+ }
216
+ }
217
+
218
+ if (this._assistantOptimisticId) {
219
+ this.repository.deleteMessage(this._assistantOptimisticId);
220
+ this._assistantOptimisticId = null;
221
+ }
222
+
223
+ if (hasUpcomingMessage(isRunning, messages)) {
224
+ this._assistantOptimisticId = this.repository.appendOptimisticMessage(
225
+ messages.at(-1)?.id ?? null,
226
+ {
227
+ role: "assistant",
228
+ content: [],
229
+ },
230
+ );
231
+ }
232
+
233
+ this.repository.resetHead(
234
+ this._assistantOptimisticId ?? messages.at(-1)?.id ?? null,
235
+ );
236
+
237
+ this._messages = this.repository.getMessages();
238
+ this._notifySubscribers();
239
+ }
240
+
241
+ public override switchToBranch(branchId: string): void {
242
+ if (!this._store.setMessages)
243
+ throw new Error("Runtime does not support switching branches.");
244
+
245
+ // Silently ignore branch switches while running
246
+ if (this._store.isRunning) {
247
+ return;
248
+ }
249
+
250
+ this.repository.switchToBranch(branchId);
251
+ this.updateMessages(this.repository.getMessages());
252
+ }
253
+
254
+ public async append(message: AppendMessage): Promise<void> {
255
+ if (message.parentId !== (this.messages.at(-1)?.id ?? null)) {
256
+ if (!this._store.onEdit)
257
+ throw new Error("Runtime does not support editing messages.");
258
+ await this._store.onEdit(message);
259
+ } else {
260
+ await this._store.onNew(message);
261
+ }
262
+ }
263
+
264
+ public async startRun(config: StartRunConfig): Promise<void> {
265
+ if (!this._store.onReload)
266
+ throw new Error("Runtime does not support reloading messages.");
267
+
268
+ await this._store.onReload(config.parentId, config);
269
+ }
270
+
271
+ public async resumeRun(config: ResumeRunConfig): Promise<void> {
272
+ if (!this._store.onResume)
273
+ throw new Error("Runtime does not support resuming runs.");
274
+
275
+ await this._store.onResume(config);
276
+ }
277
+
278
+ public exportExternalState(): any {
279
+ if (!this._store.onExportExternalState)
280
+ throw new Error("Runtime does not support exporting external states.");
281
+
282
+ return this._store.onExportExternalState();
283
+ }
284
+
285
+ public importExternalState(state: any): void {
286
+ if (!this._store.onLoadExternalState)
287
+ throw new Error("Runtime does not support importing external states.");
288
+
289
+ this._store.onLoadExternalState(state);
290
+ }
291
+
292
+ public unstable_loadExternalState(state: any): void {
293
+ this.importExternalState(state);
294
+ }
295
+
296
+ public cancelRun(): void {
297
+ if (!this._store.onCancel)
298
+ throw new Error("Runtime does not support cancelling runs.");
299
+
300
+ this._store.onCancel();
301
+
302
+ if (this._assistantOptimisticId) {
303
+ this.repository.deleteMessage(this._assistantOptimisticId);
304
+ this._assistantOptimisticId = null;
305
+ }
306
+
307
+ let messages = this.repository.getMessages();
308
+ const previousMessage = messages[messages.length - 1];
309
+ if (
310
+ previousMessage?.role === "user" &&
311
+ previousMessage.id === messages.at(-1)?.id // ensure the previous message is a leaf node
312
+ ) {
313
+ this.repository.deleteMessage(previousMessage.id);
314
+ if (!this.composer.text.trim()) {
315
+ this.composer.setText(getThreadMessageText(previousMessage));
316
+ }
317
+
318
+ messages = this.repository.getMessages();
319
+ } else {
320
+ this._notifySubscribers();
321
+ }
322
+
323
+ // resync messages (for reloading, to restore the previous branch)
324
+ setTimeout(() => {
325
+ this.updateMessages(messages);
326
+ }, 0);
327
+ }
328
+
329
+ public addToolResult(options: AddToolResultOptions) {
330
+ if (!this._store.onAddToolResult && !this._store.onAddToolResult)
331
+ throw new Error("Runtime does not support tool results.");
332
+ this._store.onAddToolResult?.(options);
333
+ }
334
+
335
+ public resumeToolCall(options: ResumeToolCallOptions) {
336
+ if (!this._store.onResumeToolCall)
337
+ throw new Error("Runtime does not support resuming tool calls.");
338
+ this._store.onResumeToolCall(options);
339
+ }
340
+
341
+ public override reset(initialMessages?: readonly ThreadMessageLike[]) {
342
+ const repo = new MessageRepository();
343
+ repo.import(ExportedMessageRepository.fromArray(initialMessages ?? []));
344
+ this.updateMessages(repo.getMessages());
345
+ }
346
+
347
+ public override import(data: ExportedMessageRepository) {
348
+ this._assistantOptimisticId = null;
349
+
350
+ super.import(data);
351
+
352
+ if (this._store.onImport) {
353
+ this._store.onImport(this.repository.getMessages());
354
+ }
355
+ }
356
+
357
+ private updateMessages = (messages: readonly ThreadMessage[]) => {
358
+ const hasConverter = this._store.convertMessage !== undefined;
359
+ if (hasConverter) {
360
+ this._store.setMessages?.(
361
+ messages.flatMap(getExternalStoreMessage).filter((m) => m != null),
362
+ );
363
+ } else {
364
+ // TODO mark this as readonly in v0.12.0
365
+ this._store.setMessages?.(messages as ThreadMessage[]);
366
+ }
367
+ };
368
+ }
@@ -0,0 +1,15 @@
1
+ export type {
2
+ ExternalStoreAdapter,
3
+ ExternalStoreMessageConverter,
4
+ ExternalStoreThreadListAdapter,
5
+ ExternalStoreThreadData,
6
+ } from "./external-store-adapter";
7
+ export { ExternalStoreRuntimeCore } from "./external-store-runtime-core";
8
+ export { ExternalStoreThreadListRuntimeCore } from "./external-store-thread-list-runtime-core";
9
+ export type { ExternalStoreThreadFactory } from "./external-store-thread-list-runtime-core";
10
+ export {
11
+ ExternalStoreThreadRuntimeCore,
12
+ hasUpcomingMessage,
13
+ } from "./external-store-thread-runtime-core";
14
+ export { ThreadMessageConverter } from "./thread-message-converter";
15
+ export type { ConverterCallback } from "./thread-message-converter";
@@ -0,0 +1,23 @@
1
+ import type { ThreadMessage } from "../../types";
2
+
3
+ export type ConverterCallback<TIn> = (
4
+ cache: ThreadMessage | undefined,
5
+ message: TIn,
6
+ idx: number,
7
+ ) => ThreadMessage;
8
+
9
+ export class ThreadMessageConverter {
10
+ private readonly cache = new WeakMap<WeakKey, ThreadMessage>();
11
+
12
+ convertMessages<TIn extends WeakKey>(
13
+ messages: readonly TIn[],
14
+ converter: ConverterCallback<TIn>,
15
+ ): ThreadMessage[] {
16
+ return messages.map((m, idx) => {
17
+ const cached = this.cache.get(m);
18
+ const newMessage = converter(cached, m, idx);
19
+ this.cache.set(m, newMessage);
20
+ return newMessage;
21
+ });
22
+ }
23
+ }
@@ -0,0 +1,28 @@
1
+ // Local Runtime Options
2
+ export type { LocalRuntimeOptionsBase } from "./local/local-runtime-options";
3
+
4
+ // External Store Adapter Types (user-facing)
5
+ export type {
6
+ ExternalStoreAdapter,
7
+ ExternalStoreMessageConverter,
8
+ ExternalStoreThreadListAdapter,
9
+ ExternalStoreThreadData,
10
+ } from "./external-store/external-store-adapter";
11
+
12
+ // Remote Thread List (user-facing)
13
+ export type {
14
+ RemoteThreadListAdapter,
15
+ RemoteThreadListOptions,
16
+ RemoteThreadInitializeResponse,
17
+ RemoteThreadMetadata,
18
+ RemoteThreadListResponse,
19
+ } from "./remote-thread-list/types";
20
+
21
+ export { InMemoryThreadListAdapter } from "./remote-thread-list/adapter/in-memory";
22
+
23
+ // Assistant Transport Utilities
24
+ export {
25
+ toAISDKTools,
26
+ getEnabledTools,
27
+ createRequestHeaders,
28
+ } from "./assistant-transport/utils";
@@ -0,0 +1,36 @@
1
+ // Local Runtime
2
+ export { LocalRuntimeCore } from "./local/local-runtime-core";
3
+ export { LocalThreadListRuntimeCore } from "./local/local-thread-list-runtime-core";
4
+ export type { LocalThreadFactory } from "./local/local-thread-list-runtime-core";
5
+ export { LocalThreadRuntimeCore } from "./local/local-thread-runtime-core";
6
+ export type { LocalRuntimeOptionsBase } from "./local/local-runtime-options";
7
+ export { shouldContinue } from "./local/should-continue";
8
+
9
+ // External Store Runtime
10
+ export { ExternalStoreRuntimeCore } from "./external-store/external-store-runtime-core";
11
+ export { ExternalStoreThreadListRuntimeCore } from "./external-store/external-store-thread-list-runtime-core";
12
+ export type { ExternalStoreThreadFactory } from "./external-store/external-store-thread-list-runtime-core";
13
+ export {
14
+ ExternalStoreThreadRuntimeCore,
15
+ hasUpcomingMessage,
16
+ } from "./external-store/external-store-thread-runtime-core";
17
+ export { ThreadMessageConverter } from "./external-store/thread-message-converter";
18
+ export type { ConverterCallback } from "./external-store/thread-message-converter";
19
+
20
+ // Remote Thread List
21
+ export { OptimisticState } from "./remote-thread-list/optimistic-state";
22
+ export { EMPTY_THREAD_CORE } from "./remote-thread-list/empty-thread-core";
23
+ export type {
24
+ RemoteThreadData,
25
+ THREAD_MAPPING_ID,
26
+ RemoteThreadState,
27
+ } from "./remote-thread-list/remote-thread-state";
28
+ export {
29
+ createThreadMappingId,
30
+ getThreadData,
31
+ updateStatusReducer,
32
+ } from "./remote-thread-list/remote-thread-state";
33
+ export type {
34
+ RemoteThreadInitializeResponse,
35
+ RemoteThreadListOptions,
36
+ } from "./remote-thread-list/types";
@@ -0,0 +1,6 @@
1
+ export { LocalRuntimeCore } from "./local-runtime-core";
2
+ export { LocalThreadListRuntimeCore } from "./local-thread-list-runtime-core";
3
+ export type { LocalThreadFactory } from "./local-thread-list-runtime-core";
4
+ export { LocalThreadRuntimeCore } from "./local-thread-runtime-core";
5
+ export type { LocalRuntimeOptionsBase } from "./local-runtime-options";
6
+ export { shouldContinue } from "./should-continue";
@@ -0,0 +1,32 @@
1
+ import { BaseAssistantRuntimeCore } from "../../runtime/base/base-assistant-runtime-core";
2
+ import { LocalThreadRuntimeCore } from "./local-thread-runtime-core";
3
+ import type { LocalRuntimeOptionsBase } from "./local-runtime-options";
4
+ import { LocalThreadListRuntimeCore } from "./local-thread-list-runtime-core";
5
+ import { ExportedMessageRepository } from "../../runtime/utils/message-repository";
6
+ import type { ThreadMessageLike } from "../../runtime/utils/thread-message-like";
7
+
8
+ export class LocalRuntimeCore extends BaseAssistantRuntimeCore {
9
+ public readonly threads;
10
+ public readonly Provider = undefined;
11
+
12
+ private _options: LocalRuntimeOptionsBase;
13
+
14
+ constructor(
15
+ options: LocalRuntimeOptionsBase,
16
+ initialMessages: readonly ThreadMessageLike[] | undefined,
17
+ ) {
18
+ super();
19
+
20
+ this._options = options;
21
+
22
+ this.threads = new LocalThreadListRuntimeCore(() => {
23
+ return new LocalThreadRuntimeCore(this._contextProvider, this._options);
24
+ });
25
+
26
+ if (initialMessages) {
27
+ this.threads
28
+ .getMainThreadRuntimeCore()
29
+ .import(ExportedMessageRepository.fromArray(initialMessages));
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,27 @@
1
+ import type { ThreadHistoryAdapter } from "../../adapters/thread-history";
2
+ import type { AttachmentAdapter } from "../../adapters/attachment";
3
+ import type { FeedbackAdapter } from "../../adapters/feedback";
4
+ import type {
5
+ SpeechSynthesisAdapter,
6
+ DictationAdapter,
7
+ } from "../../adapters/speech";
8
+ import type { SuggestionAdapter } from "../../adapters/suggestion";
9
+ import type { ChatModelAdapter } from "../../runtime/utils/chat-model-adapter";
10
+
11
+ export type LocalRuntimeOptionsBase = {
12
+ maxSteps?: number | undefined;
13
+ adapters: {
14
+ chatModel: ChatModelAdapter;
15
+ history?: ThreadHistoryAdapter | undefined;
16
+ attachments?: AttachmentAdapter | undefined;
17
+ speech?: SpeechSynthesisAdapter | undefined;
18
+ dictation?: DictationAdapter | undefined;
19
+ feedback?: FeedbackAdapter | undefined;
20
+ suggestion?: SuggestionAdapter | undefined;
21
+ };
22
+
23
+ /**
24
+ * Names of tools that are allowed to interrupt the run in order to wait for human/external approval.
25
+ */
26
+ unstable_humanToolNames?: string[] | undefined;
27
+ };
@@ -0,0 +1,116 @@
1
+ import type { ThreadListRuntimeCore } from "../../runtime/interfaces/thread-list-runtime-core";
2
+ import { BaseSubscribable } from "../../subscribable";
3
+ import type { LocalThreadRuntimeCore } from "./local-thread-runtime-core";
4
+
5
+ export type LocalThreadFactory = () => LocalThreadRuntimeCore;
6
+
7
+ const EMPTY_ARRAY = Object.freeze([]);
8
+ const DEFAULT_THREAD_ID = "__DEFAULT_ID__";
9
+ const DEFAULT_THREAD_DATA = Object.freeze({
10
+ [DEFAULT_THREAD_ID]: {
11
+ id: DEFAULT_THREAD_ID,
12
+ remoteId: undefined,
13
+ externalId: undefined,
14
+ status: "regular" as const,
15
+ title: undefined,
16
+ },
17
+ });
18
+ export class LocalThreadListRuntimeCore
19
+ extends BaseSubscribable
20
+ implements ThreadListRuntimeCore
21
+ {
22
+ private _mainThread: LocalThreadRuntimeCore;
23
+ constructor(_threadFactory: LocalThreadFactory) {
24
+ super();
25
+
26
+ this._mainThread = _threadFactory();
27
+ }
28
+
29
+ public get isLoading() {
30
+ return false;
31
+ }
32
+
33
+ public getMainThreadRuntimeCore() {
34
+ return this._mainThread;
35
+ }
36
+
37
+ public get newThreadId(): string | undefined {
38
+ return undefined;
39
+ }
40
+
41
+ public get threadIds(): readonly string[] {
42
+ return EMPTY_ARRAY;
43
+ }
44
+
45
+ public get archivedThreadIds(): readonly string[] {
46
+ return EMPTY_ARRAY;
47
+ }
48
+
49
+ public get mainThreadId(): string {
50
+ return DEFAULT_THREAD_ID;
51
+ }
52
+
53
+ public get threadItems() {
54
+ return DEFAULT_THREAD_DATA;
55
+ }
56
+
57
+ public getThreadRuntimeCore(): never {
58
+ throw new Error("Method not implemented.");
59
+ }
60
+
61
+ public getLoadThreadsPromise(): Promise<void> {
62
+ return Promise.resolve();
63
+ }
64
+
65
+ public getItemById(threadId: string) {
66
+ if (threadId === this.mainThreadId) {
67
+ return {
68
+ status: "regular" as const,
69
+ id: this.mainThreadId,
70
+ remoteId: this.mainThreadId,
71
+ externalId: undefined,
72
+ title: undefined,
73
+ isMain: true,
74
+ };
75
+ }
76
+ throw new Error("Method not implemented");
77
+ }
78
+
79
+ public async switchToThread(): Promise<void> {
80
+ throw new Error("Method not implemented.");
81
+ }
82
+
83
+ public switchToNewThread(): Promise<void> {
84
+ throw new Error("Method not implemented.");
85
+ }
86
+
87
+ public rename(): Promise<void> {
88
+ throw new Error("Method not implemented.");
89
+ }
90
+
91
+ public archive(): Promise<void> {
92
+ throw new Error("Method not implemented.");
93
+ }
94
+
95
+ public detach(): Promise<void> {
96
+ throw new Error("Method not implemented.");
97
+ }
98
+
99
+ public unarchive(): Promise<void> {
100
+ throw new Error("Method not implemented.");
101
+ }
102
+
103
+ public delete(): Promise<void> {
104
+ throw new Error("Method not implemented.");
105
+ }
106
+
107
+ public initialize(
108
+ threadId: string,
109
+ ): Promise<{ remoteId: string; externalId: string | undefined }> {
110
+ return Promise.resolve({ remoteId: threadId, externalId: undefined });
111
+ }
112
+
113
+ public generateTitle(): never {
114
+ throw new Error("Method not implemented.");
115
+ }
116
+ }