@assistant-ui/react 0.14.27 → 0.14.29

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 (257) hide show
  1. package/dist/client/ExternalThread.d.ts +11 -1
  2. package/dist/client/ExternalThread.d.ts.map +1 -1
  3. package/dist/client/ExternalThread.js +758 -513
  4. package/dist/client/ExternalThread.js.map +1 -1
  5. package/dist/context/react/utils/createContextStoreHook.d.ts.map +1 -1
  6. package/dist/context/react/utils/createStateHookForRuntime.d.ts.map +1 -1
  7. package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
  8. package/dist/legacy-runtime/cloud/auiV0.d.ts +12 -1
  9. package/dist/legacy-runtime/cloud/auiV0.d.ts.map +1 -1
  10. package/dist/legacy-runtime/cloud/auiV0.js +2 -1
  11. package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
  12. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.d.ts +1 -1
  13. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.d.ts.map +1 -1
  14. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js +7 -6
  15. package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js.map +1 -1
  16. package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.d.ts.map +1 -1
  17. package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js +30 -15
  18. package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js.map +1 -1
  19. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
  20. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +8 -4
  21. package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
  22. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js +1 -0
  23. package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js.map +1 -1
  24. package/dist/mcp-apps/McpAppRenderer.d.ts.map +1 -1
  25. package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
  26. package/dist/model-context/makeAssistantVisible.js +7 -1
  27. package/dist/model-context/makeAssistantVisible.js.map +1 -1
  28. package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
  29. package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
  30. package/dist/primitives/actionBar/ActionBarExportMarkdown.d.ts.map +1 -1
  31. package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -1
  32. package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -1
  33. package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
  34. package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
  35. package/dist/primitives/actionBar/ActionBarRoot.js +3 -3
  36. package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
  37. package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -1
  38. package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -1
  39. package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts +7 -6
  40. package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts.map +1 -1
  41. package/dist/primitives/actionBar/useActionBarFloatStatus.js +10 -11
  42. package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
  43. package/dist/primitives/actionBarMore/ActionBarMoreContent.d.ts.map +1 -1
  44. package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
  45. package/dist/primitives/actionBarMore/ActionBarMoreItem.d.ts.map +1 -1
  46. package/dist/primitives/actionBarMore/ActionBarMoreSeparator.d.ts.map +1 -1
  47. package/dist/primitives/actionBarMore/ActionBarMoreTrigger.d.ts.map +1 -1
  48. package/dist/primitives/assistantModal/AssistantModalAnchor.d.ts.map +1 -1
  49. package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -1
  50. package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
  51. package/dist/primitives/assistantModal/AssistantModalTrigger.d.ts.map +1 -1
  52. package/dist/primitives/assistantModal/popoverRenderPrimitives.d.ts.map +1 -1
  53. package/dist/primitives/attachment/AttachmentRemove.d.ts.map +1 -1
  54. package/dist/primitives/attachment/AttachmentRemove.js +1 -0
  55. package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
  56. package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -1
  57. package/dist/primitives/attachment/AttachmentThumb.d.ts.map +1 -1
  58. package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
  59. package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
  60. package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
  61. package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -1
  62. package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
  63. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.d.ts.map +1 -1
  64. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +1 -0
  65. package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
  66. package/dist/primitives/chainOfThought/ChainOfThoughtRoot.d.ts.map +1 -1
  67. package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
  68. package/dist/primitives/composer/ComposerAddAttachment.js +8 -2
  69. package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
  70. package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts.map +1 -1
  71. package/dist/primitives/composer/ComposerAttachmentDropzone.js +1 -3
  72. package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
  73. package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
  74. package/dist/primitives/composer/ComposerDictate.d.ts.map +1 -1
  75. package/dist/primitives/composer/ComposerDictationTranscript.d.ts.map +1 -1
  76. package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
  77. package/dist/primitives/composer/ComposerInput.js +6 -4
  78. package/dist/primitives/composer/ComposerInput.js.map +1 -1
  79. package/dist/primitives/composer/ComposerQuote.d.ts.map +1 -1
  80. package/dist/primitives/composer/ComposerQuote.js.map +1 -1
  81. package/dist/primitives/composer/ComposerRoot.d.ts +5 -0
  82. package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
  83. package/dist/primitives/composer/ComposerRoot.js +86 -40
  84. package/dist/primitives/composer/ComposerRoot.js.map +1 -1
  85. package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
  86. package/dist/primitives/composer/ComposerSend.js +1 -0
  87. package/dist/primitives/composer/ComposerSend.js.map +1 -1
  88. package/dist/primitives/composer/ComposerStopDictation.d.ts.map +1 -1
  89. package/dist/primitives/composer/ComposerStopDictation.js +1 -0
  90. package/dist/primitives/composer/ComposerStopDictation.js.map +1 -1
  91. package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
  92. package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
  93. package/dist/primitives/composer/trigger/TriggerPopoverBack.d.ts.map +1 -1
  94. package/dist/primitives/composer/trigger/TriggerPopoverCategories.d.ts.map +1 -1
  95. package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
  96. package/dist/primitives/composer/trigger/TriggerPopoverItems.d.ts.map +1 -1
  97. package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
  98. package/dist/primitives/composer/trigger/TriggerPopoverResource.d.ts.map +1 -1
  99. package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
  100. package/dist/primitives/composer/trigger/detectTrigger.d.ts +1 -1
  101. package/dist/primitives/composer/trigger/triggerDetectionResource.d.ts.map +1 -1
  102. package/dist/primitives/composer/trigger/triggerKeyboardResource.d.ts.map +1 -1
  103. package/dist/primitives/composer/trigger/triggerNavigationResource.d.ts.map +1 -1
  104. package/dist/primitives/composer/trigger/triggerSelectionResource.d.ts.map +1 -1
  105. package/dist/primitives/dropdownMenuRenderPrimitives.d.ts.map +1 -1
  106. package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
  107. package/dist/primitives/error/ErrorMessage.js.map +1 -1
  108. package/dist/primitives/error/ErrorRoot.d.ts.map +1 -1
  109. package/dist/primitives/message/MessageParts.js.map +1 -1
  110. package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
  111. package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
  112. package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -1
  113. package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -1
  114. package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
  115. package/dist/primitives/messagePart/useMessagePartData.d.ts +3 -2
  116. package/dist/primitives/messagePart/useMessagePartData.d.ts.map +1 -1
  117. package/dist/primitives/messagePart/useMessagePartData.js +3 -2
  118. package/dist/primitives/messagePart/useMessagePartData.js.map +1 -1
  119. package/dist/primitives/messagePart/useMessagePartFile.d.ts +5 -4
  120. package/dist/primitives/messagePart/useMessagePartFile.d.ts.map +1 -1
  121. package/dist/primitives/messagePart/useMessagePartFile.js +11 -3
  122. package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
  123. package/dist/primitives/messagePart/useMessagePartImage.d.ts +5 -4
  124. package/dist/primitives/messagePart/useMessagePartImage.d.ts.map +1 -1
  125. package/dist/primitives/messagePart/useMessagePartImage.js +10 -3
  126. package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
  127. package/dist/primitives/messagePart/useMessagePartReasoning.d.ts +5 -4
  128. package/dist/primitives/messagePart/useMessagePartReasoning.d.ts.map +1 -1
  129. package/dist/primitives/messagePart/useMessagePartReasoning.js +10 -3
  130. package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
  131. package/dist/primitives/messagePart/useMessagePartSource.d.ts +6 -4
  132. package/dist/primitives/messagePart/useMessagePartSource.d.ts.map +1 -1
  133. package/dist/primitives/messagePart/useMessagePartSource.js +12 -3
  134. package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
  135. package/dist/primitives/messagePart/useMessagePartText.d.ts +6 -5
  136. package/dist/primitives/messagePart/useMessagePartText.d.ts.map +1 -1
  137. package/dist/primitives/messagePart/useMessagePartText.js +10 -3
  138. package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
  139. package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -1
  140. package/dist/primitives/queueItem/QueueItemRemove.js +1 -0
  141. package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
  142. package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -1
  143. package/dist/primitives/queueItem/QueueItemSteer.js +1 -0
  144. package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
  145. package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -1
  146. package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
  147. package/dist/primitives/selectionToolbar/SelectionToolbarQuote.d.ts.map +1 -1
  148. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.d.ts.map +1 -1
  149. package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
  150. package/dist/primitives/suggestion/SuggestionDescription.d.ts.map +1 -1
  151. package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
  152. package/dist/primitives/suggestion/SuggestionTitle.d.ts.map +1 -1
  153. package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
  154. package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
  155. package/dist/primitives/suggestion/SuggestionTrigger.js +1 -0
  156. package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
  157. package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
  158. package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -1
  159. package/dist/primitives/thread/ThreadScrollToBottom.js +1 -0
  160. package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
  161. package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
  162. package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
  163. package/dist/primitives/thread/ThreadViewport.js +53 -19
  164. package/dist/primitives/thread/ThreadViewport.js.map +1 -1
  165. package/dist/primitives/thread/ThreadViewportFooter.d.ts.map +1 -1
  166. package/dist/primitives/thread/topAnchor/createReserveObservers.d.ts.map +1 -1
  167. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.d.ts +4 -0
  168. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.d.ts.map +1 -1
  169. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js +14 -1
  170. package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -1
  171. package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts +13 -1
  172. package/dist/primitives/thread/topAnchor/topAnchorTurn.d.ts.map +1 -1
  173. package/dist/primitives/thread/topAnchor/topAnchorTurn.js +14 -1
  174. package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -1
  175. package/dist/primitives/thread/useThreadViewportAutoScroll.js +2 -1
  176. package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
  177. package/dist/primitives/threadList/ThreadListLoadMore.d.ts.map +1 -1
  178. package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
  179. package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -1
  180. package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
  181. package/dist/primitives/threadListFocusGroup.d.ts.map +1 -1
  182. package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
  183. package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
  184. package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
  185. package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
  186. package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
  187. package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
  188. package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
  189. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.d.ts.map +1 -1
  190. package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
  191. package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.d.ts.map +1 -1
  192. package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
  193. package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.d.ts.map +1 -1
  194. package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.d.ts.map +1 -1
  195. package/dist/tests/setup.d.ts +1 -1
  196. package/dist/utils/Primitive.d.ts.map +1 -1
  197. package/dist/utils/Primitive.js.map +1 -1
  198. package/dist/utils/createActionButton.d.ts.map +1 -1
  199. package/dist/utils/hooks/useOnResizeContent.js +1 -0
  200. package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
  201. package/dist/utils/hooks/useSizeHandle.js +1 -0
  202. package/dist/utils/hooks/useSizeHandle.js.map +1 -1
  203. package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
  204. package/dist/utils/smooth/useSmooth.js +2 -2
  205. package/dist/utils/smooth/useSmooth.js.map +1 -1
  206. package/package.json +20 -20
  207. package/src/client/ExternalThread.ts +341 -53
  208. package/src/legacy-runtime/cloud/auiV0.ts +14 -0
  209. package/src/legacy-runtime/runtime-cores/assistant-transport/commandQueue.ts +4 -1
  210. package/src/legacy-runtime/runtime-cores/assistant-transport/runManager.ts +37 -10
  211. package/src/legacy-runtime/runtime-cores/assistant-transport/transport-delivery.test.tsx +79 -0
  212. package/src/legacy-runtime/runtime-cores/assistant-transport/transport-parentid.test.tsx +97 -0
  213. package/src/legacy-runtime/runtime-cores/assistant-transport/transport-scheduling.test.ts +113 -2
  214. package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransport.spec.md +10 -2
  215. package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.test.tsx +189 -0
  216. package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts +20 -4
  217. package/src/model-context/makeAssistantVisible.test.tsx +146 -0
  218. package/src/model-context/makeAssistantVisible.tsx +18 -1
  219. package/src/primitives/actionBar/useActionBarFloatStatus.ts +7 -5
  220. package/src/primitives/composer/ComposerAddAttachment.test.tsx +108 -0
  221. package/src/primitives/composer/ComposerAddAttachment.ts +10 -4
  222. package/src/primitives/composer/ComposerAttachmentDropzone.test.tsx +3 -2
  223. package/src/primitives/composer/ComposerAttachmentDropzone.tsx +3 -2
  224. package/src/primitives/composer/ComposerInput.test.tsx +98 -1
  225. package/src/primitives/composer/ComposerInput.tsx +10 -8
  226. package/src/primitives/composer/ComposerRoot.test.tsx +226 -5
  227. package/src/primitives/composer/ComposerRoot.tsx +50 -1
  228. package/src/primitives/messagePart/useMessagePartData.ts +3 -2
  229. package/src/primitives/messagePart/useMessagePartFile.ts +19 -7
  230. package/src/primitives/messagePart/useMessagePartImage.ts +18 -7
  231. package/src/primitives/messagePart/useMessagePartReasoning.ts +15 -6
  232. package/src/primitives/messagePart/useMessagePartSource.ts +20 -7
  233. package/src/primitives/messagePart/useMessagePartText.ts +15 -5
  234. package/src/primitives/thread/ThreadViewport.tsx +15 -0
  235. package/src/primitives/thread/topAnchor/mountTopAnchorReserve.test.ts +243 -0
  236. package/src/primitives/thread/topAnchor/mountTopAnchorReserve.ts +28 -7
  237. package/src/primitives/thread/topAnchor/topAnchorTurn.test.ts +69 -0
  238. package/src/primitives/thread/topAnchor/topAnchorTurn.ts +29 -0
  239. package/src/primitives/thread/useThreadViewportAutoScroll.test.tsx +86 -1
  240. package/src/primitives/thread/useThreadViewportAutoScroll.ts +6 -1
  241. package/src/tests/DataRenderers.test.tsx +212 -0
  242. package/src/tests/RemoteThreadListRuntime.adapterProvider.test.tsx +1 -11
  243. package/src/tests/external-thread-attachments.test.tsx +372 -0
  244. package/src/tests/external-thread-parity.test.tsx +232 -0
  245. package/src/tests/generative-ui.test.tsx +1 -46
  246. package/src/tests/messagePartSwitchRace.test.tsx +172 -0
  247. package/src/tests/messagePartTypeMismatch.test.tsx +146 -0
  248. package/src/tests/threadMessageById.test.tsx +0 -7
  249. package/src/utils/smooth/useSmooth.ts +7 -4
  250. package/src/tests/BaseComposerRuntimeCore.test.ts +0 -612
  251. package/src/tests/BaseSubscribable.test.ts +0 -54
  252. package/src/tests/DataRenderers.test.ts +0 -355
  253. package/src/tests/ExternalStoreThreadRuntimeCore.test.ts +0 -685
  254. package/src/tests/LocalThreadRuntimeCore.test.ts +0 -324
  255. package/src/tests/auiV0Encode.test.ts +0 -188
  256. package/src/tests/external-message-converter.test.ts +0 -346
  257. package/src/tests/shouldContinue.test.ts +0 -122
