@assistant-ui/react 0.5.98 → 0.5.99

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 (267) hide show
  1. package/dist/api/AssistantRuntime.d.ts +4 -4
  2. package/dist/api/AssistantRuntime.d.ts.map +1 -1
  3. package/dist/api/AssistantRuntime.js +7 -7
  4. package/dist/api/AssistantRuntime.js.map +1 -1
  5. package/dist/api/AssistantRuntime.mjs +7 -9
  6. package/dist/api/AssistantRuntime.mjs.map +1 -1
  7. package/dist/api/ComposerRuntime.d.ts +7 -0
  8. package/dist/api/ComposerRuntime.d.ts.map +1 -1
  9. package/dist/api/ComposerRuntime.js +13 -0
  10. package/dist/api/ComposerRuntime.js.map +1 -1
  11. package/dist/api/ComposerRuntime.mjs +13 -0
  12. package/dist/api/ComposerRuntime.mjs.map +1 -1
  13. package/dist/api/MessageRuntime.d.ts.map +1 -1
  14. package/dist/api/MessageRuntime.js +0 -5
  15. package/dist/api/MessageRuntime.js.map +1 -1
  16. package/dist/api/MessageRuntime.mjs +0 -5
  17. package/dist/api/MessageRuntime.mjs.map +1 -1
  18. package/dist/api/RuntimePathTypes.d.ts +16 -1
  19. package/dist/api/RuntimePathTypes.d.ts.map +1 -1
  20. package/dist/api/RuntimePathTypes.js.map +1 -1
  21. package/dist/api/ThreadListItemRuntime.d.ts +29 -0
  22. package/dist/api/ThreadListItemRuntime.d.ts.map +1 -0
  23. package/dist/api/ThreadListItemRuntime.js +61 -0
  24. package/dist/api/ThreadListItemRuntime.js.map +1 -0
  25. package/dist/api/ThreadListItemRuntime.mjs +36 -0
  26. package/dist/api/ThreadListItemRuntime.mjs.map +1 -0
  27. package/dist/api/ThreadListRuntime.d.ts +51 -0
  28. package/dist/api/ThreadListRuntime.d.ts.map +1 -0
  29. package/dist/api/ThreadListRuntime.js +128 -0
  30. package/dist/api/ThreadListRuntime.js.map +1 -0
  31. package/dist/api/ThreadListRuntime.mjs +105 -0
  32. package/dist/api/ThreadListRuntime.mjs.map +1 -0
  33. package/dist/api/ThreadRuntime.d.ts +3 -0
  34. package/dist/api/ThreadRuntime.d.ts.map +1 -1
  35. package/dist/api/ThreadRuntime.js +1 -1
  36. package/dist/api/ThreadRuntime.js.map +1 -1
  37. package/dist/api/ThreadRuntime.mjs +1 -1
  38. package/dist/api/ThreadRuntime.mjs.map +1 -1
  39. package/dist/api/index.d.ts +1 -1
  40. package/dist/api/index.d.ts.map +1 -1
  41. package/dist/api/index.js.map +1 -1
  42. package/dist/context/providers/AssistantRuntimeProvider.d.ts.map +1 -1
  43. package/dist/context/providers/AssistantRuntimeProvider.js +7 -9
  44. package/dist/context/providers/AssistantRuntimeProvider.js.map +1 -1
  45. package/dist/context/providers/AssistantRuntimeProvider.mjs +7 -9
  46. package/dist/context/providers/AssistantRuntimeProvider.mjs.map +1 -1
  47. package/dist/context/providers/AttachmentRuntimeProvider.d.ts +6 -5
  48. package/dist/context/providers/AttachmentRuntimeProvider.d.ts.map +1 -1
  49. package/dist/context/providers/AttachmentRuntimeProvider.js.map +1 -1
  50. package/dist/context/providers/AttachmentRuntimeProvider.mjs.map +1 -1
  51. package/dist/context/providers/ContentPartRuntimeProvider.d.ts +6 -5
  52. package/dist/context/providers/ContentPartRuntimeProvider.d.ts.map +1 -1
  53. package/dist/context/providers/ContentPartRuntimeProvider.js +1 -4
  54. package/dist/context/providers/ContentPartRuntimeProvider.js.map +1 -1
  55. package/dist/context/providers/ContentPartRuntimeProvider.mjs +1 -4
  56. package/dist/context/providers/ContentPartRuntimeProvider.mjs.map +1 -1
  57. package/dist/context/providers/MessageRuntimeProvider.d.ts +6 -5
  58. package/dist/context/providers/MessageRuntimeProvider.d.ts.map +1 -1
  59. package/dist/context/providers/MessageRuntimeProvider.js.map +1 -1
  60. package/dist/context/providers/MessageRuntimeProvider.mjs.map +1 -1
  61. package/dist/context/providers/TextContentPartProvider.d.ts +7 -6
  62. package/dist/context/providers/TextContentPartProvider.d.ts.map +1 -1
  63. package/dist/context/providers/TextContentPartProvider.js +5 -1
  64. package/dist/context/providers/TextContentPartProvider.js.map +1 -1
  65. package/dist/context/providers/TextContentPartProvider.mjs +5 -1
  66. package/dist/context/providers/TextContentPartProvider.mjs.map +1 -1
  67. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts +13 -0
  68. package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -0
  69. package/dist/context/providers/ThreadListItemRuntimeProvider.js +62 -0
  70. package/dist/context/providers/ThreadListItemRuntimeProvider.js.map +1 -0
  71. package/dist/context/providers/ThreadListItemRuntimeProvider.mjs +39 -0
  72. package/dist/context/providers/ThreadListItemRuntimeProvider.mjs.map +1 -0
  73. package/dist/context/react/AssistantContext.d.ts +35 -11
  74. package/dist/context/react/AssistantContext.d.ts.map +1 -1
  75. package/dist/context/react/AssistantContext.js +4 -4
  76. package/dist/context/react/AssistantContext.js.map +1 -1
  77. package/dist/context/react/AssistantContext.mjs +3 -3
  78. package/dist/context/react/AssistantContext.mjs.map +1 -1
  79. package/dist/context/react/ThreadListItemContext.d.ts +58 -0
  80. package/dist/context/react/ThreadListItemContext.d.ts.map +1 -0
  81. package/dist/context/react/ThreadListItemContext.js +53 -0
  82. package/dist/context/react/ThreadListItemContext.js.map +1 -0
  83. package/dist/context/react/ThreadListItemContext.mjs +25 -0
  84. package/dist/context/react/ThreadListItemContext.mjs.map +1 -0
  85. package/dist/context/react/index.d.ts +1 -1
  86. package/dist/context/react/index.d.ts.map +1 -1
  87. package/dist/context/react/index.js +2 -2
  88. package/dist/context/react/index.js.map +1 -1
  89. package/dist/context/react/index.mjs +2 -2
  90. package/dist/context/react/index.mjs.map +1 -1
  91. package/dist/internal.d.ts +1 -1
  92. package/dist/internal.d.ts.map +1 -1
  93. package/dist/internal.js.map +1 -1
  94. package/dist/internal.mjs.map +1 -1
  95. package/dist/primitives/index.d.ts +2 -0
  96. package/dist/primitives/index.d.ts.map +1 -1
  97. package/dist/primitives/index.js +6 -0
  98. package/dist/primitives/index.js.map +1 -1
  99. package/dist/primitives/index.mjs +4 -0
  100. package/dist/primitives/index.mjs.map +1 -1
  101. package/dist/primitives/threadList/ThreadListItems.d.ts +11 -0
  102. package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -0
  103. package/dist/primitives/threadList/ThreadListItems.js +72 -0
  104. package/dist/primitives/threadList/ThreadListItems.js.map +1 -0
  105. package/dist/primitives/threadList/ThreadListItems.mjs +48 -0
  106. package/dist/primitives/threadList/ThreadListItems.mjs.map +1 -0
  107. package/dist/primitives/threadList/ThreadListNew.d.ts +13 -0
  108. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -0
  109. package/dist/primitives/threadList/ThreadListNew.js +43 -0
  110. package/dist/primitives/threadList/ThreadListNew.js.map +1 -0
  111. package/dist/primitives/threadList/ThreadListNew.mjs +21 -0
  112. package/dist/primitives/threadList/ThreadListNew.mjs.map +1 -0
  113. package/dist/primitives/threadList/index.d.ts +3 -0
  114. package/dist/primitives/threadList/index.d.ts.map +1 -0
  115. package/dist/primitives/threadList/index.js +34 -0
  116. package/dist/primitives/threadList/index.js.map +1 -0
  117. package/dist/primitives/threadList/index.mjs +8 -0
  118. package/dist/primitives/threadList/index.mjs.map +1 -0
  119. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +13 -0
  120. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -0
  121. package/dist/primitives/threadListItem/ThreadListItemArchive.js +43 -0
  122. package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -0
  123. package/dist/primitives/threadListItem/ThreadListItemArchive.mjs +21 -0
  124. package/dist/primitives/threadListItem/ThreadListItemArchive.mjs.map +1 -0
  125. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +13 -0
  126. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -0
  127. package/dist/primitives/threadListItem/ThreadListItemDelete.js +43 -0
  128. package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -0
  129. package/dist/primitives/threadListItem/ThreadListItemDelete.mjs +21 -0
  130. package/dist/primitives/threadListItem/ThreadListItemDelete.mjs.map +1 -0
  131. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +13 -0
  132. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -0
  133. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +43 -0
  134. package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -0
  135. package/dist/primitives/threadListItem/ThreadListItemUnarchive.mjs +21 -0
  136. package/dist/primitives/threadListItem/ThreadListItemUnarchive.mjs.map +1 -0
  137. package/dist/primitives/threadListItem/index.d.ts +4 -0
  138. package/dist/primitives/threadListItem/index.d.ts.map +1 -0
  139. package/dist/primitives/threadListItem/index.js +37 -0
  140. package/dist/primitives/threadListItem/index.js.map +1 -0
  141. package/dist/primitives/threadListItem/index.mjs +10 -0
  142. package/dist/primitives/threadListItem/index.mjs.map +1 -0
  143. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts +5 -1
  144. package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
  145. package/dist/runtimes/composer/BaseComposerRuntimeCore.js +14 -5
  146. package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
  147. package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs +14 -5
  148. package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs.map +1 -1
  149. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.d.ts.map +1 -1
  150. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js +2 -1
  151. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js.map +1 -1
  152. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs +2 -1
  153. package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs.map +1 -1
  154. package/dist/runtimes/core/AssistantRuntimeCore.d.ts +2 -2
  155. package/dist/runtimes/core/AssistantRuntimeCore.d.ts.map +1 -1
  156. package/dist/runtimes/core/AssistantRuntimeCore.js.map +1 -1
  157. package/dist/runtimes/core/BaseAssistantRuntimeCore.d.ts +2 -2
  158. package/dist/runtimes/core/BaseAssistantRuntimeCore.d.ts.map +1 -1
  159. package/dist/runtimes/core/BaseAssistantRuntimeCore.js.map +1 -1
  160. package/dist/runtimes/core/BaseAssistantRuntimeCore.mjs.map +1 -1
  161. package/dist/runtimes/core/ComposerRuntimeCore.d.ts +3 -0
  162. package/dist/runtimes/core/ComposerRuntimeCore.d.ts.map +1 -1
  163. package/dist/runtimes/core/ComposerRuntimeCore.js.map +1 -1
  164. package/dist/runtimes/core/{ThreadManagerRuntimeCore.d.ts → ThreadListRuntimeCore.d.ts} +7 -6
  165. package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -0
  166. package/dist/runtimes/core/{ThreadManagerRuntimeCore.js → ThreadListRuntimeCore.js} +4 -4
  167. package/dist/runtimes/core/ThreadListRuntimeCore.js.map +1 -0
  168. package/dist/runtimes/core/ThreadListRuntimeCore.mjs +1 -0
  169. package/dist/runtimes/core/subscribeToMainThread.js +2 -2
  170. package/dist/runtimes/core/subscribeToMainThread.js.map +1 -1
  171. package/dist/runtimes/core/subscribeToMainThread.mjs +2 -2
  172. package/dist/runtimes/core/subscribeToMainThread.mjs.map +1 -1
  173. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +8 -8
  174. package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
  175. package/dist/runtimes/external-store/ExternalStoreAdapter.js.map +1 -1
  176. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts +2 -2
  177. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts.map +1 -1
  178. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js +8 -8
  179. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js.map +1 -1
  180. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs +8 -8
  181. package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs.map +1 -1
  182. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +35 -0
  183. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -0
  184. package/dist/runtimes/external-store/{ExternalStoreThreadManagementAdapter.js → ExternalStoreThreadListRuntimeCore.js} +17 -8
  185. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -0
  186. package/dist/runtimes/external-store/{ExternalStoreThreadManagementAdapter.mjs → ExternalStoreThreadListRuntimeCore.mjs} +13 -4
  187. package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs.map +1 -0
  188. package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts +1 -1
  189. package/dist/runtimes/local/LocalRuntimeCore.d.ts +2 -2
  190. package/dist/runtimes/local/LocalRuntimeCore.d.ts.map +1 -1
  191. package/dist/runtimes/local/LocalRuntimeCore.js +7 -7
  192. package/dist/runtimes/local/LocalRuntimeCore.js.map +1 -1
  193. package/dist/runtimes/local/LocalRuntimeCore.mjs +7 -7
  194. package/dist/runtimes/local/LocalRuntimeCore.mjs.map +1 -1
  195. package/dist/runtimes/local/{LocalThreadManagerRuntimeCore.d.ts → LocalThreadListRuntimeCore.d.ts} +16 -6
  196. package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -0
  197. package/dist/runtimes/local/{LocalThreadManagerRuntimeCore.js → LocalThreadListRuntimeCore.js} +11 -8
  198. package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -0
  199. package/dist/runtimes/local/{LocalThreadManagerRuntimeCore.mjs → LocalThreadListRuntimeCore.mjs} +7 -4
  200. package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs.map +1 -0
  201. package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
  202. package/dist/runtimes/local/LocalThreadRuntimeCore.js +2 -1
  203. package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
  204. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +2 -1
  205. package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
  206. package/dist/types/AssistantTypes.d.ts +2 -0
  207. package/dist/types/AssistantTypes.d.ts.map +1 -1
  208. package/dist/types/AssistantTypes.js.map +1 -1
  209. package/package.json +7 -7
  210. package/src/api/AssistantRuntime.ts +9 -12
  211. package/src/api/ComposerRuntime.ts +17 -0
  212. package/src/api/MessageRuntime.ts +0 -9
  213. package/src/api/RuntimePathTypes.ts +10 -1
  214. package/src/api/ThreadListItemRuntime.ts +67 -0
  215. package/src/api/ThreadListRuntime.ts +159 -0
  216. package/src/api/ThreadRuntime.ts +2 -1
  217. package/src/api/index.ts +1 -4
  218. package/src/context/providers/AssistantRuntimeProvider.tsx +7 -9
  219. package/src/context/providers/AttachmentRuntimeProvider.tsx +6 -4
  220. package/src/context/providers/ContentPartRuntimeProvider.tsx +8 -7
  221. package/src/context/providers/MessageRuntimeProvider.tsx +6 -4
  222. package/src/context/providers/TextContentPartProvider.tsx +11 -7
  223. package/src/context/providers/ThreadListItemRuntimeProvider.tsx +54 -0
  224. package/src/context/react/AssistantContext.ts +4 -4
  225. package/src/context/react/ThreadListItemContext.ts +39 -0
  226. package/src/context/react/index.ts +2 -2
  227. package/src/internal.ts +1 -1
  228. package/src/primitives/index.ts +2 -0
  229. package/src/primitives/threadList/ThreadListItems.tsx +73 -0
  230. package/src/primitives/threadList/ThreadListNew.ts +25 -0
  231. package/src/primitives/threadList/index.ts +2 -0
  232. package/src/primitives/threadListItem/ThreadListItemArchive.ts +25 -0
  233. package/src/primitives/threadListItem/ThreadListItemDelete.ts +25 -0
  234. package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +25 -0
  235. package/src/primitives/threadListItem/index.ts +3 -0
  236. package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +19 -5
  237. package/src/runtimes/composer/DefaultEditComposerRuntimeCore.tsx +3 -2
  238. package/src/runtimes/core/AssistantRuntimeCore.tsx +2 -2
  239. package/src/runtimes/core/BaseAssistantRuntimeCore.tsx +2 -2
  240. package/src/runtimes/core/ComposerRuntimeCore.tsx +4 -0
  241. package/src/runtimes/core/{ThreadManagerRuntimeCore.tsx → ThreadListRuntimeCore.tsx} +7 -5
  242. package/src/runtimes/core/subscribeToMainThread.ts +2 -2
  243. package/src/runtimes/external-store/ExternalStoreAdapter.tsx +8 -8
  244. package/src/runtimes/external-store/ExternalStoreRuntimeCore.tsx +8 -8
  245. package/src/runtimes/external-store/{ExternalStoreThreadManagementAdapter.tsx → ExternalStoreThreadListRuntimeCore.tsx} +16 -6
  246. package/src/runtimes/local/LocalRuntimeCore.tsx +7 -7
  247. package/src/runtimes/local/{LocalThreadManagerRuntimeCore.tsx → LocalThreadListRuntimeCore.tsx} +11 -7
  248. package/src/runtimes/local/LocalThreadRuntimeCore.tsx +2 -1
  249. package/src/types/AssistantTypes.ts +3 -0
  250. package/dist/api/ThreadManagerRuntime.d.ts +0 -32
  251. package/dist/api/ThreadManagerRuntime.d.ts.map +0 -1
  252. package/dist/api/ThreadManagerRuntime.js +0 -73
  253. package/dist/api/ThreadManagerRuntime.js.map +0 -1
  254. package/dist/api/ThreadManagerRuntime.mjs +0 -48
  255. package/dist/api/ThreadManagerRuntime.mjs.map +0 -1
  256. package/dist/runtimes/core/ThreadManagerRuntimeCore.d.ts.map +0 -1
  257. package/dist/runtimes/core/ThreadManagerRuntimeCore.js.map +0 -1
  258. package/dist/runtimes/core/ThreadManagerRuntimeCore.mjs +0 -1
  259. package/dist/runtimes/external-store/ExternalStoreThreadManagementAdapter.d.ts +0 -25
  260. package/dist/runtimes/external-store/ExternalStoreThreadManagementAdapter.d.ts.map +0 -1
  261. package/dist/runtimes/external-store/ExternalStoreThreadManagementAdapter.js.map +0 -1
  262. package/dist/runtimes/external-store/ExternalStoreThreadManagementAdapter.mjs.map +0 -1
  263. package/dist/runtimes/local/LocalThreadManagerRuntimeCore.d.ts.map +0 -1
  264. package/dist/runtimes/local/LocalThreadManagerRuntimeCore.js.map +0 -1
  265. package/dist/runtimes/local/LocalThreadManagerRuntimeCore.mjs.map +0 -1
  266. package/src/api/ThreadManagerRuntime.ts +0 -80
  267. /package/dist/runtimes/core/{ThreadManagerRuntimeCore.mjs.map → ThreadListRuntimeCore.mjs.map} +0 -0
