@assistant-ui/core 0.3.19 → 0.3.21

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 (934) hide show
  1. package/dist/adapters/attachment.d.ts +50 -43
  2. package/dist/adapters/attachment.d.ts.map +1 -1
  3. package/dist/adapters/attachment.js +52 -21
  4. package/dist/adapters/attachment.js.map +1 -1
  5. package/dist/adapters/directive-formatter.d.ts +2 -5
  6. package/dist/adapters/directive-formatter.d.ts.map +1 -1
  7. package/dist/adapters/feedback.d.ts +7 -8
  8. package/dist/adapters/feedback.d.ts.map +1 -1
  9. package/dist/adapters/index.d.ts +14 -9
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters/index.js +1 -1
  12. package/dist/adapters/speech.d.ts +63 -65
  13. package/dist/adapters/speech.d.ts.map +1 -1
  14. package/dist/adapters/speech.js +16 -2
  15. package/dist/adapters/speech.js.map +1 -1
  16. package/dist/adapters/suggestion.d.ts +19 -22
  17. package/dist/adapters/suggestion.d.ts.map +1 -1
  18. package/dist/adapters/thread-history.d.ts +60 -58
  19. package/dist/adapters/thread-history.d.ts.map +1 -1
  20. package/dist/adapters/trigger.d.ts +8 -11
  21. package/dist/adapters/trigger.d.ts.map +1 -1
  22. package/dist/adapters/voice.d.ts +50 -45
  23. package/dist/adapters/voice.d.ts.map +1 -1
  24. package/dist/adapters/voice.js +17 -3
  25. package/dist/adapters/voice.js.map +1 -1
  26. package/dist/index.d.ts +70 -56
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +6 -6
  29. package/dist/index.js.map +1 -1
  30. package/dist/internal/duplicate-detection.d.ts +1 -4
  31. package/dist/internal/duplicate-detection.d.ts.map +1 -1
  32. package/dist/internal.d.ts +27 -58
  33. package/dist/internal.d.ts.map +1 -0
  34. package/dist/internal.js +8 -6
  35. package/dist/model-context/frame/host.d.ts +20 -23
  36. package/dist/model-context/frame/host.d.ts.map +1 -1
  37. package/dist/model-context/frame/host.js +3 -1
  38. package/dist/model-context/frame/host.js.map +1 -1
  39. package/dist/model-context/frame/provider.d.ts +28 -30
  40. package/dist/model-context/frame/provider.d.ts.map +1 -1
  41. package/dist/model-context/frame/provider.js +6 -0
  42. package/dist/model-context/frame/provider.js.map +1 -1
  43. package/dist/model-context/frame/types.d.ts +24 -27
  44. package/dist/model-context/frame/types.d.ts.map +1 -1
  45. package/dist/model-context/frame/validate.d.ts +3 -0
  46. package/dist/model-context/frame/validate.d.ts.map +1 -0
  47. package/dist/model-context/frame/validate.js +26 -0
  48. package/dist/model-context/frame/validate.js.map +1 -0
  49. package/dist/model-context/interactable-composer-metadata.d.ts +51 -39
  50. package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -1
  51. package/dist/model-context/interactable-composer-metadata.js +30 -6
  52. package/dist/model-context/interactable-composer-metadata.js.map +1 -1
  53. package/dist/model-context/registry-handles.d.ts +9 -12
  54. package/dist/model-context/registry-handles.d.ts.map +1 -1
  55. package/dist/model-context/registry.d.ts +15 -18
  56. package/dist/model-context/registry.d.ts.map +1 -1
  57. package/dist/model-context/tool-call-text.d.ts +15 -17
  58. package/dist/model-context/tool-call-text.d.ts.map +1 -1
  59. package/dist/model-context/tool.d.ts +12 -14
  60. package/dist/model-context/tool.d.ts.map +1 -1
  61. package/dist/model-context/types.d.ts +40 -43
  62. package/dist/model-context/types.d.ts.map +1 -1
  63. package/dist/react/AssistantProvider.d.ts +9 -12
  64. package/dist/react/AssistantProvider.d.ts.map +1 -1
  65. package/dist/react/AssistantRuntimeProvider.d.ts +23 -26
  66. package/dist/react/AssistantRuntimeProvider.d.ts.map +1 -1
  67. package/dist/react/RuntimeAdapter.d.ts +4 -8
  68. package/dist/react/RuntimeAdapter.d.ts.map +1 -1
  69. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts +28 -23
  70. package/dist/react/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -1
  71. package/dist/react/adapters/LocalStorageThreadListAdapter.js +77 -58
  72. package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
  73. package/dist/react/adapters/TitleGenerationAdapter.d.ts +4 -7
  74. package/dist/react/adapters/TitleGenerationAdapter.d.ts.map +1 -1
  75. package/dist/react/client/AdaptedRemoteThread.d.ts +6 -9
  76. package/dist/react/client/AdaptedRemoteThread.d.ts.map +1 -1
  77. package/dist/react/client/DataRenderers.d.ts +2 -5
  78. package/dist/react/client/DataRenderers.d.ts.map +1 -1
  79. package/dist/react/client/InMemoryThreadList.d.ts +9 -12
  80. package/dist/react/client/InMemoryThreadList.d.ts.map +1 -1
  81. package/dist/react/client/Interactables.d.ts +3 -6
  82. package/dist/react/client/Interactables.d.ts.map +1 -1
  83. package/dist/react/client/Interactables.js +306 -101
  84. package/dist/react/client/Interactables.js.map +1 -1
  85. package/dist/react/client/RemoteThreadList.d.ts +34 -37
  86. package/dist/react/client/RemoteThreadList.d.ts.map +1 -1
  87. package/dist/react/client/RemoteThreadList.js +2 -1
  88. package/dist/react/client/RemoteThreadList.js.map +1 -1
  89. package/dist/react/client/Tools.d.ts +10 -12
  90. package/dist/react/client/Tools.d.ts.map +1 -1
  91. package/dist/react/client/Tools.js +4 -8
  92. package/dist/react/client/Tools.js.map +1 -1
  93. package/dist/react/client/interactable-model-context.d.ts +9 -11
  94. package/dist/react/client/interactable-model-context.d.ts.map +1 -1
  95. package/dist/react/client/interactable-model-context.js +32 -22
  96. package/dist/react/client/interactable-model-context.js.map +1 -1
  97. package/dist/react/index.d.ts +160 -122
  98. package/dist/react/index.d.ts.map +1 -0
  99. package/dist/react/index.js +5 -5
  100. package/dist/react/interactables-legacy/Interactables.d.ts +2 -5
  101. package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -1
  102. package/dist/react/interactables-legacy/Interactables.js +15 -8
  103. package/dist/react/interactables-legacy/Interactables.js.map +1 -1
  104. package/dist/react/interactables-legacy/interactable-model-context.d.ts +6 -9
  105. package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -1
  106. package/dist/react/interactables-legacy/interactable-model-context.js +13 -14
  107. package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -1
  108. package/dist/react/interactables-legacy/scopes.d.ts +42 -46
  109. package/dist/react/interactables-legacy/scopes.d.ts.map +1 -1
  110. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +8 -11
  111. package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -1
  112. package/dist/react/interactables-legacy/useInteractableState.d.ts +7 -9
  113. package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -1
  114. package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts +23 -14
  115. package/dist/react/interactables-shared/useInteractablePersistenceQueue.d.ts.map +1 -1
  116. package/dist/react/interactables-shared/useInteractablePersistenceQueue.js +54 -25
  117. package/dist/react/interactables-shared/useInteractablePersistenceQueue.js.map +1 -1
  118. package/dist/react/model-context/define-mcp-toolkit.d.ts +15 -18
  119. package/dist/react/model-context/define-mcp-toolkit.d.ts.map +1 -1
  120. package/dist/react/model-context/define-toolkit.d.ts +13 -6
  121. package/dist/react/model-context/define-toolkit.d.ts.map +1 -1
  122. package/dist/react/model-context/external-tool.d.ts +1 -4
  123. package/dist/react/model-context/external-tool.d.ts.map +1 -1
  124. package/dist/react/model-context/human-tool.d.ts +3 -6
  125. package/dist/react/model-context/human-tool.d.ts.map +1 -1
  126. package/dist/react/model-context/interactableTool.d.ts +26 -29
  127. package/dist/react/model-context/interactableTool.d.ts.map +1 -1
  128. package/dist/react/model-context/makeAssistantDataUI.d.ts +6 -9
  129. package/dist/react/model-context/makeAssistantDataUI.d.ts.map +1 -1
  130. package/dist/react/model-context/makeAssistantTool.d.ts +6 -9
  131. package/dist/react/model-context/makeAssistantTool.d.ts.map +1 -1
  132. package/dist/react/model-context/makeAssistantToolUI.d.ts +6 -9
  133. package/dist/react/model-context/makeAssistantToolUI.d.ts.map +1 -1
  134. package/dist/react/model-context/provider-tool.d.ts +5 -7
  135. package/dist/react/model-context/provider-tool.d.ts.map +1 -1
  136. package/dist/react/model-context/stub-tool.d.ts +1 -4
  137. package/dist/react/model-context/stub-tool.d.ts.map +1 -1
  138. package/dist/react/model-context/toolbox.d.ts +44 -32
  139. package/dist/react/model-context/toolbox.d.ts.map +1 -1
  140. package/dist/react/model-context/useAssistantContext.d.ts +3 -6
  141. package/dist/react/model-context/useAssistantContext.d.ts.map +1 -1
  142. package/dist/react/model-context/useAssistantDataUI.d.ts +7 -10
  143. package/dist/react/model-context/useAssistantDataUI.d.ts.map +1 -1
  144. package/dist/react/model-context/useAssistantInstructions.d.ts +3 -6
  145. package/dist/react/model-context/useAssistantInstructions.d.ts.map +1 -1
  146. package/dist/react/model-context/useAssistantTool.d.ts +9 -13
  147. package/dist/react/model-context/useAssistantTool.d.ts.map +1 -1
  148. package/dist/react/model-context/useAssistantToolUI.d.ts +13 -16
  149. package/dist/react/model-context/useAssistantToolUI.d.ts.map +1 -1
  150. package/dist/react/model-context/useAuiToolOverrides.d.ts +3 -5
  151. package/dist/react/model-context/useAuiToolOverrides.d.ts.map +1 -1
  152. package/dist/react/model-context/useInlineRender.d.ts +3 -6
  153. package/dist/react/model-context/useInlineRender.d.ts.map +1 -1
  154. package/dist/react/model-context/useInteractable.d.ts +40 -40
  155. package/dist/react/model-context/useInteractable.d.ts.map +1 -1
  156. package/dist/react/model-context/useInteractableState.d.ts +10 -9
  157. package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
  158. package/dist/react/model-context/useInteractableVersions.d.ts +4 -7
  159. package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -1
  160. package/dist/react/model-context/useToolArgsStatus.d.ts +7 -9
  161. package/dist/react/model-context/useToolArgsStatus.d.ts.map +1 -1
  162. package/dist/react/primitive-hooks/useActionBarCopy.d.ts +7 -10
  163. package/dist/react/primitive-hooks/useActionBarCopy.d.ts.map +1 -1
  164. package/dist/react/primitive-hooks/useActionBarEdit.d.ts +3 -6
  165. package/dist/react/primitive-hooks/useActionBarEdit.d.ts.map +1 -1
  166. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts +6 -9
  167. package/dist/react/primitive-hooks/useActionBarFeedback.d.ts.map +1 -1
  168. package/dist/react/primitive-hooks/useActionBarReload.d.ts +3 -6
  169. package/dist/react/primitive-hooks/useActionBarReload.d.ts.map +1 -1
  170. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts +3 -6
  171. package/dist/react/primitive-hooks/useActionBarSpeak.d.ts.map +1 -1
  172. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts +3 -6
  173. package/dist/react/primitive-hooks/useActionBarStopSpeaking.d.ts.map +1 -1
  174. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts +3 -6
  175. package/dist/react/primitive-hooks/useBranchPickerNext.d.ts.map +1 -1
  176. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts +3 -6
  177. package/dist/react/primitive-hooks/useBranchPickerPrevious.d.ts.map +1 -1
  178. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts +4 -7
  179. package/dist/react/primitive-hooks/useComposerAddAttachment.d.ts.map +1 -1
  180. package/dist/react/primitive-hooks/useComposerCancel.d.ts +3 -6
  181. package/dist/react/primitive-hooks/useComposerCancel.d.ts.map +1 -1
  182. package/dist/react/primitive-hooks/useComposerDictate.d.ts +3 -6
  183. package/dist/react/primitive-hooks/useComposerDictate.d.ts.map +1 -1
  184. package/dist/react/primitive-hooks/useComposerSend.d.ts +4 -7
  185. package/dist/react/primitive-hooks/useComposerSend.d.ts.map +1 -1
  186. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts +2 -5
  187. package/dist/react/primitive-hooks/useEditComposerCancel.d.ts.map +1 -1
  188. package/dist/react/primitive-hooks/useEditComposerSend.d.ts +3 -6
  189. package/dist/react/primitive-hooks/useEditComposerSend.d.ts.map +1 -1
  190. package/dist/react/primitive-hooks/useMessageBranching.d.ts +5 -8
  191. package/dist/react/primitive-hooks/useMessageBranching.d.ts.map +1 -1
  192. package/dist/react/primitive-hooks/useMessageError.d.ts +1 -4
  193. package/dist/react/primitive-hooks/useMessageError.d.ts.map +1 -1
  194. package/dist/react/primitive-hooks/useMessageReload.d.ts +3 -6
  195. package/dist/react/primitive-hooks/useMessageReload.d.ts.map +1 -1
  196. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts +7 -10
  197. package/dist/react/primitive-hooks/useSuggestionTrigger.d.ts.map +1 -1
  198. package/dist/react/primitive-hooks/useSuggestionTrigger.js +4 -4
  199. package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
  200. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts +1 -4
  201. package/dist/react/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -1
  202. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts +1 -4
  203. package/dist/react/primitive-hooks/useThreadIsRunning.d.ts.map +1 -1
  204. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts +2 -5
  205. package/dist/react/primitive-hooks/useThreadListItemArchive.d.ts.map +1 -1
  206. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts +2 -5
  207. package/dist/react/primitive-hooks/useThreadListItemDelete.d.ts.map +1 -1
  208. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts +2 -5
  209. package/dist/react/primitive-hooks/useThreadListItemTrigger.d.ts.map +1 -1
  210. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts +2 -5
  211. package/dist/react/primitive-hooks/useThreadListItemUnarchive.d.ts.map +1 -1
  212. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts +3 -6
  213. package/dist/react/primitive-hooks/useThreadListLoadMore.d.ts.map +1 -1
  214. package/dist/react/primitive-hooks/useThreadListNew.d.ts +2 -5
  215. package/dist/react/primitive-hooks/useThreadListNew.d.ts.map +1 -1
  216. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +1 -4
  217. package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -1
  218. package/dist/react/primitive-hooks/useThreadMessages.d.ts +2 -5
  219. package/dist/react/primitive-hooks/useThreadMessages.d.ts.map +1 -1
  220. package/dist/react/primitive-hooks/useVoice.d.ts +8 -11
  221. package/dist/react/primitive-hooks/useVoice.d.ts.map +1 -1
  222. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts +27 -29
  223. package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.d.ts.map +1 -1
  224. package/dist/react/primitives/composer/ComposerAttachments.d.ts +26 -28
  225. package/dist/react/primitives/composer/ComposerAttachments.d.ts.map +1 -1
  226. package/dist/react/primitives/composer/ComposerIf.d.ts +13 -13
  227. package/dist/react/primitives/composer/ComposerIf.d.ts.map +1 -1
  228. package/dist/react/primitives/composer/ComposerQueue.d.ts +13 -17
  229. package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
  230. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts +30 -33
  231. package/dist/react/primitives/generativeUI/GenerativeUI.d.ts.map +1 -1
  232. package/dist/react/primitives/generativeUI/GenerativeUI.js +42 -33
  233. package/dist/react/primitives/generativeUI/GenerativeUI.js.map +1 -1
  234. package/dist/react/primitives/message/MessageAttachments.d.ts +30 -28
  235. package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
  236. package/dist/react/primitives/message/MessageAttachments.js +14 -15
  237. package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
  238. package/dist/react/primitives/message/MessageGroupedParts.d.ts +122 -120
  239. package/dist/react/primitives/message/MessageGroupedParts.d.ts.map +1 -1
  240. package/dist/react/primitives/message/MessageGroupedParts.js +3 -3
  241. package/dist/react/primitives/message/MessageGroupedParts.js.map +1 -1
  242. package/dist/react/primitives/message/MessageParts.d.ts +208 -194
  243. package/dist/react/primitives/message/MessageParts.d.ts.map +1 -1
  244. package/dist/react/primitives/message/MessageParts.js +124 -82
  245. package/dist/react/primitives/message/MessageParts.js.map +1 -1
  246. package/dist/react/primitives/message/MessageQuote.d.ts +8 -11
  247. package/dist/react/primitives/message/MessageQuote.d.ts.map +1 -1
  248. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts +4 -7
  249. package/dist/react/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
  250. package/dist/react/primitives/part/PartMessages.d.ts +16 -19
  251. package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
  252. package/dist/react/primitives/thread/ThreadMessages.d.ts +61 -64
  253. package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
  254. package/dist/react/primitives/thread/ThreadSuggestions.d.ts +25 -27
  255. package/dist/react/primitives/thread/ThreadSuggestions.d.ts.map +1 -1
  256. package/dist/react/primitives/thread/ThreadSuggestions.js +24 -5
  257. package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
  258. package/dist/react/primitives/threadList/ThreadListItems.d.ts +26 -28
  259. package/dist/react/primitives/threadList/ThreadListItems.d.ts.map +1 -1
  260. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts +6 -9
  261. package/dist/react/primitives/threadListItem/ThreadListItemTitle.d.ts.map +1 -1
  262. package/dist/react/providers/AttachmentByIndexProvider.d.ts +5 -8
  263. package/dist/react/providers/AttachmentByIndexProvider.d.ts.map +1 -1
  264. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts +4 -7
  265. package/dist/react/providers/ChainOfThoughtByIndicesProvider.d.ts.map +1 -1
  266. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts +3 -6
  267. package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
  268. package/dist/react/providers/MessageByIdProvider.d.ts +3 -6
  269. package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -1
  270. package/dist/react/providers/MessageByIndexProvider.d.ts +3 -6
  271. package/dist/react/providers/MessageByIndexProvider.d.ts.map +1 -1
  272. package/dist/react/providers/PartByIndexProvider.d.ts +3 -6
  273. package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
  274. package/dist/react/providers/QueueItemByIndexProvider.d.ts +4 -7
  275. package/dist/react/providers/QueueItemByIndexProvider.d.ts.map +1 -1
  276. package/dist/react/providers/ReadonlyThreadProvider.d.ts +7 -10
  277. package/dist/react/providers/ReadonlyThreadProvider.d.ts.map +1 -1
  278. package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
  279. package/dist/react/providers/SuggestionByIndexProvider.d.ts +4 -7
  280. package/dist/react/providers/SuggestionByIndexProvider.d.ts.map +1 -1
  281. package/dist/react/providers/TextMessagePartProvider.d.ts +4 -7
  282. package/dist/react/providers/TextMessagePartProvider.d.ts.map +1 -1
  283. package/dist/react/providers/TextMessagePartProvider.js +5 -1
  284. package/dist/react/providers/TextMessagePartProvider.js.map +1 -1
  285. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts +4 -7
  286. package/dist/react/providers/ThreadListItemByIndexProvider.d.ts.map +1 -1
  287. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts +4 -8
  288. package/dist/react/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -1
  289. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts +210 -219
  290. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
  291. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +70 -46
  292. package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
  293. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +186 -198
  294. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
  295. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +13 -4
  296. package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
  297. package/dist/react/runtimes/RemoteThreadResource.d.ts +17 -23
  298. package/dist/react/runtimes/RemoteThreadResource.d.ts.map +1 -1
  299. package/dist/react/runtimes/RemoteThreadResource.js +3 -1
  300. package/dist/react/runtimes/RemoteThreadResource.js.map +1 -1
  301. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts +10 -11
  302. package/dist/react/runtimes/RuntimeAdapterProvider.d.ts.map +1 -1
  303. package/dist/react/runtimes/assistant-transport/commandQueue.d.ts +11 -14
  304. package/dist/react/runtimes/assistant-transport/commandQueue.d.ts.map +1 -1
  305. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts +6 -8
  306. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.d.ts.map +1 -1
  307. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js +9 -2
  308. package/dist/react/runtimes/assistant-transport/replayBoundaryStream.js.map +1 -1
  309. package/dist/react/runtimes/assistant-transport/runManager.d.ts +9 -12
  310. package/dist/react/runtimes/assistant-transport/runManager.d.ts.map +1 -1
  311. package/dist/react/runtimes/assistant-transport/runManager.js +4 -1
  312. package/dist/react/runtimes/assistant-transport/runManager.js.map +1 -1
  313. package/dist/react/runtimes/assistant-transport/types.d.ts +123 -118
  314. package/dist/react/runtimes/assistant-transport/types.d.ts.map +1 -1
  315. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts +7 -10
  316. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
  317. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js +17 -6
  318. package/dist/react/runtimes/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
  319. package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts +3 -6
  320. package/dist/react/runtimes/assistant-transport/useConvertedState.d.ts.map +1 -1
  321. package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts +2 -5
  322. package/dist/react/runtimes/assistant-transport/useLatestRef.d.ts.map +1 -1
  323. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts +7 -10
  324. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
  325. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +426 -216
  326. package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
  327. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts +15 -18
  328. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.d.ts.map +1 -1
  329. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js +8 -4
  330. package/dist/react/runtimes/cloud/CloudFileAttachmentAdapter.js.map +1 -1
  331. package/dist/react/runtimes/cloud/auiV0.d.ts +146 -125
  332. package/dist/react/runtimes/cloud/auiV0.d.ts.map +1 -1
  333. package/dist/react/runtimes/cloud/auiV0.js +120 -8
  334. package/dist/react/runtimes/cloud/auiV0.js.map +1 -1
  335. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts +13 -15
  336. package/dist/react/runtimes/cloud/createCloudThreadListAdapter.d.ts.map +1 -1
  337. package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts +5 -7
  338. package/dist/react/runtimes/cloud/createCloudThreadListAdapterCreateFallback.d.ts.map +1 -1
  339. package/dist/react/runtimes/cloud/sdkIdentity.d.ts +2 -5
  340. package/dist/react/runtimes/cloud/sdkIdentity.d.ts.map +1 -1
  341. package/dist/react/runtimes/cloud/sdkIdentity.js +1 -1
  342. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts +3 -6
  343. package/dist/react/runtimes/cloud/useCloudThreadListAdapter.d.ts.map +1 -1
  344. package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts +9 -11
  345. package/dist/react/runtimes/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
  346. package/dist/react/runtimes/createMessageConverter.d.ts +15 -19
  347. package/dist/react/runtimes/createMessageConverter.d.ts.map +1 -1
  348. package/dist/react/runtimes/createMessageConverter.js.map +1 -1
  349. package/dist/react/runtimes/createRuntimeExtras.d.ts +14 -17
  350. package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -1
  351. package/dist/react/runtimes/external-message-converter.d.ts +17 -21
  352. package/dist/react/runtimes/external-message-converter.d.ts.map +1 -1
  353. package/dist/react/runtimes/external-store-history-copy.d.ts +25 -0
  354. package/dist/react/runtimes/external-store-history-copy.d.ts.map +1 -0
  355. package/dist/react/runtimes/external-store-history-copy.js +148 -0
  356. package/dist/react/runtimes/external-store-history-copy.js.map +1 -0
  357. package/dist/react/runtimes/useExternalStoreRuntime.d.ts +3 -6
  358. package/dist/react/runtimes/useExternalStoreRuntime.d.ts.map +1 -1
  359. package/dist/react/runtimes/useExternalStoreRuntime.js +72 -35
  360. package/dist/react/runtimes/useExternalStoreRuntime.js.map +1 -1
  361. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts +2 -5
  362. package/dist/react/runtimes/useExternalStoreSharedOptions.d.ts.map +1 -1
  363. package/dist/react/runtimes/useLocalRuntime.d.ts +29 -41
  364. package/dist/react/runtimes/useLocalRuntime.d.ts.map +1 -1
  365. package/dist/react/runtimes/useLocalRuntime.js +142 -34
  366. package/dist/react/runtimes/useLocalRuntime.js.map +1 -1
  367. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts +3 -6
  368. package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
  369. package/dist/react/runtimes/useRemoteThreadListRuntime.js +2 -2
  370. package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
  371. package/dist/react/runtimes/useRuntimeAdapters.d.ts +5 -7
  372. package/dist/react/runtimes/useRuntimeAdapters.d.ts.map +1 -1
  373. package/dist/react/runtimes/useStreamingTiming.d.ts +4 -6
  374. package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -1
  375. package/dist/react/types/MessagePartComponentTypes.d.ts +72 -70
  376. package/dist/react/types/MessagePartComponentTypes.d.ts.map +1 -1
  377. package/dist/react/types/scopes/dataRenderers.d.ts +11 -15
  378. package/dist/react/types/scopes/dataRenderers.d.ts.map +1 -1
  379. package/dist/react/types/scopes/interactables.d.ts +60 -60
  380. package/dist/react/types/scopes/interactables.d.ts.map +1 -1
  381. package/dist/react/types/scopes/tools.d.ts +21 -24
  382. package/dist/react/types/scopes/tools.d.ts.map +1 -1
  383. package/dist/react/types/store-augmentation.d.ts +10 -11
  384. package/dist/react/types/store-augmentation.d.ts.map +1 -1
  385. package/dist/react/utils/getMessageQuote.d.ts +6 -8
  386. package/dist/react/utils/getMessageQuote.d.ts.map +1 -1
  387. package/dist/react/utils/groupParts.d.ts +35 -37
  388. package/dist/react/utils/groupParts.d.ts.map +1 -1
  389. package/dist/react/utils/useJSONEqual.d.ts +3 -6
  390. package/dist/react/utils/useJSONEqual.d.ts.map +1 -1
  391. package/dist/react/utils/useJSONSchemaDependency.d.ts +3 -6
  392. package/dist/react/utils/useJSONSchemaDependency.d.ts.map +1 -1
  393. package/dist/runtime/api/assistant-runtime.d.ts +28 -31
  394. package/dist/runtime/api/assistant-runtime.d.ts.map +1 -1
  395. package/dist/runtime/api/attachment-runtime.d.ts +51 -49
  396. package/dist/runtime/api/attachment-runtime.d.ts.map +1 -1
  397. package/dist/runtime/api/attachment-runtime.js.map +1 -1
  398. package/dist/runtime/api/bindings.d.ts +35 -35
  399. package/dist/runtime/api/bindings.d.ts.map +1 -1
  400. package/dist/runtime/api/composer-runtime.d.ts +215 -201
  401. package/dist/runtime/api/composer-runtime.d.ts.map +1 -1
  402. package/dist/runtime/api/composer-runtime.js +4 -0
  403. package/dist/runtime/api/composer-runtime.js.map +1 -1
  404. package/dist/runtime/api/message-part-runtime.d.ts +31 -30
  405. package/dist/runtime/api/message-part-runtime.d.ts.map +1 -1
  406. package/dist/runtime/api/message-part-runtime.js +25 -2
  407. package/dist/runtime/api/message-part-runtime.js.map +1 -1
  408. package/dist/runtime/api/message-runtime.d.ts +87 -82
  409. package/dist/runtime/api/message-runtime.d.ts.map +1 -1
  410. package/dist/runtime/api/message-runtime.js +4 -3
  411. package/dist/runtime/api/message-runtime.js.map +1 -1
  412. package/dist/runtime/api/paths.d.ts +54 -57
  413. package/dist/runtime/api/paths.d.ts.map +1 -1
  414. package/dist/runtime/api/thread-list-item-runtime.d.ts +70 -72
  415. package/dist/runtime/api/thread-list-item-runtime.d.ts.map +1 -1
  416. package/dist/runtime/api/thread-list-item-runtime.js.map +1 -1
  417. package/dist/runtime/api/thread-list-runtime.d.ts +77 -81
  418. package/dist/runtime/api/thread-list-runtime.d.ts.map +1 -1
  419. package/dist/runtime/api/thread-list-runtime.js.map +1 -1
  420. package/dist/runtime/api/thread-runtime.d.ts +306 -308
  421. package/dist/runtime/api/thread-runtime.d.ts.map +1 -1
  422. package/dist/runtime/api/thread-runtime.js +2 -1
  423. package/dist/runtime/api/thread-runtime.js.map +1 -1
  424. package/dist/runtime/base/base-assistant-runtime-core.d.ts +9 -12
  425. package/dist/runtime/base/base-assistant-runtime-core.d.ts.map +1 -1
  426. package/dist/runtime/base/base-composer-runtime-core.d.ts +150 -101
  427. package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
  428. package/dist/runtime/base/base-composer-runtime-core.js +400 -122
  429. package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
  430. package/dist/runtime/base/base-thread-runtime-core.d.ts +121 -104
  431. package/dist/runtime/base/base-thread-runtime-core.d.ts.map +1 -1
  432. package/dist/runtime/base/base-thread-runtime-core.js +174 -62
  433. package/dist/runtime/base/base-thread-runtime-core.js.map +1 -1
  434. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts +30 -31
  435. package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
  436. package/dist/runtime/base/default-edit-composer-runtime-core.js +21 -2
  437. package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
  438. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts +28 -31
  439. package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
  440. package/dist/runtime/base/default-thread-composer-runtime-core.js +23 -2
  441. package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
  442. package/dist/runtime/branch/external-thread-branch-adapter.d.ts +15 -18
  443. package/dist/runtime/branch/external-thread-branch-adapter.d.ts.map +1 -1
  444. package/dist/runtime/interfaces/assistant-runtime-core.d.ts +8 -11
  445. package/dist/runtime/interfaces/assistant-runtime-core.d.ts.map +1 -1
  446. package/dist/runtime/interfaces/composer-runtime-core.d.ts +98 -83
  447. package/dist/runtime/interfaces/composer-runtime-core.d.ts.map +1 -1
  448. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts +67 -70
  449. package/dist/runtime/interfaces/thread-list-runtime-core.d.ts.map +1 -1
  450. package/dist/runtime/interfaces/thread-runtime-core.d.ts +225 -211
  451. package/dist/runtime/interfaces/thread-runtime-core.d.ts.map +1 -1
  452. package/dist/runtime/internal.d.ts +25 -20
  453. package/dist/runtime/internal.d.ts.map +1 -0
  454. package/dist/runtime/queue/external-thread-queue-adapter.d.ts +37 -40
  455. package/dist/runtime/queue/external-thread-queue-adapter.d.ts.map +1 -1
  456. package/dist/runtime/queue/message-queue.d.ts +32 -33
  457. package/dist/runtime/queue/message-queue.d.ts.map +1 -1
  458. package/dist/runtime/queue/message-queue.js +10 -2
  459. package/dist/runtime/queue/message-queue.js.map +1 -1
  460. package/dist/runtime/queue/queue-item.d.ts +7 -10
  461. package/dist/runtime/queue/queue-item.d.ts.map +1 -1
  462. package/dist/runtime/utils/abortable-thread-load.d.ts +9 -11
  463. package/dist/runtime/utils/abortable-thread-load.d.ts.map +1 -1
  464. package/dist/runtime/utils/attachment-add-operations.d.ts +16 -15
  465. package/dist/runtime/utils/attachment-add-operations.d.ts.map +1 -1
  466. package/dist/runtime/utils/attachment-add-operations.js +24 -2
  467. package/dist/runtime/utils/attachment-add-operations.js.map +1 -1
  468. package/dist/runtime/utils/attachment-send-operations.d.ts +12 -0
  469. package/dist/runtime/utils/attachment-send-operations.d.ts.map +1 -0
  470. package/dist/runtime/utils/attachment-send-operations.js +34 -0
  471. package/dist/runtime/utils/attachment-send-operations.js.map +1 -0
  472. package/dist/runtime/utils/auto-status.d.ts +11 -13
  473. package/dist/runtime/utils/auto-status.d.ts.map +1 -1
  474. package/dist/runtime/utils/auto-status.js +3 -5
  475. package/dist/runtime/utils/auto-status.js.map +1 -1
  476. package/dist/runtime/utils/chat-model-adapter.d.ts +31 -33
  477. package/dist/runtime/utils/chat-model-adapter.d.ts.map +1 -1
  478. package/dist/runtime/utils/external-message-conversion.d.ts +47 -48
  479. package/dist/runtime/utils/external-message-conversion.d.ts.map +1 -1
  480. package/dist/runtime/utils/external-message-conversion.js +6 -5
  481. package/dist/runtime/utils/external-message-conversion.js.map +1 -1
  482. package/dist/runtime/utils/external-store-message.d.ts +6 -9
  483. package/dist/runtime/utils/external-store-message.d.ts.map +1 -1
  484. package/dist/runtime/utils/message-repository-session.d.ts +24 -27
  485. package/dist/runtime/utils/message-repository-session.d.ts.map +1 -1
  486. package/dist/runtime/utils/message-repository.d.ts +52 -54
  487. package/dist/runtime/utils/message-repository.d.ts.map +1 -1
  488. package/dist/runtime/utils/message-repository.js +8 -7
  489. package/dist/runtime/utils/message-repository.js.map +1 -1
  490. package/dist/runtime/utils/pending-tool-calls.d.ts +12 -14
  491. package/dist/runtime/utils/pending-tool-calls.d.ts.map +1 -1
  492. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts +7 -10
  493. package/dist/runtime/utils/resolveToolApprovalResponse.d.ts.map +1 -1
  494. package/dist/runtime/utils/runtime-extras-brand.d.ts +6 -9
  495. package/dist/runtime/utils/runtime-extras-brand.d.ts.map +1 -1
  496. package/dist/runtime/utils/stored-message-parts.d.ts +21 -0
  497. package/dist/runtime/utils/stored-message-parts.d.ts.map +1 -0
  498. package/dist/runtime/utils/stored-message-parts.js +103 -0
  499. package/dist/runtime/utils/stored-message-parts.js.map +1 -0
  500. package/dist/runtime/utils/streaming-timing.d.ts +23 -26
  501. package/dist/runtime/utils/streaming-timing.d.ts.map +1 -1
  502. package/dist/runtime/utils/thread-message-like.d.ts +38 -34
  503. package/dist/runtime/utils/thread-message-like.d.ts.map +1 -1
  504. package/dist/runtime/utils/thread-message-like.js +16 -6
  505. package/dist/runtime/utils/thread-message-like.js.map +1 -1
  506. package/dist/runtime/utils/thread-runtime-lifecycle.d.ts +5 -7
  507. package/dist/runtime/utils/thread-runtime-lifecycle.d.ts.map +1 -1
  508. package/dist/runtime/utils/thread-runtime-lifecycle.js +31 -4
  509. package/dist/runtime/utils/thread-runtime-lifecycle.js.map +1 -1
  510. package/dist/runtime/utils/tool-call-tree.d.ts +10 -13
  511. package/dist/runtime/utils/tool-call-tree.d.ts.map +1 -1
  512. package/dist/runtime/utils/tool-interactions.d.ts +10 -0
  513. package/dist/runtime/utils/tool-interactions.d.ts.map +1 -0
  514. package/dist/runtime/utils/tool-interactions.js +92 -0
  515. package/dist/runtime/utils/tool-interactions.js.map +1 -0
  516. package/dist/runtimes/assistant-transport/utils.d.ts +1 -4
  517. package/dist/runtimes/assistant-transport/utils.d.ts.map +1 -1
  518. package/dist/runtimes/external-store/external-store-adapter.d.ts +220 -200
  519. package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
  520. package/dist/runtimes/external-store/external-store-runtime-core.d.ts +6 -8
  521. package/dist/runtimes/external-store/external-store-runtime-core.d.ts.map +1 -1
  522. package/dist/runtimes/external-store/external-store-runtime-core.js +4 -1
  523. package/dist/runtimes/external-store/external-store-runtime-core.js.map +1 -1
  524. package/dist/runtimes/external-store/external-store-shared-options.d.ts +3 -6
  525. package/dist/runtimes/external-store/external-store-shared-options.d.ts.map +1 -1
  526. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts +40 -43
  527. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.d.ts.map +1 -1
  528. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js +2 -2
  529. package/dist/runtimes/external-store/external-store-thread-list-runtime-core.js.map +1 -1
  530. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +119 -125
  531. package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
  532. package/dist/runtimes/external-store/external-store-thread-runtime-core.js +71 -18
  533. package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
  534. package/dist/runtimes/external-store/thread-message-converter.d.ts +5 -8
  535. package/dist/runtimes/external-store/thread-message-converter.d.ts.map +1 -1
  536. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts +96 -98
  537. package/dist/runtimes/inert/InertThreadRuntimeCore.d.ts.map +1 -1
  538. package/dist/runtimes/inert/InertThreadRuntimeCore.js +3 -0
  539. package/dist/runtimes/inert/InertThreadRuntimeCore.js.map +1 -1
  540. package/dist/runtimes/internal.d.ts +20 -16
  541. package/dist/runtimes/internal.d.ts.map +1 -0
  542. package/dist/runtimes/local/local-runtime-core.d.ts +7 -10
  543. package/dist/runtimes/local/local-runtime-core.d.ts.map +1 -1
  544. package/dist/runtimes/local/local-runtime-options.d.ts +41 -44
  545. package/dist/runtimes/local/local-runtime-options.d.ts.map +1 -1
  546. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts +42 -45
  547. package/dist/runtimes/local/local-thread-list-runtime-core.d.ts.map +1 -1
  548. package/dist/runtimes/local/local-thread-runtime-core.d.ts +94 -93
  549. package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
  550. package/dist/runtimes/local/local-thread-runtime-core.js +220 -29
  551. package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
  552. package/dist/runtimes/local/should-continue.d.ts +2 -5
  553. package/dist/runtimes/local/should-continue.d.ts.map +1 -1
  554. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts +77 -55
  555. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.d.ts.map +1 -1
  556. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js +28 -1
  557. package/dist/runtimes/readonly/ReadonlyThreadRuntimeCore.js.map +1 -1
  558. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts +12 -15
  559. package/dist/runtimes/remote-thread-list/adapter/in-memory.d.ts.map +1 -1
  560. package/dist/runtimes/remote-thread-list/adapter-changed.d.ts +3 -6
  561. package/dist/runtimes/remote-thread-list/adapter-changed.d.ts.map +1 -1
  562. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts +2 -5
  563. package/dist/runtimes/remote-thread-list/empty-thread-core.d.ts.map +1 -1
  564. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts +34 -31
  565. package/dist/runtimes/remote-thread-list/optimistic-state.d.ts.map +1 -1
  566. package/dist/runtimes/remote-thread-list/optimistic-state.js +8 -3
  567. package/dist/runtimes/remote-thread-list/optimistic-state.js.map +1 -1
  568. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts +60 -63
  569. package/dist/runtimes/remote-thread-list/remote-thread-state.d.ts.map +1 -1
  570. package/dist/runtimes/remote-thread-list/remote-thread-state.js +1 -1
  571. package/dist/runtimes/remote-thread-list/title-generation.d.ts +31 -33
  572. package/dist/runtimes/remote-thread-list/title-generation.d.ts.map +1 -1
  573. package/dist/runtimes/remote-thread-list/title.d.ts +5 -8
  574. package/dist/runtimes/remote-thread-list/title.d.ts.map +1 -1
  575. package/dist/runtimes/remote-thread-list/types.d.ts +119 -121
  576. package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
  577. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts +147 -149
  578. package/dist/runtimes/tool-invocations/ToolInvocationTracker.d.ts.map +1 -1
  579. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js +22 -7
  580. package/dist/runtimes/tool-invocations/ToolInvocationTracker.js.map +1 -1
  581. package/dist/store/clients/chain-of-thought-client.d.ts +8 -11
  582. package/dist/store/clients/chain-of-thought-client.d.ts.map +1 -1
  583. package/dist/store/clients/external-thread.d.ts +56 -58
  584. package/dist/store/clients/external-thread.d.ts.map +1 -1
  585. package/dist/store/clients/external-thread.js +1270 -741
  586. package/dist/store/clients/external-thread.js.map +1 -1
  587. package/dist/store/clients/model-context-client.d.ts +2 -5
  588. package/dist/store/clients/model-context-client.d.ts.map +1 -1
  589. package/dist/store/clients/no-op-composer-client.d.ts +3 -6
  590. package/dist/store/clients/no-op-composer-client.d.ts.map +1 -1
  591. package/dist/store/clients/no-op-composer-client.js +3 -1
  592. package/dist/store/clients/no-op-composer-client.js.map +1 -1
  593. package/dist/store/clients/runtime-adapter.d.ts +2 -5
  594. package/dist/store/clients/runtime-adapter.d.ts.map +1 -1
  595. package/dist/store/clients/single-thread-list.d.ts +4 -6
  596. package/dist/store/clients/single-thread-list.d.ts.map +1 -1
  597. package/dist/store/clients/submission-message.d.ts +8 -0
  598. package/dist/store/clients/submission-message.d.ts.map +1 -0
  599. package/dist/store/clients/submission-message.js +22 -0
  600. package/dist/store/clients/submission-message.js.map +1 -0
  601. package/dist/store/clients/suggestions.d.ts +8 -11
  602. package/dist/store/clients/suggestions.d.ts.map +1 -1
  603. package/dist/store/clients/thread-message-client.d.ts +12 -12
  604. package/dist/store/clients/thread-message-client.d.ts.map +1 -1
  605. package/dist/store/clients/thread-message-client.js +81 -82
  606. package/dist/store/clients/thread-message-client.js.map +1 -1
  607. package/dist/store/clients/thread-selection-events.d.ts +1 -4
  608. package/dist/store/clients/thread-selection-events.d.ts.map +1 -1
  609. package/dist/store/clients/thread-tasks.d.ts +7 -10
  610. package/dist/store/clients/thread-tasks.d.ts.map +1 -1
  611. package/dist/store/env.d.ts +1 -4
  612. package/dist/store/env.d.ts.map +1 -1
  613. package/dist/store/index.d.ts +33 -36
  614. package/dist/store/index.d.ts.map +1 -0
  615. package/dist/store/index.js +5 -5
  616. package/dist/store/internal.d.ts +12 -12
  617. package/dist/store/internal.d.ts.map +1 -0
  618. package/dist/store/internal.js +2 -2
  619. package/dist/store/primitive-predicates.d.ts +14 -16
  620. package/dist/store/primitive-predicates.d.ts.map +1 -1
  621. package/dist/store/primitive-predicates.js +10 -5
  622. package/dist/store/primitive-predicates.js.map +1 -1
  623. package/dist/store/runtime-clients/attachment-runtime-client.d.ts +4 -7
  624. package/dist/store/runtime-clients/attachment-runtime-client.d.ts.map +1 -1
  625. package/dist/store/runtime-clients/composer-runtime-client.d.ts +11 -14
  626. package/dist/store/runtime-clients/composer-runtime-client.d.ts.map +1 -1
  627. package/dist/store/runtime-clients/composer-runtime-client.js +65 -62
  628. package/dist/store/runtime-clients/composer-runtime-client.js.map +1 -1
  629. package/dist/store/runtime-clients/handle-runtime-action.d.ts +1 -4
  630. package/dist/store/runtime-clients/handle-runtime-action.d.ts.map +1 -1
  631. package/dist/store/runtime-clients/handle-thread-list-action.d.ts +1 -4
  632. package/dist/store/runtime-clients/handle-thread-list-action.d.ts.map +1 -1
  633. package/dist/store/runtime-clients/liveRef.d.ts +2 -5
  634. package/dist/store/runtime-clients/liveRef.d.ts.map +1 -1
  635. package/dist/store/runtime-clients/message-part-runtime-client.d.ts +4 -7
  636. package/dist/store/runtime-clients/message-part-runtime-client.d.ts.map +1 -1
  637. package/dist/store/runtime-clients/message-part-runtime-client.js +26 -16
  638. package/dist/store/runtime-clients/message-part-runtime-client.js.map +1 -1
  639. package/dist/store/runtime-clients/message-runtime-client.d.ts +10 -11
  640. package/dist/store/runtime-clients/message-runtime-client.d.ts.map +1 -1
  641. package/dist/store/runtime-clients/message-runtime-client.js +121 -113
  642. package/dist/store/runtime-clients/message-runtime-client.js.map +1 -1
  643. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts +5 -8
  644. package/dist/store/runtime-clients/thread-list-item-runtime-client.d.ts.map +1 -1
  645. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts +6 -9
  646. package/dist/store/runtime-clients/thread-list-runtime-client.d.ts.map +1 -1
  647. package/dist/store/runtime-clients/thread-runtime-client.d.ts +4 -7
  648. package/dist/store/runtime-clients/thread-runtime-client.d.ts.map +1 -1
  649. package/dist/store/runtime-clients/thread-runtime-client.js +221 -158
  650. package/dist/store/runtime-clients/thread-runtime-client.js.map +1 -1
  651. package/dist/store/runtime-clients/useSubscribable.d.ts +3 -6
  652. package/dist/store/runtime-clients/useSubscribable.d.ts.map +1 -1
  653. package/dist/store/scope-registration.d.ts +28 -29
  654. package/dist/store/scope-registration.d.ts.map +1 -1
  655. package/dist/store/scopes/attachment.d.ts +19 -22
  656. package/dist/store/scopes/attachment.d.ts.map +1 -1
  657. package/dist/store/scopes/chain-of-thought.d.ts +33 -35
  658. package/dist/store/scopes/chain-of-thought.d.ts.map +1 -1
  659. package/dist/store/scopes/composer.d.ts +147 -135
  660. package/dist/store/scopes/composer.d.ts.map +1 -1
  661. package/dist/store/scopes/message.d.ts +119 -112
  662. package/dist/store/scopes/message.d.ts.map +1 -1
  663. package/dist/store/scopes/model-context.d.ts +10 -13
  664. package/dist/store/scopes/model-context.d.ts.map +1 -1
  665. package/dist/store/scopes/part.d.ts +53 -50
  666. package/dist/store/scopes/part.d.ts.map +1 -1
  667. package/dist/store/scopes/queue-item.d.ts +21 -23
  668. package/dist/store/scopes/queue-item.d.ts.map +1 -1
  669. package/dist/store/scopes/suggestion.d.ts +14 -17
  670. package/dist/store/scopes/suggestion.d.ts.map +1 -1
  671. package/dist/store/scopes/suggestions.d.ts +18 -21
  672. package/dist/store/scopes/suggestions.d.ts.map +1 -1
  673. package/dist/store/scopes/task.d.ts +27 -30
  674. package/dist/store/scopes/task.d.ts.map +1 -1
  675. package/dist/store/scopes/thread-list-item.d.ts +68 -71
  676. package/dist/store/scopes/thread-list-item.d.ts.map +1 -1
  677. package/dist/store/scopes/thread.d.ts +197 -200
  678. package/dist/store/scopes/thread.d.ts.map +1 -1
  679. package/dist/store/scopes/threads.d.ts +49 -52
  680. package/dist/store/scopes/threads.d.ts.map +1 -1
  681. package/dist/subscribable/subscribable.d.ts +73 -69
  682. package/dist/subscribable/subscribable.d.ts.map +1 -1
  683. package/dist/subscribable/subscribable.js +35 -7
  684. package/dist/subscribable/subscribable.js.map +1 -1
  685. package/dist/types/attachment.d.ts +35 -37
  686. package/dist/types/attachment.d.ts.map +1 -1
  687. package/dist/types/augmentations.d.ts +7 -8
  688. package/dist/types/augmentations.d.ts.map +1 -1
  689. package/dist/types/directive.d.ts +13 -16
  690. package/dist/types/directive.d.ts.map +1 -1
  691. package/dist/types/error.d.ts +15 -17
  692. package/dist/types/error.d.ts.map +1 -1
  693. package/dist/types/index.d.ts +7 -7
  694. package/dist/types/index.d.ts.map +1 -0
  695. package/dist/types/message.d.ts +358 -318
  696. package/dist/types/message.d.ts.map +1 -1
  697. package/dist/types/message.js.map +1 -1
  698. package/dist/types/quote.d.ts +3 -6
  699. package/dist/types/quote.d.ts.map +1 -1
  700. package/dist/types/trigger.d.ts +10 -13
  701. package/dist/types/trigger.d.ts.map +1 -1
  702. package/dist/types/unsubscribe.d.ts +1 -4
  703. package/dist/types/unsubscribe.d.ts.map +1 -1
  704. package/dist/utils/abortable-iterable.d.ts +2 -5
  705. package/dist/utils/abortable-iterable.d.ts.map +1 -1
  706. package/dist/utils/composite-context-provider.d.ts +9 -13
  707. package/dist/utils/composite-context-provider.d.ts.map +1 -1
  708. package/dist/utils/data-url.d.ts +16 -19
  709. package/dist/utils/data-url.d.ts.map +1 -1
  710. package/dist/utils/getGroupStatus.d.ts +19 -21
  711. package/dist/utils/getGroupStatus.d.ts.map +1 -1
  712. package/dist/utils/id.d.ts +3 -6
  713. package/dist/utils/id.d.ts.map +1 -1
  714. package/dist/utils/image-media-type.d.ts +1 -4
  715. package/dist/utils/image-media-type.d.ts.map +1 -1
  716. package/dist/utils/invoke-user-callback.d.ts +1 -4
  717. package/dist/utils/invoke-user-callback.d.ts.map +1 -1
  718. package/dist/utils/json/is-json-equal.d.ts +1 -4
  719. package/dist/utils/json/is-json-equal.d.ts.map +1 -1
  720. package/dist/utils/json/is-json.d.ts +5 -8
  721. package/dist/utils/json/is-json.d.ts.map +1 -1
  722. package/dist/utils/json/stable-stringify-tool-args.d.ts +3 -6
  723. package/dist/utils/json/stable-stringify-tool-args.d.ts.map +1 -1
  724. package/dist/utils/normalizePartStatus.d.ts +6 -8
  725. package/dist/utils/normalizePartStatus.d.ts.map +1 -1
  726. package/dist/utils/normalizePartStatus.js +3 -2
  727. package/dist/utils/normalizePartStatus.js.map +1 -1
  728. package/dist/utils/notify-event-listeners.d.ts +2 -4
  729. package/dist/utils/notify-event-listeners.d.ts.map +1 -1
  730. package/dist/utils/record.d.ts +1 -4
  731. package/dist/utils/record.d.ts.map +1 -1
  732. package/dist/utils/silent-runtime-action.d.ts +2 -5
  733. package/dist/utils/silent-runtime-action.d.ts.map +1 -1
  734. package/dist/utils/text.d.ts +2 -5
  735. package/dist/utils/text.d.ts.map +1 -1
  736. package/dist/utils/wire-media.d.ts +3 -6
  737. package/dist/utils/wire-media.d.ts.map +1 -1
  738. package/package.json +15 -13
  739. package/src/adapters/attachment.test.ts +98 -1
  740. package/src/adapters/attachment.ts +77 -20
  741. package/src/adapters/feedback.ts +1 -0
  742. package/src/adapters/speech.test.ts +94 -0
  743. package/src/adapters/speech.ts +16 -2
  744. package/src/adapters/thread-history.ts +16 -5
  745. package/src/adapters/voice.test.ts +169 -0
  746. package/src/adapters/voice.ts +25 -4
  747. package/src/index.ts +14 -2
  748. package/src/internal.ts +7 -0
  749. package/src/model-context/frame/host.test.ts +51 -1
  750. package/src/model-context/frame/host.ts +3 -1
  751. package/src/model-context/frame/provider.test.ts +106 -20
  752. package/src/model-context/frame/provider.ts +8 -1
  753. package/src/model-context/frame/validate.ts +57 -0
  754. package/src/model-context/interactable-composer-metadata.test.ts +82 -0
  755. package/src/model-context/interactable-composer-metadata.ts +45 -2
  756. package/src/react/RuntimeAdapter.test.ts +4 -1
  757. package/src/react/adapters/LocalStorageThreadListAdapter.test.ts +711 -0
  758. package/src/react/adapters/LocalStorageThreadListAdapter.tsx +125 -109
  759. package/src/react/client/Interactables.test.ts +865 -8
  760. package/src/react/client/Interactables.ts +325 -45
  761. package/src/react/client/RemoteThreadList.concurrent.test.tsx +9 -3
  762. package/src/react/client/RemoteThreadList.initialize-failure.test.ts +124 -0
  763. package/src/react/client/RemoteThreadList.test.ts +5 -6
  764. package/src/react/client/RemoteThreadList.ts +6 -0
  765. package/src/react/client/Tools.ts +2 -3
  766. package/src/react/client/interactable-model-context.test.ts +56 -13
  767. package/src/react/client/interactable-model-context.ts +48 -23
  768. package/src/react/index.ts +2 -2
  769. package/src/react/interactables-legacy/Interactables.test.ts +221 -4
  770. package/src/react/interactables-legacy/Interactables.ts +25 -14
  771. package/src/react/interactables-legacy/interactable-model-context.ts +26 -24
  772. package/src/react/interactables-legacy/useAssistantInteractable.test.tsx +40 -22
  773. package/src/react/interactables-shared/useInteractablePersistenceQueue.test.tsx +22 -2
  774. package/src/react/interactables-shared/useInteractablePersistenceQueue.ts +63 -11
  775. package/src/react/model-context/useInteractable.test.tsx +56 -29
  776. package/src/react/primitive-hooks/useActionBarCopy.test.ts +5 -5
  777. package/src/react/primitive-hooks/useSuggestionTrigger.test.ts +33 -0
  778. package/src/react/primitive-hooks/useSuggestionTrigger.ts +7 -4
  779. package/src/react/primitives/generativeUI/GenerativeUI.test.tsx +170 -0
  780. package/src/react/primitives/generativeUI/GenerativeUI.tsx +43 -28
  781. package/src/react/primitives/message/MessageAttachments.test.tsx +2 -6
  782. package/src/react/primitives/message/MessageAttachments.tsx +14 -8
  783. package/src/react/primitives/message/MessageGroupedParts.test.tsx +155 -8
  784. package/src/react/primitives/message/MessageGroupedParts.tsx +19 -6
  785. package/src/react/primitives/message/MessageParts.test.tsx +84 -0
  786. package/src/react/primitives/message/MessageParts.tool-interaction.test.tsx +69 -0
  787. package/src/react/primitives/message/MessageParts.tsx +29 -8
  788. package/src/react/primitives/thread/ThreadMessages.test.tsx +25 -7
  789. package/src/react/primitives/thread/ThreadSuggestions.test.tsx +97 -0
  790. package/src/react/primitives/thread/ThreadSuggestions.tsx +29 -6
  791. package/src/react/providers/ReadonlyThreadProvider.tsx +2 -2
  792. package/src/react/providers/TextMessagePartProvider.tsx +3 -0
  793. package/src/react/runtimes/RemoteThreadListHookInstanceManager.layout.test.tsx +62 -0
  794. package/src/react/runtimes/RemoteThreadListHookInstanceManager.retry.test.tsx +2 -2
  795. package/src/react/runtimes/RemoteThreadListHookInstanceManager.running.test.tsx +93 -0
  796. package/src/react/runtimes/RemoteThreadListHookInstanceManager.test.tsx +181 -21
  797. package/src/react/runtimes/RemoteThreadListHookInstanceManager.title.test.tsx +62 -17
  798. package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +112 -77
  799. package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +19 -3
  800. package/src/react/runtimes/RemoteThreadResource.ts +5 -2
  801. package/src/react/runtimes/assistant-transport/replayBoundaryStream.test.ts +3 -1
  802. package/src/react/runtimes/assistant-transport/replayBoundaryStream.ts +10 -2
  803. package/src/react/runtimes/assistant-transport/runManager.ts +3 -0
  804. package/src/react/runtimes/assistant-transport/transport-parentid.test.tsx +57 -0
  805. package/src/react/runtimes/assistant-transport/transport-scheduling.test.ts +73 -46
  806. package/src/react/runtimes/assistant-transport/transport-thread-id.test.tsx +571 -0
  807. package/src/react/runtimes/assistant-transport/types.ts +9 -1
  808. package/src/react/runtimes/assistant-transport/useAssistantTransport.spec.md +10 -0
  809. package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.test.tsx +108 -1
  810. package/src/react/runtimes/assistant-transport/useAssistantTransportRuntime.ts +33 -9
  811. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.integration.test.tsx +289 -0
  812. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.copy.test.tsx +471 -0
  813. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.engagement.test.tsx +330 -0
  814. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.ts +78 -2
  815. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +463 -2
  816. package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +595 -227
  817. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.test.ts +33 -4
  818. package/src/react/runtimes/cloud/CloudFileAttachmentAdapter.ts +7 -3
  819. package/src/react/runtimes/cloud/auiV0.ts +275 -6
  820. package/src/react/runtimes/cloud/auiV0DecodeSafely.test.ts +873 -0
  821. package/src/react/runtimes/createMessageConverter.ts +9 -3
  822. package/src/react/runtimes/external-message-converter.test.ts +7 -3
  823. package/src/react/runtimes/external-store-history-copy.ts +223 -0
  824. package/src/react/runtimes/remote-thread-hook-on-tap.test.ts +2 -1
  825. package/src/react/runtimes/useExternalStoreRuntime.history-copy.test.tsx +483 -0
  826. package/src/react/runtimes/useExternalStoreRuntime.lifecycle.test.tsx +84 -3
  827. package/src/react/runtimes/useExternalStoreRuntime.suggestions.test.tsx +6 -2
  828. package/src/react/runtimes/useExternalStoreRuntime.ts +25 -5
  829. package/src/react/runtimes/useLocalRuntime.test.tsx +145 -1
  830. package/src/react/runtimes/useLocalRuntime.ts +8 -5
  831. package/src/react/runtimes/useRemoteThreadListRuntime.concurrent.test.tsx +84 -4
  832. package/src/react/runtimes/useRemoteThreadListRuntime.ts +5 -1
  833. package/src/react/types/MessagePartComponentTypes.ts +10 -0
  834. package/src/react/types/scopes/interactables.ts +3 -0
  835. package/src/runtime/api/attachment-runtime.ts +10 -5
  836. package/src/runtime/api/bindings.ts +6 -1
  837. package/src/runtime/api/composer-runtime.ts +29 -6
  838. package/src/runtime/api/message-part-runtime.test.ts +215 -0
  839. package/src/runtime/api/message-part-runtime.ts +44 -1
  840. package/src/runtime/api/message-runtime.test.ts +112 -2
  841. package/src/runtime/api/message-runtime.ts +25 -7
  842. package/src/runtime/api/thread-list-item-runtime.ts +5 -5
  843. package/src/runtime/api/thread-list-runtime.ts +3 -3
  844. package/src/runtime/api/thread-runtime.test.ts +59 -0
  845. package/src/runtime/api/thread-runtime.ts +21 -11
  846. package/src/runtime/base/base-composer-runtime-core.ts +548 -153
  847. package/src/runtime/base/base-thread-runtime-core.test.ts +1614 -136
  848. package/src/runtime/base/base-thread-runtime-core.ts +236 -46
  849. package/src/runtime/base/default-edit-composer-runtime-core.ts +24 -2
  850. package/src/runtime/base/default-thread-composer-runtime-core.ts +33 -3
  851. package/src/runtime/interfaces/composer-runtime-core.ts +19 -0
  852. package/src/runtime/interfaces/thread-runtime-core.ts +24 -1
  853. package/src/runtime/queue/message-queue.ts +11 -1
  854. package/src/runtime/utils/attachment-add-operations.ts +45 -2
  855. package/src/runtime/utils/attachment-send-operations.ts +54 -0
  856. package/src/runtime/utils/auto-status.test.ts +54 -0
  857. package/src/runtime/utils/auto-status.ts +3 -10
  858. package/src/runtime/utils/external-message-conversion.test.ts +91 -0
  859. package/src/runtime/utils/external-message-conversion.ts +9 -6
  860. package/src/runtime/utils/message-repository.test.ts +69 -1
  861. package/src/runtime/utils/message-repository.ts +14 -7
  862. package/src/runtime/utils/stored-message-parts.ts +216 -0
  863. package/src/runtime/utils/thread-message-like.test.ts +58 -0
  864. package/src/runtime/utils/thread-message-like.ts +79 -48
  865. package/src/runtime/utils/thread-runtime-lifecycle.test.ts +67 -0
  866. package/src/runtime/utils/thread-runtime-lifecycle.ts +42 -8
  867. package/src/runtime/utils/tool-interactions.test.ts +193 -0
  868. package/src/runtime/utils/tool-interactions.ts +147 -0
  869. package/src/runtimes/external-store/external-store-adapter.ts +25 -0
  870. package/src/runtimes/external-store/external-store-runtime-core.ts +10 -2
  871. package/src/runtimes/external-store/external-store-thread-list-runtime-core.ts +2 -2
  872. package/src/runtimes/external-store/external-store-thread-runtime-core.test.ts +49 -0
  873. package/src/runtimes/external-store/external-store-thread-runtime-core.ts +114 -32
  874. package/src/runtimes/inert/InertThreadRuntimeCore.test.ts +127 -56
  875. package/src/runtimes/inert/InertThreadRuntimeCore.ts +10 -1
  876. package/src/runtimes/local/local-thread-runtime-core.edit-cancellation.test.ts +70 -0
  877. package/src/runtimes/local/local-thread-runtime-core.test.ts +1866 -169
  878. package/src/runtimes/local/local-thread-runtime-core.ts +365 -40
  879. package/src/runtimes/readonly/ReadonlyThreadRuntimeCore.ts +53 -1
  880. package/src/runtimes/remote-thread-list/optimistic-state.ts +8 -3
  881. package/src/runtimes/tool-invocations/EDGE_CASES.md +19 -4
  882. package/src/runtimes/tool-invocations/ToolInvocationTracker.test.ts +392 -39
  883. package/src/runtimes/tool-invocations/ToolInvocationTracker.ts +31 -8
  884. package/src/store/clients/external-thread.test.ts +145 -0
  885. package/src/store/clients/external-thread.ts +669 -144
  886. package/src/store/clients/model-context-client.test.ts +8 -8
  887. package/src/store/clients/no-op-composer-client.ts +2 -0
  888. package/src/store/clients/submission-message.ts +27 -0
  889. package/src/store/clients/thread-message-client.test.ts +39 -0
  890. package/src/store/clients/thread-message-client.ts +13 -6
  891. package/src/store/index.ts +2 -2
  892. package/src/store/internal.ts +1 -0
  893. package/src/store/primitive-predicates.test.ts +119 -0
  894. package/src/store/primitive-predicates.ts +19 -4
  895. package/src/store/runtime-clients/composer-runtime-client.ts +4 -3
  896. package/src/store/runtime-clients/message-part-runtime-client.test.ts +42 -0
  897. package/src/store/runtime-clients/message-part-runtime-client.ts +4 -0
  898. package/src/store/runtime-clients/message-runtime-client.ts +5 -0
  899. package/src/store/runtime-clients/thread-runtime-client.test.tsx +243 -0
  900. package/src/store/runtime-clients/thread-runtime-client.ts +46 -9
  901. package/src/store/scopes/composer.ts +22 -4
  902. package/src/store/scopes/message.ts +12 -1
  903. package/src/store/scopes/part.ts +8 -0
  904. package/src/subscribable/subscribable.test.ts +205 -3
  905. package/src/subscribable/subscribable.ts +49 -7
  906. package/src/tests/RemoteThreadListThreadListRuntimeCore-errors.test.ts +95 -1
  907. package/src/tests/attachment-adapters.test.ts +16 -1
  908. package/src/tests/auiV0Encode.test.ts +412 -1
  909. package/src/tests/base-composer-runtime-core-addAttachment.test.ts +6 -6
  910. package/src/tests/base-composer-runtime-core-send.test.ts +722 -29
  911. package/src/tests/base-composer-runtime-core.test.ts +212 -5
  912. package/src/tests/composer-can-cancel.test.ts +35 -6
  913. package/src/tests/composer-can-send.test.ts +120 -1
  914. package/src/tests/composer-submission.test.tsx +796 -0
  915. package/src/tests/default-edit-composer-runtime-core.test.ts +149 -2
  916. package/src/tests/external-store-thread-list-runtime-core.test.ts +111 -0
  917. package/src/tests/external-store-thread-runtime-core-adapter.test.ts +810 -28
  918. package/src/tests/external-store-thread-runtime-core.test.ts +217 -0
  919. package/src/tests/external-thread-attachments.test.tsx +763 -26
  920. package/src/tests/external-thread-feedback.test.tsx +20 -7
  921. package/src/tests/external-thread-isLast.test.tsx +69 -0
  922. package/src/tests/external-thread-parity.test.tsx +1 -1
  923. package/src/tests/get-thread-state-isRunning.test.ts +2 -2
  924. package/src/tests/message-queue.test.ts +45 -10
  925. package/src/tests/remote-thread-list-adapter-switch.test.ts +45 -1
  926. package/src/tests/thread-switch-events.test.tsx +11 -7
  927. package/src/tests/useRemoteThreadListRuntime-controlled.test.tsx +2 -1
  928. package/src/types/message.test.ts +19 -0
  929. package/src/types/message.ts +65 -10
  930. package/src/utils/normalizePartStatus.ts +14 -1
  931. package/dist/tests/remote-thread-list-test-helpers.d.ts +0 -16
  932. package/dist/tests/remote-thread-list-test-helpers.d.ts.map +0 -1
  933. package/dist/tests/remote-thread-list-test-helpers.js +0 -59
  934. package/dist/tests/remote-thread-list-test-helpers.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"external-thread.js","names":["useState","useMemo","useEffect","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AppendMessage","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","Attachment","CreateAttachment","PendingAttachment","isAttachmentComplete","isCreateAttachment","AddToolResultOptions","RespondToToolApprovalOptions","ResumeToolCallOptions","SpeechState","ThreadSuggestion","ExternalThreadQueueAdapter","QueuePlacement","ExternalThreadBranchAdapter","AttachmentAdapter","FeedbackAdapter","SpeechSynthesisAdapter","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","resolveToolApprovalResponse","AttachmentAddOperations","drainAttachmentAdd","toMessagePartStatus","generateId","ModelContext","ThreadSuggestions","createTaskDeriver","getTaskKey","TaskClient","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","EMPTY_SUGGESTIONS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","status","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onRefetchThread","Promise","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","feedbackAdapter","speechAdapter","queue","branches","onRespondToToolApproval","MessageClientProps","index","submittedFeedback","onSubmitFeedback","feedback","speech","onSpeak","onStopSpeaking","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","t1","content","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Error","handleBeginEdit","t5","msg","sourceId","handleSendEdit","t6","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t7","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t8","role","metadata","messageWithFeedback","t9","t10","isLast","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","undefined","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","stopSpeaking","submitFeedback","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","result","response","toResponse","toolName","isError","artifact","modelContent","payload","response_0","approval","approved","resolution","resolve","error","reject","addToolResult","resumeToolCall","respondToToolApproval","AttachmentResourceProps","onRemove","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onMove","placement","steer","lane","insertAfter","move","QueueItemClient","useLiveState","initial","setState","ref","Symbol","for","next","current","prev","T","set","const","removeAttachmentThroughAdapter","setAttachments","String","candidate","reason","useComposerClientResource","isEditing","setIsEditing","isEditingRef","text","setText","textRef","setRole","roleRef","runConfig","setRunConfig","runConfigRef","attachmentsRef","quote","setQuote","quoteRef","attachmentAddOperations","messageText","filter","_temp4","_temp5","join","updateFromMessage","cancel","a","removed","all","_temp6","a_1","removePendingAttachments","attachment_0","prev_0","a_2","upsertAttachment","steerItems","laneItems","items","queueItems","queueItemClients","accept","isEmpty","trim","canSend","attachmentAccept","dictation","fileOrAttachment","file","name","contentType","operation","start","add","attachment_1","finish","isCancelled","newAttachment","prev_1","newAttachment_0","prev_2","cancelAll","removed_0","removed_1","t19","opts","currentQuote","currentText","currentRole","currentRunConfig","currentAttachments","isEmpty_0","dispatch","sendAttachments","composedMessage","createdAt","Date","startRun","custom","enqueue","attachment_2","send","then","error_0","prev_3","prev_4","prev_5","console","t20","removed_2","catch","_temp7","t21","t22","t23","addAttachment","clearAttachments","reset","beginEdit","startDictation","_temp8","stopDictation","_temp9","queueItem","createSpeechController","notify","session","clear","adapter","utterance","unsub","subscribe","stop","stopMessage","dispose","dedupeMessagesById","seenIds","Set","deduped","i","has","warn","push","reverse","useExternalThread","messagesProp","threadState","setSubmittedFeedback","entry","external","feedbackFor","live","entries","entry_0","msg_0","find","m","keys","fromEntries","submit","handleSubmitFeedback","speechState","setSpeech","speechController","hasSpeechAdapter","message_0","handleSpeak","messageIndex","m_0","handleReload","msg_1","props","messageClients","taskDeriver","tasks","_temp0","taskClients","__internal_notifyCancelled","handleCancelRun","message_1","at","handleSendNew","headId","hasCancel","hasRefetchThread","t24","message_2","message_3","composerQueue","t25","t26","t27","suggestionsClient","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","hasFeedback","hasSpeech","t28","_temp1","messageStates","t29","t30","edit","refetchThread","voice","switchBranchDuringRun","unstable_copy","t31","t32","isDisabled","capabilities","suggestions","t33","t34","t35","t36","task_0","task","t37","message_4","appendMessage","t38","t39","t40","unstable_refetchThread","t41","state_0","t42","t43","append","deleteMessage","_temp10","resumeRun","cancelRun","importExternalState","getModelContext","_temp11","export","_temp12","import","_temp13","_temp14","connectVoice","_temp15","disconnectVoice","_temp16","getVoiceVolume","_temp17","subscribeVoiceVolume","_temp19","muteVoice","_temp20","unmuteVoice","_temp21","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","a_0","error_1","s","arr","config","_temp18"],"sources":["../../../src/store/clients/external-thread.ts"],"sourcesContent":["import { useState, useMemo, useEffect, useCallback, useRef } from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport type { ClientElement, ClientOutput } from \"@assistant-ui/store\";\nimport {\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store/client\";\n\nimport type {\n AppendMessage,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n} from \"../../types/message\";\nimport type {\n Attachment,\n CreateAttachment,\n PendingAttachment,\n} from \"../../types/attachment\";\nimport {\n isAttachmentComplete,\n isCreateAttachment,\n} from \"../../types/attachment\";\nimport type {\n AddToolResultOptions,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n SpeechState,\n ThreadSuggestion,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport type {\n ExternalThreadQueueAdapter,\n QueuePlacement,\n} from \"../../runtime/queue/external-thread-queue-adapter\";\nimport type { ExternalThreadBranchAdapter } from \"../../runtime/branch/external-thread-branch-adapter\";\nimport type { AttachmentAdapter } from \"../../adapters/attachment\";\nimport type { FeedbackAdapter } from \"../../adapters/feedback\";\nimport type { SpeechSynthesisAdapter } from \"../../adapters/speech\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"../scopes/queue-item\";\nimport type { ComposerSendOptions } from \"../scopes/composer\";\nimport { fileMatchesAccept } from \"../../adapters/attachment\";\nimport { getThreadMessageText } from \"../../utils/text\";\nimport { resolveToolApprovalResponse } from \"../../runtime/utils/resolveToolApprovalResponse\";\nimport {\n AttachmentAddOperations,\n drainAttachmentAdd,\n} from \"../../runtime/utils/attachment-add-operations\";\nimport { toMessagePartStatus } from \"../../utils/normalizePartStatus\";\nimport { generateId } from \"../../utils/id\";\nimport { ModelContext } from \"./model-context-client\";\nimport { ThreadSuggestions } from \"./suggestions\";\nimport { createTaskDeriver, getTaskKey, TaskClient } from \"./thread-tasks\";\nimport { Tools } from \"../../react/client/Tools\";\nimport { DataRenderers } from \"../../react/client/DataRenderers\";\nimport { SingleThreadList } from \"./single-thread-list\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\nconst EMPTY_SUGGESTIONS: readonly ThreadSuggestion[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (!message.status) return COMPLETE_STATUS;\n return toMessagePartStatus(message, partIndex, part);\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 /**\n * Handler for re-fetching this thread's state in place, driving\n * `threads.reloadMainThread()`. Unrelated to `onReload`, which re-generates\n * an assistant message. Presence enables the `refetchThread` capability;\n * rejections propagate to the caller.\n */\n onRefetchThread?: (() => Promise<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 feedbackAdapter?: FeedbackAdapter | undefined;\n speechAdapter?: SpeechSynthesisAdapter | 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?: (\n options: RespondToToolApprovalOptions,\n ) => void | Promise<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 | Promise<void>)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n submittedFeedback: \"positive\" | \"negative\" | undefined;\n onSubmitFeedback: (feedback: { type: \"positive\" | \"negative\" }) => void;\n speech: SpeechState | undefined;\n onSpeak: () => void;\n onStopSpeaking: () => void;\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 submittedFeedback,\n onSubmitFeedback,\n speech,\n onSpeak,\n onStopSpeaking,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = 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 if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n onEdit({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n canCancel: true,\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 const messageWithFeedback: ExternalThreadMessage =\n submittedFeedback && message.role === \"assistant\"\n ? {\n ...message,\n metadata: {\n ...message.metadata,\n submittedFeedback: { type: submittedFeedback },\n },\n }\n : message;\n return {\n ...messageWithFeedback,\n attachments: message.attachments ?? [],\n parentId,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech,\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 submittedFeedback,\n speech,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: onSpeak,\n stopSpeaking: onStopSpeaking,\n submitFeedback: onSubmitFeedback,\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 | Promise<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 () => ({ ...part, status: status as MessagePartStatus }),\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 const options = resolveToolApprovalResponse(part.approval, response);\n try {\n return Promise.resolve(onRespondToToolApproval(options));\n } catch (error) {\n return Promise.reject(error);\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 canCancel: boolean;\n isRunning?: 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 onMove,\n onRemove,\n}: {\n item: QueueItemState;\n onMove: (placement: QueuePlacement) => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: () => onMove({ lane: \"steer\", insertAfter: null }),\n move: onMove,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\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// A try/catch inside the resource makes the React Compiler bail out of the\n// whole hook, so the adapter call and its failure status live at module scope.\nconst removeAttachmentThroughAdapter = async (\n attachment: Attachment,\n attachmentAdapter: AttachmentAdapter | undefined,\n setAttachments: (\n next:\n | readonly Attachment[]\n | ((prev: readonly Attachment[]) => readonly Attachment[]),\n ) => void,\n) => {\n try {\n await attachmentAdapter?.remove(attachment);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n setAttachments((prev) =>\n prev.map((candidate) =>\n candidate.id === attachment.id && !isAttachmentComplete(candidate)\n ? {\n ...candidate,\n status: { type: \"incomplete\", reason: \"error\", message },\n }\n : candidate,\n ),\n );\n throw error;\n }\n};\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n canCancel,\n isRunning = false,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [isEditing, setIsEditing, isEditingRef] = useLiveState(\n type === \"thread\",\n );\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 const attachmentAddOperations = useMemo(\n () => new AttachmentAddOperations(),\n [],\n );\n\n const updateFromMessage = () => {\n if (!message) return;\n const messageText = message.content\n .filter((part) => part.type === \"text\")\n .map((part) => part.text)\n .join(\"\\n\\n\");\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n };\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: async () => {\n attachmentAddOperations.cancel(attachment.id);\n if (!isAttachmentComplete(attachment)) {\n await removeAttachmentThroughAdapter(\n attachment,\n attachmentAdapter,\n setAttachments,\n );\n }\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(async (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 steerItems = queue?.steerItems ?? EMPTY_QUEUE_ITEMS;\n const laneItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItems = useMemo(\n () =>\n steerItems.length === 0\n ? laneItems\n : laneItems.length === 0\n ? steerItems\n : [...steerItems, ...laneItems],\n [steerItems, laneItems],\n );\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onMove: (placement) => queue?.move(item.id, placement),\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 const operation = attachmentAddOperations.start();\n try {\n await drainAttachmentAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n (attachment) => {\n if (!attachmentAddOperations.accept(operation, attachment.id))\n return false;\n upsertAttachment(attachment);\n return true;\n },\n );\n attachmentAddOperations.finish(operation);\n } catch (error) {\n attachmentAddOperations.finish(operation);\n if (!attachmentAddOperations.isCancelled(operation)) throw error;\n }\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: generateId(),\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 ?? generateId(),\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 attachmentAddOperations.cancelAll();\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 attachmentAddOperations.cancelAll();\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 currentRole = roleRef.current;\n const currentRunConfig = runConfigRef.current;\n const currentAttachments = attachmentsRef.current;\n const isEmpty = !currentText.trim() && !currentAttachments.length;\n if (!isEditingRef.current) throw new Error(\"Composer is not available\");\n if (isEmpty || isSendDisabled) return;\n\n attachmentAddOperations.cancelAll();\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n\n const dispatch = (sendAttachments: readonly Attachment[]) => {\n const composedMessage: AppendMessage = {\n role: currentRole,\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: currentRunConfig,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n // edit sends carry a sourceId contract; only thread sends queue\n if (queue && type === \"thread\") {\n if (opts?.steer ?? isRunning) queue.steer(composedMessage);\n else queue.enqueue(composedMessage);\n } else {\n onSend?.(composedMessage);\n }\n if (type === \"edit\") setIsEditing(false);\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: () => {\n // An edit session ends here, so its in-flight adapter adds must not\n // land in a later session; the thread composer's cancel stops the run\n // and leaves the draft (and its pending adds) alone.\n if (type === \"edit\") {\n attachmentAddOperations.cancelAll();\n const removed = attachmentsRef.current;\n setAttachments([]);\n removePendingAttachments(removed).catch((error) => {\n console.error(\"Failed to remove cancelled edit attachments\", error);\n });\n }\n onCancel?.();\n if (type === \"edit\") setIsEditing(false);\n },\n beginEdit: () => {\n onBeginEdit?.();\n if (type === \"thread\") return;\n if (isEditingRef.current) throw new Error(\"Edit already in progress\");\n setIsEditing(true);\n updateFromMessage();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number } | { id: string }) => {\n if (\"id\" in selector) {\n return queueItemClients.get({ key: selector.id });\n }\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst createSpeechController = (\n notify: (speech: SpeechState | undefined) => void,\n) => {\n let session: { messageId: string; cancel: () => void } | undefined;\n\n const clear = () => {\n if (!session) return;\n session.cancel();\n session = undefined;\n notify(undefined);\n };\n\n return {\n speak: (\n adapter: SpeechSynthesisAdapter,\n message: ExternalThreadMessage,\n ) => {\n clear();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n let unsub: (() => void) | undefined;\n unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n unsub?.();\n session = undefined;\n notify(undefined);\n } else {\n notify({ messageId: message.id, status: utterance.status });\n }\n });\n\n if (utterance.status.type === \"ended\") {\n unsub();\n notify(undefined);\n return;\n }\n\n session = {\n messageId: message.id,\n cancel: () => {\n unsub!();\n utterance.cancel();\n },\n };\n notify({ messageId: message.id, status: utterance.status });\n },\n stop: () => {\n if (!session) throw new Error(\"No message is being spoken\");\n clear();\n },\n stopMessage: (messageId: string) => {\n if (session?.messageId !== messageId)\n throw new Error(\"Message is not being spoken\");\n clear();\n },\n dispose: clear,\n };\n};\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 onRefetchThread,\n onAddToolResult,\n onResumeToolCall,\n onLoadExternalState,\n attachmentAdapter,\n feedbackAdapter,\n speechAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n // Local entries are optimistic: they apply only while the message's\n // external submittedFeedback still equals the value seen at click time.\n const [submittedFeedback, setSubmittedFeedback] = useState<\n Record<\n string,\n {\n type: \"positive\" | \"negative\";\n external: \"positive\" | \"negative\" | undefined;\n }\n >\n >({});\n\n const feedbackFor = (msg: ExternalThreadMessage) => {\n const entry = submittedFeedback[msg.id];\n return entry && msg.metadata.submittedFeedback?.type === entry.external\n ? entry.type\n : undefined;\n };\n\n // `messages` changes identity on every streamed token, and this body fans out\n // to one client per message, so pruning during render would re-run the whole\n // fan-out per token. The effect bails out on an unchanged map instead.\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setSubmittedFeedback((prev) => {\n const live = Object.entries(prev).filter(([id, entry]) => {\n const msg = messages.find((m) => m.id === id);\n return !!msg && msg.metadata.submittedFeedback?.type === entry.external;\n });\n return live.length === Object.keys(prev).length\n ? prev\n : Object.fromEntries(live);\n });\n }, [messages]);\n\n const handleSubmitFeedback = (\n message: ExternalThreadMessage,\n { type }: { type: \"positive\" | \"negative\" },\n ) => {\n if (!feedbackAdapter) throw new Error(\"Feedback adapter not configured\");\n feedbackAdapter.submit({ message, type });\n\n if (message.role === \"assistant\") {\n setSubmittedFeedback((prev) => ({\n ...prev,\n [message.id]: {\n type,\n external: message.metadata.submittedFeedback?.type,\n },\n }));\n }\n };\n\n const [speechState, setSpeech] = useState<SpeechState | undefined>(undefined);\n const [speechController] = useState(() => createSpeechController(setSpeech));\n\n const hasSpeechAdapter = !!speechAdapter;\n const speech = hasSpeechAdapter ? speechState : undefined;\n useEffect(() => {\n if (!hasSpeechAdapter) speechController.dispose();\n }, [hasSpeechAdapter, speechController]);\n\n useEffect(() => () => speechController.dispose(), [speechController]);\n\n const handleSpeak = (message: ExternalThreadMessage) => {\n if (!speechAdapter) throw new Error(\"Speech adapter not configured\");\n speechController.speak(speechAdapter, message);\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 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 submittedFeedback: feedbackFor(msg),\n onSubmitFeedback: (feedback) => handleSubmitFeedback(msg, feedback),\n speech: speech?.messageId === msg.id ? speech : undefined,\n onSpeak: () => handleSpeak(msg),\n onStopSpeaking: () => speechController.stopMessage(msg.id),\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const taskDeriver = useMemo(() => createTaskDeriver(), []);\n const tasks = useMemo(() => taskDeriver(messages), [taskDeriver, messages]);\n const taskClients = useClientLookup(\n tasks.map((task) =>\n withKey(getTaskKey(task), TaskClient({ task }), [task]),\n ),\n );\n\n const handleCancelRun = () => {\n // Nothing is aborted without a handler, so pausing the queue would hold\n // the pending items against a run that keeps going.\n if (!onCancel) return;\n\n // Before the run is aborted, so the settle it produces keeps the pending\n // items instead of dispatching the next one at the moment the user\n // stopped.\n queue?.__internal_notifyCancelled?.();\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 hasCancel = !!onCancel;\n const hasRefetchThread = !!onRefetchThread;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message) =>\n queue.enqueue({ ...message, parentId: message.parentId ?? headId }),\n steer: (message) =>\n queue.steer({ ...message, parentId: message.parentId ?? headId }),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n canCancel: isRunning && hasCancel,\n isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n }),\n );\n const suggestionsClient = useClientResource(\n ThreadSuggestions(EMPTY_SUGGESTIONS),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const hasFeedback = !!feedbackAdapter;\n const hasSpeech = !!speechAdapter;\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 && !isLoading,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n refetchThread: hasRefetchThread,\n cancel: hasCancel,\n speech: hasSpeech,\n attachments: hasAttachments,\n feedback: hasFeedback,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n tasks,\n state: threadState ?? {},\n suggestions: EMPTY_SUGGESTIONS,\n extras,\n speech,\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 hasCancel,\n hasRefetchThread,\n hasAttachments,\n hasFeedback,\n hasSpeech,\n speech,\n messageClients.state,\n composerClient.state,\n tasks,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n suggestions: () => suggestionsClient.methods,\n task: (selector) => {\n if (\"id\" in selector) {\n const task = tasks.find((candidate) => candidate.id === selector.id);\n return taskClients.get({ key: task ? getTaskKey(task) : selector.id });\n }\n return taskClients.get(selector);\n },\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:\n message.parentId === undefined\n ? (messages.at(-1)?.id ?? null)\n : message.parentId,\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);\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 ...(onRefetchThread && { unstable_refetchThread: onRefetchThread }),\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: speechController.stop,\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 mount in key order; re-declare thread after the threads source it resolves from\n delete scopes.thread;\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 = Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.suggestions(),\n });\n }\n});\n"],"mappings":"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"}
