@assistant-ui/react 0.14.18 → 0.14.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/ExternalThread.d.ts +3 -2
- package/dist/client/ExternalThread.d.ts.map +1 -1
- package/dist/client/ExternalThread.js +721 -256
- package/dist/client/ExternalThread.js.map +1 -1
- package/dist/client/InMemoryThreadList.d.ts.map +1 -1
- package/dist/client/InMemoryThreadList.js +292 -108
- package/dist/client/InMemoryThreadList.js.map +1 -1
- package/dist/client/SingleThreadList.js +139 -53
- package/dist/client/SingleThreadList.js.map +1 -1
- package/dist/context/ReadonlyStore.js.map +1 -1
- package/dist/context/providers/MessageProvider.js +38 -5
- package/dist/context/providers/MessageProvider.js.map +1 -1
- package/dist/context/providers/ThreadViewportProvider.js +76 -20
- package/dist/context/providers/ThreadViewportProvider.js.map +1 -1
- package/dist/context/react/ThreadViewportContext.js.map +1 -1
- package/dist/context/react/utils/createContextHook.js.map +1 -1
- package/dist/context/react/utils/createContextStoreHook.js +17 -2
- package/dist/context/react/utils/createContextStoreHook.js.map +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
- package/dist/context/react/utils/ensureBinding.js.map +1 -1
- package/dist/context/react/utils/useRuntimeState.js +18 -2
- package/dist/context/react/utils/useRuntimeState.js.map +1 -1
- package/dist/context/stores/ThreadViewport.js.map +1 -1
- package/dist/devtools/DevToolsHooks.js.map +1 -1
- package/dist/hooks/useMessageQuote.js.map +1 -1
- package/dist/hooks/useMessageTiming.js +4 -1
- package/dist/hooks/useMessageTiming.js.map +1 -1
- package/dist/hooks/useToolCallElapsed.d.ts +23 -0
- package/dist/hooks/useToolCallElapsed.d.ts.map +1 -0
- package/dist/hooks/useToolCallElapsed.js +72 -0
- package/dist/hooks/useToolCallElapsed.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.js +3 -1
- package/dist/internal.js.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js +46 -10
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
- package/dist/legacy-runtime/cloud/auiV0.js.map +1 -1
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js +27 -6
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.js.map +1 -1
- package/dist/legacy-runtime/hooks/AssistantContext.js +13 -2
- package/dist/legacy-runtime/hooks/AssistantContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.js +9 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ComposerContext.js +9 -1
- package/dist/legacy-runtime/hooks/ComposerContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/MessageContext.js +12 -2
- package/dist/legacy-runtime/hooks/MessageContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.js +9 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadContext.js +33 -5
- package/dist/legacy-runtime/hooks/ThreadContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js +9 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js +3 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/commandQueue.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js +71 -31
- package/dist/legacy-runtime/runtime-cores/assistant-transport/replayBoundaryStream.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +24 -16
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js +17 -12
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js +17 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useLatestRef.js.map +1 -1
- package/dist/mcp-apps/McpAppRenderer.js +6 -6
- package/dist/mcp-apps/McpAppRenderer.js.map +1 -1
- package/dist/mcp-apps/McpAppsRemoteHost.js +3 -3
- package/dist/mcp-apps/McpAppsRemoteHost.js.map +1 -1
- package/dist/mcp-apps/app-frame.js +33 -14
- package/dist/mcp-apps/app-frame.js.map +1 -1
- package/dist/mcp-apps/bridge.js.map +1 -1
- package/dist/mcp-apps/types.js.map +1 -1
- package/dist/mcp-apps/utils.js.map +1 -1
- package/dist/model-context/frame/useAssistantFrameHost.js +32 -14
- package/dist/model-context/frame/useAssistantFrameHost.js.map +1 -1
- package/dist/model-context/makeAssistantVisible.js +64 -26
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js +94 -20
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js +105 -37
- package/dist/primitives/actionBar/ActionBarExportMarkdown.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +60 -11
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +60 -11
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarInteractionContext.js +3 -1
- package/dist/primitives/actionBar/ActionBarInteractionContext.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.js +84 -25
- package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js +45 -14
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
- package/dist/primitives/actionBar/useActionBarFloatStatus.js +22 -10
- package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
- package/dist/primitives/actionBar.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js +44 -7
- package/dist/primitives/actionBarMore/ActionBarMoreContent.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js +28 -6
- package/dist/primitives/actionBarMore/ActionBarMoreItem.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js +103 -36
- package/dist/primitives/actionBarMore/ActionBarMoreRoot.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js +28 -6
- package/dist/primitives/actionBarMore/ActionBarMoreSeparator.js.map +1 -1
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js +28 -6
- package/dist/primitives/actionBarMore/ActionBarMoreTrigger.js.map +1 -1
- package/dist/primitives/actionBarMore/scope.js.map +1 -1
- package/dist/primitives/actionBarMore.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.js +27 -6
- package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js +71 -10
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js +93 -26
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.js +27 -6
- package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
- package/dist/primitives/assistantModal/scope.js.map +1 -1
- package/dist/primitives/assistantModal.js.map +1 -1
- package/dist/primitives/attachment/AttachmentName.js +13 -1
- package/dist/primitives/attachment/AttachmentName.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRemove.js +11 -4
- package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.js +13 -4
- package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js +20 -9
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
- package/dist/primitives/attachment.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerCount.js +14 -2
- package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNumber.js +14 -2
- package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js +34 -6
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
- package/dist/primitives/branchPicker.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js +16 -5
- package/dist/primitives/chainOfThought/ChainOfThoughtAccordionTrigger.js.map +1 -1
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js +13 -4
- package/dist/primitives/chainOfThought/ChainOfThoughtRoot.js.map +1 -1
- package/dist/primitives/chainOfThought.js.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.js +37 -24
- package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.js +124 -49
- package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.js.map +1 -1
- package/dist/primitives/composer/ComposerDictate.js.map +1 -1
- package/dist/primitives/composer/ComposerDictationTranscript.js +32 -7
- package/dist/primitives/composer/ComposerDictationTranscript.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +26 -26
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerInputPluginContext.js +71 -25
- package/dist/primitives/composer/ComposerInputPluginContext.js.map +1 -1
- package/dist/primitives/composer/ComposerQuote.js +92 -23
- package/dist/primitives/composer/ComposerQuote.js.map +1 -1
- package/dist/primitives/composer/ComposerRoot.js +45 -11
- package/dist/primitives/composer/ComposerRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.js +9 -2
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/composer/ComposerStopDictation.js +15 -5
- package/dist/primitives/composer/ComposerStopDictation.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.d.ts.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopover.js +215 -75
- package/dist/primitives/composer/trigger/TriggerPopover.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverAction.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js +35 -7
- package/dist/primitives/composer/trigger/TriggerPopoverBack.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js +134 -28
- package/dist/primitives/composer/trigger/TriggerPopoverCategories.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverDirective.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js +132 -28
- package/dist/primitives/composer/trigger/TriggerPopoverItems.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js +124 -52
- package/dist/primitives/composer/trigger/TriggerPopoverResource.js.map +1 -1
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js +181 -78
- package/dist/primitives/composer/trigger/TriggerPopoverRootContext.js.map +1 -1
- package/dist/primitives/composer/trigger/detectTrigger.js.map +1 -1
- package/dist/primitives/composer/trigger/index.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerDetectionResource.js +28 -14
- package/dist/primitives/composer/trigger/triggerDetectionResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js +115 -58
- package/dist/primitives/composer/trigger/triggerKeyboardResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerNavigationResource.js +202 -70
- package/dist/primitives/composer/trigger/triggerNavigationResource.js.map +1 -1
- package/dist/primitives/composer/trigger/triggerSelectionResource.js +49 -13
- package/dist/primitives/composer/trigger/triggerSelectionResource.js.map +1 -1
- package/dist/primitives/composer.js.map +1 -1
- package/dist/primitives/dropdownMenuRenderPrimitives.js.map +1 -1
- package/dist/primitives/error/ErrorMessage.js +28 -6
- package/dist/primitives/error/ErrorMessage.js.map +1 -1
- package/dist/primitives/error/ErrorRoot.js +14 -5
- package/dist/primitives/error/ErrorRoot.js.map +1 -1
- package/dist/primitives/error.js.map +1 -1
- package/dist/primitives/message/MessageError.js +2 -1
- package/dist/primitives/message/MessageError.js.map +1 -1
- package/dist/primitives/message/MessageIf.js +50 -20
- package/dist/primitives/message/MessageIf.js.map +1 -1
- package/dist/primitives/message/MessageParts.js +41 -7
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +399 -94
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/message/MessageRoot.js +197 -65
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/message.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartImage.js +15 -5
- package/dist/primitives/messagePart/MessagePartImage.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartText.js +35 -7
- package/dist/primitives/messagePart/MessagePartText.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartData.js +5 -4
- package/dist/primitives/messagePart/useMessagePartData.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartFile.js +5 -4
- package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartImage.js +5 -4
- package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartReasoning.js +5 -4
- package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartSource.js +5 -4
- package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartText.js +5 -4
- package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
- package/dist/primitives/messagePart.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemRemove.js +11 -4
- package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemSteer.js +11 -4
- package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -1
- package/dist/primitives/queueItem/QueueItemText.js +20 -6
- package/dist/primitives/queueItem/QueueItemText.js.map +1 -1
- package/dist/primitives/queueItem.js.map +1 -1
- package/dist/primitives/reasoning/useScrollLock.js +61 -43
- package/dist/primitives/reasoning/useScrollLock.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js +56 -16
- package/dist/primitives/selectionToolbar/SelectionToolbarQuote.js.map +1 -1
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js +120 -59
- package/dist/primitives/selectionToolbar/SelectionToolbarRoot.js.map +1 -1
- package/dist/primitives/selectionToolbar.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionDescription.js +20 -6
- package/dist/primitives/suggestion/SuggestionDescription.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTitle.js +20 -6
- package/dist/primitives/suggestion/SuggestionTitle.js.map +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.js +39 -26
- package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
- package/dist/primitives/suggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadEmpty.js +6 -2
- package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
- package/dist/primitives/thread/ThreadIf.js +32 -10
- package/dist/primitives/thread/ThreadIf.js.map +1 -1
- package/dist/primitives/thread/ThreadRoot.js +13 -4
- package/dist/primitives/thread/ThreadRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.js +24 -6
- package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.js +18 -6
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +185 -47
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.js +22 -9
- package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
- package/dist/primitives/thread/topAnchor/computeTopAnchorSlack.js.map +1 -1
- package/dist/primitives/thread/topAnchor/createReserveObservers.js.map +1 -1
- package/dist/primitives/thread/topAnchor/mountTopAnchorReserve.js.map +1 -1
- package/dist/primitives/thread/topAnchor/topAnchorTurn.js.map +1 -1
- package/dist/primitives/thread/topAnchor/topAnchorUtils.js.map +1 -1
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js +19 -4
- package/dist/primitives/thread/topAnchor/useTopAnchorReserve.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +16 -16
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/primitives/thread.js.map +1 -1
- package/dist/primitives/threadList/ThreadListLoadMore.js.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.js +53 -11
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
- package/dist/primitives/threadList/ThreadListRoot.js +13 -4
- package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
- package/dist/primitives/threadList.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.js +26 -7
- package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
- package/dist/primitives/threadListItem.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js +44 -7
- package/dist/primitives/threadListItemMore/ThreadListItemMoreContent.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js +28 -6
- package/dist/primitives/threadListItemMore/ThreadListItemMoreItem.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js +25 -5
- package/dist/primitives/threadListItemMore/ThreadListItemMoreRoot.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js +28 -6
- package/dist/primitives/threadListItemMore/ThreadListItemMoreSeparator.js.map +1 -1
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js +28 -6
- package/dist/primitives/threadListItemMore/ThreadListItemMoreTrigger.js.map +1 -1
- package/dist/primitives/threadListItemMore/scope.js.map +1 -1
- package/dist/primitives/threadListItemMore.js.map +1 -1
- package/dist/sandbox-host/SandboxHost.js.map +1 -1
- package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
- package/dist/tests/setup.js.map +1 -1
- package/dist/unstable/useComposerInputHistory.js.map +1 -1
- package/dist/unstable/useMentionAdapter.js.map +1 -1
- package/dist/unstable/useMessageStallDetection.d.ts +29 -0
- package/dist/unstable/useMessageStallDetection.d.ts.map +1 -0
- package/dist/unstable/useMessageStallDetection.js +69 -0
- package/dist/unstable/useMessageStallDetection.js.map +1 -0
- package/dist/unstable/useSlashCommandAdapter.js.map +1 -1
- package/dist/utils/Primitive.js +57 -12
- package/dist/utils/Primitive.js.map +1 -1
- package/dist/utils/createActionButton.js +23 -7
- package/dist/utils/createActionButton.js.map +1 -1
- package/dist/utils/getSelectionMessageId.js.map +1 -1
- package/dist/utils/hooks/useManagedRef.js +16 -8
- package/dist/utils/hooks/useManagedRef.js.map +1 -1
- package/dist/utils/hooks/useMediaQuery.js +25 -10
- package/dist/utils/hooks/useMediaQuery.js.map +1 -1
- package/dist/utils/hooks/useOnResizeContent.js +29 -19
- package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.js +20 -4
- package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
- package/dist/utils/hooks/useSizeHandle.js +23 -15
- package/dist/utils/hooks/useSizeHandle.js.map +1 -1
- package/dist/utils/json/is-json-equal.js.map +1 -1
- package/dist/utils/json/is-json.js.map +1 -1
- package/dist/utils/smooth/SmoothContext.js +41 -11
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/dist/utils/smooth/useSmooth.js +5 -5
- package/dist/utils/smooth/useSmooth.js.map +1 -1
- package/dist/utils/useToolArgsFieldStatus.d.ts +2 -2
- package/dist/utils/useToolArgsFieldStatus.d.ts.map +1 -1
- package/dist/utils/useToolArgsFieldStatus.js +13 -5
- package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
- package/package.json +6 -6
- package/src/client/ExternalThread.ts +81 -52
- package/src/client/InMemoryThreadList.ts +12 -14
- package/src/hooks/useToolCallElapsed.ts +52 -0
- package/src/index.ts +11 -0
- package/src/primitives/composer/trigger/TriggerPopover.tsx +4 -5
- package/src/tests/toolCallTiming.test.tsx +221 -0
- package/src/unstable/useMessageStallDetection.ts +91 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalThread.js","names":[],"sources":["../../src/client/ExternalThread.ts"],"sourcesContent":["import { useState, useMemo, useEffect, useEffectEvent } from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store\";\n\nimport type {\n AppendMessage,\n Attachment,\n CreateAttachment,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ExternalThreadQueueAdapter,\n ExternalThreadBranchAdapter,\n} from \"@assistant-ui/core\";\nimport type { QueueItemState } from \"@assistant-ui/core/store\";\nimport type { ComposerSendOptions } from \"@assistant-ui/core/store\";\nimport { getThreadMessageText } from \"@assistant-ui/core/internal\";\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\nimport { SingleThreadList } from \"./SingleThreadList\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n onEdit?: (message: AppendMessage) => void;\n onReload?: () => void;\n queue?: ExternalThreadQueueAdapter | undefined;\n branches?: ExternalThreadBranchAdapter | undefined;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n onEdit,\n onReload,\n queue,\n branches,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const partClients = useClientLookup(\n () =>\n message.content.map((part, idx) => withKey(idx, PartResource({ part }))),\n [message.content],\n );\n\n const attachmentClients = useClientLookup(\n () =>\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n [message.attachments],\n );\n\n const handleBeginEdit = () => {\n setIsEditing(true);\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n queue?.clear(\"edit\");\n onEdit?.({\n ...msg,\n parentId: message.id,\n sourceId: message.id,\n });\n setIsEditing(false);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n isEditing,\n canCancel: true,\n onCancel: handleCancelEdit,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n return {\n ...message,\n attachments: message.attachments ?? [],\n parentId: null,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech: undefined,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: () => {},\n stopSpeaking: () => {},\n submitFeedback: () => {},\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({ part }: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({\n ...part,\n status: { type: \"complete\" as const },\n }),\n [part],\n );\n\n return {\n getState: () => state,\n addToolResult: () => {},\n resumeToolCall: () => {},\n respondToToolApproval: () => {},\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n isEditing: boolean;\n canCancel: boolean;\n isSendDisabled?: boolean;\n onCancel: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onSteer,\n onRemove,\n}: {\n item: QueueItemState;\n onSteer: () => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: onSteer,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n isEditing,\n canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [text, setText] = useState(\"\");\n const [role, setRole] = useState<\"user\" | \"assistant\" | \"system\">(\"user\");\n const [runConfig, setRunConfig] = useState<Record<string, unknown>>({});\n const [attachments, setAttachments] = useState<readonly Attachment[]>([]);\n const [quote, setQuote] = useState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n\n // Update composer values when editing begins\n const updateFromMessage = useEffectEvent(() => {\n if (message) {\n // Extract text from message content (text parts only)\n const textParts = message.content.filter((part) => part.type === \"text\");\n const messageText = textParts\n .map((part) => (\"text\" in part ? part.text : \"\"))\n .join(\"\\n\\n\");\n\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n }\n });\n\n useEffect(() => {\n if (isEditing) {\n updateFromMessage();\n }\n }, [isEditing]);\n\n const attachmentClients = useClientLookup(\n () =>\n attachments.map((attachment, idx) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {\n setAttachments(attachments.filter((_, i) => i !== idx));\n },\n }),\n ),\n ),\n [attachments],\n );\n\n const queueItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItemClients = useClientLookup(\n () =>\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onSteer: () => queue?.steer(item.id),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n [queueItems],\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (fileOrAttachment instanceof File) {\n const newAttachment: Attachment = {\n id: Math.random().toString(36).substring(7),\n type: \"file\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.type,\n file: fileOrAttachment,\n status: { type: \"complete\" },\n content: [],\n };\n setAttachments([...attachments, newAttachment]);\n } else {\n const newAttachment: Attachment = {\n id: fileOrAttachment.id ?? Math.random().toString(36).substring(7),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n setAttachments([...attachments, newAttachment]);\n }\n },\n clearAttachments: async () => {\n setAttachments([]);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n },\n send: (opts?: ComposerSendOptions) => {\n if (!state.canSend) return;\n\n const currentQuote = quote;\n const composedMessage: AppendMessage = {\n role,\n content: text ? [{ type: \"text\" as const, text }] : [],\n attachments: attachments as any,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n if (queue) {\n queue.enqueue(composedMessage, { steer: opts?.steer ?? false });\n } else {\n onSend?.(composedMessage);\n }\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n },\n cancel: onCancel,\n beginEdit: () => {\n onBeginEdit?.();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number }) => {\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\n// External Thread Client\nconst useExternalThread = ({\n messages,\n isRunning = false,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n queue,\n branches,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n queue?.clear(\"reload\");\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n () =>\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n [messages, onEdit, queue, branches],\n );\n\n const handleCancelRun = () => {\n queue?.clear(\"cancel-run\");\n onCancel?.();\n };\n\n const handleSendNew = (message: AppendMessage) => {\n onNew?.(message);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n isEditing: true,\n canCancel: isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue,\n }),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0,\n isDisabled: false,\n isLoading: false,\n isRunning,\n capabilities: {\n edit: false,\n delete: false,\n reload: false,\n cancel: isRunning,\n speech: false,\n attachments: false,\n feedback: false,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: {},\n suggestions: [],\n extras: undefined,\n speech: undefined,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n hasQueue,\n hasBranches,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n append: (message) => {\n const appendMessage: AppendMessage =\n typeof message === \"string\"\n ? {\n createdAt: new Date(),\n parentId: messages.at(-1)?.id ?? null,\n sourceId: null,\n runConfig: {},\n role: \"user\",\n content: [{ type: \"text\", text: message }],\n attachments: [],\n metadata: { custom: {} },\n }\n : {\n createdAt: message.createdAt ?? new Date(),\n parentId: message.parentId ?? messages.at(-1)?.id ?? null,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage, { steer: false });\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {},\n cancelRun: handleCancelRun,\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: () => {},\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread().composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ExternalThread.js","names":["useState","useMemo","useEffect","useEffectEvent","resource","withKey","ClientElement","ClientOutput","useClientLookup","attachTransformScopes","useClientResource","Derived","AppendMessage","Attachment","CreateAttachment","RespondToToolApprovalOptions","ThreadAssistantMessagePart","ThreadUserMessagePart","ThreadMessage","ExternalThreadQueueAdapter","ExternalThreadBranchAdapter","QueueItemState","ComposerSendOptions","getThreadMessageText","resolveToolApprovalResponse","ModelContext","Suggestions","Tools","DataRenderers","SingleThreadList","EMPTY_QUEUE_ITEMS","EMPTY_BRANCH_IDS","ExternalThreadMessage","id","ExternalThreadProps","messages","isRunning","isSendDisabled","onNew","message","onEdit","onReload","parentId","onStartRun","onCancel","queue","branches","onRespondToToolApproval","options","MessageClientProps","index","useMessageClient","t0","$","_c","isCopied","setIsCopied","isHovering","setIsHovering","isEditing","setIsEditing","t1","content","t2","part","idx","PartResource","map","partClients","attachments","t3","_temp2","attachmentClients","t4","Symbol","for","handleBeginEdit","t5","handleCancelEdit","t6","msg","clear","sourceId","handleSendEdit","t7","ComposerClientResource","type","canCancel","onBeginEdit","onSend","composerClient","branchIds","t8","getBranches","indexOf","branchIndex","branchNumber","branchCount","length","t9","t10","state","isLast","speech","undefined","parts","composer","t11","t12","methods","t13","t14","t15","position","branchId","target","switchToBranch","t16","selector","get","partIndex","findIndex","p","toolCallId","t17","selector_0","key","t18","getState","delete","_temp3","reload","speak","_temp4","stopSpeaking","_temp5","submitFeedback","_temp6","getCopyText","attachment","MessageClient","PartResourceProps","usePartResource","const","status","response","Error","approval","approved","resolution","addToolResult","_temp7","resumeToolCall","_temp8","respondToToolApproval","AttachmentResourceProps","onRemove","useAttachmentResource","remove","AttachmentResource","ComposerClientResourceProps","useQueueItemClient","item","onSteer","steer","QueueItemClient","useComposerClientResource","text","setText","role","setRole","runConfig","setRunConfig","setAttachments","quote","setQuote","textParts","filter","_temp9","messageText","_temp0","join","updateFromMessage","_","i","queueItems","items","queueItemClients","trim","isEmpty","canSend","attachmentAccept","dictation","fileOrAttachment","File","newAttachment","Math","random","toString","substring","name","contentType","file","newAttachment_0","opts","currentQuote","composedMessage","createdAt","Date","startRun","metadata","custom","enqueue","t19","t20","addAttachment","clearAttachments","reset","send","cancel","beginEdit","startDictation","_temp1","stopDictation","_temp10","queueItem","useExternalThread","messageId","messageIndex","m","handleReload","props","messageClients","handleCancelRun","handleSendNew","hasQueue","hasBranches","_temp11","messageStates","edit","feedback","voice","switchBranchDuringRun","unstable_copy","isDisabled","isLoading","capabilities","suggestions","extras","message_0","appendMessage","at","append","deleteMessage","_temp12","resumeRun","_temp13","cancelRun","getModelContext","_temp14","export","_temp15","import","_temp16","_temp17","_temp18","connectVoice","_temp19","disconnectVoice","_temp20","getVoiceVolume","_temp21","subscribeVoiceVolume","_temp23","muteVoice","_temp24","unmuteVoice","_temp25","ExternalThread","scopes","parent","threads","source","threadElement","thread","query","aui","threadListItem","modelContext","tools","dataRenderers","_temp","part_0","s","arr","config","_temp22"],"sources":["../../src/client/ExternalThread.ts"],"sourcesContent":["import { useState, useMemo, useEffect, useEffectEvent } from \"react\";\nimport { resource, withKey } from \"@assistant-ui/tap\";\nimport {\n type ClientElement,\n type ClientOutput,\n useClientLookup,\n attachTransformScopes,\n useClientResource,\n Derived,\n} from \"@assistant-ui/store\";\n\nimport type {\n AppendMessage,\n Attachment,\n CreateAttachment,\n RespondToToolApprovalOptions,\n ThreadAssistantMessagePart,\n ThreadUserMessagePart,\n ThreadMessage,\n ExternalThreadQueueAdapter,\n ExternalThreadBranchAdapter,\n} from \"@assistant-ui/core\";\nimport type { QueueItemState } from \"@assistant-ui/core/store\";\nimport type { ComposerSendOptions } from \"@assistant-ui/core/store\";\nimport {\n getThreadMessageText,\n resolveToolApprovalResponse,\n} from \"@assistant-ui/core/internal\";\nimport { ModelContext, Suggestions } from \"@assistant-ui/core/store\";\nimport { Tools, DataRenderers } from \"@assistant-ui/core/react\";\nimport { SingleThreadList } from \"./SingleThreadList\";\n\nconst EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];\nconst EMPTY_BRANCH_IDS: readonly string[] = [];\n\nexport type ExternalThreadMessage = ThreadMessage & {\n id: string;\n};\n\nexport type ExternalThreadProps = {\n messages: readonly ExternalThreadMessage[];\n isRunning?: boolean;\n /**\n * Whether sending new messages is currently disabled. When `true`, the\n * thread composer's input remains usable but `send()` is a no-op and\n * `composer.canSend` is `false`. Edit composers (saving message edits)\n * intentionally ignore this flag.\n */\n isSendDisabled?: boolean;\n /**\n * Callback for new messages (non-queue runtimes).\n * @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.\n */\n onNew?: (message: AppendMessage) => void;\n onEdit?: (message: AppendMessage) => void;\n onReload?: (parentId: string | null) => void;\n onStartRun?: () => void;\n onCancel?: () => void;\n /** Queue adapter for runtimes that support message queuing and steering. */\n queue?: ExternalThreadQueueAdapter;\n /** Branch adapter for runtimes that track sibling variants of messages. */\n branches?: ExternalThreadBranchAdapter;\n /** Callback for tool approval decisions. Absent: responding to an approval throws a capability error. */\n onRespondToToolApproval?: (options: RespondToToolApprovalOptions) => void;\n};\n\ntype MessageClientProps = {\n message: ExternalThreadMessage;\n index: number;\n onEdit?: (message: AppendMessage) => void;\n onReload?: () => void;\n queue?: ExternalThreadQueueAdapter | undefined;\n branches?: ExternalThreadBranchAdapter | undefined;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n};\n\n// Message Client - minimal implementation\nconst useMessageClient = ({\n message,\n index,\n onEdit,\n onReload,\n queue,\n branches,\n onRespondToToolApproval,\n}: MessageClientProps): ClientOutput<\"message\"> => {\n const [isCopied, setIsCopied] = useState(false);\n const [isHovering, setIsHovering] = useState(false);\n const [isEditing, setIsEditing] = useState(false);\n\n const partClients = useClientLookup(\n message.content.map((part, idx) =>\n withKey(idx, PartResource({ part, onRespondToToolApproval })),\n ),\n );\n\n const attachmentClients = useClientLookup(\n (message.attachments ?? []).map((attachment) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {},\n }),\n ),\n ),\n );\n\n const handleBeginEdit = () => {\n setIsEditing(true);\n };\n\n const handleCancelEdit = () => {\n setIsEditing(false);\n };\n\n const handleSendEdit = (msg: AppendMessage) => {\n queue?.clear(\"edit\");\n onEdit?.({\n ...msg,\n parentId: message.id,\n sourceId: message.id,\n });\n setIsEditing(false);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"edit\",\n isEditing,\n canCancel: true,\n onCancel: handleCancelEdit,\n onBeginEdit: handleBeginEdit,\n onSend: handleSendEdit,\n message,\n queue,\n }),\n );\n\n const branchIds = branches?.getBranches(message.id) ?? EMPTY_BRANCH_IDS;\n const branchIndex = branchIds.indexOf(message.id);\n const branchNumber = branchIndex === -1 ? 1 : branchIndex + 1;\n const branchCount = branchIndex === -1 ? 1 : branchIds.length;\n\n const state = useMemo(() => {\n return {\n ...message,\n attachments: message.attachments ?? [],\n parentId: null,\n isLast: false, // Will be set by thread\n branchNumber,\n branchCount,\n speech: undefined,\n parts: partClients.state,\n isCopied,\n isHovering,\n index,\n composer: composerClient.state,\n };\n }, [\n message,\n isCopied,\n isHovering,\n index,\n composerClient.state,\n partClients.state,\n branchNumber,\n branchCount,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n delete: () => {},\n reload: () => {\n onReload?.();\n },\n speak: () => {},\n stopSpeaking: () => {},\n submitFeedback: () => {},\n switchToBranch: ({ position, branchId }) => {\n if (!branches) return;\n const target =\n branchId ??\n (branchIndex === -1\n ? undefined\n : position === \"previous\"\n ? branchIds[branchIndex - 1]\n : position === \"next\"\n ? branchIds[branchIndex + 1]\n : undefined);\n if (target !== undefined && target !== message.id)\n branches.switchToBranch(target);\n },\n getCopyText: () => getThreadMessageText(message),\n part: (selector) => {\n if (\"index\" in selector) {\n return partClients.get(selector);\n }\n const partIndex = state.parts.findIndex(\n (p) => p.type === \"tool-call\" && p.toolCallId === selector.toolCallId,\n );\n return partClients.get({ index: partIndex });\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n setIsCopied,\n setIsHovering,\n };\n};\n\nconst MessageClient = resource(useMessageClient);\n\ntype PartResourceProps = {\n part: ThreadAssistantMessagePart | ThreadUserMessagePart;\n onRespondToToolApproval?:\n | ((options: RespondToToolApprovalOptions) => void)\n | undefined;\n};\n\n// Part Client - minimal implementation\nconst usePartResource = ({\n part,\n onRespondToToolApproval,\n}: PartResourceProps): ClientOutput<\"part\"> => {\n const state = useMemo(\n () => ({\n ...part,\n status: { type: \"complete\" as const },\n }),\n [part],\n );\n\n return {\n getState: () => state,\n addToolResult: () => {},\n resumeToolCall: () => {},\n respondToToolApproval: (response) => {\n if (!onRespondToToolApproval)\n throw new Error(\"Runtime does not support tool approvals.\");\n\n if (part.type !== \"tool-call\")\n throw new Error(\n \"Tried to respond to tool approval on non-tool message part\",\n );\n\n if (\n !part.approval ||\n part.approval.approved !== undefined ||\n part.approval.resolution !== undefined\n )\n throw new Error(\"Tool call has no pending approval\");\n\n onRespondToToolApproval(\n resolveToolApprovalResponse(part.approval, response),\n );\n },\n };\n};\n\nconst PartResource = resource(usePartResource);\n\ntype AttachmentResourceProps = {\n attachment: Attachment;\n onRemove?: () => void;\n};\n\n// Attachment Client - minimal implementation\nconst useAttachmentResource = ({\n attachment,\n onRemove,\n}: AttachmentResourceProps): ClientOutput<\"attachment\"> => {\n return {\n getState: () => attachment,\n remove: async () => {\n onRemove?.();\n },\n };\n};\n\nconst AttachmentResource = resource(useAttachmentResource);\n\ntype ComposerClientResourceProps = {\n type: \"thread\" | \"edit\";\n isEditing: boolean;\n canCancel: boolean;\n isSendDisabled?: boolean;\n onCancel: () => void;\n onBeginEdit?: () => void;\n onSend?: (message: AppendMessage) => void;\n message?: ExternalThreadMessage;\n queue?: ExternalThreadQueueAdapter | undefined;\n};\n\nconst useQueueItemClient = ({\n item,\n onSteer,\n onRemove,\n}: {\n item: QueueItemState;\n onSteer: () => void;\n onRemove: () => void;\n}): ClientOutput<\"queueItem\"> => {\n return {\n getState: () => item,\n steer: onSteer,\n remove: onRemove,\n };\n};\n\nconst QueueItemClient = resource(useQueueItemClient);\n\n// Composer Client - minimal implementation\nconst useComposerClientResource = ({\n type,\n isEditing,\n canCancel,\n isSendDisabled = false,\n onCancel,\n onBeginEdit,\n onSend,\n message,\n queue,\n}: ComposerClientResourceProps): ClientOutput<\"composer\"> => {\n const [text, setText] = useState(\"\");\n const [role, setRole] = useState<\"user\" | \"assistant\" | \"system\">(\"user\");\n const [runConfig, setRunConfig] = useState<Record<string, unknown>>({});\n const [attachments, setAttachments] = useState<readonly Attachment[]>([]);\n const [quote, setQuote] = useState<\n { readonly text: string; readonly messageId: string } | undefined\n >(undefined);\n\n // Update composer values when editing begins\n const updateFromMessage = useEffectEvent(() => {\n if (message) {\n // Extract text from message content (text parts only)\n const textParts = message.content.filter((part) => part.type === \"text\");\n const messageText = textParts\n .map((part) => (\"text\" in part ? part.text : \"\"))\n .join(\"\\n\\n\");\n\n setText(messageText);\n setRole(message.role);\n setAttachments(message.attachments ?? []);\n }\n });\n\n useEffect(() => {\n if (isEditing) {\n updateFromMessage();\n }\n }, [isEditing]);\n\n const attachmentClients = useClientLookup(\n attachments.map((attachment, idx) =>\n withKey(\n attachment.id,\n AttachmentResource({\n attachment,\n onRemove: () => {\n setAttachments(attachments.filter((_, i) => i !== idx));\n },\n }),\n ),\n ),\n );\n\n const queueItems = queue?.items ?? EMPTY_QUEUE_ITEMS;\n const queueItemClients = useClientLookup(\n queueItems.map((item) =>\n withKey(\n item.id,\n QueueItemClient({\n item,\n onSteer: () => queue?.steer(item.id),\n onRemove: () => queue?.remove(item.id),\n }),\n ),\n ),\n );\n\n const state = useMemo(() => {\n const isEmpty = !text.trim() && !attachments.length;\n return {\n text,\n role,\n attachments: attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n canSend: isEditing && !isEmpty && !isSendDisabled,\n attachmentAccept: \"*\",\n isEmpty,\n type,\n dictation: undefined,\n quote,\n queue: queueItems,\n };\n }, [\n text,\n role,\n attachmentClients.state,\n runConfig,\n isEditing,\n canCancel,\n isSendDisabled,\n type,\n attachments.length,\n quote,\n queueItems,\n ]);\n\n return {\n getState: () => state,\n setText,\n setRole,\n setRunConfig,\n addAttachment: async (fileOrAttachment: File | CreateAttachment) => {\n if (fileOrAttachment instanceof File) {\n const newAttachment: Attachment = {\n id: Math.random().toString(36).substring(7),\n type: \"file\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.type,\n file: fileOrAttachment,\n status: { type: \"complete\" },\n content: [],\n };\n setAttachments([...attachments, newAttachment]);\n } else {\n const newAttachment: Attachment = {\n id: fileOrAttachment.id ?? Math.random().toString(36).substring(7),\n type: fileOrAttachment.type ?? \"document\",\n name: fileOrAttachment.name,\n contentType: fileOrAttachment.contentType,\n content: fileOrAttachment.content,\n status: { type: \"complete\" },\n };\n setAttachments([...attachments, newAttachment]);\n }\n },\n clearAttachments: async () => {\n setAttachments([]);\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachmentClients.get({ key: selector.id });\n }\n return attachmentClients.get(selector);\n },\n reset: async () => {\n setText(\"\");\n setRole(\"user\");\n setRunConfig({});\n setAttachments([]);\n setQuote(undefined);\n },\n send: (opts?: ComposerSendOptions) => {\n if (!state.canSend) return;\n\n const currentQuote = quote;\n const composedMessage: AppendMessage = {\n role,\n content: text ? [{ type: \"text\" as const, text }] : [],\n attachments: attachments as any,\n createdAt: new Date(),\n parentId: null,\n sourceId: null,\n runConfig,\n startRun: opts?.startRun,\n metadata: {\n custom: { ...(currentQuote ? { quote: currentQuote } : {}) },\n },\n };\n if (queue) {\n queue.enqueue(composedMessage, { steer: opts?.steer ?? false });\n } else {\n onSend?.(composedMessage);\n }\n setText(\"\");\n setAttachments([]);\n setQuote(undefined);\n },\n cancel: onCancel,\n beginEdit: () => {\n onBeginEdit?.();\n },\n startDictation: () => {},\n stopDictation: () => {},\n setQuote,\n queueItem: (selector: { index: number }) => {\n return queueItemClients.get(selector);\n },\n };\n};\n\nconst ComposerClientResource = resource(useComposerClientResource);\n\n// External Thread Client\nconst useExternalThread = ({\n messages,\n isRunning = false,\n isSendDisabled = false,\n onNew,\n onEdit,\n onReload,\n onStartRun,\n onCancel,\n queue,\n branches,\n onRespondToToolApproval,\n}: ExternalThreadProps): ClientOutput<\"thread\"> => {\n const handleReload = (messageId: string) => {\n const messageIndex = messages.findIndex((m) => m.id === messageId);\n if (messageIndex === -1) return;\n\n const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;\n queue?.clear(\"reload\");\n onReload?.(parentId);\n };\n\n const messageClients = useClientLookup(\n messages.map((msg, index) => {\n const props: MessageClientProps = {\n message: msg,\n index,\n onReload: () => handleReload(msg.id),\n queue,\n branches,\n onRespondToToolApproval,\n };\n if (onEdit) props.onEdit = onEdit;\n return withKey(msg.id, MessageClient(props));\n }),\n );\n\n const handleCancelRun = () => {\n queue?.clear(\"cancel-run\");\n onCancel?.();\n };\n\n const handleSendNew = (message: AppendMessage) => {\n onNew?.(message);\n };\n\n const composerClient = useClientResource(\n ComposerClientResource({\n type: \"thread\",\n isEditing: true,\n canCancel: isRunning,\n isSendDisabled,\n onCancel: handleCancelRun,\n onSend: handleSendNew,\n queue,\n }),\n );\n\n const hasQueue = !!queue;\n const hasBranches = !!branches;\n const state = useMemo(() => {\n const messageStates = messageClients.state.map((s, idx, arr) => ({\n ...s,\n isLast: idx === arr.length - 1,\n }));\n\n return {\n isEmpty: messages.length === 0,\n isDisabled: false,\n isLoading: false,\n isRunning,\n capabilities: {\n edit: false,\n delete: false,\n reload: false,\n cancel: isRunning,\n speech: false,\n attachments: false,\n feedback: false,\n voice: false,\n switchToBranch: hasBranches,\n switchBranchDuringRun: false,\n unstable_copy: false,\n dictation: false,\n queue: hasQueue,\n },\n messages: messageStates,\n state: {},\n suggestions: [],\n extras: undefined,\n speech: undefined,\n voice: undefined,\n composer: composerClient.state,\n };\n }, [\n messages,\n isRunning,\n hasQueue,\n hasBranches,\n messageClients.state,\n composerClient.state,\n ]);\n\n return {\n getState: () => state,\n composer: () => composerClient.methods,\n append: (message) => {\n const appendMessage: AppendMessage =\n typeof message === \"string\"\n ? {\n createdAt: new Date(),\n parentId: messages.at(-1)?.id ?? null,\n sourceId: null,\n runConfig: {},\n role: \"user\",\n content: [{ type: \"text\", text: message }],\n attachments: [],\n metadata: { custom: {} },\n }\n : {\n createdAt: message.createdAt ?? new Date(),\n parentId: message.parentId ?? messages.at(-1)?.id ?? null,\n sourceId: message.sourceId ?? null,\n role: message.role ?? \"user\",\n content: message.content,\n attachments: message.attachments ?? [],\n metadata: message.metadata ?? { custom: {} },\n runConfig: message.runConfig ?? {},\n startRun: message.startRun,\n };\n if (queue) {\n queue.enqueue(appendMessage, { steer: false });\n } else {\n onNew?.(appendMessage);\n }\n },\n deleteMessage: () => {},\n startRun: () => {\n onStartRun?.();\n },\n resumeRun: () => {},\n cancelRun: handleCancelRun,\n getModelContext: () => ({ tools: {}, config: {} }),\n export: () => ({ messages: [] }),\n import: () => {},\n reset: () => {},\n message: (selector) => {\n if (\"id\" in selector) {\n return messageClients.get({ key: selector.id });\n }\n return messageClients.get(selector);\n },\n stopSpeaking: () => {},\n connectVoice: () => {},\n disconnectVoice: () => {},\n getVoiceVolume: () => 0,\n subscribeVoiceVolume: () => () => {},\n muteVoice: () => {},\n unmuteVoice: () => {},\n };\n};\n\nexport const ExternalThread = resource(useExternalThread);\n\nattachTransformScopes(useExternalThread, (scopes, parent) => {\n if (!scopes.threads && parent.threads.source === null) {\n const threadElement = scopes.thread as ClientElement<\"thread\">;\n scopes.threads = SingleThreadList({ thread: threadElement });\n scopes.thread = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().thread(\"main\"),\n });\n }\n\n if (!scopes.threadListItem && parent.threadListItem.source === null) {\n scopes.threadListItem = Derived({\n source: \"threads\",\n query: { type: \"main\" },\n get: (aui) => aui.threads().item(\"main\"),\n });\n }\n\n scopes.composer ??= Derived({\n source: \"thread\",\n query: {},\n get: (aui) => aui.thread().composer(),\n });\n\n if (!scopes.modelContext && parent.modelContext.source === null) {\n scopes.modelContext = ModelContext();\n }\n if (!scopes.tools && parent.tools.source === null) {\n scopes.tools = Tools({});\n }\n if (!scopes.dataRenderers && parent.dataRenderers.source === null) {\n scopes.dataRenderers = DataRenderers();\n }\n if (!scopes.suggestions && parent.suggestions.source === null) {\n scopes.suggestions = Suggestions();\n }\n});\n"],"mappings":";;;;;;;;;AAgCA,MAAM8B,oBAA+C,CAAA;AACrD,MAAMC,mBAAsC,CAAA;AA8C5C,MAAMoB,oBAAmBC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAf,SAAAW,OAAAV,QAAAC,UAAAI,OAAAC,UAAAC,4BAAAK;CASxB,MAAA,CAAAG,UAAAC,eAAgCxD,SAAS,KAAK;CAC9C,MAAA,CAAAyD,YAAAC,iBAAoC1D,SAAS,KAAK;CAClD,MAAA,CAAA2D,WAAAC,gBAAkC5D,SAAS,KAAK;CAAE,IAAA6D;CAAA,IAAAR,EAAA,OAAAd,QAAAuB,WAAAT,EAAA,OAAAN,yBAAA;EAAA,IAAAgB;EAAA,IAAAV,EAAA,OAAAN,yBAAA;GAG5BgB,MAAAC,MAAAC,QAClB5D,QAAQ4D,KAAKC,aAAa;IAAAF;IAAAjB;GAAgC,CAAC,CAAC;GAACM,EAAA,KAAAN;GAAAM,EAAA,KAAAU;EAAA,OAAAA,KAAAV,EAAA;EAD/DQ,KAAAtB,QAAOuB,QAAQK,IAAKJ,EAEpB;EAACV,EAAA,KAAAd,QAAAuB;EAAAT,EAAA,KAAAN;EAAAM,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAHH,MAAAe,cAAoB5D,gBAClBqD,EAGF;CAAE,IAAAE;CAAA,IAAAV,EAAA,OAAAd,QAAA8B,aAAA;EAGCN,KAAAxB,QAAO8B,eAAP,CAAA;EAAyBhB,EAAA,KAAAd,QAAA8B;EAAAhB,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAA,IAAAiB;CAAA,IAAAjB,EAAA,OAAAU,IAAA;EAA1BO,KAACP,GAAyBI,IAAMI,MAQhC;EAAClB,EAAA,KAAAU;EAAAV,EAAA,KAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CATH,MAAAmB,oBAA0BhE,gBACxB8D,EASF;CAAE,IAAAG;CAAA,IAAApB,EAAA,OAAAqB,OAAAC,IAAA,2BAAA,GAAA;EAEsBF,WAAA;GACtBb,aAAa,IAAI;EAAC;EACnBP,EAAA,KAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAFD,MAAAuB,kBAAwBH;CAEtB,IAAAI;CAAA,IAAAxB,EAAA,QAAAqB,OAAAC,IAAA,2BAAA,GAAA;EAEuBE,WAAA;GACvBjB,aAAa,KAAK;EAAC;EACpBP,EAAA,MAAAwB;CAAA,OAAAA,KAAAxB,EAAA;CAFD,MAAAyB,mBAAyBD;CAEvB,IAAAE;CAAA,IAAA1B,EAAA,QAAAd,QAAAN,MAAAoB,EAAA,QAAAb,UAAAa,EAAA,QAAAR,OAAA;EAEqBkC,MAAAC,QAAA;GACrBnC,OAAKoC,MAAQ,MAAM;GACnBzC,SAAS;IAAA,GACJwC;IAAGtC,UACIH,QAAON;IAAGiD,UACV3C,QAAON;GACnB,CAAC;GACD2B,aAAa,KAAK;EAAC;EACpBP,EAAA,MAAAd,QAAAN;EAAAoB,EAAA,MAAAb;EAAAa,EAAA,MAAAR;EAAAQ,EAAA,MAAA0B;CAAA,OAAAA,KAAA1B,EAAA;CARD,MAAA8B,iBAAuBJ;CAQrB,IAAAK;CAAA,IAAA/B,EAAA,QAAA8B,kBAAA9B,EAAA,QAAAM,aAAAN,EAAA,QAAAd,WAAAc,EAAA,QAAAR,OAAA;EAGAuC,KAAAC,uBAAuB;GAAAC,MACf;GAAM3B;GAAA4B,WAED;GAAI3C,UACLkC;GAAgBU,aACbZ;GAAea,QACpBN;GAAc5C;GAAAM;EAGxB,CAAC;EAACQ,EAAA,MAAA8B;EAAA9B,EAAA,MAAAM;EAAAN,EAAA,MAAAd;EAAAc,EAAA,MAAAR;EAAAQ,EAAA,MAAA+B;CAAA,OAAAA,KAAA/B,EAAA;CAVJ,MAAAqC,iBAAuBhF,kBACrB0E,EAUF;CAAE,IAAAO;CAAA,IAAAC;CAAA,IAAAvC,EAAA,QAAAP,YAAAO,EAAA,QAAAd,QAAAN,IAAA;EAEF0D,YAAkB7C,UAAQ+C,YAActD,QAAON,EAAuB,KAApDF;EACE6D,KAAAD,UAASG,QAASvD,QAAON,EAAG;EAACoB,EAAA,MAAAP;EAAAO,EAAA,MAAAd,QAAAN;EAAAoB,EAAA,MAAAsC;EAAAtC,EAAA,MAAAuC;CAAA,OAAA;EAAAD,YAAAtC,EAAA;EAAAuC,KAAAvC,EAAA;CAAA;CAAjD,MAAA0C,cAAoBH;CACpB,MAAAI,eAAqBD,gBAAgB,KAAhB,IAAyBA,cAAc;CAC5D,MAAAE,cAAoBF,gBAAgB,KAAhB,IAAyBJ,UAASO;CAAQ,IAAAC;CAAA,IAAA9C,EAAA,QAAAd,QAAA8B,aAAA;EAK7C8B,KAAA5D,QAAO8B,eAAP,CAAA;EAAyBhB,EAAA,MAAAd,QAAA8B;EAAAhB,EAAA,MAAA8C;CAAA,OAAAA,KAAA9C,EAAA;CAAA,IAAA+C;CAAA,IAAA/C,EAAA,QAAA4C,eAAA5C,EAAA,QAAA2C,gBAAA3C,EAAA,QAAAqC,eAAAW,SAAAhD,EAAA,QAAAH,SAAAG,EAAA,QAAAE,YAAAF,EAAA,QAAAI,cAAAJ,EAAA,QAAAd,WAAAc,EAAA,QAAAe,YAAAiC,SAAAhD,EAAA,QAAA8C,IAAA;EAFjCC,MAAA;GAAA,GACF7D;GAAO8B,aACG8B;GAAyBzD,UAC5B;GAAI4D,QACN;GAAKN;GAAAC;GAAAM,QAGLC,KAAAA;GAASC,OACVrC,YAAWiC;GAAM9C;GAAAE;GAAAP;GAAAwD,UAIdhB,eAAcW;EAC1B;EAAChD,EAAA,MAAA4C;EAAA5C,EAAA,MAAA2C;EAAA3C,EAAA,MAAAqC,eAAAW;EAAAhD,EAAA,MAAAH;EAAAG,EAAA,MAAAE;EAAAF,EAAA,MAAAI;EAAAJ,EAAA,MAAAd;EAAAc,EAAA,MAAAe,YAAAiC;EAAAhD,EAAA,MAAA8C;EAAA9C,EAAA,MAAA+C;CAAA,OAAAA,MAAA/C,EAAA;CAdH,MAAAgD,QACED;CAuBC,IAAAO;CAAA,IAAAtD,EAAA,QAAAgD,OAAA;EAGSM,YAAMN;EAAKhD,EAAA,MAAAgD;EAAAhD,EAAA,MAAAsD;CAAA,OAAAA,MAAAtD,EAAA;CAAA,IAAAuD;CAAA,IAAAvD,EAAA,QAAAqC,eAAAmB,SAAA;EACXD,YAAMlB,eAAcmB;EAAQxD,EAAA,MAAAqC,eAAAmB;EAAAxD,EAAA,MAAAuD;CAAA,OAAAA,MAAAvD,EAAA;CAAA,IAAAyD;CAAA,IAAAzD,EAAA,QAAAZ,UAAA;EAE9BqE,YAAA;GACNrE,WAAW;EAAC;EACbY,EAAA,MAAAZ;EAAAY,EAAA,MAAAyD;CAAA,OAAAA,MAAAzD,EAAA;CAAA,IAAA0D;CAAA,IAAA1D,EAAA,QAAAsC,aAAAtC,EAAA,QAAA0C,eAAA1C,EAAA,QAAAP,YAAAO,EAAA,QAAAd,QAAAN,IAAA;EAIe8E,OAAAC,QAAA;GAAC,MAAA,EAAAC,UAAAC,aAAAF;GACf,IAAI,CAAClE,UAAQ;GACb,MAAAqE,SACED,aACCnB,gBAAgB,KAAhBS,KAAAA,IAEGS,aAAa,aACXtB,UAAUI,cAAc,KACxBkB,aAAa,SACXtB,UAAUI,cAAc,KAD1BS,KAAAA;GAGR,IAAIW,WAAWX,KAAAA,KAAaW,WAAW5E,QAAON,IAC5Ca,SAAQsE,eAAgBD,MAAM;EAAE;EACnC9D,EAAA,MAAAsC;EAAAtC,EAAA,MAAA0C;EAAA1C,EAAA,MAAAP;EAAAO,EAAA,MAAAd,QAAAN;EAAAoB,EAAA,MAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAAA,IAAA2D;CAAA,IAAA3D,EAAA,QAAAd,SAAA;EACYyE,YAAMzF,qBAAqBgB,OAAO;EAACc,EAAA,MAAAd;EAAAc,EAAA,MAAA2D;CAAA,OAAAA,MAAA3D,EAAA;CAAA,IAAAgE;CAAA,IAAAhE,EAAA,QAAAe,eAAAf,EAAA,QAAAgD,OAAA;EAC1CgB,OAAAC,aAAA;GACJ,IAAI,WAAWA,UAAQ,OACdlD,YAAWmD,IAAKD,QAAQ;GAEjC,MAAAE,YAAkBnB,MAAKI,MAAMgB,WAC3BC,MAAOA,EAACpC,SAAU,eAAeoC,EAACC,eAAgBL,SAAQK,UAC5D;GAAE,OACKvD,YAAWmD,IAAK,EAAArE,OAASsE,UAAU,CAAC;EAAC;EAC7CnE,EAAA,MAAAe;EAAAf,EAAA,MAAAgD;EAAAhD,EAAA,MAAAgE;CAAA,OAAAA,MAAAhE,EAAA;CAAA,IAAAuE;CAAA,IAAAvE,EAAA,QAAAmB,mBAAA;EACWoD,OAAAC,eAAA;GACV,IAAI,QAAQP,YAAQ,OACX9C,kBAAiB+C,IAAK,EAAAO,KAAOR,WAAQrF,GAAI,CAAC;GAClD,OACMuC,kBAAiB+C,IAAKD,UAAQ;EAAC;EACvCjE,EAAA,MAAAmB;EAAAnB,EAAA,MAAAuE;CAAA,OAAAA,MAAAvE,EAAA;CAAA,IAAA0E;CAAA,IAAA1E,EAAA,QAAAsD,OAAAtD,EAAA,QAAAuD,OAAAvD,EAAA,QAAAyD,OAAAzD,EAAA,QAAA0D,OAAA1D,EAAA,QAAA2D,OAAA3D,EAAA,QAAAgE,OAAAhE,EAAA,QAAAuE,KAAA;EAvCIG,MAAA;GAAAC,UACKrB;GAAWD,UACXE;GAA4BqB,QAC9BC;GAAQC,QACRrB;GAEPsB,OACMC;GAAQC,cACDC;GAAQC,gBACNC;GAAQrB,gBACRL;GAaf2B,aACY1B;GAAmChD,MAC1CqD;GAQLsB,YACWf;GAKXpE;GAAAE;EAGH;EAACL,EAAA,MAAAsD;EAAAtD,EAAA,MAAAuD;EAAAvD,EAAA,MAAAyD;EAAAzD,EAAA,MAAA0D;EAAA1D,EAAA,MAAA2D;EAAA3D,EAAA,MAAAgE;EAAAhE,EAAA,MAAAuE;EAAAvE,EAAA,MAAA0E;CAAA,OAAAA,MAAA1E,EAAA;CAAA,OA1CM0E;AA0CN;AAGH,MAAMa,gBAAgBxI,SAAS+C,gBAAgB;AAU/C,MAAM2F,mBAAkB1F,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAU,MAAAjB,4BAAAK;CAGL,IAAAS;CAAA,IAAAR,EAAA,OAAAqB,OAAAC,IAAA,2BAAA,GAAA;EAINd,KAAA,EAAAyB,MAAQ,WAAoB;EAACjC,EAAA,KAAAQ;CAAA,OAAAA,KAAAR,EAAA;CAAA,IAAAU;CAAA,IAAAV,EAAA,OAAAW,MAAA;EAFhCD,KAAA;GAAA,GACFC;GAAIgF,QACCnF;EACV;EAACR,EAAA,KAAAW;EAAAX,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAJH,MAAAgD,QACStC;CAKP,IAAAO;CAAA,IAAAjB,EAAA,OAAAgD,OAAA;EAGU/B,WAAM+B;EAAKhD,EAAA,KAAAgD;EAAAhD,EAAA,KAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAA,IAAAoB;CAAA,IAAApB,EAAA,OAAAN,2BAAAM,EAAA,OAAAW,MAAA;EAGES,MAAAwE,aAAA;GACrB,IAAI,CAAClG,yBACH,MAAM,IAAImG,MAAM,0CAA0C;GAE5D,IAAIlF,KAAIsB,SAAU,aAChB,MAAM,IAAI4D,MACR,4DACF;GAEF,IACE,CAAClF,KAAImF,YACLnF,KAAImF,SAASC,aAAc5C,KAAAA,KAC3BxC,KAAImF,SAASE,eAAgB7C,KAAAA,GAE7B,MAAM,IAAI0C,MAAM,mCAAmC;GAErDnG,wBACEvB,4BAA4BwC,KAAImF,UAAWF,QAAQ,CACrD;EAAC;EACF5F,EAAA,KAAAN;EAAAM,EAAA,KAAAW;EAAAX,EAAA,KAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAAA,IAAAwB;CAAA,IAAAxB,EAAA,OAAAiB,MAAAjB,EAAA,OAAAoB,IAAA;EAvBII,KAAA;GAAAmD,UACK1D;GAAWgF,eACNC;GAAQC,gBACPC;GAAQC,uBACDjF;EAoBzB;EAACpB,EAAA,KAAAiB;EAAAjB,EAAA,KAAAoB;EAAApB,EAAA,MAAAwB;CAAA,OAAAA,KAAAxB,EAAA;CAAA,OAxBMwB;AAwBN;AAGH,MAAMX,eAAe9D,SAAS0I,eAAe;AAQ7C,MAAMe,yBAAyB,EAC7BlB,YACAiB,eACyD;CACzD,OAAO;EACL5B,gBAAgBW;EAChBmB,QAAQ,YAAY;GAClBF,WAAW;EACb;CACF;AACF;AAEA,MAAMG,qBAAqB3J,SAASyJ,qBAAqB;AAczD,MAAMI,sBAAsB,EAC1BC,MACAC,SACAP,eAK+B;CAC/B,OAAO;EACL5B,gBAAgBkC;EAChBE,OAAOD;EACPL,QAAQF;CACV;AACF;AAEA,MAAMS,kBAAkBjK,SAAS6J,kBAAkB;AAGnD,MAAMK,6BAA4BlH,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAgC,MAAA3B,WAAA4B,WAAAlD,gBAAAwB,IAAAjB,UAAA4C,aAAAC,QAAAlD,SAAAM,UAAAO;CAIjC,MAAAf,iBAAAwB,OAAA2C,KAAAA,IAAA,QAAA3C;CAOA,MAAA,CAAA0G,MAAAC,WAAwBxK,SAAS,EAAE;CACnC,MAAA,CAAAyK,MAAAC,WAAwB1K,SAA0C,MAAM;CAAE,IAAA+D;CAAA,IAAAV,EAAA,OAAAqB,OAAAC,IAAA,2BAAA,GAAA;EACNZ,KAAA,CAAC;EAACV,EAAA,KAAAU;CAAA,OAAAA,KAAAV,EAAA;CAAtE,MAAA,CAAAsH,WAAAC,gBAAkC5K,SAAkC+D,EAAE;CAAE,IAAAO;CAAA,IAAAjB,EAAA,OAAAqB,OAAAC,IAAA,2BAAA,GAAA;EACFL,KAAA,CAAA;EAAEjB,EAAA,KAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAAxE,MAAA,CAAAgB,aAAAwG,kBAAsC7K,SAAgCsE,EAAE;CACxE,MAAA,CAAAwG,OAAAC,YAA0B/K,SAExBwG,KAAAA,CAAS;CAAE,IAAA/B;CAAA,IAAApB,EAAA,OAAAd,SAAA;EAG4BkC,WAAA;GACvC,IAAIlC,SAAO;IAOTiI,QALkBjI,QAAOuB,QAAQmH,OAAQC,MACrBF,CAAS,CAAA7G,IACtBiH,MAA2C,CAAC,CAAAC,KAC3C,MAEAF,CAAW;IACnBT,QAAQnI,QAAOkI,IAAK;IACpBI,eAAetI,QAAO8B,eAAP,CAAA,CAAyB;GAAC;EAC1C;EACFhB,EAAA,KAAAd;EAAAc,EAAA,KAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAZD,MAAAiI,oBAA0BnL,eAAesE,EAYxC;CAAE,IAAAI;CAAA,IAAAxB,EAAA,OAAAM,aAAAN,EAAA,OAAAiI,mBAAA;EAEOzG,WAAA;GACR,IAAIlB,WACF2H,kBAAkB;EACnB;EACFjI,EAAA,KAAAM;EAAAN,EAAA,KAAAiI;EAAAjI,EAAA,KAAAwB;CAAA,OAAAA,KAAAxB,EAAA;CAAA,IAAA0B;CAAA,IAAA1B,EAAA,OAAAM,WAAA;EAAEoB,KAAA,CAACpB,SAAS;EAACN,EAAA,KAAAM;EAAAN,EAAA,KAAA0B;CAAA,OAAAA,KAAA1B,EAAA;CAJdnD,UAAU2E,IAIPE,EAAW;CAAC,IAAAK;CAAA,IAAA/B,EAAA,OAAAgB,aAAA;EAGbe,KAAAf,YAAWF,KAAKwE,YAAA1E,QACd5D,QACEsI,WAAU1G,IACV8H,mBAAmB;GAAApB;GAAAiB,gBAEP;IACRiB,eAAexG,YAAW4G,QAAQM,GAAAC,MAAUA,MAAMvH,GAAG,CAAC;GAAC;EAE3D,CAAC,CACH,CACF;EAACZ,EAAA,KAAAgB;EAAAhB,EAAA,MAAA+B;CAAA,OAAAA,KAAA/B,EAAA;CAXH,MAAAmB,oBAA0BhE,gBACxB4E,EAWF;CAEA,MAAAqG,aAAmB5I,OAAK6I,SAAL5J;CAAkC,IAAA8D;CAAA,IAAAvC,EAAA,QAAAR,SAAAQ,EAAA,QAAAoI,YAAA;EAAA,IAAAtF;EAAA,IAAA9C,EAAA,QAAAR,OAAA;GAEpCsD,MAAA+D,SACb7J,QACE6J,KAAIjI,IACJoI,gBAAgB;IAAAH;IAAAC,eAECtH,OAAKuH,MAAQF,KAAIjI,EAAG;IAAC2H,gBACpB/G,OAAKiH,OAASI,KAAIjI,EAAG;GACvC,CAAC,CACH;GAACoB,EAAA,MAAAR;GAAAQ,EAAA,MAAA8C;EAAA,OAAAA,KAAA9C,EAAA;EARHuC,KAAA6F,WAAUtH,IAAKgC,EASf;EAAC9C,EAAA,MAAAR;EAAAQ,EAAA,MAAAoI;EAAApI,EAAA,MAAAuC;CAAA,OAAAA,KAAAvC,EAAA;CAVH,MAAAsI,mBAAyBnL,gBACvBoF,EAUF;CAAE,IAAAO;CAAA,IAAA9C,EAAA,QAAAgB,YAAA6B,UAAA7C,EAAA,QAAAkH,MAAA;EAGgBpE,KAAA,CAACoE,KAAIqB,KAAM,KAAX,CAAiBvH,YAAW6B;EAAO7C,EAAA,MAAAgB,YAAA6B;EAAA7C,EAAA,MAAAkH;EAAAlH,EAAA,MAAA8C;CAAA,OAAAA,KAAA9C,EAAA;CAAnD,MAAAwI,UAAgB1F;CAQL,MAAAC,MAAAzC,aAAA,CAAckI,WAAd,CAA0BxJ;CAAc,IAAAsE;CAAA,IAAAtD,EAAA,QAAAmB,kBAAA6B,SAAAhD,EAAA,QAAAkC,aAAAlC,EAAA,QAAAM,aAAAN,EAAA,QAAAwI,WAAAxI,EAAA,QAAAoI,cAAApI,EAAA,QAAAyH,SAAAzH,EAAA,QAAAoH,QAAApH,EAAA,QAAAsH,aAAAtH,EAAA,QAAA+C,OAAA/C,EAAA,QAAAkH,QAAAlH,EAAA,QAAAiC,MAAA;EAP5CqB,MAAA;GAAA4D;GAAAE;GAAApG,aAGQG,kBAAiB6B;GAAMsE;GAAAhH;GAAA4B;GAAAuG,SAI3B1F;GAAwC2F,kBAC/B;GAAGF;GAAAvG;GAAA0G,WAGVxF,KAAAA;GAASsE;GAAAjI,OAEb4I;EACT;EAACpI,EAAA,MAAAmB,kBAAA6B;EAAAhD,EAAA,MAAAkC;EAAAlC,EAAA,MAAAM;EAAAN,EAAA,MAAAwI;EAAAxI,EAAA,MAAAoI;EAAApI,EAAA,MAAAyH;EAAAzH,EAAA,MAAAoH;EAAApH,EAAA,MAAAsH;EAAAtH,EAAA,MAAA+C;EAAA/C,EAAA,MAAAkH;EAAAlH,EAAA,MAAAiC;EAAAjC,EAAA,MAAAsD;CAAA,OAAAA,MAAAtD,EAAA;CAhBH,MAAAgD,QAEEM;CA2BC,IAAAC;CAAA,IAAAvD,EAAA,QAAAgD,OAAA;EAGSO,YAAMP;EAAKhD,EAAA,MAAAgD;EAAAhD,EAAA,MAAAuD;CAAA,OAAAA,MAAAvD,EAAA;CAAA,IAAAyD;CAAA,IAAAzD,EAAA,QAAAgB,aAAA;EAINyC,MAAA,OAAAmF,qBAAA;GACb,IAAIA,4BAA4BC,MAAI;IAClC,MAAAC,gBAAkC;KAAAlK,IAC5BmK,KAAIC,OAAQ,CAAC,CAAAC,SAAU,EAAE,CAAC,CAAAC,UAAW,CAAC;KAACjH,MACrC;KAAMkH,MACNP,iBAAgBO;KAAKC,aACdR,iBAAgB3G;KAAKoH,MAC5BT;KAAgBjD,QACd,EAAA1D,MAAQ,WAAW;KAACxB,SACnB,CAAA;IACX;IACA+G,eAAe,CAAA,GAAIxG,aAAa8H,aAAa,CAAC;GAAC,OAAA;IAE/C,MAAAQ,kBAAkC;KAAA1K,IAC5BgK,iBAAgBhK,MAAOmK,KAAIC,OAAQ,CAAC,CAAAC,SAAU,EAAE,CAAC,CAAAC,UAAW,CAAC;KAACjH,MAC5D2G,iBAAgB3G,QAAhB;KAAmCkH,MACnCP,iBAAgBO;KAAKC,aACdR,iBAAgBQ;KAAY3I,SAChCmI,iBAAgBnI;KAAQkF,QACzB,EAAA1D,MAAQ,WAAW;IAC7B;IACAuF,eAAe,CAAA,GAAIxG,aAAa8H,eAAa,CAAC;GAAC;EAChD;EACF9I,EAAA,MAAAgB;EAAAhB,EAAA,MAAAyD;CAAA,OAAAA,MAAAzD,EAAA;CAAA,IAAA0D;CAAA,IAAA1D,EAAA,QAAAqB,OAAAC,IAAA,2BAAA,GAAA;EACiBoC,MAAA,YAAA;GAChB8D,eAAe,CAAA,CAAE;EAAC;EACnBxH,EAAA,MAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAAA,IAAA2D;CAAA,IAAA3D,EAAA,QAAAmB,mBAAA;EACWwC,OAAAM,aAAA;GACV,IAAI,QAAQA,UAAQ,OACX9C,kBAAiB+C,IAAK,EAAAO,KAAOR,SAAQrF,GAAI,CAAC;GAClD,OACMuC,kBAAiB+C,IAAKD,QAAQ;EAAC;EACvCjE,EAAA,MAAAmB;EAAAnB,EAAA,MAAA2D;CAAA,OAAAA,MAAA3D,EAAA;CAAA,IAAAgE;CAAA,IAAAhE,EAAA,QAAAqB,OAAAC,IAAA,2BAAA,GAAA;EACM0C,MAAA,YAAA;GACLmD,QAAQ,EAAE;GACVE,QAAQ,MAAM;GACdE,aAAa,CAAC,CAAC;GACfC,eAAe,CAAA,CAAE;GACjBE,SAASvE,KAAAA,CAAS;EAAC;EACpBnD,EAAA,MAAAgE;CAAA,OAAAA,MAAAhE,EAAA;CAAA,IAAAuE;CAAA,IAAAvE,EAAA,QAAAgB,eAAAhB,EAAA,QAAAoC,UAAApC,EAAA,QAAAR,SAAAQ,EAAA,QAAAyH,SAAAzH,EAAA,QAAAoH,QAAApH,EAAA,QAAAsH,aAAAtH,EAAA,QAAAgD,SAAAhD,EAAA,QAAAkH,MAAA;EACK3C,OAAAgF,SAAA;GACJ,IAAI,CAACvG,MAAKyF,SAAQ;GAElB,MAAAe,eAAqB/B;GACrB,MAAAgC,kBAAuC;IAAArC;IAAA3G,SAE5ByG,OAAA,CAAQ;KAAAjF,MAAQ;KAAeiF;IAAO,CAAC,IAAvC,CAAA;IACIlG;IAAkB0I,2BACpB,IAAIC,KAAK;IAACtK,UACX;IAAIwC,UACJ;IAAIyF;IAAAsC,UAEJL,MAAIK;IAAUC,UACd,EAAAC,QACA,EAAA,GAAMN,eAAA,EAAA/B,OAAwB+B,aAAkB,IAA1C,CAA0C,EAAG,EAC7D;GACF;GACA,IAAIhK,OACFA,MAAKuK,QAASN,iBAAiB,EAAA1C,OAASwC,MAAIxC,SAAJ,MAAqB,CAAC;QAE9D3E,SAASqH,eAAe;GAE1BtC,QAAQ,EAAE;GACVK,eAAe,CAAA,CAAE;GACjBE,SAASvE,KAAAA,CAAS;EAAC;EACpBnD,EAAA,MAAAgB;EAAAhB,EAAA,MAAAoC;EAAApC,EAAA,MAAAR;EAAAQ,EAAA,MAAAyH;EAAAzH,EAAA,MAAAoH;EAAApH,EAAA,MAAAsH;EAAAtH,EAAA,MAAAgD;EAAAhD,EAAA,MAAAkH;EAAAlH,EAAA,MAAAuE;CAAA,OAAAA,MAAAvE,EAAA;CAAA,IAAA0E;CAAA,IAAA1E,EAAA,QAAAmC,aAAA;EAEUuC,YAAA;GACTvC,cAAc;EAAC;EAChBnC,EAAA,MAAAmC;EAAAnC,EAAA,MAAA0E;CAAA,OAAAA,MAAA1E,EAAA;CAAA,IAAAgK;CAAA,IAAAhK,EAAA,QAAAsI,kBAAA;EAIU0B,OAAAxF,eACF8D,iBAAgBpE,IAAKD,UAAQ;EACrCjE,EAAA,MAAAsI;EAAAtI,EAAA,MAAAgK;CAAA,OAAAA,MAAAhK,EAAA;CAAA,IAAAiK;CAAA,IAAAjK,EAAA,QAAAT,YAAAS,EAAA,QAAAuD,OAAAvD,EAAA,QAAAyD,OAAAzD,EAAA,QAAA2D,OAAA3D,EAAA,QAAAuE,OAAAvE,EAAA,QAAA0E,OAAA1E,EAAA,QAAAgK,KAAA;EAhFIC,MAAA;GAAAtF,UACKpB;GAAW4D;GAAAE;GAAAE;GAAA2C,eAINzG;GAuBd0G,kBACiBzG;GAEjB4B,YACW3B;GAKXyG,OACMpG;GAMNqG,MACK9F;GAyBL+F,QACO/K;GAAQgL,WACL7F;GAEV8F,gBACeC;GAAQC,eACTC;GAAQjD;GAAAkD,WAEZZ;EAGb;EAAChK,EAAA,MAAAT;EAAAS,EAAA,MAAAuD;EAAAvD,EAAA,MAAAyD;EAAAzD,EAAA,MAAA2D;EAAA3D,EAAA,MAAAuE;EAAAvE,EAAA,MAAA0E;EAAA1E,EAAA,MAAAgK;EAAAhK,EAAA,MAAAiK;CAAA,OAAAA,MAAAjK,EAAA;CAAA,OAjFMiK;AAiFN;AAGH,MAAMjI,yBAAyBjF,SAASkK,yBAAyB;AAGjE,MAAM4D,qBAAoB9K,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAnB,UAAAC,WAAAyB,IAAAxB,gBAAA0B,IAAAzB,OAAAE,QAAAC,UAAAE,YAAAC,UAAAC,OAAAC,UAAAC,4BAAAK;CAEzB,MAAAhB,YAAAyB,OAAA2C,KAAAA,IAAA,QAAA3C;CACA,MAAAxB,iBAAA0B,OAAAyC,KAAAA,IAAA,QAAAzC;CAAsB,IAAAO;CAAA,IAAAjB,EAAA,OAAAlB,YAAAkB,EAAA,OAAAZ,YAAAY,EAAA,OAAAR,OAAA;EAUDyB,MAAA6J,cAAA;GACnB,MAAAC,eAAqBjM,SAAQsF,WAAW4G,MAAOA,EAACpM,OAAQkM,SAAS;GACjE,IAAIC,iBAAiB,IAAE;GAEvB,MAAA1L,WAAiB0L,eAAe,IAAIjM,SAASiM,eAAe,EAAE,CAAAnM,KAA7C;GACjBY,OAAKoC,MAAQ,QAAQ;GACrBxC,WAAWC,QAAQ;EAAC;EACrBW,EAAA,KAAAlB;EAAAkB,EAAA,KAAAZ;EAAAY,EAAA,KAAAR;EAAAQ,EAAA,KAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CAPD,MAAAiL,eAAqBhK;CAOnB,IAAAG;CAAA,IAAApB,EAAA,OAAAP,YAAAO,EAAA,OAAAiL,gBAAAjL,EAAA,OAAAlB,YAAAkB,EAAA,OAAAb,UAAAa,EAAA,OAAAN,2BAAAM,EAAA,OAAAR,OAAA;EAAA,IAAAgC;EAAA,IAAAxB,EAAA,QAAAP,YAAAO,EAAA,QAAAiL,gBAAAjL,EAAA,QAAAb,UAAAa,EAAA,QAAAN,2BAAAM,EAAA,QAAAR,OAAA;GAGagC,MAAAG,KAAA9B,UAAA;IACX,MAAAqL,QAAkC;KAAAhM,SACvByC;KAAG9B;KAAAT,gBAEI6L,aAAatJ,IAAG/C,EAAG;KAACY;KAAAC;KAAAC;IAItC;IACA,IAAIP,QAAQ+L,MAAK/L,SAAUA;IAAO,OAC3BnC,QAAQ2E,IAAG/C,IAAK2G,cAAc2F,KAAK,CAAC;GAAC;GAC7ClL,EAAA,MAAAP;GAAAO,EAAA,MAAAiL;GAAAjL,EAAA,MAAAb;GAAAa,EAAA,MAAAN;GAAAM,EAAA,MAAAR;GAAAQ,EAAA,MAAAwB;EAAA,OAAAA,KAAAxB,EAAA;EAXDoB,KAAAtC,SAAQgC,IAAKU,EAWZ;EAACxB,EAAA,KAAAP;EAAAO,EAAA,KAAAiL;EAAAjL,EAAA,KAAAlB;EAAAkB,EAAA,KAAAb;EAAAa,EAAA,KAAAN;EAAAM,EAAA,KAAAR;EAAAQ,EAAA,MAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAZJ,MAAAmL,iBAAuBhO,gBACrBiE,EAYF;CAAE,IAAAI;CAAA,IAAAxB,EAAA,QAAAT,YAAAS,EAAA,QAAAR,OAAA;EAEsBgC,WAAA;GACtBhC,OAAKoC,MAAQ,YAAY;GACzBrC,WAAW;EAAC;EACbS,EAAA,MAAAT;EAAAS,EAAA,MAAAR;EAAAQ,EAAA,MAAAwB;CAAA,OAAAA,KAAAxB,EAAA;CAHD,MAAAoL,kBAAwB5J;CAGtB,IAAAE;CAAA,IAAA1B,EAAA,QAAAf,OAAA;EAEoByC,MAAAxC,YAAA;GACpBD,QAAQC,OAAO;EAAC;EACjBc,EAAA,MAAAf;EAAAe,EAAA,MAAA0B;CAAA,OAAAA,KAAA1B,EAAA;CAFD,MAAAqL,gBAAsB3J;CAEpB,IAAAK;CAAA,IAAA/B,EAAA,QAAAoL,mBAAApL,EAAA,QAAAqL,iBAAArL,EAAA,QAAAjB,aAAAiB,EAAA,QAAAhB,kBAAAgB,EAAA,QAAAR,OAAA;EAGAuC,KAAAC,uBAAuB;GAAAC,MACf;GAAQ3B,WACH;GAAI4B,WACJnD;GAASC;GAAAO,UAEV6L;GAAehJ,QACjBiJ;GAAa7L;EAEvB,CAAC;EAACQ,EAAA,MAAAoL;EAAApL,EAAA,MAAAqL;EAAArL,EAAA,MAAAjB;EAAAiB,EAAA,MAAAhB;EAAAgB,EAAA,MAAAR;EAAAQ,EAAA,MAAA+B;CAAA,OAAAA,KAAA/B,EAAA;CATJ,MAAAqC,iBAAuBhF,kBACrB0E,EASF;CAEA,MAAAuJ,WAAiB,CAAC,CAAC9L;CACnB,MAAA+L,cAAoB,CAAC,CAAC9L;CAAS,IAAA8C;CAAA,IAAAvC,EAAA,QAAAmL,eAAAnI,OAAA;EAEPT,KAAA4I,eAAcnI,MAAMlC,IAAK0K,OAG7C;EAACxL,EAAA,MAAAmL,eAAAnI;EAAAhD,EAAA,MAAAuC;CAAA,OAAAA,KAAAvC,EAAA;CAHH,MAAAyL,gBAAsBlJ;CAMX,MAAAO,KAAAhE,SAAQ+D,WAAY;CAAC,IAAAE;CAAA,IAAA/C,EAAA,QAAAuL,eAAAvL,EAAA,QAAAsL,YAAAtL,EAAA,QAAAjB,WAAA;EAIhBgE,MAAA;GAAA2I,MACN;GAAK9G,QACH;GAAKE,QACL;GAAKwF,QACLvL;GAASmE,QACT;GAAKlC,aACA;GAAK2K,UACR;GAAKC,OACR;GAAK7H,gBACIwH;GAAWM,uBACJ;GAAKC,eACb;GAAKnD,WACT;GAAKnJ,OACT8L;EACT;EAACtL,EAAA,MAAAuL;EAAAvL,EAAA,MAAAsL;EAAAtL,EAAA,MAAAjB;EAAAiB,EAAA,MAAA+C;CAAA,OAAAA,MAAA/C,EAAA;CAAA,IAAAsD;CAAA,IAAAC;CAAA,IAAAvD,EAAA,QAAAqB,OAAAC,IAAA,2BAAA,GAAA;EAEMgC,MAAA,CAAC;EACKC,MAAA,CAAA;EAAEvD,EAAA,MAAAsD;EAAAtD,EAAA,MAAAuD;CAAA,OAAA;EAAAD,MAAAtD,EAAA;EAAAuD,MAAAvD,EAAA;CAAA;CAAA,IAAAyD;CAAA,IAAAzD,EAAA,QAAAqC,eAAAW,SAAAhD,EAAA,QAAAjB,aAAAiB,EAAA,QAAAyL,iBAAAzL,EAAA,QAAA+C,OAAA/C,EAAA,QAAA8C,IAAA;EAtBVW,MAAA;GAAA+E,SACI1F;GAAqBiJ,YAClB;GAAKC,WACN;GAAKjN;GAAAkN,cAEFlJ;GAcbjE,UACS2M;GAAazI,OAChBM;GAAE4I,aACI3I;GAAE4I,QACPhJ,KAAAA;GAASD,QACTC,KAAAA;GAASyI,OACVzI,KAAAA;GAASE,UACNhB,eAAcW;EAC1B;EAAChD,EAAA,MAAAqC,eAAAW;EAAAhD,EAAA,MAAAjB;EAAAiB,EAAA,MAAAyL;EAAAzL,EAAA,MAAA+C;EAAA/C,EAAA,MAAA8C;EAAA9C,EAAA,MAAAyD;CAAA,OAAAA,MAAAzD,EAAA;CAjCH,MAAAgD,QAMES;CAmCC,IAAAC;CAAA,IAAA1D,EAAA,QAAAgD,OAAA;EAGSU,YAAMV;EAAKhD,EAAA,MAAAgD;EAAAhD,EAAA,MAAA0D;CAAA,OAAAA,MAAA1D,EAAA;CAAA,IAAA2D;CAAA,IAAA3D,EAAA,QAAAqC,eAAAmB,SAAA;EACXG,YAAMtB,eAAcmB;EAAQxD,EAAA,MAAAqC,eAAAmB;EAAAxD,EAAA,MAAA2D;CAAA,OAAAA,MAAA3D,EAAA;CAAA,IAAAgE;CAAA,IAAAhE,EAAA,QAAAlB,YAAAkB,EAAA,QAAAf,SAAAe,EAAA,QAAAR,OAAA;EAC9BwE,OAAAoI,cAAA;GACN,MAAAC,gBACE,OAAOnN,cAAY,WAAnB;IAAAwK,2BAEiB,IAAIC,KAAK;IAACtK,UACXP,SAAQwN,GAAI,EAAM,CAAC,EAAA1N,MAAnB;IAA2BiD,UAC3B;IAAIyF,WACH,CAAC;IAACF,MACP;IAAM3G,SACH,CAAC;KAAAwB,MAAQ;KAAMiF,MAAQhI;IAAQ,CAAC;IAAC8B,aAC7B,CAAA;IAAE6I,UACL,EAAAC,QAAU,CAAC,EAAE;GAYzB,IArBJ;IAAAJ,WAYiBxK,UAAOwK,6BAAP,IAAyBC,KAAK;IAACtK,UAChCH,UAAOG,YAAaP,SAAQwN,GAAI,EAAM,CAAC,EAAA1N,MAAvC;IAA+CiD,UAC/C3C,UAAO2C,YAAP;IAAwBuF,MAC5BlI,UAAOkI,QAAP;IAAsB3G,SACnBvB,UAAOuB;IAAQO,aACX9B,UAAO8B,eAAP,CAAA;IAAyB6I,UAC5B3K,UAAO2K,YAAP,EAAAC,QAA8B,CAAC,EAAE;IAACxC,WACjCpI,UAAOoI,aAAP,CAAsB;IAACsC,UACxB1K,UAAO0K;GACnB;GACN,IAAIpK,OACFA,MAAKuK,QAASsC,eAAe,EAAAtF,OAAS,MAAM,CAAC;QAE7C9H,QAAQoN,aAAa;EACtB;EACFrM,EAAA,MAAAlB;EAAAkB,EAAA,MAAAf;EAAAe,EAAA,MAAAR;EAAAQ,EAAA,MAAAgE;CAAA,OAAAA,MAAAhE,EAAA;CAAA,IAAAuE;CAAA,IAAAvE,EAAA,QAAAV,YAAA;EAESiF,YAAA;GACRjF,aAAa;EAAC;EACfU,EAAA,MAAAV;EAAAU,EAAA,MAAAuE;CAAA,OAAAA,MAAAvE,EAAA;CAAA,IAAA0E;CAAA,IAAA1E,EAAA,QAAAmL,gBAAA;EAOQzG,OAAAT,aAAA;GACP,IAAI,QAAQA,UAAQ,OACXkH,eAAcjH,IAAK,EAAAO,KAAOR,SAAQrF,GAAI,CAAC;GAC/C,OACMuM,eAAcjH,IAAKD,QAAQ;EAAC;EACpCjE,EAAA,MAAAmL;EAAAnL,EAAA,MAAA0E;CAAA,OAAAA,MAAA1E,EAAA;CAAA,IAAAgK;CAAA,IAAAhK,EAAA,QAAAoL,mBAAApL,EAAA,QAAA0D,OAAA1D,EAAA,QAAA2D,OAAA3D,EAAA,QAAAgE,OAAAhE,EAAA,QAAAuE,OAAAvE,EAAA,QAAA0E,KAAA;EAhDIsF,MAAA;GAAArF,UACKjB;GAAWL,UACXM;GAA4B4I,QAC9BvI;GA6BPwI,eACcC;GAAQ7C,UACbrF;GAETmI,WACUC;GAAQC,WACRxB;GAAeyB,iBACTC;GAAiCC,QAC1CC;GAAwBC,QACxBC;GAAQ9C,OACT+C;GAAQjO,SACNwF;GAKRO,cACamI;GAAQC,cACRC;GAAQC,iBACLC;GAAQC,gBACTC;GAAOC,sBACDC;GAAcC,WACzBC;GAAQC,aACNC;EACf;EAAChO,EAAA,MAAAoL;EAAApL,EAAA,MAAA0D;EAAA1D,EAAA,MAAA2D;EAAA3D,EAAA,MAAAgE;EAAAhE,EAAA,MAAAuE;EAAAvE,EAAA,MAAA0E;EAAA1E,EAAA,MAAAgK;CAAA,OAAAA,MAAAhK,EAAA;CAAA,OAxDMgK;AAwDN;AAGH,MAAaiE,iBAAiBlR,SAAS8N,iBAAiB;AAExDzN,sBAAsByN,oBAAoBqD,QAAQC,WAAW;CAC3D,IAAI,CAACD,OAAOE,WAAWD,OAAOC,QAAQC,WAAW,MAAM;EACrD,MAAMC,gBAAgBJ,OAAOK;EAC7BL,OAAOE,UAAU5P,iBAAiB,EAAE+P,QAAQD,cAAc,CAAC;EAC3DJ,OAAOK,SAASjR,QAAQ;GACtB+Q,QAAQ;GACRG,OAAO,EAAEvM,MAAM,OAAO;GACtBiC,MAAMuK,QAAQA,IAAIL,QAAQ,CAAC,CAACG,OAAO,MAAM;EAC3C,CAAC;CACH;CAEA,IAAI,CAACL,OAAOQ,kBAAkBP,OAAOO,eAAeL,WAAW,MAC7DH,OAAOQ,iBAAiBpR,QAAQ;EAC9B+Q,QAAQ;EACRG,OAAO,EAAEvM,MAAM,OAAO;EACtBiC,MAAMuK,QAAQA,IAAIL,QAAQ,CAAC,CAACvH,KAAK,MAAM;CACzC,CAAC;CAGHqH,OAAO7K,aAAa/F,QAAQ;EAC1B+Q,QAAQ;EACRG,OAAO,CAAC;EACRtK,MAAMuK,QAAQA,IAAIF,OAAO,CAAC,CAAClL,SAAS;CACtC,CAAC;CAED,IAAI,CAAC6K,OAAOS,gBAAgBR,OAAOQ,aAAaN,WAAW,MACzDH,OAAOS,eAAevQ,aAAa;CAErC,IAAI,CAAC8P,OAAOU,SAAST,OAAOS,MAAMP,WAAW,MAC3CH,OAAOU,QAAQtQ,MAAM,CAAC,CAAC;CAEzB,IAAI,CAAC4P,OAAOW,iBAAiBV,OAAOU,cAAcR,WAAW,MAC3DH,OAAOW,gBAAgBtQ,cAAc;CAEvC,IAAI,CAAC2P,OAAOhC,eAAeiC,OAAOjC,YAAYmC,WAAW,MACvDH,OAAOhC,cAAc7N,YAAY;AAErC,CAAC;AAnnBwB,SAAAyQ,QAAA,CAAA;AAAA,SAAA5N,OAAAoE,YAAA;CAAA,OAqBnBtI,QACEsI,WAAU1G,IACV8H,mBAAmB;EAAApB;EAAAiB,UAEPuI;CACZ,CAAC,CACH;AAAC;AA3BkB,SAAAjK,SAAA,CAAA;AAAA,SAAAG,SAAA,CAAA;AAAA,SAAAE,SAAA,CAAA;AAAA,SAAAE,SAAA,CAAA;AAoJD,SAAAc,SAAA,CAAA;AAAA,SAAAE,SAAA,CAAA;AA4FU,SAAAyB,OAAAlH,MAAA;CAAA,OAuBuBA,KAAIsB,SAAU;AAAM;AAvB3C,SAAA8F,OAAAgH,QAAA;CAAA,OAyBV,UAAUpO,SAAOA,OAAIuG,OAArB;AAA+B;AAzBrB,SAAAuD,SAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AA0LR,SAAAa,QAAAwD,GAAApO,KAAAqO,KAAA;CAAA,OA6D2C;EAAA,GAC5DD;EAAC/L,QACIrC,QAAQqO,IAAGpM,SAAU;CAC/B;AAAC;AAhEqB,SAAA4J,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AAAA,SAAAG,UAAA;CAAA,OA8IE;EAAA8B,OAAS,CAAC;EAACM,QAAU,CAAC;CAAE;AAAC;AA9I3B,SAAAlC,UAAA;CAAA,OA+IP,EAAAlO,UAAY,CAAA,EAAG;AAAC;AA/IT,SAAAoO,UAAA,CAAA;AAAA,SAAAC,UAAA,CAAA;AAAA,SAAAC,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA;AAAA,SAAAE,UAAA;CAAA,OA2JA;AAAC;AA3JD,SAAAyB,UAAA,CAAA;AAAA,SAAAvB,UAAA;CAAA,OA4JMuB;AAAQ;AA5Jd,SAAArB,UAAA,CAAA;AAAA,SAAAE,UAAA,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"mappings":";;;;KAeY,uBAAA;EACV,MAAA,GAAS,QAAA,aAAqB,eAAe,CAAC,YAAA;EAC9C,gBAAA,IAAoB,QAAA;EACpB,mBAAA;AAAA;AAAA,
|
|
1
|
+
{"version":3,"file":"InMemoryThreadList.d.ts","names":[],"sources":["../../src/client/InMemoryThreadList.ts"],"mappings":";;;;KAeY,uBAAA;EACV,MAAA,GAAS,QAAA,aAAqB,eAAe,CAAC,YAAA;EAC9C,gBAAA,IAAoB,QAAA;EACpB,mBAAA;AAAA;AAAA,cA0KW,kBAAA,8BAAkB,QAAA,CAAA,YAAA,cAAA,KAAA,EAAA,uBAAA"}
|
|
@@ -1,135 +1,288 @@
|
|
|
1
1
|
import { Derived, attachTransformScopes, useClientLookup, useClientResource } from "@assistant-ui/store";
|
|
2
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
2
3
|
import { DataRenderers, Tools } from "@assistant-ui/core/react";
|
|
3
|
-
import {
|
|
4
|
+
import { useState } from "@assistant-ui/tap/react-shim";
|
|
4
5
|
import { ModelContext, Suggestions } from "@assistant-ui/core/store";
|
|
5
6
|
import { resource, withKey } from "@assistant-ui/tap";
|
|
6
7
|
//#region src/client/InMemoryThreadList.ts
|
|
7
8
|
const RESOLVED_PROMISE = Promise.resolve();
|
|
8
9
|
const useThreadListItemClient = (props) => {
|
|
10
|
+
const $ = c(17);
|
|
9
11
|
const { data, onSwitchTo, onUpdateCustom, onArchive, onUnarchive, onDelete } = props;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
data.
|
|
21
|
-
data.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
12
|
+
let t0;
|
|
13
|
+
if ($[0] !== data.custom || $[1] !== data.id || $[2] !== data.status || $[3] !== data.title) {
|
|
14
|
+
t0 = {
|
|
15
|
+
id: data.id,
|
|
16
|
+
remoteId: void 0,
|
|
17
|
+
externalId: void 0,
|
|
18
|
+
title: data.title,
|
|
19
|
+
status: data.status,
|
|
20
|
+
custom: data.custom
|
|
21
|
+
};
|
|
22
|
+
$[0] = data.custom;
|
|
23
|
+
$[1] = data.id;
|
|
24
|
+
$[2] = data.status;
|
|
25
|
+
$[3] = data.title;
|
|
26
|
+
$[4] = t0;
|
|
27
|
+
} else t0 = $[4];
|
|
28
|
+
const state = t0;
|
|
29
|
+
let t1;
|
|
30
|
+
if ($[5] !== state) {
|
|
31
|
+
t1 = () => state;
|
|
32
|
+
$[5] = state;
|
|
33
|
+
$[6] = t1;
|
|
34
|
+
} else t1 = $[6];
|
|
35
|
+
let t2;
|
|
36
|
+
if ($[7] !== data.id) {
|
|
37
|
+
t2 = async () => ({
|
|
33
38
|
remoteId: data.id,
|
|
34
39
|
externalId: void 0
|
|
35
|
-
})
|
|
36
|
-
|
|
37
|
-
|
|
40
|
+
});
|
|
41
|
+
$[7] = data.id;
|
|
42
|
+
$[8] = t2;
|
|
43
|
+
} else t2 = $[8];
|
|
44
|
+
let t3;
|
|
45
|
+
if ($[9] !== onArchive || $[10] !== onDelete || $[11] !== onSwitchTo || $[12] !== onUnarchive || $[13] !== onUpdateCustom || $[14] !== t1 || $[15] !== t2) {
|
|
46
|
+
t3 = {
|
|
47
|
+
getState: t1,
|
|
48
|
+
switchTo: onSwitchTo,
|
|
49
|
+
rename: _temp,
|
|
50
|
+
updateCustom: onUpdateCustom,
|
|
51
|
+
archive: onArchive,
|
|
52
|
+
unarchive: onUnarchive,
|
|
53
|
+
delete: onDelete,
|
|
54
|
+
generateTitle: _temp2,
|
|
55
|
+
initialize: t2,
|
|
56
|
+
detach: _temp3
|
|
57
|
+
};
|
|
58
|
+
$[9] = onArchive;
|
|
59
|
+
$[10] = onDelete;
|
|
60
|
+
$[11] = onSwitchTo;
|
|
61
|
+
$[12] = onUnarchive;
|
|
62
|
+
$[13] = onUpdateCustom;
|
|
63
|
+
$[14] = t1;
|
|
64
|
+
$[15] = t2;
|
|
65
|
+
$[16] = t3;
|
|
66
|
+
} else t3 = $[16];
|
|
67
|
+
return t3;
|
|
38
68
|
};
|
|
39
69
|
const ThreadListItemClient = resource(useThreadListItemClient);
|
|
40
70
|
const useInMemoryThreadList = (props) => {
|
|
71
|
+
const $ = c(53);
|
|
41
72
|
const { thread: threadFactory, onSwitchToThread, onSwitchToNewThread } = props;
|
|
42
73
|
const [mainThreadId, setMainThreadId] = useState("main");
|
|
43
|
-
const [threads, setThreads] = useState(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
onSwitchToThread
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
};
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
74
|
+
const [threads, setThreads] = useState(_temp4);
|
|
75
|
+
let t0;
|
|
76
|
+
if ($[0] !== onSwitchToThread) {
|
|
77
|
+
t0 = (threadId) => {
|
|
78
|
+
setMainThreadId(threadId);
|
|
79
|
+
onSwitchToThread?.(threadId);
|
|
80
|
+
};
|
|
81
|
+
$[0] = onSwitchToThread;
|
|
82
|
+
$[1] = t0;
|
|
83
|
+
} else t0 = $[1];
|
|
84
|
+
const handleSwitchToThread = t0;
|
|
85
|
+
let t1;
|
|
86
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
87
|
+
t1 = (threadId_0) => {
|
|
88
|
+
setThreads((prev) => prev.map((t) => t.id === threadId_0 ? {
|
|
89
|
+
...t,
|
|
90
|
+
status: "archived"
|
|
91
|
+
} : t));
|
|
92
|
+
};
|
|
93
|
+
$[2] = t1;
|
|
94
|
+
} else t1 = $[2];
|
|
95
|
+
const handleArchive = t1;
|
|
96
|
+
let t2;
|
|
97
|
+
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
98
|
+
t2 = (threadId_1) => {
|
|
99
|
+
setThreads((prev_0) => prev_0.map((t_0) => t_0.id === threadId_1 ? {
|
|
100
|
+
...t_0,
|
|
101
|
+
status: "regular"
|
|
102
|
+
} : t_0));
|
|
103
|
+
};
|
|
104
|
+
$[3] = t2;
|
|
105
|
+
} else t2 = $[3];
|
|
106
|
+
const handleUnarchive = t2;
|
|
107
|
+
let t3;
|
|
108
|
+
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
109
|
+
t3 = (threadId_2, custom) => {
|
|
110
|
+
setThreads((prev_1) => prev_1.map((t_1) => t_1.id === threadId_2 ? {
|
|
111
|
+
...t_1,
|
|
112
|
+
custom
|
|
113
|
+
} : t_1));
|
|
114
|
+
};
|
|
115
|
+
$[4] = t3;
|
|
116
|
+
} else t3 = $[4];
|
|
117
|
+
const handleUpdateCustom = t3;
|
|
118
|
+
let t4;
|
|
119
|
+
if ($[5] !== mainThreadId || $[6] !== threads) {
|
|
120
|
+
t4 = (threadId_3) => {
|
|
121
|
+
setThreads((prev_2) => prev_2.filter((t_2) => t_2.id !== threadId_3));
|
|
122
|
+
if (mainThreadId === threadId_3) setMainThreadId(threads.filter((t_3) => t_3.id !== threadId_3)[0]?.id || "main");
|
|
123
|
+
};
|
|
124
|
+
$[5] = mainThreadId;
|
|
125
|
+
$[6] = threads;
|
|
126
|
+
$[7] = t4;
|
|
127
|
+
} else t4 = $[7];
|
|
128
|
+
const handleDelete = t4;
|
|
129
|
+
let t5;
|
|
130
|
+
if ($[8] !== onSwitchToNewThread) {
|
|
131
|
+
t5 = () => {
|
|
132
|
+
const newId = `thread-${Date.now()}`;
|
|
133
|
+
setThreads((prev_3) => [...prev_3, {
|
|
134
|
+
id: newId,
|
|
135
|
+
title: "New Thread",
|
|
136
|
+
status: "regular"
|
|
137
|
+
}]);
|
|
138
|
+
setMainThreadId(newId);
|
|
139
|
+
onSwitchToNewThread?.();
|
|
140
|
+
};
|
|
141
|
+
$[8] = onSwitchToNewThread;
|
|
142
|
+
$[9] = t5;
|
|
143
|
+
} else t5 = $[9];
|
|
144
|
+
const handleSwitchToNewThread = t5;
|
|
145
|
+
let t6;
|
|
146
|
+
if ($[10] !== handleDelete || $[11] !== handleSwitchToThread || $[12] !== threads) {
|
|
147
|
+
let t7;
|
|
148
|
+
if ($[14] !== handleDelete || $[15] !== handleSwitchToThread) {
|
|
149
|
+
t7 = (t_4) => withKey(t_4.id, ThreadListItemClient({
|
|
150
|
+
data: t_4,
|
|
151
|
+
onSwitchTo: () => handleSwitchToThread(t_4.id),
|
|
152
|
+
onUpdateCustom: (custom_0) => handleUpdateCustom(t_4.id, custom_0),
|
|
153
|
+
onArchive: () => handleArchive(t_4.id),
|
|
154
|
+
onUnarchive: () => handleUnarchive(t_4.id),
|
|
155
|
+
onDelete: () => handleDelete(t_4.id)
|
|
156
|
+
}));
|
|
157
|
+
$[14] = handleDelete;
|
|
158
|
+
$[15] = handleSwitchToThread;
|
|
159
|
+
$[16] = t7;
|
|
160
|
+
} else t7 = $[16];
|
|
161
|
+
t6 = threads.map(t7);
|
|
162
|
+
$[10] = handleDelete;
|
|
163
|
+
$[11] = handleSwitchToThread;
|
|
164
|
+
$[12] = threads;
|
|
165
|
+
$[13] = t6;
|
|
166
|
+
} else t6 = $[13];
|
|
167
|
+
const threadListItems = useClientLookup(t6);
|
|
168
|
+
let t7;
|
|
169
|
+
if ($[17] !== mainThreadId || $[18] !== threadFactory) {
|
|
170
|
+
t7 = threadFactory(mainThreadId);
|
|
171
|
+
$[17] = mainThreadId;
|
|
172
|
+
$[18] = threadFactory;
|
|
173
|
+
$[19] = t7;
|
|
174
|
+
} else t7 = $[19];
|
|
175
|
+
const mainThreadClient = useClientResource(t7);
|
|
176
|
+
let t10;
|
|
177
|
+
let t11;
|
|
178
|
+
let t12;
|
|
179
|
+
let t13;
|
|
180
|
+
let t14;
|
|
181
|
+
let t8;
|
|
182
|
+
let t9;
|
|
183
|
+
if ($[20] !== mainThreadId || $[21] !== threads) {
|
|
184
|
+
const regularThreads = threads.filter(_temp5);
|
|
185
|
+
const archivedThreads = threads.filter(_temp6);
|
|
186
|
+
t8 = mainThreadId;
|
|
187
|
+
t9 = null;
|
|
188
|
+
t10 = false;
|
|
189
|
+
t11 = false;
|
|
190
|
+
t12 = false;
|
|
191
|
+
t13 = regularThreads.map(_temp7);
|
|
192
|
+
t14 = archivedThreads.map(_temp8);
|
|
193
|
+
$[20] = mainThreadId;
|
|
194
|
+
$[21] = threads;
|
|
195
|
+
$[22] = t10;
|
|
196
|
+
$[23] = t11;
|
|
197
|
+
$[24] = t12;
|
|
198
|
+
$[25] = t13;
|
|
199
|
+
$[26] = t14;
|
|
200
|
+
$[27] = t8;
|
|
201
|
+
$[28] = t9;
|
|
202
|
+
} else {
|
|
203
|
+
t10 = $[22];
|
|
204
|
+
t11 = $[23];
|
|
205
|
+
t12 = $[24];
|
|
206
|
+
t13 = $[25];
|
|
207
|
+
t14 = $[26];
|
|
208
|
+
t8 = $[27];
|
|
209
|
+
t9 = $[28];
|
|
210
|
+
}
|
|
211
|
+
let t15;
|
|
212
|
+
if ($[29] !== mainThreadClient.state || $[30] !== t10 || $[31] !== t11 || $[32] !== t12 || $[33] !== t13 || $[34] !== t14 || $[35] !== t8 || $[36] !== t9 || $[37] !== threadListItems.state) {
|
|
213
|
+
t15 = {
|
|
214
|
+
mainThreadId: t8,
|
|
215
|
+
newThreadId: t9,
|
|
216
|
+
isLoading: t10,
|
|
217
|
+
isLoadingMore: t11,
|
|
218
|
+
hasMore: t12,
|
|
219
|
+
threadIds: t13,
|
|
220
|
+
archivedThreadIds: t14,
|
|
104
221
|
threadItems: threadListItems.state,
|
|
105
222
|
main: mainThreadClient.state
|
|
106
223
|
};
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
224
|
+
$[29] = mainThreadClient.state;
|
|
225
|
+
$[30] = t10;
|
|
226
|
+
$[31] = t11;
|
|
227
|
+
$[32] = t12;
|
|
228
|
+
$[33] = t13;
|
|
229
|
+
$[34] = t14;
|
|
230
|
+
$[35] = t8;
|
|
231
|
+
$[36] = t9;
|
|
232
|
+
$[37] = threadListItems.state;
|
|
233
|
+
$[38] = t15;
|
|
234
|
+
} else t15 = $[38];
|
|
235
|
+
const state = t15;
|
|
236
|
+
let t16;
|
|
237
|
+
if ($[39] !== state) {
|
|
238
|
+
t16 = () => state;
|
|
239
|
+
$[39] = state;
|
|
240
|
+
$[40] = t16;
|
|
241
|
+
} else t16 = $[40];
|
|
242
|
+
let t17;
|
|
243
|
+
if ($[41] !== mainThreadId || $[42] !== threadListItems || $[43] !== threads) {
|
|
244
|
+
t17 = (selector) => {
|
|
121
245
|
if (selector === "main") {
|
|
122
|
-
const index = threads.findIndex((
|
|
246
|
+
const index = threads.findIndex((t_9) => t_9.id === mainThreadId);
|
|
123
247
|
return threadListItems.get({ index: index === -1 ? 0 : index });
|
|
124
248
|
}
|
|
125
249
|
if ("id" in selector) {
|
|
126
|
-
const
|
|
127
|
-
return threadListItems.get({ index });
|
|
250
|
+
const index_0 = threads.findIndex((t_10) => t_10.id === selector.id);
|
|
251
|
+
return threadListItems.get({ index: index_0 });
|
|
128
252
|
}
|
|
129
253
|
return threadListItems.get(selector);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
254
|
+
};
|
|
255
|
+
$[41] = mainThreadId;
|
|
256
|
+
$[42] = threadListItems;
|
|
257
|
+
$[43] = threads;
|
|
258
|
+
$[44] = t17;
|
|
259
|
+
} else t17 = $[44];
|
|
260
|
+
let t18;
|
|
261
|
+
if ($[45] !== mainThreadClient.methods) {
|
|
262
|
+
t18 = () => mainThreadClient.methods;
|
|
263
|
+
$[45] = mainThreadClient.methods;
|
|
264
|
+
$[46] = t18;
|
|
265
|
+
} else t18 = $[46];
|
|
266
|
+
let t19;
|
|
267
|
+
if ($[47] !== handleSwitchToNewThread || $[48] !== handleSwitchToThread || $[49] !== t16 || $[50] !== t17 || $[51] !== t18) {
|
|
268
|
+
t19 = {
|
|
269
|
+
getState: t16,
|
|
270
|
+
switchToThread: handleSwitchToThread,
|
|
271
|
+
switchToNewThread: handleSwitchToNewThread,
|
|
272
|
+
getLoadThreadsPromise: _temp9,
|
|
273
|
+
reload: _temp0,
|
|
274
|
+
loadMore: _temp1,
|
|
275
|
+
item: t17,
|
|
276
|
+
thread: t18
|
|
277
|
+
};
|
|
278
|
+
$[47] = handleSwitchToNewThread;
|
|
279
|
+
$[48] = handleSwitchToThread;
|
|
280
|
+
$[49] = t16;
|
|
281
|
+
$[50] = t17;
|
|
282
|
+
$[51] = t18;
|
|
283
|
+
$[52] = t19;
|
|
284
|
+
} else t19 = $[52];
|
|
285
|
+
return t19;
|
|
133
286
|
};
|
|
134
287
|
const InMemoryThreadList = resource(useInMemoryThreadList);
|
|
135
288
|
attachTransformScopes(useInMemoryThreadList, (scopes, parent) => {
|
|
@@ -153,6 +306,37 @@ attachTransformScopes(useInMemoryThreadList, (scopes, parent) => {
|
|
|
153
306
|
if (!scopes.dataRenderers && parent.dataRenderers.source === null) scopes.dataRenderers = DataRenderers();
|
|
154
307
|
if (!scopes.suggestions && parent.suggestions.source === null) scopes.suggestions = Suggestions();
|
|
155
308
|
});
|
|
309
|
+
function _temp() {}
|
|
310
|
+
function _temp2() {}
|
|
311
|
+
function _temp3() {}
|
|
312
|
+
function _temp4() {
|
|
313
|
+
return [{
|
|
314
|
+
id: "main",
|
|
315
|
+
title: "Main Thread",
|
|
316
|
+
status: "regular"
|
|
317
|
+
}];
|
|
318
|
+
}
|
|
319
|
+
function _temp5(t_5) {
|
|
320
|
+
return t_5.status === "regular";
|
|
321
|
+
}
|
|
322
|
+
function _temp6(t_6) {
|
|
323
|
+
return t_6.status === "archived";
|
|
324
|
+
}
|
|
325
|
+
function _temp7(t_7) {
|
|
326
|
+
return t_7.id;
|
|
327
|
+
}
|
|
328
|
+
function _temp8(t_8) {
|
|
329
|
+
return t_8.id;
|
|
330
|
+
}
|
|
331
|
+
function _temp9() {
|
|
332
|
+
return RESOLVED_PROMISE;
|
|
333
|
+
}
|
|
334
|
+
function _temp0() {
|
|
335
|
+
return RESOLVED_PROMISE;
|
|
336
|
+
}
|
|
337
|
+
function _temp1() {
|
|
338
|
+
return RESOLVED_PROMISE;
|
|
339
|
+
}
|
|
156
340
|
//#endregion
|
|
157
341
|
export { InMemoryThreadList };
|
|
158
342
|
|