@@ -1 +1 @@
1
- {"version":3,"file":"ExternalThread.js","names":["useState","useMemo","useEffect","useEffectEvent","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AppendMessage","Attachment","CreateAttachment","RespondToToolApprovalOptions","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ExternalThreadQueueAdapter","ExternalThreadBranchAdapter","QueueItemState","ComposerSendOptions","getThreadMessageText","resolveToolApprovalResponse","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","ExternalThreadProps","messages","isRunning","isSendDisabled","onNew","message","onEdit","onReload","parentId","onStartRun","onCancel","queue","branches","onRespondToToolApproval","options","MessageClientProps","index","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","isEditing","setIsEditing","t1","content","t2","part","idx","PartResource","map","partClients","attachments","t3","_temp2","attachmentClients","t4","Symbol","for","handleBeginEdit","t5","handleCancelEdit","t6","msg","clear","sourceId","handleSendEdit","t7","ComposerClientResource","type","canCancel","onBeginEdit","onSend","composerClient","branchIds","t8","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t9","t10","state","isLast","speech","undefined","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","switchToBranch","t16","selector","get","partIndex","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","_temp4","stopSpeaking","_temp5","submitFeedback","_temp6","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","const","status","response","Error","approval","approved","resolution","addToolResult","_temp7","resumeToolCall","_temp8","respondToToolApproval","AttachmentResourceProps","onRemove","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onSteer","steer","QueueItemClient","useComposerClientResource","text","setText","role","setRole","runConfig","setRunConfig","setAttachments","quote","setQuote","textParts","filter","_temp9","messageText","_temp0","join","updateFromMessage","_","i","queueItems","items","queueItemClients","trim","isEmpty","canSend","attachmentAccept","dictation","fileOrAttachment","File","newAttachment","Math","random","toString","substring","name","contentType","file","newAttachment_0","opts","currentQuote","composedMessage","createdAt","Date","startRun","metadata","custom","enqueue","t19","t20","addAttachment","clearAttachments","reset","send","cancel","beginEdit","startDictation","_temp1","stopDictation","_temp10","queueItem","useExternalThread","messageId","messageIndex","m","handleReload","props","messageClients","handleCancelRun","handleSendNew","hasQueue","hasBranches","_temp11","messageStates","edit","feedback","voice","switchBranchDuringRun","unstable_copy","isDisabled","isLoading","capabilities","suggestions","extras","message_0","appendMessage","at","append","deleteMessage","_temp12","resumeRun","_temp13","cancelRun","getModelContext","_temp14","export","_temp15","import","_temp16","_temp17","_temp18","connectVoice","_temp19","disconnectVoice","_temp20","getVoiceVolume","_temp21","subscribeVoiceVolume","_temp23","muteVoice","_temp24","unmuteVoice","_temp25","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","s","arr","config","_temp22"],"sources":["../../src/client/ExternalThread.ts"],"sourcesContent":["import { useState, useMemo, useEffect, useEffectEvent } from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store\";\n\nimport type {\n AppendMessage,\n Attachment,\n CreateAttachment,\n RespondToToolApprovalOptions,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ExternalThreadQueueAdapter,\n ExternalThreadBranchAdapter,\n} from \"@assistant-ui/core\";\nimport type { QueueItemState } from \"@assistant-ui/core/store\";\nimport type { ComposerSendOptions } from \"@assistant-ui/core/store\";\nimport {\n getThreadMessageText,\n resolveToolApprovalResponse,\n} from \"@assistant-ui/core/internal\";\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\nimport { SingleThreadList } from \"./SingleThreadList\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (options: RespondToToolApprovalOptions) => void;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n onEdit?: (message: AppendMessage) => void;\n onReload?: () => void;\n queue?: ExternalThreadQueueAdapter | undefined;\n branches?: ExternalThreadBranchAdapter | undefined;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(idx, PartResource({ part, onRespondToToolApproval })),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n setIsEditing(true);\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n queue?.clear(\"edit\");\n onEdit?.({\n ...msg,\n parentId: message.id,\n sourceId: message.id,\n });\n setIsEditing(false);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n isEditing,\n canCancel: true,\n onCancel: handleCancelEdit,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n return {\n ...message,\n attachments: message.attachments ?? [],\n parentId: null,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech: undefined,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: () => {},\n stopSpeaking: () => {},\n submitFeedback: () => {},\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n onRespondToToolApproval,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({\n ...part,\n status: { type: \"complete\" as const },\n }),\n [part],\n );\n\n return {\n getState: () => state,\n addToolResult: () => {},\n resumeToolCall: () => {},\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n onRespondToToolApproval(\n resolveToolApprovalResponse(part.approval, response),\n );\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n isEditing: boolean;\n canCancel: boolean;\n isSendDisabled?: boolean;\n onCancel: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onSteer,\n onRemove,\n}: {\n item: QueueItemState;\n onSteer: () => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: onSteer,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n isEditing,\n canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [text, setText] = useState(\"\");\n const [role, setRole] = useState<\"user\" | \"assistant\" | \"system\">(\"user\");\n const [runConfig, setRunConfig] = useState<Record<string, unknown>>({});\n const [attachments, setAttachments] = useState<readonly Attachment[]>([]);\n const [quote, setQuote] = useState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n\n // Update composer values when editing begins\n const updateFromMessage = useEffectEvent(() => {\n if (message) {\n // Extract text from message content (text parts only)\n const textParts = message.content.filter((part) => part.type === \"text\");\n const messageText = textParts\n .map((part) => (\"text\" in part ? part.text : \"\"))\n .join(\"\\n\\n\");\n\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n }\n });\n\n useEffect(() => {\n if (isEditing) {\n updateFromMessage();\n }\n }, [isEditing]);\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment, idx) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {\n setAttachments(attachments.filter((_, i) => i !== idx));\n },\n }),\n ),\n ),\n );\n\n const queueItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onSteer: () => queue?.steer(item.id),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (fileOrAttachment instanceof File) {\n const newAttachment: Attachment = {\n id: Math.random().toString(36).substring(7),\n type: \"file\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.type,\n file: fileOrAttachment,\n status: { type: \"complete\" },\n content: [],\n };\n setAttachments([...attachments, newAttachment]);\n } else {\n const newAttachment: Attachment = {\n id: fileOrAttachment.id ?? Math.random().toString(36).substring(7),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n setAttachments([...attachments, newAttachment]);\n }\n },\n clearAttachments: async () => {\n setAttachments([]);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n },\n send: (opts?: ComposerSendOptions) => {\n if (!state.canSend) return;\n\n const currentQuote = quote;\n const composedMessage: AppendMessage = {\n role,\n content: text ? [{ type: \"text\" as const, text }] : [],\n attachments: attachments as any,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n if (queue) {\n queue.enqueue(composedMessage, { steer: opts?.steer ?? false });\n } else {\n onSend?.(composedMessage);\n }\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n },\n cancel: onCancel,\n beginEdit: () => {\n onBeginEdit?.();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number }) => {\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\n// External Thread Client\nconst useExternalThread = ({\n messages,\n isRunning = false,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n queue?.clear(\"reload\");\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const handleCancelRun = () => {\n queue?.clear(\"cancel-run\");\n onCancel?.();\n };\n\n const handleSendNew = (message: AppendMessage) => {\n onNew?.(message);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n isEditing: true,\n canCancel: isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue,\n }),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0,\n isDisabled: false,\n isLoading: false,\n isRunning,\n capabilities: {\n edit: false,\n delete: false,\n reload: false,\n cancel: isRunning,\n speech: false,\n attachments: false,\n feedback: false,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: {},\n suggestions: [],\n extras: undefined,\n speech: undefined,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n hasQueue,\n hasBranches,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n append: (message) => {\n const appendMessage: AppendMessage =\n typeof message === \"string\"\n ? {\n createdAt: new Date(),\n parentId: messages.at(-1)?.id ?? null,\n sourceId: null,\n runConfig: {},\n role: \"user\",\n content: [{ type: \"text\", text: message }],\n attachments: [],\n metadata: { custom: {} },\n }\n : {\n createdAt: message.createdAt ?? new Date(),\n parentId: message.parentId ?? messages.at(-1)?.id ?? null,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage, { steer: false });\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {},\n cancelRun: handleCancelRun,\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: () => {},\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread().composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"ExternalThread.js","names":["useState","useMemo","useEffect","useEffectEvent","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AddToolResultOptions","AppendMessage","Attachment","AttachmentAdapter","CreateAttachment","PendingAttachment","RespondToToolApprovalOptions","ResumeToolCallOptions","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","ExternalThreadQueueAdapter","ExternalThreadBranchAdapter","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","isCreateAttachment","resolveToolApprovalResponse","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","role","status","result","isLastPart","Math","max","content","length","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","queue","branches","onRespondToToolApproval","MessageClientProps","index","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","isEditing","setIsEditing","t1","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Symbol","for","handleBeginEdit","t5","handleCancelEdit","t6","msg","clear","sourceId","handleSendEdit","t7","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t8","getBranches","indexOf","branchIndex","branchNumber","branchCount","t9","t10","isLast","speech","undefined","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","_temp4","stopSpeaking","_temp5","submitFeedback","_temp6","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","Error","response","toResponse","toolName","isError","artifact","modelContent","payload","response_0","approval","approved","resolution","addToolResult","resumeToolCall","respondToToolApproval","AttachmentResourceProps","onRemove","Promise","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onSteer","steer","QueueItemClient","drainAdapterAdd","ReturnType","upsert","asyncIterator","useLiveState","initial","setState","ref","next","current","prev","T","set","const","useComposerClientResource","text","setText","textRef","setRole","roleRef","runConfig","setRunConfig","runConfigRef","setAttachments","attachmentsRef","quote","setQuote","quoteRef","textParts","filter","_temp7","messageText","_temp8","join","updateFromMessage","a","removed","all","_temp9","a_1","removePendingAttachments","attachment_0","prev_0","a_2","upsertAttachment","queueItems","items","queueItemClients","accept","trim","isEmpty","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","add","newAttachment","random","toString","substring","prev_1","newAttachment_0","prev_2","removed_0","t19","removed_1","t20","opts","currentQuote","currentText","currentAttachments","isEmpty_0","dispatch","sendAttachments","composedMessage","createdAt","Date","startRun","metadata","custom","enqueue","attachment_1","send","then","error","prev_3","prev_4","prev_5","console","t21","t22","t23","addAttachment","clearAttachments","reset","cancel","beginEdit","startDictation","_temp0","stopDictation","_temp1","queueItem","dedupeMessagesById","seenIds","Set","deduped","i","has","warn","push","reverse","useExternalThread","messagesProp","threadState","messageIndex","m","handleReload","props","messageClients","handleCancelRun","at","handleSendNew","headId","message_0","composerQueue","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","_temp10","messageStates","edit","feedback","voice","switchBranchDuringRun","unstable_copy","isDisabled","capabilities","suggestions","message_1","appendMessage","state_0","t24","t25","append","deleteMessage","_temp11","resumeRun","cancelRun","importExternalState","getModelContext","_temp12","export","_temp13","import","_temp14","_temp15","_temp16","connectVoice","_temp17","disconnectVoice","_temp18","getVoiceVolume","_temp19","subscribeVoiceVolume","_temp21","muteVoice","_temp22","unmuteVoice","_temp23","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","a_0","s","arr","config","_temp20"],"sources":["../../src/client/ExternalThread.ts"],"sourcesContent":["import {\n useState,\n useMemo,\n useEffect,\n useEffectEvent,\n useCallback,\n useRef,\n} from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store\";\n\nimport type {\n AddToolResultOptions,\n AppendMessage,\n Attachment,\n AttachmentAdapter,\n CreateAttachment,\n PendingAttachment,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n ExternalThreadQueueAdapter,\n ExternalThreadBranchAdapter,\n} from \"@assistant-ui/core\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"@assistant-ui/core/store\";\nimport type { ComposerSendOptions } from \"@assistant-ui/core/store\";\nimport {\n fileMatchesAccept,\n getThreadMessageText,\n isCreateAttachment,\n resolveToolApprovalResponse,\n} from \"@assistant-ui/core/internal\";\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\nimport { SingleThreadList } from \"./SingleThreadList\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\n// Legacy runtime parity (toMessagePartStatus): a tool call without a result\n// carries its message's status; the last part of a streaming message streams.\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (message.role !== \"assistant\" || !message.status) return COMPLETE_STATUS;\n\n if (part.type === \"tool-call\") {\n if (!part.result) return message.status as ToolCallMessagePartStatus;\n return COMPLETE_STATUS;\n }\n\n const isLastPart = partIndex === Math.max(0, message.content.length - 1);\n if (message.status.type === \"requires-action\") return COMPLETE_STATUS;\n return isLastPart ? (message.status as MessagePartStatus) : COMPLETE_STATUS;\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n isLoading?: boolean | undefined;\n state?: ReadonlyJSONValue | undefined;\n extras?: unknown;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n onResume?: (() => void) | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n /** Callback for resuming a tool call that is waiting for human input. */\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n onLoadExternalState?: ((state: unknown) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (options: RespondToToolApprovalOptions) => void;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n parentId: string | null;\n onEdit?: (message: AppendMessage) => void;\n onReload?: () => void;\n queue?: ExternalThreadQueueAdapter | undefined;\n branches?: ExternalThreadBranchAdapter | undefined;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n parentId,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(\n idx,\n PartResource({\n part,\n status: derivePartStatus(message, idx, part),\n messageId: message.id,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n }),\n ),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n setIsEditing(true);\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n queue?.clear(\"edit\");\n onEdit?.({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n setIsEditing(false);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n isEditing,\n canCancel: true,\n onCancel: handleCancelEdit,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n attachmentAdapter,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n return {\n ...message,\n attachments: message.attachments ?? [],\n parentId,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech: undefined,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n parentId,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: () => {},\n stopSpeaking: () => {},\n submitFeedback: () => {},\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n status: ToolCallMessagePartStatus;\n messageId: string;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n status,\n messageId,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({\n ...part,\n status,\n }),\n [part, status],\n );\n\n return {\n getState: () => state,\n addToolResult: (result) => {\n if (!onAddToolResult)\n throw new Error(\n \"Runtime does not support tool results (onAddToolResult is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to add tool result on non-tool message part\");\n\n const response = ToolResponse.toResponse(result);\n onAddToolResult({\n messageId,\n toolName: part.toolName,\n toolCallId: part.toolCallId,\n result: response.result as ReadonlyJSONValue,\n isError: response.isError,\n ...(response.artifact !== undefined && { artifact: response.artifact }),\n ...(response.modelContent !== undefined && {\n modelContent: response.modelContent,\n }),\n });\n },\n resumeToolCall: (payload) => {\n if (!onResumeToolCall)\n throw new Error(\n \"Runtime does not support resuming tool calls (onResumeToolCall is not set).\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to resume tool call on non-tool message part\");\n\n onResumeToolCall({ toolCallId: part.toolCallId, payload });\n },\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n onRespondToToolApproval(\n resolveToolApprovalResponse(part.approval, response),\n );\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void | Promise<void>;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n await onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n isEditing: boolean;\n canCancel: boolean;\n isSendDisabled?: boolean;\n onCancel: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onSteer,\n onRemove,\n}: {\n item: QueueItemState;\n onSteer: () => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: onSteer,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\nconst drainAdapterAdd = async (\n result: ReturnType<AttachmentAdapter[\"add\"]>,\n upsert: (attachment: Attachment) => void,\n) => {\n if (Symbol.asyncIterator in result) {\n for await (const attachment of result) {\n upsert(attachment);\n }\n } else {\n upsert(await result);\n }\n};\n\n// State whose setter tracks the latest value in a ref, so imperative\n// call sequences (setText immediately followed by send) observe the write\n// before React re-renders — legacy composer parity.\nconst useLiveState = <T>(initial: T) => {\n const [state, setState] = useState(initial);\n const ref = useRef(state);\n const set = useCallback((next: T | ((prev: T) => T)) => {\n ref.current =\n typeof next === \"function\" ? (next as (prev: T) => T)(ref.current) : next;\n setState(ref.current);\n }, []);\n return [state, set, ref] as const;\n};\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n isEditing,\n canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [text, setText, textRef] = useLiveState(\"\");\n const [role, setRole, roleRef] = useLiveState<\n \"user\" | \"assistant\" | \"system\"\n >(\"user\");\n const [runConfig, setRunConfig, runConfigRef] = useLiveState<\n Record<string, unknown>\n >({});\n const [attachments, setAttachments, attachmentsRef] = useLiveState<\n readonly Attachment[]\n >([]);\n const [quote, setQuote, quoteRef] = useLiveState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n\n // Update composer values when editing begins\n const updateFromMessage = useEffectEvent(() => {\n if (message) {\n // Extract text from message content (text parts only)\n const textParts = message.content.filter((part) => part.type === \"text\");\n const messageText = textParts\n .map((part) => (\"text\" in part ? part.text : \"\"))\n .join(\"\\n\\n\");\n\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n }\n });\n\n useEffect(() => {\n if (isEditing) {\n updateFromMessage();\n }\n }, [isEditing]);\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: async () => {\n await attachmentAdapter?.remove(attachment);\n setAttachments((prev) =>\n prev.filter((a) => a.id !== attachment.id),\n );\n },\n }),\n ),\n ),\n );\n\n const removePendingAttachments = async (removed: readonly Attachment[]) => {\n if (!attachmentAdapter) return;\n await Promise.all(\n removed\n .filter((a) => a.status.type !== \"complete\")\n .map((a) => attachmentAdapter.remove(a)),\n );\n };\n\n const upsertAttachment = (attachment: Attachment) => {\n setAttachments((prev) => {\n const idx = prev.findIndex((a) => a.id === attachment.id);\n if (idx === -1) return [...prev, attachment];\n const next = [...prev];\n next[idx] = attachment;\n return next;\n });\n };\n\n const queueItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onSteer: () => queue?.steer(item.id),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: attachmentAdapter?.accept ?? \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n attachmentAdapter?.accept,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (attachmentAdapter) {\n const file = isCreateAttachment(fileOrAttachment)\n ? {\n name: fileOrAttachment.name,\n type: fileOrAttachment.contentType ?? \"\",\n }\n : { name: fileOrAttachment.name, type: fileOrAttachment.type };\n if (!fileMatchesAccept(file, attachmentAdapter.accept))\n throw new Error(\n `File type ${file.type || \"unknown\"} is not accepted. Accepted types: ${attachmentAdapter.accept}`,\n );\n }\n if (!isCreateAttachment(fileOrAttachment) && attachmentAdapter) {\n await drainAdapterAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n upsertAttachment,\n );\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: Math.random().toString(36).substring(7),\n type: \"file\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.type,\n file: fileOrAttachment,\n status: { type: \"complete\" },\n content: [],\n };\n setAttachments((prev) => [...prev, newAttachment]);\n } else {\n const newAttachment: Attachment = {\n id: fileOrAttachment.id ?? Math.random().toString(36).substring(7),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n setAttachments((prev) => [...prev, newAttachment]);\n }\n },\n clearAttachments: async () => {\n const removed = attachmentsRef.current;\n setAttachments([]);\n await removePendingAttachments(removed);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n const removed = attachmentsRef.current;\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n await removePendingAttachments(removed);\n },\n send: (opts?: ComposerSendOptions) => {\n const currentQuote = quoteRef.current;\n const currentText = textRef.current;\n const currentAttachments = attachmentsRef.current;\n const isEmpty = !currentText.trim() && !currentAttachments.length;\n if (!isEditing || isEmpty || isSendDisabled) return;\n\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n\n const dispatch = (sendAttachments: readonly Attachment[]) => {\n const composedMessage: AppendMessage = {\n role: roleRef.current,\n content: currentText\n ? [{ type: \"text\" as const, text: currentText }]\n : [],\n attachments: sendAttachments as any,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig: runConfigRef.current,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n if (queue) {\n queue.enqueue(composedMessage, { steer: opts?.steer ?? false });\n } else {\n onSend?.(composedMessage);\n }\n };\n\n if (attachmentAdapter && currentAttachments.length > 0) {\n void Promise.all(\n currentAttachments.map((attachment) =>\n attachment.status.type === \"complete\"\n ? attachment\n : attachmentAdapter.send(attachment as PendingAttachment),\n ),\n ).then(dispatch, (error) => {\n // Upload failed: merge the failed send back into the draft.\n setText((prev) =>\n currentText && prev\n ? currentText + \"\\n\" + prev\n : currentText || prev,\n );\n setQuote((prev) => prev ?? currentQuote);\n setAttachments((prev) => [...currentAttachments, ...prev]);\n console.error(\"Failed to send attachments\", error);\n });\n } else {\n dispatch(currentAttachments);\n }\n },\n cancel: onCancel,\n beginEdit: () => {\n onBeginEdit?.();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number }) => {\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst dedupeMessagesById = (messages: readonly ExternalThreadMessage[]) => {\n const seenIds = new Set<string>();\n const deduped: ExternalThreadMessage[] = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n const message = messages[i]!;\n if (seenIds.has(message.id)) {\n console.warn(\n `ExternalThread: duplicate message id \"${message.id}\" in the provided messages array; keeping the last occurrence.`,\n );\n continue;\n }\n seenIds.add(message.id);\n deduped.push(message);\n }\n return deduped.length === messages.length ? messages : deduped.reverse();\n};\n\n// External Thread Client\nconst useExternalThread = ({\n messages: messagesProp,\n isRunning = false,\n isLoading = false,\n state: threadState,\n extras,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n onResume,\n onAddToolResult,\n onResumeToolCall,\n onLoadExternalState,\n attachmentAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n queue?.clear(\"reload\");\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n parentId: index > 0 ? messages[index - 1]!.id : null,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const handleCancelRun = () => {\n queue?.clear(\"cancel-run\");\n onCancel?.();\n };\n\n const handleSendNew = (message: AppendMessage) => {\n // The composer does not know the thread; stamp the current head as the\n // parent (legacy composer parity).\n onNew?.({ ...message, parentId: messages.at(-1)?.id ?? null });\n };\n\n const headId = messages.at(-1)?.id ?? null;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message, options) =>\n queue.enqueue(\n { ...message, parentId: message.parentId ?? headId },\n options,\n ),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n isEditing: true,\n canCancel: isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n }),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n cancel: isRunning,\n speech: false,\n attachments: hasAttachments,\n feedback: false,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: threadState ?? {},\n suggestions: [],\n extras,\n speech: undefined,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n isLoading,\n threadState,\n extras,\n hasQueue,\n hasBranches,\n hasEdit,\n hasReload,\n hasAttachments,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n append: (message) => {\n const appendMessage: AppendMessage =\n typeof message === \"string\"\n ? {\n createdAt: new Date(),\n parentId: messages.at(-1)?.id ?? null,\n sourceId: null,\n runConfig: {},\n role: \"user\",\n content: [{ type: \"text\", text: message }],\n attachments: [],\n metadata: { custom: {} },\n }\n : {\n createdAt: message.createdAt ?? new Date(),\n parentId: message.parentId ?? messages.at(-1)?.id ?? null,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage, { steer: false });\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {\n if (!onResume)\n throw new Error(\n \"Runtime does not support resuming runs (onResume is not set).\",\n );\n onResume();\n },\n cancelRun: handleCancelRun,\n importExternalState: (state: unknown) => {\n if (!onLoadExternalState)\n throw new Error(\n \"Runtime does not support importing external states (onLoadExternalState is not set).\",\n );\n onLoadExternalState(state);\n },\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: () => {},\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread().composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":";;;;;;;;;;AAiDA,MAAM0C,oBAA+C,CAAA;AACrD,MAAMC,mBAAsC,CAAA;AAM5C,MAAMG,kBAAqCC,OAAOC,OAAO,EACvDC,MAAM,WACR,CAAC;AAID,MAAMC,oBACJC,SACAC,WACAC,SAC8B;CAC9B,IAAIF,QAAQG,SAAS,eAAe,CAACH,QAAQI,QAAQ,OAAOT;CAE5D,IAAIO,KAAKJ,SAAS,aAAa;EAC7B,IAAI,CAACI,KAAKG,QAAQ,OAAOL,QAAQI;EACjC,OAAOT;CACT;CAEA,MAAMW,aAAaL,cAAcM,KAAKC,IAAI,GAAGR,QAAQS,QAAQC,SAAS,CAAC;CACvE,IAAIV,QAAQI,OAAON,SAAS,mBAAmB,OAAOH;CACtD,OAAOW,aAAcN,QAAQI,SAA+BT;AAC9D;AAuDA,MAAMwC,oBAAmBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAtC,SAAAkC,OAAAb,UAAAF,QAAAC,UAAAU,OAAAC,UAAAC,yBAAAP,iBAAAE,kBAAAE,sBAAAO;CAaxB,MAAA,CAAAG,UAAAC,eAAgC3F,SAAS,KAAK;CAC9C,MAAA,CAAA4F,YAAAC,iBAAoC7F,SAAS,KAAK;CAClD,MAAA,CAAA8F,WAAAC,gBAAkC/F,SAAS,KAAK;CAAE,IAAAgG;CAAA,IAAAR,EAAA,OAAArC,WAAAqC,EAAA,OAAAZ,mBAAAY,EAAA,OAAAL,2BAAAK,EAAA,OAAAV,kBAAA;EAGhDkB,KAAA7C,QAAOS,QAAQqC,KAAK5C,MAAA6C,QAClB3F,QACE2F,KACAC,aAAa;GAAA9C;GAAAE,QAEHL,iBAAiBC,SAAS+C,KAAK7C,IAAI;GAAC+C,WACjCjD,QAAON;GAAGsC;GAAAP;GAAAE;EAIvB,CAAC,CACH,CACF;EAACU,EAAA,KAAArC;EAAAqC,EAAA,KAAAZ;EAAAY,EAAA,KAAAL;EAAAK,EAAA,KAAAV;EAAAU,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAbH,MAAAa,cAAoB3F,gBAClBsF,EAaF;CAAE,IAAAM;CAAA,IAAAd,EAAA,OAAArC,QAAAoD,aAAA;EAGCD,KAAAnD,QAAOoD,eAAP,CAAA;EAAyBf,EAAA,KAAArC,QAAAoD;EAAAf,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,OAAAc,IAAA;EAA1BE,KAACF,GAAyBL,IAAMQ,MAQhC;EAACjB,EAAA,KAAAc;EAAAd,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CATH,MAAAkB,oBAA0BhG,gBACxB8F,EASF;CAAE,IAAAG;CAAA,IAAAnB,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,GAAA;EAEsBF,WAAA;GACtBZ,aAAa,IAAI;EAAC;EACnBP,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAFD,MAAAsB,kBAAwBH;CAEtB,IAAAI;CAAA,IAAAvB,EAAA,QAAAoB,OAAAC,IAAA,2BAAA,GAAA;EAEuBE,WAAA;GACvBhB,aAAa,KAAK;EAAC;EACpBP,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAFD,MAAAwB,mBAAyBD;CAEvB,IAAAE;CAAA,IAAAzB,EAAA,QAAArC,QAAAN,MAAA2C,EAAA,QAAAlB,UAAAkB,EAAA,QAAAhB,YAAAgB,EAAA,QAAAP,OAAA;EAEqBgC,MAAAC,QAAA;GACrBjC,OAAKkC,MAAQ,MAAM;GACnB7C,SAAS;IAAA,GACJ4C;IAAG1C;IAAA4C,UAEIjE,QAAON;GACnB,CAAC;GACDkD,aAAa,KAAK;EAAC;EACpBP,EAAA,MAAArC,QAAAN;EAAA2C,EAAA,MAAAlB;EAAAkB,EAAA,MAAAhB;EAAAgB,EAAA,MAAAP;EAAAO,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CARD,MAAA6B,iBAAuBJ;CAQrB,IAAAK;CAAA,IAAA9B,EAAA,QAAAR,qBAAAQ,EAAA,QAAA6B,kBAAA7B,EAAA,QAAAM,aAAAN,EAAA,QAAArC,WAAAqC,EAAA,QAAAP,OAAA;EAGAqC,KAAAC,uBAAuB;GAAAtE,MACf;GAAM6C;GAAA0B,WAED;GAAI9C,UACLsC;GAAgBS,aACbX;GAAeY,QACpBL;GAAclE;GAAA8B;GAAAD;EAIxB,CAAC;EAACQ,EAAA,MAAAR;EAAAQ,EAAA,MAAA6B;EAAA7B,EAAA,MAAAM;EAAAN,EAAA,MAAArC;EAAAqC,EAAA,MAAAP;EAAAO,EAAA,MAAA8B;CAAA,OAAAA,KAAA9B,EAAA;CAXJ,MAAAmC,iBAAuB/G,kBACrB0G,EAWF;CAAE,IAAAM;CAAA,IAAAC;CAAA,IAAArC,EAAA,QAAAN,YAAAM,EAAA,QAAArC,QAAAN,IAAA;EAEF+E,YAAkB1C,UAAQ4C,YAAc3E,QAAON,EAAuB,KAApDF;EACEkF,KAAAD,UAASG,QAAS5E,QAAON,EAAG;EAAC2C,EAAA,MAAAN;EAAAM,EAAA,MAAArC,QAAAN;EAAA2C,EAAA,MAAAoC;EAAApC,EAAA,MAAAqC;CAAA,OAAA;EAAAD,YAAApC,EAAA;EAAAqC,KAAArC,EAAA;CAAA;CAAjD,MAAAwC,cAAoBH;CACpB,MAAAI,eAAqBD,gBAAgB,KAAhB,IAAyBA,cAAc;CAC5D,MAAAE,cAAoBF,gBAAgB,KAAhB,IAAyBJ,UAAS/D;CAAQ,IAAAsE;CAAA,IAAA3C,EAAA,QAAArC,QAAAoD,aAAA;EAK7C4B,KAAAhF,QAAOoD,eAAP,CAAA;EAAyBf,EAAA,MAAArC,QAAAoD;EAAAf,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAAA,IAAA4C;CAAA,IAAA5C,EAAA,QAAA0C,eAAA1C,EAAA,QAAAyC,gBAAAzC,EAAA,QAAAmC,eAAAzD,SAAAsB,EAAA,QAAAH,SAAAG,EAAA,QAAAE,YAAAF,EAAA,QAAAI,cAAAJ,EAAA,QAAArC,WAAAqC,EAAA,QAAAhB,YAAAgB,EAAA,QAAAa,YAAAnC,SAAAsB,EAAA,QAAA2C,IAAA;EAFjCC,MAAA;GAAA,GACFjF;GAAOoD,aACG4B;GAAyB3D;GAAA6D,QAE9B;GAAKJ;GAAAC;GAAAI,QAGLC,KAAAA;GAASC,OACVnC,YAAWnC;GAAMwB;GAAAE;GAAAP;GAAAoD,UAIdd,eAAczD;EAC1B;EAACsB,EAAA,MAAA0C;EAAA1C,EAAA,MAAAyC;EAAAzC,EAAA,MAAAmC,eAAAzD;EAAAsB,EAAA,MAAAH;EAAAG,EAAA,MAAAE;EAAAF,EAAA,MAAAI;EAAAJ,EAAA,MAAArC;EAAAqC,EAAA,MAAAhB;EAAAgB,EAAA,MAAAa,YAAAnC;EAAAsB,EAAA,MAAA2C;EAAA3C,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CAdH,MAAAtB,QACEkE;CAwBC,IAAAM;CAAA,IAAAlD,EAAA,QAAAtB,OAAA;EAGSwE,YAAMxE;EAAKsB,EAAA,MAAAtB;EAAAsB,EAAA,MAAAkD;CAAA,OAAAA,MAAAlD,EAAA;CAAA,IAAAmD;CAAA,IAAAnD,EAAA,QAAAmC,eAAAiB,SAAA;EACXD,YAAMhB,eAAciB;EAAQpD,EAAA,MAAAmC,eAAAiB;EAAApD,EAAA,MAAAmD;CAAA,OAAAA,MAAAnD,EAAA;CAAA,IAAAqD;CAAA,IAAArD,EAAA,QAAAjB,UAAA;EAE9BsE,YAAA;GACNtE,WAAW;EAAC;EACbiB,EAAA,MAAAjB;EAAAiB,EAAA,MAAAqD;CAAA,OAAAA,MAAArD,EAAA;CAAA,IAAAsD;CAAA,IAAAtD,EAAA,QAAAoC,aAAApC,EAAA,QAAAwC,eAAAxC,EAAA,QAAAN,YAAAM,EAAA,QAAArC,QAAAN,IAAA;EAIeiG,OAAAC,QAAA;GAAC,MAAA,EAAAC,UAAAC,aAAAF;GACf,IAAI,CAAC7D,UAAQ;GACb,MAAAgE,SACED,aACCjB,gBAAgB,KAAhBO,KAAAA,IAEGS,aAAa,aACXpB,UAAUI,cAAc,KACxBgB,aAAa,SACXpB,UAAUI,cAAc,KAD1BO,KAAAA;GAGR,IAAIW,WAAWX,KAAAA,KAAaW,WAAW/F,QAAON,IAC5CqC,SAAQiE,eAAgBD,MAAM;EAAE;EACnC1D,EAAA,MAAAoC;EAAApC,EAAA,MAAAwC;EAAAxC,EAAA,MAAAN;EAAAM,EAAA,MAAArC,QAAAN;EAAA2C,EAAA,MAAAsD;CAAA,OAAAA,MAAAtD,EAAA;CAAA,IAAAuD;CAAA,IAAAvD,EAAA,QAAArC,SAAA;EACY4F,YAAM7G,qBAAqBiB,OAAO;EAACqC,EAAA,MAAArC;EAAAqC,EAAA,MAAAuD;CAAA,OAAAA,MAAAvD,EAAA;CAAA,IAAA4D;CAAA,IAAA5D,EAAA,QAAAa,eAAAb,EAAA,QAAAtB,OAAA;EAC1CkF,OAAAC,aAAA;GACJ,IAAI,WAAWA,UAAQ,OACdhD,YAAWiD,IAAKD,QAAQ;GAEjC,MAAAjG,YAAkBc,MAAKsE,MAAMe,WAC3BC,MAAOA,EAACvG,SAAU,eAAeuG,EAACC,eAAgBJ,SAAQI,UAC5D;GAAE,OACKpD,YAAWiD,IAAK,EAAAjE,OAASjC,UAAU,CAAC;EAAC;EAC7CoC,EAAA,MAAAa;EAAAb,EAAA,MAAAtB;EAAAsB,EAAA,MAAA4D;CAAA,OAAAA,MAAA5D,EAAA;CAAA,IAAAkE;CAAA,IAAAlE,EAAA,QAAAkB,mBAAA;EACWgD,OAAAC,eAAA;GACV,IAAI,QAAQN,YAAQ,OACX3C,kBAAiB4C,IAAK,EAAAM,KAAOP,WAAQxG,GAAI,CAAC;GAClD,OACM6D,kBAAiB4C,IAAKD,UAAQ;EAAC;EACvC7D,EAAA,MAAAkB;EAAAlB,EAAA,MAAAkE;CAAA,OAAAA,MAAAlE,EAAA;CAAA,IAAAqE;CAAA,IAAArE,EAAA,QAAAkD,OAAAlD,EAAA,QAAAmD,OAAAnD,EAAA,QAAAqD,OAAArD,EAAA,QAAAsD,OAAAtD,EAAA,QAAAuD,OAAAvD,EAAA,QAAA4D,OAAA5D,EAAA,QAAAkE,KAAA;EAvCIG,MAAA;GAAAC,UACKpB;GAAWD,UACXE;GAA4BoB,QAC9BC;GAAQC,QACRpB;GAEPqB,OACMC;GAAQC,cACDC;GAAQC,gBACNC;GAAQpB,gBACRL;GAaf0B,aACYzB;GAAmC1F,MAC1C+F;GAQLqB,YACWf;GAKX/D;GAAAE;EAGH;EAACL,EAAA,MAAAkD;EAAAlD,EAAA,MAAAmD;EAAAnD,EAAA,MAAAqD;EAAArD,EAAA,MAAAsD;EAAAtD,EAAA,MAAAuD;EAAAvD,EAAA,MAAA4D;EAAA5D,EAAA,MAAAkE;EAAAlE,EAAA,MAAAqE;CAAA,OAAAA,MAAArE,EAAA;CAAA,OA1CMqE;AA0CN;AAGH,MAAMa,gBAAgBpK,SAASgF,gBAAgB;AAc/C,MAAMsF,mBAAkBrF,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAApC,MAAAE,QAAA6C,WAAAjB,yBAAAP,iBAAAE,qBAAAS;CAOL,IAAAS;CAAA,IAAAR,EAAA,OAAAnC,QAAAmC,EAAA,OAAAjC,QAAA;EAETyC,KAAA;GAAA,GACF3C;GAAIE;EAET;EAACiC,EAAA,KAAAnC;EAAAmC,EAAA,KAAAjC;EAAAiC,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAJH,MAAAtB,QACS8B;CAKP,IAAAM;CAAA,IAAAd,EAAA,OAAAtB,OAAA;EAGUoC,WAAMpC;EAAKsB,EAAA,KAAAtB;EAAAsB,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,IAAAgB;CAAA,IAAAhB,EAAA,OAAAY,aAAAZ,EAAA,OAAAZ,mBAAAY,EAAA,OAAAnC,MAAA;EACNmD,MAAAhD,WAAA;GACb,IAAI,CAACoB,iBACH,MAAM,IAAIiG,MACR,qEACF;GACF,IAAIxH,KAAIJ,SAAU,aAChB,MAAM,IAAI4H,MAAM,mDAAmD;GAErE,MAAAC,WAAiBjJ,aAAYkJ,WAAYvH,MAAM;GAC/CoB,gBAAgB;IAAAwB;IAAA4E,UAEJ3H,KAAI2H;IAASvB,YACXpG,KAAIoG;IAAWjG,QACnBsH,SAAQtH;IAA4ByH,SACnCH,SAAQG;IAAQ,GACrBH,SAAQI,aAAc3C,KAAAA,KAAtB,EAAA2C,UAA+CJ,SAAQI,SAAU;IAAC,GAClEJ,SAAQK,iBAAkB5C,KAAAA,KAA1B,EAAA4C,cACYL,SAAQK,aACxB;GACF,CAAC;EAAC;EACH3F,EAAA,KAAAY;EAAAZ,EAAA,KAAAZ;EAAAY,EAAA,KAAAnC;EAAAmC,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAAA,IAAAmB;CAAA,IAAAnB,EAAA,OAAAV,oBAAAU,EAAA,QAAAnC,MAAA;EACesD,MAAAyE,YAAA;GACd,IAAI,CAACtG,kBACH,MAAM,IAAI+F,MACR,6EACF;GACF,IAAIxH,KAAIJ,SAAU,aAChB,MAAM,IAAI4H,MAAM,oDAAoD;GAEtE/F,iBAAiB;IAAA2E,YAAcpG,KAAIoG;IAAW2B;GAAU,CAAC;EAAC;EAC3D5F,EAAA,KAAAV;EAAAU,EAAA,MAAAnC;EAAAmC,EAAA,MAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAAA,IAAAuB;CAAA,IAAAvB,EAAA,QAAAL,2BAAAK,EAAA,QAAAnC,MAAA;EACsB0D,MAAAsE,eAAA;GACrB,IAAI,CAAClG,yBACH,MAAM,IAAI0F,MAAM,0CAA0C;GAE5D,IAAIxH,KAAIJ,SAAU,aAChB,MAAM,IAAI4H,MACR,4DACF;GAEF,IACE,CAACxH,KAAIiI,YACLjI,KAAIiI,SAASC,aAAchD,KAAAA,KAC3BlF,KAAIiI,SAASE,eAAgBjD,KAAAA,GAE7B,MAAM,IAAIsC,MAAM,mCAAmC;GAErD1F,wBACE/C,4BAA4BiB,KAAIiI,UAAWR,UAAQ,CACrD;EAAC;EACFtF,EAAA,MAAAL;EAAAK,EAAA,MAAAnC;EAAAmC,EAAA,MAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,IAAAyB;CAAA,IAAAzB,EAAA,QAAAc,MAAAd,EAAA,QAAAgB,MAAAhB,EAAA,QAAAmB,MAAAnB,EAAA,QAAAuB,IAAA;EApDIE,KAAA;GAAA6C,UACKxD;GAAWmF,eACNjF;GAoBdkF,gBACe/E;GASfgF,uBACsB5E;EAoBzB;EAACvB,EAAA,MAAAc;EAAAd,EAAA,MAAAgB;EAAAhB,EAAA,MAAAmB;EAAAnB,EAAA,MAAAuB;EAAAvB,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAAA,OArDMyB;AAqDN;AAGH,MAAMd,eAAe7F,SAASsK,eAAe;AAQ7C,MAAMmB,yBAAyB,EAC7BtB,YACAoB,eACyD;CACzD,OAAO;EACL/B,gBAAgBW;EAChBuB,QAAQ,YAAY;GAClB,MAAMH,WAAW;EACnB;CACF;AACF;AAEA,MAAMI,qBAAqB3L,SAASyL,qBAAqB;AAezD,MAAMI,sBAAsB,EAC1BC,MACAC,SACAR,eAK+B;CAC/B,OAAO;EACL/B,gBAAgBsC;EAChBE,OAAOD;EACPL,QAAQH;CACV;AACF;AAEA,MAAMU,kBAAkBjM,SAAS6L,kBAAkB;AAEnD,MAAMK,kBAAkB,OACtBhJ,QACAkJ,WACG;CACH,IAAI9F,OAAO+F,iBAAiBnJ,QAC1B,WAAW,MAAMiH,cAAcjH,QAC7BkJ,OAAOjC,UAAU;MAGnBiC,OAAO,MAAMlJ,MAAM;AAEvB;AAKA,MAAMoJ,gBAAeC,YAAA;CAAA,MAAArH,IAAAC,EAAA,CAAA;CACnB,MAAA,CAAAvB,OAAA4I,YAA0B9M,SAAS6M,OAAO;CAC1C,MAAAE,MAAY1M,OAAO6D,KAAK;CAAE,IAAAqB;CAAA,IAAAC,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,GAAA;EACFtB,MAAAyH,SAAA;GACtBD,IAAGE,UACD,OAAOD,SAAS,aAAcA,KAAwBD,IAAGE,OAAe,IAAxED;GACFF,SAASC,IAAGE,OAAQ;EAAC;EACtBzH,EAAA,KAAAD;CAAA,OAAAA,KAAAC,EAAA;CAJD,MAAA4H,MAAY7H;CAIL,IAAAS;CAAA,IAAAR,EAAA,OAAAtB,OAAA;EACA8B,KAAA;GAAC9B;GAAOkJ;GAAKL;EAAG;EAACvH,EAAA,KAAAtB;EAAAsB,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,OAAjBQ;AAA0B;AAInC,MAAMsH,6BAA4B/H,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAxC,MAAA6C,WAAA0B,WAAApD,gBAAA4B,IAAAtB,UAAA+C,aAAAC,QAAAvE,SAAA8B,OAAAD,sBAAAO;CAIjC,MAAAnB,iBAAA4B,OAAAuC,KAAAA,IAAA,QAAAvC;CAQA,MAAA,CAAAuH,MAAAC,SAAAC,WAAiCb,aAAa,EAAE;CAChD,MAAA,CAAAtJ,MAAAoK,SAAAC,WAAiCf,aAE/B,MAAM;CAAE,IAAAtG;CAAA,IAAAd,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,GAAA;EAGRP,KAAA,CAAC;EAACd,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAFJ,MAAA,CAAAoI,WAAAC,cAAAC,gBAAgDlB,aAE9CtG,EAAE;CAAE,IAAAE;CAAA,IAAAhB,EAAA,OAAAoB,OAAAC,IAAA,2BAAA,GAAA;EAGJL,KAAA,CAAA;EAAEhB,EAAA,KAAAgB;CAAA,OAAAA,KAAAhB,EAAA;CAFJ,MAAA,CAAAe,aAAAwH,gBAAAC,kBAAsDpB,aAEpDpG,EAAE;CACJ,MAAA,CAAAyH,OAAAC,UAAAC,YAAoCvB,aAElCrE,KAAAA,CAAS;CAAE,IAAA5B;CAAA,IAAAnB,EAAA,OAAArC,WAAAqC,EAAA,OAAAuI,kBAAAvI,EAAA,OAAAkI,WAAAlI,EAAA,OAAAgI,SAAA;EAG4B7G,WAAA;GACvC,IAAIxD,SAAO;IAGT,MAAAoL,cADkBpL,QAAOS,QAAQyK,OAAQC,MACrBF,CAAS,CAAAnI,IACtBuI,MAA2C,CAAC,CAAAC,KAC3C,MAAM;IAEdjB,QAAQe,WAAW;IACnBb,QAAQvK,QAAOG,IAAK;IACpByK,eAAe5K,QAAOoD,eAAP,CAAA,CAAyB;GAAC;EAC1C;EACFf,EAAA,KAAArC;EAAAqC,EAAA,KAAAuI;EAAAvI,EAAA,KAAAkI;EAAAlI,EAAA,KAAAgI;EAAAhI,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CAZD,MAAAkJ,oBAA0BvO,eAAewG,EAYxC;CAAE,IAAAI;CAAA,IAAAvB,EAAA,OAAAM,aAAAN,EAAA,OAAAkJ,mBAAA;EAEO3H,WAAA;GACR,IAAIjB,WACF4I,kBAAkB;EACnB;EACFlJ,EAAA,KAAAM;EAAAN,EAAA,KAAAkJ;EAAAlJ,EAAA,KAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,IAAAyB;CAAA,IAAAzB,EAAA,QAAAM,WAAA;EAAEmB,KAAA,CAACnB,SAAS;EAACN,EAAA,MAAAM;EAAAN,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAJdtF,UAAU6G,IAIPE,EAAW;CAAC,IAAAK;CAAA,IAAA9B,EAAA,QAAAR,qBAAAQ,EAAA,QAAAe,eAAAf,EAAA,QAAAuI,gBAAA;EAAA,IAAAlG;EAAA,IAAArC,EAAA,QAAAR,qBAAAQ,EAAA,QAAAuI,gBAAA;GAGGlG,MAAA4C,eACdlK,QACEkK,WAAU5H,IACVoJ,mBAAmB;IAAAxB;IAAAoB,UAEP,YAAA;KACR,MAAM7G,mBAAiBgH,OAASvB,UAAU;KAC1CsD,gBAAeb,SACbA,KAAImB,QAAQM,MAAOA,EAAC9L,OAAQ4H,WAAU5H,EAAG,CAC3C;IAAC;GAEL,CAAC,CACH;GAAC2C,EAAA,MAAAR;GAAAQ,EAAA,MAAAuI;GAAAvI,EAAA,MAAAqC;EAAA,OAAAA,KAAArC,EAAA;EAZH8B,KAAAf,YAAWN,IAAK4B,EAahB;EAACrC,EAAA,MAAAR;EAAAQ,EAAA,MAAAe;EAAAf,EAAA,MAAAuI;EAAAvI,EAAA,MAAA8B;CAAA,OAAAA,KAAA9B,EAAA;CAdH,MAAAkB,oBAA0BhG,gBACxB4G,EAcF;CAAE,IAAAO;CAAA,IAAArC,EAAA,QAAAR,mBAAA;EAE+B6C,KAAA,OAAA+G,YAAA;GAC/B,IAAI,CAAC5J,mBAAiB;GACtB,MAAM8G,QAAO+C,IACXD,QAAOP,OACGS,MAAmC,CAAC,CAAA7I,KACvC8I,QAAO/J,kBAAiBgH,OAAQ2C,GAAC,CAAC,CAC3C;EAAC;EACFnJ,EAAA,MAAAR;EAAAQ,EAAA,MAAAqC;CAAA,OAAAA,KAAArC,EAAA;CAPD,MAAAwJ,2BAAiCnH;CAO/B,IAAAM;CAAA,IAAA3C,EAAA,QAAAuI,gBAAA;EAEuB5F,MAAA8G,iBAAA;GACvBlB,gBAAemB,WAAA;IACb,MAAAhJ,MAAYgH,OAAI3D,WAAW4F,QAAOR,IAAC9L,OAAQ4H,aAAU5H,EAAG;IACxD,IAAIqD,QAAQ,IAAE,OAAS,CAAA,GAAIgH,QAAMzC,YAAU;IAC3C,MAAAuC,OAAa,CAAA,GAAIE,MAAI;IACrBF,KAAK9G,OAAOuE;IAAH,OACFuC;GAAI,CACZ;EAAC;EACHxH,EAAA,MAAAuI;EAAAvI,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CARD,MAAA4J,mBAAyBjH;CAUzB,MAAAkH,aAAmBpK,OAAKqK,SAAL5M;CAAkC,IAAA0F;CAAA,IAAA5C,EAAA,QAAAP,SAAAO,EAAA,QAAA6J,YAAA;EAAA,IAAA3G;EAAA,IAAAlD,EAAA,QAAAP,OAAA;GAEpCyD,OAAA0D,SACb7L,QACE6L,KAAIvJ,IACJ0J,gBAAgB;IAAAH;IAAAC,eAECpH,OAAKqH,MAAQF,KAAIvJ,EAAG;IAACgJ,gBACpB5G,OAAK+G,OAASI,KAAIvJ,EAAG;GACvC,CAAC,CACH;GAAC2C,EAAA,MAAAP;GAAAO,EAAA,MAAAkD;EAAA,OAAAA,MAAAlD,EAAA;EARH4C,MAAAiH,WAAUpJ,IAAKyC,GASf;EAAClD,EAAA,MAAAP;EAAAO,EAAA,MAAA6J;EAAA7J,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CAVH,MAAA+J,mBAAyB7O,gBACvB0H,GAUF;CA+BEpD,mBAAiBwK;CAAQ,IAAA9G;CAAA,IAAAlD,EAAA,QAAAe,YAAA1C,UAAA2B,EAAA,QAAA+H,MAAA;EA5BT7E,MAAA,CAAC6E,KAAIkC,KAAM,KAAX,CAAiBlJ,YAAW1C;EAAO2B,EAAA,MAAAe,YAAA1C;EAAA2B,EAAA,MAAA+H;EAAA/H,EAAA,MAAAkD;CAAA,OAAAA,MAAAlD,EAAA;CAAnD,MAAAkK,UAAgBhH;CAQL,MAAAC,MAAA7C,aAAA,CAAc4J,WAAd,CAA0BtL;CACjB,MAAAyE,MAAA7D,mBAAiBwK,UAAjB;CAAgC,IAAA1G;CAAA,IAAAtD,EAAA,QAAAkB,kBAAAxC,SAAAsB,EAAA,QAAAgC,aAAAhC,EAAA,QAAAM,aAAAN,EAAA,QAAAkK,WAAAlK,EAAA,QAAA6J,cAAA7J,EAAA,QAAAyI,SAAAzI,EAAA,QAAAlC,QAAAkC,EAAA,QAAAoI,aAAApI,EAAA,QAAAmD,OAAAnD,EAAA,QAAAqD,OAAArD,EAAA,QAAA+H,QAAA/H,EAAA,QAAAvC,MAAA;EAR7C6F,MAAA;GAAAyE;GAAAjK;GAAAiD,aAGQG,kBAAiBxC;GAAM0J;GAAA9H;GAAA0B;GAAAmI,SAI3BhH;GAAwCiH,kBAC/B/G;GAAgC6G;GAAAzM;GAAA4M,WAGvCtH,KAAAA;GAAS0F;GAAAhJ,OAEboK;EACT;EAAC7J,EAAA,MAAAkB,kBAAAxC;EAAAsB,EAAA,MAAAgC;EAAAhC,EAAA,MAAAM;EAAAN,EAAA,MAAAkK;EAAAlK,EAAA,MAAA6J;EAAA7J,EAAA,MAAAyI;EAAAzI,EAAA,MAAAlC;EAAAkC,EAAA,MAAAoI;EAAApI,EAAA,MAAAmD;EAAAnD,EAAA,MAAAqD;EAAArD,EAAA,MAAA+H;EAAA/H,EAAA,MAAAvC;EAAAuC,EAAA,MAAAsD;CAAA,OAAAA,MAAAtD,EAAA;CAhBH,MAAAtB,QAEE4E;CA4BC,IAAAC;CAAA,IAAAvD,EAAA,QAAAtB,OAAA;EAGS6E,YAAM7E;EAAKsB,EAAA,MAAAtB;EAAAsB,EAAA,MAAAuD;CAAA,OAAAA,MAAAvD,EAAA;CAAA,IAAA4D;CAAA,IAAA5D,EAAA,QAAAR,qBAAAQ,EAAA,QAAAuI,kBAAAvI,EAAA,QAAA4J,kBAAA;EAINhG,MAAA,OAAA0G,qBAAA;GACb,IAAI9K,mBAAiB;IACnB,MAAA+K,OAAa5N,mBAAmB2N,gBAK+B,IALlD;KAAAE,MAEDF,iBAAgBE;KAAK/M,MACrB6M,iBAAgBG,eAAhB;IAEmD,IALlD;KAAAD,MAKDF,iBAAgBE;KAAK/M,MAAQ6M,iBAAgB7M;IAAM;IAC/D,IAAI,CAAChB,kBAAkB8N,MAAM/K,kBAAiBwK,MAAO,GACnD,MAAM,IAAI3E,MACR,aAAakF,KAAI9M,QAAJ,UAAsB,oCAAqC+B,kBAAiBwK,QAC3F;GAAE;GAEN,IAAI,CAACrN,mBAAmB2N,gBAAgB,KAApC9K,mBACF,MAAMwH,gBACJxH,kBAAiBkL,IAAK,EAAAH,MAAQD,iBAAiB,CAAC,GAChDV,gBACF;QACK,IAAI,CAACjN,mBAAmB2N,gBAAgB,GAAC;IAC9C,MAAAK,gBAAkC;KAAAtN,IAC5Ba,KAAI0M,OAAQ,CAAC,CAAAC,SAAU,EAAE,CAAC,CAAAC,UAAW,CAAC;KAACrN,MACrC;KAAM+M,MACNF,iBAAgBE;KAAKC,aACdH,iBAAgB7M;KAAK8M,MAC5BD;KAAgBvM,QACd,EAAAN,MAAQ,WAAW;KAACW,SACnB,CAAA;IACX;IACAmK,gBAAewC,WAAU,CAAA,GAAIrD,QAAMiD,aAAa,CAAC;GAAC,OAAA;IAElD,MAAAK,kBAAkC;KAAA3N,IAC5BiN,iBAAgBjN,MAAOa,KAAI0M,OAAQ,CAAC,CAAAC,SAAU,EAAE,CAAC,CAAAC,UAAW,CAAC;KAACrN,MAC5D6M,iBAAgB7M,QAAhB;KAAmC+M,MACnCF,iBAAgBE;KAAKC,aACdH,iBAAgBG;KAAYrM,SAChCkM,iBAAgBlM;KAAQL,QACzB,EAAAN,MAAQ,WAAW;IAC7B;IACA8K,gBAAe0C,WAAU,CAAA,GAAIvD,QAAMiD,eAAa,CAAC;GAAC;EACnD;EACF3K,EAAA,MAAAR;EAAAQ,EAAA,MAAAuI;EAAAvI,EAAA,MAAA4J;EAAA5J,EAAA,MAAA4D;CAAA,OAAAA,MAAA5D,EAAA;CAAA,IAAAkE;CAAA,IAAAlE,EAAA,QAAAwI,kBAAAxI,EAAA,QAAAwJ,4BAAAxJ,EAAA,QAAAuI,gBAAA;EACiBrE,MAAA,YAAA;GAChB,MAAAgH,YAAgB1C,eAAcf;GAC9Bc,eAAe,CAAA,CAAE;GACjB,MAAMiB,yBAAyBJ,SAAO;EAAC;EACxCpJ,EAAA,MAAAwI;EAAAxI,EAAA,MAAAwJ;EAAAxJ,EAAA,MAAAuI;EAAAvI,EAAA,MAAAkE;CAAA,OAAAA,MAAAlE,EAAA;CAAA,IAAAqE;CAAA,IAAArE,EAAA,QAAAkB,mBAAA;EACWmD,OAAAR,aAAA;GACV,IAAI,QAAQA,UAAQ,OACX3C,kBAAiB4C,IAAK,EAAAM,KAAOP,SAAQxG,GAAI,CAAC;GAClD,OACM6D,kBAAiB4C,IAAKD,QAAQ;EAAC;EACvC7D,EAAA,MAAAkB;EAAAlB,EAAA,MAAAqE;CAAA,OAAAA,MAAArE,EAAA;CAAA,IAAAmL;CAAA,IAAAnL,EAAA,QAAAwI,kBAAAxI,EAAA,QAAAwJ,4BAAAxJ,EAAA,QAAAuI,kBAAAvI,EAAA,QAAA0I,YAAA1I,EAAA,QAAAkI,WAAAlI,EAAA,QAAAqI,gBAAArI,EAAA,QAAAgI,SAAA;EACMmD,MAAA,YAAA;GACL,MAAAC,YAAgB5C,eAAcf;GAC9BO,QAAQ,EAAE;GACVE,QAAQ,MAAM;GACdG,aAAa,CAAC,CAAC;GACfE,eAAe,CAAA,CAAE;GACjBG,SAAS3F,KAAAA,CAAS;GAClB,MAAMyG,yBAAyBJ,SAAO;EAAC;EACxCpJ,EAAA,MAAAwI;EAAAxI,EAAA,MAAAwJ;EAAAxJ,EAAA,MAAAuI;EAAAvI,EAAA,MAAA0I;EAAA1I,EAAA,MAAAkI;EAAAlI,EAAA,MAAAqI;EAAArI,EAAA,MAAAgI;EAAAhI,EAAA,MAAAmL;CAAA,OAAAA,MAAAnL,EAAA;CAAA,IAAAqL;CAAA,IAAArL,EAAA,QAAAR,qBAAAQ,EAAA,QAAAwI,kBAAAxI,EAAA,QAAAM,aAAAN,EAAA,QAAApB,kBAAAoB,EAAA,QAAAkC,UAAAlC,EAAA,QAAAP,SAAAO,EAAA,QAAA2I,YAAA3I,EAAA,QAAAmI,WAAAnI,EAAA,QAAAsI,gBAAAtI,EAAA,QAAAuI,kBAAAvI,EAAA,QAAA0I,YAAA1I,EAAA,QAAAgI,WAAAhI,EAAA,QAAAiI,SAAA;EACKoD,OAAAC,SAAA;GACJ,MAAAC,eAAqB5C,SAAQlB;GAC7B,MAAA+D,cAAoBvD,QAAOR;GAC3B,MAAAgE,qBAA2BjD,eAAcf;GACzC,MAAAiE,YAAgB,CAACF,YAAWvB,KAAM,KAAlB,CAAwBwB,mBAAkBpN;GAC1D,IAAI,CAACiC,aAADoL,aAAA9M,gBAAuC;GAE3CoJ,QAAQ,EAAE;GACVO,eAAe,CAAA,CAAE;GACjBG,SAAS3F,KAAAA,CAAS;GAElB,MAAA4I,YAAiBC,oBAAA;IACf,MAAAC,kBAAuC;KAAA/N,MAC/BqK,QAAOV;KAAQrJ,SACZoN,cAAA,CACJ;MAAA/N,MAAQ;MAAesK,MAAQyD;KAAY,CAAC,IADxC,CAAA;KAEHzK,aACO6K;KAAsBE,2BACxB,IAAIC,KAAK;KAAC/M,UACX;KAAI4C,UACJ;KAAIwG,WACHE,aAAYb;KAAQuE,UACrBV,MAAIU;KAAUC,UACd,EAAAC,QACA,EAAA,GAAMX,eAAA,EAAA9C,OAAwB8C,aAAkB,IAA1C,CAA0C,EAAG,EAC7D;IACF;IACA,IAAI9L,OACFA,MAAK0M,QAASN,iBAAiB,EAAA/E,OAASwE,MAAIxE,SAAJ,MAAqB,CAAC;SAE9D5E,SAAS2J,eAAe;GACzB;GAGH,IAAIrM,qBAAqBiM,mBAAkBpN,SAAU,GAC9CiI,QAAO+C,IACVoC,mBAAkBhL,KAAK2L,iBACrBnH,aAAUlH,OAAON,SAAU,aAA3B2O,eAEI5M,kBAAiB6M,KAAMpH,YAA+B,CAC5D,CACF,CAAC,CAAAqH,KAAMX,WAAUY,UAAA;IAEfvE,SAAQwE,WACNhB,eAAAgB,SACIhB,cAAc,OAAO9D,SACrB8D,eAAAgB,MACN;IACA9D,UAAS+D,WAAUA,UAAAlB,YAAoB;IACvChD,gBAAemE,WAAU,CAAA,GAAIjB,oBAAkB,GAAK/D,MAAI,CAAC;IACzDiF,QAAOJ,MAAO,8BAA8BA,KAAK;GAAC,CACnD;QAEDZ,SAASF,kBAAkB;EAC5B;EACFzL,EAAA,MAAAR;EAAAQ,EAAA,MAAAwI;EAAAxI,EAAA,MAAAM;EAAAN,EAAA,MAAApB;EAAAoB,EAAA,MAAAkC;EAAAlC,EAAA,MAAAP;EAAAO,EAAA,MAAA2I;EAAA3I,EAAA,MAAAmI;EAAAnI,EAAA,MAAAsI;EAAAtI,EAAA,MAAAuI;EAAAvI,EAAA,MAAA0I;EAAA1I,EAAA,MAAAgI;EAAAhI,EAAA,MAAAiI;EAAAjI,EAAA,MAAAqL;CAAA,OAAAA,MAAArL,EAAA;CAAA,IAAA4M;CAAA,IAAA5M,EAAA,QAAAiC,aAAA;EAEU2K,YAAA;GACT3K,cAAc;EAAC;EAChBjC,EAAA,MAAAiC;EAAAjC,EAAA,MAAA4M;CAAA,OAAAA,MAAA5M,EAAA;CAAA,IAAA6M;CAAA,IAAA7M,EAAA,QAAA+J,kBAAA;EAIU8C,OAAA1I,eACF4F,iBAAgBjG,IAAKD,UAAQ;EACrC7D,EAAA,MAAA+J;EAAA/J,EAAA,MAAA6M;CAAA,OAAAA,MAAA7M,EAAA;CAAA,IAAA8M;CAAA,IAAA9M,EAAA,QAAAd,YAAAc,EAAA,QAAA0I,YAAA1I,EAAA,QAAAkI,WAAAlI,EAAA,QAAAqI,gBAAArI,EAAA,QAAAgI,WAAAhI,EAAA,QAAAuD,OAAAvD,EAAA,QAAA4D,OAAA5D,EAAA,QAAAkE,OAAAlE,EAAA,QAAAqE,OAAArE,EAAA,QAAAmL,OAAAnL,EAAA,QAAAqL,OAAArL,EAAA,QAAA4M,OAAA5M,EAAA,QAAA6M,KAAA;EAnIIC,MAAA;GAAAxI,UACKf;GAAWyE;GAAAE;GAAAG;GAAA0E,eAINnJ;GAwCdoJ,kBACiB9I;GAIjBe,YACWZ;GAKX4I,OACM9B;GAQNkB,MACKhB;GAuDL6B,QACOhO;GAAQiO,WACLP;GAEVQ,gBACeC;GAAQC,eACTC;GAAQ7E;GAAA8E,WAEZX;EAGb;EAAC7M,EAAA,MAAAd;EAAAc,EAAA,MAAA0I;EAAA1I,EAAA,MAAAkI;EAAAlI,EAAA,MAAAqI;EAAArI,EAAA,MAAAgI;EAAAhI,EAAA,MAAAuD;EAAAvD,EAAA,MAAA4D;EAAA5D,EAAA,MAAAkE;EAAAlE,EAAA,MAAAqE;EAAArE,EAAA,MAAAmL;EAAAnL,EAAA,MAAAqL;EAAArL,EAAA,MAAA4M;EAAA5M,EAAA,MAAA6M;EAAA7M,EAAA,MAAA8M;CAAA,OAAAA,MAAA9M,EAAA;CAAA,OApIM8M;AAoIN;AAGH,MAAM/K,yBAAyBjH,SAASgN,yBAAyB;AAEjE,MAAM2F,sBAAsBlP,aAA+C;CACzE,MAAMmP,0BAAU,IAAIC,IAAY;CAChC,MAAMC,UAAmC,CAAA;CACzC,KAAK,IAAIC,IAAItP,SAASF,SAAS,GAAGwP,KAAK,GAAGA,KAAK;EAC7C,MAAMlQ,UAAUY,SAASsP;EACzB,IAAIH,QAAQI,IAAInQ,QAAQN,EAAE,GAAG;GAC3BsP,QAAQoB,KACN,yCAAyCpQ,QAAQN,GAAE,+DACrD;GACA;EACF;EACAqQ,QAAQhD,IAAI/M,QAAQN,EAAE;EACtBuQ,QAAQI,KAAKrQ,OAAO;CACtB;CACA,OAAOiQ,QAAQvP,WAAWE,SAASF,SAASE,WAAWqP,QAAQK,QAAQ;AACzE;AAGA,MAAMC,qBAAoBnO,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAA1B,UAAA4P,cAAA3P,WAAAgC,IAAA/B,WAAAqC,IAAApC,OAAA0P,aAAAzP,QAAAC,gBAAAoC,IAAAnC,OAAAC,QAAAC,UAAAE,YAAAC,UAAAC,UAAAC,iBAAAE,kBAAAC,qBAAAC,mBAAAC,OAAAC,UAAAC,4BAAAI;CAEzB,MAAAvB,YAAAgC,OAAAuC,KAAAA,IAAA,QAAAvC;CACA,MAAA/B,YAAAqC,OAAAiC,KAAAA,IAAA,QAAAjC;CAGA,MAAAlC,iBAAAoC,OAAA+B,KAAAA,IAAA,QAAA/B;CAAsB,IAAAG;CAAA,IAAAnB,EAAA,OAAAmO,cAAA;EAgBdhN,KAAAsM,mBAAmBU,YAAY;EAACnO,EAAA,KAAAmO;EAAAnO,EAAA,KAAAmB;CAAA,OAAAA,KAAAnB,EAAA;CADxC,MAAAzB,WACQ4C;CAEN,IAAAI;CAAA,IAAAvB,EAAA,OAAAzB,YAAAyB,EAAA,OAAAjB,YAAAiB,EAAA,OAAAP,OAAA;EAEmB8B,MAAAX,cAAA;GACnB,MAAAyN,eAAqB9P,SAAQwF,WAAWuK,MAAOA,EAACjR,OAAQuD,SAAS;GACjE,IAAIyN,iBAAiB,IAAE;GAEvB,MAAArP,WAAiBqP,eAAe,IAAI9P,SAAS8P,eAAe,EAAE,CAAAhR,KAA7C;GACjBoC,OAAKkC,MAAQ,QAAQ;GACrB5C,WAAWC,QAAQ;EAAC;EACrBgB,EAAA,KAAAzB;EAAAyB,EAAA,KAAAjB;EAAAiB,EAAA,KAAAP;EAAAO,EAAA,KAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAPD,MAAAuO,eAAqBhN;CAOnB,IAAAE;CAAA,IAAAzB,EAAA,OAAAR,qBAAAQ,EAAA,OAAAN,YAAAM,EAAA,OAAAuO,gBAAAvO,EAAA,OAAAzB,YAAAyB,EAAA,QAAAZ,mBAAAY,EAAA,QAAAlB,UAAAkB,EAAA,QAAAL,2BAAAK,EAAA,QAAAV,oBAAAU,EAAA,QAAAP,OAAA;EAGAgC,KAAAlD,SAAQkC,KAAKiB,KAAA7B,UAAA;GACX,MAAA2O,QAAkC;IAAA7Q,SACvB+D;IAAG7B;IAAAb,UAEFa,QAAQ,IAAItB,SAASsB,QAAQ,EAAE,CAAAxC,KAA/B;IAA0C0B,gBACpCwP,aAAa7M,IAAGrE,EAAG;IAACoC;IAAAC;IAAAC;IAAAP;IAAAE;IAAAE;GAOtC;GACA,IAAIV,QAAQ0P,MAAK1P,SAAUA;GAAO,OAC3B/D,QAAQ2G,IAAGrE,IAAK6H,cAAcsJ,KAAK,CAAC;EAAC,CAC7C;EAACxO,EAAA,KAAAR;EAAAQ,EAAA,KAAAN;EAAAM,EAAA,KAAAuO;EAAAvO,EAAA,KAAAzB;EAAAyB,EAAA,MAAAZ;EAAAY,EAAA,MAAAlB;EAAAkB,EAAA,MAAAL;EAAAK,EAAA,MAAAV;EAAAU,EAAA,MAAAP;EAAAO,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAhBJ,MAAAyO,iBAAuBvT,gBACrBuG,EAgBF;CAAE,IAAAK;CAAA,IAAA9B,EAAA,QAAAd,YAAAc,EAAA,QAAAP,OAAA;EAEsBqC,WAAA;GACtBrC,OAAKkC,MAAQ,YAAY;GACzBzC,WAAW;EAAC;EACbc,EAAA,MAAAd;EAAAc,EAAA,MAAAP;EAAAO,EAAA,MAAA8B;CAAA,OAAAA,KAAA9B,EAAA;CAHD,MAAA0O,kBAAwB5M;CAGtB,IAAAO;CAAA,IAAArC,EAAA,QAAAzB,YAAAyB,EAAA,QAAAnB,OAAA;EAEoBwD,MAAA1E,YAAA;GAGpBkB,QAAQ;IAAA,GAAKlB;IAAOqB,UAAYT,SAAQoQ,GAAI,EAAM,CAAC,EAAAtR,MAAnB;GAA4B,CAAC;EAAC;EAC/D2C,EAAA,MAAAzB;EAAAyB,EAAA,MAAAnB;EAAAmB,EAAA,MAAAqC;CAAA,OAAAA,KAAArC,EAAA;CAJD,MAAA4O,gBAAsBvM;CAIpB,IAAAM;CAAA,IAAA3C,EAAA,QAAAzB,UAAA;EAEaoE,KAAApE,SAAQoQ,GAAI,EAAM,CAAC,EAAAtR,MAAnB;EAA2B2C,EAAA,MAAAzB;EAAAyB,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAA1C,MAAA6O,SAAelM;CAA4B,IAAAC;CAAA,IAAA5C,EAAA,QAAA6O,UAAA7O,EAAA,QAAAP,OAAA;EAGvCmD,MAAAnD,SAAA;GAAA,GACKA;GAAK0M,UACC2C,WAAAzP,YACPI,MAAK0M,QACH;IAAA,GAAKxO;IAAOqB,UAAYrB,UAAOqB,YAAP6P;GAA2B,GACnDxP,OACF;EACJ;EAACW,EAAA,MAAA6O;EAAA7O,EAAA,MAAAP;EAAAO,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CATL,MAAA+O,gBAEInM;CASF,IAAAM;CAAA,IAAAlD,EAAA,QAAAR,qBAAAQ,EAAA,QAAA+O,iBAAA/O,EAAA,QAAA0O,mBAAA1O,EAAA,QAAA4O,iBAAA5O,EAAA,QAAAxB,aAAAwB,EAAA,QAAApB,gBAAA;EAGAsE,MAAAnB,uBAAuB;GAAAtE,MACf;GAAQ6C,WACH;GAAI0B,WACJxD;GAASI;GAAAM,UAEVwP;GAAexM,QACjB0M;GAAanP,OACdsP;GAAavP;EAEtB,CAAC;EAACQ,EAAA,MAAAR;EAAAQ,EAAA,MAAA+O;EAAA/O,EAAA,MAAA0O;EAAA1O,EAAA,MAAA4O;EAAA5O,EAAA,MAAAxB;EAAAwB,EAAA,MAAApB;EAAAoB,EAAA,MAAAkD;CAAA,OAAAA,MAAAlD,EAAA;CAVJ,MAAAmC,iBAAuB/G,kBACrB8H,GAUF;CAEA,MAAA8L,WAAiB,CAAC,CAACvP;CACnB,MAAAwP,cAAoB,CAAC,CAACvP;CACtB,MAAAwP,UAAgB,CAAC,CAACpQ;CAClB,MAAAqQ,YAAkB,CAAC,CAACpQ;CACpB,MAAAqQ,iBAAuB,CAAC,CAAC5P;CAAkB,IAAA2D;CAAA,IAAAnD,EAAA,QAAAyO,eAAA/P,OAAA;EAEnByE,MAAAsL,eAAc/P,MAAM+B,IAAK4O,OAG7C;EAACrP,EAAA,MAAAyO,eAAA/P;EAAAsB,EAAA,MAAAmD;CAAA,OAAAA,MAAAnD,EAAA;CAHH,MAAAsP,gBAAsBnM;CAMX,MAAAE,MAAA9E,SAAQF,WAAY;CAAC,IAAAiF;CAAA,IAAAtD,EAAA,QAAAoP,kBAAApP,EAAA,QAAAiP,eAAAjP,EAAA,QAAAkP,WAAAlP,EAAA,QAAAgP,YAAAhP,EAAA,QAAAmP,aAAAnP,EAAA,QAAAxB,WAAA;EAIhB8E,MAAA;GAAAiM,MACNL;GAAO3K,QACL;GAAKE,QACL0K;GAASjC,QACT1O;GAASsE,QACT;GAAK/B,aACAqO;GAAcI,UACjB;GAAKC,OACR;GAAK9L,gBACIsL;GAAWS,uBACJ;GAAKC,eACb;GAAKtF,WACT;GAAK5K,OACTuP;EACT;EAAChP,EAAA,MAAAoP;EAAApP,EAAA,MAAAiP;EAAAjP,EAAA,MAAAkP;EAAAlP,EAAA,MAAAgP;EAAAhP,EAAA,MAAAmP;EAAAnP,EAAA,MAAAxB;EAAAwB,EAAA,MAAAsD;CAAA,OAAAA,MAAAtD,EAAA;CAAA,IAAAuD;CAAA,IAAAvD,EAAA,QAAAoO,aAAA;EAEM7K,MAAA6K,eAAA,CAAgB;EAACpO,EAAA,MAAAoO;EAAApO,EAAA,MAAAuD;CAAA,OAAAA,MAAAvD,EAAA;CAAA,IAAA4D;CAAA,IAAA5D,EAAA,QAAAoB,OAAAC,IAAA,2BAAA,GAAA;EACXuC,MAAA,CAAA;EAAE5D,EAAA,MAAA4D;CAAA,OAAAA,MAAA5D,EAAA;CAAA,IAAAkE;CAAA,IAAAlE,EAAA,QAAAmC,eAAAzD,SAAAsB,EAAA,QAAArB,UAAAqB,EAAA,QAAAvB,aAAAuB,EAAA,QAAAxB,aAAAwB,EAAA,QAAAsP,iBAAAtP,EAAA,QAAAqD,OAAArD,EAAA,QAAAsD,OAAAtD,EAAA,QAAAuD,KAAA;EAtBVW,MAAA;GAAAgG,SACI7G;GAAqBuM,YAClB;GAAKnR;GAAAD;GAAAqR,cAGHvM;GAcb/E,UACS+Q;GAAa5Q,OAChB6E;GAAiBuM,aACXlM;GAAEjF;GAAAmE,QAEPC,KAAAA;GAAS0M,OACV1M,KAAAA;GAASE,UACNd,eAAczD;EAC1B;EAACsB,EAAA,MAAAmC,eAAAzD;EAAAsB,EAAA,MAAArB;EAAAqB,EAAA,MAAAvB;EAAAuB,EAAA,MAAAxB;EAAAwB,EAAA,MAAAsP;EAAAtP,EAAA,MAAAqD;EAAArD,EAAA,MAAAsD;EAAAtD,EAAA,MAAAuD;EAAAvD,EAAA,MAAAkE;CAAA,OAAAA,MAAAlE,EAAA;CAjCH,MAAAtB,QAMEwF;CAyCC,IAAAG;CAAA,IAAArE,EAAA,QAAAtB,OAAA;EAGS2F,YAAM3F;EAAKsB,EAAA,MAAAtB;EAAAsB,EAAA,MAAAqE;CAAA,OAAAA,MAAArE,EAAA;CAAA,IAAAmL;CAAA,IAAAnL,EAAA,QAAAmC,eAAAiB,SAAA;EACX+H,YAAMhJ,eAAciB;EAAQpD,EAAA,MAAAmC,eAAAiB;EAAApD,EAAA,MAAAmL;CAAA,OAAAA,MAAAnL,EAAA;CAAA,IAAAqL;CAAA,IAAArL,EAAA,QAAAzB,YAAAyB,EAAA,QAAAnB,SAAAmB,EAAA,QAAAP,OAAA;EAC9B4L,OAAA0E,cAAA;GACN,MAAAC,gBACE,OAAOrS,cAAY,WAAnB;IAAAmO,2BAEiB,IAAIC,KAAK;IAAC/M,UACXT,SAAQoQ,GAAI,EAAM,CAAC,EAAAtR,MAAnB;IAA2BuE,UAC3B;IAAIwG,WACH,CAAC;IAACtK,MACP;IAAMM,SACH,CAAC;KAAAX,MAAQ;KAAMsK,MAAQpK;IAAQ,CAAC;IAACoD,aAC7B,CAAA;IAAEkL,UACL,EAAAC,QAAU,CAAC,EAAE;GAYzB,IArBJ;IAAAJ,WAYiBnO,UAAOmO,6BAAP,IAAyBC,KAAK;IAAC/M,UAChCrB,UAAOqB,YAAaT,SAAQoQ,GAAI,EAAM,CAAC,EAAAtR,MAAvC;IAA+CuE,UAC/CjE,UAAOiE,YAAP;IAAwB9D,MAC5BH,UAAOG,QAAP;IAAsBM,SACnBT,UAAOS;IAAQ2C,aACXpD,UAAOoD,eAAP,CAAA;IAAyBkL,UAC5BtO,UAAOsO,YAAP,EAAAC,QAA8B,CAAC,EAAE;IAAC9D,WACjCzK,UAAOyK,aAAP,CAAsB;IAAC4D,UACxBrO,UAAOqO;GACnB;GACN,IAAIvM,OACFA,MAAK0M,QAAS6D,eAAe,EAAAlJ,OAAS,MAAM,CAAC;QAE7CjI,QAAQmR,aAAa;EACtB;EACFhQ,EAAA,MAAAzB;EAAAyB,EAAA,MAAAnB;EAAAmB,EAAA,MAAAP;EAAAO,EAAA,MAAAqL;CAAA,OAAAA,MAAArL,EAAA;CAAA,IAAA4M;CAAA,IAAA5M,EAAA,QAAAf,YAAA;EAES2N,YAAA;GACR3N,aAAa;EAAC;EACfe,EAAA,MAAAf;EAAAe,EAAA,MAAA4M;CAAA,OAAAA,MAAA5M,EAAA;CAAA,IAAA6M;CAAA,IAAA7M,EAAA,QAAAb,UAAA;EACU0N,YAAA;GACT,IAAI,CAAC1N,UACH,MAAM,IAAIkG,MACR,+DACF;GACFlG,SAAS;EAAC;EACXa,EAAA,MAAAb;EAAAa,EAAA,MAAA6M;CAAA,OAAAA,MAAA7M,EAAA;CAAA,IAAA8M;CAAA,IAAA9M,EAAA,QAAAT,qBAAA;EAEoBuN,OAAAmD,YAAA;GACnB,IAAI,CAAC1Q,qBACH,MAAM,IAAI8F,MACR,sFACF;GACF9F,oBAAoBb,OAAK;EAAC;EAC3BsB,EAAA,MAAAT;EAAAS,EAAA,MAAA8M;CAAA,OAAAA,MAAA9M,EAAA;CAAA,IAAAkQ;CAAA,IAAAlQ,EAAA,QAAAyO,gBAAA;EAKQyB,OAAArM,aAAA;GACP,IAAI,QAAQA,UAAQ,OACX4K,eAAc3K,IAAK,EAAAM,KAAOP,SAAQxG,GAAI,CAAC;GAC/C,OACMoR,eAAc3K,IAAKD,QAAQ;EAAC;EACpC7D,EAAA,MAAAyO;EAAAzO,EAAA,MAAAkQ;CAAA,OAAAA,MAAAlQ,EAAA;CAAA,IAAAmQ;CAAA,IAAAnQ,EAAA,QAAA0O,mBAAA1O,EAAA,QAAAqE,OAAArE,EAAA,QAAAmL,OAAAnL,EAAA,QAAAqL,OAAArL,EAAA,QAAA4M,OAAA5M,EAAA,QAAA6M,OAAA7M,EAAA,QAAA8M,OAAA9M,EAAA,QAAAkQ,KAAA;EA7DIC,MAAA;GAAA7L,UACKD;GAAWpB,UACXkI;GAA4BiF,QAC9B/E;GA6BPgF,eACcC;GAAQtE,UACbY;GAET2D,WACU1D;GAMV2D,WACU9B;GAAe+B,qBACL3D;GAMpB4D,iBACgBC;GAAiCC,QAC1CC;GAAwBC,QACxBC;GAAQ9D,OACT+D;GAAQrT,SACNuS;GAKRtL,cACaqM;GAAQC,cACRC;GAAQC,iBACLC;GAAQC,gBACTC;GAAOC,sBACDC;GAAcC,WACzBC;GAAQC,aACNC;EACf;EAAC7R,EAAA,MAAA0O;EAAA1O,EAAA,MAAAqE;EAAArE,EAAA,MAAAmL;EAAAnL,EAAA,MAAAqL;EAAArL,EAAA,MAAA4M;EAAA5M,EAAA,MAAA6M;EAAA7M,EAAA,MAAA8M;EAAA9M,EAAA,MAAAkQ;EAAAlQ,EAAA,MAAAmQ;CAAA,OAAAA,MAAAnQ,EAAA;CAAA,OArEMmQ;AAqEN;AAGH,MAAa2B,iBAAiBhX,SAASoT,iBAAiB;AAExD/S,sBAAsB+S,oBAAoB6D,QAAQC,WAAW;CAC3D,IAAI,CAACD,OAAOE,WAAWD,OAAOC,QAAQC,WAAW,MAAM;EACrD,MAAMC,gBAAgBJ,OAAOK;EAC7BL,OAAOE,UAAUhV,iBAAiB,EAAEmV,QAAQD,cAAc,CAAC;EAC3DJ,OAAOK,SAAS/W,QAAQ;GACtB6W,QAAQ;GACRG,OAAO,EAAE5U,MAAM,OAAO;GACtBqG,MAAMwO,QAAQA,IAAIL,QAAQ,CAAC,CAACG,OAAO,MAAM;EAC3C,CAAC;CACH;CAEA,IAAI,CAACL,OAAOQ,kBAAkBP,OAAOO,eAAeL,WAAW,MAC7DH,OAAOQ,iBAAiBlX,QAAQ;EAC9B6W,QAAQ;EACRG,OAAO,EAAE5U,MAAM,OAAO;EACtBqG,MAAMwO,QAAQA,IAAIL,QAAQ,CAAC,CAACrL,KAAK,MAAM;CACzC,CAAC;CAGHmL,OAAO9O,aAAa5H,QAAQ;EAC1B6W,QAAQ;EACRG,OAAO,CAAC;EACRvO,MAAMwO,QAAQA,IAAIF,OAAO,CAAC,CAACnP,SAAS;CACtC,CAAC;CAED,IAAI,CAAC8O,OAAOS,gBAAgBR,OAAOQ,aAAaN,WAAW,MACzDH,OAAOS,eAAe3V,aAAa;CAErC,IAAI,CAACkV,OAAOU,SAAST,OAAOS,MAAMP,WAAW,MAC3CH,OAAOU,QAAQ1V,MAAM,CAAC,CAAC;CAEzB,IAAI,CAACgV,OAAOW,iBAAiBV,OAAOU,cAAcR,WAAW,MAC3DH,OAAOW,gBAAgB1V,cAAc;CAEvC,IAAI,CAAC+U,OAAOjC,eAAekC,OAAOlC,YAAYoC,WAAW,MACvDH,OAAOjC,cAAchT,YAAY;AAErC,CAAC;AA91BwB,SAAA6V,QAAA,CAAA;AAAA,SAAA1R,OAAAgE,YAAA;CAAA,OAmCnBlK,QACEkK,WAAU5H,IACVoJ,mBAAmB;EAAAxB;EAAAoB,UAEPsM;CACZ,CAAC,CACH;AAAC;AAzCkB,SAAAnO,SAAA,CAAA;AAAA,SAAAG,SAAA,CAAA;AAAA,SAAAE,SAAA,CAAA;AAAA,SAAAE,SAAA,CAAA;AAiUS,SAAA+D,OAAAjL,MAAA;CAAA,OA8BuBA,KAAIJ,SAAU;AAAM;AA9B3C,SAAAuL,OAAA4J,QAAA;CAAA,OAgCV,UAAU/U,SAAOA,OAAIkK,OAArB;AAA+B;AAhCrB,SAAAuB,OAAAuJ,KAAA;CAAA,OAoEX1J,IAACpL,OAAON,SAAU;AAAU;AApEjB,SAAA4P,SAAA,CAAA;AAAA,SAAAE,SAAA,CAAA;AA4RR,SAAA8B,QAAAyD,GAAApS,KAAAqS,KAAA;CAAA,OAkG2C;EAAA,GAC5DD;EAACjQ,QACInC,QAAQqS,IAAG1U,SAAU;CAC/B;AAAC;AArGqB,SAAAiS,UAAA,CAAA;AAAA,SAAAK,UAAA;CAAA,OAsME;EAAA8B,OAAS,CAAC;EAACO,QAAU,CAAC;CAAE;AAAC;AAtM3B,SAAAnC,UAAA;CAAA,OAuMP,EAAAtS,UAAY,CAAA,EAAG;AAAC;AAvMT,SAAAwS,UAAA,CAAA;AAAA,SAAAC,UAAA,CAAA;AAAA,SAAAC,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AAAA,SAAAE,UAAA;CAAA,OAmNA;AAAC;AAnND,SAAA0B,UAAA,CAAA;AAAA,SAAAxB,UAAA;CAAA,OAoNMwB;AAAQ;AApNd,SAAAtB,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"createContextStoreHook.d.ts","names":[],"sources":["../../../../src/context/react/utils/createContextStoreHook.ts"],"mappings":";;;;;;;;iBASgB,uBAAuB,GAAG,gBAAgB,YACxD,cAAc;EAAY;MAAyB,UACnD,YAAY,OA2DT,KAAK;uCAxD+C,KAAC;GAiBlC,WAAS,WAClB,OAAK,EAAA,WAAA,oBAlBqC,KAAC,cAkBtB,YAC/B;;IAC8B;OAAmB,EAAA,WAAA,oBApBG,KAAC;GAqBlC,WAAS;IAC7B;IACA,YAAY,OAAK,EAAA,WAAA,oBAvBoC,KAAC,cAuBrB;MAC/B;UAkCD,QAAQ;MAvDmB,cAAa,EAAA,WAAA,oBAHY,KAAC;;IAKtD;MACE,cAAa,EAAA,WAAA,oBANsC,KAAC"}
1
+ {"version":3,"file":"createContextStoreHook.d.ts","names":[],"sources":["../../../../src/context/react/utils/createContextStoreHook.ts"],"mappings":";;;;;;;;iBASgB,uBAAuB,GAAG,gBAAgB,YACxD,cAAc;EAAY;MAAyB,UACnD,YAAY,OA2DT,KAAK;MAxD+C,EAAA,WAAA,oBAAA,KAAC;GAiBlC,WAAS,WAClB,OAAK,EAAA,WAAA,oBAlBqC,KAAC,cAkBtB,YAC/B;GAC4B;IAAE;OAAmB,EAAA,WAAA,oBApBG,KAAC;GAqBlC,WAAS;IAC7B;IACA,YAAY,OAAK,EAAA,WAAA,oBAvBoC,KAAC,cAuBrB;MAC/B;UAkCD,QAAQ;MAvDmB,cAAa,EAAA,WAAA,oBAHY,KAAC;GAIpB;IAClC;MACE,cAAa,EAAA,WAAA,oBANsC,KAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"createStateHookForRuntime.d.ts","names":[],"sources":["../../../../src/context/react/utils/createStateHookForRuntime.ts"],"mappings":";;iBAKgB,0BAA0B,QACxC,aAAa;EACX;MACI,oBAAoB;MAGD;GAGH,WAAS,WAClB,OAAO,WAAW,YAC5B;GAGmB,WAAS,YACjB,OAAO,WAAW,yBAC7B,YAAY;;IAGkB;MAAiC;;IAIhE;MACE;GAGkB,WAAS;IAC7B;IACA,WAAW,OAAO,WAAW;MAC3B;GAGkB,WAAS;IAC7B;IACA,YAAY,OAAO,WAAW;MAC5B,YAAY;GAGM,WAAS;IAC7B;IACA,WAAW,OAAO,WAAW;MAC3B;GAGkB,WAAS;IAC7B;IACA,YAAY,OAAO,WAAW;MAC5B,YAAY"}
1
+ {"version":3,"file":"createStateHookForRuntime.d.ts","names":[],"sources":["../../../../src/context/react/utils/createStateHookForRuntime.ts"],"mappings":";;iBAKgB,0BAA0B,QACxC,aAAa;EACX;MACI,oBAAoB;MAGD;GAGH,WAAS,WAClB,OAAO,WAAW,YAC5B;GAGmB,WAAS,YACjB,OAAO,WAAW,yBAC7B,YAAY;GAGgB;IAAE;MAAiC;GAGnC;IAC7B;MACE;GAGkB,WAAS;IAC7B;IACA,WAAW,OAAO,WAAW;MAC3B;GAGkB,WAAS;IAC7B;IACA,YAAY,OAAO,WAAW;MAC5B,YAAY;GAGM,WAAS;IAC7B;IACA,WAAW,OAAO,WAAW;MAC3B;GAGkB,WAAS;IAC7B;IACA,YAAY,OAAO,WAAW;MAC5B,YAAY"}
@@ -1 +1 @@
1
- {"version":3,"file":"AssistantRuntimeProvider.js","names":["c","_c","FC","memo","PropsWithChildren","useEffect","AssistantClient","useAui","AssistantRuntime","AssistantProviderBase","ThreadPrimitiveViewportProvider","DevToolsProviderApi","AssistantRuntimeProvider","Props","runtime","aui","DevToolsRegistration","$","t0","t1","process","env","NODE_ENV","register","AssistantRuntimeProviderImpl","children","t2","Symbol","for","t3","t4"],"sources":["../../src/legacy-runtime/AssistantRuntimeProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { type FC, memo, type PropsWithChildren, useEffect } from \"react\";\nimport { type AssistantClient, useAui } from \"@assistant-ui/store\";\nimport type { AssistantRuntime } from \"./runtime/AssistantRuntime\";\nimport { AssistantProviderBase } from \"@assistant-ui/core/react\";\nimport { ThreadPrimitiveViewportProvider } from \"../context/providers/ThreadViewportProvider\";\nimport { DevToolsProviderApi } from \"../devtools/DevToolsHooks\";\n\nexport namespace AssistantRuntimeProvider {\n export type Props = PropsWithChildren<{\n /**\n * The assistant runtime to expose to descendants. Build one with\n * `useLocalRuntime`, `useExternalStoreRuntime`, or\n * `useAssistantTransportRuntime`.\n */\n runtime: AssistantRuntime;\n\n /**\n * Optional parent `AssistantClient` whose scopes are inherited by the\n * client created for this runtime. Use this when nesting an\n * `AssistantRuntimeProvider` inside another assistant context. Omit this\n * prop when there is no parent client.\n * @defaultValue undefined\n */\n aui?: AssistantClient;\n }>;\n}\n\nconst DevToolsRegistration: FC = () => {\n const aui = useAui();\n useEffect(() => {\n if (typeof process === \"undefined\" || process.env.NODE_ENV === \"production\")\n return;\n return DevToolsProviderApi.register(aui);\n }, [aui]);\n return null;\n};\n\nexport const AssistantRuntimeProviderImpl: FC<\n AssistantRuntimeProvider.Props\n> = ({ children, aui, runtime }) => {\n return (\n <AssistantProviderBase runtime={runtime} aui={aui ?? null}>\n <DevToolsRegistration />\n {/* TODO temporarily allow accessing viewport state from outside the viewport */}\n {/* TODO figure out if this behavior should be deprecated, since it is quite hacky */}\n <ThreadPrimitiveViewportProvider>\n {children}\n </ThreadPrimitiveViewportProvider>\n </AssistantProviderBase>\n );\n};\n\nexport const AssistantRuntimeProvider = memo(AssistantRuntimeProviderImpl);\n"],"mappings":";;;;;;;;;AA6BA,MAAMgB,6BAA2B;CAAA,MAAAC,IAAAhB,EAAA,CAAA;CAC/B,MAAAc,MAAYR,OAAO;CAAE,IAAAW;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,KAAA;EACXG,WAAA;GACR,IAAI,OAAOE,YAAY,eAAeA,QAAOC,IAAIC,aAAc,cAAY;GAClE,OACFX,oBAAmBY,SAAUR,GAAG;EAAC;EACvCI,KAAA,CAACJ,GAAG;EAACE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,KAAAD,EAAA;EAAAE,KAAAF,EAAA;CAAA;CAJRZ,UAAUa,IAIPC,EAAK;CAAC,OACF;AAAI;AAGb,MAAaK,gCAETN,OAAA;CAAA,MAAAD,IAAAhB,EAAA,CAAA;CAAC,MAAA,EAAAwB,UAAAV,KAAAD,YAAAI;CAE6C,MAAAC,KAAAJ,OAAA;CAAW,IAAAW;CAAA,IAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,GAAA;EACvDF,KAAA,oBAAC,sBAAD,CAAqB,CAAA;EAAGT,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAQ,UAAA;EAGxBI,KAAA,oBAAC,iCAAD,EACGJ,SAD6B,CAAA;EAEER,EAAA,KAAAQ;EAAAR,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAH,WAAAG,EAAA,OAAAE,MAAAF,EAAA,OAAAY,IAAA;EANpCC,KAAA,qBAAC,uBAAD;GAAgChB;GAAc,KAAAK;aAA9C,CACEO,IAGAG,EAJoB;;EAOEZ,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAY;EAAAZ,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,OAPxBa;AAOwB;AAI5B,MAAalB,2BAA2BT,KAAKqB,4BAA4B"}
1
+ {"version":3,"file":"AssistantRuntimeProvider.js","names":["c","_c","FC","memo","PropsWithChildren","useEffect","AssistantClient","useAui","AssistantRuntime","AssistantProviderBase","ThreadPrimitiveViewportProvider","DevToolsProviderApi","AssistantRuntimeProvider","Props","runtime","aui","DevToolsRegistration","$","t0","t1","process","env","NODE_ENV","register","AssistantRuntimeProviderImpl","children","t2","Symbol","for","t3","t4"],"sources":["../../src/legacy-runtime/AssistantRuntimeProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { type FC, memo, type PropsWithChildren, useEffect } from \"react\";\nimport { type AssistantClient, useAui } from \"@assistant-ui/store\";\nimport type { AssistantRuntime } from \"./runtime/AssistantRuntime\";\nimport { AssistantProviderBase } from \"@assistant-ui/core/react\";\nimport { ThreadPrimitiveViewportProvider } from \"../context/providers/ThreadViewportProvider\";\nimport { DevToolsProviderApi } from \"../devtools/DevToolsHooks\";\n\nexport namespace AssistantRuntimeProvider {\n export type Props = PropsWithChildren<{\n /**\n * The assistant runtime to expose to descendants. Build one with\n * `useLocalRuntime`, `useExternalStoreRuntime`, or\n * `useAssistantTransportRuntime`.\n */\n runtime: AssistantRuntime;\n\n /**\n * Optional parent `AssistantClient` whose scopes are inherited by the\n * client created for this runtime. Use this when nesting an\n * `AssistantRuntimeProvider` inside another assistant context. Omit this\n * prop when there is no parent client.\n * @defaultValue undefined\n */\n aui?: AssistantClient;\n }>;\n}\n\nconst DevToolsRegistration: FC = () => {\n const aui = useAui();\n useEffect(() => {\n if (typeof process === \"undefined\" || process.env.NODE_ENV === \"production\")\n return;\n return DevToolsProviderApi.register(aui);\n }, [aui]);\n return null;\n};\n\nexport const AssistantRuntimeProviderImpl: FC<\n AssistantRuntimeProvider.Props\n> = ({ children, aui, runtime }) => {\n return (\n <AssistantProviderBase runtime={runtime} aui={aui ?? null}>\n <DevToolsRegistration />\n {/* TODO temporarily allow accessing viewport state from outside the viewport */}\n {/* TODO figure out if this behavior should be deprecated, since it is quite hacky */}\n <ThreadPrimitiveViewportProvider>\n {children}\n </ThreadPrimitiveViewportProvider>\n </AssistantProviderBase>\n );\n};\n\nexport const AssistantRuntimeProvider = memo(AssistantRuntimeProviderImpl);\n"],"mappings":";;;;;;;;;AA6BA,MAAMgB,6BAA2B;CAAA,MAAAC,IAAAhB,EAAA,CAAA;CAC/B,MAAAc,MAAYR,OAAO;CAAE,IAAAW;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,KAAA;EACXG,WAAA;GACR,IAAI,OAAOE,YAAY,eAAeA,QAAOC,IAAIC,aAAc,cAAY;GAClE,OACFX,oBAAmBY,SAAUR,GAAG;EAAC;EACvCI,KAAA,CAACJ,GAAG;EAACE,EAAA,KAAAF;EAAAE,EAAA,KAAAC;EAAAD,EAAA,KAAAE;CAAA,OAAA;EAAAD,KAAAD,EAAA;EAAAE,KAAAF,EAAA;CAAA;CAJRZ,UAAUa,IAIPC,EAAK;CAAC,OACF;AAAI;AAGb,MAAaK,gCAETN,OAAA;CAAA,MAAAD,IAAAhB,EAAA,CAAA;CAAC,MAAA,EAAAwB,UAAAV,KAAAD,YAAAI;CAE6C,MAAAC,KAAAJ,OAAA;CAAW,IAAAW;CAAA,IAAAT,EAAA,OAAAU,OAAAC,IAAA,2BAAA,GAAA;EACvDF,KAAA,oBAAC,sBAAD,CAAqB,CAAA;EAAGT,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,IAAAY;CAAA,IAAAZ,EAAA,OAAAQ,UAAA;EAGxBI,KAAA,oBAAC,iCAAD,EACGJ,SAD6B,CAAA;EAEER,EAAA,KAAAQ;EAAAR,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAa;CAAA,IAAAb,EAAA,OAAAH,WAAAG,EAAA,OAAAE,MAAAF,EAAA,OAAAY,IAAA;EANpCC,KAAA,qBAAC,uBAAD;GAAgChB;GAAc,KAAAK;GAA9C,UAAA,CACEO,IAGAG,EAJoB;;EAOEZ,EAAA,KAAAH;EAAAG,EAAA,KAAAE;EAAAF,EAAA,KAAAY;EAAAZ,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,OAPxBa;AAOwB;AAI5B,MAAalB,2BAA2BT,KAAKqB,4BAA4B"}
@@ -1,8 +1,17 @@
1
1
  import { ExportedMessageRepositoryItem } from "../runtime-cores/utils/MessageRepository.js";
2
2
  import { CloudMessage } from "assistant-cloud";
3
- import { CompleteAttachment, DataMessagePart, FileMessagePart, ImageMessagePart, MessageStatus, SourceProviderMetadata, TextMessagePart, ThreadMessage, Unstable_AudioMessagePart } from "@assistant-ui/core";
3
+ import { CompleteAttachment, DataMessagePart, FileMessagePart, ImageMessagePart, MessageStatus, SourceProviderMetadata, TextMessagePart, ThreadMessage, ToolApprovalOption, Unstable_AudioMessagePart } from "@assistant-ui/core";
4
4
  import { ReadonlyJSONObject, ReadonlyJSONValue } from "assistant-stream/utils";
5
5
  //#region src/legacy-runtime/cloud/auiV0.d.ts
6
+ type AuiV0ToolApproval = {
7
+ readonly id: string;
8
+ readonly approved?: boolean;
9
+ readonly reason?: string;
10
+ readonly isAutomatic?: boolean;
11
+ readonly options?: readonly ToolApprovalOption[];
12
+ readonly optionId?: string;
13
+ readonly resolution?: "cancelled" | "expired";
14
+ };
6
15
  type AuiV0MessagePart = {
7
16
  readonly type: "text";
8
17
  readonly text: string;
@@ -31,6 +40,7 @@ type AuiV0MessagePart = {
31
40
  readonly args: ReadonlyJSONObject;
32
41
  readonly result?: ReadonlyJSONValue;
33
42
  readonly isError?: true;
43
+ readonly approval?: AuiV0ToolApproval;
34
44
  } | {
35
45
  readonly type: "tool-call";
36
46
  readonly toolCallId: string;
@@ -38,6 +48,7 @@ type AuiV0MessagePart = {
38
48
  readonly argsText: string;
39
49
  readonly result?: ReadonlyJSONValue;
40
50
  readonly isError?: true;
51
+ readonly approval?: AuiV0ToolApproval;
41
52
  } | {
42
53
  readonly type: "image";
43
54
  readonly image: string;
@@ -1 +1 @@
1
- {"version":3,"file":"auiV0.d.ts","names":[],"sources":["../../../src/legacy-runtime/cloud/auiV0.ts"],"mappings":";;;;;KAoBK;WAEU;WACA;;WAGA;WACA;;WAGA;WACA;WACA;WACA;WACA;WACA,mBAAmB;;WAGnB;WACA;WACA;WACA;WACA;WACA;WACA,mBAAmB;;WAGnB;WACA;WACA;WACA,MAAM;WACN,SAAS;WACT;;WAGA;WACA;WACA;WACA;WACA,SAAS;WACT;;WAGA;WACA;;WAGA;WACA;WACA;WACA;;KAGV,sBACD,kBACA,mBACA,kBACA,4BACA,gBAAgB;KAEf;WACM;WACA,MAAM;WACN;WACA;WACA,QAAQ;WACR,kBAAkB;;KAGxB;WACM;WACA,SAAS;WACT,kBAAkB;WAClB,uBAAuB;WACvB;aACE,iBAAiB;aACjB,+BAA+B;aAC/B,wBAAwB;aACxB;eACE;iBACE;iBACA;;;aAGJ,QAAQ;;;iBAkDL,YAAY,SAAS,gBAAgB;iBA4FrC,YACd,cAAc;EAAiB;IAC9B"}
1
+ {"version":3,"file":"auiV0.d.ts","names":[],"sources":["../../../src/legacy-runtime/cloud/auiV0.ts"],"mappings":";;;;;KAqBK;WACM;WACA;WACA;WACA;WACA,mBAAmB;WACnB;WACA;;KAGN;WAEU;WACA;;WAGA;WACA;;WAGA;WACA;WACA;WACA;WACA;WACA,mBAAmB;;WAGnB;WACA;WACA;WACA;WACA;WACA;WACA,mBAAmB;;WAGnB;WACA;WACA;WACA,MAAM;WACN,SAAS;WACT;WACA,WAAW;;WAGX;WACA;WACA;WACA;WACA,SAAS;WACT;WACA,WAAW;;WAGX;WACA;;WAGA;WACA;WACA;WACA;;KAGV,sBACD,kBACA,mBACA,kBACA,4BACA,gBAAgB;KAEf;WACM;WACA,MAAM;WACN;WACA;WACA,QAAQ;WACR,kBAAkB;;KAGxB;WACM;WACA,SAAS;WACT,kBAAkB;WAClB,uBAAuB;WACvB;aACE,iBAAiB;aACjB,+BAA+B;aAC/B,wBAAwB;aACxB;eACE;iBACE;iBACA;;;aAGJ,QAAQ;;;iBAkDL,YAAY,SAAS,gBAAgB;iBA6FrC,YACd,cAAc;EAAiB;IAC9B"}
@@ -73,7 +73,8 @@ function auiV0Encode(message) {
73
73
  toolName: part.toolName,
74
74
  ...JSON.stringify(part.args) === part.argsText ? { args: part.args } : { argsText: part.argsText },
75
75
  ...part.result ? { result: part.result } : void 0,
76
- ...part.isError ? { isError: true } : void 0
76
+ ...part.isError ? { isError: true } : void 0,
77
+ ...part.approval ? { approval: part.approval } : void 0
77
78
  };
78
79
  case "image": return {
79
80
  type: "image",
@@ -1 +1 @@
1
- {"version":3,"file":"auiV0.js","names":["CompleteAttachment","DataMessagePart","FileMessagePart","ImageMessagePart","MessageStatus","SourceProviderMetadata","ThreadMessage","TextMessagePart","Unstable_AudioMessagePart","fromThreadMessageLike","CloudMessage","isJSONValue","ReadonlyJSONObject","ReadonlyJSONValue","ExportedMessageRepositoryItem","AuiV0MessagePart","type","text","sourceType","id","url","title","providerMetadata","mediaType","filename","toolCallId","toolName","args","result","isError","argsText","image","data","mimeType","AuiV0AttachmentPart","AuiV0Attachment","name","contentType","status","content","AuiV0Message","role","attachments","metadata","unstable_state","unstable_annotations","unstable_data","steps","usage","inputTokens","outputTokens","custom","encodeAttachmentPart","part","console","warn","JSON","stringify","unhandledType","Error","encodeAttachments","message","length","undefined","map","auiV0Encode","reason","auiV0Decode","cloudMessage","format","payload","createdAt","created_at","parentId","parent_id"],"sources":["../../../src/legacy-runtime/cloud/auiV0.ts"],"sourcesContent":["import type {\n CompleteAttachment,\n DataMessagePart,\n FileMessagePart,\n ImageMessagePart,\n MessageStatus,\n SourceProviderMetadata,\n ThreadMessage,\n TextMessagePart,\n Unstable_AudioMessagePart,\n} from \"@assistant-ui/core\";\nimport { fromThreadMessageLike } from \"../runtime-cores/external-store/ThreadMessageLike\";\nimport type { CloudMessage } from \"assistant-cloud\";\nimport { isJSONValue } from \"@assistant-ui/core/internal\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\nimport type { ExportedMessageRepositoryItem } from \"../runtime-cores/utils/MessageRepository\";\n\ntype AuiV0MessagePart =\n | {\n readonly type: \"text\";\n readonly text: string;\n }\n | {\n readonly type: \"reasoning\";\n readonly text: string;\n }\n | {\n readonly type: \"source\";\n readonly sourceType: \"url\";\n readonly id: string;\n readonly url: string;\n readonly title?: string;\n readonly providerMetadata?: SourceProviderMetadata;\n }\n | {\n readonly type: \"source\";\n readonly sourceType: \"document\";\n readonly id: string;\n readonly title: string;\n readonly mediaType: string;\n readonly filename?: string;\n readonly providerMetadata?: SourceProviderMetadata;\n }\n | {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly args: ReadonlyJSONObject;\n readonly result?: ReadonlyJSONValue;\n readonly isError?: true;\n }\n | {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly argsText: string;\n readonly result?: ReadonlyJSONValue;\n readonly isError?: true;\n }\n | {\n readonly type: \"image\";\n readonly image: string;\n }\n | {\n readonly type: \"file\";\n readonly data: string;\n readonly mimeType: string;\n readonly filename?: string;\n };\n\ntype AuiV0AttachmentPart =\n | TextMessagePart\n | ImageMessagePart\n | FileMessagePart\n | Unstable_AudioMessagePart\n | DataMessagePart<ReadonlyJSONValue>;\n\ntype AuiV0Attachment = {\n readonly id: string;\n readonly type: CompleteAttachment[\"type\"];\n readonly name: string;\n readonly contentType?: string;\n readonly status: CompleteAttachment[\"status\"];\n readonly content: readonly AuiV0AttachmentPart[];\n};\n\ntype AuiV0Message = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly status?: MessageStatus;\n readonly content: readonly AuiV0MessagePart[];\n readonly attachments?: readonly AuiV0Attachment[];\n readonly metadata: {\n readonly unstable_state?: ReadonlyJSONValue;\n readonly unstable_annotations: readonly ReadonlyJSONValue[];\n readonly unstable_data: readonly ReadonlyJSONValue[];\n readonly steps: readonly {\n readonly usage?: {\n readonly inputTokens: number;\n readonly outputTokens: number;\n };\n }[];\n readonly custom: ReadonlyJSONObject;\n };\n};\n\nconst encodeAttachmentPart = (\n part: CompleteAttachment[\"content\"][number],\n): AuiV0AttachmentPart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n case \"image\":\n case \"file\":\n case \"audio\":\n return part;\n\n case \"data\": {\n if (!isJSONValue(part.data)) {\n console.warn(`attachment data is not JSON! ${JSON.stringify(part)}`);\n }\n return { ...part, data: part.data as ReadonlyJSONValue };\n }\n\n default: {\n const unhandledType: never = type;\n throw new Error(\n `Attachment part type not supported by aui/v0: ${unhandledType}`,\n );\n }\n }\n};\n\nconst encodeAttachments = (\n message: ThreadMessage,\n): readonly AuiV0Attachment[] | undefined => {\n if (message.role !== \"user\" || message.attachments.length === 0) {\n return undefined;\n }\n\n return message.attachments.map(\n ({ id, type, name, contentType, status, content }) => ({\n id,\n type,\n name,\n status,\n ...(contentType != null ? { contentType } : undefined),\n content: content.map(encodeAttachmentPart),\n }),\n );\n};\n\nexport function auiV0Encode(message: ThreadMessage): AuiV0Message {\n // info: ID and createdAt are ignored (we use the server value instead)\n const status: MessageStatus | undefined =\n message.status?.type === \"running\"\n ? { type: \"incomplete\", reason: \"cancelled\" }\n : message.status;\n const attachments = encodeAttachments(message);\n\n return {\n role: message.role,\n content: message.content.map((part) => {\n const type = part.type;\n switch (type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n\n case \"reasoning\":\n return { type: \"reasoning\", text: part.text };\n\n case \"source\":\n if (part.sourceType === \"url\") {\n return {\n type: \"source\",\n sourceType: \"url\",\n id: part.id,\n url: part.url,\n ...(part.title != null ? { title: part.title } : undefined),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : undefined),\n };\n }\n\n return {\n type: \"source\",\n sourceType: \"document\",\n id: part.id,\n title: part.title,\n mediaType: part.mediaType,\n ...(part.filename != null\n ? { filename: part.filename }\n : undefined),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : undefined),\n };\n\n case \"tool-call\": {\n if (!isJSONValue(part.result)) {\n console.warn(\n `tool-call result is not JSON! ${JSON.stringify(part)}`,\n );\n }\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n ...(JSON.stringify(part.args) === part.argsText\n ? { args: part.args }\n : { argsText: part.argsText }),\n ...(part.result\n ? { result: part.result as ReadonlyJSONValue }\n : undefined),\n ...(part.isError ? { isError: true } : undefined),\n };\n }\n\n case \"image\":\n return { type: \"image\", image: part.image };\n\n case \"file\":\n return {\n type: \"file\",\n data: part.data,\n mimeType: part.mimeType,\n ...(part.filename ? { filename: part.filename } : undefined),\n };\n\n default: {\n const unhandledType: \"audio\" | \"data\" | \"generative-ui\" = type;\n throw new Error(\n `Message part type not supported by aui/v0: ${unhandledType}`,\n );\n }\n }\n }),\n metadata: message.metadata as AuiV0Message[\"metadata\"],\n ...(status ? { status } : undefined),\n ...(attachments ? { attachments } : undefined),\n };\n}\n\nexport function auiV0Decode(\n cloudMessage: CloudMessage & { format: \"aui/v0\" },\n): ExportedMessageRepositoryItem {\n const payload = cloudMessage.content as unknown as AuiV0Message;\n const message = fromThreadMessageLike(\n {\n id: cloudMessage.id,\n createdAt: cloudMessage.created_at,\n ...payload,\n },\n cloudMessage.id,\n { type: \"complete\", reason: \"unknown\" },\n );\n\n return {\n parentId: cloudMessage.parent_id,\n message,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"auiV0.js","names":["CompleteAttachment","DataMessagePart","FileMessagePart","ImageMessagePart","MessageStatus","SourceProviderMetadata","ThreadMessage","TextMessagePart","ToolApprovalOption","Unstable_AudioMessagePart","fromThreadMessageLike","CloudMessage","isJSONValue","ReadonlyJSONObject","ReadonlyJSONValue","ExportedMessageRepositoryItem","AuiV0ToolApproval","id","approved","reason","isAutomatic","options","optionId","resolution","AuiV0MessagePart","type","text","sourceType","url","title","providerMetadata","mediaType","filename","toolCallId","toolName","args","result","isError","approval","argsText","image","data","mimeType","AuiV0AttachmentPart","AuiV0Attachment","name","contentType","status","content","AuiV0Message","role","attachments","metadata","unstable_state","unstable_annotations","unstable_data","steps","usage","inputTokens","outputTokens","custom","encodeAttachmentPart","part","console","warn","JSON","stringify","unhandledType","Error","encodeAttachments","message","length","undefined","map","auiV0Encode","auiV0Decode","cloudMessage","format","payload","createdAt","created_at","parentId","parent_id"],"sources":["../../../src/legacy-runtime/cloud/auiV0.ts"],"sourcesContent":["import type {\n CompleteAttachment,\n DataMessagePart,\n FileMessagePart,\n ImageMessagePart,\n MessageStatus,\n SourceProviderMetadata,\n ThreadMessage,\n TextMessagePart,\n ToolApprovalOption,\n Unstable_AudioMessagePart,\n} from \"@assistant-ui/core\";\nimport { fromThreadMessageLike } from \"../runtime-cores/external-store/ThreadMessageLike\";\nimport type { CloudMessage } from \"assistant-cloud\";\nimport { isJSONValue } from \"@assistant-ui/core/internal\";\nimport type {\n ReadonlyJSONObject,\n ReadonlyJSONValue,\n} from \"assistant-stream/utils\";\nimport type { ExportedMessageRepositoryItem } from \"../runtime-cores/utils/MessageRepository\";\n\ntype AuiV0ToolApproval = {\n readonly id: string;\n readonly approved?: boolean;\n readonly reason?: string;\n readonly isAutomatic?: boolean;\n readonly options?: readonly ToolApprovalOption[];\n readonly optionId?: string;\n readonly resolution?: \"cancelled\" | \"expired\";\n};\n\ntype AuiV0MessagePart =\n | {\n readonly type: \"text\";\n readonly text: string;\n }\n | {\n readonly type: \"reasoning\";\n readonly text: string;\n }\n | {\n readonly type: \"source\";\n readonly sourceType: \"url\";\n readonly id: string;\n readonly url: string;\n readonly title?: string;\n readonly providerMetadata?: SourceProviderMetadata;\n }\n | {\n readonly type: \"source\";\n readonly sourceType: \"document\";\n readonly id: string;\n readonly title: string;\n readonly mediaType: string;\n readonly filename?: string;\n readonly providerMetadata?: SourceProviderMetadata;\n }\n | {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly args: ReadonlyJSONObject;\n readonly result?: ReadonlyJSONValue;\n readonly isError?: true;\n readonly approval?: AuiV0ToolApproval;\n }\n | {\n readonly type: \"tool-call\";\n readonly toolCallId: string;\n readonly toolName: string;\n readonly argsText: string;\n readonly result?: ReadonlyJSONValue;\n readonly isError?: true;\n readonly approval?: AuiV0ToolApproval;\n }\n | {\n readonly type: \"image\";\n readonly image: string;\n }\n | {\n readonly type: \"file\";\n readonly data: string;\n readonly mimeType: string;\n readonly filename?: string;\n };\n\ntype AuiV0AttachmentPart =\n | TextMessagePart\n | ImageMessagePart\n | FileMessagePart\n | Unstable_AudioMessagePart\n | DataMessagePart<ReadonlyJSONValue>;\n\ntype AuiV0Attachment = {\n readonly id: string;\n readonly type: CompleteAttachment[\"type\"];\n readonly name: string;\n readonly contentType?: string;\n readonly status: CompleteAttachment[\"status\"];\n readonly content: readonly AuiV0AttachmentPart[];\n};\n\ntype AuiV0Message = {\n readonly role: \"assistant\" | \"user\" | \"system\";\n readonly status?: MessageStatus;\n readonly content: readonly AuiV0MessagePart[];\n readonly attachments?: readonly AuiV0Attachment[];\n readonly metadata: {\n readonly unstable_state?: ReadonlyJSONValue;\n readonly unstable_annotations: readonly ReadonlyJSONValue[];\n readonly unstable_data: readonly ReadonlyJSONValue[];\n readonly steps: readonly {\n readonly usage?: {\n readonly inputTokens: number;\n readonly outputTokens: number;\n };\n }[];\n readonly custom: ReadonlyJSONObject;\n };\n};\n\nconst encodeAttachmentPart = (\n part: CompleteAttachment[\"content\"][number],\n): AuiV0AttachmentPart => {\n const type = part.type;\n switch (type) {\n case \"text\":\n case \"image\":\n case \"file\":\n case \"audio\":\n return part;\n\n case \"data\": {\n if (!isJSONValue(part.data)) {\n console.warn(`attachment data is not JSON! ${JSON.stringify(part)}`);\n }\n return { ...part, data: part.data as ReadonlyJSONValue };\n }\n\n default: {\n const unhandledType: never = type;\n throw new Error(\n `Attachment part type not supported by aui/v0: ${unhandledType}`,\n );\n }\n }\n};\n\nconst encodeAttachments = (\n message: ThreadMessage,\n): readonly AuiV0Attachment[] | undefined => {\n if (message.role !== \"user\" || message.attachments.length === 0) {\n return undefined;\n }\n\n return message.attachments.map(\n ({ id, type, name, contentType, status, content }) => ({\n id,\n type,\n name,\n status,\n ...(contentType != null ? { contentType } : undefined),\n content: content.map(encodeAttachmentPart),\n }),\n );\n};\n\nexport function auiV0Encode(message: ThreadMessage): AuiV0Message {\n // info: ID and createdAt are ignored (we use the server value instead)\n const status: MessageStatus | undefined =\n message.status?.type === \"running\"\n ? { type: \"incomplete\", reason: \"cancelled\" }\n : message.status;\n const attachments = encodeAttachments(message);\n\n return {\n role: message.role,\n content: message.content.map((part) => {\n const type = part.type;\n switch (type) {\n case \"text\":\n return { type: \"text\", text: part.text };\n\n case \"reasoning\":\n return { type: \"reasoning\", text: part.text };\n\n case \"source\":\n if (part.sourceType === \"url\") {\n return {\n type: \"source\",\n sourceType: \"url\",\n id: part.id,\n url: part.url,\n ...(part.title != null ? { title: part.title } : undefined),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : undefined),\n };\n }\n\n return {\n type: \"source\",\n sourceType: \"document\",\n id: part.id,\n title: part.title,\n mediaType: part.mediaType,\n ...(part.filename != null\n ? { filename: part.filename }\n : undefined),\n ...(part.providerMetadata != null\n ? { providerMetadata: part.providerMetadata }\n : undefined),\n };\n\n case \"tool-call\": {\n if (!isJSONValue(part.result)) {\n console.warn(\n `tool-call result is not JSON! ${JSON.stringify(part)}`,\n );\n }\n return {\n type: \"tool-call\",\n toolCallId: part.toolCallId,\n toolName: part.toolName,\n ...(JSON.stringify(part.args) === part.argsText\n ? { args: part.args }\n : { argsText: part.argsText }),\n ...(part.result\n ? { result: part.result as ReadonlyJSONValue }\n : undefined),\n ...(part.isError ? { isError: true } : undefined),\n ...(part.approval ? { approval: part.approval } : undefined),\n };\n }\n\n case \"image\":\n return { type: \"image\", image: part.image };\n\n case \"file\":\n return {\n type: \"file\",\n data: part.data,\n mimeType: part.mimeType,\n ...(part.filename ? { filename: part.filename } : undefined),\n };\n\n default: {\n const unhandledType: \"audio\" | \"data\" | \"generative-ui\" = type;\n throw new Error(\n `Message part type not supported by aui/v0: ${unhandledType}`,\n );\n }\n }\n }),\n metadata: message.metadata as AuiV0Message[\"metadata\"],\n ...(status ? { status } : undefined),\n ...(attachments ? { attachments } : undefined),\n };\n}\n\nexport function auiV0Decode(\n cloudMessage: CloudMessage & { format: \"aui/v0\" },\n): ExportedMessageRepositoryItem {\n const payload = cloudMessage.content as unknown as AuiV0Message;\n const message = fromThreadMessageLike(\n {\n id: cloudMessage.id,\n createdAt: cloudMessage.created_at,\n ...payload,\n },\n cloudMessage.id,\n { type: \"complete\", reason: \"unknown\" },\n );\n\n return {\n parentId: cloudMessage.parent_id,\n message,\n };\n}\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ declare const createInitialQueueState: () => CommandQueueState;
4
4
  declare const useCommandQueue: (opts: {
5
5
  onQueue: () => void;
6
6
  }) => {
7
- state: CommandQueueState;
7
+ readonly state: CommandQueueState;
8
8
  enqueue: (command: AssistantTransportCommand, options?: {
9
9
  schedule?: boolean;
10
10
  }) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"commandQueue.d.ts","names":[],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/commandQueue.ts"],"mappings":";;cAOa,+BAA8B;cAK9B,kBAAmB;EAAQ;;;qBAU3B,2BAAyB;IACtB;;eAWI"}
1
+ {"version":3,"file":"commandQueue.d.ts","names":[],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/commandQueue.ts"],"mappings":";;cAOa,+BAA8B;cAK9B,kBAAmB;EAAQ;;;EAU3B,UAAA,SAAA,2BAAyB;IACtB;;EAWI,aAAA"}
@@ -36,16 +36,17 @@ const useCommandQueue = (opts) => {
36
36
  };
37
37
  rerender((prev_1) => prev_1 + 1);
38
38
  };
39
- const reset = useCallback(() => {
40
- queueStateRef.current = createInitialQueueState();
41
- rerender((prev_2) => prev_2 + 1);
42
- }, []);
43
39
  return {
44
- state: queueStateRef.current,
40
+ get state() {
41
+ return queueStateRef.current;
42
+ },
45
43
  enqueue,
46
44
  flush,
47
45
  markDelivered,
48
- reset
46
+ reset: useCallback(() => {
47
+ queueStateRef.current = createInitialQueueState();
48
+ rerender((prev_2) => prev_2 + 1);
49
+ }, [])
49
50
  };
50
51
  };
51
52
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"commandQueue.js","names":["useState","useCallback","useRef","useEffect","AssistantTransportCommand","CommandQueueState","QueuedCommand","createInitialQueueState","queued","inTransit","useCommandQueue","opts","onQueue","onQueueRef","current","rerender","queueStateRef","enqueue","command","options","schedule","prev","flush","length","markDelivered","reset","state"],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/commandQueue.ts"],"sourcesContent":["import { useState, useCallback, useRef, useEffect } from \"react\";\nimport type {\n AssistantTransportCommand,\n CommandQueueState,\n QueuedCommand,\n} from \"./types\";\n\nexport const createInitialQueueState = (): CommandQueueState => ({\n queued: [],\n inTransit: [],\n});\n\nexport const useCommandQueue = (opts: { onQueue: () => void }) => {\n const onQueueRef = useRef(opts.onQueue);\n useEffect(() => {\n onQueueRef.current = opts.onQueue;\n });\n\n const [, rerender] = useState(0);\n const queueStateRef = useRef<CommandQueueState>(createInitialQueueState());\n\n const enqueue = (\n command: AssistantTransportCommand,\n options?: { schedule?: boolean },\n ) => {\n queueStateRef.current = {\n queued: [...queueStateRef.current.queued, command],\n inTransit: queueStateRef.current.inTransit,\n };\n rerender((prev) => prev + 1);\n\n if (options?.schedule !== false) onQueueRef.current();\n };\n\n const flush = (): QueuedCommand[] => {\n if (queueStateRef.current.queued.length === 0) return [];\n\n const queued = queueStateRef.current.queued;\n queueStateRef.current = {\n queued: [],\n inTransit: [...queueStateRef.current.inTransit, ...queued],\n };\n rerender((prev) => prev + 1);\n\n return queued;\n };\n\n const markDelivered = () => {\n queueStateRef.current = { ...queueStateRef.current, inTransit: [] };\n rerender((prev) => prev + 1);\n };\n\n const reset = useCallback(() => {\n queueStateRef.current = createInitialQueueState();\n rerender((prev) => prev + 1);\n }, []);\n\n return {\n state: queueStateRef.current,\n enqueue,\n flush,\n markDelivered,\n reset,\n };\n};\n"],"mappings":";;AAOA,MAAaO,iCAAoD;CAC/DC,QAAQ,CAAA;CACRC,WAAW,CAAA;AACb;AAEA,MAAaC,mBAAmBC,SAAkC;CAChE,MAAME,aAAaX,OAAOS,KAAKC,OAAO;CACtCT,gBAAgB;EACdU,WAAWC,UAAUH,KAAKC;CAC5B,CAAC;CAED,MAAM,GAAGG,YAAYf,SAAS,CAAC;CAC/B,MAAMgB,gBAAgBd,OAA0BK,wBAAwB,CAAC;CAEzE,MAAMU,WACJC,SACAC,YACG;EACHH,cAAcF,UAAU;GACtBN,QAAQ,CAAC,GAAGQ,cAAcF,QAAQN,QAAQU,OAAO;GACjDT,WAAWO,cAAcF,QAAQL;EACnC;EACAM,UAAUM,SAASA,OAAO,CAAC;EAE3B,IAAIF,SAASC,aAAa,OAAOP,WAAWC,QAAQ;CACtD;CAEA,MAAMQ,cAA+B;EACnC,IAAIN,cAAcF,QAAQN,OAAOe,WAAW,GAAG,OAAO,CAAA;EAEtD,MAAMf,SAASQ,cAAcF,QAAQN;EACrCQ,cAAcF,UAAU;GACtBN,QAAQ,CAAA;GACRC,WAAW,CAAC,GAAGO,cAAcF,QAAQL,WAAW,GAAGD,MAAM;EAC3D;EACAO,UAAUM,WAASA,SAAO,CAAC;EAE3B,OAAOb;CACT;CAEA,MAAMgB,sBAAsB;EAC1BR,cAAcF,UAAU;GAAE,GAAGE,cAAcF;GAASL,WAAW,CAAA;EAAG;EAClEM,UAAUM,WAASA,SAAO,CAAC;CAC7B;CAEA,MAAMI,QAAQxB,kBAAkB;EAC9Be,cAAcF,UAAUP,wBAAwB;EAChDQ,UAAUM,WAASA,SAAO,CAAC;CAC7B,GAAG,CAAA,CAAE;CAEL,OAAO;EACLK,OAAOV,cAAcF;EACrBG;EACAK;EACAE;EACAC;CACF;AACF"}
1
+ {"version":3,"file":"commandQueue.js","names":["useState","useCallback","useRef","useEffect","AssistantTransportCommand","CommandQueueState","QueuedCommand","createInitialQueueState","queued","inTransit","useCommandQueue","opts","onQueue","onQueueRef","current","rerender","queueStateRef","enqueue","command","options","schedule","prev","flush","length","markDelivered","reset","state"],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/commandQueue.ts"],"sourcesContent":["import { useState, useCallback, useRef, useEffect } from \"react\";\nimport type {\n AssistantTransportCommand,\n CommandQueueState,\n QueuedCommand,\n} from \"./types\";\n\nexport const createInitialQueueState = (): CommandQueueState => ({\n queued: [],\n inTransit: [],\n});\n\nexport const useCommandQueue = (opts: { onQueue: () => void }) => {\n const onQueueRef = useRef(opts.onQueue);\n useEffect(() => {\n onQueueRef.current = opts.onQueue;\n });\n\n const [, rerender] = useState(0);\n const queueStateRef = useRef<CommandQueueState>(createInitialQueueState());\n\n const enqueue = (\n command: AssistantTransportCommand,\n options?: { schedule?: boolean },\n ) => {\n queueStateRef.current = {\n queued: [...queueStateRef.current.queued, command],\n inTransit: queueStateRef.current.inTransit,\n };\n rerender((prev) => prev + 1);\n\n if (options?.schedule !== false) onQueueRef.current();\n };\n\n const flush = (): QueuedCommand[] => {\n if (queueStateRef.current.queued.length === 0) return [];\n\n const queued = queueStateRef.current.queued;\n queueStateRef.current = {\n queued: [],\n inTransit: [...queueStateRef.current.inTransit, ...queued],\n };\n rerender((prev) => prev + 1);\n\n return queued;\n };\n\n const markDelivered = () => {\n queueStateRef.current = { ...queueStateRef.current, inTransit: [] };\n rerender((prev) => prev + 1);\n };\n\n const reset = useCallback(() => {\n queueStateRef.current = createInitialQueueState();\n rerender((prev) => prev + 1);\n }, []);\n\n return {\n // live getter — callbacks firing between renders must not see a stale snapshot\n get state() {\n return queueStateRef.current;\n },\n enqueue,\n flush,\n markDelivered,\n reset,\n };\n};\n"],"mappings":";;AAOA,MAAaO,iCAAoD;CAC/DC,QAAQ,CAAA;CACRC,WAAW,CAAA;AACb;AAEA,MAAaC,mBAAmBC,SAAkC;CAChE,MAAME,aAAaX,OAAOS,KAAKC,OAAO;CACtCT,gBAAgB;EACdU,WAAWC,UAAUH,KAAKC;CAC5B,CAAC;CAED,MAAM,GAAGG,YAAYf,SAAS,CAAC;CAC/B,MAAMgB,gBAAgBd,OAA0BK,wBAAwB,CAAC;CAEzE,MAAMU,WACJC,SACAC,YACG;EACHH,cAAcF,UAAU;GACtBN,QAAQ,CAAC,GAAGQ,cAAcF,QAAQN,QAAQU,OAAO;GACjDT,WAAWO,cAAcF,QAAQL;EACnC;EACAM,UAAUM,SAASA,OAAO,CAAC;EAE3B,IAAIF,SAASC,aAAa,OAAOP,WAAWC,QAAQ;CACtD;CAEA,MAAMQ,cAA+B;EACnC,IAAIN,cAAcF,QAAQN,OAAOe,WAAW,GAAG,OAAO,CAAA;EAEtD,MAAMf,SAASQ,cAAcF,QAAQN;EACrCQ,cAAcF,UAAU;GACtBN,QAAQ,CAAA;GACRC,WAAW,CAAC,GAAGO,cAAcF,QAAQL,WAAW,GAAGD,MAAM;EAC3D;EACAO,UAAUM,WAASA,SAAO,CAAC;EAE3B,OAAOb;CACT;CAEA,MAAMgB,sBAAsB;EAC1BR,cAAcF,UAAU;GAAE,GAAGE,cAAcF;GAASL,WAAW,CAAA;EAAG;EAClEM,UAAUM,WAASA,SAAO,CAAC;CAC7B;CAOA,OAAO;EAEL,IAAIK,QAAQ;GACV,OAAOV,cAAcF;EACvB;EACAG;EACAK;EACAE;EACAC,OAbYxB,kBAAkB;GAC9Be,cAAcF,UAAUP,wBAAwB;GAChDQ,UAAUM,WAASA,SAAO,CAAC;EAC7B,GAAG,CAAA,CAUDI;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"runManager.d.ts","names":[],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/runManager.ts"],"mappings":";KAGY,aAAa;EACvB;EACA;EACA;;iBAGc,cAAc;EAC5B,QAAQ,QAAQ,gBAAgB;EAChC;EACA;EACA,YAAY,OAAO,iBAAiB;IAClC"}
1
+ {"version":3,"file":"runManager.d.ts","names":[],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/runManager.ts"],"mappings":";KAGY,aAAa;EACvB;EACA;EACA;;iBAKc,cAAc;EAC5B,QAAQ,QAAQ,gBAAgB;EAChC;EACA;EACA,YAAY,OAAO,iBAAiB;IAClC"}
@@ -1,10 +1,12 @@
1
1
  import { useLatestRef } from "./useLatestRef.js";
2
- import { useCallback, useRef, useState } from "@assistant-ui/tap/react-shim";
2
+ import { useCallback, useEffect, useRef, useState } from "@assistant-ui/tap/react-shim";
3
3
  //#region src/legacy-runtime/runtime-cores/assistant-transport/runManager.ts
4
+ const disposeReason = Symbol("assistant-transport-dispose");
4
5
  function useRunManager(config) {
5
6
  const [isRunning, setIsRunning] = useState(false);
6
7
  const stateRef = useRef({
7
8
  pending: false,
9
+ disposed: false,
8
10
  abortController: null
9
11
  });
10
12
  const onRunRef = useLatestRef(config.onRun);
@@ -16,19 +18,22 @@ function useRunManager(config) {
16
18
  stateRef.current.pending = false;
17
19
  const ac = new AbortController();
18
20
  stateRef.current.abortController = ac;
21
+ const disposeAborted = () => ac.signal.reason === disposeReason;
19
22
  queueMicrotask(async () => {
20
23
  try {
21
- await onRunRef.current(ac.signal);
24
+ if (!disposeAborted()) await onRunRef.current(ac.signal);
22
25
  } catch (error) {
23
- stateRef.current.pending = false;
24
- if (ac.signal.aborted) onCancelRef.current?.();
25
- else await onErrorRef.current?.(error);
26
+ if (!disposeAborted() && !stateRef.current.disposed) {
27
+ stateRef.current.pending = false;
28
+ if (ac.signal.aborted) onCancelRef.current?.();
29
+ else await onErrorRef.current?.(error);
30
+ }
26
31
  } finally {
27
- onFinishRef.current?.();
28
- if (stateRef.current.pending) startRun();
32
+ if (!disposeAborted() && !stateRef.current.disposed) onFinishRef.current?.();
33
+ if (!stateRef.current.disposed && stateRef.current.pending) startRun();
29
34
  else {
30
35
  setIsRunning(false);
31
- stateRef.current.abortController = null;
36
+ if (stateRef.current.abortController === ac) stateRef.current.abortController = null;
32
37
  }
33
38
  }
34
39
  });
@@ -38,15 +43,25 @@ function useRunManager(config) {
38
43
  onErrorRef,
39
44
  onCancelRef
40
45
  ]);
46
+ const schedule = useCallback(() => {
47
+ if (stateRef.current.disposed) return;
48
+ if (stateRef.current.abortController) {
49
+ stateRef.current.pending = true;
50
+ return;
51
+ }
52
+ startRun();
53
+ }, [startRun]);
54
+ useEffect(() => {
55
+ stateRef.current.disposed = false;
56
+ return () => {
57
+ stateRef.current.disposed = true;
58
+ stateRef.current.pending = false;
59
+ stateRef.current.abortController?.abort(disposeReason);
60
+ };
61
+ }, []);
41
62
  return {
42
63
  isRunning,
43
- schedule: useCallback(() => {
44
- if (stateRef.current.abortController) {
45
- stateRef.current.pending = true;
46
- return;
47
- }
48
- startRun();
49
- }, [startRun]),
64
+ schedule,
50
65
  cancel: useCallback(() => {
51
66
  stateRef.current.pending = false;
52
67
  stateRef.current.abortController?.abort();
@@ -1 +1 @@
1
- {"version":3,"file":"runManager.js","names":["useCallback","useRef","useState","useLatestRef","RunManager","Readonly","isRunning","schedule","cancel","useRunManager","config","onRun","signal","AbortSignal","Promise","onFinish","onCancel","onError","error","Error","setIsRunning","stateRef","pending","abortController","AbortController","onRunRef","onFinishRef","onCancelRef","onErrorRef","startRun","current","ac","queueMicrotask","aborted","abort"],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/runManager.ts"],"sourcesContent":["import { useCallback, useRef, useState } from \"react\";\nimport { useLatestRef } from \"./useLatestRef\";\n\nexport type RunManager = Readonly<{\n isRunning: boolean;\n schedule: () => void;\n cancel: () => void;\n}>;\n\nexport function useRunManager(config: {\n onRun: (signal: AbortSignal) => Promise<void>;\n onFinish?: (() => void) | undefined;\n onCancel?: (() => void) | undefined;\n onError?: ((error: Error) => void | Promise<void>) | undefined;\n}): RunManager {\n const [isRunning, setIsRunning] = useState(false);\n const stateRef = useRef({\n pending: false,\n abortController: null as AbortController | null,\n });\n const onRunRef = useLatestRef(config.onRun);\n const onFinishRef = useLatestRef(config.onFinish);\n const onCancelRef = useLatestRef(config.onCancel);\n const onErrorRef = useLatestRef(config.onError);\n\n const startRun = useCallback(() => {\n setIsRunning(true);\n stateRef.current.pending = false;\n const ac = new AbortController();\n stateRef.current.abortController = ac;\n\n queueMicrotask(async () => {\n try {\n await onRunRef.current(ac.signal);\n } catch (error) {\n stateRef.current.pending = false;\n if (ac.signal.aborted) {\n onCancelRef.current?.();\n } else {\n await onErrorRef.current?.(error as Error);\n }\n } finally {\n onFinishRef.current?.();\n if (stateRef.current.pending) {\n startRun();\n } else {\n setIsRunning(false);\n stateRef.current.abortController = null;\n }\n }\n });\n }, [onRunRef, onFinishRef, onErrorRef, onCancelRef]);\n\n const schedule = useCallback(() => {\n if (stateRef.current.abortController) {\n // Coalesce multiple schedules while running into a single follow-up run.\n stateRef.current.pending = true;\n return;\n }\n startRun();\n }, [startRun]);\n\n const cancel = useCallback(() => {\n stateRef.current.pending = false;\n stateRef.current.abortController?.abort();\n }, []);\n\n return {\n isRunning,\n schedule,\n cancel,\n };\n}\n"],"mappings":";;;AASA,SAAgBS,cAAcC,QAKf;CACb,MAAM,CAACJ,WAAWc,gBAAgBlB,SAAS,KAAK;CAChD,MAAMmB,WAAWpB,OAAO;EACtBqB,SAAS;EACTC,iBAAiB;CACnB,CAAC;CACD,MAAME,WAAWtB,aAAaO,OAAOC,KAAK;CAC1C,MAAMe,cAAcvB,aAAaO,OAAOK,QAAQ;CAChD,MAAMY,cAAcxB,aAAaO,OAAOM,QAAQ;CAChD,MAAMY,aAAazB,aAAaO,OAAOO,OAAO;CAE9C,MAAMY,WAAW7B,kBAAkB;EACjCoB,aAAa,IAAI;EACjBC,SAASS,QAAQR,UAAU;EAC3B,MAAMS,KAAK,IAAIP,gBAAgB;EAC/BH,SAASS,QAAQP,kBAAkBQ;EAEnCC,eAAe,YAAY;GACzB,IAAI;IACF,MAAMP,SAASK,QAAQC,GAAGnB,MAAM;GAClC,SAASM,OAAO;IACdG,SAASS,QAAQR,UAAU;IAC3B,IAAIS,GAAGnB,OAAOqB,SACZN,YAAYG,UAAU;SAEtB,MAAMF,WAAWE,UAAUZ,KAAc;GAE7C,UAAU;IACRQ,YAAYI,UAAU;IACtB,IAAIT,SAASS,QAAQR,SACnBO,SAAS;SACJ;KACLT,aAAa,KAAK;KAClBC,SAASS,QAAQP,kBAAkB;IACrC;GACF;EACF,CAAC;CACH,GAAG;EAACE;EAAUC;EAAaE;EAAYD;CAAW,CAAC;CAgBnD,OAAO;EACLrB;EACAC,UAhBeP,kBAAkB;GACjC,IAAIqB,SAASS,QAAQP,iBAAiB;IAEpCF,SAASS,QAAQR,UAAU;IAC3B;GACF;GACAO,SAAS;EACX,GAAG,CAACA,QAAQ,CASVtB;EACAC,QARaR,kBAAkB;GAC/BqB,SAASS,QAAQR,UAAU;GAC3BD,SAASS,QAAQP,iBAAiBW,MAAM;EAC1C,GAAG,CAAA,CAKD1B;CACF;AACF"}
1
+ {"version":3,"file":"runManager.js","names":["useCallback","useEffect","useRef","useState","useLatestRef","RunManager","Readonly","isRunning","schedule","cancel","disposeReason","Symbol","useRunManager","config","onRun","signal","AbortSignal","Promise","onFinish","onCancel","onError","error","Error","setIsRunning","stateRef","pending","disposed","abortController","AbortController","onRunRef","onFinishRef","onCancelRef","onErrorRef","startRun","current","ac","disposeAborted","reason","queueMicrotask","aborted","abort"],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/runManager.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useLatestRef } from \"./useLatestRef\";\n\nexport type RunManager = Readonly<{\n isRunning: boolean;\n schedule: () => void;\n cancel: () => void;\n}>;\n\nconst disposeReason = Symbol(\"assistant-transport-dispose\");\n\nexport function useRunManager(config: {\n onRun: (signal: AbortSignal) => Promise<void>;\n onFinish?: (() => void) | undefined;\n onCancel?: (() => void) | undefined;\n onError?: ((error: Error) => void | Promise<void>) | undefined;\n}): RunManager {\n const [isRunning, setIsRunning] = useState(false);\n const stateRef = useRef({\n pending: false,\n disposed: false,\n abortController: null as AbortController | null,\n });\n const onRunRef = useLatestRef(config.onRun);\n const onFinishRef = useLatestRef(config.onFinish);\n const onCancelRef = useLatestRef(config.onCancel);\n const onErrorRef = useLatestRef(config.onError);\n\n const startRun = useCallback(() => {\n setIsRunning(true);\n stateRef.current.pending = false;\n const ac = new AbortController();\n stateRef.current.abortController = ac;\n\n // The dispose marker rides on the abort reason so a settling run detects\n // its own disposal even after an effect cycle re-arms the manager.\n const disposeAborted = () => ac.signal.reason === disposeReason;\n\n queueMicrotask(async () => {\n try {\n if (!disposeAborted()) {\n await onRunRef.current(ac.signal);\n }\n } catch (error) {\n if (!disposeAborted() && !stateRef.current.disposed) {\n stateRef.current.pending = false;\n if (ac.signal.aborted) {\n onCancelRef.current?.();\n } else {\n await onErrorRef.current?.(error as Error);\n }\n }\n } finally {\n if (!disposeAborted() && !stateRef.current.disposed) {\n onFinishRef.current?.();\n }\n if (!stateRef.current.disposed && stateRef.current.pending) {\n startRun();\n } else {\n setIsRunning(false);\n if (stateRef.current.abortController === ac) {\n stateRef.current.abortController = null;\n }\n }\n }\n });\n }, [onRunRef, onFinishRef, onErrorRef, onCancelRef]);\n\n const schedule = useCallback(() => {\n if (stateRef.current.disposed) return;\n if (stateRef.current.abortController) {\n // Coalesce multiple schedules while running into a single follow-up run.\n stateRef.current.pending = true;\n return;\n }\n startRun();\n }, [startRun]);\n\n // Strict-mode effects run setup / cleanup / setup on the same instance;\n // arming on setup undoes the cleanup's dispose.\n useEffect(() => {\n stateRef.current.disposed = false;\n return () => {\n stateRef.current.disposed = true;\n stateRef.current.pending = false;\n stateRef.current.abortController?.abort(disposeReason);\n };\n }, []);\n\n const cancel = useCallback(() => {\n stateRef.current.pending = false;\n stateRef.current.abortController?.abort();\n }, []);\n\n return {\n isRunning,\n schedule,\n cancel,\n };\n}\n"],"mappings":";;;AASA,MAAMU,gBAAgBC,OAAO,6BAA6B;AAE1D,SAAgBC,cAAcC,QAKf;CACb,MAAM,CAACN,WAAWgB,gBAAgBpB,SAAS,KAAK;CAChD,MAAMqB,WAAWtB,OAAO;EACtBuB,SAAS;EACTC,UAAU;EACVC,iBAAiB;CACnB,CAAC;CACD,MAAME,WAAWzB,aAAaS,OAAOC,KAAK;CAC1C,MAAMgB,cAAc1B,aAAaS,OAAOK,QAAQ;CAChD,MAAMa,cAAc3B,aAAaS,OAAOM,QAAQ;CAChD,MAAMa,aAAa5B,aAAaS,OAAOO,OAAO;CAE9C,MAAMa,WAAWjC,kBAAkB;EACjCuB,aAAa,IAAI;EACjBC,SAASU,QAAQT,UAAU;EAC3B,MAAMU,KAAK,IAAIP,gBAAgB;EAC/BJ,SAASU,QAAQP,kBAAkBQ;EAInC,MAAMC,uBAAuBD,GAAGpB,OAAOsB,WAAW3B;EAElD4B,eAAe,YAAY;GACzB,IAAI;IACF,IAAI,CAACF,eAAe,GAClB,MAAMP,SAASK,QAAQC,GAAGpB,MAAM;GAEpC,SAASM,OAAO;IACd,IAAI,CAACe,eAAe,KAAK,CAACZ,SAASU,QAAQR,UAAU;KACnDF,SAASU,QAAQT,UAAU;KAC3B,IAAIU,GAAGpB,OAAOwB,SACZR,YAAYG,UAAU;UAEtB,MAAMF,WAAWE,UAAUb,KAAc;IAE7C;GACF,UAAU;IACR,IAAI,CAACe,eAAe,KAAK,CAACZ,SAASU,QAAQR,UACzCI,YAAYI,UAAU;IAExB,IAAI,CAACV,SAASU,QAAQR,YAAYF,SAASU,QAAQT,SACjDQ,SAAS;SACJ;KACLV,aAAa,KAAK;KAClB,IAAIC,SAASU,QAAQP,oBAAoBQ,IACvCX,SAASU,QAAQP,kBAAkB;IAEvC;GACF;EACF,CAAC;CACH,GAAG;EAACE;EAAUC;EAAaE;EAAYD;CAAW,CAAC;CAEnD,MAAMvB,WAAWR,kBAAkB;EACjC,IAAIwB,SAASU,QAAQR,UAAU;EAC/B,IAAIF,SAASU,QAAQP,iBAAiB;GAEpCH,SAASU,QAAQT,UAAU;GAC3B;EACF;EACAQ,SAAS;CACX,GAAG,CAACA,QAAQ,CAAC;CAIbhC,gBAAgB;EACduB,SAASU,QAAQR,WAAW;EAC5B,aAAa;GACXF,SAASU,QAAQR,WAAW;GAC5BF,SAASU,QAAQT,UAAU;GAC3BD,SAASU,QAAQP,iBAAiBa,MAAM9B,aAAa;EACvD;CACF,GAAG,CAAA,CAAE;CAOL,OAAO;EACLH;EACAC;EACAC,QARaT,kBAAkB;GAC/BwB,SAASU,QAAQT,UAAU;GAC3BD,SAASU,QAAQP,iBAAiBa,MAAM;EAC1C,GAAG,CAAA,CAKD/B;CACF;AACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useAssistantTransportRuntime.d.ts","names":[],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts"],"mappings":";;;;cA8Fa,yCAGH,SAAS;iBAOH,8BAA8B;iBAC9B,2BAA2B,GACzC,WAAW,OAAO,sBAAsB,IACvC;;;;cA6QU,+BAAgC,GAC3C,SAAS,0BAA0B,OAClC"}
1
+ {"version":3,"file":"useAssistantTransportRuntime.d.ts","names":[],"sources":["../../../../src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts"],"mappings":";;;;cA8Fa,yCAGH,SAAS;iBAOH,8BAA8B;iBAC9B,2BAA2B,GACzC,WAAW,OAAO,sBAAsB,IACvC;;;;cA6RU,+BAAgC,GAC3C,SAAS,0BAA0B,OAClC"}