1
+ {"version":3,"file":"external-thread.js","names":["useState","useMemo","useEffect","useCallback","useRef","resource","withKey","ClientElement","ClientOutput","useAssistantClientDestroySignal","useClientLookup","attachTransformScopes","useClientResource","Derived","AppendMessage","MessagePartStatus","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ToolCallMessagePartStatus","Attachment","CompleteAttachment","CreateAttachment","isAttachmentComplete","isCreateAttachment","AddToolResultOptions","RespondToToolApprovalOptions","ResumeToolCallOptions","SpeechState","ThreadSuggestion","Unstable_RecordToolInteractionOptions","Unstable_ToolInteractionInput","ExternalThreadQueueAdapter","QueuePlacement","ExternalThreadBranchAdapter","ComposerSubmission","AttachmentAdapter","FeedbackAdapter","SpeechSynthesisAdapter","ToolResponse","ReadonlyJSONValue","QueueItemState","ComposerSendOptions","fileMatchesAccept","getThreadMessageText","resolveToolApprovalResponse","createToolInteraction","AttachmentAddOperations","drainAttachmentAdd","AttachmentSendOperations","ThreadMessageClient","submissionThreadMessage","toMessagePartStatus","generateId","ModelContext","ThreadSuggestions","createTaskDeriver","getTaskKey","TaskClient","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","EMPTY_SUGGESTIONS","ExternalThreadMessage","id","COMPLETE_STATUS","Object","freeze","type","derivePartStatus","message","partIndex","part","status","ExternalThreadProps","messages","isRunning","isLoading","state","extras","isSendDisabled","onNew","onEdit","onReload","parentId","onStartRun","onCancel","onResume","onRefetchThread","Promise","onAddToolResult","options","onResumeToolCall","onLoadExternalState","attachmentAdapter","feedbackAdapter","speechAdapter","queue","branches","onRespondToToolApproval","unstable_onRecordToolInteraction","MessageClientProps","index","isLast","submittedFeedback","comment","onSubmitFeedback","feedback","speech","onSpeak","onStopSpeaking","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","t1","content","map","idx","PartResource","messageId","partClients","t2","attachments","t3","_temp2","attachmentClients","t4","Error","handleBeginEdit","t5","msg","sourceId","handleSendEdit","t6","ComposerClientResource","canCancel","onBeginEdit","onSend","composerClient","branchIds","t7","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t8","role","metadata","messageWithFeedback","t9","t10","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","undefined","switchToBranch","t16","selector","get","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","stopSpeaking","submitFeedback","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","result","response","toResponse","toolName","isError","artifact","modelContent","payload","resolve","then","interaction","catch","_temp4","response_0","approval","approved","resolution","error","reject","input","addToolResult","resumeToolCall","respondToToolApproval","unstable_recordInteraction","AttachmentResourceProps","onRemove","useAttachmentResource","remove","AttachmentResource","EMPTY_MESSAGE_KEYS","ComposerClientResourceProps","messageKeys","useQueueItemClient","item","onMove","placement","steer","lane","insertAfter","move","QueueItemClient","useLiveState","initial","setState","ref","Symbol","for","next","current","prev","T","set","const","removeAttachmentThroughAdapter","onError","String","dispatchSafely","dispatch","abortOnDestroy","destroySignal","AbortSignal","controller","AbortController","abort","reason","aborted","unlink","removeEventListener","signal","addEventListener","once","InTransitEntry","submission","known","ReadonlySet","EMPTY_IN_TRANSIT","useComposerClientResource","isEditing","setIsEditing","isEditingRef","text","setText","textRef","setRole","roleRef","runConfig","setRunConfig","runConfigRef","setAttachments","attachmentsRef","quote","setQuote","quoteRef","attachmentAddOperations","attachmentSends","setSubmission","submissionRef","submissionSend","inTransit","setInTransit","messageKeysRef","sendGeneration","claimed","landed","Set","entry","find","candidate","has","endsWith","add","shown","entry_0","filter","_temp5","inTransitSubmissions","size","entry_2","entry_3","messageText","_temp6","_temp7","join","restored","unmarkRemoved","updateFromMessage","attachment_0","cancel","markRemoved","message_0","prev_0","candidate_0","transfer","prev_1","a","handleRemoveAttachment","attachment_1","message_1","prev_2","candidate_1","failed","prev_3","a_0","handleRemoveSubmittedAttachment","attachment_2","attachment_3","some","a_1","attachment_4","submittedAttachmentClients","removed","all","_temp8","a_3","removePendingAttachments","attachment_5","a_5","a_4","prev_4","a_6","upsertAttachment","steerItems","laneItems","items","t19","queueItems","t20","t21","queueItemClients","accept","isEmpty","trim","canSend","attachmentAccept","dictation","t22","t23","endSubmission","t24","returned","Map","_temp9","prev_5","attachment_7","kept","attachment_8","isRemoved","prev_6","prev_7","Boolean","prev_8","returnToDraft","t25","current_0","cancelSubmission","t26","current_1","drafted","_temp0","attachment_9","discardSubmission","t27","sent","settled","current_2","failures","forEach","attachments_0","attachment_10","failure","console","returnSubmissionToDraft","t28","current_3","attachments_1","context","isSubmission","composedMessage","createdAt","Date","startRun","custom","sent_0","queued","delivered","_temp1","prev_9","attachment_12","entry_4","prev_10","failure_0","enqueue","prev_11","candidate_2","cancelAll","dispatchMessage","t29","generation","context_0","uploads","flatMap","attachment_13","upload","whenSendable","current_4","sent_1","attachment_14","attachment_15","settled_0","allSettled","attachment_16","send","rejection","_temp10","finalAttachments","result_1","index_0","value","prepareSubmission","t30","t31","fileOrAttachment","file","name","contentType","operation","start","attachment_17","finish","t32","isCancelled","newAttachment","prev_12","newAttachment_0","prev_13","removed_0","attachment_18","t33","submitted","attachment_19","inDraft","attachment_20","t34","discarded","removed_1","t35","opts","currentAttachments","attachment_21","isEmpty_0","submitted_0","context_1","complete","ready","detached","prev_14","attachment_22","generation_0","release","finally","t36","removed_2","_temp11","t37","t38","t39","addAttachment","clearAttachments","reset","beginEdit","startDictation","_temp12","stopDictation","_temp13","queueItem","createSpeechController","notify","session","clear","adapter","utterance","unsub","subscribe","stop","stopMessage","dispose","dedupeMessagesById","seenIds","deduped","i","warn","push","reverse","useExternalThread","messagesProp","threadState","setSubmittedFeedback","external","feedbackFor","live","entries","msg_0","m","keys","fromEntries","submittedFeedback_0","submit","handleSubmitFeedback","speechState","setSpeech","speechController","hasSpeechAdapter","handleSpeak","messageIndex","m_0","handleReload","_temp14","__internal_notifyCancelled","handleCancelRun","message_2","at","handleSendNew","headId","hasCancel","hasRefetchThread","message_3","message_4","composerQueue","pending","hasPending","msg_1","props","feedback_0","messageClients","pendingMessages","row","pendingClients","taskDeriver","tasks","_temp15","taskClients","suggestionsClient","hasQueue","hasBranches","hasEdit","hasReload","hasAttachments","hasFeedback","hasSpeech","messageStates","edit","refetchThread","voice","switchBranchDuringRun","unstable_copy","isDisabled","capabilities","suggestions","t40","t41","t42","task_0","task","t43","message_5","appendMessage","t44","t45","t46","unstable_refetchThread","t47","state_0","t48","row_0","t49","append","deleteMessage","_temp16","resumeRun","cancelRun","importExternalState","getModelContext","_temp17","export","_temp18","import","_temp19","_temp20","connectVoice","_temp21","disconnectVoice","_temp22","getVoiceVolume","_temp23","subscribeVoiceVolume","_temp25","muteVoice","_temp26","unmuteVoice","_temp27","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","entry_1","part_0","a_2","attachment_6","a_7","attachment_11","result_0","error_0","config","_temp24"],"sources":["../../../src/store/clients/external-thread.ts"],"sourcesContent":["import { useState, useMemo, useEffect, useCallback, useRef } from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport type { ClientElement, ClientOutput } from \"@assistant-ui/store\";\nimport { useAssistantClientDestroySignal } from \"@assistant-ui/store/internal\";\nimport {\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store/client\";\n\nimport type {\n AppendMessage,\n MessagePartStatus,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ToolCallMessagePartStatus,\n} from \"../../types/message\";\nimport type {\n Attachment,\n CompleteAttachment,\n CreateAttachment,\n} from \"../../types/attachment\";\nimport {\n isAttachmentComplete,\n isCreateAttachment,\n} from \"../../types/attachment\";\nimport type {\n AddToolResultOptions,\n RespondToToolApprovalOptions,\n ResumeToolCallOptions,\n SpeechState,\n ThreadSuggestion,\n Unstable_RecordToolInteractionOptions,\n} from \"../../runtime/interfaces/thread-runtime-core\";\nimport type { Unstable_ToolInteractionInput } from \"../../types/message\";\nimport type {\n ExternalThreadQueueAdapter,\n QueuePlacement,\n} from \"../../runtime/queue/external-thread-queue-adapter\";\nimport type { ExternalThreadBranchAdapter } from \"../../runtime/branch/external-thread-branch-adapter\";\nimport type { ComposerSubmission } from \"../../runtime/interfaces/composer-runtime-core\";\nimport type { AttachmentAdapter } from \"../../adapters/attachment\";\nimport type { FeedbackAdapter } from \"../../adapters/feedback\";\nimport type { SpeechSynthesisAdapter } from \"../../adapters/speech\";\nimport { ToolResponse } from \"assistant-stream\";\nimport type { ReadonlyJSONValue } from \"assistant-stream/utils\";\nimport type { QueueItemState } from \"../scopes/queue-item\";\nimport type { ComposerSendOptions } from \"../scopes/composer\";\nimport { fileMatchesAccept } from \"../../adapters/attachment\";\nimport { getThreadMessageText } from \"../../utils/text\";\nimport { resolveToolApprovalResponse } from \"../../runtime/utils/resolveToolApprovalResponse\";\nimport { createToolInteraction } from \"../../runtime/utils/tool-interactions\";\nimport {\n AttachmentAddOperations,\n drainAttachmentAdd,\n} from \"../../runtime/utils/attachment-add-operations\";\nimport { AttachmentSendOperations } from \"../../runtime/utils/attachment-send-operations\";\nimport { ThreadMessageClient } from \"./thread-message-client\";\nimport { submissionThreadMessage } from \"./submission-message\";\nimport { toMessagePartStatus } from \"../../utils/normalizePartStatus\";\nimport { generateId } from \"../../utils/id\";\nimport { ModelContext } from \"./model-context-client\";\nimport { ThreadSuggestions } from \"./suggestions\";\nimport { createTaskDeriver, getTaskKey, TaskClient } from \"./thread-tasks\";\nimport { Tools } from \"../../react/client/Tools\";\nimport { DataRenderers } from \"../../react/client/DataRenderers\";\nimport { SingleThreadList } from \"./single-thread-list\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\nconst EMPTY_SUGGESTIONS: readonly ThreadSuggestion[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nconst COMPLETE_STATUS: MessagePartStatus = Object.freeze({\n type: \"complete\",\n});\n\nconst derivePartStatus = (\n message: ExternalThreadMessage,\n partIndex: number,\n part: ThreadAssistantMessagePart | ThreadUserMessagePart,\n): ToolCallMessagePartStatus => {\n if (!message.status) return COMPLETE_STATUS;\n return toMessagePartStatus(message, partIndex, part);\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 /**\n * Handler for re-fetching this thread's state in place, driving\n * `threads.reloadMainThread()`. Unrelated to `onReload`, which re-generates\n * an assistant message. Presence enables the `refetchThread` capability;\n * rejections propagate to the caller.\n */\n onRefetchThread?: (() => Promise<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 feedbackAdapter?: FeedbackAdapter | undefined;\n speechAdapter?: SpeechSynthesisAdapter | 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?: (\n options: RespondToToolApprovalOptions,\n ) => void | Promise<void>;\n unstable_onRecordToolInteraction?:\n | ((options: Unstable_RecordToolInteractionOptions) => void | Promise<void>)\n | undefined;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n isLast: boolean;\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 | Promise<void>)\n | undefined;\n unstable_onRecordToolInteraction?:\n | ((options: Unstable_RecordToolInteractionOptions) => void | Promise<void>)\n | undefined;\n onAddToolResult?: ((options: AddToolResultOptions) => void) | undefined;\n onResumeToolCall?: ((options: ResumeToolCallOptions) => void) | undefined;\n attachmentAdapter?: AttachmentAdapter | undefined;\n submittedFeedback:\n | { type: \"positive\" | \"negative\"; comment?: string }\n | undefined;\n onSubmitFeedback: (feedback: {\n type: \"positive\" | \"negative\";\n comment?: string;\n }) => void;\n speech: SpeechState | undefined;\n onSpeak: () => void;\n onStopSpeaking: () => void;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n isLast,\n parentId,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n unstable_onRecordToolInteraction,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback,\n onSubmitFeedback,\n speech,\n onSpeak,\n onStopSpeaking,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = 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 unstable_onRecordToolInteraction,\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 if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n if (!onEdit) throw new Error(\"Runtime does not support editing.\");\n onEdit({\n ...msg,\n parentId,\n sourceId: message.id,\n });\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n canCancel: true,\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 const messageWithFeedback: ExternalThreadMessage =\n submittedFeedback && message.role === \"assistant\"\n ? {\n ...message,\n metadata: {\n ...message.metadata,\n submittedFeedback,\n },\n }\n : message;\n return {\n ...messageWithFeedback,\n attachments: message.attachments ?? [],\n parentId,\n isLast,\n branchNumber,\n branchCount,\n speech,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n isLast,\n parentId,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n submittedFeedback,\n speech,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: onSpeak,\n stopSpeaking: onStopSpeaking,\n submitFeedback: onSubmitFeedback,\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 | Promise<void>)\n | undefined;\n unstable_onRecordToolInteraction?:\n | ((options: Unstable_RecordToolInteractionOptions) => void | Promise<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 unstable_onRecordToolInteraction,\n onAddToolResult,\n onResumeToolCall,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({ ...part, status: status as MessagePartStatus }),\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 void Promise.resolve()\n .then(() =>\n unstable_onRecordToolInteraction?.({\n messageId,\n toolCallId: part.toolCallId,\n interaction: createToolInteraction({\n type: \"human-response\",\n payload,\n }),\n }),\n )\n .catch(() => {});\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 const options = resolveToolApprovalResponse(part.approval, response);\n try {\n return Promise.resolve(onRespondToToolApproval(options));\n } catch (error) {\n return Promise.reject(error);\n }\n },\n unstable_recordInteraction: async (\n input: Unstable_ToolInteractionInput,\n ) => {\n if (!unstable_onRecordToolInteraction)\n throw new Error(\n \"Runtime does not support recording tool interactions.\",\n );\n if (part.type !== \"tool-call\")\n throw new Error(\"Tried to record interaction on non-tool message part\");\n\n await unstable_onRecordToolInteraction({\n messageId,\n toolCallId: part.toolCallId,\n interaction: createToolInteraction(input),\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\nconst EMPTY_MESSAGE_KEYS: readonly string[] = Object.freeze([]);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n canCancel: boolean;\n isRunning?: 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 /** `id|role` of each thread message, used to tell when a send has landed. */\n messageKeys?: readonly string[] | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onMove,\n onRemove,\n}: {\n item: QueueItemState;\n onMove: (placement: QueuePlacement) => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: () => onMove({ lane: \"steer\", insertAfter: null }),\n move: onMove,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\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// A try/catch inside the resource makes the React Compiler bail out of the\n// whole hook, so calls that can throw go through these module-scope helpers.\nconst removeAttachmentThroughAdapter = async (\n attachment: Attachment,\n attachmentAdapter: AttachmentAdapter | undefined,\n onError: (message: string) => void,\n) => {\n try {\n await attachmentAdapter?.remove(attachment);\n } catch (error) {\n onError(error instanceof Error ? error.message : String(error));\n throw error;\n }\n};\n\nconst dispatchSafely = (dispatch: () => void) => {\n try {\n dispatch();\n return undefined;\n } catch (error) {\n return { error };\n }\n};\n\n// A hidden thread keeps preparing its send, so only the owner's permanent\n// teardown aborts it, never an effect cleanup.\nconst abortOnDestroy = (\n destroySignal: AbortSignal | undefined,\n controller: AbortController,\n) => {\n if (!destroySignal) return () => {};\n const abort = () => controller.abort(destroySignal.reason);\n if (destroySignal.aborted) {\n abort();\n return () => {};\n }\n // A cancelled send can stay unsettled forever, so its abort unlinks too.\n const unlink = () => {\n destroySignal.removeEventListener(\"abort\", abort);\n controller.signal.removeEventListener(\"abort\", unlink);\n };\n destroySignal.addEventListener(\"abort\", abort, { once: true });\n controller.signal.addEventListener(\"abort\", unlink, { once: true });\n return unlink;\n};\n\ntype InTransitEntry = {\n readonly submission: ComposerSubmission;\n /** `id|role` of each thread message when the submission was dispatched. */\n readonly known: ReadonlySet<string>;\n};\n\nconst EMPTY_IN_TRANSIT: readonly InTransitEntry[] = Object.freeze([]);\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n canCancel,\n isRunning = false,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n attachmentAdapter,\n messageKeys = EMPTY_MESSAGE_KEYS,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [isEditing, setIsEditing, isEditingRef] = useLiveState(\n type === \"thread\",\n );\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 const attachmentAddOperations = useMemo(\n () => new AttachmentAddOperations(),\n [],\n );\n const attachmentSends = useMemo(() => new AttachmentSendOperations(), []);\n const destroySignal = useAssistantClientDestroySignal();\n const [submission, setSubmission, submissionRef] = useLiveState<\n ComposerSubmission | undefined\n >(undefined);\n const submissionSend = useRef<\n | {\n readonly options: ComposerSendOptions | undefined;\n readonly runConfig: Record<string, unknown>;\n readonly controller: AbortController;\n }\n | undefined\n >(undefined);\n const [inTransit, setInTransit] =\n useLiveState<readonly InTransitEntry[]>(EMPTY_IN_TRANSIT);\n const messageKeysRef = useRef(messageKeys);\n const sendGeneration = useRef(0);\n\n // A dispatched message stays on screen until the host shows it, so the two\n // never swap through an empty frame. Each new message of a send's role\n // stands in for the oldest send still waiting for one, and a shown send\n // leaves in the same render its message arrives in.\n const shown = useMemo(() => {\n const claimed = new Set<string>();\n const landed = new Set<InTransitEntry>();\n for (const entry of inTransit) {\n const key = messageKeys.find(\n (candidate) =>\n !entry.known.has(candidate) &&\n !claimed.has(candidate) &&\n candidate.endsWith(`|${entry.submission.role}`),\n );\n if (key === undefined) continue;\n claimed.add(key);\n landed.add(entry);\n }\n return { landed, claimed };\n }, [inTransit, messageKeys]);\n const inTransitSubmissions = useMemo(\n () =>\n inTransit\n .filter((entry) => !shown.landed.has(entry))\n .map((entry) => entry.submission),\n [inTransit, shown],\n );\n useEffect(() => {\n messageKeysRef.current = messageKeys;\n if (shown.landed.size === 0) return;\n // A message stands in for one send only, so the sends still waiting stop\n // counting it as new.\n setInTransit((prev) =>\n prev\n .filter((entry) => !shown.landed.has(entry))\n .map((entry) => ({\n ...entry,\n known: new Set([...entry.known, ...shown.claimed]),\n })),\n );\n }, [messageKeys, shown, setInTransit]);\n\n const updateFromMessage = () => {\n if (!message) return;\n const messageText = message.content\n .filter((part) => part.type === \"text\")\n .map((part) => part.text)\n .join(\"\\n\\n\");\n setText(messageText);\n setRole(message.role);\n // Re-seeding from the message abandons any removal begun in a previous\n // edit session, so the restored objects must shed their removal marks.\n const restored = message.attachments ?? [];\n for (const attachment of restored)\n attachmentSends.unmarkRemoved(attachment);\n setAttachments(restored);\n };\n\n const handleRemoveAttachment = useCallback(\n async (attachment: Attachment) => {\n attachmentAddOperations.cancel(attachment.id);\n attachmentSends.markRemoved(attachment);\n if (!isAttachmentComplete(attachment)) {\n await removeAttachmentThroughAdapter(\n attachment,\n attachmentAdapter,\n (message) =>\n setAttachments((prev) =>\n prev.map((candidate) =>\n candidate.id === attachment.id &&\n !isAttachmentComplete(candidate)\n ? attachmentSends.transfer(candidate, {\n ...candidate,\n status: { type: \"incomplete\", reason: \"error\", message },\n })\n : candidate,\n ),\n ),\n );\n }\n setAttachments((prev) => prev.filter((a) => a.id !== attachment.id));\n },\n [\n attachmentAddOperations,\n attachmentAdapter,\n attachmentSends,\n setAttachments,\n ],\n );\n\n // A submission is not delivered yet, so its attachments stay reachable by id\n // and can still be taken out of the message that is being sent.\n const handleRemoveSubmittedAttachment = useCallback(\n async (attachment: Attachment) => {\n attachmentAddOperations.cancel(attachment.id);\n attachmentSends.markRemoved(attachment);\n if (!isAttachmentComplete(attachment)) {\n // An attachment whose removal failed stays out of the message it was\n // taken from and shows why, so the removal can be tried again.\n await removeAttachmentThroughAdapter(\n attachment,\n attachmentAdapter,\n (message) =>\n setSubmission((prev) =>\n prev\n ? {\n ...prev,\n attachments: prev.attachments.map((candidate) => {\n if (\n candidate.id !== attachment.id ||\n isAttachmentComplete(candidate)\n )\n return candidate;\n const failed = attachmentSends.transfer(candidate, {\n ...candidate,\n status: {\n type: \"incomplete\",\n reason: \"error\",\n message,\n },\n });\n attachmentSends.markRemoved(failed);\n return failed;\n }),\n }\n : prev,\n ),\n );\n }\n setSubmission((prev) =>\n prev\n ? {\n ...prev,\n attachments: prev.attachments.filter(\n (a) => a.id !== attachment.id,\n ),\n }\n : prev,\n );\n },\n [\n attachmentAddOperations,\n attachmentAdapter,\n attachmentSends,\n setSubmission,\n ],\n );\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => handleRemoveAttachment(attachment),\n }),\n ),\n ),\n );\n\n const submittedAttachmentClients = useClientLookup(\n (submission?.attachments ?? [])\n .filter((attachment) => !attachments.some((a) => a.id === attachment.id))\n .map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => handleRemoveSubmittedAttachment(attachment),\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(async (a) => attachmentAdapter.remove(a)),\n );\n };\n\n const upsertAttachment = (attachment: Attachment) => {\n const current = submissionRef.current;\n if (current?.attachments.some((a) => a.id === attachment.id)) {\n setSubmission({\n ...current,\n attachments: current.attachments.map((a) =>\n a.id === attachment.id ? attachmentSends.transfer(a, attachment) : a,\n ),\n });\n return;\n }\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 steerItems = queue?.steerItems ?? EMPTY_QUEUE_ITEMS;\n const laneItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItems = useMemo(\n () =>\n steerItems.length === 0\n ? laneItems\n : laneItems.length === 0\n ? steerItems\n : [...steerItems, ...laneItems],\n [steerItems, laneItems],\n );\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onMove: (placement) => queue?.move(item.id, placement),\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: canCancel || submission !== undefined,\n canSend:\n isEditing && !isEmpty && !isSendDisabled && submission === undefined,\n attachmentAccept: attachmentAdapter?.accept ?? \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n submission,\n inTransit: inTransitSubmissions,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n submission,\n inTransitSubmissions,\n type,\n attachments.length,\n quote,\n queueItems,\n attachmentAdapter?.accept,\n ]);\n\n /** Ends the send being prepared, so nothing it started can dispatch it. */\n const endSubmission = () => {\n sendGeneration.current++;\n submissionSend.current = undefined;\n setSubmission(undefined);\n };\n\n // Takes a send's content back into the draft, ahead of anything written\n // since. An edit composer kept its draft, so it only takes back the state\n // the attachments came back in, such as the reason one failed.\n const returnToDraft = (content: ComposerSubmission) => {\n if (type !== \"thread\") {\n const returned = new Map(\n content.attachments.map((attachment) => [attachment.id, attachment]),\n );\n setAttachments((prev) =>\n prev.map((attachment) => returned.get(attachment.id) ?? attachment),\n );\n return;\n }\n const kept = content.attachments.filter(\n (attachment) => !attachmentSends.isRemoved(attachment),\n );\n setAttachments((prev) => [...kept, ...prev]);\n setText((prev) => [content.text, prev].filter(Boolean).join(\"\\n\"));\n setQuote((prev) => prev ?? content.quote);\n };\n\n const cancelSubmission = () => {\n const current = submissionRef.current;\n if (!current) return;\n submissionSend.current?.controller.abort();\n endSubmission();\n returnToDraft(current);\n };\n\n const discardSubmission = async () => {\n const current = submissionRef.current;\n if (!current) return;\n submissionSend.current?.controller.abort();\n endSubmission();\n // An attachment the draft still holds is removed along with the draft.\n const drafted = new Set(attachmentsRef.current.map((a) => a.id));\n await removePendingAttachments(\n current.attachments.filter((attachment) => !drafted.has(attachment.id)),\n );\n };\n\n const returnSubmissionToDraft = (\n sent: readonly Attachment[],\n settled: readonly PromiseSettledResult<CompleteAttachment>[],\n reason: unknown,\n ) => {\n const current = submissionRef.current;\n if (!current) return;\n const failures = new Map<string, unknown>();\n settled.forEach((result, index) => {\n if (result.status === \"rejected\")\n failures.set(sent[index]!.id, result.reason);\n });\n // Each attachment that could not be prepared carries its own reason, so\n // the draft it returns to shows which file needs another try.\n const attachments = current.attachments.map((attachment) => {\n if (!failures.has(attachment.id) || isAttachmentComplete(attachment))\n return attachment;\n const failure = failures.get(attachment.id);\n return attachmentSends.transfer(attachment, {\n ...attachment,\n status: {\n type: \"incomplete\",\n reason: \"error\",\n message: failure instanceof Error ? failure.message : String(failure),\n },\n });\n });\n endSubmission();\n returnToDraft({ ...current, attachments });\n console.error(\"Failed to send attachments\", reason);\n };\n\n const dispatchMessage = (\n current: ComposerSubmission,\n attachments: readonly CompleteAttachment[],\n context: {\n readonly options: ComposerSendOptions | undefined;\n readonly runConfig: Record<string, unknown>;\n },\n isSubmission: boolean,\n ) => {\n const composedMessage: AppendMessage = {\n role: current.role,\n content: current.text\n ? [{ type: \"text\" as const, text: current.text }]\n : [],\n attachments,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig: context.runConfig,\n startRun: context.options?.startRun,\n metadata: {\n custom: { ...(current.quote ? { quote: current.quote } : {}) },\n },\n };\n const sent: ComposerSubmission = { ...current, attachments };\n // edit sends carry a sourceId contract; only thread sends queue\n const queued = queue && type === \"thread\";\n if (isSubmission) {\n submissionSend.current = undefined;\n setSubmission(undefined);\n }\n // An edit keeps its draft, whose copies of these attachments are the\n // delivered ones now, so clearing that draft must not remove their uploads.\n if (isSubmission && type !== \"thread\") {\n const delivered = new Map(\n attachments.map((attachment) => [attachment.id, attachment]),\n );\n setAttachments((prev) =>\n prev.map((attachment) => delivered.get(attachment.id) ?? attachment),\n );\n }\n // A queued message has its own place in the UI, so only a thread send\n // stays in transit until the host shows it.\n const entry: InTransitEntry | undefined =\n isSubmission && type === \"thread\" && !queued\n ? { submission: sent, known: new Set(messageKeysRef.current) }\n : undefined;\n if (entry) setInTransit((prev) => [...prev, entry]);\n\n const failure = dispatchSafely(() => {\n if (queued) {\n if (context.options?.steer ?? isRunning) queue.steer(composedMessage);\n else queue.enqueue(composedMessage);\n } else {\n onSend?.(composedMessage);\n }\n });\n if (failure) {\n console.error(\"[assistant-ui] Failed to send the message\", failure.error);\n if (entry)\n setInTransit((prev) => prev.filter((candidate) => candidate !== entry));\n returnToDraft(sent);\n return;\n }\n if (type === \"edit\") {\n attachmentAddOperations.cancelAll();\n setIsEditing(false);\n }\n };\n\n const prepareSubmission = async (generation: number) => {\n const context = submissionSend.current;\n if (!context) return;\n const { signal } = context.controller;\n if (signal.aborted) return;\n\n const uploads = (submissionRef.current?.attachments ?? []).flatMap(\n (attachment) => {\n const upload = attachmentAddOperations.whenSendable(attachment.id);\n return upload ? [upload] : [];\n },\n );\n if (uploads.length > 0) {\n // An attachment still uploading in `add()` cannot be finalized yet, so\n // the submission waits for its latest state.\n await Promise.all(uploads);\n if (generation !== sendGeneration.current || signal.aborted) return;\n }\n\n const current = submissionRef.current;\n if (!current) return;\n const sent = current.attachments.filter(\n (attachment) => !attachmentSends.isRemoved(attachment),\n );\n for (const attachment of sent)\n attachmentAddOperations.cancel(attachment.id);\n\n const settled = await Promise.allSettled(\n sent.map((attachment) =>\n attachmentSends.send(attachment, attachmentAdapter, signal),\n ),\n );\n if (generation !== sendGeneration.current || signal.aborted) return;\n\n const rejection = settled.find((result) => result.status === \"rejected\");\n if (rejection) {\n returnSubmissionToDraft(sent, settled, rejection.reason);\n return;\n }\n\n // An attachment removed mid-upload can't be cancelled, but it can still be\n // dropped from the outgoing message instead of silently being sent anyway.\n const finalAttachments = settled.flatMap((result, index) =>\n attachmentSends.isRemoved(sent[index]!) || result.status === \"rejected\"\n ? []\n : [result.value],\n );\n dispatchMessage(\n submissionRef.current ?? current,\n finalAttachments,\n context,\n true,\n );\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 const operation = attachmentAddOperations.start();\n try {\n await drainAttachmentAdd(\n attachmentAdapter.add({ file: fileOrAttachment }),\n (attachment) => {\n if (!attachmentAddOperations.accept(operation, attachment))\n return false;\n upsertAttachment(attachment);\n return true;\n },\n );\n attachmentAddOperations.finish(operation);\n } catch (error) {\n attachmentAddOperations.finish(operation);\n if (!attachmentAddOperations.isCancelled(operation)) throw error;\n }\n } else if (!isCreateAttachment(fileOrAttachment)) {\n const newAttachment: Attachment = {\n id: generateId(),\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 ?? generateId(),\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 attachmentAddOperations.cancelAll();\n const removed = attachmentsRef.current;\n if (submissionRef.current) {\n for (const attachment of removed)\n attachmentSends.markRemoved(attachment);\n }\n setAttachments([]);\n await removePendingAttachments(removed);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n const submitted = submission?.attachments.some(\n (attachment) => attachment.id === selector.id,\n );\n const inDraft = attachments.some(\n (attachment) => attachment.id === selector.id,\n );\n if (submitted && !inDraft)\n return submittedAttachmentClients.get({ key: selector.id });\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n attachmentAddOperations.cancelAll();\n sendGeneration.current++;\n const discarded = discardSubmission();\n const removed = attachmentsRef.current;\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n await Promise.all([removePendingAttachments(removed), discarded]);\n },\n send: (opts?: ComposerSendOptions) => {\n // An attachment whose removal is still awaiting the adapter is excluded\n // up front, or a send started mid-removal would upload and dispatch it.\n const currentAttachments = attachmentsRef.current.filter(\n (attachment) => !attachmentSends.isRemoved(attachment),\n );\n const isEmpty = !textRef.current.trim() && !currentAttachments.length;\n if (!isEditingRef.current) throw new Error(\"Composer is not available\");\n if (isEmpty || isSendDisabled || submissionRef.current) return;\n\n const submitted: ComposerSubmission = {\n id: generateId(),\n role: roleRef.current,\n text: textRef.current,\n quote: quoteRef.current,\n attachments: currentAttachments,\n };\n const context = { options: opts, runConfig: runConfigRef.current };\n // Only a send whose attachments still need the adapter becomes a\n // submission; one with nothing left to prepare goes out right away, as\n // it always has, and never shows up as a row of its own.\n const complete = currentAttachments.filter(isAttachmentComplete);\n const ready = complete.length === currentAttachments.length;\n const controller = ready ? undefined : new AbortController();\n if (controller) {\n submissionSend.current = { ...context, controller };\n setSubmission(submitted);\n }\n if (type === \"thread\") {\n const detached = new Set(currentAttachments);\n setAttachments((prev) =>\n prev.filter((attachment) => !detached.has(attachment)),\n );\n setText(\"\");\n setQuote(undefined);\n }\n const generation = ++sendGeneration.current;\n if (!controller) {\n dispatchMessage(submitted, complete, context, false);\n return;\n }\n const release = abortOnDestroy(destroySignal, controller);\n void prepareSubmission(generation).finally(release);\n },\n cancel: () => {\n // Stopping takes a send still being prepared back into the draft and\n // still stops a run that is going, so the one control never loses either.\n if (type === \"thread\" && submissionRef.current) {\n cancelSubmission();\n if (canCancel) onCancel?.();\n return;\n }\n // An edit session ends here, so its in-flight adapter adds must not\n // land in a later session; the thread composer's cancel stops the run\n // and leaves the draft (and its pending adds) alone.\n if (type === \"edit\") {\n attachmentAddOperations.cancelAll();\n sendGeneration.current++;\n void discardSubmission();\n const removed = attachmentsRef.current;\n setAttachments([]);\n removePendingAttachments(removed).catch((error) => {\n console.error(\"Failed to remove cancelled edit attachments\", error);\n });\n }\n onCancel?.();\n if (type === \"edit\") setIsEditing(false);\n },\n beginEdit: () => {\n onBeginEdit?.();\n if (type === \"thread\") return;\n if (isEditingRef.current) throw new Error(\"Edit already in progress\");\n setIsEditing(true);\n updateFromMessage();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number } | { id: string }) => {\n if (\"id\" in selector) {\n return queueItemClients.get({ key: selector.id });\n }\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\nconst createSpeechController = (\n notify: (speech: SpeechState | undefined) => void,\n) => {\n let session: { messageId: string; cancel: () => void } | undefined;\n\n const clear = () => {\n if (!session) return;\n session.cancel();\n session = undefined;\n notify(undefined);\n };\n\n return {\n speak: (\n adapter: SpeechSynthesisAdapter,\n message: ExternalThreadMessage,\n ) => {\n clear();\n\n const utterance = adapter.speak(getThreadMessageText(message));\n let unsub: (() => void) | undefined;\n unsub = utterance.subscribe(() => {\n if (utterance.status.type === \"ended\") {\n unsub?.();\n session = undefined;\n notify(undefined);\n } else {\n notify({ messageId: message.id, status: utterance.status });\n }\n });\n\n if (utterance.status.type === \"ended\") {\n unsub();\n notify(undefined);\n return;\n }\n\n session = {\n messageId: message.id,\n cancel: () => {\n unsub!();\n utterance.cancel();\n },\n };\n notify({ messageId: message.id, status: utterance.status });\n },\n stop: () => {\n if (!session) throw new Error(\"No message is being spoken\");\n clear();\n },\n stopMessage: (messageId: string) => {\n if (session?.messageId !== messageId)\n throw new Error(\"Message is not being spoken\");\n clear();\n },\n dispose: clear,\n };\n};\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 onRefetchThread,\n onAddToolResult,\n onResumeToolCall,\n unstable_onRecordToolInteraction,\n onLoadExternalState,\n attachmentAdapter,\n feedbackAdapter,\n speechAdapter,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const messages = useMemo(\n () => dedupeMessagesById(messagesProp),\n [messagesProp],\n );\n\n // Local entries are optimistic: they apply only while the message's\n // external submittedFeedback still equals the value seen at click time.\n const [submittedFeedback, setSubmittedFeedback] = useState<\n Record<\n string,\n {\n feedback: { type: \"positive\" | \"negative\"; comment?: string };\n external:\n | {\n readonly type: \"positive\" | \"negative\";\n readonly comment?: string;\n }\n | undefined;\n }\n >\n >({});\n\n const feedbackFor = (msg: ExternalThreadMessage) => {\n const entry = submittedFeedback[msg.id];\n const external = msg.metadata.submittedFeedback;\n return entry &&\n external?.type === entry.external?.type &&\n external?.comment === entry.external?.comment\n ? entry.feedback\n : undefined;\n };\n\n // `messages` changes identity on every streamed token, and this body fans out\n // to one client per message, so pruning during render would re-run the whole\n // fan-out per token. The effect bails out on an unchanged map instead.\n useEffect(() => {\n // eslint-disable-next-line react-hooks/set-state-in-effect\n setSubmittedFeedback((prev) => {\n const live = Object.entries(prev).filter(([id, entry]) => {\n const msg = messages.find((m) => m.id === id);\n return (\n !!msg &&\n msg.metadata.submittedFeedback?.type === entry.external?.type &&\n msg.metadata.submittedFeedback?.comment === entry.external?.comment\n );\n });\n return live.length === Object.keys(prev).length\n ? prev\n : Object.fromEntries(live);\n });\n }, [messages]);\n\n const handleSubmitFeedback = (\n message: ExternalThreadMessage,\n feedback: { type: \"positive\" | \"negative\"; comment?: string },\n ) => {\n const comment = feedback.comment?.trim();\n const submittedFeedback = {\n type: feedback.type,\n ...(comment ? { comment } : undefined),\n };\n feedbackAdapter?.submit({ message, ...submittedFeedback });\n\n if (message.role === \"assistant\") {\n setSubmittedFeedback((prev) => ({\n ...prev,\n [message.id]: {\n feedback: submittedFeedback,\n external: message.metadata.submittedFeedback,\n },\n }));\n }\n };\n\n const [speechState, setSpeech] = useState<SpeechState | undefined>(undefined);\n const [speechController] = useState(() => createSpeechController(setSpeech));\n\n const hasSpeechAdapter = !!speechAdapter;\n const speech = hasSpeechAdapter ? speechState : undefined;\n useEffect(() => {\n if (!hasSpeechAdapter) speechController.dispose();\n }, [hasSpeechAdapter, speechController]);\n\n useEffect(() => () => speechController.dispose(), [speechController]);\n\n const handleSpeak = (message: ExternalThreadMessage) => {\n if (!speechAdapter) throw new Error(\"Speech adapter not configured\");\n speechController.speak(speechAdapter, message);\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 onReload?.(parentId);\n };\n\n const messageKeys = useMemo(\n () => messages.map((message) => `${message.id}|${message.role}`),\n [messages],\n );\n\n const handleCancelRun = () => {\n // Nothing is aborted without a handler, so pausing the queue would hold\n // the pending items against a run that keeps going.\n if (!onCancel) return;\n\n // Before the run is aborted, so the settle it produces keeps the pending\n // items instead of dispatching the next one at the moment the user\n // stopped.\n queue?.__internal_notifyCancelled?.();\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 hasCancel = !!onCancel;\n const hasRefetchThread = !!onRefetchThread;\n const composerQueue = useMemo(\n (): ExternalThreadQueueAdapter | undefined =>\n queue && {\n ...queue,\n enqueue: (message) =>\n queue.enqueue({ ...message, parentId: message.parentId ?? headId }),\n steer: (message) =>\n queue.steer({ ...message, parentId: message.parentId ?? headId }),\n },\n [queue, headId],\n );\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n canCancel: isRunning && hasCancel,\n isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue: composerQueue,\n attachmentAdapter,\n messageKeys,\n }),\n );\n const submission = composerClient.state.submission;\n const inTransit = composerClient.state.inTransit;\n // Messages the composer sent that the host does not show yet render after\n // the thread's own, oldest first, so a send never leaves the conversation.\n const pending = useMemo(\n () => [...(inTransit ?? []), ...(submission ? [submission] : [])],\n [inTransit, submission],\n );\n const hasPending = pending.length > 0;\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n isLast: index === messages.length - 1 && !hasPending,\n parentId: index > 0 ? messages[index - 1]!.id : null,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n unstable_onRecordToolInteraction,\n onAddToolResult,\n onResumeToolCall,\n attachmentAdapter,\n submittedFeedback: feedbackFor(msg),\n onSubmitFeedback: (feedback) => handleSubmitFeedback(msg, feedback),\n speech: speech?.messageId === msg.id ? speech : undefined,\n onSpeak: () => handleSpeak(msg),\n onStopSpeaking: () => speechController.stopMessage(msg.id),\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const pendingMessages = useMemo(\n () => pending.map(submissionThreadMessage),\n [pending],\n );\n const pendingClients = useClientLookup(\n pending.map((row, index) =>\n withKey(\n row.id,\n ThreadMessageClient({\n message: pendingMessages[index]!,\n submission: row,\n index: messages.length + index,\n isLast: index === pending.length - 1,\n }),\n [pendingMessages[index], row, messages.length, index, pending.length],\n ),\n ),\n );\n\n const taskDeriver = useMemo(() => createTaskDeriver(), []);\n const tasks = useMemo(() => taskDeriver(messages), [taskDeriver, messages]);\n const taskClients = useClientLookup(\n tasks.map((task) =>\n withKey(getTaskKey(task), TaskClient({ task }), [task]),\n ),\n );\n\n const suggestionsClient = useClientResource(\n ThreadSuggestions(EMPTY_SUGGESTIONS),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const hasEdit = !!onEdit;\n const hasReload = !!onReload;\n const hasAttachments = !!attachmentAdapter;\n const hasFeedback = !!feedbackAdapter;\n const hasSpeech = !!speechAdapter;\n const state = useMemo(() => {\n const messageStates =\n pendingClients.state.length === 0\n ? messageClients.state\n : [...messageClients.state, ...pendingClients.state];\n\n return {\n isEmpty: messageStates.length === 0 && !isLoading,\n isDisabled: false,\n isLoading,\n isRunning,\n capabilities: {\n edit: hasEdit,\n delete: false,\n reload: hasReload,\n refetchThread: hasRefetchThread,\n cancel: hasCancel,\n speech: hasSpeech,\n attachments: hasAttachments,\n feedback: hasFeedback,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n tasks,\n state: threadState ?? {},\n suggestions: EMPTY_SUGGESTIONS,\n extras,\n speech,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n isRunning,\n isLoading,\n threadState,\n extras,\n hasQueue,\n hasBranches,\n hasEdit,\n hasReload,\n hasCancel,\n hasRefetchThread,\n hasAttachments,\n hasFeedback,\n hasSpeech,\n speech,\n messageClients.state,\n pendingClients.state,\n composerClient.state,\n tasks,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n suggestions: () => suggestionsClient.methods,\n task: (selector) => {\n if (\"id\" in selector) {\n const task = tasks.find((candidate) => candidate.id === selector.id);\n return taskClients.get({ key: task ? getTaskKey(task) : selector.id });\n }\n return taskClients.get(selector);\n },\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:\n message.parentId === undefined\n ? (messages.at(-1)?.id ?? null)\n : message.parentId,\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);\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 ...(onRefetchThread && { unstable_refetchThread: onRefetchThread }),\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 if (pending.some((row) => row.id === selector.id))\n return pendingClients.get({ key: selector.id });\n return messageClients.get({ key: selector.id });\n }\n if (selector.index >= messageClients.state.length)\n return pendingClients.get({\n index: selector.index - messageClients.state.length,\n });\n return messageClients.get(selector);\n },\n stopSpeaking: speechController.stop,\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 mount in key order; re-declare thread after the threads source it resolves from\n delete scopes.thread;\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 = Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread.suggestions(),\n });\n }\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAsEA,MAAM8D,oBAA+C,CAAA;AACrD,MAAMC,mBAAsC,CAAA;AAC5C,MAAMC,oBAAiD,CAAA;AAMvD,MAAMG,kBAAqCC,OAAOC,OAAO,EACvDC,MAAM,WACR,CAAC;AAED,MAAMC,oBACJC,SACAC,WACAC,SAC8B;CAC9B,IAAI,CAACF,QAAQG,QAAQ,OAAOR;CAC5B,OAAOf,oBAAoBoB,SAASC,WAAWC,IAAI;AACrD;AAmFA,MAAMuC,oBAAmBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAA5C,SAAAgC,OAAAC,QAAAnB,UAAAF,QAAAC,UAAAc,OAAAC,UAAAC,yBAAAC,kCAAAV,iBAAAE,kBAAAE,mBAAAU,mBAAAE,kBAAAE,QAAAC,SAAAC,mBAAAE;CAoBxB,MAAA,CAAAG,UAAAC,eAAgCtH,SAAS,KAAK;CAC9C,MAAA,CAAAuH,YAAAC,iBAAoCxH,SAAS,KAAK;CAAE,IAAAyH;CAAA,IAAAN,EAAA,OAAA3C,WAAA2C,EAAA,OAAAvB,mBAAAuB,EAAA,OAAAd,2BAAAc,EAAA,OAAArB,oBAAAqB,EAAA,OAAAb,kCAAA;EAGlDmB,KAAAjD,QAAOkD,QAAQC,KAAKjD,MAAAkD,QAClBtH,QACEsH,KACAC,aAAa;GAAAnD;GAAAC,QAEHJ,iBAAiBC,SAASoD,KAAKlD,IAAI;GAACoD,WACjCtD,QAAON;GAAGmC;GAAAC;GAAAV;GAAAE;EAKvB,CAAC,CACH,CACF;EAACqB,EAAA,KAAA3C;EAAA2C,EAAA,KAAAvB;EAAAuB,EAAA,KAAAd;EAAAc,EAAA,KAAArB;EAAAqB,EAAA,KAAAb;EAAAa,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAdH,MAAAY,cAAoBrH,gBAClB+G,EAcF;CAAE,IAAAO;CAAA,IAAAb,EAAA,OAAA3C,QAAAyD,aAAA;EAGCD,KAAAxD,QAAOyD,eAAP,CAAA;EAAyBd,EAAA,KAAA3C,QAAAyD;EAAAd,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CAAA,IAAAe;CAAA,IAAAf,EAAA,OAAAa,IAAA;EAA1BE,KAACF,GAAyBL,IAAMQ,MAQhC;EAAChB,EAAA,KAAAa;EAAAb,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CATH,MAAAiB,oBAA0B1H,gBACxBwH,EASF;CAAE,IAAAG;CAAA,IAAAlB,EAAA,QAAA/B,QAAA;EAEsBiD,WAAA;GACtB,IAAI,CAACjD,QAAQ,MAAM,IAAIkD,MAAM,mCAAmC;EAAE;EACnEnB,EAAA,MAAA/B;EAAA+B,EAAA,MAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAFD,MAAAoB,kBAAwBF;CAEtB,IAAAG;CAAA,IAAArB,EAAA,QAAA3C,QAAAN,MAAAiD,EAAA,QAAA/B,UAAA+B,EAAA,QAAA7B,UAAA;EAEqBkD,MAAAC,QAAA;GACrB,IAAI,CAACrD,QAAQ,MAAM,IAAIkD,MAAM,mCAAmC;GAChElD,OAAO;IAAA,GACFqD;IAAGnD;IAAAoD,UAEIlE,QAAON;GACnB,CAAC;EAAC;EACHiD,EAAA,MAAA3C,QAAAN;EAAAiD,EAAA,MAAA/B;EAAA+B,EAAA,MAAA7B;EAAA6B,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAPD,MAAAwB,iBAAuBH;CAOrB,IAAAI;CAAA,IAAAzB,EAAA,QAAAnB,qBAAAmB,EAAA,QAAAoB,mBAAApB,EAAA,QAAAwB,kBAAAxB,EAAA,QAAA3C,WAAA2C,EAAA,QAAAhB,OAAA;EAGAyC,KAAAC,uBAAuB;GAAAvE,MACf;GAAMwE,WACD;GAAIC,aACFR;GAAeS,QACpBL;GAAcnE;GAAA2B;GAAAH;EAIxB,CAAC;EAACmB,EAAA,MAAAnB;EAAAmB,EAAA,MAAAoB;EAAApB,EAAA,MAAAwB;EAAAxB,EAAA,MAAA3C;EAAA2C,EAAA,MAAAhB;EAAAgB,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CATJ,MAAA8B,iBAAuBrI,kBACrBgI,EASF;CAAE,IAAAM;CAAA,IAAAC;CAAA,IAAAhC,EAAA,QAAAf,YAAAe,EAAA,QAAA3C,QAAAN,IAAA;EAEFgF,YAAkB9C,UAAQgD,YAAc5E,QAAON,EAAuB,KAApDH;EACEoF,KAAAD,UAASG,QAAS7E,QAAON,EAAG;EAACiD,EAAA,MAAAf;EAAAe,EAAA,MAAA3C,QAAAN;EAAAiD,EAAA,MAAA+B;EAAA/B,EAAA,MAAAgC;CAAA,OAAA;EAAAD,YAAA/B,EAAA;EAAAgC,KAAAhC,EAAA;CAAA;CAAjD,MAAAmC,cAAoBH;CACpB,MAAAI,eAAqBD,gBAAgB,KAAhB,IAAyBA,cAAc;CAC5D,MAAAE,cAAoBF,gBAAgB,KAAhB,IAAyBJ,UAASO;CAAQ,IAAAC;CAAA,IAAAvC,EAAA,QAAA3C,WAAA2C,EAAA,QAAAT,mBAAA;EAI1DgD,KAAAhD,qBAAqBlC,QAAOmF,SAAU,cAAtC;GAAA,GAESnF;GAAOoF,UACA;IAAA,GACLpF,QAAOoF;IAASlD;GAErB;EAEI,IARVlC;EAQW2C,EAAA,MAAA3C;EAAA2C,EAAA,MAAAT;EAAAS,EAAA,MAAAuC;CAAA,OAAAA,KAAAvC,EAAA;CATb,MAAA0C,sBACEH;CAQY,IAAAI;CAAA,IAAA3C,EAAA,QAAA3C,QAAAyD,aAAA;EAGC6B,KAAAtF,QAAOyD,eAAP,CAAA;EAAyBd,EAAA,MAAA3C,QAAAyD;EAAAd,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAAA,IAAA4C;CAAA,IAAA5C,EAAA,QAAAqC,eAAArC,EAAA,QAAAoC,gBAAApC,EAAA,QAAA8B,eAAAjE,SAAAmC,EAAA,QAAAX,SAAAW,EAAA,QAAAE,YAAAF,EAAA,QAAAI,cAAAJ,EAAA,QAAAV,UAAAU,EAAA,QAAA0C,uBAAA1C,EAAA,QAAA7B,YAAA6B,EAAA,QAAAY,YAAA/C,SAAAmC,EAAA,QAAAL,UAAAK,EAAA,QAAA2C,IAAA;EAFjCC,MAAA;GAAA,GACFF;GAAmB5B,aACT6B;GAAyBxE;GAAAmB;GAAA8C;GAAAC;GAAA1C;GAAAkD,OAM/BjC,YAAW/C;GAAMqC;GAAAE;GAAAf;GAAAyD,UAIdhB,eAAcjE;EAC1B;EAACmC,EAAA,MAAAqC;EAAArC,EAAA,MAAAoC;EAAApC,EAAA,MAAA8B,eAAAjE;EAAAmC,EAAA,MAAAX;EAAAW,EAAA,MAAAE;EAAAF,EAAA,MAAAI;EAAAJ,EAAA,MAAAV;EAAAU,EAAA,MAAA0C;EAAA1C,EAAA,MAAA7B;EAAA6B,EAAA,MAAAY,YAAA/C;EAAAmC,EAAA,MAAAL;EAAAK,EAAA,MAAA2C;EAAA3C,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CAxBH,MAAAnC,QAWE+E;CA2BC,IAAAG;CAAA,IAAA/C,EAAA,QAAAnC,OAAA;EAGSkF,YAAMlF;EAAKmC,EAAA,MAAAnC;EAAAmC,EAAA,MAAA+C;CAAA,OAAAA,MAAA/C,EAAA;CAAA,IAAAgD;CAAA,IAAAhD,EAAA,QAAA8B,eAAAmB,SAAA;EACXD,YAAMlB,eAAcmB;EAAQjD,EAAA,MAAA8B,eAAAmB;EAAAjD,EAAA,MAAAgD;CAAA,OAAAA,MAAAhD,EAAA;CAAA,IAAAkD;CAAA,IAAAlD,EAAA,QAAA9B,UAAA;EAE9BgF,YAAA;GACNhF,WAAW;EAAC;EACb8B,EAAA,MAAA9B;EAAA8B,EAAA,MAAAkD;CAAA,OAAAA,MAAAlD,EAAA;CAAA,IAAAmD;CAAA,IAAAnD,EAAA,QAAA+B,aAAA/B,EAAA,QAAAmC,eAAAnC,EAAA,QAAAf,YAAAe,EAAA,QAAA3C,QAAAN,IAAA;EAIeoG,OAAAC,QAAA;GAAC,MAAA,EAAAC,UAAAC,aAAAF;GACf,IAAI,CAACnE,UAAQ;GACb,MAAAsE,SACED,aACCnB,gBAAgB,KAAhBqB,KAAAA,IAEGH,aAAa,aACXtB,UAAUI,cAAc,KACxBkB,aAAa,SACXtB,UAAUI,cAAc,KAD1BqB,KAAAA;GAGR,IAAID,WAAWC,KAAAA,KAAaD,WAAWlG,QAAON,IAC5CkC,SAAQwE,eAAgBF,MAAM;EAAE;EACnCvD,EAAA,MAAA+B;EAAA/B,EAAA,MAAAmC;EAAAnC,EAAA,MAAAf;EAAAe,EAAA,MAAA3C,QAAAN;EAAAiD,EAAA,MAAAmD;CAAA,OAAAA,MAAAnD,EAAA;CAAA,IAAAoD;CAAA,IAAApD,EAAA,QAAA3C,SAAA;EACY+F,YAAM3H,qBAAqB4B,OAAO;EAAC2C,EAAA,MAAA3C;EAAA2C,EAAA,MAAAoD;CAAA,OAAAA,MAAApD,EAAA;CAAA,IAAA0D;CAAA,IAAA1D,EAAA,QAAAY,eAAAZ,EAAA,QAAAnC,OAAA;EAC1C6F,OAAAC,aAAA;GACJ,IAAI,WAAWA,UAAQ,OACd/C,YAAWgD,IAAKD,QAAQ;GAEjC,MAAArG,YAAkBO,MAAKgF,MAAMgB,WAC3BC,MAAOA,EAAC3G,SAAU,eAAe2G,EAACC,eAAgBJ,SAAQI,UAC5D;GAAE,OACKnD,YAAWgD,IAAK,EAAAvE,OAAS/B,UAAU,CAAC;EAAC;EAC7C0C,EAAA,MAAAY;EAAAZ,EAAA,MAAAnC;EAAAmC,EAAA,MAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAAA,IAAAgE;CAAA,IAAAhE,EAAA,QAAAiB,mBAAA;EACW+C,OAAAC,eAAA;GACV,IAAI,QAAQN,YAAQ,OACX1C,kBAAiB2C,IAAK,EAAAM,KAAOP,WAAQ5G,GAAI,CAAC;GAClD,OACMkE,kBAAiB2C,IAAKD,UAAQ;EAAC;EACvC3D,EAAA,MAAAiB;EAAAjB,EAAA,MAAAgE;CAAA,OAAAA,MAAAhE,EAAA;CAAA,IAAAmE;CAAA,IAAAnE,EAAA,QAAAJ,WAAAI,EAAA,QAAAH,kBAAAG,EAAA,QAAAP,oBAAAO,EAAA,QAAA+C,OAAA/C,EAAA,QAAAgD,OAAAhD,EAAA,QAAAkD,OAAAlD,EAAA,QAAAmD,OAAAnD,EAAA,QAAAoD,OAAApD,EAAA,QAAA0D,OAAA1D,EAAA,QAAAgE,KAAA;EAvCIG,MAAA;GAAAC,UACKrB;GAAWD,UACXE;GAA4BqB,QAC9BC;GAAQC,QACRrB;GAEPsB,OACM5E;GAAO6E,cACA5E;GAAc6E,gBACZjF;GAAgBgE,gBAChBN;GAafwB,aACYvB;GAAmC7F,MAC1CmG;GAQLkB,YACWZ;GAKX7D;GAAAE;EAGH;EAACL,EAAA,MAAAJ;EAAAI,EAAA,MAAAH;EAAAG,EAAA,MAAAP;EAAAO,EAAA,MAAA+C;EAAA/C,EAAA,MAAAgD;EAAAhD,EAAA,MAAAkD;EAAAlD,EAAA,MAAAmD;EAAAnD,EAAA,MAAAoD;EAAApD,EAAA,MAAA0D;EAAA1D,EAAA,MAAAgE;EAAAhE,EAAA,MAAAmE;CAAA,OAAAA,MAAAnE,EAAA;CAAA,OA1CMmE;AA0CN;AAGH,MAAMU,gBAAgB3L,SAAS4G,gBAAgB;AAiB/C,MAAMiF,mBAAkBhF,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAA1C,MAAAC,QAAAmD,WAAAzB,yBAAAC,kCAAAV,iBAAAE,qBAAAoB;CAUK,MAAAO,KAAA9C;CAA2B,IAAAqD;CAAA,IAAAb,EAAA,OAAAzC,QAAAyC,EAAA,OAAAM,IAAA;EAA9CO,KAAA;GAAA,GAAKtD;GAAIC,QAAU8C;EAA4B;EAACN,EAAA,KAAAzC;EAAAyC,EAAA,KAAAM;EAAAN,EAAA,KAAAa;CAAA,OAAAA,KAAAb,EAAA;CADzD,MAAAnC,QACSgD;CAEP,IAAAE;CAAA,IAAAf,EAAA,OAAAnC,OAAA;EAGUkD,WAAMlD;EAAKmC,EAAA,KAAAnC;EAAAmC,EAAA,KAAAe;CAAA,OAAAA,KAAAf,EAAA;CAAA,IAAAkB;CAAA,IAAAlB,EAAA,OAAAW,aAAAX,EAAA,OAAAvB,mBAAAuB,EAAA,OAAAzC,MAAA;EACN2D,MAAA8D,WAAA;GACb,IAAI,CAACvG,iBACH,MAAM,IAAI0C,MACR,qEACF;GACF,IAAI5D,KAAIJ,SAAU,aAChB,MAAM,IAAIgE,MAAM,mDAAmD;GAErE,MAAA8D,WAAiB7J,aAAY8J,WAAYF,MAAM;GAC/CvG,gBAAgB;IAAAkC;IAAAwE,UAEJ5H,KAAI4H;IAASpB,YACXxG,KAAIwG;IAAWiB,QACnBC,SAAQD;IAA4BI,SACnCH,SAAQG;IAAQ,GACrBH,SAAQI,aAAc7B,KAAAA,KAAtB,EAAA6B,UAA+CJ,SAAQI,SAAU;IAAC,GAClEJ,SAAQK,iBAAkB9B,KAAAA,KAA1B,EAAA8B,cACYL,SAAQK,aACxB;GACF,CAAC;EAAC;EACHtF,EAAA,KAAAW;EAAAX,EAAA,KAAAvB;EAAAuB,EAAA,KAAAzC;EAAAyC,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,OAAAW,aAAAX,EAAA,QAAArB,oBAAAqB,EAAA,QAAAzC,QAAAyC,EAAA,QAAAb,kCAAA;EACekC,MAAAkE,YAAA;GACd,IAAI,CAAC5G,kBACH,MAAM,IAAIwC,MACR,6EACF;GACF,IAAI5D,KAAIJ,SAAU,aAChB,MAAM,IAAIgE,MAAM,oDAAoD;GAEtExC,iBAAiB;IAAAoF,YAAcxG,KAAIwG;IAAWwB;GAAU,CAAC;GACpD/G,QAAOgH,QAAS,CAAC,CAAAC,WAElBtG,mCAAmC;IAAAwB;IAAAoD,YAErBxG,KAAIwG;IAAW2B,aACd/J,sBAAsB;KAAAwB,MAC3B;KAAgBoI;IAExB,CAAC;GACH,CAAC,CACH,CAAC,CAAAI,MACMC,MAAQ;EAAC;EACnB5F,EAAA,KAAAW;EAAAX,EAAA,MAAArB;EAAAqB,EAAA,MAAAzC;EAAAyC,EAAA,MAAAb;EAAAa,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,IAAAyB;CAAA,IAAAzB,EAAA,QAAAd,2BAAAc,EAAA,QAAAzC,MAAA;EACsBkE,MAAAoE,eAAA;GACrB,IAAI,CAAC3G,yBACH,MAAM,IAAIiC,MAAM,0CAA0C;GAE5D,IAAI5D,KAAIJ,SAAU,aAChB,MAAM,IAAIgE,MACR,4DACF;GAEF,IACE,CAAC5D,KAAIuI,YACLvI,KAAIuI,SAASC,aAAcvC,KAAAA,KAC3BjG,KAAIuI,SAASE,eAAgBxC,KAAAA,GAE7B,MAAM,IAAIrC,MAAM,mCAAmC;GAErD,MAAAzC,UAAgBhD,4BAA4B6B,KAAIuI,UAAWb,UAAQ;GACnE,IAAA;IAAA,OACSzG,QAAOgH,QAAStG,wBAAwBR,OAAO,CAAC;GAAC,SAAAsD,IAAA;IACjDiE,MAAAA,QAAAA;IAAK,OACLzH,QAAO0H,OAAQD,KAAK;GAAC;EAC7B;EACFjG,EAAA,MAAAd;EAAAc,EAAA,MAAAzC;EAAAyC,EAAA,MAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAAA,IAAAgC;CAAA,IAAAhC,EAAA,QAAAW,aAAAX,EAAA,QAAAzC,QAAAyC,EAAA,QAAAb,kCAAA;EAC2B6C,KAAA,OAAAmE,UAAA;GAG1B,IAAI,CAAChH,kCACH,MAAM,IAAIgC,MACR,uDACF;GACF,IAAI5D,KAAIJ,SAAU,aAChB,MAAM,IAAIgE,MAAM,sDAAsD;GAExE,MAAMhC,iCAAiC;IAAAwB;IAAAoD,YAEzBxG,KAAIwG;IAAW2B,aACd/J,sBAAsBwK,KAAK;GAC1C,CAAC;EAAC;EACHnG,EAAA,MAAAW;EAAAX,EAAA,MAAAzC;EAAAyC,EAAA,MAAAb;EAAAa,EAAA,MAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CAAA,IAAAuC;CAAA,IAAAvC,EAAA,QAAAe,MAAAf,EAAA,QAAAkB,MAAAlB,EAAA,QAAAqB,MAAArB,EAAA,QAAAyB,MAAAzB,EAAA,QAAAgC,IAAA;EAnFIO,KAAA;GAAA6B,UACKrD;GAAWqF,eACNlF;GAoBdmF,gBACehF;GAqBfiF,uBACsB7E;GAsBtB8E,4BAC2BvE;EAgB9B;EAAChC,EAAA,MAAAe;EAAAf,EAAA,MAAAkB;EAAAlB,EAAA,MAAAqB;EAAArB,EAAA,MAAAyB;EAAAzB,EAAA,MAAAgC;EAAAhC,EAAA,MAAAuC;CAAA,OAAAA,KAAAvC,EAAA;CAAA,OApFMuC;AAoFN;AAGH,MAAM7B,eAAexH,SAAS6L,eAAe;AAQ7C,MAAM2B,yBAAyB,EAC7B9B,YACA6B,eACyD;CACzD,OAAO;EACLrC,gBAAgBQ;EAChB+B,QAAQ,YAAY;GAClB,MAAMF,WAAW;EACnB;CACF;AACF;AAEA,MAAMG,qBAAqB1N,SAASwN,qBAAqB;AAEzD,MAAMG,qBAAwC5J,OAAOC,OAAO,CAAA,CAAE;AAiB9D,MAAM8J,sBAAsB,EAC1BC,MACAC,QACAT,eAK+B;CAC/B,OAAO;EACLrC,gBAAgB6C;EAChBG,aAAaF,OAAO;GAAEG,MAAM;GAASC,aAAa;EAAK,CAAC;EACxDC,MAAML;EACNP,QAAQF;CACV;AACF;AAEA,MAAMe,kBAAkBtO,SAAS8N,kBAAkB;AAKnD,MAAMS,gBAAeC,YAAA;CAAA,MAAA1H,IAAAC,EAAA,CAAA;CACnB,MAAA,CAAApC,OAAA8J,YAA0B9O,SAAS6O,OAAO;CAC1C,MAAAE,MAAY3O,OAAO4E,KAAK;CAAE,IAAAkC;CAAA,IAAAC,EAAA,OAAA6H,OAAAC,IAAA,2BAAA,GAAA;EACF/H,MAAAgI,SAAA;GACtBH,IAAGI,UACD,OAAOD,SAAS,aAAcA,KAAwBH,IAAGI,OAAe,IAAxED;GACFJ,SAASC,IAAGI,OAAQ;EAAC;EACtBhI,EAAA,KAAAD;CAAA,OAAAA,KAAAC,EAAA;CAJD,MAAAmI,MAAYpI;CAIL,IAAAO;CAAA,IAAAN,EAAA,OAAAnC,OAAA;EACAyC,KAAA;GAACzC;GAAOsK;GAAKP;EAAG;EAAC5H,EAAA,KAAAnC;EAAAmC,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,OAAjBM;AAA0B;AAKnC,MAAM+H,iCAAiC,OACrCzD,YACA/F,mBACAyJ,YACG;CACH,IAAI;EACF,MAAMzJ,mBAAmB8H,OAAO/B,UAAU;CAC5C,SAASqB,OAAO;EACdqC,QAAQrC,iBAAiB9E,QAAQ8E,MAAM5I,UAAUkL,OAAOtC,KAAK,CAAC;EAC9D,MAAMA;CACR;AACF;AAEA,MAAMuC,kBAAkBC,aAAyB;CAC/C,IAAI;EACFA,SAAS;EACT;CACF,SAASxC,OAAO;EACd,OAAO,EAAEA,MAAM;CACjB;AACF;AAIA,MAAMyC,kBACJC,eACAE,eACG;CACH,IAAI,CAACF,eAAe,aAAa,CAAC;CAClC,MAAMI,cAAcF,WAAWE,MAAMJ,cAAcK,MAAM;CACzD,IAAIL,cAAcM,SAAS;EACzBF,MAAM;EACN,aAAa,CAAC;CAChB;CAEA,MAAMG,eAAe;EACnBP,cAAcQ,oBAAoB,SAASJ,KAAK;EAChDF,WAAWO,OAAOD,oBAAoB,SAASD,MAAM;CACvD;CACAP,cAAcU,iBAAiB,SAASN,OAAO,EAAEO,MAAM,KAAK,CAAC;CAC7DT,WAAWO,OAAOC,iBAAiB,SAASH,QAAQ,EAAEI,MAAM,KAAK,CAAC;CAClE,OAAOJ;AACT;AAQA,MAAMS,mBAA8C1M,OAAOC,OAAO,CAAA,CAAE;AAGpE,MAAM0M,6BAA4B7J,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAC,MAAA,EAAA9C,MAAAwE,WAAAhE,WAAA2C,IAAAvC,gBAAA8C,IAAAxC,UAAAuD,aAAAC,QAAAxE,SAAA2B,OAAAH,mBAAAkI,aAAAhG,OAAAhB;CAGjC,MAAApC,YAAA2C,OAAAkD,KAAAA,IAAA,QAAAlD;CACA,MAAAvC,iBAAA8C,OAAA2C,KAAAA,IAAA,QAAA3C;CAOA,MAAAkG,cAAAhG,OAAAyC,KAAAA,IAAAqD,qBAAA9F;CAEA,MAAA,CAAA8I,WAAAC,cAAAC,gBAAgDtC,aAC9CtK,SAAS,QACX;CACA,MAAA,CAAA6M,MAAAC,SAAAC,WAAiCzC,aAAa,EAAE;CAChD,MAAA,CAAAjF,MAAA2H,SAAAC,WAAiC3C,aAE/B,MAAM;CAAE,IAAAvG;CAAA,IAAAlB,EAAA,OAAA6H,OAAAC,IAAA,2BAAA,GAAA;EAGR5G,KAAA,CAAC;EAAClB,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CAFJ,MAAA,CAAAqK,WAAAC,cAAAC,gBAAgD9C,aAE9CvG,EAAE;CAAE,IAAAG;CAAA,IAAArB,EAAA,OAAA6H,OAAAC,IAAA,2BAAA,GAAA;EAGJzG,KAAA,CAAA;EAAErB,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAFJ,MAAA,CAAAc,aAAA0J,gBAAAC,kBAAsDhD,aAEpDpG,EAAE;CACJ,MAAA,CAAAqJ,OAAAC,UAAAC,YAAoCnD,aAElCjE,KAAAA,CAAS;CAAE,IAAA/B;CAAA,IAAAzB,EAAA,OAAA6H,OAAAC,IAAA,2BAAA,GAAA;EAELrG,KAAA,IAAI7F,wBAAwB;EAACoE,EAAA,KAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CADrC,MAAA6K,0BACQpJ;CAEN,IAAAO;CAAA,IAAAhC,EAAA,OAAA6H,OAAAC,IAAA,2BAAA,GAAA;EACoC9F,KAAA,IAAIlG,yBAAyB;EAACkE,EAAA,KAAAgC;CAAA,OAAAA,KAAAhC,EAAA;CAApE,MAAA8K,kBAAsC9I;CACtC,MAAA2G,gBAAsBrP,gCAAgC;CACtD,MAAA,CAAAkQ,YAAAuB,eAAAC,iBAAmDvD,aAEjDjE,KAAAA,CAAS;CACX,MAAAyH,iBAAuBhS,OAOrBuK,KAAAA,CAAS;CACX,MAAA,CAAA0H,WAAAC,gBACE1D,aAAwCkC,gBAAgB;CAC1D,MAAAyB,iBAAuBnS,OAAO8N,WAAW;CACzC,MAAAsE,iBAAuBpS,OAAO,CAAC;CAAE,IAAAqS;CAAA,IAAAC;CAAA,IAAAvL,EAAA,OAAAkL,aAAAlL,EAAA,OAAA+G,aAAA;EAO/BuE,0BAAgB,IAAIE,IAAY;EAChCD,yBAAe,IAAIC,IAAoB;EACvC,KAAK,MAAAC,SAAeP,WAAS;GAC3B,MAAAhH,MAAY6C,YAAW2E,MACrBC,cACE,CAACF,MAAKhC,MAAMmC,IAAKD,SAAS,KAA1B,CACCL,QAAOM,IAAKD,SAAS,KACtBA,UAASE,SAAU,IAAIJ,MAAKjC,WAAWhH,MAAO,CAClD;GACA,IAAI0B,QAAQV,KAAAA,GAAW;GACvB8H,QAAOQ,IAAK5H,GAAG;GACfqH,OAAMO,IAAKL,KAAK;EAAC;EAClBzL,EAAA,KAAAkL;EAAAlL,EAAA,KAAA+G;EAAA/G,EAAA,KAAAsL;EAAAtL,EAAA,KAAAuL;CAAA,OAAA;EAAAD,UAAAtL,EAAA;EAAAuL,SAAAvL,EAAA;CAAA;CAAA,IAAAuC;CAAA,IAAAvC,EAAA,OAAAsL,WAAAtL,EAAA,OAAAuL,QAAA;EACMhJ,KAAA;GAAAgJ;GAAAD;EAAkB;EAACtL,EAAA,KAAAsL;EAAAtL,EAAA,KAAAuL;EAAAvL,EAAA,MAAAuC;CAAA,OAAAA,KAAAvC,EAAA;CAd5B,MAAA+L,QAcExJ;CAC2B,IAAAI;CAAA,IAAA3C,EAAA,QAAAkL,aAAAlL,EAAA,QAAA+L,MAAAR,QAAA;EAAA,IAAA3I;EAAA,IAAA5C,EAAA,QAAA+L,MAAAR,QAAA;GAIf3I,OAAAoJ,YAAW,CAACD,MAAKR,OAAOK,IAAKH,OAAK;GAACzL,EAAA,MAAA+L,MAAAR;GAAAvL,EAAA,MAAA4C;EAAA,OAAAA,MAAA5C,EAAA;EAD7C2C,KAAAuI,UAASe,OACCrJ,GAAmC,CAAC,CAAApC,IACvC0L,MAA2B;EAAClM,EAAA,MAAAkL;EAAAlL,EAAA,MAAA+L,MAAAR;EAAAvL,EAAA,MAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CAJvC,MAAAmM,uBAEIxJ;CAIF,IAAAC;CAAA,IAAA5C,EAAA,QAAA+G,eAAA/G,EAAA,QAAAmL,gBAAAnL,EAAA,QAAA+L,MAAAT,WAAAtL,EAAA,QAAA+L,MAAAR,QAAA;EACQ3I,YAAA;GACRwI,eAAcpD,UAAWjB;GACzB,IAAIgF,MAAKR,OAAOa,SAAU,GAAC;GAG3BjB,cAAalD,SACXA,KAAIgE,QACMI,YAAW,CAACN,MAAKR,OAAOK,IAAKH,OAAK,CAAC,CAAC,CAAAjL,KACvC8L,aAAY;IAAA,GACZb;IAAKhC,uBACD,IAAI+B,IAAI,CAAA,GAAIC,QAAKhC,OAAM,GAAKsC,MAAKT,OAAQ,CAAC;GACnD,EAAE,CACN;EAAC;EACFtL,EAAA,MAAA+G;EAAA/G,EAAA,MAAAmL;EAAAnL,EAAA,MAAA+L,MAAAT;EAAAtL,EAAA,MAAA+L,MAAAR;EAAAvL,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CAAA,IAAA+C;CAAA,IAAA/C,EAAA,QAAA+G,eAAA/G,EAAA,QAAAmL,gBAAAnL,EAAA,QAAA+L,OAAA;EAAEhJ,MAAA;GAACgE;GAAagF;GAAOZ;EAAY;EAACnL,EAAA,MAAA+G;EAAA/G,EAAA,MAAAmL;EAAAnL,EAAA,MAAA+L;EAAA/L,EAAA,MAAA+C;CAAA,OAAAA,MAAA/C,EAAA;CAbrCjH,UAAU6J,KAaPG,GAAkC;CAAC,IAAAC;CAAA,IAAAhD,EAAA,QAAA3C,WAAA2C,EAAA,QAAAwK,kBAAAxK,EAAA,QAAAmK,WAAAnK,EAAA,QAAAiK,SAAA;EAEZjH,YAAA;GACxB,IAAI,CAAC3F,SAAO;GACZ,MAAAkP,cAAoBlP,QAAOkD,QAAQ0L,OACzBO,MAA8B,CAAC,CAAAhM,IAClCiM,MAAmB,CAAC,CAAAC,KACnB,MAAM;GACdzC,QAAQsC,WAAW;GACnBpC,QAAQ9M,QAAOmF,IAAK;GAGpB,MAAAmK,WAAiBtP,QAAOyD,eAAP,CAAA;GACjB,KAAK,MAAA8D,cAAoB+H,UACvB7B,gBAAe8B,cAAehI,UAAU;GAC1C4F,eAAemC,QAAQ;EAAC;EACzB3M,EAAA,MAAA3C;EAAA2C,EAAA,MAAAwK;EAAAxK,EAAA,MAAAmK;EAAAnK,EAAA,MAAAiK;EAAAjK,EAAA,MAAAgD;CAAA,OAAAA,MAAAhD,EAAA;CAdD,MAAA6M,oBAA0B7J;CAcxB,IAAAE;CAAA,IAAAlD,EAAA,QAAAnB,qBAAAmB,EAAA,QAAAwK,gBAAA;EAGAtH,MAAA,OAAA4J,iBAAA;GACEjC,wBAAuBkC,OAAQnI,aAAU7H,EAAG;GAC5C+N,gBAAekC,YAAapI,YAAU;GACtC,IAAI,CAACxK,qBAAqBwK,YAAU,GAClC,MAAMyD,+BACJzD,cACA/F,oBACAoO,cACEzC,gBAAe0C,WACbjF,OAAIzH,KAAK2M,gBACPxB,YAAS5O,OAAQ6H,aAAU7H,MAA3B,CACC3C,qBAAqBuR,WAAS,IAC3Bb,gBAAesC,SAAUzB,aAAW;IAAA,GAC/BA;IAASnO,QACJ;KAAAL,MAAQ;KAAY6L,QAAU;KAAO3L,SAAEA;IAAQ;GACzD,CACQ,IANZ8P,WAOF,CACF,CACJ;GAEF3C,gBAAe6C,WAAUpF,OAAIgE,QAAQqB,MAAOA,EAACvQ,OAAQ6H,aAAU7H,EAAG,CAAC;EAAC;EACrEiD,EAAA,MAAAnB;EAAAmB,EAAA,MAAAwK;EAAAxK,EAAA,MAAAkD;CAAA,OAAAA,MAAAlD,EAAA;CAvBH,MAAAuN,yBAA+BrK;CA8B7B,IAAAC;CAAA,IAAAnD,EAAA,QAAAnB,qBAAAmB,EAAA,QAAA+K,eAAA;EAKA5H,MAAA,OAAAqK,iBAAA;GACE3C,wBAAuBkC,OAAQnI,aAAU7H,EAAG;GAC5C+N,gBAAekC,YAAapI,YAAU;GACtC,IAAI,CAACxK,qBAAqBwK,YAAU,GAGlC,MAAMyD,+BACJzD,cACA/F,oBACA4O,cACE1C,eAAc2C,WACZzF,SAAA;IAAA,GAESA;IAAInH,aACMmH,OAAInH,YAAYN,KAAKmN,gBAAA;KAChC,IACEhC,YAAS5O,OAAQ6H,aAAU7H,MAC3B3C,qBAAqBuR,WAAS,GAAC,OAExBA;KACT,MAAAiC,SAAe9C,gBAAesC,SAAUzB,aAAW;MAAA,GAC9CA;MAASnO,QACJ;OAAAL,MACA;OAAY6L,QACV;OAAO3L,SACfA;MACF;KACF,CAAC;KACDyN,gBAAekC,YAAaY,MAAM;KAAC,OAC5BA;IAAM,CACd;GAEA,IArBPF,MAsBF,CACJ;GAEF3C,eAAc8C,WACZ5F,SAAA;IAAA,GAESA;IAAInH,aACMmH,OAAInH,YAAYmL,QAC3B6B,QAAOR,IAACvQ,OAAQ6H,aAAU7H,EAC5B;GAEC,IAPP8Q,MAQF;EAAC;EACF7N,EAAA,MAAAnB;EAAAmB,EAAA,MAAA+K;EAAA/K,EAAA,MAAAmD;CAAA,OAAAA,MAAAnD,EAAA;CA/CH,MAAA+N,kCAAwC5K;CAsDtC,IAAAC;CAAA,IAAApD,EAAA,QAAAc,eAAAd,EAAA,QAAAuN,wBAAA;EAAA,IAAA7J;EAAA,IAAA1D,EAAA,QAAAuN,wBAAA;GAGgB7J,OAAAsK,iBACd7U,QACEyL,aAAU7H,IACV6J,mBAAmB;IAAAhC,YACjBA;IAAU6B,gBACM8G,uBAAuB3I,YAAU;GACnD,CAAC,CACH;GAAC5E,EAAA,MAAAuN;GAAAvN,EAAA,MAAA0D;EAAA,OAAAA,MAAA1D,EAAA;EAPHoD,MAAAtC,YAAWN,IAAKkD,GAQhB;EAAC1D,EAAA,MAAAc;EAAAd,EAAA,MAAAuN;EAAAvN,EAAA,MAAAoD;CAAA,OAAAA,MAAApD,EAAA;CATH,MAAAiB,oBAA0B1H,gBACxB6J,GASF;CAAE,IAAAM;CAAA,IAAA1D,EAAA,QAAAc,eAAAd,EAAA,QAAA+N,mCAAA/N,EAAA,QAAAwJ,YAAA1I,aAAA;EAAA,IAAAkD;EAAA,IAAAhE,EAAA,QAAAc,aAAA;GAIUkD,OAAAiK,iBAAgB,CAACnN,YAAWoN,MAAMC,QAAOb,IAACvQ,OAAQ6H,aAAU7H,EAAG;GAACiD,EAAA,MAAAc;GAAAd,EAAA,MAAAgE;EAAA,OAAAA,MAAAhE,EAAA;EAAA,IAAAmE;EAAA,IAAAnE,EAAA,QAAA+N,iCAAA;GACnE5J,OAAAiK,iBACHjV,QACEyL,aAAU7H,IACV6J,mBAAmB;IAAAhC,YACjBA;IAAU6B,gBACMsH,gCAAgCnJ,YAAU;GAC5D,CAAC,CACH;GAAC5E,EAAA,MAAA+N;GAAA/N,EAAA,MAAAmE;EAAA,OAAAA,MAAAnE,EAAA;EATL0D,OAAC8F,YAAU1I,eAAV,CAAA,EAAA,CAA6BmL,OACpBjI,GAAgE,CAAC,CAAAxD,IACpE2D,GAQL;EAACnE,EAAA,MAAAc;EAAAd,EAAA,MAAA+N;EAAA/N,EAAA,MAAAwJ,YAAA1I;EAAAd,EAAA,MAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAXL,MAAAqO,6BAAmC9U,gBACjCmK,GAWF;CAAE,IAAAM;CAAA,IAAAhE,EAAA,QAAAnB,mBAAA;EAE+BmF,MAAA,OAAAsK,YAAA;GAC/B,IAAI,CAACzP,mBAAiB;GACtB,MAAML,QAAO+P,IACXD,QAAOrC,OACGuC,MAAmC,CAAC,CAAAhO,IACvC,OAAAiO,QAAa5P,kBAAiB8H,OAAQ2G,GAAC,CAAC,CACjD;EAAC;EACFtN,EAAA,MAAAnB;EAAAmB,EAAA,MAAAgE;CAAA,OAAAA,MAAAhE,EAAA;CAPD,MAAA0O,2BAAiC1K;CAO/B,IAAAG;CAAA,IAAAnE,EAAA,QAAAwK,kBAAAxK,EAAA,QAAA+K,iBAAA/K,EAAA,QAAAgL,eAAA;EAEuB7G,OAAAwK,iBAAA;GACvB,MAAA3G,UAAgBgD,cAAahD;GAC7B,IAAIA,SAAOlH,YAAkBoN,MAACU,QAAOtB,IAACvQ,OAAQ6H,aAAU7H,EAAG,GAAC;IAC1DgO,cAAc;KAAA,GACT/C;KAAOlH,aACGkH,QAAOlH,YAAYN,KAAKqO,QACnCvB,IAACvQ,OAAQ6H,aAAU7H,KAAM+N,gBAAesC,SAAUE,KAAG1I,YAAc,IAAnEiK,GACF;IACF,CAAC;IAAC;GAAA;GAGJrE,gBAAesE,WAAA;IACb,MAAArO,MAAYwH,OAAIpE,WAAWkL,QAAOzB,IAACvQ,OAAQ6H,aAAU7H,EAAG;IACxD,IAAI0D,QAAQ,IAAE,OAAS,CAAA,GAAIwH,QAAMrD,YAAU;IAC3C,MAAAmD,OAAa,CAAA,GAAIE,MAAI;IACrBF,KAAKtH,OAAOmE;IAAH,OACFmD;GAAI,CACZ;EAAC;EACH/H,EAAA,MAAAwK;EAAAxK,EAAA,MAAA+K;EAAA/K,EAAA,MAAAgL;EAAAhL,EAAA,MAAAmE;CAAA,OAAAA,MAAAnE,EAAA;CAlBD,MAAAgP,mBAAyB7K;CAoBzB,MAAA8K,aAAmBjQ,OAAKiQ,cAALtS;CACnB,MAAAuS,YAAkBlQ,OAAKmQ,SAALxS;CAAkC,IAAAyS;CAAA,IAAApP,EAAA,QAAAkP,aAAAlP,EAAA,QAAAiP,YAAA;EAGhDG,MAAAH,WAAU3M,WAAY,IAAtB4M,YAEIA,UAAS5M,WAAY,IAArB2M,aAAA,CAAA,GAEMA,YAAU,GAAKC,SAAS;EAAClP,EAAA,MAAAkP;EAAAlP,EAAA,MAAAiP;EAAAjP,EAAA,MAAAoP;CAAA,OAAAA,MAAApP,EAAA;CANvC,MAAAqP,aAEID;CAMF,IAAAE;CAAA,IAAAtP,EAAA,QAAAhB,SAAAgB,EAAA,QAAAqP,YAAA;EAAA,IAAAE;EAAA,IAAAvP,EAAA,QAAAhB,OAAA;GAEeuQ,OAAAtI,SACb9N,QACE8N,KAAIlK,IACJyK,gBAAgB;IAAAP;IAAAC,SAENC,cAAenI,OAAKuI,KAAON,KAAIlK,IAAKoK,SAAS;IAACV,gBACtCzH,OAAK2H,OAASM,KAAIlK,EAAG;GACvC,CAAC,CACH;GAACiD,EAAA,MAAAhB;GAAAgB,EAAA,MAAAuP;EAAA,OAAAA,MAAAvP,EAAA;EARHsP,MAAAD,WAAU7O,IAAK+O,GASf;EAACvP,EAAA,MAAAhB;EAAAgB,EAAA,MAAAqP;EAAArP,EAAA,MAAAsP;CAAA,OAAAA,MAAAtP,EAAA;CAVH,MAAAwP,mBAAyBjW,gBACvB+V,GAUF;CAAE,IAAAC;CAAA,IAAAvP,EAAA,QAAAnB,mBAAA4Q,UAAAzP,EAAA,QAAAiB,kBAAApD,SAAAmC,EAAA,QAAAc,YAAAwB,UAAAtC,EAAA,QAAA2B,aAAA3B,EAAA,QAAAmM,wBAAAnM,EAAA,QAAA6J,aAAA7J,EAAA,QAAAjC,kBAAAiC,EAAA,QAAAqP,cAAArP,EAAA,QAAA0K,SAAA1K,EAAA,QAAAwC,QAAAxC,EAAA,QAAAqK,aAAArK,EAAA,QAAAwJ,cAAAxJ,EAAA,QAAAgK,QAAAhK,EAAA,QAAA7C,MAAA;EAEoBoS,YAAA;GACpB,MAAAG,UAAgB,CAAC1F,KAAI2F,KAAM,KAAX,CAAiB7O,YAAWwB;GAAQ,OAC7C;IAAA0H;IAAAxH;IAAA1B,aAGQG,kBAAiBpD;IAAMwM;IAAAR;IAAAlI,WAGzBA,aAAa6H,eAAehG,KAAAA;IAASoM,SAE9C/F,aAAA,CAAc6F,WAAd,CAA0B3R,kBAAkByL,eAAehG,KAAAA;IAASqM,kBACpDhR,mBAAiB4Q,UAAjB;IAAgCC;IAAAvS;IAAA2S,WAGvCtM,KAAAA;IAASkH;IAAA1L,OAEbqQ;IAAU7F;IAAA0B,WAENiB;GACb;EAAC;EACFnM,EAAA,MAAAnB,mBAAA4Q;EAAAzP,EAAA,MAAAiB,kBAAApD;EAAAmC,EAAA,MAAAc,YAAAwB;EAAAtC,EAAA,MAAA2B;EAAA3B,EAAA,MAAAmM;EAAAnM,EAAA,MAAA6J;EAAA7J,EAAA,MAAAjC;EAAAiC,EAAA,MAAAqP;EAAArP,EAAA,MAAA0K;EAAA1K,EAAA,MAAAwC;EAAAxC,EAAA,MAAAqK;EAAArK,EAAA,MAAAwJ;EAAAxJ,EAAA,MAAAgK;EAAAhK,EAAA,MAAA7C;EAAA6C,EAAA,MAAAuP;CAAA,OAAAA,MAAAvP,EAAA;CAcCnB,mBAAiB4Q;CAAQ,IAAAM;CAAA,IAAA/P,EAAA,QAAAuP,KAAA;EAlCbQ,MAAQR,IAmCrB;EAACvP,EAAA,MAAAuP;EAAAvP,EAAA,MAAA+P;CAAA,OAAAA,MAAA/P,EAAA;CAnCF,MAAAnC,QAAckS;CAmCX,IAAAC;CAAA,IAAAhQ,EAAA,QAAA+K,eAAA;EAGmBiF,YAAA;GACpB3E,eAAcrD,UAAdqD,eAAcrD,UAAQ;GACtBiD,eAAcjD,UAAWxE,KAAAA;GACzBuH,cAAcvH,KAAAA,CAAS;EAAC;EACzBxD,EAAA,MAAA+K;EAAA/K,EAAA,MAAAgQ;CAAA,OAAAA,MAAAhQ,EAAA;CAJD,MAAAiQ,gBAAsBD;CAIpB,IAAAE;CAAA,IAAAlQ,EAAA,QAAAwK,kBAAAxK,EAAA,QAAA2K,YAAA3K,EAAA,QAAAiK,WAAAjK,EAAA,QAAA7C,MAAA;EAKoB+S,OAAA3P,YAAA;GACpB,IAAIpD,SAAS,UAAQ;IACnB,MAAAgT,WAAiB,IAAIC,IACnB7P,QAAOO,YAAYN,IAAK6P,MAA2C,CACrE;IACA7F,gBAAe8F,WACbrI,OAAIzH,KAAK+P,iBAAgBJ,SAAQvM,IAAKgB,aAAU7H,EAAiB,KAAxCwT,YAAyC,CACpE;IAAC;GAAA;GAGH,MAAAC,OAAajQ,QAAOO,YAAYmL,QAC9BwE,iBAAgB,CAAC3F,gBAAe4F,UAAW9L,YAAU,CACvD;GACA4F,gBAAemG,WAAU,CAAA,GAAIH,MAAI,GAAKvI,MAAI,CAAC;GAC3CgC,SAAQ2G,WAAU,CAACrQ,QAAOyJ,MAAO/B,MAAI,CAAC,CAAAgE,OAAQ4E,OAAO,CAAC,CAAAnE,KAAM,IAAI,CAAC;GACjE/B,UAASmG,WAAUA,UAAQvQ,QAAOmK,KAAM;EAAC;EAC1C1K,EAAA,MAAAwK;EAAAxK,EAAA,MAAA2K;EAAA3K,EAAA,MAAAiK;EAAAjK,EAAA,MAAA7C;EAAA6C,EAAA,MAAAkQ;CAAA,OAAAA,MAAAlQ,EAAA;CAhBD,MAAA+Q,gBAAsBb;CAgBpB,IAAAc;CAAA,IAAAhR,EAAA,QAAAiQ,iBAAAjQ,EAAA,QAAA+Q,iBAAA/Q,EAAA,QAAAgL,eAAA;EAEuBgG,YAAA;GACvB,MAAAC,YAAgBjG,cAAahD;GAC7B,IAAI,CAACA,WAAO;GACZiD,eAAcjD,SAAoBa,WAAME,MAAC;GACzCkH,cAAc;GACdc,cAAc/I,SAAO;EAAC;EACvBhI,EAAA,MAAAiQ;EAAAjQ,EAAA,MAAA+Q;EAAA/Q,EAAA,MAAAgL;EAAAhL,EAAA,MAAAgR;CAAA,OAAAA,MAAAhR,EAAA;CAND,MAAAkR,mBAAyBF;CAMvB,IAAAG;CAAA,IAAAnR,EAAA,QAAAyK,kBAAAzK,EAAA,QAAAiQ,iBAAAjQ,EAAA,QAAA0O,4BAAA1O,EAAA,QAAAgL,eAAA;EAEwBmG,MAAA,YAAA;GACxB,MAAAC,YAAgBpG,cAAahD;GAC7B,IAAI,CAACA,WAAO;GACZiD,eAAcjD,SAAoBa,WAAME,MAAC;GACzCkH,cAAc;GAEd,MAAAoB,UAAgB,IAAI7F,IAAIf,eAAczC,QAAQxH,IAAK8Q,MAAW,CAAC;GAC/D,MAAM5C,yBACJ1G,UAAOlH,YAAYmL,QAAQsF,iBAAgB,CAACF,QAAOzF,IAAKhH,aAAU7H,EAAG,CAAC,CACxE;EAAC;EACFiD,EAAA,MAAAyK;EAAAzK,EAAA,MAAAiQ;EAAAjQ,EAAA,MAAA0O;EAAA1O,EAAA,MAAAgL;EAAAhL,EAAA,MAAAmR;CAAA,OAAAA,MAAAnR,EAAA;CAVD,MAAAwR,oBAA0BL;CAUxB,IAAAM;CAAA,IAAAzR,EAAA,QAAAiQ,iBAAAjQ,EAAA,QAAA+Q,iBAAA/Q,EAAA,QAAAgL,eAAA;EAE8ByG,OAAAC,MAAAC,SAAA3I,WAAA;GAK9B,MAAA4I,YAAgB5G,cAAahD;GAC7B,IAAI,CAACA,WAAO;GACZ,MAAA6J,2BAAiB,IAAIzB,IAAqB;GAC1CuB,QAAOG,SAAS9M,QAAA3F,UAAA;IACd,IAAI2F,OAAMxH,WAAY,YACpBqU,SAAQ1J,IAAKuJ,KAAKrS,MAAM,CAAAtC,IAAMiI,OAAMgE,MAAO;GAAE,CAChD;GAGD,MAAA+I,gBAAoB/J,UAAOlH,YAAYN,KAAKwR,kBAAA;IAC1C,IAAI,CAACH,SAAQjG,IAAKhH,cAAU7H,EAAG,KAAK3C,qBAAqBwK,aAAU,GAAC,OAC3DA;IACT,MAAAqN,UAAgBJ,SAAQjO,IAAKgB,cAAU7H,EAAG;IAAE,OACrC+N,gBAAesC,SAAUxI,eAAY;KAAA,GACvCA;KAAUpH,QACL;MAAAL,MACA;MAAY6L,QACV;MAAO3L,SACN4U,mBAAmB9Q,QAAQ8Q,QAAO5U,UAAWkL,OAAO0J,OAAO;KACtE;IACF,CAAC;GAAC,CACH;GACDhC,cAAc;GACdc,cAAc;IAAA,GAAK/I;IAAOlH,aAAEA;GAAY,CAAC;GACzCoR,QAAOjM,MAAO,8BAA8B+C,MAAM;EAAC;EACpDhJ,EAAA,MAAAiQ;EAAAjQ,EAAA,MAAA+Q;EAAA/Q,EAAA,MAAAgL;EAAAhL,EAAA,MAAAyR;CAAA,OAAAA,MAAAzR,EAAA;CA9BD,MAAAmS,0BAAgCV;CA8B9B,IAAAW;CAAA,IAAApS,EAAA,SAAArC,aAAAqC,EAAA,SAAA6B,UAAA7B,EAAA,SAAAhB,SAAAgB,EAAA,SAAA+Q,iBAAA/Q,EAAA,SAAAwK,kBAAAxK,EAAA,SAAAmL,gBAAAnL,EAAA,SAAA8J,gBAAA9J,EAAA,SAAA+K,iBAAA/K,EAAA,SAAA7C,MAAA;EAEsBiV,OAAAC,WAAAC,eAAAC,SAAAC,iBAAA;GAStB,MAAAC,kBAAuC;IAAAjQ,MAC/BwF,UAAOxF;IAAKjC,SACTyH,UAAOgC,OAAP,CACJ;KAAA7M,MAAQ;KAAe6M,MAAQhC,UAAOgC;IAAM,CAAC,IADzC,CAAA;IAEHlJ,aACNA;IAAW4R,2BACA,IAAIC,KAAK;IAACxU,UACX;IAAIoD,UACJ;IAAI8I,WACHkI,QAAOlI;IAAUuI,UAClBL,QAAO7T,SAAkBkU;IAAAnQ,UACzB,EAAAoQ,QACA,EAAA,GAAM7K,UAAO0C,QAAP,EAAAA,OAAyB1C,UAAO0C,MAAY,IAA5C,CAA4C,EAAG,EAC/D;GACF;GACA,MAAAoI,SAAiC;IAAA,GAAK9K;IAAOlH,aAAEA;GAAY;GAE3D,MAAAiS,SAAe/T,SAAS7B,SAAS;GACjC,IAAIqV,cAAY;IACdvH,eAAcjD,UAAWxE,KAAAA;IACzBuH,cAAcvH,KAAAA,CAAS;GAAC;GAI1B,IAAIgP,gBAAgBrV,SAAS,UAAQ;IACnC,MAAA6V,YAAkB,IAAI5C,IACpBtP,cAAWN,IAAKyS,MAA2C,CAC7D;IACAzI,gBAAe0I,WACbjL,OAAIzH,KAAK2S,kBAAgBH,UAASpP,IAAKgB,cAAU7H,EAAiB,KAAzCoW,aAA0C,CACrE;GAAC;GAIH,MAAAC,UACEZ,gBAAgBrV,SAAS,YAAzB,CAAsC4V,SAAtC;IAAAvJ,YACkBkI;IAAIjI,OAAS,IAAI+B,IAAIJ,eAAcpD,OAAQ;GACjD,IAFZxE,KAAAA;GAGF,IAAIiI,SAAON,cAAakI,YAAU,CAAA,GAAIpL,SAAMwD,OAAK,CAAC;GAElD,MAAA6H,YAAgB9K,qBAAe;IAC7B,IAAIuK,QAAM;KACR,IAAIR,QAAO7T,SAAe0I,SAAtBzJ,WAAqCqB,MAAKoI,MAAOqL,eAAe;UAC/DzT,MAAKuU,QAASd,eAAe;IAAE,OAEpC5Q,SAAS4Q,eAAe;GACzB,CACF;GACD,IAAIR,WAAO;IACTC,QAAOjM,MAAO,6CAA6CgM,UAAOhM,KAAM;IACxE,IAAIwF,SACFN,cAAaqI,YAAUvL,QAAIgE,QAAQwH,gBAAe9H,gBAAcF,OAAK,CAAC;IACxEsF,cAAcW,MAAI;IAAC;GAAA;GAGrB,IAAIvU,SAAS,QAAM;IACjB0N,wBAAuB6I,UAAW;IAClC5J,aAAa,KAAK;GAAC;EACpB;EACF9J,EAAA,OAAArC;EAAAqC,EAAA,OAAA6B;EAAA7B,EAAA,OAAAhB;EAAAgB,EAAA,OAAA+Q;EAAA/Q,EAAA,OAAAwK;EAAAxK,EAAA,OAAAmL;EAAAnL,EAAA,OAAA8J;EAAA9J,EAAA,OAAA+K;EAAA/K,EAAA,OAAA7C;EAAA6C,EAAA,OAAAoS;CAAA,OAAAA,MAAApS,EAAA;CApED,MAAA2T,kBAAwBvB;CAoEtB,IAAAwB;CAAA,IAAA5T,EAAA,SAAAnB,qBAAAmB,EAAA,SAAA2T,mBAAA3T,EAAA,SAAAmS,2BAAAnS,EAAA,SAAAgL,eAAA;EAEwB4I,MAAA,OAAAC,eAAA;GACxB,MAAAC,YAAgB7I,eAAcjD;GAC9B,IAAI,CAACuK,WAAO;GACZ,MAAA,EAAAnJ,WAAmBmJ,UAAO1J;GAC1B,IAAIO,OAAMH,SAAQ;GAElB,MAAA8K,WAAiB/I,cAAahD,SAAqBlH,eAAlC,CAAA,EAAA,CAAwCkT,SACvDC,kBAAA;IACE,MAAAC,SAAerJ,wBAAuBsJ,aAAcvP,cAAU7H,EAAG;IAAE,OAC5DmX,SAAA,CAAUA,MAAM,IAAhB,CAAA;GAAsB,CAEjC;GACA,IAAIH,QAAOzR,SAAU,GAAC;IAGpB,MAAM9D,QAAO+P,IAAKwF,OAAO;IACzB,IAAIF,eAAexI,eAAcrD,WAAYoB,OAAMH,SAAQ;GAAS;GAGtE,MAAAmL,YAAgBpJ,cAAahD;GAC7B,IAAI,CAACA,WAAO;GACZ,MAAAqM,SAAarM,UAAOlH,YAAYmL,QAC9BqI,kBAAgB,CAACxJ,gBAAe4F,UAAW9L,aAAU,CACvD;GACA,KAAK,MAAA2P,iBAAoB7C,QACvB7G,wBAAuBkC,OAAQnI,cAAU7H,EAAG;GAE9C,MAAAyX,YAAgB,MAAMhW,QAAOiW,WAC3B/C,OAAIlR,KAAKkU,kBACP5J,gBAAe6J,KAAM/P,eAAY/F,mBAAmBuK,MAAM,CAC5D,CACF;GACA,IAAIyK,eAAexI,eAAcrD,WAAYoB,OAAMH,SAAQ;GAE3D,MAAA2L,YAAkBjD,UAAOjG,KAAMmJ,OAAwC;GACvE,IAAID,WAAS;IACXzC,wBAAwBT,QAAMC,WAASiD,UAAS5L,MAAO;IAAC;GAAA;GAM1D,MAAA8L,mBAAyBnD,UAAOqC,SAASe,UAAAC,YACvClK,gBAAe4F,UAAWgB,OAAKrS,QAAuC,KAA3B2F,SAAMxH,WAAY,aAA7D,CAAA,IAAA,CAEKwH,SAAMiQ,KAAM,CACnB;GACAtB,gBACE3I,cAAahD,WAAboM,WACAU,kBACAvC,WACA,IACF;EAAC;EACFvS,EAAA,OAAAnB;EAAAmB,EAAA,OAAA2T;EAAA3T,EAAA,OAAAmS;EAAAnS,EAAA,OAAAgL;EAAAhL,EAAA,OAAA4T;CAAA,OAAAA,MAAA5T,EAAA;CArDD,MAAAkV,oBAA0BtB;CAqDxB,IAAAuB;CAAA,IAAAnV,EAAA,SAAAnC,OAAA;EAGUsX,YAAMtX;EAAKmC,EAAA,OAAAnC;EAAAmC,EAAA,OAAAmV;CAAA,OAAAA,MAAAnV,EAAA;CAAA,IAAAoV;CAAA,IAAApV,EAAA,SAAAnB,qBAAAmB,EAAA,SAAAwK,kBAAAxK,EAAA,SAAAgP,kBAAA;EAINoG,MAAA,OAAAC,qBAAA;GACb,IAAIxW,mBAAiB;IACnB,MAAAyW,OAAajb,mBAAmBgb,gBAK+B,IALlD;KAAAE,MAEDF,iBAAgBE;KAAKpY,MACrBkY,iBAAgBG,eAAhB;IAEmD,IALlD;KAAAD,MAKDF,iBAAgBE;KAAKpY,MAAQkY,iBAAgBlY;IAAM;IAC/D,IAAI,CAAC3B,kBAAkB8Z,MAAMzW,kBAAiB4Q,MAAO,GACnD,MAAM,IAAItO,MACR,aAAamU,KAAInY,QAAJ,UAAsB,oCAAqC0B,kBAAiB4Q,QAC3F;GAAE;GAEN,IAAI,CAACpV,mBAAmBgb,gBAAgB,KAApCxW,mBAA0D;IAC5D,MAAA4W,YAAkB5K,wBAAuB6K,MAAO;IAChD,IAAA;KACE,MAAM7Z,mBACJgD,kBAAiBiN,IAAK,EAAAwJ,MAAQD,iBAAiB,CAAC,IAChDM,kBAAA;MACE,IAAI,CAAC9K,wBAAuB4E,OAAQgG,WAAW7Q,aAAU,GAAC,OACjD;MACToK,iBAAiBpK,aAAU;MAAC,OACrB;KAAI,CAEf;KACAiG,wBAAuB+K,OAAQH,SAAS;IAAC,SAAAI,KAAA;KAClC5P,MAAAA,QAAAA;KACP4E,wBAAuB+K,OAAQH,SAAS;KACxC,IAAI,CAAC5K,wBAAuBiL,YAAaL,SAAS,GAAG,MAAMxP;IAAM;GAClE,OACI,IAAI,CAAC5L,mBAAmBgb,gBAAgB,GAAC;IAC9C,MAAAU,gBAAkC;KAAAhZ,IAC5Bb,WAAW;KAACiB,MACV;KAAMoY,MACNF,iBAAgBE;KAAKC,aACdH,iBAAgBlY;KAAKmY,MAC5BD;KAAgB7X,QACd,EAAAL,MAAQ,WAAW;KAACoD,SACnB,CAAA;IACX;IACAiK,gBAAewL,YAAU,CAAA,GAAI/N,SAAM8N,aAAa,CAAC;GAAC,OAAA;IAElD,MAAAE,kBAAkC;KAAAlZ,IAC5BsY,iBAAgBtY,MAAOb,WAAW;KAACiB,MACjCkY,iBAAgBlY,QAAhB;KAAmCoY,MACnCF,iBAAgBE;KAAKC,aACdH,iBAAgBG;KAAYjV,SAChC8U,iBAAgB9U;KAAQ/C,QACzB,EAAAL,MAAQ,WAAW;IAC7B;IACAqN,gBAAe0L,YAAU,CAAA,GAAIjO,SAAM8N,eAAa,CAAC;GAAC;EACnD;EACF/V,EAAA,OAAAnB;EAAAmB,EAAA,OAAAwK;EAAAxK,EAAA,OAAAgP;EAAAhP,EAAA,OAAAoV;CAAA,OAAAA,MAAApV,EAAA;CAAA,IAAA6V;CAAA,IAAA7V,EAAA,SAAAyK,kBAAAzK,EAAA,SAAA0O,4BAAA1O,EAAA,SAAAwK,kBAAAxK,EAAA,SAAAgL,eAAA;EACiB6K,MAAA,YAAA;GAChBhL,wBAAuB6I,UAAW;GAClC,MAAAyC,YAAgB1L,eAAczC;GAC9B,IAAIgD,cAAahD,SACf,KAAK,MAAAoO,iBAAoB9H,WACvBxD,gBAAekC,YAAapI,aAAU;GAE1C4F,eAAe,CAAA,CAAE;GACjB,MAAMkE,yBAAyBJ,SAAO;EAAC;EACxCtO,EAAA,OAAAyK;EAAAzK,EAAA,OAAA0O;EAAA1O,EAAA,OAAAwK;EAAAxK,EAAA,OAAAgL;EAAAhL,EAAA,OAAA6V;CAAA,OAAAA,MAAA7V,EAAA;CAAA,IAAAqW;CAAA,IAAArW,EAAA,SAAAiB,qBAAAjB,EAAA,SAAAc,eAAAd,EAAA,SAAAwJ,YAAA1I,eAAAd,EAAA,SAAAqO,4BAAA;EACWgI,OAAA1S,aAAA;GACV,IAAI,QAAQA,UAAQ;IAClB,MAAA2S,YAAkB9M,YAAU1I,YAAkBoN,MAC5CqI,kBAAgB3R,cAAU7H,OAAQ4G,SAAQ5G,EAC5C;IACA,MAAAyZ,UAAgB1V,YAAWoN,MACzBuI,kBAAgB7R,cAAU7H,OAAQ4G,SAAQ5G,EAC5C;IACA,IAAIuZ,aAAA,CAAcE,SAAO,OAChBnI,2BAA0BzK,IAAK,EAAAM,KAAOP,SAAQ5G,GAAI,CAAC;IAAE,OACvDkE,kBAAiB2C,IAAK,EAAAM,KAAOP,SAAQ5G,GAAI,CAAC;GAAC;GACnD,OACMkE,kBAAiB2C,IAAKD,QAAQ;EAAC;EACvC3D,EAAA,OAAAiB;EAAAjB,EAAA,OAAAc;EAAAd,EAAA,OAAAwJ,YAAA1I;EAAAd,EAAA,OAAAqO;EAAArO,EAAA,OAAAqW;CAAA,OAAAA,MAAArW,EAAA;CAAA,IAAA0W;CAAA,IAAA1W,EAAA,SAAAyK,kBAAAzK,EAAA,SAAAwR,qBAAAxR,EAAA,SAAA0O,4BAAA1O,EAAA,SAAAwK,kBAAAxK,EAAA,SAAA2K,YAAA3K,EAAA,SAAAmK,WAAAnK,EAAA,SAAAsK,gBAAAtK,EAAA,SAAAiK,SAAA;EACMyM,MAAA,YAAA;GACL7L,wBAAuB6I,UAAW;GAClCrI,eAAcrD,UAAdqD,eAAcrD,UAAQ;GACtB,MAAA2O,YAAkBnF,kBAAkB;GACpC,MAAAoF,YAAgBnM,eAAczC;GAC9BiC,QAAQ,EAAE;GACVE,QAAQ,MAAM;GACdG,aAAa,CAAC,CAAC;GACfE,eAAe,CAAA,CAAE;GACjBG,SAASnH,KAAAA,CAAS;GAClB,MAAMhF,QAAO+P,IAAK,CAACG,yBAAyBJ,SAAO,GAAGqI,SAAS,CAAC;EAAC;EAClE3W,EAAA,OAAAyK;EAAAzK,EAAA,OAAAwR;EAAAxR,EAAA,OAAA0O;EAAA1O,EAAA,OAAAwK;EAAAxK,EAAA,OAAA2K;EAAA3K,EAAA,OAAAmK;EAAAnK,EAAA,OAAAsK;EAAAtK,EAAA,OAAAiK;EAAAjK,EAAA,OAAA0W;CAAA,OAAAA,MAAA1W,EAAA;CAAA,IAAA6W;CAAA,IAAA7W,EAAA,SAAAyK,kBAAAzK,EAAA,SAAA2I,iBAAA3I,EAAA,SAAA2T,mBAAA3T,EAAA,SAAA+J,gBAAA/J,EAAA,SAAAjC,kBAAAiC,EAAA,SAAAkV,qBAAAlV,EAAA,SAAA4K,YAAA5K,EAAA,SAAAoK,WAAApK,EAAA,SAAAuK,gBAAAvK,EAAA,SAAAwK,kBAAAxK,EAAA,SAAA2K,YAAA3K,EAAA,SAAA+K,iBAAA/K,EAAA,SAAAiK,WAAAjK,EAAA,SAAAgL,iBAAAhL,EAAA,SAAAkK,WAAAlK,EAAA,SAAA7C,MAAA;EACK0Z,OAAAC,SAAA;GAGJ,MAAAC,qBAA2BtM,eAAczC,QAAQiE,QAC/C+K,kBAAgB,CAAClM,gBAAe4F,UAAW9L,aAAU,CACvD;GACA,MAAAqS,YAAgB,CAAC/M,QAAOlC,QAAQ2H,KAAM,KAAtB,CAA4BoH,mBAAkBzU;GAC9D,IAAI,CAACyH,aAAY/B,SAAU,MAAM,IAAI7G,MAAM,2BAA2B;GACtE,IAAI8V,aAAAlZ,kBAA6BiN,cAAahD,SAAQ;GAEtD,MAAAkP,cAAsC;IAAAna,IAChCb,WAAW;IAACsG,MACV4H,QAAOpC;IAAQgC,MACfE,QAAOlC;IAAQ0C,OACdE,SAAQ5C;IAAQlH,aACViW;GACf;GACA,MAAAI,YAAgB;IAAAzY,SAAWoY;IAAIzM,WAAaE,aAAYvC;GAAS;GAIjE,MAAAoP,WAAiBL,mBAAkB9K,OAAQ7R,oBAAoB;GAE/D,MAAAyO,aADcuO,SAAQ9U,WAAYyU,mBAAkBzU,SACjCkB,KAAAA,IAAA,IAAwBsF,gBAAgB;GAC3D,IAAID,YAAU;IACZoC,eAAcjD,UAAW;KAAA,GAAKuK;KAAO1J;IAAa;IAClDkC,cAAcuL,WAAS;GAAC;GAE1B,IAAInZ,SAAS,UAAQ;IACnB,MAAAma,WAAiB,IAAI9L,IAAIuL,kBAAkB;IAC3CvM,gBAAe+M,YACbtP,QAAIgE,QAAQuL,kBAAgB,CAACF,SAAQ1L,IAAKhH,aAAU,CAAC,CACvD;IACAqF,QAAQ,EAAE;IACVU,SAASnH,KAAAA,CAAS;GAAC;GAErB,MAAAiU,eAAqBpM,eAAcrD,UAAdqD,eAAcrD,UAAQ;GAC3C,IAAI,CAACa,YAAU;IACb8K,gBAAgB2C,aAAWc,UAAU7E,WAAS,KAAK;IAAC;GAAA;GAGtD,MAAAmF,UAAgBhP,eAAeC,eAAeE,UAAU;GACnDqM,kBAAkBrB,YAAU,CAAC,CAAA8D,QAASD,OAAO;EAAC;EACpD1X,EAAA,OAAAyK;EAAAzK,EAAA,OAAA2I;EAAA3I,EAAA,OAAA2T;EAAA3T,EAAA,OAAA+J;EAAA/J,EAAA,OAAAjC;EAAAiC,EAAA,OAAAkV;EAAAlV,EAAA,OAAA4K;EAAA5K,EAAA,OAAAoK;EAAApK,EAAA,OAAAuK;EAAAvK,EAAA,OAAAwK;EAAAxK,EAAA,OAAA2K;EAAA3K,EAAA,OAAA+K;EAAA/K,EAAA,OAAAiK;EAAAjK,EAAA,OAAAgL;EAAAhL,EAAA,OAAAkK;EAAAlK,EAAA,OAAA7C;EAAA6C,EAAA,OAAA6W;CAAA,OAAAA,MAAA7W,EAAA;CAAA,IAAA4X;CAAA,IAAA5X,EAAA,SAAAyK,kBAAAzK,EAAA,SAAA2B,aAAA3B,EAAA,SAAAkR,oBAAAlR,EAAA,SAAAwR,qBAAAxR,EAAA,SAAA3B,YAAA2B,EAAA,SAAA0O,4BAAA1O,EAAA,SAAAwK,kBAAAxK,EAAA,SAAA8J,gBAAA9J,EAAA,SAAAgL,iBAAAhL,EAAA,SAAA7C,MAAA;EACOya,YAAA;GAGN,IAAIza,SAAS,YAAY6N,cAAahD,SAAQ;IAC5CkJ,iBAAiB;IACjB,IAAIvP,WAAWtD,WAAW;IAAE;GAAA;GAM9B,IAAIlB,SAAS,QAAM;IACjB0N,wBAAuB6I,UAAW;IAClCrI,eAAcrD,UAAdqD,eAAcrD,UAAQ;IACjBwJ,kBAAkB;IACvB,MAAAqG,YAAgBpN,eAAczC;IAC9BwC,eAAe,CAAA,CAAE;IACjBkE,yBAAyBJ,SAAO,CAAC,CAAA3I,MAAOmS,OAEvC;GAAC;GAEJzZ,WAAW;GACX,IAAIlB,SAAS,QAAQ2M,aAAa,KAAK;EAAE;EAC1C9J,EAAA,OAAAyK;EAAAzK,EAAA,OAAA2B;EAAA3B,EAAA,OAAAkR;EAAAlR,EAAA,OAAAwR;EAAAxR,EAAA,OAAA3B;EAAA2B,EAAA,OAAA0O;EAAA1O,EAAA,OAAAwK;EAAAxK,EAAA,OAAA8J;EAAA9J,EAAA,OAAAgL;EAAAhL,EAAA,OAAA7C;EAAA6C,EAAA,OAAA4X;CAAA,OAAAA,MAAA5X,EAAA;CAAA,IAAA+X;CAAA,IAAA/X,EAAA,SAAA+J,gBAAA/J,EAAA,SAAA4B,eAAA5B,EAAA,SAAA8J,gBAAA9J,EAAA,SAAA7C,QAAA6C,EAAA,SAAA6M,mBAAA;EACUkL,YAAA;GACTnW,cAAc;GACd,IAAIzE,SAAS,UAAQ;GACrB,IAAI4M,aAAY/B,SAAU,MAAM,IAAI7G,MAAM,0BAA0B;GACpE2I,aAAa,IAAI;GACjB+C,kBAAkB;EAAC;EACpB7M,EAAA,OAAA+J;EAAA/J,EAAA,OAAA4B;EAAA5B,EAAA,OAAA8J;EAAA9J,EAAA,OAAA7C;EAAA6C,EAAA,OAAA6M;EAAA7M,EAAA,OAAA+X;CAAA,OAAAA,MAAA/X,EAAA;CAAA,IAAAgY;CAAA,IAAAhY,EAAA,SAAAwP,kBAAA;EAIUwI,OAAA/T,eAAA;GACT,IAAI,QAAQN,YAAQ,OACX6L,iBAAgB5L,IAAK,EAAAM,KAAOP,WAAQ5G,GAAI,CAAC;GACjD,OACMyS,iBAAgB5L,IAAKD,UAAQ;EAAC;EACtC3D,EAAA,OAAAwP;EAAAxP,EAAA,OAAAgY;CAAA,OAAAA,MAAAhY,EAAA;CAAA,IAAAiY;CAAA,IAAAjY,EAAA,SAAA2K,YAAA3K,EAAA,SAAAmK,WAAAnK,EAAA,SAAAsK,gBAAAtK,EAAA,SAAAiK,WAAAjK,EAAA,SAAAmV,OAAAnV,EAAA,SAAAoV,OAAApV,EAAA,SAAA6V,OAAA7V,EAAA,SAAAqW,OAAArW,EAAA,SAAA0W,OAAA1W,EAAA,SAAA6W,OAAA7W,EAAA,SAAA4X,OAAA5X,EAAA,SAAA+X,OAAA/X,EAAA,SAAAgY,KAAA;EAjLIC,MAAA;GAAA7T,UACK+Q;GAAWlL;GAAAE;GAAAG;GAAA4N,eAIN9C;GAoDd+C,kBACiBtC;GASjBjR,YACWyR;GAaX+B,OACM1B;GAWN/B,MACKkC;GA2CL9J,QACO6K;GAuBPS,WACUN;GAMVO,gBACeC;GAAQC,eACTC;GAAQ9N;GAAA+N,WAEZV;EAMb;EAAChY,EAAA,OAAA2K;EAAA3K,EAAA,OAAAmK;EAAAnK,EAAA,OAAAsK;EAAAtK,EAAA,OAAAiK;EAAAjK,EAAA,OAAAmV;EAAAnV,EAAA,OAAAoV;EAAApV,EAAA,OAAA6V;EAAA7V,EAAA,OAAAqW;EAAArW,EAAA,OAAA0W;EAAA1W,EAAA,OAAA6W;EAAA7W,EAAA,OAAA4X;EAAA5X,EAAA,OAAA+X;EAAA/X,EAAA,OAAAgY;EAAAhY,EAAA,OAAAiY;CAAA,OAAAA,MAAAjY,EAAA;CAAA,OAlLMiY;AAkLN;AAGH,MAAMvW,yBAAyBxI,SAAS0Q,yBAAyB;AAEjE,MAAM+O,0BACJC,WACG;CACH,IAAIC;CAEJ,MAAMC,cAAc;EAClB,IAAI,CAACD,SAAS;EACdA,QAAQ9L,OAAO;EACf8L,UAAUrV,KAAAA;EACVoV,OAAOpV,KAAAA,CAAS;CAClB;CAEA,OAAO;EACLgB,QACEuU,SACA1b,YACG;GACHyb,MAAM;GAEN,MAAME,YAAYD,QAAQvU,MAAM/I,qBAAqB4B,OAAO,CAAC;GAC7D,IAAI4b;GACJA,QAAQD,UAAUE,gBAAgB;IAChC,IAAIF,UAAUxb,OAAOL,SAAS,SAAS;KACrC8b,QAAQ;KACRJ,UAAUrV,KAAAA;KACVoV,OAAOpV,KAAAA,CAAS;IAClB,OACEoV,OAAO;KAAEjY,WAAWtD,QAAQN;KAAIS,QAAQwb,UAAUxb;IAAO,CAAC;GAE9D,CAAC;GAED,IAAIwb,UAAUxb,OAAOL,SAAS,SAAS;IACrC8b,MAAM;IACNL,OAAOpV,KAAAA,CAAS;IAChB;GACF;GAEAqV,UAAU;IACRlY,WAAWtD,QAAQN;IACnBgQ,cAAc;KACZkM,MAAO;KACPD,UAAUjM,OAAO;IACnB;GACF;GACA6L,OAAO;IAAEjY,WAAWtD,QAAQN;IAAIS,QAAQwb,UAAUxb;GAAO,CAAC;EAC5D;EACA2b,YAAY;GACV,IAAI,CAACN,SAAS,MAAM,IAAI1X,MAAM,4BAA4B;GAC1D2X,MAAM;EACR;EACAM,cAAczY,cAAsB;GAClC,IAAIkY,SAASlY,cAAcA,WACzB,MAAM,IAAIQ,MAAM,6BAA6B;GAC/C2X,MAAM;EACR;EACAO,SAASP;CACX;AACF;AAEA,MAAMQ,sBAAsB5b,aAA+C;CACzE,MAAM6b,0BAAU,IAAI/N,IAAY;CAChC,MAAMgO,UAAmC,CAAA;CACzC,KAAK,IAAIC,IAAI/b,SAAS4E,SAAS,GAAGmX,KAAK,GAAGA,KAAK;EAC7C,MAAMpc,UAAUK,SAAS+b;EACzB,IAAIF,QAAQ3N,IAAIvO,QAAQN,EAAE,GAAG;GAC3BmV,QAAQwH,KACN,yCAAyCrc,QAAQN,GAAE,+DACrD;GACA;EACF;EACAwc,QAAQzN,IAAIzO,QAAQN,EAAE;EACtByc,QAAQG,KAAKtc,OAAO;CACtB;CACA,OAAOmc,QAAQlX,WAAW5E,SAAS4E,SAAS5E,WAAW8b,QAAQI,QAAQ;AACzE;AAGA,MAAMC,qBAAoB9Z,OAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAC,MAAA,EAAAvC,UAAAoc,cAAAnc,WAAA2C,IAAA1C,WAAAiD,IAAAhD,OAAAkc,aAAAjc,QAAAC,gBAAAgD,IAAA/C,OAAAC,QAAAC,UAAAE,YAAAC,UAAAC,UAAAC,iBAAAE,iBAAAE,kBAAAQ,kCAAAP,qBAAAC,mBAAAC,iBAAAC,eAAAC,OAAAC,UAAAC,4BAAAa;CAEzB,MAAApC,YAAA2C,OAAAkD,KAAAA,IAAA,QAAAlD;CACA,MAAA1C,YAAAiD,OAAA2C,KAAAA,IAAA,QAAA3C;CAGA,MAAA9C,iBAAAgD,OAAAyC,KAAAA,IAAA,QAAAzC;CAAsB,IAAAG;CAAA,IAAAlB,EAAA,OAAA8Z,cAAA;EAoBd5Y,KAAAoY,mBAAmBQ,YAAY;EAAC9Z,EAAA,KAAA8Z;EAAA9Z,EAAA,KAAAkB;CAAA,OAAAA,KAAAlB,EAAA;CADxC,MAAAtC,WACQwD;CAEN,IAAAG;CAAA,IAAArB,EAAA,OAAA6H,OAAAC,IAAA,2BAAA,GAAA;EAiBAzG,KAAA,CAAC;EAACrB,EAAA,KAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAbJ,MAAA,CAAAT,mBAAAya,wBAAkDnhB,SAahDwI,EAAE;CAAE,IAAAI;CAAA,IAAAzB,EAAA,OAAAT,mBAAA;EAEckC,MAAAH,QAAA;GAClB,MAAAmK,QAAclM,kBAAkB+B,IAAGvE;GACnC,MAAAkd,WAAiB3Y,IAAGmB,SAASlD;GAAmB,OACzCkM,SACLwO,UAAQ9c,SAAWsO,MAAKwO,UAAe9c,QACvC8c,UAAQza,YAAciM,MAAKwO,UAAkBza,UAC3CiM,MAAK/L,WAHF8D,KAAAA;EAIM;EACdxD,EAAA,KAAAT;EAAAS,EAAA,KAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CARD,MAAAka,cAAoBzY;CAQlB,IAAAO;CAAA,IAAAO;CAAA,IAAAvC,EAAA,OAAAtC,UAAA;EAKQsE,WAAA;GAERgY,sBAAqB/R,SAAA;IACnB,MAAAkS,OAAald,OAAMmd,QAASnS,IAAI,CAAC,CAAAgE,QAAQtJ,OAAA;KAAC,MAAA,CAAA5F,IAAAiP,WAAArJ;KACxC,MAAA0X,QAAY3c,SAAQgO,MAAM4O,MAAOA,EAACvd,OAAQA,EAAE;KAAE,OAE5C,CAAC,CAACuE,SACFA,MAAGmB,SAASlD,mBAAwBpC,SAAKsO,QAAKwO,UAAe9c,QAC7DmE,MAAGmB,SAASlD,mBAA2BC,YAAKiM,QAAKwO,UAAkBza;IAAA,CAEtE;IAAE,OACI2a,KAAI7X,WAAYrF,OAAMsd,KAAMtS,IAAI,CAAC,CAAA3F,SAAjC2F,OAEHhL,OAAMud,YAAaL,IAAI;GAAC,CAC7B;EAAC;EACD5X,KAAA,CAAC7E,QAAQ;EAACsC,EAAA,KAAAtC;EAAAsC,EAAA,KAAAgC;EAAAhC,EAAA,KAAAuC;CAAA,OAAA;EAAAP,KAAAhC,EAAA;EAAAuC,KAAAvC,EAAA;CAAA;CAfbjH,UAAUiJ,IAePO,EAAU;CAAC,IAAAI;CAAA,IAAA3C,EAAA,OAAAlB,iBAAA;EAEe6D,MAAAtF,SAAAqC,aAAA;GAI3B,MAAAF,UAAgBE,SAAQF,SAAcmQ,KAAC;GACvC,MAAA8K,sBAA0B;IAAAtd,MAClBuC,SAAQvC;IAAK,GACfqC,UAAA,EAAAA,QAAgC,IAAhCgE,KAAAA;GACN;GACA1E,iBAAe4b,OAAS;IAAArd;IAAA,GAAckC;GAAkB,CAAC;GAEzD,IAAIlC,QAAOmF,SAAU,aACnBwX,sBAAqB9M,YAAW;IAAA,GAC3BjF;KACF5K,QAAON,KAAM;KAAA2C,UACFH;KAAiB0a,UACjB5c,QAAOoF,SAASlD;IAC5B;GACF,EAAE;EACH;EACFS,EAAA,KAAAlB;EAAAkB,EAAA,KAAA2C;CAAA,OAAAA,KAAA3C,EAAA;CApBD,MAAA2a,uBAA6BhY;CAsB7B,MAAA,CAAAiY,aAAAC,aAAiChiB,SAAkC2K,KAAAA,CAAS;CAAE,IAAAZ;CAAA,IAAA5C,EAAA,QAAA6H,OAAAC,IAAA,2BAAA,GAAA;EAC1ClF,YAAM+V,uBAAuBkC,SAAS;EAAC7a,EAAA,MAAA4C;CAAA,OAAAA,MAAA5C,EAAA;CAA3E,MAAA,CAAA8a,oBAA2BjiB,SAAS+J,GAAuC;CAE3E,MAAAmY,mBAAyB,CAAC,CAAChc;CAC3B,MAAAY,SAAeob,mBAAAH,cAAApX,KAAAA;CAA2C,IAAAT;CAAA,IAAAC;CAAA,IAAAhD,EAAA,QAAA+a,oBAAA/a,EAAA,QAAA8a,kBAAA;EAChD/X,YAAA;GACR,IAAI,CAACgY,kBAAkBD,iBAAgBzB,QAAS;EAAE;EACjDrW,MAAA,CAAC+X,kBAAkBD,gBAAgB;EAAC9a,EAAA,MAAA+a;EAAA/a,EAAA,MAAA8a;EAAA9a,EAAA,MAAA+C;EAAA/C,EAAA,MAAAgD;CAAA,OAAA;EAAAD,MAAA/C,EAAA;EAAAgD,MAAAhD,EAAA;CAAA;CAFvCjH,UAAUgK,KAEPC,GAAoC;CAAC,IAAAE;CAAA,IAAAC;CAAA,IAAAnD,EAAA,QAAA8a,kBAAA;EAE9B5X,kBAAY4X,iBAAgBzB,QAAS;EAAGlW,MAAA,CAAC2X,gBAAgB;EAAC9a,EAAA,MAAA8a;EAAA9a,EAAA,MAAAkD;EAAAlD,EAAA,MAAAmD;CAAA,OAAA;EAAAD,MAAAlD,EAAA;EAAAmD,MAAAnD,EAAA;CAAA;CAApEjH,UAAUmK,KAAwCC,GAAkB;CAAC,IAAAC;CAAA,IAAApD,EAAA,QAAAjB,iBAAAiB,EAAA,QAAA8a,kBAAA;EAEjD1X,OAAA6J,cAAA;GAClB,IAAI,CAAClO,eAAe,MAAM,IAAIoC,MAAM,+BAA+B;GACnE2Z,iBAAgBtW,MAAOzF,eAAe1B,SAAO;EAAC;EAC/C2C,EAAA,MAAAjB;EAAAiB,EAAA,MAAA8a;EAAA9a,EAAA,MAAAoD;CAAA,OAAAA,MAAApD,EAAA;CAHD,MAAAgb,cAAoB5X;CAGlB,IAAAM;CAAA,IAAA1D,EAAA,QAAAtC,YAAAsC,EAAA,QAAA9B,UAAA;EAEmBwF,OAAA/C,cAAA;GACnB,MAAAsa,eAAqBvd,SAAQmG,WAAWqX,QAAOZ,IAACvd,OAAQ4D,SAAS;GACjE,IAAIsa,iBAAiB,IAAE;GAEvB,MAAA9c,WAAiB8c,eAAe,IAAIvd,SAASud,eAAe,EAAE,CAAAle,KAA7C;GACjBmB,WAAWC,QAAQ;EAAC;EACrB6B,EAAA,MAAAtC;EAAAsC,EAAA,MAAA9B;EAAA8B,EAAA,MAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAND,MAAAmb,eAAqBzX;CAMnB,IAAAM;CAAA,IAAAhE,EAAA,QAAAtC,UAAA;EAGMsG,MAAAtG,SAAQ8C,IAAK4a,OAA4C;EAACpb,EAAA,MAAAtC;EAAAsC,EAAA,MAAAgE;CAAA,OAAAA,MAAAhE,EAAA;CADlE,MAAA+G,cACQ/C;CAEN,IAAAG;CAAA,IAAAnE,EAAA,QAAA3B,YAAA2B,EAAA,QAAAhB,OAAA;EAEsBmF,YAAA;GAGtB,IAAI,CAAC9F,UAAQ;GAKbW,OAAKqc,6BAA+B;GACpChd,SAAS;EAAC;EACX2B,EAAA,MAAA3B;EAAA2B,EAAA,MAAAhB;EAAAgB,EAAA,MAAAmE;CAAA,OAAAA,MAAAnE,EAAA;CAVD,MAAAsb,kBAAwBnX;CAUtB,IAAAiL;CAAA,IAAApP,EAAA,QAAAtC,YAAAsC,EAAA,QAAAhC,OAAA;EAEoBoR,OAAAmM,cAAA;GAGpBvd,QAAQ;IAAA,GAAKX;IAAOc,UAAYT,SAAQ8d,GAAI,EAAM,CAAC,EAAAze,MAAnB;GAA4B,CAAC;EAAC;EAC/DiD,EAAA,MAAAtC;EAAAsC,EAAA,MAAAhC;EAAAgC,EAAA,MAAAoP;CAAA,OAAAA,MAAApP,EAAA;CAJD,MAAAyb,gBAAsBrM;CAIpB,IAAAE;CAAA,IAAAtP,EAAA,QAAAtC,UAAA;EAEa4R,MAAA5R,SAAQ8d,GAAI,EAAM,CAAC,EAAAze,MAAnB;EAA2BiD,EAAA,MAAAtC;EAAAsC,EAAA,MAAAsP;CAAA,OAAAA,MAAAtP,EAAA;CAA1C,MAAA0b,SAAepM;CACf,MAAAqM,YAAkB,CAAC,CAACtd;CACpB,MAAAud,mBAAyB,CAAC,CAACrd;CAAgB,IAAAgR;CAAA,IAAAvP,EAAA,QAAA0b,UAAA1b,EAAA,QAAAhB,OAAA;EAGvCuQ,MAAAvQ,SAAA;GAAA,GACKA;GAAKuU,UACCsI,cACP7c,MAAKuU,QAAS;IAAA,GAAKlW;IAAOc,UAAYd,UAAOc,YAAPud;GAA2B,CAAC;GAACtU,QAC9D0U,cACL9c,MAAKoI,MAAO;IAAA,GAAK/J;IAAOc,UAAYd,UAAOc,YAAPud;GAA2B,CAAC;EACpE;EAAC1b,EAAA,MAAA0b;EAAA1b,EAAA,MAAAhB;EAAAgB,EAAA,MAAAuP;CAAA,OAAAA,MAAAvP,EAAA;CARL,MAAA+b,gBAEIxM;CAaW,MAAAQ,MAAApS,aAAAge;CAAsB,IAAA3L;CAAA,IAAAhQ,EAAA,QAAAnB,qBAAAmB,EAAA,QAAA+b,iBAAA/b,EAAA,QAAAsb,mBAAAtb,EAAA,QAAAyb,iBAAAzb,EAAA,QAAArC,aAAAqC,EAAA,QAAAjC,kBAAAiC,EAAA,QAAA+G,eAAA/G,EAAA,QAAA+P,KAAA;EAFnCC,MAAAtO,uBAAuB;GAAAvE,MACf;GAAQwE,WACHoO;GAAsBpS;GAAAI;GAAAM,UAGvBid;GAAezZ,QACjB4Z;GAAazc,OACd+c;GAAald;GAAAkI;EAGtB,CAAC;EAAC/G,EAAA,MAAAnB;EAAAmB,EAAA,MAAA+b;EAAA/b,EAAA,MAAAsb;EAAAtb,EAAA,MAAAyb;EAAAzb,EAAA,MAAArC;EAAAqC,EAAA,MAAAjC;EAAAiC,EAAA,MAAA+G;EAAA/G,EAAA,MAAA+P;EAAA/P,EAAA,MAAAgQ;CAAA,OAAAA,MAAAhQ,EAAA;CAXJ,MAAA8B,iBAAuBrI,kBACrBuW,GAWF;CACA,MAAAxG,aAAmB1H,eAAcjE,MAAM2L;CACvC,MAAA0B,YAAkBpJ,eAAcjE,MAAMqN;CAAW,IAAAgF;CAAA,IAAAlQ,EAAA,QAAAkL,WAAA;EAIpCgF,MAAAhF,aAAA,CAAA;EAAelL,EAAA,MAAAkL;EAAAlL,EAAA,MAAAkQ;CAAA,OAAAA,MAAAlQ,EAAA;CAAA,IAAAgR;CAAA,IAAAhR,EAAA,QAAAwJ,YAAA;EAAOwH,MAAAxH,aAAA,CAAcA,UAAU,IAAxB,CAAA;EAA8BxJ,EAAA,MAAAwJ;EAAAxJ,EAAA,MAAAgR;CAAA,OAAAA,MAAAhR,EAAA;CAAA,IAAAmR;CAAA,IAAAnR,EAAA,QAAAkQ,OAAAlQ,EAAA,QAAAgR,KAAA;EAAzDG,MAAA,CAAA,GAAKjB,KAAe,GAAOc,GAA8B;EAAEhR,EAAA,MAAAkQ;EAAAlQ,EAAA,MAAAgR;EAAAhR,EAAA,MAAAmR;CAAA,OAAAA,MAAAnR,EAAA;CADnE,MAAAgc,UACQ7K;CAGR,MAAA8K,aAAmBD,QAAO1Z,SAAU;CAAE,IAAAmP;CAAA,IAAAzR,EAAA,QAAAnB,qBAAAmB,EAAA,QAAAf,YAAAe,EAAA,QAAAka,eAAAla,EAAA,QAAAmb,gBAAAnb,EAAA,QAAAgb,eAAAhb,EAAA,QAAA2a,wBAAA3a,EAAA,QAAAic,cAAAjc,EAAA,QAAAtC,YAAAsC,EAAA,QAAAvB,mBAAAuB,EAAA,QAAA/B,UAAA+B,EAAA,QAAAd,2BAAAc,EAAA,QAAArB,oBAAAqB,EAAA,QAAAhB,SAAAgB,EAAA,QAAAL,UAAAK,EAAA,QAAA8a,oBAAA9a,EAAA,QAAAb,kCAAA;EAEpCsS,MAAA/T,SAAQ8C,KAAK0b,OAAA7c,UAAA;GACX,MAAA8c,QAAkC;IAAA9e,SACvBiE;IAAGjC;IAAAC,QAEJD,UAAU3B,SAAQ4E,SAAU,KAA5B,CAAkC2Z;IAAU9d,UAC1CkB,QAAQ,IAAI3B,SAAS2B,QAAQ,EAAE,CAAAtC,KAA/B;IAA0CmB,gBACpCid,aAAa7Z,MAAGvE,EAAG;IAACiC;IAAAC;IAAAC;IAAAC;IAAAV;IAAAE;IAAAE;IAAAU,mBAQjB2a,YAAY5Y,KAAG;IAAC7B,mBACjB2c,eAAczB,qBAAqBrZ,OAAK5B,UAAQ;IAACC,QAC3DA,QAAMgB,cAAgBW,MAAGvE,KAAzB4C,SAAA6D,KAAAA;IAAiD5D,eAC1Cob,YAAY1Z,KAAG;IAACzB,sBACTib,iBAAgB1B,YAAa9X,MAAGvE,EAAG;GAC3D;GACA,IAAIkB,QAAQke,MAAKle,SAAUA;GAAO,OAC3B9E,QAAQmI,MAAGvE,IAAK8H,cAAcsX,KAAK,CAAC;EAAC,CAC7C;EAACnc,EAAA,MAAAnB;EAAAmB,EAAA,MAAAf;EAAAe,EAAA,MAAAka;EAAAla,EAAA,MAAAmb;EAAAnb,EAAA,MAAAgb;EAAAhb,EAAA,MAAA2a;EAAA3a,EAAA,MAAAic;EAAAjc,EAAA,MAAAtC;EAAAsC,EAAA,MAAAvB;EAAAuB,EAAA,MAAA/B;EAAA+B,EAAA,MAAAd;EAAAc,EAAA,MAAArB;EAAAqB,EAAA,MAAAhB;EAAAgB,EAAA,MAAAL;EAAAK,EAAA,MAAA8a;EAAA9a,EAAA,MAAAb;EAAAa,EAAA,MAAAyR;CAAA,OAAAA,MAAAzR,EAAA;CAvBJ,MAAAqc,iBAAuB9iB,gBACrBkY,GAuBF;CAAE,IAAAW;CAAA,IAAApS,EAAA,QAAAgc,SAAA;EAGM5J,MAAA4J,QAAOxb,IAAKxE,uBAAuB;EAACgE,EAAA,MAAAgc;EAAAhc,EAAA,MAAAoS;CAAA,OAAAA,MAAApS,EAAA;CAD5C,MAAAsc,kBACQlK;CAEN,IAAAwB;CAAA,IAAA5T,EAAA,QAAAtC,SAAA4E,UAAAtC,EAAA,QAAAgc,WAAAhc,EAAA,QAAAsc,iBAAA;EAEA1I,MAAAoI,QAAOxb,KAAK+b,KAAAvH,YACV7b,QACEojB,IAAGxf,IACHhB,oBAAoB;GAAAsB,SACTif,gBAAgBjd;GAAMmK,YACnB+S;GAAGld,OACR3B,SAAQ4E,SAAUjD;GAAKC,QACtBD,YAAU2c,QAAO1Z,SAAU;EACrC,CAAC,GACD;GAACga,gBAAgBjd;GAAQkd;GAAK7e,SAAQ4E;GAASjD;GAAO2c,QAAO1Z;EAAO,CACtE,CACF;EAACtC,EAAA,MAAAtC,SAAA4E;EAAAtC,EAAA,MAAAgc;EAAAhc,EAAA,MAAAsc;EAAAtc,EAAA,MAAA4T;CAAA,OAAAA,MAAA5T,EAAA;CAZH,MAAAwc,iBAAuBjjB,gBACrBqa,GAYF;CAAE,IAAAuB;CAAA,IAAAnV,EAAA,QAAA6H,OAAAC,IAAA,2BAAA,GAAA;EAEgCqN,MAAA9Y,kBAAkB;EAAC2D,EAAA,MAAAmV;CAAA,OAAAA,MAAAnV,EAAA;CAArD,MAAAyc,cAAkCtH;CAAyB,IAAAC;CAAA,IAAApV,EAAA,QAAAtC,UAAA;EAC/B0X,MAAAqH,YAAY/e,QAAQ;EAACsC,EAAA,MAAAtC;EAAAsC,EAAA,MAAAoV;CAAA,OAAAA,MAAApV,EAAA;CAAjD,MAAA0c,QAA4BtH;CAAgD,IAAAS;CAAA,IAAA7V,EAAA,QAAA0c,OAAA;EAE1E7G,MAAA6G,MAAKlc,IAAKmc,OAEV;EAAC3c,EAAA,MAAA0c;EAAA1c,EAAA,MAAA6V;CAAA,OAAAA,MAAA7V,EAAA;CAHH,MAAA4c,cAAoBrjB,gBAClBsc,GAGF;CAAE,IAAAQ;CAAA,IAAArW,EAAA,QAAA6H,OAAAC,IAAA,2BAAA,GAAA;EAGAuO,MAAAja,kBAAkBS,iBAAiB;EAACmD,EAAA,MAAAqW;CAAA,OAAAA,MAAArW,EAAA;CADtC,MAAA6c,oBAA0BpjB,kBACxB4c,GACF;CAEA,MAAAyG,WAAiB,CAAC,CAAC9d;CACnB,MAAA+d,cAAoB,CAAC,CAAC9d;CACtB,MAAA+d,UAAgB,CAAC,CAAC/e;CAClB,MAAAgf,YAAkB,CAAC,CAAC/e;CACpB,MAAAgf,iBAAuB,CAAC,CAACre;CACzB,MAAAse,cAAoB,CAAC,CAACre;CACtB,MAAAse,YAAkB,CAAC,CAACre;CAAc,IAAA2X;CAAA,IAAA1W,EAAA,QAAAqc,eAAAxe,SAAAmC,EAAA,QAAAwc,eAAA3e,OAAA;EAG9B6Y,MAAA8F,eAAc3e,MAAMyE,WAAY,IAC5B+Z,eAAcxe,QADlB,CAAA,GAEQwe,eAAcxe,OAAM,GAAK2e,eAAc3e,KAAM;EAACmC,EAAA,MAAAqc,eAAAxe;EAAAmC,EAAA,MAAAwc,eAAA3e;EAAAmC,EAAA,MAAA0W;CAAA,OAAAA,MAAA1W,EAAA;CAHxD,MAAAqd,gBACE3G;CAKS,MAAAG,MAAAwG,cAAa/a,WAAY,KAAzB,CAA+B1E;CAAS,IAAAga;CAAA,IAAA5X,EAAA,QAAAkd,kBAAAld,EAAA,QAAA+c,eAAA/c,EAAA,QAAA2b,aAAA3b,EAAA,QAAAgd,WAAAhd,EAAA,QAAAmd,eAAAnd,EAAA,QAAA8c,YAAA9c,EAAA,QAAA4b,oBAAA5b,EAAA,QAAAid,aAAAjd,EAAA,QAAAod,WAAA;EAInCxF,MAAA;GAAA0F,MACNN;GAAO3Y,QACL;GAAKE,QACL0Y;GAASM,eACF3B;GAAgB7O,QACvB4O;GAAShc,QACTyd;GAAStc,aACJoc;GAAcxd,UACjByd;GAAWK,OACd;GAAK/Z,gBACIsZ;GAAWU,uBACJ;GAAKC,eACb;GAAK5N,WACT;GAAK9Q,OACT8d;EACT;EAAC9c,EAAA,MAAAkd;EAAAld,EAAA,MAAA+c;EAAA/c,EAAA,MAAA2b;EAAA3b,EAAA,MAAAgd;EAAAhd,EAAA,MAAAmd;EAAAnd,EAAA,MAAA8c;EAAA9c,EAAA,MAAA4b;EAAA5b,EAAA,MAAAid;EAAAjd,EAAA,MAAAod;EAAApd,EAAA,MAAA4X;CAAA,OAAAA,MAAA5X,EAAA;CAAA,IAAA+X;CAAA,IAAA/X,EAAA,QAAA+Z,aAAA;EAGMhC,MAAAgC,eAAA,CAAgB;EAAC/Z,EAAA,MAAA+Z;EAAA/Z,EAAA,MAAA+X;CAAA,OAAAA,MAAA/X,EAAA;CAAA,IAAAgY;CAAA,IAAAhY,EAAA,QAAA8B,eAAAjE,SAAAmC,EAAA,QAAAlC,UAAAkC,EAAA,QAAApC,aAAAoC,EAAA,SAAArC,aAAAqC,EAAA,SAAAqd,iBAAArd,EAAA,SAAAL,UAAAK,EAAA,SAAA6W,OAAA7W,EAAA,SAAA4X,OAAA5X,EAAA,SAAA+X,OAAA/X,EAAA,SAAA0c,OAAA;EAvBnB1E,MAAA;GAAAtI,SACImH;GAAwC8G,YACrC;GAAK/f;GAAAD;GAAAigB,cAGHhG;GAebla,UACS2f;GAAaX;GAAA7e,OAEhBka;GAAiB8F,aACXhhB;GAAiBiB;GAAA6B;GAAA6d,OAGvBha,KAAAA;GAASV,UACNhB,eAAcjE;EAC1B;EAACmC,EAAA,MAAA8B,eAAAjE;EAAAmC,EAAA,MAAAlC;EAAAkC,EAAA,MAAApC;EAAAoC,EAAA,OAAArC;EAAAqC,EAAA,OAAAqd;EAAArd,EAAA,OAAAL;EAAAK,EAAA,OAAA6W;EAAA7W,EAAA,OAAA4X;EAAA5X,EAAA,OAAA+X;EAAA/X,EAAA,OAAA0c;EAAA1c,EAAA,OAAAgY;CAAA,OAAAA,MAAAhY,EAAA;CAnCH,MAAAnC,QAMEma;CAiDC,IAAAC;CAAA,IAAAjY,EAAA,SAAAnC,OAAA;EAGSoa,YAAMpa;EAAKmC,EAAA,OAAAnC;EAAAmC,EAAA,OAAAiY;CAAA,OAAAA,MAAAjY,EAAA;CAAA,IAAA8d;CAAA,IAAA9d,EAAA,SAAA8B,eAAAmB,SAAA;EACX6a,YAAMhc,eAAcmB;EAAQjD,EAAA,OAAA8B,eAAAmB;EAAAjD,EAAA,OAAA8d;CAAA,OAAAA,MAAA9d,EAAA;CAAA,IAAA+d;CAAA,IAAA/d,EAAA,SAAA6c,mBAAA;EACzBkB,YAAMlB,kBAAiB5Z;EAAQjD,EAAA,OAAA6c;EAAA7c,EAAA,OAAA+d;CAAA,OAAAA,MAAA/d,EAAA;CAAA,IAAAge;CAAA,IAAAhe,EAAA,SAAA4c,eAAA5c,EAAA,SAAA0c,OAAA;EACtCsB,OAAAra,aAAA;GACJ,IAAI,QAAQA,UAAQ;IAClB,MAAAsa,SAAavB,MAAKhR,MAAMC,cAAeA,UAAS5O,OAAQ4G,SAAQ5G,EAAG;IAAE,OAC9D6f,YAAWhZ,IAAK,EAAAM,KAAOga,SAAO5hB,WAAW4hB,MAAkB,IAAVva,SAAQ5G,GAAI,CAAC;GAAC;GACvE,OACM6f,YAAWhZ,IAAKD,QAAQ;EAAC;EACjC3D,EAAA,OAAA4c;EAAA5c,EAAA,OAAA0c;EAAA1c,EAAA,OAAAge;CAAA,OAAAA,MAAAhe,EAAA;CAAA,IAAAme;CAAA,IAAAne,EAAA,SAAAtC,YAAAsC,EAAA,SAAAhC,SAAAgC,EAAA,SAAAhB,OAAA;EACOmf,OAAAC,cAAA;GACN,MAAAC,gBACE,OAAOhhB,cAAY,WAAnB;IAAAqV,2BAEiB,IAAIC,KAAK;IAACxU,UACXT,SAAQ8d,GAAI,EAAM,CAAC,EAAAze,MAAnB;IAA2BwE,UAC3B;IAAI8I,WACH,CAAC;IAAC7H,MACP;IAAMjC,SACH,CAAC;KAAApD,MAAQ;KAAM6M,MAAQ3M;IAAQ,CAAC;IAACyD,aAC7B,CAAA;IAAE2B,UACL,EAAAoQ,QAAU,CAAC,EAAE;GAezB,IAxBJ;IAAAH,WAYiBrV,UAAOqV,6BAAP,IAAyBC,KAAK;IAACxU,UAExCd,UAAOc,aAAcqF,KAAAA,IAChB9F,SAAQ8d,GAAI,EAAM,CAAC,EAAAze,MAAnB,OACDM,UAAOc;IAASoD,UACZlE,UAAOkE,YAAP;IAAwBiB,MAC5BnF,UAAOmF,QAAP;IAAsBjC,SACnBlD,UAAOkD;IAAQO,aACXzD,UAAOyD,eAAP,CAAA;IAAyB2B,UAC5BpF,UAAOoF,YAAP,EAAAoQ,QAA8B,CAAC,EAAE;IAACxI,WACjChN,UAAOgN,aAAP,CAAsB;IAACuI,UACxBvV,UAAOuV;GACnB;GACN,IAAI5T,OACFA,MAAKuU,QAAS8K,aAAa;QAE3BrgB,QAAQqgB,aAAa;EACtB;EACFre,EAAA,OAAAtC;EAAAsC,EAAA,OAAAhC;EAAAgC,EAAA,OAAAhB;EAAAgB,EAAA,OAAAme;CAAA,OAAAA,MAAAne,EAAA;CAAA,IAAAse;CAAA,IAAAte,EAAA,SAAA5B,YAAA;EAESkgB,YAAA;GACRlgB,aAAa;EAAC;EACf4B,EAAA,OAAA5B;EAAA4B,EAAA,OAAAse;CAAA,OAAAA,MAAAte,EAAA;CAAA,IAAAue;CAAA,IAAAve,EAAA,SAAA1B,UAAA;EACUigB,YAAA;GACT,IAAI,CAACjgB,UACH,MAAM,IAAI6C,MACR,+DACF;GACF7C,SAAS;EAAC;EACX0B,EAAA,OAAA1B;EAAA0B,EAAA,OAAAue;CAAA,OAAAA,MAAAve,EAAA;CAAA,IAAAwe;CAAA,IAAAxe,EAAA,SAAAzB,iBAAA;EAEGigB,MAAAjgB,mBAAA,EAAAkgB,wBAA6ClgB,gBAAgB;EAACyB,EAAA,OAAAzB;EAAAyB,EAAA,OAAAwe;CAAA,OAAAA,MAAAxe,EAAA;CAAA,IAAA0e;CAAA,IAAA1e,EAAA,SAAApB,qBAAA;EAC7C8f,OAAAC,YAAA;GACnB,IAAI,CAAC/f,qBACH,MAAM,IAAIuC,MACR,sFACF;GACFvC,oBAAoBf,OAAK;EAAC;EAC3BmC,EAAA,OAAApB;EAAAoB,EAAA,OAAA0e;CAAA,OAAAA,MAAA1e,EAAA;CAAA,IAAA4e;CAAA,IAAA5e,EAAA,SAAAqc,kBAAArc,EAAA,SAAAgc,WAAAhc,EAAA,SAAAwc,gBAAA;EAKQoC,OAAA3a,eAAA;GACP,IAAI,QAAQN,YAAQ;IAClB,IAAIqY,QAAO9N,MAAM2Q,UAAStC,MAAGxf,OAAQ4G,WAAQ5G,EAAG,GAAC,OACxCyf,eAAc5Y,IAAK,EAAAM,KAAOP,WAAQ5G,GAAI,CAAC;IAAE,OAC3Csf,eAAczY,IAAK,EAAAM,KAAOP,WAAQ5G,GAAI,CAAC;GAAC;GAEjD,IAAI4G,WAAQtE,SAAUgd,eAAcxe,MAAMyE,QAAO,OACxCka,eAAc5Y,IAAK,EAAAvE,OACjBsE,WAAQtE,QAASgd,eAAcxe,MAAMyE,OAC9C,CAAC;GAAE,OACE+Z,eAAczY,IAAKD,UAAQ;EAAC;EACpC3D,EAAA,OAAAqc;EAAArc,EAAA,OAAAgc;EAAAhc,EAAA,OAAAwc;EAAAxc,EAAA,OAAA4e;CAAA,OAAAA,MAAA5e,EAAA;CAAA,IAAA8e;CAAA,IAAA9e,EAAA,SAAAsb,mBAAAtb,EAAA,SAAA8a,iBAAA3B,QAAAnZ,EAAA,SAAAiY,OAAAjY,EAAA,SAAA8d,OAAA9d,EAAA,SAAA+d,OAAA/d,EAAA,SAAAge,OAAAhe,EAAA,SAAAme,OAAAne,EAAA,SAAAse,OAAAte,EAAA,SAAAue,OAAAve,EAAA,SAAAwe,OAAAxe,EAAA,SAAA0e,OAAA1e,EAAA,SAAA4e,KAAA;EA/EIE,MAAA;GAAA1a,UACK6T;GAAWnV,UACXgb;GAA4BD,aACzBE;GAA+BG,MACtCF;GAMLe,QACOZ;GAgCPa,eACcC;GAAQrM,UACb0L;GAETY,WACUX;GAMVY,WACU7D;GAAe,GACtBkD;GAA8DY,qBAC7CV;GAMpBW,iBACgBC;GAAiCC,QAC1CC;GAAwBC,QACxBC;GAAQtH,OACTuH;GAAQtiB,SACNuhB;GAWRna,cACaqW,iBAAgB3B;GAAKyG,cACrBC;GAAQC,iBACLC;GAAQC,gBACTC;GAAOC,sBACDC;GAAcC,WACzBC;GAAQC,aACNC;EACf;EAACvgB,EAAA,OAAAsb;EAAAtb,EAAA,OAAA8a,iBAAA3B;EAAAnZ,EAAA,OAAAiY;EAAAjY,EAAA,OAAA8d;EAAA9d,EAAA,OAAA+d;EAAA/d,EAAA,OAAAge;EAAAhe,EAAA,OAAAme;EAAAne,EAAA,OAAAse;EAAAte,EAAA,OAAAue;EAAAve,EAAA,OAAAwe;EAAAxe,EAAA,OAAA0e;EAAA1e,EAAA,OAAA4e;EAAA5e,EAAA,OAAA8e;CAAA,OAAAA,MAAA9e,EAAA;CAAA,OAvFM8e;AAuFN;AAGH,MAAa0B,iBAAiBtnB,SAAS2gB,iBAAiB;AAExDrgB,sBAAsBqgB,oBAAoB4G,QAAQC,WAAW;CAC3D,IAAI,CAACD,OAAOE,WAAWD,OAAOC,QAAQC,WAAW,MAAM;EACrD,MAAMC,gBAAgBJ,OAAOK;EAC7BL,OAAOE,UAAUjkB,iBAAiB,EAAEokB,QAAQD,cAAc,CAAC;EAE3D,OAAOJ,OAAOK;EACdL,OAAOK,SAASpnB,QAAQ;GACtBknB,QAAQ;GACRG,OAAO,EAAE5jB,MAAM,OAAO;GACtByG,MAAMod,QAAQA,IAAIL,QAAQG,OAAO,MAAM;EACzC,CAAC;CACH;CAEA,IAAI,CAACL,OAAOQ,kBAAkBP,OAAOO,eAAeL,WAAW,MAC7DH,OAAOQ,iBAAiBvnB,QAAQ;EAC9BknB,QAAQ;EACRG,OAAO,EAAE5jB,MAAM,OAAO;EACtByG,MAAMod,QAAQA,IAAIL,QAAQ1Z,KAAK,MAAM;CACvC,CAAC;CAGHwZ,OAAO3d,aAAapJ,QAAQ;EAC1BknB,QAAQ;EACRG,OAAO,CAAC;EACRnd,MAAMod,QAAQA,IAAIF,OAAOhe,SAAS;CACpC,CAAC;CAED,IAAI,CAAC2d,OAAOS,gBAAgBR,OAAOQ,aAAaN,WAAW,MACzDH,OAAOS,eAAe/kB,aAAa;CAErC,IAAI,CAACskB,OAAOU,SAAST,OAAOS,MAAMP,WAAW,MAC3CH,OAAOU,QAAQ3kB,MAAM,CAAC,CAAC;CAEzB,IAAI,CAACikB,OAAOW,iBAAiBV,OAAOU,cAAcR,WAAW,MAC3DH,OAAOW,gBAAgB3kB,cAAc;CAEvC,IAAI,CAACgkB,OAAO5C,eAAe6C,OAAO7C,YAAY+C,WAAW,MACvDH,OAAO5C,cAAcnkB,QAAQ;EAC3BknB,QAAQ;EACRG,OAAO,CAAC;EACRnd,MAAMod,QAAQA,IAAIF,OAAOjD,YAAY;CACvC,CAAC;AAEL,CAAC;AA/lDwB,SAAAwD,QAAA,CAAA;AAAA,SAAArgB,OAAA4D,YAAA;CAAA,OA0CnBzL,QACEyL,WAAU7H,IACV6J,mBAAmB;EAAAhC;EAAA6B,UAEP4a;CACZ,CAAC,CACH;AAAC;AAhDkB,SAAA/c,SAAA,CAAA;AAwLD,SAAAsB,SAAA,CAAA;AAoOU,SAAAsG,OAAAoV,SAAA;CAAA,OA2EV7V,QAAKjC;AAAW;AA3EN,SAAAgD,OAAAjP,MAAA;CAAA,OAgGVA,KAAIJ,SAAU;AAAM;AAhGV,SAAAsP,OAAA8U,QAAA;CAAA,OAiGbhkB,OAAIyM;AAAK;AAjGI,SAAAwE,OAAAgT,KAAA;CAAA,OAqOXlU,IAAC9P,OAAOL,SAAU;AAAU;AArOjB,SAAAkT,OAAAoR,cAAA;CAAA,OAwUc,CAAC7c,aAAU7H,IAAK6H,YAAU;AAAC;AAxUzC,SAAA0M,OAAAoQ,KAAA;CAAA,OAqW4BpU,IAACvQ;AAAG;AArWhC,SAAAkW,OAAA0O,eAAA;CAAA,OA8aM,CAAC/c,cAAU7H,IAAK6H,aAAU;AAAC;AA9ajC,SAAAiQ,QAAA+M,UAAA;CAAA,OAmfa5c,SAAMxH,WAAY;AAAU;AAnfzC,SAAAsa,QAAA+J,SAAA;CAoqBxB3P,QAAOjM,MAAO,+CAA+CA,OAAK;AAAC;AApqB3C,SAAAsS,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AA4wBR,SAAA2C,QAAA3N,WAAA;CAAA,OA4HU,GAAGpQ,UAAON,GAAG,GAAIM,UAAOmF;AAAO;AA5HzC,SAAAma,QAAAuB,MAAA;CAAA,OAwOpB/kB,QAAQmD,WAAW4hB,IAAI,GAAG3hB,WAAW,EAAA2hB,KAAO,CAAC,GAAG,CAACA,IAAI,CAAC;AAAC;AAxOnC,SAAAe,UAAA,CAAA;AAAA,SAAAK,UAAA;CAAA,OAgXE;EAAA6B,OAAS,CAAC;EAACW,QAAU,CAAC;CAAE;AAAC;AAhX3B,SAAAtC,UAAA;CAAA,OAiXP,EAAA9hB,UAAY,CAAA,EAAG;AAAC;AAjXT,SAAAgiB,UAAA,CAAA;AAAA,SAAAC,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AAAA,SAAAE,UAAA;CAAA,OAmYA;AAAC;AAnYD,SAAA8B,UAAA,CAAA;AAAA,SAAA5B,UAAA;CAAA,OAoYM4B;AAAQ;AApYd,SAAA1B,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA"}
@@ -1,6 +1,3 @@
1
- import { ClientOutput } from "@assistant-ui/store";
2
- //#region src/store/clients/model-context-client.d.ts
3
- declare const ModelContext: import("@assistant-ui/tap").Resource<ClientOutput<"modelContext">, []>;
4
- //#endregion
5
- export { ModelContext };
1
+ import type { ClientOutput } from "@assistant-ui/store";
2
+ export declare const ModelContext: import("@assistant-ui/tap").Resource<ClientOutput<"modelContext">, []>;
6
3
  //# sourceMappingURL=model-context-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"model-context-client.d.ts","names":[],"sources":["../../../src/store/clients/model-context-client.ts"],"mappings":";;cAwDa,0CAAY,SAAA"}
1
+ {"version":3,"file":"model-context-client.d.ts","sourceRoot":"","sources":["../../../src/store/clients/model-context-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAsDxD,eAAO,MAAM,YAAY,wEAA4B,CAAC"}
@@ -1,8 +1,5 @@
1
- import { ClientOutput } from "@assistant-ui/store";
2
- //#region src/store/clients/no-op-composer-client.d.ts
3
- declare const NoOpComposerClient: import("@assistant-ui/tap").Resource<ClientOutput<"composer">, [{
4
- type: "edit" | "thread";
1
+ import type { ClientOutput } from "@assistant-ui/store";
2
+ export declare const NoOpComposerClient: import("@assistant-ui/tap").Resource<ClientOutput<"composer">, [{
3
+ type: "edit" | "thread";
5
4
  }]>;
6
- //#endregion
7
- export { NoOpComposerClient };
8
5
  //# sourceMappingURL=no-op-composer-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-op-composer-client.d.ts","names":[],"sources":["../../../src/store/clients/no-op-composer-client.ts"],"mappings":";;cA2Ea,gDAAkB,SAAA;EAnEvB"}
1
+ {"version":3,"file":"no-op-composer-client.d.ts","sourceRoot":"","sources":["../../../src/store/clients/no-op-composer-client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AA2ExD,eAAO,MAAM,kBAAkB;UArEvB,MAAM,GAAG,QAAQ;GAqEwC,CAAC"}
@@ -35,7 +35,9 @@ const useNoOpComposerClient = (t0) => {
35
35
  type,
36
36
  dictation: void 0,
37
37
  quote: void 0,
38
- queue: t3
38
+ queue: t3,
39
+ submission: void 0,
40
+ inTransit: void 0
39
41
  };
40
42
  $[3] = type;
41
43
  $[4] = t4;
@@ -1 +1 @@
1
- {"version":3,"file":"no-op-composer-client.js","names":["useMemo","resource","ClientOutput","ComposerState","useNoOpComposerClient","t0","$","_c","type","t1","Symbol","for","t2","t3","t4","isEditing","isEmpty","text","attachmentAccept","attachments","role","runConfig","canCancel","canSend","dictation","undefined","quote","queue","state","t5","getState","setText","_temp","setRole","_temp2","setRunConfig","_temp3","addAttachment","_temp4","clearAttachments","_temp5","attachment","_temp6","reset","_temp7","send","_temp8","cancel","_temp9","startDictation","_temp0","stopDictation","_temp1","beginEdit","_temp10","setQuote","_temp11","queueItem","_temp12","NoOpComposerClient","Error"],"sources":["../../../src/store/clients/no-op-composer-client.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport type { ComposerState } from \"../scopes/composer\";\n\nconst useNoOpComposerClient = ({\n type,\n}: {\n type: \"edit\" | \"thread\";\n}): ClientOutput<\"composer\"> => {\n const state = useMemo<ComposerState>(() => {\n return {\n isEditing: false,\n isEmpty: true,\n text: \"\",\n attachmentAccept: \"*\",\n attachments: [],\n role: \"user\",\n runConfig: {},\n canCancel: false,\n canSend: false,\n type: type,\n dictation: undefined,\n quote: undefined,\n queue: [],\n };\n }, [type]);\n\n return {\n getState: () => state,\n setText: () => {\n throw new Error(\"Not supported\");\n },\n setRole: () => {\n throw new Error(\"Not supported\");\n },\n setRunConfig: () => {\n throw new Error(\"Not supported\");\n },\n addAttachment: () => {\n throw new Error(\"Not supported\");\n },\n clearAttachments: () => {\n throw new Error(\"Not supported\");\n },\n attachment: () => {\n throw new Error(\"Not supported\");\n },\n reset: () => {\n throw new Error(\"Not supported\");\n },\n send: () => {\n throw new Error(\"Not supported\");\n },\n cancel: () => {\n throw new Error(\"Not supported\");\n },\n startDictation: () => {\n throw new Error(\"Not supported\");\n },\n stopDictation: () => {\n throw new Error(\"Not supported\");\n },\n beginEdit: () => {\n throw new Error(\"Not supported\");\n },\n setQuote: () => {\n throw new Error(\"Not supported\");\n },\n queueItem: () => {\n throw new Error(\"Not supported\");\n },\n };\n};\n\nexport const NoOpComposerClient = resource(useNoOpComposerClient);\n"],"mappings":";;;;AAKA,MAAMI,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,SAAAH;CAI9B,IAAAI;CAAA,IAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,GAAA;EAOkBF,KAAA,CAAA;EAAEH,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAI,OAAAC,IAAA,2BAAA,GAAA;EAEJC,KAAA,CAAC;EAACN,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAO;CAAA,IAAAP,EAAA,OAAAI,OAAAC,IAAA,2BAAA,GAAA;EAMNE,KAAA,CAAA;EAAEP,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAE,MAAA;EAbJM,KAAA;GAAAC,WACM;GAAKC,SACP;GAAIC,MACP;GAAEC,kBACU;GAAGC,aACRV;GAAEW,MACT;GAAMC,WACDT;GAAEU,WACF;GAAKC,SACP;GAAKf;GAAAgB,WAEHC,KAAAA;GAASC,OACbD,KAAAA;GAASE,OACTd;EACT;EAACP,EAAA,KAAAE;EAAAF,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAfH,MAAAsB,QACEd;CAeS,IAAAe;CAAA,IAAAvB,EAAA,OAAAsB,OAAA;EAEJC,KAAA;GAAAC,gBACWF;GAAKG,SACZC;GAERC,SACQC;GAERC,cACaC;GAEbC,eACcC;GAEdC,kBACiBC;GAEjBC,YACWC;GAEXC,OACMC;GAENC,MACKC;GAELC,QACOC;GAEPC,gBACeC;GAEfC,eACcC;GAEdC,WACUC;GAEVC,UACSC;GAETC,WACUC;EAGb;EAACpD,EAAA,KAAAsB;EAAAtB,EAAA,KAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAAA,OA5CMuB;AA4CN;AAGH,MAAa8B,qBAAqB1D,SAASG,qBAAqB;AAtElC,SAAA4B,QAAA;CA0BxB,MAAM,IAAI4B,MAAM,eAAe;AAAE;AA1BT,SAAA1B,SAAA;CA6BxB,MAAM,IAAI0B,MAAM,eAAe;AAAE;AA7BT,SAAAxB,SAAA;CAgCxB,MAAM,IAAIwB,MAAM,eAAe;AAAE;AAhCT,SAAAtB,SAAA;CAmCxB,MAAM,IAAIsB,MAAM,eAAe;AAAE;AAnCT,SAAApB,SAAA;CAsCxB,MAAM,IAAIoB,MAAM,eAAe;AAAE;AAtCT,SAAAlB,SAAA;CAyCxB,MAAM,IAAIkB,MAAM,eAAe;AAAE;AAzCT,SAAAhB,SAAA;CA4CxB,MAAM,IAAIgB,MAAM,eAAe;AAAE;AA5CT,SAAAd,SAAA;CA+CxB,MAAM,IAAIc,MAAM,eAAe;AAAE;AA/CT,SAAAZ,SAAA;CAkDxB,MAAM,IAAIY,MAAM,eAAe;AAAE;AAlDT,SAAAV,SAAA;CAqDxB,MAAM,IAAIU,MAAM,eAAe;AAAE;AArDT,SAAAR,SAAA;CAwDxB,MAAM,IAAIQ,MAAM,eAAe;AAAE;AAxDT,SAAAN,UAAA;CA2DxB,MAAM,IAAIM,MAAM,eAAe;AAAE;AA3DT,SAAAJ,UAAA;CA8DxB,MAAM,IAAII,MAAM,eAAe;AAAE;AA9DT,SAAAF,UAAA;CAiExB,MAAM,IAAIE,MAAM,eAAe;AAAE"}
1
+ {"version":3,"file":"no-op-composer-client.js","names":["useMemo","resource","ClientOutput","ComposerState","useNoOpComposerClient","t0","$","_c","type","t1","Symbol","for","t2","t3","t4","isEditing","isEmpty","text","attachmentAccept","attachments","role","runConfig","canCancel","canSend","dictation","undefined","quote","queue","submission","inTransit","state","t5","getState","setText","_temp","setRole","_temp2","setRunConfig","_temp3","addAttachment","_temp4","clearAttachments","_temp5","attachment","_temp6","reset","_temp7","send","_temp8","cancel","_temp9","startDictation","_temp0","stopDictation","_temp1","beginEdit","_temp10","setQuote","_temp11","queueItem","_temp12","NoOpComposerClient","Error"],"sources":["../../../src/store/clients/no-op-composer-client.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { resource } from \"@assistant-ui/tap\";\nimport type { ClientOutput } from \"@assistant-ui/store\";\nimport type { ComposerState } from \"../scopes/composer\";\n\nconst useNoOpComposerClient = ({\n type,\n}: {\n type: \"edit\" | \"thread\";\n}): ClientOutput<\"composer\"> => {\n const state = useMemo<ComposerState>(() => {\n return {\n isEditing: false,\n isEmpty: true,\n text: \"\",\n attachmentAccept: \"*\",\n attachments: [],\n role: \"user\",\n runConfig: {},\n canCancel: false,\n canSend: false,\n type: type,\n dictation: undefined,\n quote: undefined,\n queue: [],\n submission: undefined,\n inTransit: undefined,\n };\n }, [type]);\n\n return {\n getState: () => state,\n setText: () => {\n throw new Error(\"Not supported\");\n },\n setRole: () => {\n throw new Error(\"Not supported\");\n },\n setRunConfig: () => {\n throw new Error(\"Not supported\");\n },\n addAttachment: () => {\n throw new Error(\"Not supported\");\n },\n clearAttachments: () => {\n throw new Error(\"Not supported\");\n },\n attachment: () => {\n throw new Error(\"Not supported\");\n },\n reset: () => {\n throw new Error(\"Not supported\");\n },\n send: () => {\n throw new Error(\"Not supported\");\n },\n cancel: () => {\n throw new Error(\"Not supported\");\n },\n startDictation: () => {\n throw new Error(\"Not supported\");\n },\n stopDictation: () => {\n throw new Error(\"Not supported\");\n },\n beginEdit: () => {\n throw new Error(\"Not supported\");\n },\n setQuote: () => {\n throw new Error(\"Not supported\");\n },\n queueItem: () => {\n throw new Error(\"Not supported\");\n },\n };\n};\n\nexport const NoOpComposerClient = resource(useNoOpComposerClient);\n"],"mappings":";;;;AAKA,MAAMI,yBAAwBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAC,MAAA,EAAAC,SAAAH;CAI9B,IAAAI;CAAA,IAAAH,EAAA,OAAAI,OAAAC,IAAA,2BAAA,GAAA;EAOkBF,KAAA,CAAA;EAAEH,EAAA,KAAAG;CAAA,OAAAA,KAAAH,EAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAI,OAAAC,IAAA,2BAAA,GAAA;EAEJC,KAAA,CAAC;EAACN,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAO;CAAA,IAAAP,EAAA,OAAAI,OAAAC,IAAA,2BAAA,GAAA;EAMNE,KAAA,CAAA;EAAEP,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CAAA,IAAAQ;CAAA,IAAAR,EAAA,OAAAE,MAAA;EAbJM,KAAA;GAAAC,WACM;GAAKC,SACP;GAAIC,MACP;GAAEC,kBACU;GAAGC,aACRV;GAAEW,MACT;GAAMC,WACDT;GAAEU,WACF;GAAKC,SACP;GAAKf;GAAAgB,WAEHC,KAAAA;GAASC,OACbD,KAAAA;GAASE,OACTd;GAAEe,YACGH,KAAAA;GAASI,WACVJ,KAAAA;EACb;EAACnB,EAAA,KAAAE;EAAAF,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAjBH,MAAAwB,QACEhB;CAiBS,IAAAiB;CAAA,IAAAzB,EAAA,OAAAwB,OAAA;EAEJC,KAAA;GAAAC,gBACWF;GAAKG,SACZC;GAERC,SACQC;GAERC,cACaC;GAEbC,eACcC;GAEdC,kBACiBC;GAEjBC,YACWC;GAEXC,OACMC;GAENC,MACKC;GAELC,QACOC;GAEPC,gBACeC;GAEfC,eACcC;GAEdC,WACUC;GAEVC,UACSC;GAETC,WACUC;EAGb;EAACtD,EAAA,KAAAwB;EAAAxB,EAAA,KAAAyB;CAAA,OAAAA,KAAAzB,EAAA;CAAA,OA5CMyB;AA4CN;AAGH,MAAa8B,qBAAqB5D,SAASG,qBAAqB;AAxElC,SAAA8B,QAAA;CA4BxB,MAAM,IAAI4B,MAAM,eAAe;AAAE;AA5BT,SAAA1B,SAAA;CA+BxB,MAAM,IAAI0B,MAAM,eAAe;AAAE;AA/BT,SAAAxB,SAAA;CAkCxB,MAAM,IAAIwB,MAAM,eAAe;AAAE;AAlCT,SAAAtB,SAAA;CAqCxB,MAAM,IAAIsB,MAAM,eAAe;AAAE;AArCT,SAAApB,SAAA;CAwCxB,MAAM,IAAIoB,MAAM,eAAe;AAAE;AAxCT,SAAAlB,SAAA;CA2CxB,MAAM,IAAIkB,MAAM,eAAe;AAAE;AA3CT,SAAAhB,SAAA;CA8CxB,MAAM,IAAIgB,MAAM,eAAe;AAAE;AA9CT,SAAAd,SAAA;CAiDxB,MAAM,IAAIc,MAAM,eAAe;AAAE;AAjDT,SAAAZ,SAAA;CAoDxB,MAAM,IAAIY,MAAM,eAAe;AAAE;AApDT,SAAAV,SAAA;CAuDxB,MAAM,IAAIU,MAAM,eAAe;AAAE;AAvDT,SAAAR,SAAA;CA0DxB,MAAM,IAAIQ,MAAM,eAAe;AAAE;AA1DT,SAAAN,UAAA;CA6DxB,MAAM,IAAIM,MAAM,eAAe;AAAE;AA7DT,SAAAJ,UAAA;CAgExB,MAAM,IAAII,MAAM,eAAe;AAAE;AAhET,SAAAF,UAAA;CAmExB,MAAM,IAAIE,MAAM,eAAe;AAAE"}