@@ -17,15 +17,15 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/runtimes/external-store/ExternalStoreThreadManagementAdapter.tsx
21
- var ExternalStoreThreadManagementAdapter_exports = {};
22
- __export(ExternalStoreThreadManagementAdapter_exports, {
23
- ExternalStoreThreadManagerRuntimeCore: () => ExternalStoreThreadManagerRuntimeCore
20
+ // src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx
21
+ var ExternalStoreThreadListRuntimeCore_exports = {};
22
+ __export(ExternalStoreThreadListRuntimeCore_exports, {
23
+ ExternalStoreThreadListRuntimeCore: () => ExternalStoreThreadListRuntimeCore
24
24
  });
25
- module.exports = __toCommonJS(ExternalStoreThreadManagementAdapter_exports);
25
+ module.exports = __toCommonJS(ExternalStoreThreadListRuntimeCore_exports);
26
26
  var EMPTY_ARRAY = Object.freeze([]);
27
27
  var DEFAULT_THREAD_ID = "DEFAULT_THREAD_ID";
28
- var ExternalStoreThreadManagerRuntimeCore = class {
28
+ var ExternalStoreThreadListRuntimeCore = class {
29
29
  constructor(adapter = {}, threadFactory) {
30
30
  this.adapter = adapter;
31
31
  this.threadFactory = threadFactory;
@@ -41,6 +41,15 @@ var ExternalStoreThreadManagerRuntimeCore = class {
41
41
  get mainThread() {
42
42
  return this._mainThread;
43
43
  }
44
+ getThreadMetadataById(threadId) {
45
+ for (const thread of this.threads) {
46
+ if (thread.threadId === threadId) return thread;
47
+ }
48
+ for (const thread of this.archivedThreads) {
49
+ if (thread.threadId === threadId) return thread;
50
+ }
51
+ return void 0;
52
+ }
44
53
  setAdapter(adapter) {
45
54
  const previousAdapter = this.adapter;
46
55
  this.adapter = adapter;
@@ -109,6 +118,6 @@ var ExternalStoreThreadManagerRuntimeCore = class {
109
118
  };
110
119
  // Annotate the CommonJS export names for ESM import in node:
111
120
  0 && (module.exports = {
112
- ExternalStoreThreadManagerRuntimeCore
121
+ ExternalStoreThreadListRuntimeCore
113
122
  });
114
- //# sourceMappingURL=ExternalStoreThreadManagementAdapter.js.map
123
+ //# sourceMappingURL=ExternalStoreThreadListRuntimeCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx"],"sourcesContent":["import type { Unsubscribe } from \"../../types\";\nimport { ExternalStoreThreadRuntimeCore } from \"./ExternalStoreThreadRuntimeCore\";\nimport { ThreadListRuntimeCore } from \"../core/ThreadListRuntimeCore\";\nimport { ExternalStoreThreadListAdapter } from \"./ExternalStoreAdapter\";\n\nexport type ExternalStoreThreadFactory = (\n threadId: string,\n) => ExternalStoreThreadRuntimeCore;\n\nconst EMPTY_ARRAY = Object.freeze([]);\nconst DEFAULT_THREAD_ID = \"DEFAULT_THREAD_ID\";\n\nexport class ExternalStoreThreadListRuntimeCore\n implements ThreadListRuntimeCore\n{\n public get threads() {\n return this.adapter.threads ?? EMPTY_ARRAY;\n }\n\n public get archivedThreads() {\n return this.adapter.archivedThreads ?? EMPTY_ARRAY;\n }\n\n private _mainThread: ExternalStoreThreadRuntimeCore;\n\n public get mainThread() {\n return this._mainThread;\n }\n\n constructor(\n private adapter: ExternalStoreThreadListAdapter = {},\n private threadFactory: ExternalStoreThreadFactory,\n ) {\n this._mainThread = this.threadFactory(DEFAULT_THREAD_ID);\n }\n\n public getThreadMetadataById(threadId: string) {\n for (const thread of this.threads) {\n if (thread.threadId === threadId) return thread;\n }\n for (const thread of this.archivedThreads) {\n if (thread.threadId === threadId) return thread;\n }\n return undefined;\n }\n\n public setAdapter(adapter: ExternalStoreThreadListAdapter) {\n const previousAdapter = this.adapter;\n this.adapter = adapter;\n\n const newThreadId = adapter.threadId ?? DEFAULT_THREAD_ID;\n const newThreads = adapter.threads ?? EMPTY_ARRAY;\n const newArchivedThreads = adapter.archivedThreads ?? EMPTY_ARRAY;\n\n if (\n previousAdapter.threadId === newThreadId &&\n previousAdapter.threads === newThreads &&\n previousAdapter.archivedThreads === newArchivedThreads\n ) {\n return;\n }\n\n if (previousAdapter.threadId !== newThreadId) {\n this._mainThread._notifyEventSubscribers(\"switched-away\");\n this._mainThread = this.threadFactory(newThreadId);\n this._mainThread._notifyEventSubscribers(\"switched-to\");\n }\n\n this._notifySubscribers();\n }\n\n public switchToThread(threadId: string): void {\n if (this._mainThread?.threadId === threadId) return;\n const onSwitchToThread = this.adapter.onSwitchToThread;\n if (!onSwitchToThread)\n throw new Error(\n \"External store adapter does not support switching to thread\",\n );\n onSwitchToThread(threadId);\n }\n\n public switchToNewThread(): void {\n const onSwitchToNewThread = this.adapter.onSwitchToNewThread;\n if (!onSwitchToNewThread)\n throw new Error(\n \"External store adapter does not support switching to new thread\",\n );\n\n onSwitchToNewThread();\n }\n\n public async rename(threadId: string, newTitle: string): Promise<void> {\n const onRename = this.adapter.onRename;\n if (!onRename)\n throw new Error(\"External store adapter does not support renaming\");\n\n onRename(threadId, newTitle);\n }\n\n public async archive(threadId: string): Promise<void> {\n const onArchive = this.adapter.onArchive;\n if (!onArchive)\n throw new Error(\"External store adapter does not support archiving\");\n\n onArchive(threadId);\n }\n\n public async unarchive(threadId: string): Promise<void> {\n const onUnarchive = this.adapter.onUnarchive;\n if (!onUnarchive)\n throw new Error(\"External store adapter does not support unarchiving\");\n\n onUnarchive(threadId);\n }\n\n public async delete(threadId: string): Promise<void> {\n const onDelete = this.adapter.onDelete;\n if (!onDelete)\n throw new Error(\"External store adapter does not support deleting\");\n\n onDelete(threadId);\n }\n\n private _subscriptions = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AASA,IAAM,cAAc,OAAO,OAAO,CAAC,CAAC;AACpC,IAAM,oBAAoB;AAEnB,IAAM,qCAAN,MAEP;AAAA,EAeE,YACU,UAA0C,CAAC,GAC3C,eACR;AAFQ;AACA;AAER,SAAK,cAAc,KAAK,cAAc,iBAAiB;AAAA,EACzD;AAAA,EAnBA,IAAW,UAAU;AACnB,WAAO,KAAK,QAAQ,WAAW;AAAA,EACjC;AAAA,EAEA,IAAW,kBAAkB;AAC3B,WAAO,KAAK,QAAQ,mBAAmB;AAAA,EACzC;AAAA,EAEQ;AAAA,EAER,IAAW,aAAa;AACtB,WAAO,KAAK;AAAA,EACd;AAAA,EASO,sBAAsB,UAAkB;AAC7C,eAAW,UAAU,KAAK,SAAS;AACjC,UAAI,OAAO,aAAa,SAAU,QAAO;AAAA,IAC3C;AACA,eAAW,UAAU,KAAK,iBAAiB;AACzC,UAAI,OAAO,aAAa,SAAU,QAAO;AAAA,IAC3C;AACA,WAAO;AAAA,EACT;AAAA,EAEO,WAAW,SAAyC;AACzD,UAAM,kBAAkB,KAAK;AAC7B,SAAK,UAAU;AAEf,UAAM,cAAc,QAAQ,YAAY;AACxC,UAAM,aAAa,QAAQ,WAAW;AACtC,UAAM,qBAAqB,QAAQ,mBAAmB;AAEtD,QACE,gBAAgB,aAAa,eAC7B,gBAAgB,YAAY,cAC5B,gBAAgB,oBAAoB,oBACpC;AACA;AAAA,IACF;AAEA,QAAI,gBAAgB,aAAa,aAAa;AAC5C,WAAK,YAAY,wBAAwB,eAAe;AACxD,WAAK,cAAc,KAAK,cAAc,WAAW;AACjD,WAAK,YAAY,wBAAwB,aAAa;AAAA,IACxD;AAEA,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEO,eAAe,UAAwB;AAC5C,QAAI,KAAK,aAAa,aAAa,SAAU;AAC7C,UAAM,mBAAmB,KAAK,QAAQ;AACtC,QAAI,CAAC;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AACF,qBAAiB,QAAQ;AAAA,EAC3B;AAAA,EAEO,oBAA0B;AAC/B,UAAM,sBAAsB,KAAK,QAAQ;AACzC,QAAI,CAAC;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,wBAAoB;AAAA,EACtB;AAAA,EAEA,MAAa,OAAO,UAAkB,UAAiC;AACrE,UAAM,WAAW,KAAK,QAAQ;AAC9B,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,kDAAkD;AAEpE,aAAS,UAAU,QAAQ;AAAA,EAC7B;AAAA,EAEA,MAAa,QAAQ,UAAiC;AACpD,UAAM,YAAY,KAAK,QAAQ;AAC/B,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,mDAAmD;AAErE,cAAU,QAAQ;AAAA,EACpB;AAAA,EAEA,MAAa,UAAU,UAAiC;AACtD,UAAM,cAAc,KAAK,QAAQ;AACjC,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,qDAAqD;AAEvE,gBAAY,QAAQ;AAAA,EACtB;AAAA,EAEA,MAAa,OAAO,UAAiC;AACnD,UAAM,WAAW,KAAK,QAAQ;AAC9B,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,kDAAkD;AAEpE,aAAS,QAAQ;AAAA,EACnB;AAAA,EAEQ,iBAAiB,oBAAI,IAAgB;AAAA,EAEtC,UAAU,UAAmC;AAClD,SAAK,eAAe,IAAI,QAAQ;AAChC,WAAO,MAAM,KAAK,eAAe,OAAO,QAAQ;AAAA,EAClD;AAAA,EAEQ,qBAAqB;AAC3B,eAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,EACvD;AACF;","names":[]}
@@ -1,7 +1,7 @@
1
- // src/runtimes/external-store/ExternalStoreThreadManagementAdapter.tsx
1
+ // src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx
2
2
  var EMPTY_ARRAY = Object.freeze([]);
3
3
  var DEFAULT_THREAD_ID = "DEFAULT_THREAD_ID";
4
- var ExternalStoreThreadManagerRuntimeCore = class {
4
+ var ExternalStoreThreadListRuntimeCore = class {
5
5
  constructor(adapter = {}, threadFactory) {
6
6
  this.adapter = adapter;
7
7
  this.threadFactory = threadFactory;
@@ -17,6 +17,15 @@ var ExternalStoreThreadManagerRuntimeCore = class {
17
17
  get mainThread() {
18
18
  return this._mainThread;
19
19
  }
20
+ getThreadMetadataById(threadId) {
21
+ for (const thread of this.threads) {
22
+ if (thread.threadId === threadId) return thread;
23
+ }
24
+ for (const thread of this.archivedThreads) {
25
+ if (thread.threadId === threadId) return thread;
26
+ }
27
+ return void 0;
28
+ }
20
29
  setAdapter(adapter) {
21
30
  const previousAdapter = this.adapter;
22
31
  this.adapter = adapter;
@@ -84,6 +93,6 @@ var ExternalStoreThreadManagerRuntimeCore = class {
84
93
  }
85
94
  };
86
95
  export {
87
- ExternalStoreThreadManagerRuntimeCore
96
+ ExternalStoreThreadListRuntimeCore
88
97
  };
89
- //# sourceMappingURL=ExternalStoreThreadManagementAdapter.mjs.map
98
+ //# sourceMappingURL=ExternalStoreThreadListRuntimeCore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx"],"sourcesContent":["import type { Unsubscribe } from \"../../types\";\nimport { ExternalStoreThreadRuntimeCore } from \"./ExternalStoreThreadRuntimeCore\";\nimport { ThreadListRuntimeCore } from \"../core/ThreadListRuntimeCore\";\nimport { ExternalStoreThreadListAdapter } from \"./ExternalStoreAdapter\";\n\nexport type ExternalStoreThreadFactory = (\n threadId: string,\n) => ExternalStoreThreadRuntimeCore;\n\nconst EMPTY_ARRAY = Object.freeze([]);\nconst DEFAULT_THREAD_ID = \"DEFAULT_THREAD_ID\";\n\nexport class ExternalStoreThreadListRuntimeCore\n implements ThreadListRuntimeCore\n{\n public get threads() {\n return this.adapter.threads ?? EMPTY_ARRAY;\n }\n\n public get archivedThreads() {\n return this.adapter.archivedThreads ?? EMPTY_ARRAY;\n }\n\n private _mainThread: ExternalStoreThreadRuntimeCore;\n\n public get mainThread() {\n return this._mainThread;\n }\n\n constructor(\n private adapter: ExternalStoreThreadListAdapter = {},\n private threadFactory: ExternalStoreThreadFactory,\n ) {\n this._mainThread = this.threadFactory(DEFAULT_THREAD_ID);\n }\n\n public getThreadMetadataById(threadId: string) {\n for (const thread of this.threads) {\n if (thread.threadId === threadId) return thread;\n }\n for (const thread of this.archivedThreads) {\n if (thread.threadId === threadId) return thread;\n }\n return undefined;\n }\n\n public setAdapter(adapter: ExternalStoreThreadListAdapter) {\n const previousAdapter = this.adapter;\n this.adapter = adapter;\n\n const newThreadId = adapter.threadId ?? DEFAULT_THREAD_ID;\n const newThreads = adapter.threads ?? EMPTY_ARRAY;\n const newArchivedThreads = adapter.archivedThreads ?? EMPTY_ARRAY;\n\n if (\n previousAdapter.threadId === newThreadId &&\n previousAdapter.threads === newThreads &&\n previousAdapter.archivedThreads === newArchivedThreads\n ) {\n return;\n }\n\n if (previousAdapter.threadId !== newThreadId) {\n this._mainThread._notifyEventSubscribers(\"switched-away\");\n this._mainThread = this.threadFactory(newThreadId);\n this._mainThread._notifyEventSubscribers(\"switched-to\");\n }\n\n this._notifySubscribers();\n }\n\n public switchToThread(threadId: string): void {\n if (this._mainThread?.threadId === threadId) return;\n const onSwitchToThread = this.adapter.onSwitchToThread;\n if (!onSwitchToThread)\n throw new Error(\n \"External store adapter does not support switching to thread\",\n );\n onSwitchToThread(threadId);\n }\n\n public switchToNewThread(): void {\n const onSwitchToNewThread = this.adapter.onSwitchToNewThread;\n if (!onSwitchToNewThread)\n throw new Error(\n \"External store adapter does not support switching to new thread\",\n );\n\n onSwitchToNewThread();\n }\n\n public async rename(threadId: string, newTitle: string): Promise<void> {\n const onRename = this.adapter.onRename;\n if (!onRename)\n throw new Error(\"External store adapter does not support renaming\");\n\n onRename(threadId, newTitle);\n }\n\n public async archive(threadId: string): Promise<void> {\n const onArchive = this.adapter.onArchive;\n if (!onArchive)\n throw new Error(\"External store adapter does not support archiving\");\n\n onArchive(threadId);\n }\n\n public async unarchive(threadId: string): Promise<void> {\n const onUnarchive = this.adapter.onUnarchive;\n if (!onUnarchive)\n throw new Error(\"External store adapter does not support unarchiving\");\n\n onUnarchive(threadId);\n }\n\n public async delete(threadId: string): Promise<void> {\n const onDelete = this.adapter.onDelete;\n if (!onDelete)\n throw new Error(\"External store adapter does not support deleting\");\n\n onDelete(threadId);\n }\n\n private _subscriptions = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n}\n"],"mappings":";AASA,IAAM,cAAc,OAAO,OAAO,CAAC,CAAC;AACpC,IAAM,oBAAoB;AAEnB,IAAM,qCAAN,MAEP;AAAA,EAeE,YACU,UAA0C,CAAC,GAC3C,eACR;AAFQ;AACA;AAER,SAAK,cAAc,KAAK,cAAc,iBAAiB;AAAA,EACzD;AAAA,EAnBA,IAAW,UAAU;AACnB,WAAO,KAAK,QAAQ,WAAW;AAAA,EACjC;AAAA,EAEA,IAAW,kBAAkB;AAC3B,WAAO,KAAK,QAAQ,mBAAmB;AAAA,EACzC;AAAA,EAEQ;AAAA,EAER,IAAW,aAAa;AACtB,WAAO,KAAK;AAAA,EACd;AAAA,EASO,sBAAsB,UAAkB;AAC7C,eAAW,UAAU,KAAK,SAAS;AACjC,UAAI,OAAO,aAAa,SAAU,QAAO;AAAA,IAC3C;AACA,eAAW,UAAU,KAAK,iBAAiB;AACzC,UAAI,OAAO,aAAa,SAAU,QAAO;AAAA,IAC3C;AACA,WAAO;AAAA,EACT;AAAA,EAEO,WAAW,SAAyC;AACzD,UAAM,kBAAkB,KAAK;AAC7B,SAAK,UAAU;AAEf,UAAM,cAAc,QAAQ,YAAY;AACxC,UAAM,aAAa,QAAQ,WAAW;AACtC,UAAM,qBAAqB,QAAQ,mBAAmB;AAEtD,QACE,gBAAgB,aAAa,eAC7B,gBAAgB,YAAY,cAC5B,gBAAgB,oBAAoB,oBACpC;AACA;AAAA,IACF;AAEA,QAAI,gBAAgB,aAAa,aAAa;AAC5C,WAAK,YAAY,wBAAwB,eAAe;AACxD,WAAK,cAAc,KAAK,cAAc,WAAW;AACjD,WAAK,YAAY,wBAAwB,aAAa;AAAA,IACxD;AAEA,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEO,eAAe,UAAwB;AAC5C,QAAI,KAAK,aAAa,aAAa,SAAU;AAC7C,UAAM,mBAAmB,KAAK,QAAQ;AACtC,QAAI,CAAC;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AACF,qBAAiB,QAAQ;AAAA,EAC3B;AAAA,EAEO,oBAA0B;AAC/B,UAAM,sBAAsB,KAAK,QAAQ;AACzC,QAAI,CAAC;AACH,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,wBAAoB;AAAA,EACtB;AAAA,EAEA,MAAa,OAAO,UAAkB,UAAiC;AACrE,UAAM,WAAW,KAAK,QAAQ;AAC9B,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,kDAAkD;AAEpE,aAAS,UAAU,QAAQ;AAAA,EAC7B;AAAA,EAEA,MAAa,QAAQ,UAAiC;AACpD,UAAM,YAAY,KAAK,QAAQ;AAC/B,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,mDAAmD;AAErE,cAAU,QAAQ;AAAA,EACpB;AAAA,EAEA,MAAa,UAAU,UAAiC;AACtD,UAAM,cAAc,KAAK,QAAQ;AACjC,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,qDAAqD;AAEvE,gBAAY,QAAQ;AAAA,EACtB;AAAA,EAEA,MAAa,OAAO,UAAiC;AACnD,UAAM,WAAW,KAAK,QAAQ;AAC9B,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,kDAAkD;AAEpE,aAAS,QAAQ;AAAA,EACnB;AAAA,EAEQ,iBAAiB,oBAAI,IAAgB;AAAA,EAEtC,UAAU,UAAmC;AAClD,SAAK,eAAe,IAAI,QAAQ;AAChC,WAAO,MAAM,KAAK,eAAe,OAAO,QAAQ;AAAA,EAClD;AAAA,EAEQ,qBAAqB;AAC3B,eAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,EACvD;AACF;","names":[]}
@@ -25,7 +25,7 @@ export declare class ExternalStoreThreadRuntimeCore extends BaseThreadRuntimeCor
25
25
  attachments?: import("..").AttachmentAdapter | undefined;
26
26
  speech?: import("..").SpeechSynthesisAdapter | undefined;
27
27
  feedback?: import("..").FeedbackAdapter | undefined;
28
- threadManager?: import("./ExternalStoreAdapter").ExternalStoreThreadManagerAdapter | undefined;
28
+ threadList?: import("./ExternalStoreAdapter").ExternalStoreThreadListAdapter | undefined;
29
29
  } | undefined;
30
30
  suggestions: readonly ThreadSuggestion[];
31
31
  extras: unknown;
@@ -1,9 +1,9 @@
1
1
  import type { CoreMessage } from "../../types/AssistantTypes";
2
2
  import { BaseAssistantRuntimeCore } from "../core/BaseAssistantRuntimeCore";
3
3
  import { LocalRuntimeOptionsBase } from "./LocalRuntimeOptions";
4
- import { LocalThreadManagerRuntimeCore } from "./LocalThreadManagerRuntimeCore";
4
+ import { LocalThreadListRuntimeCore } from "./LocalThreadListRuntimeCore";
5
5
  export declare class LocalRuntimeCore extends BaseAssistantRuntimeCore {
6
- readonly threadManager: LocalThreadManagerRuntimeCore;
6
+ readonly threadList: LocalThreadListRuntimeCore;
7
7
  private _options;
8
8
  constructor(options: LocalRuntimeOptionsBase, initialMessages: readonly CoreMessage[] | undefined);
9
9
  setOptions(options: LocalRuntimeOptionsBase): void;
@@ -1 +1 @@
1
- {"version":3,"file":"LocalRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAehF,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,SAAgB,aAAa,gCAAC;IAE9B,OAAO,CAAC,QAAQ,CAA0B;gBAGxC,OAAO,EAAE,uBAAuB,EAChC,eAAe,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS;IAuB9C,UAAU,CAAC,OAAO,EAAE,uBAAuB;IAM3C,KAAK,CAAC,EACX,eAAe,GAChB,GAAE;QACD,eAAe,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;KACjD;CAQP"}
1
+ {"version":3,"file":"LocalRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAE5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAe1E,qBAAa,gBAAiB,SAAQ,wBAAwB;IAC5D,SAAgB,UAAU,6BAAC;IAE3B,OAAO,CAAC,QAAQ,CAA0B;gBAGxC,OAAO,EAAE,uBAAuB,EAChC,eAAe,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS;IAuB9C,UAAU,CAAC,OAAO,EAAE,uBAAuB;IAM3C,KAAK,CAAC,EACX,eAAe,GAChB,GAAE;QACD,eAAe,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,SAAS,CAAC;KACjD;CAQP"}
@@ -26,7 +26,7 @@ module.exports = __toCommonJS(LocalRuntimeCore_exports);
26
26
  var import_BaseAssistantRuntimeCore = require("../core/BaseAssistantRuntimeCore.cjs");
27
27
  var import_LocalThreadRuntimeCore = require("./LocalThreadRuntimeCore.cjs");
28
28
  var import_fromCoreMessage = require("../edge/converters/fromCoreMessage.cjs");
29
- var import_LocalThreadManagerRuntimeCore = require("./LocalThreadManagerRuntimeCore.cjs");
29
+ var import_LocalThreadListRuntimeCore = require("./LocalThreadListRuntimeCore.cjs");
30
30
  var getExportFromInitialMessages = (initialMessages) => {
31
31
  const messages = (0, import_fromCoreMessage.fromCoreMessages)(initialMessages);
32
32
  return {
@@ -37,12 +37,12 @@ var getExportFromInitialMessages = (initialMessages) => {
37
37
  };
38
38
  };
39
39
  var LocalRuntimeCore = class extends import_BaseAssistantRuntimeCore.BaseAssistantRuntimeCore {
40
- threadManager;
40
+ threadList;
41
41
  _options;
42
42
  constructor(options, initialMessages) {
43
43
  super();
44
44
  this._options = options;
45
- this.threadManager = new import_LocalThreadManagerRuntimeCore.LocalThreadManagerRuntimeCore((threadId, data) => {
45
+ this.threadList = new import_LocalThreadListRuntimeCore.LocalThreadListRuntimeCore((threadId, data) => {
46
46
  const thread = new import_LocalThreadRuntimeCore.LocalThreadRuntimeCore(
47
47
  this._proxyConfigProvider,
48
48
  threadId,
@@ -52,21 +52,21 @@ var LocalRuntimeCore = class extends import_BaseAssistantRuntimeCore.BaseAssista
52
52
  return thread;
53
53
  });
54
54
  if (initialMessages) {
55
- this.threadManager.mainThread.import(
55
+ this.threadList.mainThread.import(
56
56
  getExportFromInitialMessages(initialMessages)
57
57
  );
58
58
  }
59
59
  }
60
60
  setOptions(options) {
61
61
  this._options = options;
62
- this.threadManager.mainThread.setOptions(options);
62
+ this.threadList.mainThread.setOptions(options);
63
63
  }
64
64
  reset({
65
65
  initialMessages
66
66
  } = {}) {
67
- this.threadManager.switchToNewThread();
67
+ this.threadList.switchToNewThread();
68
68
  if (!initialMessages) return;
69
- this.threadManager.mainThread.import(
69
+ this.threadList.mainThread.import(
70
70
  getExportFromInitialMessages(initialMessages)
71
71
  );
72
72
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"sourcesContent":["import type { CoreMessage } from \"../../types/AssistantTypes\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport { fromCoreMessages } from \"../edge/converters/fromCoreMessage\";\nimport { LocalThreadManagerRuntimeCore } from \"./LocalThreadManagerRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\n\nconst getExportFromInitialMessages = (\n initialMessages: readonly CoreMessage[],\n): ExportedMessageRepository => {\n const messages = fromCoreMessages(initialMessages);\n return {\n messages: messages.map((m, idx) => ({\n parentId: messages[idx - 1]?.id ?? null,\n message: m,\n })),\n };\n};\n\nexport class LocalRuntimeCore extends BaseAssistantRuntimeCore {\n public readonly threadManager;\n\n private _options: LocalRuntimeOptionsBase;\n\n constructor(\n options: LocalRuntimeOptionsBase,\n initialMessages: readonly CoreMessage[] | undefined,\n ) {\n super();\n\n this._options = options;\n\n this.threadManager = new LocalThreadManagerRuntimeCore((threadId, data) => {\n const thread = new LocalThreadRuntimeCore(\n this._proxyConfigProvider,\n threadId,\n this._options,\n );\n thread.import(data);\n return thread;\n });\n\n if (initialMessages) {\n this.threadManager.mainThread.import(\n getExportFromInitialMessages(initialMessages),\n );\n }\n }\n\n public setOptions(options: LocalRuntimeOptionsBase) {\n this._options = options;\n\n this.threadManager.mainThread.setOptions(options);\n }\n\n public reset({\n initialMessages,\n }: {\n initialMessages?: readonly CoreMessage[] | undefined;\n } = {}) {\n this.threadManager.switchToNewThread();\n if (!initialMessages) return;\n\n this.threadManager.mainThread.import(\n getExportFromInitialMessages(initialMessages),\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sCAAyC;AACzC,oCAAuC;AAEvC,6BAAiC;AACjC,2CAA8C;AAG9C,IAAM,+BAA+B,CACnC,oBAC8B;AAC9B,QAAM,eAAW,yCAAiB,eAAe;AACjD,SAAO;AAAA,IACL,UAAU,SAAS,IAAI,CAAC,GAAG,SAAS;AAAA,MAClC,UAAU,SAAS,MAAM,CAAC,GAAG,MAAM;AAAA,MACnC,SAAS;AAAA,IACX,EAAE;AAAA,EACJ;AACF;AAEO,IAAM,mBAAN,cAA+B,yDAAyB;AAAA,EAC7C;AAAA,EAER;AAAA,EAER,YACE,SACA,iBACA;AACA,UAAM;AAEN,SAAK,WAAW;AAEhB,SAAK,gBAAgB,IAAI,mEAA8B,CAAC,UAAU,SAAS;AACzE,YAAM,SAAS,IAAI;AAAA,QACjB,KAAK;AAAA,QACL;AAAA,QACA,KAAK;AAAA,MACP;AACA,aAAO,OAAO,IAAI;AAClB,aAAO;AAAA,IACT,CAAC;AAED,QAAI,iBAAiB;AACnB,WAAK,cAAc,WAAW;AAAA,QAC5B,6BAA6B,eAAe;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAAA,EAEO,WAAW,SAAkC;AAClD,SAAK,WAAW;AAEhB,SAAK,cAAc,WAAW,WAAW,OAAO;AAAA,EAClD;AAAA,EAEO,MAAM;AAAA,IACX;AAAA,EACF,IAEI,CAAC,GAAG;AACN,SAAK,cAAc,kBAAkB;AACrC,QAAI,CAAC,gBAAiB;AAEtB,SAAK,cAAc,WAAW;AAAA,MAC5B,6BAA6B,eAAe;AAAA,IAC9C;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"sourcesContent":["import type { CoreMessage } from \"../../types/AssistantTypes\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport { fromCoreMessages } from \"../edge/converters/fromCoreMessage\";\nimport { LocalThreadListRuntimeCore } from \"./LocalThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\n\nconst getExportFromInitialMessages = (\n initialMessages: readonly CoreMessage[],\n): ExportedMessageRepository => {\n const messages = fromCoreMessages(initialMessages);\n return {\n messages: messages.map((m, idx) => ({\n parentId: messages[idx - 1]?.id ?? null,\n message: m,\n })),\n };\n};\n\nexport class LocalRuntimeCore extends BaseAssistantRuntimeCore {\n public readonly threadList;\n\n private _options: LocalRuntimeOptionsBase;\n\n constructor(\n options: LocalRuntimeOptionsBase,\n initialMessages: readonly CoreMessage[] | undefined,\n ) {\n super();\n\n this._options = options;\n\n this.threadList = new LocalThreadListRuntimeCore((threadId, data) => {\n const thread = new LocalThreadRuntimeCore(\n this._proxyConfigProvider,\n threadId,\n this._options,\n );\n thread.import(data);\n return thread;\n });\n\n if (initialMessages) {\n this.threadList.mainThread.import(\n getExportFromInitialMessages(initialMessages),\n );\n }\n }\n\n public setOptions(options: LocalRuntimeOptionsBase) {\n this._options = options;\n\n this.threadList.mainThread.setOptions(options);\n }\n\n public reset({\n initialMessages,\n }: {\n initialMessages?: readonly CoreMessage[] | undefined;\n } = {}) {\n this.threadList.switchToNewThread();\n if (!initialMessages) return;\n\n this.threadList.mainThread.import(\n getExportFromInitialMessages(initialMessages),\n );\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sCAAyC;AACzC,oCAAuC;AAEvC,6BAAiC;AACjC,wCAA2C;AAG3C,IAAM,+BAA+B,CACnC,oBAC8B;AAC9B,QAAM,eAAW,yCAAiB,eAAe;AACjD,SAAO;AAAA,IACL,UAAU,SAAS,IAAI,CAAC,GAAG,SAAS;AAAA,MAClC,UAAU,SAAS,MAAM,CAAC,GAAG,MAAM;AAAA,MACnC,SAAS;AAAA,IACX,EAAE;AAAA,EACJ;AACF;AAEO,IAAM,mBAAN,cAA+B,yDAAyB;AAAA,EAC7C;AAAA,EAER;AAAA,EAER,YACE,SACA,iBACA;AACA,UAAM;AAEN,SAAK,WAAW;AAEhB,SAAK,aAAa,IAAI,6DAA2B,CAAC,UAAU,SAAS;AACnE,YAAM,SAAS,IAAI;AAAA,QACjB,KAAK;AAAA,QACL;AAAA,QACA,KAAK;AAAA,MACP;AACA,aAAO,OAAO,IAAI;AAClB,aAAO;AAAA,IACT,CAAC;AAED,QAAI,iBAAiB;AACnB,WAAK,WAAW,WAAW;AAAA,QACzB,6BAA6B,eAAe;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAAA,EAEO,WAAW,SAAkC;AAClD,SAAK,WAAW;AAEhB,SAAK,WAAW,WAAW,WAAW,OAAO;AAAA,EAC/C;AAAA,EAEO,MAAM;AAAA,IACX;AAAA,EACF,IAEI,CAAC,GAAG;AACN,SAAK,WAAW,kBAAkB;AAClC,QAAI,CAAC,gBAAiB;AAEtB,SAAK,WAAW,WAAW;AAAA,MACzB,6BAA6B,eAAe;AAAA,IAC9C;AAAA,EACF;AACF;","names":[]}
@@ -2,7 +2,7 @@
2
2
  import { BaseAssistantRuntimeCore } from "../core/BaseAssistantRuntimeCore.mjs";
3
3
  import { LocalThreadRuntimeCore } from "./LocalThreadRuntimeCore.mjs";
4
4
  import { fromCoreMessages } from "../edge/converters/fromCoreMessage.mjs";
5
- import { LocalThreadManagerRuntimeCore } from "./LocalThreadManagerRuntimeCore.mjs";
5
+ import { LocalThreadListRuntimeCore } from "./LocalThreadListRuntimeCore.mjs";
6
6
  var getExportFromInitialMessages = (initialMessages) => {
7
7
  const messages = fromCoreMessages(initialMessages);
8
8
  return {
@@ -13,12 +13,12 @@ var getExportFromInitialMessages = (initialMessages) => {
13
13
  };
14
14
  };
15
15
  var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
16
- threadManager;
16
+ threadList;
17
17
  _options;
18
18
  constructor(options, initialMessages) {
19
19
  super();
20
20
  this._options = options;
21
- this.threadManager = new LocalThreadManagerRuntimeCore((threadId, data) => {
21
+ this.threadList = new LocalThreadListRuntimeCore((threadId, data) => {
22
22
  const thread = new LocalThreadRuntimeCore(
23
23
  this._proxyConfigProvider,
24
24
  threadId,
@@ -28,21 +28,21 @@ var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
28
28
  return thread;
29
29
  });
30
30
  if (initialMessages) {
31
- this.threadManager.mainThread.import(
31
+ this.threadList.mainThread.import(
32
32
  getExportFromInitialMessages(initialMessages)
33
33
  );
34
34
  }
35
35
  }
36
36
  setOptions(options) {
37
37
  this._options = options;
38
- this.threadManager.mainThread.setOptions(options);
38
+ this.threadList.mainThread.setOptions(options);
39
39
  }
40
40
  reset({
41
41
  initialMessages
42
42
  } = {}) {
43
- this.threadManager.switchToNewThread();
43
+ this.threadList.switchToNewThread();
44
44
  if (!initialMessages) return;
45
- this.threadManager.mainThread.import(
45
+ this.threadList.mainThread.import(
46
46
  getExportFromInitialMessages(initialMessages)
47
47
  );
48
48
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"sourcesContent":["import type { CoreMessage } from \"../../types/AssistantTypes\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport { fromCoreMessages } from \"../edge/converters/fromCoreMessage\";\nimport { LocalThreadManagerRuntimeCore } from \"./LocalThreadManagerRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\n\nconst getExportFromInitialMessages = (\n initialMessages: readonly CoreMessage[],\n): ExportedMessageRepository => {\n const messages = fromCoreMessages(initialMessages);\n return {\n messages: messages.map((m, idx) => ({\n parentId: messages[idx - 1]?.id ?? null,\n message: m,\n })),\n };\n};\n\nexport class LocalRuntimeCore extends BaseAssistantRuntimeCore {\n public readonly threadManager;\n\n private _options: LocalRuntimeOptionsBase;\n\n constructor(\n options: LocalRuntimeOptionsBase,\n initialMessages: readonly CoreMessage[] | undefined,\n ) {\n super();\n\n this._options = options;\n\n this.threadManager = new LocalThreadManagerRuntimeCore((threadId, data) => {\n const thread = new LocalThreadRuntimeCore(\n this._proxyConfigProvider,\n threadId,\n this._options,\n );\n thread.import(data);\n return thread;\n });\n\n if (initialMessages) {\n this.threadManager.mainThread.import(\n getExportFromInitialMessages(initialMessages),\n );\n }\n }\n\n public setOptions(options: LocalRuntimeOptionsBase) {\n this._options = options;\n\n this.threadManager.mainThread.setOptions(options);\n }\n\n public reset({\n initialMessages,\n }: {\n initialMessages?: readonly CoreMessage[] | undefined;\n } = {}) {\n this.threadManager.switchToNewThread();\n if (!initialMessages) return;\n\n this.threadManager.mainThread.import(\n getExportFromInitialMessages(initialMessages),\n );\n }\n}\n"],"mappings":";AACA,SAAS,gCAAgC;AACzC,SAAS,8BAA8B;AAEvC,SAAS,wBAAwB;AACjC,SAAS,qCAAqC;AAG9C,IAAM,+BAA+B,CACnC,oBAC8B;AAC9B,QAAM,WAAW,iBAAiB,eAAe;AACjD,SAAO;AAAA,IACL,UAAU,SAAS,IAAI,CAAC,GAAG,SAAS;AAAA,MAClC,UAAU,SAAS,MAAM,CAAC,GAAG,MAAM;AAAA,MACnC,SAAS;AAAA,IACX,EAAE;AAAA,EACJ;AACF;AAEO,IAAM,mBAAN,cAA+B,yBAAyB;AAAA,EAC7C;AAAA,EAER;AAAA,EAER,YACE,SACA,iBACA;AACA,UAAM;AAEN,SAAK,WAAW;AAEhB,SAAK,gBAAgB,IAAI,8BAA8B,CAAC,UAAU,SAAS;AACzE,YAAM,SAAS,IAAI;AAAA,QACjB,KAAK;AAAA,QACL;AAAA,QACA,KAAK;AAAA,MACP;AACA,aAAO,OAAO,IAAI;AAClB,aAAO;AAAA,IACT,CAAC;AAED,QAAI,iBAAiB;AACnB,WAAK,cAAc,WAAW;AAAA,QAC5B,6BAA6B,eAAe;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAAA,EAEO,WAAW,SAAkC;AAClD,SAAK,WAAW;AAEhB,SAAK,cAAc,WAAW,WAAW,OAAO;AAAA,EAClD;AAAA,EAEO,MAAM;AAAA,IACX;AAAA,EACF,IAEI,CAAC,GAAG;AACN,SAAK,cAAc,kBAAkB;AACrC,QAAI,CAAC,gBAAiB;AAEtB,SAAK,cAAc,WAAW;AAAA,MAC5B,6BAA6B,eAAe;AAAA,IAC9C;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalRuntimeCore.tsx"],"sourcesContent":["import type { CoreMessage } from \"../../types/AssistantTypes\";\nimport { BaseAssistantRuntimeCore } from \"../core/BaseAssistantRuntimeCore\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport { fromCoreMessages } from \"../edge/converters/fromCoreMessage\";\nimport { LocalThreadListRuntimeCore } from \"./LocalThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\n\nconst getExportFromInitialMessages = (\n initialMessages: readonly CoreMessage[],\n): ExportedMessageRepository => {\n const messages = fromCoreMessages(initialMessages);\n return {\n messages: messages.map((m, idx) => ({\n parentId: messages[idx - 1]?.id ?? null,\n message: m,\n })),\n };\n};\n\nexport class LocalRuntimeCore extends BaseAssistantRuntimeCore {\n public readonly threadList;\n\n private _options: LocalRuntimeOptionsBase;\n\n constructor(\n options: LocalRuntimeOptionsBase,\n initialMessages: readonly CoreMessage[] | undefined,\n ) {\n super();\n\n this._options = options;\n\n this.threadList = new LocalThreadListRuntimeCore((threadId, data) => {\n const thread = new LocalThreadRuntimeCore(\n this._proxyConfigProvider,\n threadId,\n this._options,\n );\n thread.import(data);\n return thread;\n });\n\n if (initialMessages) {\n this.threadList.mainThread.import(\n getExportFromInitialMessages(initialMessages),\n );\n }\n }\n\n public setOptions(options: LocalRuntimeOptionsBase) {\n this._options = options;\n\n this.threadList.mainThread.setOptions(options);\n }\n\n public reset({\n initialMessages,\n }: {\n initialMessages?: readonly CoreMessage[] | undefined;\n } = {}) {\n this.threadList.switchToNewThread();\n if (!initialMessages) return;\n\n this.threadList.mainThread.import(\n getExportFromInitialMessages(initialMessages),\n );\n }\n}\n"],"mappings":";AACA,SAAS,gCAAgC;AACzC,SAAS,8BAA8B;AAEvC,SAAS,wBAAwB;AACjC,SAAS,kCAAkC;AAG3C,IAAM,+BAA+B,CACnC,oBAC8B;AAC9B,QAAM,WAAW,iBAAiB,eAAe;AACjD,SAAO;AAAA,IACL,UAAU,SAAS,IAAI,CAAC,GAAG,SAAS;AAAA,MAClC,UAAU,SAAS,MAAM,CAAC,GAAG,MAAM;AAAA,MACnC,SAAS;AAAA,IACX,EAAE;AAAA,EACJ;AACF;AAEO,IAAM,mBAAN,cAA+B,yBAAyB;AAAA,EAC7C;AAAA,EAER;AAAA,EAER,YACE,SACA,iBACA;AACA,UAAM;AAEN,SAAK,WAAW;AAEhB,SAAK,aAAa,IAAI,2BAA2B,CAAC,UAAU,SAAS;AACnE,YAAM,SAAS,IAAI;AAAA,QACjB,KAAK;AAAA,QACL;AAAA,QACA,KAAK;AAAA,MACP;AACA,aAAO,OAAO,IAAI;AAClB,aAAO;AAAA,IACT,CAAC;AAED,QAAI,iBAAiB;AACnB,WAAK,WAAW,WAAW;AAAA,QACzB,6BAA6B,eAAe;AAAA,MAC9C;AAAA,IACF;AAAA,EACF;AAAA,EAEO,WAAW,SAAkC;AAClD,SAAK,WAAW;AAEhB,SAAK,WAAW,WAAW,WAAW,OAAO;AAAA,EAC/C;AAAA,EAEO,MAAM;AAAA,IACX;AAAA,EACF,IAEI,CAAC,GAAG;AACN,SAAK,WAAW,kBAAkB;AAClC,QAAI,CAAC,gBAAiB;AAEtB,SAAK,WAAW,WAAW;AAAA,MACzB,6BAA6B,eAAe;AAAA,IAC9C;AAAA,EACF;AACF;","names":[]}
@@ -1,23 +1,33 @@
1
1
  import type { Unsubscribe } from "../../types";
2
- import { ThreadManagerMetadata, ThreadManagerRuntimeCore } from "../core/ThreadManagerRuntimeCore";
2
+ import { ThreadListMetadata, ThreadListRuntimeCore } from "../core/ThreadListRuntimeCore";
3
3
  import { ExportedMessageRepository } from "../utils/MessageRepository";
4
4
  import { LocalThreadRuntimeCore } from "./LocalThreadRuntimeCore";
5
5
  export type LocalThreadData = {
6
6
  data: ExportedMessageRepository;
7
- metadata: ThreadManagerMetadata;
7
+ metadata: ThreadListMetadata;
8
8
  isArchived: boolean;
9
9
  };
10
10
  export type LocalThreadFactory = (threadId: string, data: ExportedMessageRepository) => LocalThreadRuntimeCore;
11
- export declare class LocalThreadManagerRuntimeCore implements ThreadManagerRuntimeCore {
11
+ export declare class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {
12
12
  private _threadFactory;
13
13
  private _threadData;
14
14
  private _threads;
15
15
  private _archivedThreads;
16
- get threads(): readonly ThreadManagerMetadata[];
17
- get archivedThreads(): readonly ThreadManagerMetadata[];
16
+ get threads(): readonly Readonly<{
17
+ threadId: string;
18
+ title?: string;
19
+ }>[];
20
+ get archivedThreads(): readonly Readonly<{
21
+ threadId: string;
22
+ title?: string;
23
+ }>[];
18
24
  private _mainThread;
19
25
  get mainThread(): LocalThreadRuntimeCore;
20
26
  constructor(_threadFactory: LocalThreadFactory);
27
+ getThreadMetadataById(threadId: string): Readonly<{
28
+ threadId: string;
29
+ title?: string;
30
+ }> | undefined;
21
31
  switchToThread(threadId: string): void;
22
32
  switchToNewThread(): void;
23
33
  private _performThreadSwitch;
@@ -30,4 +40,4 @@ export declare class LocalThreadManagerRuntimeCore implements ThreadManagerRunti
30
40
  subscribe(callback: () => void): Unsubscribe;
31
41
  private _notifySubscribers;
32
42
  }
33
- //# sourceMappingURL=LocalThreadManagerRuntimeCore.d.ts.map
43
+ //# sourceMappingURL=LocalThreadListRuntimeCore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LocalThreadListRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalThreadListRuntimeCore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AAEvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,yBAAyB,CAAC;IAChC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,CAC/B,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,yBAAyB,KAC5B,sBAAsB,CAAC;AAE5B,qBAAa,0BAA2B,YAAW,qBAAqB;IAoB1D,OAAO,CAAC,cAAc;IAnBlC,OAAO,CAAC,WAAW,CAAsC;IAEzD,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,gBAAgB,CAAqC;IAE7D,IAAW,OAAO;;;SAEjB;IAED,IAAW,eAAe;;;SAEzB;IAED,OAAO,CAAC,WAAW,CAAyB;IAE5C,IAAW,UAAU,IAAI,sBAAsB,CAE9C;gBAEmB,cAAc,EAAE,kBAAkB;IAW/C,qBAAqB,CAAC,QAAQ,EAAE,MAAM;;;;IAItC,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAUtC,iBAAiB,IAAI,IAAI;IAYhC,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,cAAc;IAyCT,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBzD,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,OAAO,CAAC,cAAc,CAAyB;IAExC,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,WAAW;IAKnD,OAAO,CAAC,kBAAkB;CAG3B"}
@@ -17,14 +17,14 @@ var __copyProps = (to, from, except, desc) => {
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
19
 
20
- // src/runtimes/local/LocalThreadManagerRuntimeCore.tsx
21
- var LocalThreadManagerRuntimeCore_exports = {};
22
- __export(LocalThreadManagerRuntimeCore_exports, {
23
- LocalThreadManagerRuntimeCore: () => LocalThreadManagerRuntimeCore
20
+ // src/runtimes/local/LocalThreadListRuntimeCore.tsx
21
+ var LocalThreadListRuntimeCore_exports = {};
22
+ __export(LocalThreadListRuntimeCore_exports, {
23
+ LocalThreadListRuntimeCore: () => LocalThreadListRuntimeCore
24
24
  });
25
- module.exports = __toCommonJS(LocalThreadManagerRuntimeCore_exports);
25
+ module.exports = __toCommonJS(LocalThreadListRuntimeCore_exports);
26
26
  var import_idUtils = require("../../utils/idUtils.cjs");
27
- var LocalThreadManagerRuntimeCore = class {
27
+ var LocalThreadListRuntimeCore = class {
28
28
  constructor(_threadFactory) {
29
29
  this._threadFactory = _threadFactory;
30
30
  const threadId = (0, import_idUtils.generateId)();
@@ -49,6 +49,9 @@ var LocalThreadManagerRuntimeCore = class {
49
49
  get mainThread() {
50
50
  return this._mainThread;
51
51
  }
52
+ getThreadMetadataById(threadId) {
53
+ return this._threadData.get(threadId)?.metadata;
54
+ }
52
55
  switchToThread(threadId) {
53
56
  if (this._mainThread.threadId === threadId) return;
54
57
  const data = this._threadData.get(threadId);
@@ -140,6 +143,6 @@ var LocalThreadManagerRuntimeCore = class {
140
143
  };
141
144
  // Annotate the CommonJS export names for ESM import in node:
142
145
  0 && (module.exports = {
143
- LocalThreadManagerRuntimeCore
146
+ LocalThreadListRuntimeCore
144
147
  });
145
- //# sourceMappingURL=LocalThreadManagerRuntimeCore.js.map
148
+ //# sourceMappingURL=LocalThreadListRuntimeCore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalThreadListRuntimeCore.tsx"],"sourcesContent":["import type { Unsubscribe } from \"../../types\";\nimport {\n ThreadListMetadata,\n ThreadListRuntimeCore,\n} from \"../core/ThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\nimport { generateId } from \"../../utils/idUtils\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\n\nexport type LocalThreadData = {\n data: ExportedMessageRepository;\n metadata: ThreadListMetadata;\n isArchived: boolean;\n};\n\nexport type LocalThreadFactory = (\n threadId: string,\n data: ExportedMessageRepository,\n) => LocalThreadRuntimeCore;\n\nexport class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {\n private _threadData = new Map<string, LocalThreadData>();\n\n private _threads: readonly ThreadListMetadata[] = [];\n private _archivedThreads: readonly ThreadListMetadata[] = [];\n\n public get threads() {\n return this._threads;\n }\n\n public get archivedThreads() {\n return this._archivedThreads;\n }\n\n private _mainThread: LocalThreadRuntimeCore;\n\n public get mainThread(): LocalThreadRuntimeCore {\n return this._mainThread;\n }\n\n constructor(private _threadFactory: LocalThreadFactory) {\n const threadId = generateId();\n this._threadData.set(threadId, {\n data: { messages: [] },\n metadata: { threadId },\n isArchived: false,\n });\n this._threads = [{ threadId }];\n this._mainThread = this._threadFactory(threadId, { messages: [] });\n }\n\n public getThreadMetadataById(threadId: string) {\n return this._threadData.get(threadId)?.metadata;\n }\n\n public switchToThread(threadId: string): void {\n if (this._mainThread.threadId === threadId) return;\n\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n const thread = this._threadFactory(threadId, data.data);\n this._performThreadSwitch(thread);\n }\n\n public switchToNewThread(): void {\n const threadId = generateId();\n this._threadData.set(threadId, {\n data: { messages: [] },\n metadata: { threadId },\n isArchived: false,\n });\n this._threads = [{ threadId }];\n const thread = this._threadFactory(threadId, { messages: [] });\n this._performThreadSwitch(thread);\n }\n\n private _performThreadSwitch(newThreadCore: LocalThreadRuntimeCore) {\n const data = this._threadData.get(this._mainThread.threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n const exprt = this._mainThread.export();\n data.data = exprt;\n\n this._mainThread._notifyEventSubscribers(\"switched-away\");\n this._mainThread = newThreadCore;\n newThreadCore._notifyEventSubscribers(\"switched-to\");\n\n this._notifySubscribers();\n }\n\n private _performMoveOp(\n threadId: string,\n operation: \"archive\" | \"unarchive\" | \"delete\",\n ) {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n if (operation === \"archive\" && data.isArchived) return;\n if (operation === \"unarchive\" && !data.isArchived) return;\n\n if (operation === \"archive\") {\n data.isArchived = true;\n this._archivedThreads = [...this._archivedThreads, data.metadata];\n }\n if (operation === \"unarchive\") {\n data.isArchived = false;\n this._threads = [...this._threads, data.metadata];\n }\n if (operation === \"delete\") {\n this._threadData.delete(threadId);\n }\n\n if (\n operation === \"archive\" ||\n (operation === \"delete\" && data.isArchived)\n ) {\n this._archivedThreads = this._archivedThreads.filter(\n (t) => t.threadId !== threadId,\n );\n }\n\n if (\n operation === \"unarchive\" ||\n (operation === \"delete\" && !data.isArchived)\n ) {\n this._threads = this._threads.filter((t) => t.threadId !== threadId);\n }\n\n this._notifySubscribers();\n }\n\n public async rename(threadId: string, newTitle: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n data.metadata = {\n ...data.metadata,\n title: newTitle,\n };\n\n const threadList = data.isArchived ? this.archivedThreads : this.threads;\n const idx = threadList.findIndex((t) => t.threadId === threadId);\n const updatedThreadList = threadList.toSpliced(idx, 1, data.metadata);\n if (data.isArchived) {\n this._archivedThreads = updatedThreadList;\n } else {\n this._threads = updatedThreadList;\n }\n this._notifySubscribers();\n }\n\n public async archive(threadId: string): Promise<void> {\n this._performMoveOp(threadId, \"archive\");\n }\n\n public async unarchive(threadId: string): Promise<void> {\n this._performMoveOp(threadId, \"unarchive\");\n }\n\n public async delete(threadId: string): Promise<void> {\n this._performMoveOp(threadId, \"delete\");\n }\n\n private _subscriptions = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,qBAA2B;AAcpB,IAAM,6BAAN,MAAkE;AAAA,EAoBvE,YAAoB,gBAAoC;AAApC;AAClB,UAAM,eAAW,2BAAW;AAC5B,SAAK,YAAY,IAAI,UAAU;AAAA,MAC7B,MAAM,EAAE,UAAU,CAAC,EAAE;AAAA,MACrB,UAAU,EAAE,SAAS;AAAA,MACrB,YAAY;AAAA,IACd,CAAC;AACD,SAAK,WAAW,CAAC,EAAE,SAAS,CAAC;AAC7B,SAAK,cAAc,KAAK,eAAe,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;AAAA,EACnE;AAAA,EA5BQ,cAAc,oBAAI,IAA6B;AAAA,EAE/C,WAA0C,CAAC;AAAA,EAC3C,mBAAkD,CAAC;AAAA,EAE3D,IAAW,UAAU;AACnB,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,IAAW,kBAAkB;AAC3B,WAAO,KAAK;AAAA,EACd;AAAA,EAEQ;AAAA,EAER,IAAW,aAAqC;AAC9C,WAAO,KAAK;AAAA,EACd;AAAA,EAaO,sBAAsB,UAAkB;AAC7C,WAAO,KAAK,YAAY,IAAI,QAAQ,GAAG;AAAA,EACzC;AAAA,EAEO,eAAe,UAAwB;AAC5C,QAAI,KAAK,YAAY,aAAa,SAAU;AAE5C,UAAM,OAAO,KAAK,YAAY,IAAI,QAAQ;AAC1C,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,kBAAkB;AAE7C,UAAM,SAAS,KAAK,eAAe,UAAU,KAAK,IAAI;AACtD,SAAK,qBAAqB,MAAM;AAAA,EAClC;AAAA,EAEO,oBAA0B;AAC/B,UAAM,eAAW,2BAAW;AAC5B,SAAK,YAAY,IAAI,UAAU;AAAA,MAC7B,MAAM,EAAE,UAAU,CAAC,EAAE;AAAA,MACrB,UAAU,EAAE,SAAS;AAAA,MACrB,YAAY;AAAA,IACd,CAAC;AACD,SAAK,WAAW,CAAC,EAAE,SAAS,CAAC;AAC7B,UAAM,SAAS,KAAK,eAAe,UAAU,EAAE,UAAU,CAAC,EAAE,CAAC;AAC7D,SAAK,qBAAqB,MAAM;AAAA,EAClC;AAAA,EAEQ,qBAAqB,eAAuC;AAClE,UAAM,OAAO,KAAK,YAAY,IAAI,KAAK,YAAY,QAAQ;AAC3D,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,kBAAkB;AAE7C,UAAM,QAAQ,KAAK,YAAY,OAAO;AACtC,SAAK,OAAO;AAEZ,SAAK,YAAY,wBAAwB,eAAe;AACxD,SAAK,cAAc;AACnB,kBAAc,wBAAwB,aAAa;AAEnD,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEQ,eACN,UACA,WACA;AACA,UAAM,OAAO,KAAK,YAAY,IAAI,QAAQ;AAC1C,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,kBAAkB;AAE7C,QAAI,cAAc,aAAa,KAAK,WAAY;AAChD,QAAI,cAAc,eAAe,CAAC,KAAK,WAAY;AAEnD,QAAI,cAAc,WAAW;AAC3B,WAAK,aAAa;AAClB,WAAK,mBAAmB,CAAC,GAAG,KAAK,kBAAkB,KAAK,QAAQ;AAAA,IAClE;AACA,QAAI,cAAc,aAAa;AAC7B,WAAK,aAAa;AAClB,WAAK,WAAW,CAAC,GAAG,KAAK,UAAU,KAAK,QAAQ;AAAA,IAClD;AACA,QAAI,cAAc,UAAU;AAC1B,WAAK,YAAY,OAAO,QAAQ;AAAA,IAClC;AAEA,QACE,cAAc,aACb,cAAc,YAAY,KAAK,YAChC;AACA,WAAK,mBAAmB,KAAK,iBAAiB;AAAA,QAC5C,CAAC,MAAM,EAAE,aAAa;AAAA,MACxB;AAAA,IACF;AAEA,QACE,cAAc,eACb,cAAc,YAAY,CAAC,KAAK,YACjC;AACA,WAAK,WAAW,KAAK,SAAS,OAAO,CAAC,MAAM,EAAE,aAAa,QAAQ;AAAA,IACrE;AAEA,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEA,MAAa,OAAO,UAAkB,UAAiC;AACrE,UAAM,OAAO,KAAK,YAAY,IAAI,QAAQ;AAC1C,QAAI,CAAC,KAAM,OAAM,IAAI,MAAM,kBAAkB;AAE7C,SAAK,WAAW;AAAA,MACd,GAAG,KAAK;AAAA,MACR,OAAO;AAAA,IACT;AAEA,UAAM,aAAa,KAAK,aAAa,KAAK,kBAAkB,KAAK;AACjE,UAAM,MAAM,WAAW,UAAU,CAAC,MAAM,EAAE,aAAa,QAAQ;AAC/D,UAAM,oBAAoB,WAAW,UAAU,KAAK,GAAG,KAAK,QAAQ;AACpE,QAAI,KAAK,YAAY;AACnB,WAAK,mBAAmB;AAAA,IAC1B,OAAO;AACL,WAAK,WAAW;AAAA,IAClB;AACA,SAAK,mBAAmB;AAAA,EAC1B;AAAA,EAEA,MAAa,QAAQ,UAAiC;AACpD,SAAK,eAAe,UAAU,SAAS;AAAA,EACzC;AAAA,EAEA,MAAa,UAAU,UAAiC;AACtD,SAAK,eAAe,UAAU,WAAW;AAAA,EAC3C;AAAA,EAEA,MAAa,OAAO,UAAiC;AACnD,SAAK,eAAe,UAAU,QAAQ;AAAA,EACxC;AAAA,EAEQ,iBAAiB,oBAAI,IAAgB;AAAA,EAEtC,UAAU,UAAmC;AAClD,SAAK,eAAe,IAAI,QAAQ;AAChC,WAAO,MAAM,KAAK,eAAe,OAAO,QAAQ;AAAA,EAClD;AAAA,EAEQ,qBAAqB;AAC3B,eAAW,YAAY,KAAK,eAAgB,UAAS;AAAA,EACvD;AACF;","names":[]}
@@ -1,6 +1,6 @@
1
- // src/runtimes/local/LocalThreadManagerRuntimeCore.tsx
1
+ // src/runtimes/local/LocalThreadListRuntimeCore.tsx
2
2
  import { generateId } from "../../utils/idUtils.mjs";
3
- var LocalThreadManagerRuntimeCore = class {
3
+ var LocalThreadListRuntimeCore = class {
4
4
  constructor(_threadFactory) {
5
5
  this._threadFactory = _threadFactory;
6
6
  const threadId = generateId();
@@ -25,6 +25,9 @@ var LocalThreadManagerRuntimeCore = class {
25
25
  get mainThread() {
26
26
  return this._mainThread;
27
27
  }
28
+ getThreadMetadataById(threadId) {
29
+ return this._threadData.get(threadId)?.metadata;
30
+ }
28
31
  switchToThread(threadId) {
29
32
  if (this._mainThread.threadId === threadId) return;
30
33
  const data = this._threadData.get(threadId);
@@ -115,6 +118,6 @@ var LocalThreadManagerRuntimeCore = class {
115
118
  }
116
119
  };
117
120
  export {
118
- LocalThreadManagerRuntimeCore
121
+ LocalThreadListRuntimeCore
119
122
  };
120
- //# sourceMappingURL=LocalThreadManagerRuntimeCore.mjs.map
123
+ //# sourceMappingURL=LocalThreadListRuntimeCore.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalThreadListRuntimeCore.tsx"],"sourcesContent":["import type { Unsubscribe } from \"../../types\";\nimport {\n ThreadListMetadata,\n ThreadListRuntimeCore,\n} from \"../core/ThreadListRuntimeCore\";\nimport { ExportedMessageRepository } from \"../utils/MessageRepository\";\nimport { generateId } from \"../../utils/idUtils\";\nimport { LocalThreadRuntimeCore } from \"./LocalThreadRuntimeCore\";\n\nexport type LocalThreadData = {\n data: ExportedMessageRepository;\n metadata: ThreadListMetadata;\n isArchived: boolean;\n};\n\nexport type LocalThreadFactory = (\n threadId: string,\n data: ExportedMessageRepository,\n) => LocalThreadRuntimeCore;\n\nexport class LocalThreadListRuntimeCore implements ThreadListRuntimeCore {\n private _threadData = new Map<string, LocalThreadData>();\n\n private _threads: readonly ThreadListMetadata[] = [];\n private _archivedThreads: readonly ThreadListMetadata[] = [];\n\n public get threads() {\n return this._threads;\n }\n\n public get archivedThreads() {\n return this._archivedThreads;\n }\n\n private _mainThread: LocalThreadRuntimeCore;\n\n public get mainThread(): LocalThreadRuntimeCore {\n return this._mainThread;\n }\n\n constructor(private _threadFactory: LocalThreadFactory) {\n const threadId = generateId();\n this._threadData.set(threadId, {\n data: { messages: [] },\n metadata: { threadId },\n isArchived: false,\n });\n this._threads = [{ threadId }];\n this._mainThread = this._threadFactory(threadId, { messages: [] });\n }\n\n public getThreadMetadataById(threadId: string) {\n return this._threadData.get(threadId)?.metadata;\n }\n\n public switchToThread(threadId: string): void {\n if (this._mainThread.threadId === threadId) return;\n\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n const thread = this._threadFactory(threadId, data.data);\n this._performThreadSwitch(thread);\n }\n\n public switchToNewThread(): void {\n const threadId = generateId();\n this._threadData.set(threadId, {\n data: { messages: [] },\n metadata: { threadId },\n isArchived: false,\n });\n this._threads = [{ threadId }];\n const thread = this._threadFactory(threadId, { messages: [] });\n this._performThreadSwitch(thread);\n }\n\n private _performThreadSwitch(newThreadCore: LocalThreadRuntimeCore) {\n const data = this._threadData.get(this._mainThread.threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n const exprt = this._mainThread.export();\n data.data = exprt;\n\n this._mainThread._notifyEventSubscribers(\"switched-away\");\n this._mainThread = newThreadCore;\n newThreadCore._notifyEventSubscribers(\"switched-to\");\n\n this._notifySubscribers();\n }\n\n private _performMoveOp(\n threadId: string,\n operation: \"archive\" | \"unarchive\" | \"delete\",\n ) {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n if (operation === \"archive\" && data.isArchived) return;\n if (operation === \"unarchive\" && !data.isArchived) return;\n\n if (operation === \"archive\") {\n data.isArchived = true;\n this._archivedThreads = [...this._archivedThreads, data.metadata];\n }\n if (operation === \"unarchive\") {\n data.isArchived = false;\n this._threads = [...this._threads, data.metadata];\n }\n if (operation === \"delete\") {\n this._threadData.delete(threadId);\n }\n\n if (\n operation === \"archive\" ||\n (operation === \"delete\" && data.isArchived)\n ) {\n this._archivedThreads = this._archivedThreads.filter(\n (t) => t.threadId !== threadId,\n );\n }\n\n if (\n operation === \"unarchive\" ||\n (operation === \"delete\" && !data.isArchived)\n ) {\n this._threads = this._threads.filter((t) => t.threadId !== threadId);\n }\n\n this._notifySubscribers();\n }\n\n public async rename(threadId: string, newTitle: string): Promise<void> {\n const data = this._threadData.get(threadId);\n if (!data) throw new Error(\"Thread not found\");\n\n data.metadata = {\n ...data.metadata,\n title: newTitle,\n };\n\n const threadList = data.isArchived ? this.archivedThreads : this.threads;\n const idx = threadList.findIndex((t) => t.threadId === threadId);\n const updatedThreadList = threadList.toSpliced(idx, 1, data.metadata);\n if (data.isArchived) {\n this._archivedThreads = updatedThreadList;\n } else {\n this._threads = updatedThreadList;\n }\n this._notifySubscribers();\n }\n\n public async archive(threadId: string): Promise<void> {\n this._performMoveOp(threadId, \"archive\");\n }\n\n public async unarchive(threadId: string): Promise<void> {\n this._performMoveOp(threadId, \"unarchive\");\n }\n\n public async delete(threadId: string): Promise<void> {\n this._performMoveOp(threadId, \"delete\");\n }\n\n private _subscriptions = new Set<() => void>();\n\n public subscribe(callback: () => void): Unsubscribe {\n this._subscriptions.add(callback);\n return () => this._subscriptions.delete(callback);\n }\n\n private _notifySubscribers() {\n for (const callback of this._subscriptions) callback();\n }\n}\n"],"mappings":"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","names":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"LocalThreadRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalThreadRuntimeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EAEd,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,qBAAa,sBACX,SAAQ,qBACR,YAAW,iBAAiB;aAwBV,QAAQ,EAAE,MAAM;IAtBlC,SAAgB,YAAY;;;;;;;;;MAS1B;IAEF,OAAO,CAAC,eAAe,CAAgC;IAEvD,SAAgB,UAAU,SAAS;IACnC,SAAgB,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAM;IAE9D,IAAW,QAAQ;;;;;MAElB;gBAGC,cAAc,EAAE,mBAAmB,EACnB,QAAQ,EAAE,MAAM,EAChC,OAAO,EAAE,uBAAuB;IAOlC,OAAO,CAAC,QAAQ,CAA2B;IAE3C,IAAW,MAAM,cAEhB;IAEM,UAAU,CAAC,OAAO,EAAE,uBAAuB;IA4BrC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAc7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAoB/C,gBAAgB;IA+GvB,SAAS;IAKT,aAAa,CAAC,EACnB,SAAS,EACT,UAAU,EACV,MAAM,GACP,EAAE,oBAAoB;CAkCxB"}
1
+ {"version":3,"file":"LocalThreadRuntimeCore.d.ts","sourceRoot":"","sources":["../../../src/runtimes/local/LocalThreadRuntimeCore.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EAEd,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,qBAAa,sBACX,SAAQ,qBACR,YAAW,iBAAiB;aAwBV,QAAQ,EAAE,MAAM;IAtBlC,SAAgB,YAAY;;;;;;;;;MAS1B;IAEF,OAAO,CAAC,eAAe,CAAgC;IAEvD,SAAgB,UAAU,SAAS;IACnC,SAAgB,WAAW,EAAE,SAAS,gBAAgB,EAAE,CAAM;IAE9D,IAAW,QAAQ;;;;;MAElB;gBAGC,cAAc,EAAE,mBAAmB,EACnB,QAAQ,EAAE,MAAM,EAChC,OAAO,EAAE,uBAAuB;IAOlC,OAAO,CAAC,QAAQ,CAA2B;IAE3C,IAAW,MAAM,cAEhB;IAEM,UAAU,CAAC,OAAO,EAAE,uBAAuB;IA4BrC,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;YAoB/C,gBAAgB;IA+GvB,SAAS;IAKT,aAAa,CAAC,EACnB,SAAS,EACT,UAAU,EACV,MAAM,GACP,EAAE,oBAAoB;CAkCxB"}
@@ -79,7 +79,8 @@ var LocalThreadRuntimeCore = class extends import_BaseThreadRuntimeCore.BaseThre
79
79
  attachments: message.attachments
80
80
  });
81
81
  this.repository.addOrUpdateMessage(message.parentId, newMessage);
82
- if (message.role === "user") {
82
+ const startRun = message.startRun ?? message.role === "user";
83
+ if (startRun) {
83
84
  await this.startRun(newMessage.id);
84
85
  } else {
85
86
  this.repository.resetHead(newMessage.id);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/LocalThreadRuntimeCore.tsx"],"sourcesContent":["import { generateId } from \"../../internal\";\nimport type {\n ModelConfigProvider,\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types\";\nimport { fromCoreMessage } from \"../edge\";\nimport type { ChatModelRunResult } from \"./ChatModelAdapter\";\nimport { shouldContinue } from \"./shouldContinue\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport {\n AddToolResultOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n} from \"../core/ThreadRuntimeCore\";\nimport { BaseThreadRuntimeCore } from \"../core/BaseThreadRuntimeCore\";\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n edit: true,\n reload: true,\n cancel: true,\n unstable_copy: true,\n speech: false,\n attachments: false,\n feedback: false,\n };\n\n private abortController: AbortController | null = null;\n\n public readonly isDisabled = false;\n public readonly suggestions: readonly ThreadSuggestion[] = [];\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n configProvider: ModelConfigProvider,\n public readonly threadId: string,\n options: LocalRuntimeOptionsBase,\n ) {\n super(configProvider);\n\n this.setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n public get extras() {\n return undefined;\n }\n\n public setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n }\n\n public async append(message: AppendMessage): Promise<void> {\n const newMessage = fromCoreMessage(message, {\n attachments: message.attachments,\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n\n if (message.role === \"user\") {\n await this.startRun(newMessage.id);\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n }\n }\n\n public async startRun(parentId: string | null): Promise<void> {\n this.repository.resetHead(parentId);\n\n // add assistant message\n const id = generateId();\n let message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n createdAt: new Date(),\n };\n\n this._notifyEventSubscribers(\"run-start\");\n\n do {\n message = await this.performRoundtrip(parentId, message);\n } while (shouldContinue(message));\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n ) {\n const messages = this.repository.getMessages();\n\n // abort existing run\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n const initialContent = message.content;\n const initialSteps = message.metadata?.steps;\n const initalCustom = message.metadata?.custom;\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n const newSteps = m.metadata?.steps || m.metadata?.roundtrips;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n // TODO deprecated, remove in v0.6\n ...(steps ? { roundtrips: steps } : undefined),\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(steps ? { roundtrips: steps, steps } : undefined),\n ...(m.metadata?.custom\n ? {\n custom: { ...(initalCustom ?? {}), ...m.metadata.custom },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps\n ? this._options.maxSteps\n : (this._options.maxToolRoundtrips ?? 1) + 1;\n\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n // reached max tool steps\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n } else {\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n }\n\n try {\n const promiseOrGenerator = this.adapters.chatModel.run({\n messages,\n abortSignal: this.abortController.signal,\n config: this.getModelConfig(),\n onUpdate: updateMessage,\n unstable_assistantMessageId: message.id,\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n this.abortController = null;\n\n if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n this.abortController = null;\n\n // TODO this should be handled by the run result stream\n if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: { type: \"incomplete\", reason: \"error\", error: e },\n });\n\n throw e;\n }\n }\n return message;\n }\n\n public cancelRun() {\n this.abortController?.abort();\n this.abortController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n }: AddToolResultOptions) {\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (!c.result) added = true;\n return {\n ...c,\n result,\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n\n if (added && shouldContinue(message)) {\n this.performRoundtrip(parentId, message);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA2B;AAM3B,kBAAgC;AAEhC,4BAA+B;AAO/B,mCAAsC;AAE/B,IAAM,yBAAN,cACG,mDAEV;AAAA,EAqBE,YACE,gBACgB,UAChB,SACA;AACA,UAAM,cAAc;AAHJ;AAKhB,SAAK,WAAW,OAAO;AAAA,EACzB;AAAA,EA5BgB,eAAe;AAAA,IAC7B,gBAAgB;AAAA,IAChB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EAEQ,kBAA0C;AAAA,EAElC,aAAa;AAAA,EACb,cAA2C,CAAC;AAAA,EAE5D,IAAW,WAAW;AACpB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAYQ;AAAA,EAER,IAAW,SAAS;AAClB,WAAO;AAAA,EACT;AAAA,EAEO,WAAW,SAAkC;AAClD,QAAI,KAAK,aAAa,QAAS;AAE/B,SAAK,WAAW;AAEhB,QAAI,aAAa;AAEjB,UAAM,WAAW,QAAQ,UAAU,WAAW;AAC9C,QAAI,KAAK,aAAa,WAAW,UAAU;AACzC,WAAK,aAAa,SAAS;AAC3B,mBAAa;AAAA,IACf;AAEA,UAAM,YAAY,QAAQ,UAAU,gBAAgB;AACpD,QAAI,KAAK,aAAa,gBAAgB,WAAW;AAC/C,WAAK,aAAa,cAAc;AAChC,mBAAa;AAAA,IACf;AAEA,UAAM,cAAc,QAAQ,UAAU,aAAa;AACnD,QAAI,KAAK,aAAa,aAAa,aAAa;AAC9C,WAAK,aAAa,WAAW;AAC7B,mBAAa;AAAA,IACf;AAEA,QAAI,WAAY,MAAK,mBAAmB;AAAA,EAC1C;AAAA,EAEA,MAAa,OAAO,SAAuC;AACzD,UAAM,iBAAa,6BAAgB,SAAS;AAAA,MAC1C,aAAa,QAAQ;AAAA,IACvB,CAAC;AACD,SAAK,WAAW,mBAAmB,QAAQ,UAAU,UAAU;AAE/D,QAAI,QAAQ,SAAS,QAAQ;AAC3B,YAAM,KAAK,SAAS,WAAW,EAAE;AAAA,IACnC,OAAO;AACL,WAAK,WAAW,UAAU,WAAW,EAAE;AACvC,WAAK,mBAAmB;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAa,SAAS,UAAwC;AAC5D,SAAK,WAAW,UAAU,QAAQ;AAGlC,UAAM,SAAK,4BAAW;AACtB,QAAI,UAAkC;AAAA,MACpC;AAAA,MACA,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,UAAU;AAAA,MAC1B,SAAS,CAAC;AAAA,MACV,WAAW,oBAAI,KAAK;AAAA,IACtB;AAEA,SAAK,wBAAwB,WAAW;AAExC,OAAG;AACD,gBAAU,MAAM,KAAK,iBAAiB,UAAU,OAAO;AAAA,IACzD,aAAS,sCAAe,OAAO;AAAA,EACjC;AAAA,EAEA,MAAc,iBACZ,UACA,SACA;AACA,UAAM,WAAW,KAAK,WAAW,YAAY;AAG7C,SAAK,iBAAiB,MAAM;AAC5B,SAAK,kBAAkB,IAAI,gBAAgB;AAE3C,UAAM,iBAAiB,QAAQ;AAC/B,UAAM,eAAe,QAAQ,UAAU;AACvC,UAAM,eAAe,QAAQ,UAAU;AACvC,UAAM,gBAAgB,CAAC,MAAmC;AACxD,YAAM,WAAW,EAAE,UAAU,SAAS,EAAE,UAAU;AAClD,YAAMA,SAAQ,WACV,CAAC,GAAI,gBAAgB,CAAC,GAAI,GAAG,QAAQ,IACrC;AAEJ,gBAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAI,EAAE,UACF,EAAE,SAAS,CAAC,GAAG,gBAAgB,GAAI,EAAE,WAAW,CAAC,CAAE,EAAE,IACrD;AAAA,QACJ,QAAQ,EAAE,UAAU,QAAQ;AAAA;AAAA,QAE5B,GAAIA,SAAQ,EAAE,YAAYA,OAAM,IAAI;AAAA,QACpC,GAAI,EAAE,WACF;AAAA,UACE,UAAU;AAAA,YACR,GAAG,QAAQ;AAAA,YACX,GAAIA,SAAQ,EAAE,YAAYA,QAAO,OAAAA,OAAM,IAAI;AAAA,YAC3C,GAAI,EAAE,UAAU,SACZ;AAAA,cACE,QAAQ,EAAE,GAAI,gBAAgB,CAAC,GAAI,GAAG,EAAE,SAAS,OAAO;AAAA,YAC1D,IACA;AAAA,UACN;AAAA,QACF,IACA;AAAA,MACN;AACA,WAAK,WAAW,mBAAmB,UAAU,OAAO;AACpD,WAAK,mBAAmB;AAAA,IAC1B;AAEA,UAAM,WAAW,KAAK,SAAS,WAC3B,KAAK,SAAS,YACb,KAAK,SAAS,qBAAqB,KAAK;AAE7C,UAAM,QAAQ,QAAQ,UAAU,OAAO,UAAU;AACjD,QAAI,SAAS,UAAU;AAErB,oBAAc;AAAA,QACZ,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT,OAAO;AACL,oBAAc;AAAA,QACZ,QAAQ;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI;AACF,YAAM,qBAAqB,KAAK,SAAS,UAAU,IAAI;AAAA,QACrD;AAAA,QACA,aAAa,KAAK,gBAAgB;AAAA,QAClC,QAAQ,KAAK,eAAe;AAAA,QAC5B,UAAU;AAAA,QACV,6BAA6B,QAAQ;AAAA,MACvC,CAAC;AAGD,UAAI,OAAO,iBAAiB,oBAAoB;AAC9C,yBAAiB,KAAK,oBAAoB;AACxC,wBAAc,CAAC;AAAA,QACjB;AAAA,MACF,OAAO;AACL,sBAAc,MAAM,kBAAkB;AAAA,MACxC;AAEA,WAAK,kBAAkB;AAEvB,UAAI,QAAQ,OAAO,SAAS,WAAW;AACrC,sBAAc;AAAA,UACZ,QAAQ,EAAE,MAAM,YAAY,QAAQ,UAAU;AAAA,QAChD,CAAC;AAAA,MACH;AAAA,IACF,SAAS,GAAG;AACV,WAAK,kBAAkB;AAGvB,UAAI,aAAa,SAAS,EAAE,SAAS,cAAc;AACjD,sBAAc;AAAA,UACZ,QAAQ,EAAE,MAAM,cAAc,QAAQ,YAAY;AAAA,QACpD,CAAC;AAAA,MACH,OAAO;AACL,sBAAc;AAAA,UACZ,QAAQ,EAAE,MAAM,cAAc,QAAQ,SAAS,OAAO,EAAE;AAAA,QAC1D,CAAC;AAED,cAAM;AAAA,MACR;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEO,YAAY;AACjB,SAAK,iBAAiB,MAAM;AAC5B,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEO,cAAc;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAyB;AACvB,UAAM,cAAc,KAAK,WAAW,WAAW,SAAS;AACxD,UAAM,EAAE,SAAS,IAAI;AACrB,QAAI,EAAE,QAAQ,IAAI;AAElB,QAAI,QAAQ,SAAS;AACnB,YAAM,IAAI,MAAM,mDAAmD;AAErE,QAAI,QAAQ;AACZ,QAAI,QAAQ;AACZ,UAAM,aAAa,QAAQ,QAAQ,IAAI,CAAC,MAAM;AAC5C,UAAI,EAAE,SAAS,YAAa,QAAO;AACnC,UAAI,EAAE,eAAe,WAAY,QAAO;AACxC,cAAQ;AACR,UAAI,CAAC,EAAE,OAAQ,SAAQ;AACvB,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAED,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,oDAAoD;AAEtE,cAAU;AAAA,MACR,GAAG;AAAA,MACH,SAAS;AAAA,IACX;AACA,SAAK,WAAW,mBAAmB,UAAU,OAAO;AAEpD,QAAI,aAAS,sCAAe,OAAO,GAAG;AACpC,WAAK,iBAAiB,UAAU,OAAO;AAAA,IACzC;AAAA,EACF;AACF;","names":["steps"]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalThreadRuntimeCore.tsx"],"sourcesContent":["import { generateId } from \"../../internal\";\nimport type {\n ModelConfigProvider,\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types\";\nimport { fromCoreMessage } from \"../edge\";\nimport type { ChatModelRunResult } from \"./ChatModelAdapter\";\nimport { shouldContinue } from \"./shouldContinue\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport {\n AddToolResultOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n} from \"../core/ThreadRuntimeCore\";\nimport { BaseThreadRuntimeCore } from \"../core/BaseThreadRuntimeCore\";\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n edit: true,\n reload: true,\n cancel: true,\n unstable_copy: true,\n speech: false,\n attachments: false,\n feedback: false,\n };\n\n private abortController: AbortController | null = null;\n\n public readonly isDisabled = false;\n public readonly suggestions: readonly ThreadSuggestion[] = [];\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n configProvider: ModelConfigProvider,\n public readonly threadId: string,\n options: LocalRuntimeOptionsBase,\n ) {\n super(configProvider);\n\n this.setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n public get extras() {\n return undefined;\n }\n\n public setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n }\n\n public async append(message: AppendMessage): Promise<void> {\n const newMessage = fromCoreMessage(message, {\n attachments: message.attachments,\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n\n const startRun = message.startRun ?? message.role === \"user\";\n if (startRun) {\n await this.startRun(newMessage.id);\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n }\n }\n\n public async startRun(parentId: string | null): Promise<void> {\n this.repository.resetHead(parentId);\n\n // add assistant message\n const id = generateId();\n let message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n createdAt: new Date(),\n };\n\n this._notifyEventSubscribers(\"run-start\");\n\n do {\n message = await this.performRoundtrip(parentId, message);\n } while (shouldContinue(message));\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n ) {\n const messages = this.repository.getMessages();\n\n // abort existing run\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n const initialContent = message.content;\n const initialSteps = message.metadata?.steps;\n const initalCustom = message.metadata?.custom;\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n const newSteps = m.metadata?.steps || m.metadata?.roundtrips;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n // TODO deprecated, remove in v0.6\n ...(steps ? { roundtrips: steps } : undefined),\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(steps ? { roundtrips: steps, steps } : undefined),\n ...(m.metadata?.custom\n ? {\n custom: { ...(initalCustom ?? {}), ...m.metadata.custom },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps\n ? this._options.maxSteps\n : (this._options.maxToolRoundtrips ?? 1) + 1;\n\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n // reached max tool steps\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n } else {\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n }\n\n try {\n const promiseOrGenerator = this.adapters.chatModel.run({\n messages,\n abortSignal: this.abortController.signal,\n config: this.getModelConfig(),\n onUpdate: updateMessage,\n unstable_assistantMessageId: message.id,\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n this.abortController = null;\n\n if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n this.abortController = null;\n\n // TODO this should be handled by the run result stream\n if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: { type: \"incomplete\", reason: \"error\", error: e },\n });\n\n throw e;\n }\n }\n return message;\n }\n\n public cancelRun() {\n this.abortController?.abort();\n this.abortController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n }: AddToolResultOptions) {\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (!c.result) added = true;\n return {\n ...c,\n result,\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n\n if (added && shouldContinue(message)) {\n this.performRoundtrip(parentId, message);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA2B;AAM3B,kBAAgC;AAEhC,4BAA+B;AAO/B,mCAAsC;AAE/B,IAAM,yBAAN,cACG,mDAEV;AAAA,EAqBE,YACE,gBACgB,UAChB,SACA;AACA,UAAM,cAAc;AAHJ;AAKhB,SAAK,WAAW,OAAO;AAAA,EACzB;AAAA,EA5BgB,eAAe;AAAA,IAC7B,gBAAgB;AAAA,IAChB,MAAM;AAAA,IACN,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,eAAe;AAAA,IACf,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,UAAU;AAAA,EACZ;AAAA,EAEQ,kBAA0C;AAAA,EAElC,aAAa;AAAA,EACb,cAA2C,CAAC;AAAA,EAE5D,IAAW,WAAW;AACpB,WAAO,KAAK,SAAS;AAAA,EACvB;AAAA,EAYQ;AAAA,EAER,IAAW,SAAS;AAClB,WAAO;AAAA,EACT;AAAA,EAEO,WAAW,SAAkC;AAClD,QAAI,KAAK,aAAa,QAAS;AAE/B,SAAK,WAAW;AAEhB,QAAI,aAAa;AAEjB,UAAM,WAAW,QAAQ,UAAU,WAAW;AAC9C,QAAI,KAAK,aAAa,WAAW,UAAU;AACzC,WAAK,aAAa,SAAS;AAC3B,mBAAa;AAAA,IACf;AAEA,UAAM,YAAY,QAAQ,UAAU,gBAAgB;AACpD,QAAI,KAAK,aAAa,gBAAgB,WAAW;AAC/C,WAAK,aAAa,cAAc;AAChC,mBAAa;AAAA,IACf;AAEA,UAAM,cAAc,QAAQ,UAAU,aAAa;AACnD,QAAI,KAAK,aAAa,aAAa,aAAa;AAC9C,WAAK,aAAa,WAAW;AAC7B,mBAAa;AAAA,IACf;AAEA,QAAI,WAAY,MAAK,mBAAmB;AAAA,EAC1C;AAAA,EAEA,MAAa,OAAO,SAAuC;AACzD,UAAM,iBAAa,6BAAgB,SAAS;AAAA,MAC1C,aAAa,QAAQ;AAAA,IACvB,CAAC;AACD,SAAK,WAAW,mBAAmB,QAAQ,UAAU,UAAU;AAE/D,UAAM,WAAW,QAAQ,YAAY,QAAQ,SAAS;AACtD,QAAI,UAAU;AACZ,YAAM,KAAK,SAAS,WAAW,EAAE;AAAA,IACnC,OAAO;AACL,WAAK,WAAW,UAAU,WAAW,EAAE;AACvC,WAAK,mBAAmB;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAa,SAAS,UAAwC;AAC5D,SAAK,WAAW,UAAU,QAAQ;AAGlC,UAAM,SAAK,4BAAW;AACtB,QAAI,UAAkC;AAAA,MACpC;AAAA,MACA,MAAM;AAAA,MACN,QAAQ,EAAE,MAAM,UAAU;AAAA,MAC1B,SAAS,CAAC;AAAA,MACV,WAAW,oBAAI,KAAK;AAAA,IACtB;AAEA,SAAK,wBAAwB,WAAW;AAExC,OAAG;AACD,gBAAU,MAAM,KAAK,iBAAiB,UAAU,OAAO;AAAA,IACzD,aAAS,sCAAe,OAAO;AAAA,EACjC;AAAA,EAEA,MAAc,iBACZ,UACA,SACA;AACA,UAAM,WAAW,KAAK,WAAW,YAAY;AAG7C,SAAK,iBAAiB,MAAM;AAC5B,SAAK,kBAAkB,IAAI,gBAAgB;AAE3C,UAAM,iBAAiB,QAAQ;AAC/B,UAAM,eAAe,QAAQ,UAAU;AACvC,UAAM,eAAe,QAAQ,UAAU;AACvC,UAAM,gBAAgB,CAAC,MAAmC;AACxD,YAAM,WAAW,EAAE,UAAU,SAAS,EAAE,UAAU;AAClD,YAAMA,SAAQ,WACV,CAAC,GAAI,gBAAgB,CAAC,GAAI,GAAG,QAAQ,IACrC;AAEJ,gBAAU;AAAA,QACR,GAAG;AAAA,QACH,GAAI,EAAE,UACF,EAAE,SAAS,CAAC,GAAG,gBAAgB,GAAI,EAAE,WAAW,CAAC,CAAE,EAAE,IACrD;AAAA,QACJ,QAAQ,EAAE,UAAU,QAAQ;AAAA;AAAA,QAE5B,GAAIA,SAAQ,EAAE,YAAYA,OAAM,IAAI;AAAA,QACpC,GAAI,EAAE,WACF;AAAA,UACE,UAAU;AAAA,YACR,GAAG,QAAQ;AAAA,YACX,GAAIA,SAAQ,EAAE,YAAYA,QAAO,OAAAA,OAAM,IAAI;AAAA,YAC3C,GAAI,EAAE,UAAU,SACZ;AAAA,cACE,QAAQ,EAAE,GAAI,gBAAgB,CAAC,GAAI,GAAG,EAAE,SAAS,OAAO;AAAA,YAC1D,IACA;AAAA,UACN;AAAA,QACF,IACA;AAAA,MACN;AACA,WAAK,WAAW,mBAAmB,UAAU,OAAO;AACpD,WAAK,mBAAmB;AAAA,IAC1B;AAEA,UAAM,WAAW,KAAK,SAAS,WAC3B,KAAK,SAAS,YACb,KAAK,SAAS,qBAAqB,KAAK;AAE7C,UAAM,QAAQ,QAAQ,UAAU,OAAO,UAAU;AACjD,QAAI,SAAS,UAAU;AAErB,oBAAc;AAAA,QACZ,QAAQ;AAAA,UACN,MAAM;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,MACF,CAAC;AACD,aAAO;AAAA,IACT,OAAO;AACL,oBAAc;AAAA,QACZ,QAAQ;AAAA,UACN,MAAM;AAAA,QACR;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI;AACF,YAAM,qBAAqB,KAAK,SAAS,UAAU,IAAI;AAAA,QACrD;AAAA,QACA,aAAa,KAAK,gBAAgB;AAAA,QAClC,QAAQ,KAAK,eAAe;AAAA,QAC5B,UAAU;AAAA,QACV,6BAA6B,QAAQ;AAAA,MACvC,CAAC;AAGD,UAAI,OAAO,iBAAiB,oBAAoB;AAC9C,yBAAiB,KAAK,oBAAoB;AACxC,wBAAc,CAAC;AAAA,QACjB;AAAA,MACF,OAAO;AACL,sBAAc,MAAM,kBAAkB;AAAA,MACxC;AAEA,WAAK,kBAAkB;AAEvB,UAAI,QAAQ,OAAO,SAAS,WAAW;AACrC,sBAAc;AAAA,UACZ,QAAQ,EAAE,MAAM,YAAY,QAAQ,UAAU;AAAA,QAChD,CAAC;AAAA,MACH;AAAA,IACF,SAAS,GAAG;AACV,WAAK,kBAAkB;AAGvB,UAAI,aAAa,SAAS,EAAE,SAAS,cAAc;AACjD,sBAAc;AAAA,UACZ,QAAQ,EAAE,MAAM,cAAc,QAAQ,YAAY;AAAA,QACpD,CAAC;AAAA,MACH,OAAO;AACL,sBAAc;AAAA,UACZ,QAAQ,EAAE,MAAM,cAAc,QAAQ,SAAS,OAAO,EAAE;AAAA,QAC1D,CAAC;AAED,cAAM;AAAA,MACR;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEO,YAAY;AACjB,SAAK,iBAAiB,MAAM;AAC5B,SAAK,kBAAkB;AAAA,EACzB;AAAA,EAEO,cAAc;AAAA,IACnB;AAAA,IACA;AAAA,IACA;AAAA,EACF,GAAyB;AACvB,UAAM,cAAc,KAAK,WAAW,WAAW,SAAS;AACxD,UAAM,EAAE,SAAS,IAAI;AACrB,QAAI,EAAE,QAAQ,IAAI;AAElB,QAAI,QAAQ,SAAS;AACnB,YAAM,IAAI,MAAM,mDAAmD;AAErE,QAAI,QAAQ;AACZ,QAAI,QAAQ;AACZ,UAAM,aAAa,QAAQ,QAAQ,IAAI,CAAC,MAAM;AAC5C,UAAI,EAAE,SAAS,YAAa,QAAO;AACnC,UAAI,EAAE,eAAe,WAAY,QAAO;AACxC,cAAQ;AACR,UAAI,CAAC,EAAE,OAAQ,SAAQ;AACvB,aAAO;AAAA,QACL,GAAG;AAAA,QACH;AAAA,MACF;AAAA,IACF,CAAC;AAED,QAAI,CAAC;AACH,YAAM,IAAI,MAAM,oDAAoD;AAEtE,cAAU;AAAA,MACR,GAAG;AAAA,MACH,SAAS;AAAA,IACX;AACA,SAAK,WAAW,mBAAmB,UAAU,OAAO;AAEpD,QAAI,aAAS,sCAAe,OAAO,GAAG;AACpC,WAAK,iBAAiB,UAAU,OAAO;AAAA,IACzC;AAAA,EACF;AACF;","names":["steps"]}
@@ -55,7 +55,8 @@ var LocalThreadRuntimeCore = class extends BaseThreadRuntimeCore {
55
55
  attachments: message.attachments
56
56
  });
57
57
  this.repository.addOrUpdateMessage(message.parentId, newMessage);
58
- if (message.role === "user") {
58
+ const startRun = message.startRun ?? message.role === "user";
59
+ if (startRun) {
59
60
  await this.startRun(newMessage.id);
60
61
  } else {
61
62
  this.repository.resetHead(newMessage.id);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/runtimes/local/LocalThreadRuntimeCore.tsx"],"sourcesContent":["import { generateId } from \"../../internal\";\nimport type {\n ModelConfigProvider,\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types\";\nimport { fromCoreMessage } from \"../edge\";\nimport type { ChatModelRunResult } from \"./ChatModelAdapter\";\nimport { shouldContinue } from \"./shouldContinue\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport {\n AddToolResultOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n} from \"../core/ThreadRuntimeCore\";\nimport { BaseThreadRuntimeCore } from \"../core/BaseThreadRuntimeCore\";\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n edit: true,\n reload: true,\n cancel: true,\n unstable_copy: true,\n speech: false,\n attachments: false,\n feedback: false,\n };\n\n private abortController: AbortController | null = null;\n\n public readonly isDisabled = false;\n public readonly suggestions: readonly ThreadSuggestion[] = [];\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n configProvider: ModelConfigProvider,\n public readonly threadId: string,\n options: LocalRuntimeOptionsBase,\n ) {\n super(configProvider);\n\n this.setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n public get extras() {\n return undefined;\n }\n\n public setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n }\n\n public async append(message: AppendMessage): Promise<void> {\n const newMessage = fromCoreMessage(message, {\n attachments: message.attachments,\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n\n if (message.role === \"user\") {\n await this.startRun(newMessage.id);\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n }\n }\n\n public async startRun(parentId: string | null): Promise<void> {\n this.repository.resetHead(parentId);\n\n // add assistant message\n const id = generateId();\n let message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n createdAt: new Date(),\n };\n\n this._notifyEventSubscribers(\"run-start\");\n\n do {\n message = await this.performRoundtrip(parentId, message);\n } while (shouldContinue(message));\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n ) {\n const messages = this.repository.getMessages();\n\n // abort existing run\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n const initialContent = message.content;\n const initialSteps = message.metadata?.steps;\n const initalCustom = message.metadata?.custom;\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n const newSteps = m.metadata?.steps || m.metadata?.roundtrips;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n // TODO deprecated, remove in v0.6\n ...(steps ? { roundtrips: steps } : undefined),\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(steps ? { roundtrips: steps, steps } : undefined),\n ...(m.metadata?.custom\n ? {\n custom: { ...(initalCustom ?? {}), ...m.metadata.custom },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps\n ? this._options.maxSteps\n : (this._options.maxToolRoundtrips ?? 1) + 1;\n\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n // reached max tool steps\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n } else {\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n }\n\n try {\n const promiseOrGenerator = this.adapters.chatModel.run({\n messages,\n abortSignal: this.abortController.signal,\n config: this.getModelConfig(),\n onUpdate: updateMessage,\n unstable_assistantMessageId: message.id,\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n this.abortController = null;\n\n if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n this.abortController = null;\n\n // TODO this should be handled by the run result stream\n if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: { type: \"incomplete\", reason: \"error\", error: e },\n });\n\n throw e;\n }\n }\n return message;\n }\n\n public cancelRun() {\n this.abortController?.abort();\n this.abortController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n }: AddToolResultOptions) {\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (!c.result) added = true;\n return {\n ...c,\n result,\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n\n if (added && shouldContinue(message)) {\n this.performRoundtrip(parentId, message);\n }\n }\n}\n"],"mappings":"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","names":["steps"]}
1
+ {"version":3,"sources":["../../../src/runtimes/local/LocalThreadRuntimeCore.tsx"],"sourcesContent":["import { generateId } from \"../../internal\";\nimport type {\n ModelConfigProvider,\n AppendMessage,\n ThreadAssistantMessage,\n} from \"../../types\";\nimport { fromCoreMessage } from \"../edge\";\nimport type { ChatModelRunResult } from \"./ChatModelAdapter\";\nimport { shouldContinue } from \"./shouldContinue\";\nimport { LocalRuntimeOptionsBase } from \"./LocalRuntimeOptions\";\nimport {\n AddToolResultOptions,\n ThreadSuggestion,\n ThreadRuntimeCore,\n} from \"../core/ThreadRuntimeCore\";\nimport { BaseThreadRuntimeCore } from \"../core/BaseThreadRuntimeCore\";\n\nexport class LocalThreadRuntimeCore\n extends BaseThreadRuntimeCore\n implements ThreadRuntimeCore\n{\n public readonly capabilities = {\n switchToBranch: true,\n edit: true,\n reload: true,\n cancel: true,\n unstable_copy: true,\n speech: false,\n attachments: false,\n feedback: false,\n };\n\n private abortController: AbortController | null = null;\n\n public readonly isDisabled = false;\n public readonly suggestions: readonly ThreadSuggestion[] = [];\n\n public get adapters() {\n return this._options.adapters;\n }\n\n constructor(\n configProvider: ModelConfigProvider,\n public readonly threadId: string,\n options: LocalRuntimeOptionsBase,\n ) {\n super(configProvider);\n\n this.setOptions(options);\n }\n\n private _options!: LocalRuntimeOptionsBase;\n\n public get extras() {\n return undefined;\n }\n\n public setOptions(options: LocalRuntimeOptionsBase) {\n if (this._options === options) return;\n\n this._options = options;\n\n let hasUpdates = false;\n\n const canSpeak = options.adapters?.speech !== undefined;\n if (this.capabilities.speech !== canSpeak) {\n this.capabilities.speech = canSpeak;\n hasUpdates = true;\n }\n\n const canAttach = options.adapters?.attachments !== undefined;\n if (this.capabilities.attachments !== canAttach) {\n this.capabilities.attachments = canAttach;\n hasUpdates = true;\n }\n\n const canFeedback = options.adapters?.feedback !== undefined;\n if (this.capabilities.feedback !== canFeedback) {\n this.capabilities.feedback = canFeedback;\n hasUpdates = true;\n }\n\n if (hasUpdates) this._notifySubscribers();\n }\n\n public async append(message: AppendMessage): Promise<void> {\n const newMessage = fromCoreMessage(message, {\n attachments: message.attachments,\n });\n this.repository.addOrUpdateMessage(message.parentId, newMessage);\n\n const startRun = message.startRun ?? message.role === \"user\";\n if (startRun) {\n await this.startRun(newMessage.id);\n } else {\n this.repository.resetHead(newMessage.id);\n this._notifySubscribers();\n }\n }\n\n public async startRun(parentId: string | null): Promise<void> {\n this.repository.resetHead(parentId);\n\n // add assistant message\n const id = generateId();\n let message: ThreadAssistantMessage = {\n id,\n role: \"assistant\",\n status: { type: \"running\" },\n content: [],\n createdAt: new Date(),\n };\n\n this._notifyEventSubscribers(\"run-start\");\n\n do {\n message = await this.performRoundtrip(parentId, message);\n } while (shouldContinue(message));\n }\n\n private async performRoundtrip(\n parentId: string | null,\n message: ThreadAssistantMessage,\n ) {\n const messages = this.repository.getMessages();\n\n // abort existing run\n this.abortController?.abort();\n this.abortController = new AbortController();\n\n const initialContent = message.content;\n const initialSteps = message.metadata?.steps;\n const initalCustom = message.metadata?.custom;\n const updateMessage = (m: Partial<ChatModelRunResult>) => {\n const newSteps = m.metadata?.steps || m.metadata?.roundtrips;\n const steps = newSteps\n ? [...(initialSteps ?? []), ...newSteps]\n : undefined;\n\n message = {\n ...message,\n ...(m.content\n ? { content: [...initialContent, ...(m.content ?? [])] }\n : undefined),\n status: m.status ?? message.status,\n // TODO deprecated, remove in v0.6\n ...(steps ? { roundtrips: steps } : undefined),\n ...(m.metadata\n ? {\n metadata: {\n ...message.metadata,\n ...(steps ? { roundtrips: steps, steps } : undefined),\n ...(m.metadata?.custom\n ? {\n custom: { ...(initalCustom ?? {}), ...m.metadata.custom },\n }\n : undefined),\n },\n }\n : undefined),\n };\n this.repository.addOrUpdateMessage(parentId, message);\n this._notifySubscribers();\n };\n\n const maxSteps = this._options.maxSteps\n ? this._options.maxSteps\n : (this._options.maxToolRoundtrips ?? 1) + 1;\n\n const steps = message.metadata?.steps?.length ?? 0;\n if (steps >= maxSteps) {\n // reached max tool steps\n updateMessage({\n status: {\n type: \"incomplete\",\n reason: \"tool-calls\",\n },\n });\n return message;\n } else {\n updateMessage({\n status: {\n type: \"running\",\n },\n });\n }\n\n try {\n const promiseOrGenerator = this.adapters.chatModel.run({\n messages,\n abortSignal: this.abortController.signal,\n config: this.getModelConfig(),\n onUpdate: updateMessage,\n unstable_assistantMessageId: message.id,\n });\n\n // handle async iterator for streaming results\n if (Symbol.asyncIterator in promiseOrGenerator) {\n for await (const r of promiseOrGenerator) {\n updateMessage(r);\n }\n } else {\n updateMessage(await promiseOrGenerator);\n }\n\n this.abortController = null;\n\n if (message.status.type === \"running\") {\n updateMessage({\n status: { type: \"complete\", reason: \"unknown\" },\n });\n }\n } catch (e) {\n this.abortController = null;\n\n // TODO this should be handled by the run result stream\n if (e instanceof Error && e.name === \"AbortError\") {\n updateMessage({\n status: { type: \"incomplete\", reason: \"cancelled\" },\n });\n } else {\n updateMessage({\n status: { type: \"incomplete\", reason: \"error\", error: e },\n });\n\n throw e;\n }\n }\n return message;\n }\n\n public cancelRun() {\n this.abortController?.abort();\n this.abortController = null;\n }\n\n public addToolResult({\n messageId,\n toolCallId,\n result,\n }: AddToolResultOptions) {\n const messageData = this.repository.getMessage(messageId);\n const { parentId } = messageData;\n let { message } = messageData;\n\n if (message.role !== \"assistant\")\n throw new Error(\"Tried to add tool result to non-assistant message\");\n\n let added = false;\n let found = false;\n const newContent = message.content.map((c) => {\n if (c.type !== \"tool-call\") return c;\n if (c.toolCallId !== toolCallId) return c;\n found = true;\n if (!c.result) added = true;\n return {\n ...c,\n result,\n };\n });\n\n if (!found)\n throw new Error(\"Tried to add tool result to non-existing tool call\");\n\n message = {\n ...message,\n content: newContent,\n };\n this.repository.addOrUpdateMessage(parentId, message);\n\n if (added && shouldContinue(message)) {\n this.performRoundtrip(parentId, message);\n }\n }\n}\n"],"mappings":"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","names":["steps"]}