@assistant-ui/core 0.3.18 → 0.3.19

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 (274) hide show
  1. package/dist/adapters/speech.d.ts.map +1 -1
  2. package/dist/adapters/speech.js +13 -3
  3. package/dist/adapters/speech.js.map +1 -1
  4. package/dist/adapters/thread-history.d.ts +4 -0
  5. package/dist/adapters/thread-history.d.ts.map +1 -1
  6. package/dist/index.d.ts +2 -2
  7. package/dist/index.js.map +1 -1
  8. package/dist/internal.d.ts +1 -1
  9. package/dist/model-context/frame/host.d.ts.map +1 -1
  10. package/dist/model-context/frame/host.js +26 -11
  11. package/dist/model-context/frame/host.js.map +1 -1
  12. package/dist/model-context/interactable-composer-metadata.js +11 -9
  13. package/dist/model-context/interactable-composer-metadata.js.map +1 -1
  14. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  15. package/dist/react/adapters/LocalStorageThreadListAdapter.js +45 -7
  16. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  17. package/dist/react/client/DataRenderers.d.ts.map +1 -1
  18. package/dist/react/client/DataRenderers.js +20 -15
  19. package/dist/react/client/DataRenderers.js.map +1 -1
  20. package/dist/react/client/Interactables.d.ts.map +1 -1
  21. package/dist/react/client/Interactables.js +11 -5
  22. package/dist/react/client/Interactables.js.map +1 -1
  23. package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
  24. package/dist/react/client/RemoteThreadList.js +3 -2
  25. package/dist/react/client/RemoteThreadList.js.map +1 -1
  26. package/dist/react/client/interactable-model-context.d.ts.map +1 -1
  27. package/dist/react/client/interactable-model-context.js +3 -2
  28. package/dist/react/client/interactable-model-context.js.map +1 -1
  29. package/dist/react/index.d.ts +2 -2
  30. package/dist/react/index.js +2 -2
  31. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
  32. package/dist/react/interactables-legacy/useAssistantInteractable.js +3 -0
  33. package/dist/react/interactables-legacy/useAssistantInteractable.js.map +1 -1
  34. package/dist/react/model-context/useInteractable.d.ts.map +1 -1
  35. package/dist/react/model-context/useInteractable.js +4 -1
  36. package/dist/react/model-context/useInteractable.js.map +1 -1
  37. package/dist/react/model-context/useInteractableVersions.js +1 -1
  38. package/dist/react/primitives/message/MessageGroupedParts.d.ts +11 -2
  39. package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
  40. package/dist/react/primitives/message/MessageGroupedParts.js +3 -2
  41. package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
  42. package/dist/react/primitives/part/PartMessages.d.ts +1 -0
  43. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  44. package/dist/react/primitives/part/PartMessages.js +1 -0
  45. package/dist/react/primitives/part/PartMessages.js.map +1 -1
  46. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  47. package/dist/react/primitives/thread/ThreadMessages.js +6 -5
  48. package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
  49. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  50. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +2 -1
  51. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  52. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +2 -24
  53. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  54. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +135 -374
  55. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  56. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +1 -0
  57. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  58. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +22 -2
  59. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
  60. package/dist/react/runtimes/cloud/auiV0.d.ts +40 -15
  61. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  62. package/dist/react/runtimes/cloud/auiV0.js +62 -15
  63. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  64. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +2 -1
  65. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
  66. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js +4 -0
  67. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.js.map +1 -1
  68. package/dist/react/runtimes/cloud/sdkIdentity.d.ts +6 -0
  69. package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -0
  70. package/dist/react/runtimes/cloud/sdkIdentity.js +9 -0
  71. package/dist/react/runtimes/cloud/sdkIdentity.js.map +1 -0
  72. package/dist/react/runtimes/external-message-converter.d.ts +12 -2
  73. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  74. package/dist/react/runtimes/external-message-converter.js +26 -61
  75. package/dist/react/runtimes/external-message-converter.js.map +1 -1
  76. package/dist/react/runtimes/useRemoteThreadListRuntime.js +1 -1
  77. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
  78. package/dist/react/utils/groupParts.d.ts +6 -1
  79. package/dist/react/utils/groupParts.d.ts.map +1 -1
  80. package/dist/react/utils/groupParts.js +6 -0
  81. package/dist/react/utils/groupParts.js.map +1 -1
  82. package/dist/react/utils/useJSONEqual.d.ts +3 -1
  83. package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
  84. package/dist/react/utils/useJSONEqual.js +6 -1
  85. package/dist/react/utils/useJSONEqual.js.map +1 -1
  86. package/dist/react/utils/useJSONSchemaDependency.d.ts +7 -0
  87. package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -0
  88. package/dist/react/utils/useJSONSchemaDependency.js +20 -0
  89. package/dist/react/utils/useJSONSchemaDependency.js.map +1 -0
  90. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  91. package/dist/runtime/api/thread-runtime.js +2 -5
  92. package/dist/runtime/api/thread-runtime.js.map +1 -1
  93. package/dist/runtime/base/base-composer-runtime-core.d.ts +1 -0
  94. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  95. package/dist/runtime/base/base-composer-runtime-core.js +46 -10
  96. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  97. package/dist/runtime/base/base-thread-runtime-core.d.ts +2 -0
  98. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  99. package/dist/runtime/base/base-thread-runtime-core.js +155 -64
  100. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  101. package/dist/runtime/interfaces/thread-runtime-core.d.ts +6 -0
  102. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  103. package/dist/runtime/queue/message-queue.d.ts +5 -0
  104. package/dist/runtime/queue/message-queue.d.ts.map +1 -1
  105. package/dist/runtime/queue/message-queue.js +61 -6
  106. package/dist/runtime/queue/message-queue.js.map +1 -1
  107. package/dist/runtime/utils/auto-status.d.ts +6 -2
  108. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  109. package/dist/runtime/utils/auto-status.js +12 -4
  110. package/dist/runtime/utils/auto-status.js.map +1 -1
  111. package/dist/runtime/utils/external-message-conversion.d.ts +16 -4
  112. package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
  113. package/dist/runtime/utils/external-message-conversion.js +48 -12
  114. package/dist/runtime/utils/external-message-conversion.js.map +1 -1
  115. package/dist/runtime/utils/message-repository.js +3 -3
  116. package/dist/runtime/utils/message-repository.js.map +1 -1
  117. package/dist/runtime/utils/thread-message-like.d.ts +2 -1
  118. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  119. package/dist/runtime/utils/thread-message-like.js +4 -2
  120. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  121. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  122. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +8 -1
  123. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  124. package/dist/runtimes/internal.d.ts +1 -1
  125. package/dist/runtimes/local/local-thread-runtime-core.d.ts +1 -1
  126. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  127. package/dist/runtimes/local/local-thread-runtime-core.js +4 -1
  128. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  129. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  130. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +2 -1
  131. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
  132. package/dist/store/clients/external-thread.d.ts.map +1 -1
  133. package/dist/store/clients/external-thread.js +241 -200
  134. package/dist/store/clients/external-thread.js.map +1 -1
  135. package/dist/store/clients/thread-tasks.d.ts +13 -0
  136. package/dist/store/clients/thread-tasks.d.ts.map +1 -0
  137. package/dist/store/clients/thread-tasks.js +69 -0
  138. package/dist/store/clients/thread-tasks.js.map +1 -0
  139. package/dist/store/index.d.ts +3 -2
  140. package/dist/store/index.js +3 -3
  141. package/dist/store/primitive-predicates.d.ts.map +1 -1
  142. package/dist/store/primitive-predicates.js +4 -4
  143. package/dist/store/primitive-predicates.js.map +1 -1
  144. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  145. package/dist/store/runtime-clients/thread-runtime-client.js +176 -128
  146. package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
  147. package/dist/store/scope-registration.d.ts +2 -0
  148. package/dist/store/scope-registration.d.ts.map +1 -1
  149. package/dist/store/scopes/task.d.ts +36 -0
  150. package/dist/store/scopes/task.d.ts.map +1 -0
  151. package/dist/store/scopes/task.js +0 -0
  152. package/dist/store/scopes/thread.d.ts +20 -0
  153. package/dist/store/scopes/thread.d.ts.map +1 -1
  154. package/dist/subscribable/subscribable.d.ts +2 -1
  155. package/dist/subscribable/subscribable.d.ts.map +1 -1
  156. package/dist/subscribable/subscribable.js +23 -15
  157. package/dist/subscribable/subscribable.js.map +1 -1
  158. package/dist/types/index.d.ts +2 -2
  159. package/dist/types/message.d.ts +8 -1
  160. package/dist/types/message.d.ts.map +1 -1
  161. package/dist/types/message.js.map +1 -1
  162. package/dist/utils/abortable-iterable.d.ts.map +1 -1
  163. package/dist/utils/abortable-iterable.js +30 -14
  164. package/dist/utils/abortable-iterable.js.map +1 -1
  165. package/dist/utils/getGroupStatus.d.ts +18 -2
  166. package/dist/utils/getGroupStatus.d.ts.map +1 -1
  167. package/dist/utils/getGroupStatus.js +32 -7
  168. package/dist/utils/getGroupStatus.js.map +1 -1
  169. package/dist/utils/wire-media.d.ts.map +1 -1
  170. package/dist/utils/wire-media.js +2 -2
  171. package/dist/utils/wire-media.js.map +1 -1
  172. package/package.json +6 -6
  173. package/src/adapters/speech.test.ts +236 -0
  174. package/src/adapters/speech.ts +17 -10
  175. package/src/adapters/thread-history.ts +3 -0
  176. package/src/index.ts +1 -0
  177. package/src/model-context/frame/host.test.ts +113 -1
  178. package/src/model-context/frame/host.ts +39 -12
  179. package/src/model-context/interactable-composer-metadata.test.ts +30 -0
  180. package/src/model-context/interactable-composer-metadata.ts +10 -10
  181. package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +244 -0
  182. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +104 -7
  183. package/src/react/client/DataRenderers.test.tsx +45 -0
  184. package/src/react/client/DataRenderers.ts +13 -9
  185. package/src/react/client/Interactables.test.ts +44 -1
  186. package/src/react/client/Interactables.ts +7 -1
  187. package/src/react/client/RemoteThreadList.test.ts +41 -1
  188. package/src/react/client/RemoteThreadList.ts +15 -2
  189. package/src/react/client/interactable-model-context.test.ts +44 -0
  190. package/src/react/client/interactable-model-context.ts +3 -2
  191. package/src/react/index.ts +5 -1
  192. package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +132 -0
  193. package/src/react/interactables-legacy/useAssistantInteractable.ts +10 -1
  194. package/src/react/model-context/useInteractable.test.tsx +177 -0
  195. package/src/react/model-context/useInteractable.ts +3 -0
  196. package/src/react/primitive-hooks/useActionBarCopy.test.ts +0 -1
  197. package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +0 -1
  198. package/src/react/primitives/message/MessageGroupedParts.test.tsx +96 -0
  199. package/src/react/primitives/message/MessageGroupedParts.tsx +15 -4
  200. package/src/react/primitives/part/PartMessages.test.tsx +104 -1
  201. package/src/react/primitives/part/PartMessages.tsx +1 -0
  202. package/src/react/primitives/thread/ThreadMessages.test.tsx +142 -0
  203. package/src/react/primitives/thread/ThreadMessages.tsx +8 -5
  204. package/src/react/providers/ReadonlyThreadProvider.test.tsx +56 -0
  205. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +7 -1
  206. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +20 -14
  207. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +221 -1
  208. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +166 -512
  209. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +77 -0
  210. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +27 -1
  211. package/src/react/runtimes/cloud/auiV0.ts +160 -25
  212. package/src/react/runtimes/cloud/createCloudThreadListAdapter.test.ts +21 -0
  213. package/src/react/runtimes/cloud/createCloudThreadListAdapter.ts +7 -1
  214. package/src/react/runtimes/cloud/sdkIdentity.ts +9 -0
  215. package/src/react/runtimes/cloud/useCloudThreadListAdapter.test.tsx +18 -4
  216. package/src/react/runtimes/external-message-converter.test.ts +136 -1
  217. package/src/react/runtimes/external-message-converter.ts +39 -93
  218. package/src/react/runtimes/useRemoteThreadListRuntime.ts +1 -1
  219. package/src/react/utils/groupParts.ts +12 -1
  220. package/src/react/utils/useJSONEqual.ts +9 -0
  221. package/src/react/utils/useJSONSchemaDependency.ts +22 -0
  222. package/src/runtime/api/thread-runtime.test.ts +58 -0
  223. package/src/runtime/api/thread-runtime.ts +2 -4
  224. package/src/runtime/base/base-composer-runtime-core.ts +69 -16
  225. package/src/runtime/base/base-thread-runtime-core.test.ts +1008 -1
  226. package/src/runtime/base/base-thread-runtime-core.ts +222 -83
  227. package/src/runtime/interfaces/thread-runtime-core.ts +6 -0
  228. package/src/runtime/queue/message-queue.ts +68 -6
  229. package/src/runtime/utils/auto-status.test.ts +112 -1
  230. package/src/runtime/utils/auto-status.ts +31 -5
  231. package/src/runtime/utils/external-message-conversion.test.ts +134 -0
  232. package/src/runtime/utils/external-message-conversion.ts +122 -31
  233. package/src/runtime/utils/message-repository.test.ts +49 -0
  234. package/src/runtime/utils/message-repository.ts +3 -3
  235. package/src/runtime/utils/thread-message-like.test.ts +52 -0
  236. package/src/runtime/utils/thread-message-like.ts +4 -0
  237. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +31 -1
  238. package/src/runtimes/local/local-thread-runtime-core.test.ts +21 -0
  239. package/src/runtimes/local/local-thread-runtime-core.ts +11 -1
  240. package/src/runtimes/tool-invocations/EDGE_CASES.md +2 -6
  241. package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +133 -0
  242. package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +10 -6
  243. package/src/store/clients/external-thread.ts +19 -1
  244. package/src/store/clients/thread-tasks.test.ts +274 -0
  245. package/src/store/clients/thread-tasks.ts +138 -0
  246. package/src/store/index.ts +8 -0
  247. package/src/store/primitive-predicates.test.ts +48 -5
  248. package/src/store/primitive-predicates.ts +7 -2
  249. package/src/store/runtime-clients/thread-runtime-client.ts +31 -1
  250. package/src/store/scope-registration.ts +2 -0
  251. package/src/store/scopes/task.ts +34 -0
  252. package/src/store/scopes/thread.ts +16 -0
  253. package/src/store/thread-tasks.test.tsx +209 -0
  254. package/src/subscribable/subscribable.test.ts +156 -1
  255. package/src/subscribable/subscribable.ts +25 -15
  256. package/src/tests/MessageRepository.test.ts +1 -5
  257. package/src/tests/auiV0Encode.test.ts +300 -0
  258. package/src/tests/base-composer-runtime-core-send.test.ts +51 -0
  259. package/src/tests/base-composer-runtime-core.test.ts +314 -2
  260. package/src/tests/external-store-thread-runtime-core-adapter.test.ts +151 -0
  261. package/src/tests/external-thread-attachments.test.tsx +69 -0
  262. package/src/tests/external-thread-parity.test.tsx +34 -0
  263. package/src/tests/groupParts.test.ts +71 -0
  264. package/src/tests/message-queue.test.ts +253 -0
  265. package/src/tests/remote-thread-list-reactive-threadId.test.ts +51 -0
  266. package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +43 -0
  267. package/src/types/index.ts +1 -0
  268. package/src/types/message.ts +8 -0
  269. package/src/utils/abortable-iterable.test.ts +115 -0
  270. package/src/utils/abortable-iterable.ts +34 -23
  271. package/src/utils/getGroupStatus.test.ts +70 -4
  272. package/src/utils/getGroupStatus.ts +35 -12
  273. package/src/utils/wire-media.test.ts +10 -0
  274. package/src/utils/wire-media.ts +6 -2
