@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,193 @@
1
+ import { ModelContextProvider, ModelContext } from "../types";
2
+ import type { Unsubscribe } from "../../types";
3
+ import { Tool } from "assistant-stream";
4
+ import { z } from "zod";
5
+ import {
6
+ FrameMessage,
7
+ FRAME_MESSAGE_CHANNEL,
8
+ SerializedModelContext,
9
+ SerializedTool,
10
+ } from "./types";
11
+
12
+ const serializeTool = (tool: Tool<any, any>): SerializedTool => ({
13
+ ...(tool.description && { description: tool.description }),
14
+ parameters:
15
+ tool.parameters instanceof z.ZodType
16
+ ? ((z as any).toJSONSchema?.(tool.parameters) ?? tool.parameters)
17
+ : tool.parameters,
18
+ ...(tool.disabled !== undefined && { disabled: tool.disabled }),
19
+ ...(tool.type && { type: tool.type }),
20
+ });
21
+
22
+ const serializeModelContext = (
23
+ context: ModelContext,
24
+ ): SerializedModelContext => ({
25
+ ...(context.system !== undefined && { system: context.system }),
26
+ ...(context.tools && {
27
+ tools: Object.fromEntries(
28
+ Object.entries(context.tools).map(([name, tool]) => [
29
+ name,
30
+ serializeTool(tool),
31
+ ]),
32
+ ),
33
+ }),
34
+ });
35
+
36
+ export class AssistantFrameProvider {
37
+ private static _instance: AssistantFrameProvider | null = null;
38
+
39
+ private _providers = new Set<ModelContextProvider>();
40
+ private _providerUnsubscribes = new Map<
41
+ ModelContextProvider,
42
+ Unsubscribe | undefined
43
+ >();
44
+ private _targetOrigin: string;
45
+
46
+ private constructor(targetOrigin: string = "*") {
47
+ this._targetOrigin = targetOrigin;
48
+ this.handleMessage = this.handleMessage.bind(this);
49
+ window.addEventListener("message", this.handleMessage);
50
+
51
+ setTimeout(() => this.broadcastUpdate(), 0);
52
+ }
53
+
54
+ private static getInstance(targetOrigin?: string): AssistantFrameProvider {
55
+ if (!AssistantFrameProvider._instance) {
56
+ AssistantFrameProvider._instance = new AssistantFrameProvider(
57
+ targetOrigin,
58
+ );
59
+ }
60
+ return AssistantFrameProvider._instance;
61
+ }
62
+
63
+ private handleMessage(event: MessageEvent) {
64
+ if (this._targetOrigin !== "*" && event.origin !== this._targetOrigin)
65
+ return;
66
+ if (event.data?.channel !== FRAME_MESSAGE_CHANNEL) return;
67
+
68
+ const message = event.data.message as FrameMessage;
69
+
70
+ switch (message.type) {
71
+ case "model-context-request":
72
+ this.sendMessage(event, {
73
+ type: "model-context-update",
74
+ context: serializeModelContext(this.getModelContext()),
75
+ });
76
+ break;
77
+
78
+ case "tool-call":
79
+ this.handleToolCall(message, event);
80
+ break;
81
+ }
82
+ }
83
+
84
+ private async handleToolCall(
85
+ message: Extract<FrameMessage, { type: "tool-call" }>,
86
+ event: MessageEvent,
87
+ ) {
88
+ const tool = this.getModelContext().tools?.[message.toolName];
89
+
90
+ let result: any;
91
+ let error: string | undefined;
92
+
93
+ if (!tool) {
94
+ error = `Tool "${message.toolName}" not found`;
95
+ } else {
96
+ try {
97
+ result = tool.execute
98
+ ? await tool.execute(message.args, {
99
+ toolCallId: message.id,
100
+ abortSignal: new AbortController().signal,
101
+ human: async () => {
102
+ throw new Error(
103
+ "Tool human input is not supported in frame context",
104
+ );
105
+ },
106
+ })
107
+ : undefined;
108
+ } catch (e) {
109
+ error = e instanceof Error ? e.message : String(e);
110
+ }
111
+ }
112
+
113
+ this.sendMessage(event, {
114
+ type: "tool-result",
115
+ id: message.id,
116
+ ...(error ? { error } : { result }),
117
+ });
118
+ }
119
+
120
+ private sendMessage(event: MessageEvent, message: FrameMessage) {
121
+ event.source?.postMessage(
122
+ { channel: FRAME_MESSAGE_CHANNEL, message },
123
+ { targetOrigin: event.origin },
124
+ );
125
+ }
126
+
127
+ private getModelContext(): ModelContext {
128
+ const contexts = Array.from(this._providers).map((p) =>
129
+ p.getModelContext(),
130
+ );
131
+
132
+ return contexts.reduce(
133
+ (merged, context) => ({
134
+ system: context.system
135
+ ? merged.system
136
+ ? `${merged.system}\n\n${context.system}`
137
+ : context.system
138
+ : merged.system,
139
+ tools: { ...(merged.tools || {}), ...(context.tools || {}) },
140
+ }),
141
+ {} as ModelContext,
142
+ );
143
+ }
144
+
145
+ private broadcastUpdate() {
146
+ if (window.parent && window.parent !== window) {
147
+ const updateMessage: FrameMessage = {
148
+ type: "model-context-update",
149
+ context: serializeModelContext(this.getModelContext()),
150
+ };
151
+
152
+ window.parent.postMessage(
153
+ { channel: FRAME_MESSAGE_CHANNEL, message: updateMessage },
154
+ this._targetOrigin,
155
+ );
156
+ }
157
+ }
158
+
159
+ static addModelContextProvider(
160
+ provider: ModelContextProvider,
161
+ targetOrigin?: string,
162
+ ): Unsubscribe {
163
+ const instance = AssistantFrameProvider.getInstance(targetOrigin);
164
+ instance._providers.add(provider);
165
+
166
+ const unsubscribe = provider.subscribe?.(() => instance.broadcastUpdate());
167
+ if (unsubscribe) {
168
+ instance._providerUnsubscribes.set(provider, unsubscribe);
169
+ }
170
+
171
+ instance.broadcastUpdate();
172
+
173
+ return () => {
174
+ instance._providers.delete(provider);
175
+ instance._providerUnsubscribes.get(provider)?.();
176
+ instance._providerUnsubscribes.delete(provider);
177
+ instance.broadcastUpdate();
178
+ };
179
+ }
180
+
181
+ static dispose() {
182
+ if (AssistantFrameProvider._instance) {
183
+ const instance = AssistantFrameProvider._instance;
184
+ window.removeEventListener("message", instance.handleMessage);
185
+
186
+ instance._providerUnsubscribes.forEach((unsubscribe) => unsubscribe?.());
187
+ instance._providerUnsubscribes.clear();
188
+ instance._providers.clear();
189
+
190
+ AssistantFrameProvider._instance = null;
191
+ }
192
+ }
193
+ }
@@ -0,0 +1,40 @@
1
+ export type SerializedTool = {
2
+ description?: string;
3
+ parameters: any; // JSON Schema
4
+ disabled?: boolean;
5
+ type?: string;
6
+ };
7
+
8
+ export type SerializedModelContext = {
9
+ system?: string;
10
+ tools?: Record<string, SerializedTool>;
11
+ };
12
+
13
+ export type FrameMessageType =
14
+ | "model-context-request"
15
+ | "model-context-update"
16
+ | "tool-call"
17
+ | "tool-result";
18
+
19
+ export type FrameMessage =
20
+ | {
21
+ type: "model-context-request";
22
+ }
23
+ | {
24
+ type: "model-context-update";
25
+ context: SerializedModelContext;
26
+ }
27
+ | {
28
+ type: "tool-call";
29
+ id: string;
30
+ toolName: string;
31
+ args: unknown;
32
+ }
33
+ | {
34
+ type: "tool-result";
35
+ id: string;
36
+ result?: unknown;
37
+ error?: string;
38
+ };
39
+
40
+ export const FRAME_MESSAGE_CHANNEL = "assistant-ui-frame";
@@ -0,0 +1,35 @@
1
+ export type {
2
+ // Language model settings
3
+ LanguageModelV1CallSettings,
4
+ LanguageModelConfig,
5
+ // Model context
6
+ ModelContext,
7
+ ModelContextProvider,
8
+ // Tool & instruction config
9
+ AssistantToolProps,
10
+ AssistantInstructionsConfig,
11
+ } from "./types";
12
+ export { mergeModelContexts } from "./types";
13
+
14
+ export { tool } from "./tool";
15
+
16
+ export { ModelContextRegistry } from "./registry";
17
+ export type {
18
+ ModelContextRegistryToolHandle,
19
+ ModelContextRegistryInstructionHandle,
20
+ ModelContextRegistryProviderHandle,
21
+ } from "./registry-handles";
22
+
23
+ export {
24
+ // Classes
25
+ AssistantFrameHost,
26
+ AssistantFrameProvider,
27
+ // Constants
28
+ FRAME_MESSAGE_CHANNEL,
29
+ } from "./frame";
30
+ export type {
31
+ SerializedTool,
32
+ SerializedModelContext,
33
+ FrameMessageType,
34
+ FrameMessage,
35
+ } from "./frame";
@@ -0,0 +1,18 @@
1
+ import type { AssistantToolProps, AssistantInstructionsConfig } from "./types";
2
+
3
+ export interface ModelContextRegistryToolHandle<
4
+ TArgs extends Record<string, unknown> = any,
5
+ TResult = any,
6
+ > {
7
+ update(tool: AssistantToolProps<TArgs, TResult>): void;
8
+ remove(): void;
9
+ }
10
+
11
+ export interface ModelContextRegistryInstructionHandle {
12
+ update(config: string | AssistantInstructionsConfig): void;
13
+ remove(): void;
14
+ }
15
+
16
+ export interface ModelContextRegistryProviderHandle {
17
+ remove(): void;
18
+ }
@@ -0,0 +1,159 @@
1
+ import { Tool } from "assistant-stream";
2
+ import {
3
+ ModelContext,
4
+ ModelContextProvider,
5
+ mergeModelContexts,
6
+ AssistantToolProps,
7
+ AssistantInstructionsConfig,
8
+ } from "./types";
9
+ import type { Unsubscribe } from "../types";
10
+ import {
11
+ ModelContextRegistryToolHandle,
12
+ ModelContextRegistryInstructionHandle,
13
+ ModelContextRegistryProviderHandle,
14
+ } from "./registry-handles";
15
+
16
+ export class ModelContextRegistry implements ModelContextProvider {
17
+ private _tools = new Map<symbol, AssistantToolProps<any, any>>();
18
+ private _instructions = new Map<symbol, string>();
19
+ private _providers = new Map<symbol, ModelContextProvider>();
20
+ private _subscribers = new Set<() => void>();
21
+ private _providerUnsubscribes = new Map<symbol, Unsubscribe | undefined>();
22
+
23
+ getModelContext(): ModelContext {
24
+ const instructions = Array.from(this._instructions.values()).filter(
25
+ Boolean,
26
+ );
27
+
28
+ const system =
29
+ instructions.length > 0 ? instructions.join("\n\n") : undefined;
30
+
31
+ const tools: Record<string, Tool<any, any>> = {};
32
+ for (const toolProps of this._tools.values()) {
33
+ const { toolName, render, ...tool } = toolProps;
34
+ tools[toolName] = tool;
35
+ }
36
+
37
+ const providerContexts = mergeModelContexts(
38
+ new Set(this._providers.values()),
39
+ );
40
+
41
+ const context: ModelContext = {
42
+ system,
43
+ tools: Object.keys(tools).length > 0 ? tools : undefined,
44
+ };
45
+
46
+ if (providerContexts.system) {
47
+ context.system = context.system
48
+ ? `${context.system}\n\n${providerContexts.system}`
49
+ : providerContexts.system;
50
+ }
51
+
52
+ if (providerContexts.tools) {
53
+ context.tools = { ...(context.tools || {}), ...providerContexts.tools };
54
+ }
55
+
56
+ if (providerContexts.callSettings) {
57
+ context.callSettings = providerContexts.callSettings;
58
+ }
59
+
60
+ if (providerContexts.config) {
61
+ context.config = providerContexts.config;
62
+ }
63
+
64
+ return context;
65
+ }
66
+
67
+ subscribe(callback: () => void): Unsubscribe {
68
+ this._subscribers.add(callback);
69
+ return () => this._subscribers.delete(callback);
70
+ }
71
+
72
+ private notifySubscribers(): void {
73
+ for (const callback of this._subscribers) {
74
+ callback();
75
+ }
76
+ }
77
+
78
+ addTool<TArgs extends Record<string, unknown>, TResult>(
79
+ tool: AssistantToolProps<TArgs, TResult>,
80
+ ): ModelContextRegistryToolHandle<TArgs, TResult> {
81
+ const id = Symbol();
82
+
83
+ this._tools.set(id, tool);
84
+ this.notifySubscribers();
85
+
86
+ return {
87
+ update: (newTool: AssistantToolProps<TArgs, TResult>) => {
88
+ if (this._tools.has(id)) {
89
+ this._tools.set(id, newTool);
90
+ this.notifySubscribers();
91
+ }
92
+ },
93
+ remove: () => {
94
+ this._tools.delete(id);
95
+ this.notifySubscribers();
96
+ },
97
+ };
98
+ }
99
+
100
+ addInstruction(
101
+ config: string | AssistantInstructionsConfig,
102
+ ): ModelContextRegistryInstructionHandle {
103
+ const id = Symbol();
104
+
105
+ const instruction =
106
+ typeof config === "string" ? config : config.instruction;
107
+ const disabled = typeof config === "object" ? config.disabled : false;
108
+
109
+ if (!disabled) {
110
+ this._instructions.set(id, instruction);
111
+ this.notifySubscribers();
112
+ }
113
+
114
+ return {
115
+ update: (newConfig: string | AssistantInstructionsConfig) => {
116
+ const newInstruction =
117
+ typeof newConfig === "string" ? newConfig : newConfig.instruction;
118
+ const newDisabled =
119
+ typeof newConfig === "object" ? newConfig.disabled : false;
120
+
121
+ if (newDisabled) {
122
+ this._instructions.delete(id);
123
+ } else {
124
+ this._instructions.set(id, newInstruction);
125
+ }
126
+ this.notifySubscribers();
127
+ },
128
+ remove: () => {
129
+ this._instructions.delete(id);
130
+ this.notifySubscribers();
131
+ },
132
+ };
133
+ }
134
+
135
+ addProvider(
136
+ provider: ModelContextProvider,
137
+ ): ModelContextRegistryProviderHandle {
138
+ const id = Symbol();
139
+
140
+ this._providers.set(id, provider);
141
+
142
+ const unsubscribe = provider.subscribe?.(() => {
143
+ this.notifySubscribers();
144
+ });
145
+ this._providerUnsubscribes.set(id, unsubscribe);
146
+
147
+ this.notifySubscribers();
148
+
149
+ return {
150
+ remove: () => {
151
+ this._providers.delete(id);
152
+ const unsubscribe = this._providerUnsubscribes.get(id);
153
+ unsubscribe?.();
154
+ this._providerUnsubscribes.delete(id);
155
+ this.notifySubscribers();
156
+ },
157
+ };
158
+ }
159
+ }
@@ -0,0 +1,9 @@
1
+ import { Tool } from "assistant-stream";
2
+
3
+ // TODO re-add the inferrence of the parameters
4
+
5
+ export function tool<TArgs extends Record<string, unknown>, TResult = any>(
6
+ tool: Tool<TArgs, TResult>,
7
+ ): Tool<TArgs, TResult> {
8
+ return tool;
9
+ }
@@ -0,0 +1,104 @@
1
+ import type { Unsubscribe } from "../types";
2
+ import { Tool } from "assistant-stream";
3
+
4
+ // =============================================================================
5
+ // Language Model Settings
6
+ // =============================================================================
7
+
8
+ export type LanguageModelV1CallSettings = {
9
+ maxTokens?: number;
10
+ temperature?: number;
11
+ topP?: number;
12
+ presencePenalty?: number;
13
+ frequencyPenalty?: number;
14
+ seed?: number;
15
+ headers?: Record<string, string | undefined>;
16
+ };
17
+
18
+ export type LanguageModelConfig = {
19
+ apiKey?: string;
20
+ baseUrl?: string;
21
+ modelName?: string;
22
+ };
23
+
24
+ // =============================================================================
25
+ // Model Context
26
+ // =============================================================================
27
+
28
+ export type ModelContext = {
29
+ priority?: number | undefined;
30
+ system?: string | undefined;
31
+ tools?: Record<string, Tool<any, any>> | undefined;
32
+ callSettings?: LanguageModelV1CallSettings | undefined;
33
+ config?: LanguageModelConfig | undefined;
34
+ };
35
+
36
+ export type ModelContextProvider = {
37
+ getModelContext: () => ModelContext;
38
+ subscribe?: (callback: () => void) => Unsubscribe;
39
+ };
40
+
41
+ // =============================================================================
42
+ // Tool & Instruction Config
43
+ // =============================================================================
44
+
45
+ export type AssistantToolProps<
46
+ TArgs extends Record<string, unknown>,
47
+ TResult,
48
+ > = Tool<TArgs, TResult> & {
49
+ toolName: string;
50
+ render?: unknown;
51
+ };
52
+
53
+ export type AssistantInstructionsConfig = {
54
+ disabled?: boolean | undefined;
55
+ instruction: string;
56
+ };
57
+
58
+ // =============================================================================
59
+ // Merging
60
+ // =============================================================================
61
+
62
+ export const mergeModelContexts = (
63
+ configSet: Set<ModelContextProvider>,
64
+ ): ModelContext => {
65
+ const configs = Array.from(configSet)
66
+ .map((c) => c.getModelContext())
67
+ .sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
68
+
69
+ return configs.reduce((acc, config) => {
70
+ if (config.system) {
71
+ if (acc.system) {
72
+ acc.system += `\n\n${config.system}`;
73
+ } else {
74
+ acc.system = config.system;
75
+ }
76
+ }
77
+ if (config.tools) {
78
+ for (const [name, tool] of Object.entries(config.tools)) {
79
+ const existing = acc.tools?.[name];
80
+ if (existing && existing !== tool) {
81
+ throw new Error(
82
+ `You tried to define a tool with the name ${name}, but it already exists.`,
83
+ );
84
+ }
85
+
86
+ if (!acc.tools) acc.tools = {};
87
+ acc.tools[name] = tool;
88
+ }
89
+ }
90
+ if (config.config) {
91
+ acc.config = {
92
+ ...acc.config,
93
+ ...config.config,
94
+ };
95
+ }
96
+ if (config.callSettings) {
97
+ acc.callSettings = {
98
+ ...acc.callSettings,
99
+ ...config.callSettings,
100
+ };
101
+ }
102
+ return acc;
103
+ }, {} as ModelContext);
104
+ };
@@ -0,0 +1,115 @@
1
+ import type { Unsubscribe } from "../../types";
2
+ import type { ModelContextProvider } from "../../model-context";
3
+ import type { AssistantRuntimeCore } from "../interfaces/assistant-runtime-core";
4
+ import type { ThreadRuntime } from "./thread-runtime";
5
+ import {
6
+ ThreadListRuntime,
7
+ ThreadListRuntimeImpl,
8
+ } from "./thread-list-runtime";
9
+ import { ExportedMessageRepository } from "../utils/message-repository";
10
+ import type { ThreadMessageLike } from "../utils/thread-message-like";
11
+
12
+ export type AssistantRuntime = {
13
+ /**
14
+ * The threads in this assistant.
15
+ */
16
+ readonly threads: ThreadListRuntime;
17
+
18
+ /**
19
+ * The currently selected main thread. Equivalent to `threads.main`.
20
+ */
21
+ readonly thread: ThreadRuntime;
22
+
23
+ /**
24
+ * @deprecated This field was renamed to `threads`.
25
+ */
26
+ readonly threadList: ThreadListRuntime;
27
+
28
+ /**
29
+ * Switch to a new thread.
30
+ *
31
+ * @deprecated This method was moved to `threads.switchToNewThread`.
32
+ */
33
+ switchToNewThread(): void;
34
+
35
+ /**
36
+ * Switch to a thread.
37
+ *
38
+ * @param threadId The thread ID to switch to.
39
+ * @deprecated This method was moved to `threads.switchToThread`.
40
+ */
41
+ switchToThread(threadId: string): void;
42
+
43
+ /**
44
+ * Register a model context provider. Model context providers are configuration such as system message, temperature, etc. that are set in the frontend.
45
+ *
46
+ * @param provider The model context provider to register.
47
+ */
48
+ registerModelContextProvider(provider: ModelContextProvider): Unsubscribe;
49
+
50
+ /**
51
+ * @deprecated This method was renamed to `registerModelContextProvider`.
52
+ */
53
+ registerModelConfigProvider(provider: ModelContextProvider): Unsubscribe;
54
+
55
+ /**
56
+ * @deprecated Use `runtime.thread.reset(initialMessages)`.
57
+ */
58
+ reset: unknown; // make it a type error
59
+ };
60
+
61
+ export class AssistantRuntimeImpl implements AssistantRuntime {
62
+ public readonly threads;
63
+ public get threadList() {
64
+ return this.threads;
65
+ }
66
+
67
+ public readonly _thread: ThreadRuntime;
68
+
69
+ public constructor(private readonly _core: AssistantRuntimeCore) {
70
+ this.threads = new ThreadListRuntimeImpl(_core.threads);
71
+ this._thread = this.threads.main;
72
+
73
+ this.__internal_bindMethods();
74
+ }
75
+
76
+ protected __internal_bindMethods() {
77
+ this.switchToNewThread = this.switchToNewThread.bind(this);
78
+ this.switchToThread = this.switchToThread.bind(this);
79
+ this.registerModelContextProvider =
80
+ this.registerModelContextProvider.bind(this);
81
+ this.registerModelConfigProvider =
82
+ this.registerModelConfigProvider.bind(this);
83
+ this.reset = this.reset.bind(this);
84
+ }
85
+
86
+ public get thread() {
87
+ return this._thread;
88
+ }
89
+
90
+ public switchToNewThread() {
91
+ return this._core.threads.switchToNewThread();
92
+ }
93
+
94
+ public switchToThread(threadId: string) {
95
+ return this._core.threads.switchToThread(threadId);
96
+ }
97
+
98
+ public registerModelContextProvider(provider: ModelContextProvider) {
99
+ return this._core.registerModelContextProvider(provider);
100
+ }
101
+
102
+ public registerModelConfigProvider(provider: ModelContextProvider) {
103
+ return this.registerModelContextProvider(provider);
104
+ }
105
+
106
+ public reset({
107
+ initialMessages,
108
+ }: {
109
+ initialMessages?: ThreadMessageLike[];
110
+ } = {}) {
111
+ return this._core.threads
112
+ .getMainThreadRuntimeCore()
113
+ .import(ExportedMessageRepository.fromArray(initialMessages ?? []));
114
+ }
115
+ }