@@ -6,6 +6,7 @@ import { resolveToolApprovalResponse } from "../../runtime/utils/resolveToolAppr
6
6
  import { isAttachmentComplete, isCreateAttachment } from "../../types/attachment.js";
7
7
  import { AttachmentAddOperations, drainAttachmentAdd } from "../../runtime/utils/attachment-add-operations.js";
8
8
  import { ThreadSuggestions } from "./suggestions.js";
9
+ import { TaskClient, createTaskDeriver, getTaskKey } from "./thread-tasks.js";
9
10
  import { ModelContext } from "./model-context-client.js";
10
11
  import { DataRenderers } from "../../react/client/DataRenderers.js";
11
12
  import { Tools } from "../../react/client/Tools.js";
@@ -484,7 +485,7 @@ const useComposerClientResource = (t0) => {
484
485
  if ($[15] !== attachmentAdapter) {
485
486
  t8 = async (removed) => {
486
487
  if (!attachmentAdapter) return;
487
- await Promise.all(removed.filter(_temp6).map((a_1) => attachmentAdapter.remove(a_1)));
488
+ await Promise.all(removed.filter(_temp6).map(async (a_1) => attachmentAdapter.remove(a_1)));
488
489
  };
489
490
  $[15] = attachmentAdapter;
490
491
  $[16] = t8;
@@ -889,7 +890,7 @@ const dedupeMessagesById = (messages) => {
889
890
  return deduped.length === messages.length ? messages : deduped.reverse();
890
891
  };
891
892
  const useExternalThread = (t0) => {
892
- const $ = c(115);
893
+ const $ = c(125);
893
894
  const { messages: messagesProp, isRunning: t1, isLoading: t2, state: threadState, extras, isSendDisabled: t3, onNew, onEdit, onReload, onStartRun, onCancel, onResume, onRefetchThread, onAddToolResult, onResumeToolCall, onLoadExternalState, attachmentAdapter, feedbackAdapter, speechAdapter, queue, branches, onRespondToToolApproval } = t0;
894
895
  const isRunning = t1 === void 0 ? false : t1;
895
896
  const isLoading = t2 === void 0 ? false : t2;
@@ -1063,42 +1064,62 @@ const useExternalThread = (t0) => {
1063
1064
  } else t17 = $[38];
1064
1065
  const messageClients = useClientLookup(t17);
1065
1066
  let t18;
1066
- if ($[39] !== onCancel || $[40] !== queue) {
1067
- t18 = () => {
1067
+ if ($[39] === Symbol.for("react.memo_cache_sentinel")) {
1068
+ t18 = createTaskDeriver();
1069
+ $[39] = t18;
1070
+ } else t18 = $[39];
1071
+ const taskDeriver = t18;
1072
+ let t19;
1073
+ if ($[40] !== messages) {
1074
+ t19 = taskDeriver(messages);
1075
+ $[40] = messages;
1076
+ $[41] = t19;
1077
+ } else t19 = $[41];
1078
+ const tasks = t19;
1079
+ let t20;
1080
+ if ($[42] !== tasks) {
1081
+ t20 = tasks.map(_temp0);
1082
+ $[42] = tasks;
1083
+ $[43] = t20;
1084
+ } else t20 = $[43];
1085
+ const taskClients = useClientLookup(t20);
1086
+ let t21;
1087
+ if ($[44] !== onCancel || $[45] !== queue) {
1088
+ t21 = () => {
1068
1089
  if (!onCancel) return;
1069
1090
  queue?.__internal_notifyCancelled?.();
1070
1091
  onCancel();
1071
1092
  };
1072
- $[39] = onCancel;
1073
- $[40] = queue;
1074
- $[41] = t18;
1075
- } else t18 = $[41];
1076
- const handleCancelRun = t18;
1077
- let t19;
1078
- if ($[42] !== messages || $[43] !== onNew) {
1079
- t19 = (message_1) => {
1093
+ $[44] = onCancel;
1094
+ $[45] = queue;
1095
+ $[46] = t21;
1096
+ } else t21 = $[46];
1097
+ const handleCancelRun = t21;
1098
+ let t22;
1099
+ if ($[47] !== messages || $[48] !== onNew) {
1100
+ t22 = (message_1) => {
1080
1101
  onNew?.({
1081
1102
  ...message_1,
1082
1103
  parentId: messages.at(-1)?.id ?? null
1083
1104
  });
1084
1105
  };
1085
- $[42] = messages;
1086
- $[43] = onNew;
1087
- $[44] = t19;
1088
- } else t19 = $[44];
1089
- const handleSendNew = t19;
1090
- let t20;
1091
- if ($[45] !== messages) {
1092
- t20 = messages.at(-1)?.id ?? null;
1093
- $[45] = messages;
1094
- $[46] = t20;
1095
- } else t20 = $[46];
1096
- const headId = t20;
1106
+ $[47] = messages;
1107
+ $[48] = onNew;
1108
+ $[49] = t22;
1109
+ } else t22 = $[49];
1110
+ const handleSendNew = t22;
1111
+ let t23;
1112
+ if ($[50] !== messages) {
1113
+ t23 = messages.at(-1)?.id ?? null;
1114
+ $[50] = messages;
1115
+ $[51] = t23;
1116
+ } else t23 = $[51];
1117
+ const headId = t23;
1097
1118
  const hasCancel = !!onCancel;
1098
1119
  const hasRefetchThread = !!onRefetchThread;
1099
- let t21;
1100
- if ($[47] !== headId || $[48] !== queue) {
1101
- t21 = queue && {
1120
+ let t24;
1121
+ if ($[52] !== headId || $[53] !== queue) {
1122
+ t24 = queue && {
1102
1123
  ...queue,
1103
1124
  enqueue: (message_2) => queue.enqueue({
1104
1125
  ...message_2,
@@ -1109,17 +1130,17 @@ const useExternalThread = (t0) => {
1109
1130
  parentId: message_3.parentId ?? headId
1110
1131
  })
1111
1132
  };
1112
- $[47] = headId;
1113
- $[48] = queue;
1114
- $[49] = t21;
1115
- } else t21 = $[49];
1116
- const composerQueue = t21;
1117
- const t22 = isRunning && hasCancel;
1118
- let t23;
1119
- if ($[50] !== attachmentAdapter || $[51] !== composerQueue || $[52] !== handleCancelRun || $[53] !== handleSendNew || $[54] !== isRunning || $[55] !== isSendDisabled || $[56] !== t22) {
1120
- t23 = ComposerClientResource({
1133
+ $[52] = headId;
1134
+ $[53] = queue;
1135
+ $[54] = t24;
1136
+ } else t24 = $[54];
1137
+ const composerQueue = t24;
1138
+ const t25 = isRunning && hasCancel;
1139
+ let t26;
1140
+ if ($[55] !== attachmentAdapter || $[56] !== composerQueue || $[57] !== handleCancelRun || $[58] !== handleSendNew || $[59] !== isRunning || $[60] !== isSendDisabled || $[61] !== t25) {
1141
+ t26 = ComposerClientResource({
1121
1142
  type: "thread",
1122
- canCancel: t22,
1143
+ canCancel: t25,
1123
1144
  isRunning,
1124
1145
  isSendDisabled,
1125
1146
  onCancel: handleCancelRun,
@@ -1127,22 +1148,22 @@ const useExternalThread = (t0) => {
1127
1148
  queue: composerQueue,
1128
1149
  attachmentAdapter
1129
1150
  });
1130
- $[50] = attachmentAdapter;
1131
- $[51] = composerQueue;
1132
- $[52] = handleCancelRun;
1133
- $[53] = handleSendNew;
1134
- $[54] = isRunning;
1135
- $[55] = isSendDisabled;
1136
- $[56] = t22;
1137
- $[57] = t23;
1138
- } else t23 = $[57];
1139
- const composerClient = useClientResource(t23);
1140
- let t24;
1141
- if ($[58] === Symbol.for("react.memo_cache_sentinel")) {
1142
- t24 = ThreadSuggestions(EMPTY_SUGGESTIONS);
1143
- $[58] = t24;
1144
- } else t24 = $[58];
1145
- const suggestionsClient = useClientResource(t24);
1151
+ $[55] = attachmentAdapter;
1152
+ $[56] = composerQueue;
1153
+ $[57] = handleCancelRun;
1154
+ $[58] = handleSendNew;
1155
+ $[59] = isRunning;
1156
+ $[60] = isSendDisabled;
1157
+ $[61] = t25;
1158
+ $[62] = t26;
1159
+ } else t26 = $[62];
1160
+ const composerClient = useClientResource(t26);
1161
+ let t27;
1162
+ if ($[63] === Symbol.for("react.memo_cache_sentinel")) {
1163
+ t27 = ThreadSuggestions(EMPTY_SUGGESTIONS);
1164
+ $[63] = t27;
1165
+ } else t27 = $[63];
1166
+ const suggestionsClient = useClientResource(t27);
1146
1167
  const hasQueue = !!queue;
1147
1168
  const hasBranches = !!branches;
1148
1169
  const hasEdit = !!onEdit;
@@ -1150,17 +1171,17 @@ const useExternalThread = (t0) => {
1150
1171
  const hasAttachments = !!attachmentAdapter;
1151
1172
  const hasFeedback = !!feedbackAdapter;
1152
1173
  const hasSpeech = !!speechAdapter;
1153
- let t25;
1154
- if ($[59] !== messageClients.state) {
1155
- t25 = messageClients.state.map(_temp0);
1156
- $[59] = messageClients.state;
1157
- $[60] = t25;
1158
- } else t25 = $[60];
1159
- const messageStates = t25;
1160
- const t26 = messages.length === 0 && !isLoading;
1161
- let t27;
1162
- if ($[61] !== hasAttachments || $[62] !== hasBranches || $[63] !== hasCancel || $[64] !== hasEdit || $[65] !== hasFeedback || $[66] !== hasQueue || $[67] !== hasRefetchThread || $[68] !== hasReload || $[69] !== hasSpeech) {
1163
- t27 = {
1174
+ let t28;
1175
+ if ($[64] !== messageClients.state) {
1176
+ t28 = messageClients.state.map(_temp1);
1177
+ $[64] = messageClients.state;
1178
+ $[65] = t28;
1179
+ } else t28 = $[65];
1180
+ const messageStates = t28;
1181
+ const t29 = messages.length === 0 && !isLoading;
1182
+ let t30;
1183
+ if ($[66] !== hasAttachments || $[67] !== hasBranches || $[68] !== hasCancel || $[69] !== hasEdit || $[70] !== hasFeedback || $[71] !== hasQueue || $[72] !== hasRefetchThread || $[73] !== hasReload || $[74] !== hasSpeech) {
1184
+ t30 = {
1164
1185
  edit: hasEdit,
1165
1186
  delete: false,
1166
1187
  reload: hasReload,
@@ -1176,72 +1197,87 @@ const useExternalThread = (t0) => {
1176
1197
  dictation: false,
1177
1198
  queue: hasQueue
1178
1199
  };
1179
- $[61] = hasAttachments;
1180
- $[62] = hasBranches;
1181
- $[63] = hasCancel;
1182
- $[64] = hasEdit;
1183
- $[65] = hasFeedback;
1184
- $[66] = hasQueue;
1185
- $[67] = hasRefetchThread;
1186
- $[68] = hasReload;
1187
- $[69] = hasSpeech;
1188
- $[70] = t27;
1189
- } else t27 = $[70];
1190
- let t28;
1191
- if ($[71] !== threadState) {
1192
- t28 = threadState ?? {};
1193
- $[71] = threadState;
1194
- $[72] = t28;
1195
- } else t28 = $[72];
1196
- let t29;
1197
- if ($[73] !== composerClient.state || $[74] !== extras || $[75] !== isLoading || $[76] !== isRunning || $[77] !== messageStates || $[78] !== speech || $[79] !== t26 || $[80] !== t27 || $[81] !== t28) {
1198
- t29 = {
1199
- isEmpty: t26,
1200
+ $[66] = hasAttachments;
1201
+ $[67] = hasBranches;
1202
+ $[68] = hasCancel;
1203
+ $[69] = hasEdit;
1204
+ $[70] = hasFeedback;
1205
+ $[71] = hasQueue;
1206
+ $[72] = hasRefetchThread;
1207
+ $[73] = hasReload;
1208
+ $[74] = hasSpeech;
1209
+ $[75] = t30;
1210
+ } else t30 = $[75];
1211
+ let t31;
1212
+ if ($[76] !== threadState) {
1213
+ t31 = threadState ?? {};
1214
+ $[76] = threadState;
1215
+ $[77] = t31;
1216
+ } else t31 = $[77];
1217
+ let t32;
1218
+ if ($[78] !== composerClient.state || $[79] !== extras || $[80] !== isLoading || $[81] !== isRunning || $[82] !== messageStates || $[83] !== speech || $[84] !== t29 || $[85] !== t30 || $[86] !== t31 || $[87] !== tasks) {
1219
+ t32 = {
1220
+ isEmpty: t29,
1200
1221
  isDisabled: false,
1201
1222
  isLoading,
1202
1223
  isRunning,
1203
- capabilities: t27,
1224
+ capabilities: t30,
1204
1225
  messages: messageStates,
1205
- state: t28,
1226
+ tasks,
1227
+ state: t31,
1206
1228
  suggestions: EMPTY_SUGGESTIONS,
1207
1229
  extras,
1208
1230
  speech,
1209
1231
  voice: void 0,
1210
1232
  composer: composerClient.state
1211
1233
  };
1212
- $[73] = composerClient.state;
1213
- $[74] = extras;
1214
- $[75] = isLoading;
1215
- $[76] = isRunning;
1216
- $[77] = messageStates;
1217
- $[78] = speech;
1218
- $[79] = t26;
1219
- $[80] = t27;
1220
- $[81] = t28;
1221
- $[82] = t29;
1222
- } else t29 = $[82];
1223
- const state = t29;
1224
- let t30;
1225
- if ($[83] !== state) {
1226
- t30 = () => state;
1227
- $[83] = state;
1228
- $[84] = t30;
1229
- } else t30 = $[84];
1230
- let t31;
1231
- if ($[85] !== composerClient.methods) {
1232
- t31 = () => composerClient.methods;
1233
- $[85] = composerClient.methods;
1234
+ $[78] = composerClient.state;
1235
+ $[79] = extras;
1236
+ $[80] = isLoading;
1237
+ $[81] = isRunning;
1238
+ $[82] = messageStates;
1239
+ $[83] = speech;
1240
+ $[84] = t29;
1241
+ $[85] = t30;
1234
1242
  $[86] = t31;
1235
- } else t31 = $[86];
1236
- let t32;
1237
- if ($[87] !== suggestionsClient) {
1238
- t32 = () => suggestionsClient.methods;
1239
- $[87] = suggestionsClient;
1243
+ $[87] = tasks;
1240
1244
  $[88] = t32;
1241
1245
  } else t32 = $[88];
1246
+ const state = t32;
1242
1247
  let t33;
1243
- if ($[89] !== messages || $[90] !== onNew || $[91] !== queue) {
1244
- t33 = (message_4) => {
1248
+ if ($[89] !== state) {
1249
+ t33 = () => state;
1250
+ $[89] = state;
1251
+ $[90] = t33;
1252
+ } else t33 = $[90];
1253
+ let t34;
1254
+ if ($[91] !== composerClient.methods) {
1255
+ t34 = () => composerClient.methods;
1256
+ $[91] = composerClient.methods;
1257
+ $[92] = t34;
1258
+ } else t34 = $[92];
1259
+ let t35;
1260
+ if ($[93] !== suggestionsClient) {
1261
+ t35 = () => suggestionsClient.methods;
1262
+ $[93] = suggestionsClient;
1263
+ $[94] = t35;
1264
+ } else t35 = $[94];
1265
+ let t36;
1266
+ if ($[95] !== taskClients || $[96] !== tasks) {
1267
+ t36 = (selector) => {
1268
+ if ("id" in selector) {
1269
+ const task_0 = tasks.find((candidate) => candidate.id === selector.id);
1270
+ return taskClients.get({ key: task_0 ? getTaskKey(task_0) : selector.id });
1271
+ }
1272
+ return taskClients.get(selector);
1273
+ };
1274
+ $[95] = taskClients;
1275
+ $[96] = tasks;
1276
+ $[97] = t36;
1277
+ } else t36 = $[97];
1278
+ let t37;
1279
+ if ($[98] !== messages || $[99] !== onNew || $[100] !== queue) {
1280
+ t37 = (message_4) => {
1245
1281
  const appendMessage = typeof message_4 === "string" ? {
1246
1282
  createdAt: /* @__PURE__ */ new Date(),
1247
1283
  parentId: messages.at(-1)?.id ?? null,
@@ -1268,92 +1304,94 @@ const useExternalThread = (t0) => {
1268
1304
  if (queue) queue.enqueue(appendMessage);
1269
1305
  else onNew?.(appendMessage);
1270
1306
  };
1271
- $[89] = messages;
1272
- $[90] = onNew;
1273
- $[91] = queue;
1274
- $[92] = t33;
1275
- } else t33 = $[92];
1276
- let t34;
1277
- if ($[93] !== onStartRun) {
1278
- t34 = () => {
1307
+ $[98] = messages;
1308
+ $[99] = onNew;
1309
+ $[100] = queue;
1310
+ $[101] = t37;
1311
+ } else t37 = $[101];
1312
+ let t38;
1313
+ if ($[102] !== onStartRun) {
1314
+ t38 = () => {
1279
1315
  onStartRun?.();
1280
1316
  };
1281
- $[93] = onStartRun;
1282
- $[94] = t34;
1283
- } else t34 = $[94];
1284
- let t35;
1285
- if ($[95] !== onResume) {
1286
- t35 = () => {
1317
+ $[102] = onStartRun;
1318
+ $[103] = t38;
1319
+ } else t38 = $[103];
1320
+ let t39;
1321
+ if ($[104] !== onResume) {
1322
+ t39 = () => {
1287
1323
  if (!onResume) throw new Error("Runtime does not support resuming runs (onResume is not set).");
1288
1324
  onResume();
1289
1325
  };
1290
- $[95] = onResume;
1291
- $[96] = t35;
1292
- } else t35 = $[96];
1293
- let t36;
1294
- if ($[97] !== onRefetchThread) {
1295
- t36 = onRefetchThread && { unstable_refetchThread: onRefetchThread };
1296
- $[97] = onRefetchThread;
1297
- $[98] = t36;
1298
- } else t36 = $[98];
1299
- let t37;
1300
- if ($[99] !== onLoadExternalState) {
1301
- t37 = (state_0) => {
1326
+ $[104] = onResume;
1327
+ $[105] = t39;
1328
+ } else t39 = $[105];
1329
+ let t40;
1330
+ if ($[106] !== onRefetchThread) {
1331
+ t40 = onRefetchThread && { unstable_refetchThread: onRefetchThread };
1332
+ $[106] = onRefetchThread;
1333
+ $[107] = t40;
1334
+ } else t40 = $[107];
1335
+ let t41;
1336
+ if ($[108] !== onLoadExternalState) {
1337
+ t41 = (state_0) => {
1302
1338
  if (!onLoadExternalState) throw new Error("Runtime does not support importing external states (onLoadExternalState is not set).");
1303
1339
  onLoadExternalState(state_0);
1304
1340
  };
1305
- $[99] = onLoadExternalState;
1306
- $[100] = t37;
1307
- } else t37 = $[100];
1308
- let t38;
1309
- if ($[101] !== messageClients) {
1310
- t38 = (selector) => {
1311
- if ("id" in selector) return messageClients.get({ key: selector.id });
1312
- return messageClients.get(selector);
1341
+ $[108] = onLoadExternalState;
1342
+ $[109] = t41;
1343
+ } else t41 = $[109];
1344
+ let t42;
1345
+ if ($[110] !== messageClients) {
1346
+ t42 = (selector_0) => {
1347
+ if ("id" in selector_0) return messageClients.get({ key: selector_0.id });
1348
+ return messageClients.get(selector_0);
1313
1349
  };
1314
- $[101] = messageClients;
1315
- $[102] = t38;
1316
- } else t38 = $[102];
1317
- let t39;
1318
- if ($[103] !== handleCancelRun || $[104] !== speechController.stop || $[105] !== t30 || $[106] !== t31 || $[107] !== t32 || $[108] !== t33 || $[109] !== t34 || $[110] !== t35 || $[111] !== t36 || $[112] !== t37 || $[113] !== t38) {
1319
- t39 = {
1320
- getState: t30,
1321
- composer: t31,
1322
- suggestions: t32,
1323
- append: t33,
1324
- deleteMessage: _temp1,
1325
- startRun: t34,
1326
- resumeRun: t35,
1350
+ $[110] = messageClients;
1351
+ $[111] = t42;
1352
+ } else t42 = $[111];
1353
+ let t43;
1354
+ if ($[112] !== handleCancelRun || $[113] !== speechController.stop || $[114] !== t33 || $[115] !== t34 || $[116] !== t35 || $[117] !== t36 || $[118] !== t37 || $[119] !== t38 || $[120] !== t39 || $[121] !== t40 || $[122] !== t41 || $[123] !== t42) {
1355
+ t43 = {
1356
+ getState: t33,
1357
+ composer: t34,
1358
+ suggestions: t35,
1359
+ task: t36,
1360
+ append: t37,
1361
+ deleteMessage: _temp10,
1362
+ startRun: t38,
1363
+ resumeRun: t39,
1327
1364
  cancelRun: handleCancelRun,
1328
- ...t36,
1329
- importExternalState: t37,
1330
- getModelContext: _temp10,
1331
- export: _temp11,
1332
- import: _temp12,
1333
- reset: _temp13,
1334
- message: t38,
1365
+ ...t40,
1366
+ importExternalState: t41,
1367
+ getModelContext: _temp11,
1368
+ export: _temp12,
1369
+ import: _temp13,
1370
+ reset: _temp14,
1371
+ message: t42,
1335
1372
  stopSpeaking: speechController.stop,
1336
- connectVoice: _temp14,
1337
- disconnectVoice: _temp15,
1338
- getVoiceVolume: _temp16,
1339
- subscribeVoiceVolume: _temp18,
1340
- muteVoice: _temp19,
1341
- unmuteVoice: _temp20
1373
+ connectVoice: _temp15,
1374
+ disconnectVoice: _temp16,
1375
+ getVoiceVolume: _temp17,
1376
+ subscribeVoiceVolume: _temp19,
1377
+ muteVoice: _temp20,
1378
+ unmuteVoice: _temp21
1342
1379
  };
1343
- $[103] = handleCancelRun;
1344
- $[104] = speechController.stop;
1345
- $[105] = t30;
1346
- $[106] = t31;
1347
- $[107] = t32;
1348
- $[108] = t33;
1349
- $[109] = t34;
1350
- $[110] = t35;
1351
- $[111] = t36;
1352
- $[112] = t37;
1353
- $[113] = t38;
1354
- $[114] = t39;
1355
- } else t39 = $[114];
1356
- return t39;
1380
+ $[112] = handleCancelRun;
1381
+ $[113] = speechController.stop;
1382
+ $[114] = t33;
1383
+ $[115] = t34;
1384
+ $[116] = t35;
1385
+ $[117] = t36;
1386
+ $[118] = t37;
1387
+ $[119] = t38;
1388
+ $[120] = t39;
1389
+ $[121] = t40;
1390
+ $[122] = t41;
1391
+ $[123] = t42;
1392
+ $[124] = t43;
1393
+ } else t43 = $[124];
1394
+ return t43;
1357
1395
  };
1358
1396
  const ExternalThread = resource(useExternalThread);
1359
1397
  attachTransformScopes(useExternalThread, (scopes, parent) => {
@@ -1408,35 +1446,38 @@ function _temp7(error_1) {
1408
1446
  }
1409
1447
  function _temp8() {}
1410
1448
  function _temp9() {}
1411
- function _temp0(s, idx, arr) {
1449
+ function _temp0(task) {
1450
+ return withKey(getTaskKey(task), TaskClient({ task }), [task]);
1451
+ }
1452
+ function _temp1(s, idx, arr) {
1412
1453
  return {
1413
1454
  ...s,
1414
1455
  isLast: idx === arr.length - 1
1415
1456
  };
1416
1457
  }
1417
- function _temp1() {}
1418
- function _temp10() {
1458
+ function _temp10() {}
1459
+ function _temp11() {
1419
1460
  return {
1420
1461
  tools: {},
1421
1462
  config: {}
1422
1463
  };
1423
1464
  }
1424
- function _temp11() {
1465
+ function _temp12() {
1425
1466
  return { messages: [] };
1426
1467
  }
1427
- function _temp12() {}
1428
1468
  function _temp13() {}
1429
1469
  function _temp14() {}
1430
1470
  function _temp15() {}
1431
- function _temp16() {
1471
+ function _temp16() {}
1472
+ function _temp17() {
1432
1473
  return 0;
1433
1474
  }
1434
- function _temp17() {}
1435
- function _temp18() {
1436
- return _temp17;
1475
+ function _temp18() {}
1476
+ function _temp19() {
1477
+ return _temp18;
1437
1478
  }
1438
- function _temp19() {}
1439
1479
  function _temp20() {}
1480
+ function _temp21() {}
1440
1481
  //#endregion
1441
1482
  export { ExternalThread };
1442
1483