@assistant-ui/react 0.10.49 → 0.11.0
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/api/AttachmentRuntime.d.ts.map +1 -1
- package/dist/api/AttachmentRuntime.js +1 -0
- package/dist/api/AttachmentRuntime.js.map +1 -1
- package/dist/api/ComposerRuntime.d.ts +5 -2
- package/dist/api/ComposerRuntime.d.ts.map +1 -1
- package/dist/api/ComposerRuntime.js +4 -6
- package/dist/api/ComposerRuntime.js.map +1 -1
- package/dist/api/MessagePartRuntime.d.ts.map +1 -1
- package/dist/api/MessagePartRuntime.js +1 -0
- package/dist/api/MessagePartRuntime.js.map +1 -1
- package/dist/api/MessageRuntime.d.ts.map +1 -1
- package/dist/api/MessageRuntime.js +1 -0
- package/dist/api/MessageRuntime.js.map +1 -1
- package/dist/api/ThreadListItemRuntime.d.ts.map +1 -1
- package/dist/api/ThreadListItemRuntime.js +5 -0
- package/dist/api/ThreadListItemRuntime.js.map +1 -1
- package/dist/api/ThreadListRuntime.d.ts +2 -3
- package/dist/api/ThreadListRuntime.d.ts.map +1 -1
- package/dist/api/ThreadListRuntime.js +6 -7
- package/dist/api/ThreadListRuntime.js.map +1 -1
- package/dist/api/ThreadRuntime.d.ts +6 -6
- package/dist/api/ThreadRuntime.d.ts.map +1 -1
- package/dist/api/ThreadRuntime.js +5 -4
- package/dist/api/ThreadRuntime.js.map +1 -1
- package/dist/client/AssistantRuntimeClient.d.ts +86 -0
- package/dist/client/AssistantRuntimeClient.d.ts.map +1 -0
- package/dist/client/AssistantRuntimeClient.js +138 -0
- package/dist/client/AssistantRuntimeClient.js.map +1 -0
- package/dist/client/AttachmentClient.d.ts +6 -0
- package/dist/client/AttachmentClient.d.ts.map +1 -0
- package/dist/client/AttachmentClient.js +1 -0
- package/dist/client/AttachmentClient.js.map +1 -0
- package/dist/client/ComposerClient.d.ts +42 -0
- package/dist/client/ComposerClient.d.ts.map +1 -0
- package/dist/client/ComposerClient.js +76 -0
- package/dist/client/ComposerClient.js.map +1 -0
- package/dist/client/EventManagerClient.d.ts +9 -0
- package/dist/client/EventManagerClient.d.ts.map +1 -0
- package/dist/client/EventManagerClient.js +40 -0
- package/dist/client/EventManagerClient.js.map +1 -0
- package/dist/client/MessageClient.d.ts +67 -0
- package/dist/client/MessageClient.d.ts.map +1 -0
- package/dist/client/MessageClient.js +108 -0
- package/dist/client/MessageClient.js.map +1 -0
- package/dist/client/MessagePartClient.d.ts +21 -0
- package/dist/client/MessagePartClient.d.ts.map +1 -0
- package/dist/client/MessagePartClient.js +25 -0
- package/dist/client/MessagePartClient.js.map +1 -0
- package/dist/client/ThreadClient.d.ts +111 -0
- package/dist/client/ThreadClient.d.ts.map +1 -0
- package/dist/client/ThreadClient.js +126 -0
- package/dist/client/ThreadClient.js.map +1 -0
- package/dist/client/ThreadListClient.d.ts +33 -0
- package/dist/client/ThreadListClient.d.ts.map +1 -0
- package/dist/client/ThreadListClient.js +87 -0
- package/dist/client/ThreadListClient.js.map +1 -0
- package/dist/client/ThreadListItemClient.d.ts +32 -0
- package/dist/client/ThreadListItemClient.d.ts.map +1 -0
- package/dist/client/ThreadListItemClient.js +53 -0
- package/dist/client/ThreadListItemClient.js.map +1 -0
- package/dist/client/util-hooks/tapLookupResources.d.ts +16 -0
- package/dist/client/util-hooks/tapLookupResources.d.ts.map +1 -0
- package/dist/client/util-hooks/tapLookupResources.js +21 -0
- package/dist/client/util-hooks/tapLookupResources.js.map +1 -0
- package/dist/client/util-hooks/tapSubscribable.d.ts +3 -0
- package/dist/client/util-hooks/tapSubscribable.d.ts.map +1 -0
- package/dist/client/util-hooks/tapSubscribable.js +16 -0
- package/dist/client/util-hooks/tapSubscribable.js.map +1 -0
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.js +21 -12
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/context/providers/AssistantRuntimeProvider.d.ts +3 -3
- package/dist/context/providers/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/context/providers/AssistantRuntimeProvider.js +14 -42
- package/dist/context/providers/AssistantRuntimeProvider.js.map +1 -1
- package/dist/context/providers/AttachmentProvider.d.ts +8 -0
- package/dist/context/providers/AttachmentProvider.d.ts.map +1 -0
- package/dist/context/providers/AttachmentProvider.js +41 -0
- package/dist/context/providers/AttachmentProvider.js.map +1 -0
- package/dist/context/providers/MessageProvider.d.ts +5 -0
- package/dist/context/providers/MessageProvider.d.ts.map +1 -0
- package/dist/context/providers/MessageProvider.js +47 -0
- package/dist/context/providers/MessageProvider.js.map +1 -0
- package/dist/context/providers/PartProvider.d.ts +5 -0
- package/dist/context/providers/PartProvider.d.ts.map +1 -0
- package/dist/context/providers/PartProvider.js +27 -0
- package/dist/context/providers/PartProvider.js.map +1 -0
- package/dist/context/providers/TextMessagePartProvider.d.ts +5 -8
- package/dist/context/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/context/providers/TextMessagePartProvider.js +42 -53
- package/dist/context/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/context/providers/ThreadListItemProvider.d.ts +9 -0
- package/dist/context/providers/ThreadListItemProvider.d.ts.map +1 -0
- package/dist/context/providers/ThreadListItemProvider.js +65 -0
- package/dist/context/providers/ThreadListItemProvider.js.map +1 -0
- package/dist/context/providers/index.d.ts +4 -1
- package/dist/context/providers/index.d.ts.map +1 -1
- package/dist/context/providers/index.js +17 -3
- package/dist/context/providers/index.js.map +1 -1
- package/dist/context/react/AssistantApiContext.d.ts +112 -0
- package/dist/context/react/AssistantApiContext.d.ts.map +1 -0
- package/dist/context/react/AssistantApiContext.js +197 -0
- package/dist/context/react/AssistantApiContext.js.map +1 -0
- package/dist/context/react/index.d.ts +9 -12
- package/dist/context/react/index.d.ts.map +1 -1
- package/dist/context/react/index.js +38 -33
- package/dist/context/react/index.js.map +1 -1
- package/dist/context/react/legacy/AssistantContext.d.ts +58 -0
- package/dist/context/react/legacy/AssistantContext.d.ts.map +1 -0
- package/dist/context/react/legacy/AssistantContext.js +20 -0
- package/dist/context/react/legacy/AssistantContext.js.map +1 -0
- package/dist/context/react/{AttachmentContext.d.ts → legacy/AttachmentContext.d.ts} +133 -139
- package/dist/context/react/legacy/AttachmentContext.d.ts.map +1 -0
- package/dist/context/react/{AttachmentContext.js → legacy/AttachmentContext.js} +9 -15
- package/dist/context/react/legacy/AttachmentContext.js.map +1 -0
- package/dist/context/react/{ComposerContext.d.ts → legacy/ComposerContext.d.ts} +12 -12
- package/dist/context/react/legacy/ComposerContext.d.ts.map +1 -0
- package/dist/context/react/legacy/ComposerContext.js +19 -0
- package/dist/context/react/legacy/ComposerContext.js.map +1 -0
- package/dist/context/react/{MessageContext.d.ts → legacy/MessageContext.d.ts} +23 -47
- package/dist/context/react/legacy/MessageContext.d.ts.map +1 -0
- package/dist/context/react/legacy/MessageContext.js +24 -0
- package/dist/context/react/legacy/MessageContext.js.map +1 -0
- package/dist/context/react/legacy/MessagePartContext.d.ts +35 -0
- package/dist/context/react/legacy/MessagePartContext.d.ts.map +1 -0
- package/dist/context/react/legacy/MessagePartContext.js +19 -0
- package/dist/context/react/legacy/MessagePartContext.js.map +1 -0
- package/dist/context/react/{ThreadContext.d.ts → legacy/ThreadContext.d.ts} +24 -30
- package/dist/context/react/legacy/ThreadContext.d.ts.map +1 -0
- package/dist/context/react/legacy/ThreadContext.js +33 -0
- package/dist/context/react/legacy/ThreadContext.js.map +1 -0
- package/dist/context/react/legacy/ThreadListItemContext.d.ts +35 -0
- package/dist/context/react/legacy/ThreadListItemContext.d.ts.map +1 -0
- package/dist/context/react/legacy/ThreadListItemContext.js +21 -0
- package/dist/context/react/legacy/ThreadListItemContext.js.map +1 -0
- package/dist/context/stores/index.d.ts +0 -2
- package/dist/context/stores/index.d.ts.map +1 -1
- package/dist/hooks/useAssistantEvent.d.ts +3 -0
- package/dist/hooks/useAssistantEvent.d.ts.map +1 -0
- package/dist/hooks/useAssistantEvent.js +22 -0
- package/dist/hooks/useAssistantEvent.js.map +1 -0
- package/dist/model-context/makeAssistantVisible.js +4 -4
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/model-context/useAssistantInstructions.js +4 -4
- package/dist/model-context/useAssistantInstructions.js.map +1 -1
- package/dist/model-context/useAssistantTool.d.ts.map +1 -1
- package/dist/model-context/useAssistantTool.js +7 -10
- package/dist/model-context/useAssistantTool.js.map +1 -1
- package/dist/model-context/useAssistantToolUI.js +5 -5
- package/dist/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js +12 -17
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js +5 -5
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +6 -7
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +6 -6
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js +6 -10
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.js +6 -6
- package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js +5 -8
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
- package/dist/primitives/actionBar/useActionBarFloatStatus.d.ts.map +1 -1
- package/dist/primitives/actionBar/useActionBarFloatStatus.js +10 -21
- package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js +4 -4
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
- package/dist/primitives/attachment/AttachmentName.js +2 -2
- package/dist/primitives/attachment/AttachmentName.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRemove.js +4 -4
- package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.d.ts.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js +5 -2
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerCount.js +2 -2
- package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.js +7 -8
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNumber.js +2 -2
- package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.js +7 -8
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.js +6 -6
- package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.js +4 -4
- package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
- package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAttachments.js +11 -13
- package/dist/primitives/composer/ComposerAttachments.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.js +5 -5
- package/dist/primitives/composer/ComposerCancel.js.map +1 -1
- package/dist/primitives/composer/ComposerIf.js +2 -2
- package/dist/primitives/composer/ComposerIf.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +22 -32
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerSend.js +6 -10
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
- package/dist/primitives/error/ErrorMessage.js +3 -3
- package/dist/primitives/error/ErrorMessage.js.map +1 -1
- package/dist/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/primitives/message/MessageAttachments.js +9 -11
- package/dist/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/primitives/message/MessageError.d.ts.map +1 -1
- package/dist/primitives/message/MessageError.js +3 -3
- package/dist/primitives/message/MessageError.js.map +1 -1
- package/dist/primitives/message/MessageIf.d.ts.map +1 -1
- package/dist/primitives/message/MessageIf.js +28 -34
- package/dist/primitives/message/MessageIf.js.map +1 -1
- package/dist/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/primitives/message/MessageParts.js +25 -27
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +24 -26
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
- package/dist/primitives/message/MessageRoot.js +8 -7
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartInProgress.d.ts.map +1 -1
- package/dist/primitives/messagePart/MessagePartInProgress.js +4 -2
- package/dist/primitives/messagePart/MessagePartInProgress.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartFile.js +4 -4
- package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartImage.js +4 -4
- package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartReasoning.js +4 -4
- package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartSource.js +4 -4
- package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartText.js +4 -4
- package/dist/primitives/messagePart/useMessagePartText.js.map +1 -1
- package/dist/primitives/thread/ThreadEmpty.js +2 -2
- package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
- package/dist/primitives/thread/ThreadIf.js +2 -2
- package/dist/primitives/thread/ThreadIf.js.map +1 -1
- package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadMessages.js +9 -12
- package/dist/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.js +8 -8
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +3 -6
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListItems.js +7 -10
- package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.d.ts +1 -3
- package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.js +7 -11
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.js +4 -4
- package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.js +6 -5
- package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.js +4 -2
- package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTitle.js +2 -2
- package/dist/primitives/threadListItem/ThreadListItemTitle.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js +6 -5
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +6 -5
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
- package/dist/runtimes/adapters/RuntimeAdapterProvider.d.ts +2 -0
- package/dist/runtimes/adapters/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/runtimes/adapters/RuntimeAdapterProvider.js.map +1 -1
- package/dist/runtimes/adapters/attachment/CloudFileAttachmentAdapter.d.ts +15 -0
- package/dist/runtimes/adapters/attachment/CloudFileAttachmentAdapter.d.ts.map +1 -0
- package/dist/runtimes/adapters/attachment/CloudFileAttachmentAdapter.js +83 -0
- package/dist/runtimes/adapters/attachment/CloudFileAttachmentAdapter.js.map +1 -0
- package/dist/runtimes/adapters/attachment/index.d.ts +1 -0
- package/dist/runtimes/adapters/attachment/index.d.ts.map +1 -1
- package/dist/runtimes/adapters/attachment/index.js +2 -0
- package/dist/runtimes/adapters/attachment/index.js.map +1 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts +1 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.js +3 -3
- package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.js +5 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/ComposerRuntimeCore.d.ts +2 -2
- package/dist/runtimes/core/ComposerRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +5 -5
- package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +5 -2
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +6 -4
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +42 -7
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +3 -0
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/createMessageConverter.d.ts +2 -2
- package/dist/runtimes/external-store/createMessageConverter.d.ts.map +1 -1
- package/dist/runtimes/external-store/createMessageConverter.js +9 -6
- package/dist/runtimes/external-store/createMessageConverter.js.map +1 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +10 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js +15 -2
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js +3 -5
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js +13 -19
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +11 -7
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +41 -35
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.js +14 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -1
- package/dist/tests/setup.js +8 -8
- package/dist/tests/setup.js.map +1 -1
- package/dist/types/EventTypes.d.ts +49 -0
- package/dist/types/EventTypes.d.ts.map +1 -0
- package/dist/types/EventTypes.js +22 -0
- package/dist/types/EventTypes.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/smooth/SmoothContext.js +3 -3
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/dist/utils/smooth/useSmooth.d.ts.map +1 -1
- package/dist/utils/smooth/useSmooth.js +2 -5
- package/dist/utils/smooth/useSmooth.js.map +1 -1
- package/dist/utils/tap-store/index.d.ts +3 -0
- package/dist/utils/tap-store/index.d.ts.map +1 -0
- package/dist/utils/tap-store/index.js +8 -0
- package/dist/utils/tap-store/index.js.map +1 -0
- package/dist/utils/tap-store/store.d.ts +21 -0
- package/dist/utils/tap-store/store.d.ts.map +1 -0
- package/dist/utils/tap-store/store.js +29 -0
- package/dist/utils/tap-store/store.js.map +1 -0
- package/dist/utils/tap-store/tap-store-api.d.ts +8 -0
- package/dist/utils/tap-store/tap-store-api.d.ts.map +1 -0
- package/dist/utils/tap-store/tap-store-api.js +57 -0
- package/dist/utils/tap-store/tap-store-api.js.map +1 -0
- package/dist/utils/useToolArgsFieldStatus.js +6 -6
- package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
- package/package.json +2 -1
- package/src/api/AttachmentRuntime.ts +3 -1
- package/src/api/ComposerRuntime.ts +16 -9
- package/src/api/MessagePartRuntime.ts +3 -1
- package/src/api/MessageRuntime.ts +2 -0
- package/src/api/ThreadListItemRuntime.ts +11 -1
- package/src/api/ThreadListRuntime.ts +9 -9
- package/src/api/ThreadRuntime.ts +9 -7
- package/src/client/AssistantRuntimeClient.ts +197 -0
- package/src/client/AttachmentClient.ts +11 -0
- package/src/client/ComposerClient.ts +133 -0
- package/src/client/EventManagerClient.ts +63 -0
- package/src/client/MessageClient.ts +196 -0
- package/src/client/MessagePartClient.ts +53 -0
- package/src/client/ThreadClient.ts +280 -0
- package/src/client/ThreadListClient.ts +135 -0
- package/src/client/ThreadListItemClient.ts +88 -0
- package/src/client/util-hooks/tapLookupResources.ts +31 -0
- package/src/client/util-hooks/tapSubscribable.ts +16 -0
- package/src/cloud/AssistantCloudThreadHistoryAdapter.tsx +24 -13
- package/src/context/providers/AssistantRuntimeProvider.tsx +27 -51
- package/src/context/providers/AttachmentProvider.tsx +48 -0
- package/src/context/providers/MessageProvider.tsx +57 -0
- package/src/context/providers/PartProvider.tsx +28 -0
- package/src/context/providers/TextMessagePartProvider.tsx +53 -78
- package/src/context/providers/ThreadListItemProvider.tsx +84 -0
- package/src/context/providers/index.ts +10 -3
- package/src/context/react/AssistantApiContext.tsx +392 -0
- package/src/context/react/index.ts +30 -37
- package/src/context/react/{AssistantContext.ts → legacy/AssistantContext.ts} +12 -31
- package/src/context/react/{AttachmentContext.ts → legacy/AttachmentContext.ts} +11 -22
- package/src/context/react/{ComposerContext.ts → legacy/ComposerContext.ts} +11 -9
- package/src/context/react/{MessageContext.ts → legacy/MessageContext.ts} +12 -29
- package/src/context/react/legacy/MessagePartContext.ts +24 -0
- package/src/context/react/{ThreadContext.ts → legacy/ThreadContext.ts} +15 -25
- package/src/context/react/legacy/ThreadListItemContext.ts +28 -0
- package/src/context/stores/index.ts +0 -2
- package/src/hooks/useAssistantEvent.ts +24 -0
- package/src/model-context/makeAssistantVisible.tsx +4 -4
- package/src/model-context/useAssistantInstructions.tsx +4 -4
- package/src/model-context/useAssistantTool.tsx +7 -12
- package/src/model-context/useAssistantToolUI.tsx +5 -5
- package/src/primitives/actionBar/ActionBarCopy.tsx +14 -20
- package/src/primitives/actionBar/ActionBarEdit.tsx +5 -5
- package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +6 -7
- package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +6 -6
- package/src/primitives/actionBar/ActionBarReload.tsx +9 -10
- package/src/primitives/actionBar/ActionBarSpeak.tsx +7 -7
- package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +5 -8
- package/src/primitives/actionBar/useActionBarFloatStatus.tsx +22 -34
- package/src/primitives/assistantModal/AssistantModalRoot.tsx +4 -4
- package/src/primitives/attachment/AttachmentName.tsx +2 -2
- package/src/primitives/attachment/AttachmentRemove.tsx +4 -4
- package/src/primitives/attachment/AttachmentThumb.tsx +5 -2
- package/src/primitives/branchPicker/BranchPickerCount.tsx +2 -2
- package/src/primitives/branchPicker/BranchPickerNext.tsx +7 -8
- package/src/primitives/branchPicker/BranchPickerNumber.tsx +2 -2
- package/src/primitives/branchPicker/BranchPickerPrevious.tsx +7 -8
- package/src/primitives/composer/ComposerAddAttachment.tsx +6 -6
- package/src/primitives/composer/ComposerAttachmentDropzone.tsx +4 -4
- package/src/primitives/composer/ComposerAttachments.tsx +12 -15
- package/src/primitives/composer/ComposerCancel.tsx +5 -5
- package/src/primitives/composer/ComposerIf.tsx +2 -2
- package/src/primitives/composer/ComposerInput.tsx +32 -32
- package/src/primitives/composer/ComposerSend.tsx +6 -10
- package/src/primitives/error/ErrorMessage.tsx +5 -4
- package/src/primitives/message/MessageAttachments.tsx +10 -13
- package/src/primitives/message/MessageError.tsx +5 -3
- package/src/primitives/message/MessageIf.tsx +43 -52
- package/src/primitives/message/MessageParts.tsx +26 -31
- package/src/primitives/message/MessagePartsGrouped.tsx +25 -30
- package/src/primitives/message/MessageRoot.tsx +10 -8
- package/src/primitives/messagePart/MessagePartInProgress.tsx +4 -2
- package/src/primitives/messagePart/useMessagePartFile.tsx +4 -4
- package/src/primitives/messagePart/useMessagePartImage.tsx +4 -4
- package/src/primitives/messagePart/useMessagePartReasoning.tsx +4 -4
- package/src/primitives/messagePart/useMessagePartSource.tsx +4 -4
- package/src/primitives/messagePart/useMessagePartText.tsx +4 -4
- package/src/primitives/thread/ThreadEmpty.tsx +2 -2
- package/src/primitives/thread/ThreadIf.tsx +2 -2
- package/src/primitives/thread/ThreadMessages.tsx +10 -14
- package/src/primitives/thread/ThreadSuggestion.tsx +8 -8
- package/src/primitives/thread/useThreadViewportAutoScroll.tsx +3 -6
- package/src/primitives/threadList/ThreadListItems.tsx +8 -15
- package/src/primitives/threadList/ThreadListNew.tsx +9 -13
- package/src/primitives/threadListItem/ThreadListItemArchive.ts +4 -4
- package/src/primitives/threadListItem/ThreadListItemDelete.ts +6 -5
- package/src/primitives/threadListItem/ThreadListItemRoot.tsx +4 -2
- package/src/primitives/threadListItem/ThreadListItemTitle.tsx +2 -2
- package/src/primitives/threadListItem/ThreadListItemTrigger.ts +6 -5
- package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +6 -5
- package/src/runtimes/adapters/RuntimeAdapterProvider.tsx +2 -0
- package/src/runtimes/adapters/attachment/CloudFileAttachmentAdapter.ts +101 -0
- package/src/runtimes/adapters/attachment/index.ts +1 -0
- package/src/runtimes/composer/BaseComposerRuntimeCore.tsx +3 -3
- package/src/runtimes/core/BaseThreadRuntimeCore.tsx +5 -1
- package/src/runtimes/core/ComposerRuntimeCore.tsx +2 -2
- package/src/runtimes/core/ThreadListRuntimeCore.tsx +6 -4
- package/src/runtimes/external-store/ExternalStoreAdapter.tsx +5 -2
- package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +53 -12
- package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +4 -0
- package/src/runtimes/external-store/createMessageConverter.tsx +10 -6
- package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +16 -2
- package/src/runtimes/remote-thread-list/EMPTY_THREAD_CORE.tsx +3 -6
- package/src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx +14 -19
- package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +50 -43
- package/src/runtimes/remote-thread-list/adapter/cloud.tsx +16 -1
- package/src/types/EventTypes.ts +92 -0
- package/src/types/index.ts +6 -0
- package/src/utils/smooth/SmoothContext.tsx +3 -3
- package/src/utils/smooth/useSmooth.tsx +2 -5
- package/src/utils/tap-store/index.ts +2 -0
- package/src/utils/tap-store/store.ts +51 -0
- package/src/utils/tap-store/tap-store-api.ts +75 -0
- package/src/utils/useToolArgsFieldStatus.tsx +6 -6
- package/dist/context/providers/AttachmentRuntimeProvider.d.ts +0 -9
- package/dist/context/providers/AttachmentRuntimeProvider.d.ts.map +0 -1
- package/dist/context/providers/AttachmentRuntimeProvider.js +0 -33
- package/dist/context/providers/AttachmentRuntimeProvider.js.map +0 -1
- package/dist/context/providers/MessagePartRuntimeProvider.d.ts +0 -9
- package/dist/context/providers/MessagePartRuntimeProvider.d.ts.map +0 -1
- package/dist/context/providers/MessagePartRuntimeProvider.js +0 -28
- package/dist/context/providers/MessagePartRuntimeProvider.js.map +0 -1
- package/dist/context/providers/MessageRuntimeProvider.d.ts +0 -9
- package/dist/context/providers/MessageRuntimeProvider.d.ts.map +0 -1
- package/dist/context/providers/MessageRuntimeProvider.js +0 -37
- package/dist/context/providers/MessageRuntimeProvider.js.map +0 -1
- package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts +0 -9
- package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts.map +0 -1
- package/dist/context/providers/ThreadListItemRuntimeProvider.js +0 -30
- package/dist/context/providers/ThreadListItemRuntimeProvider.js.map +0 -1
- package/dist/context/providers/ThreadRuntimeProvider.d.ts +0 -10
- package/dist/context/providers/ThreadRuntimeProvider.d.ts.map +0 -1
- package/dist/context/providers/ThreadRuntimeProvider.js +0 -33
- package/dist/context/providers/ThreadRuntimeProvider.js.map +0 -1
- package/dist/context/react/AssistantContext.d.ts +0 -85
- package/dist/context/react/AssistantContext.d.ts.map +0 -1
- package/dist/context/react/AssistantContext.js +0 -34
- package/dist/context/react/AssistantContext.js.map +0 -1
- package/dist/context/react/AttachmentContext.d.ts.map +0 -1
- package/dist/context/react/AttachmentContext.js.map +0 -1
- package/dist/context/react/ComposerContext.d.ts.map +0 -1
- package/dist/context/react/ComposerContext.js +0 -17
- package/dist/context/react/ComposerContext.js.map +0 -1
- package/dist/context/react/MessageContext.d.ts.map +0 -1
- package/dist/context/react/MessageContext.js +0 -35
- package/dist/context/react/MessageContext.js.map +0 -1
- package/dist/context/react/MessagePartContext.d.ts +0 -41
- package/dist/context/react/MessagePartContext.d.ts.map +0 -1
- package/dist/context/react/MessagePartContext.js +0 -25
- package/dist/context/react/MessagePartContext.js.map +0 -1
- package/dist/context/react/ThreadContext.d.ts.map +0 -1
- package/dist/context/react/ThreadContext.js +0 -38
- package/dist/context/react/ThreadContext.js.map +0 -1
- package/dist/context/react/ThreadListItemContext.d.ts +0 -41
- package/dist/context/react/ThreadListItemContext.d.ts.map +0 -1
- package/dist/context/react/ThreadListItemContext.js +0 -25
- package/dist/context/react/ThreadListItemContext.js.map +0 -1
- package/dist/context/stores/AssistantToolUIs.d.ts +0 -14
- package/dist/context/stores/AssistantToolUIs.d.ts.map +0 -1
- package/dist/context/stores/AssistantToolUIs.js +0 -35
- package/dist/context/stores/AssistantToolUIs.js.map +0 -1
- package/dist/context/stores/MessageUtils.d.ts +0 -8
- package/dist/context/stores/MessageUtils.d.ts.map +0 -1
- package/dist/context/stores/MessageUtils.js +0 -18
- package/dist/context/stores/MessageUtils.js.map +0 -1
- package/dist/utils/combined/createCombinedStore.d.ts +0 -8
- package/dist/utils/combined/createCombinedStore.d.ts.map +0 -1
- package/dist/utils/combined/createCombinedStore.js +0 -22
- package/dist/utils/combined/createCombinedStore.js.map +0 -1
- package/dist/utils/combined/useCombinedStore.d.ts +0 -3
- package/dist/utils/combined/useCombinedStore.d.ts.map +0 -1
- package/dist/utils/combined/useCombinedStore.js +0 -15
- package/dist/utils/combined/useCombinedStore.js.map +0 -1
- package/src/context/providers/AttachmentRuntimeProvider.tsx +0 -44
- package/src/context/providers/MessagePartRuntimeProvider.tsx +0 -42
- package/src/context/providers/MessageRuntimeProvider.tsx +0 -50
- package/src/context/providers/ThreadListItemRuntimeProvider.tsx +0 -43
- package/src/context/providers/ThreadRuntimeProvider.tsx +0 -53
- package/src/context/react/MessagePartContext.ts +0 -37
- package/src/context/react/ThreadListItemContext.ts +0 -38
- package/src/context/stores/AssistantToolUIs.ts +0 -51
- package/src/context/stores/MessageUtils.ts +0 -23
- package/src/utils/combined/createCombinedStore.ts +0 -31
- package/src/utils/combined/useCombinedStore.ts +0 -17
@@ -11,14 +11,9 @@ import {
|
|
11
11
|
useRef
|
12
12
|
} from "react";
|
13
13
|
import TextareaAutosize from "react-textarea-autosize";
|
14
|
-
import {
|
15
|
-
useComposer,
|
16
|
-
useComposerRuntime
|
17
|
-
} from "../../context/react/ComposerContext.js";
|
18
|
-
import { useThread, useThreadRuntime } from "../../context/react/ThreadContext.js";
|
19
14
|
import { useEscapeKeydown } from "@radix-ui/react-use-escape-keydown";
|
20
15
|
import { useOnScrollToBottom } from "../../utils/hooks/useOnScrollToBottom.js";
|
21
|
-
import {
|
16
|
+
import { useAssistantState, useAssistantApi } from "../../context/index.js";
|
22
17
|
import { jsx } from "react/jsx-runtime";
|
23
18
|
var ComposerPrimitiveInput = forwardRef(
|
24
19
|
({
|
@@ -36,21 +31,20 @@ var ComposerPrimitiveInput = forwardRef(
|
|
36
31
|
addAttachmentOnPaste = true,
|
37
32
|
...rest
|
38
33
|
}, forwardedRef) => {
|
39
|
-
const
|
40
|
-
const
|
41
|
-
|
42
|
-
|
43
|
-
if (!c.isEditing) return "";
|
44
|
-
return c.text;
|
34
|
+
const api = useAssistantApi();
|
35
|
+
const value = useAssistantState(({ composer }) => {
|
36
|
+
if (!composer.isEditing) return "";
|
37
|
+
return composer.text;
|
45
38
|
});
|
46
39
|
const Component = asChild ? Slot : TextareaAutosize;
|
47
|
-
const isDisabled =
|
40
|
+
const isDisabled = useAssistantState(({ thread }) => thread.isDisabled) || disabledProp;
|
48
41
|
const textareaRef = useRef(null);
|
49
42
|
const ref = useComposedRefs(forwardedRef, textareaRef);
|
50
43
|
useEscapeKeydown((e) => {
|
51
44
|
if (!cancelOnEscape) return;
|
52
|
-
|
53
|
-
|
45
|
+
const composer = api.composer();
|
46
|
+
if (composer.getState().canCancel) {
|
47
|
+
composer.cancel();
|
54
48
|
e.preventDefault();
|
55
49
|
}
|
56
50
|
});
|
@@ -58,7 +52,7 @@ var ComposerPrimitiveInput = forwardRef(
|
|
58
52
|
if (isDisabled || !submitOnEnter) return;
|
59
53
|
if (e.nativeEvent.isComposing) return;
|
60
54
|
if (e.key === "Enter" && e.shiftKey === false) {
|
61
|
-
const
|
55
|
+
const isRunning = api.thread().getState().isRunning;
|
62
56
|
if (!isRunning) {
|
63
57
|
e.preventDefault();
|
64
58
|
textareaRef.current?.closest("form")?.requestSubmit();
|
@@ -67,13 +61,13 @@ var ComposerPrimitiveInput = forwardRef(
|
|
67
61
|
};
|
68
62
|
const handlePaste = async (e) => {
|
69
63
|
if (!addAttachmentOnPaste) return;
|
70
|
-
const threadCapabilities =
|
64
|
+
const threadCapabilities = api.thread().getState().capabilities;
|
71
65
|
const files = Array.from(e.clipboardData?.files || []);
|
72
66
|
if (threadCapabilities.attachments && files.length > 0) {
|
73
67
|
try {
|
74
68
|
e.preventDefault();
|
75
69
|
await Promise.all(
|
76
|
-
files.map((file) =>
|
70
|
+
files.map((file) => api.composer().addAttachment(file))
|
77
71
|
);
|
78
72
|
} catch (error) {
|
79
73
|
console.error("Error adding attachment:", error);
|
@@ -89,25 +83,20 @@ var ComposerPrimitiveInput = forwardRef(
|
|
89
83
|
}, [autoFocusEnabled]);
|
90
84
|
useEffect(() => focus(), [focus]);
|
91
85
|
useOnScrollToBottom(() => {
|
92
|
-
if (
|
86
|
+
if (api.composer().getState().type === "thread" && unstable_focusOnScrollToBottom) {
|
93
87
|
focus();
|
94
88
|
}
|
95
89
|
});
|
96
90
|
useEffect(() => {
|
97
|
-
if (
|
91
|
+
if (api.composer().getState().type !== "thread" || !unstable_focusOnRunStart)
|
98
92
|
return void 0;
|
99
|
-
return
|
100
|
-
}, [unstable_focusOnRunStart, focus,
|
93
|
+
return api.on("thread.run-start", focus);
|
94
|
+
}, [unstable_focusOnRunStart, focus, api]);
|
101
95
|
useEffect(() => {
|
102
|
-
if (
|
96
|
+
if (api.composer().getState().type !== "thread" || !unstable_focusOnThreadSwitched)
|
103
97
|
return void 0;
|
104
|
-
return
|
105
|
-
}, [
|
106
|
-
unstable_focusOnThreadSwitched,
|
107
|
-
focus,
|
108
|
-
composerRuntime,
|
109
|
-
threadListItemRuntime
|
110
|
-
]);
|
98
|
+
return api.on("thread-list-item.switched-to", focus);
|
99
|
+
}, [unstable_focusOnThreadSwitched, focus, api]);
|
111
100
|
return /* @__PURE__ */ jsx(
|
112
101
|
Component,
|
113
102
|
{
|
@@ -117,8 +106,9 @@ var ComposerPrimitiveInput = forwardRef(
|
|
117
106
|
ref,
|
118
107
|
disabled: isDisabled,
|
119
108
|
onChange: composeEventHandlers(onChange, (e) => {
|
120
|
-
if (!
|
121
|
-
|
109
|
+
if (!api.composer().getState().isEditing) return;
|
110
|
+
api.composer().setText(e.target.value);
|
111
|
+
api.flushSync();
|
122
112
|
}),
|
123
113
|
onKeyDown: composeEventHandlers(onKeyDown, handleKeyPress),
|
124
114
|
onPaste: composeEventHandlers(onPaste, handlePaste)
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ClipboardEvent,\n type KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport TextareaAutosize, {\n type TextareaAutosizeProps,\n} from \"react-textarea-autosize\";\nimport {
|
1
|
+
{"version":3,"sources":["../../../src/primitives/composer/ComposerInput.tsx"],"sourcesContent":["\"use client\";\n\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport {\n ClipboardEvent,\n type KeyboardEvent,\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n} from \"react\";\nimport TextareaAutosize, {\n type TextareaAutosizeProps,\n} from \"react-textarea-autosize\";\nimport { useEscapeKeydown } from \"@radix-ui/react-use-escape-keydown\";\nimport { useOnScrollToBottom } from \"../../utils/hooks/useOnScrollToBottom\";\nimport { useAssistantState, useAssistantApi } from \"../../context\";\n\nexport namespace ComposerPrimitiveInput {\n export type Element = HTMLTextAreaElement;\n export type Props = TextareaAutosizeProps & {\n /**\n * Whether to render as a child component using Slot.\n * When true, the component will merge its props with its child.\n */\n asChild?: boolean | undefined;\n /**\n * Whether to submit the message when Enter is pressed (without Shift).\n * @default true\n */\n submitOnEnter?: boolean | undefined;\n /**\n * Whether to cancel message composition when Escape is pressed.\n * @default true\n */\n cancelOnEscape?: boolean | undefined;\n /**\n * Whether to automatically focus the input when a new run starts.\n * @default true\n */\n unstable_focusOnRunStart?: boolean | undefined;\n /**\n * Whether to automatically focus the input when scrolling to bottom.\n * @default true\n */\n unstable_focusOnScrollToBottom?: boolean | undefined;\n /**\n * Whether to automatically focus the input when switching threads.\n * @default true\n */\n unstable_focusOnThreadSwitched?: boolean | undefined;\n /**\n * Whether to automatically add pasted files as attachments.\n * @default true\n */\n addAttachmentOnPaste?: boolean | undefined;\n };\n}\n\n/**\n * A text input component for composing messages.\n *\n * This component provides a rich text input experience with automatic resizing,\n * keyboard shortcuts, file paste support, and intelligent focus management.\n * It integrates with the composer context to manage message state and submission.\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Input\n * placeholder=\"Type your message...\"\n * submitOnEnter={true}\n * addAttachmentOnPaste={true}\n * />\n * ```\n */\nexport const ComposerPrimitiveInput = forwardRef<\n ComposerPrimitiveInput.Element,\n ComposerPrimitiveInput.Props\n>(\n (\n {\n autoFocus = false,\n asChild,\n disabled: disabledProp,\n onChange,\n onKeyDown,\n onPaste,\n submitOnEnter = true,\n cancelOnEscape = true,\n unstable_focusOnRunStart = true,\n unstable_focusOnScrollToBottom = true,\n unstable_focusOnThreadSwitched = true,\n addAttachmentOnPaste = true,\n ...rest\n },\n forwardedRef,\n ) => {\n const api = useAssistantApi();\n\n const value = useAssistantState(({ composer }) => {\n if (!composer.isEditing) return \"\";\n return composer.text;\n });\n\n const Component = asChild ? Slot : TextareaAutosize;\n\n const isDisabled =\n useAssistantState(({ thread }) => thread.isDisabled) || disabledProp;\n const textareaRef = useRef<HTMLTextAreaElement>(null);\n const ref = useComposedRefs(forwardedRef, textareaRef);\n\n useEscapeKeydown((e) => {\n if (!cancelOnEscape) return;\n\n const composer = api.composer();\n if (composer.getState().canCancel) {\n composer.cancel();\n e.preventDefault();\n }\n });\n\n const handleKeyPress = (e: KeyboardEvent) => {\n if (isDisabled || !submitOnEnter) return;\n\n // ignore IME composition events\n if (e.nativeEvent.isComposing) return;\n\n if (e.key === \"Enter\" && e.shiftKey === false) {\n const isRunning = api.thread().getState().isRunning;\n\n if (!isRunning) {\n e.preventDefault();\n\n textareaRef.current?.closest(\"form\")?.requestSubmit();\n }\n }\n };\n\n const handlePaste = async (e: ClipboardEvent<HTMLTextAreaElement>) => {\n if (!addAttachmentOnPaste) return;\n const threadCapabilities = api.thread().getState().capabilities;\n const files = Array.from(e.clipboardData?.files || []);\n\n if (threadCapabilities.attachments && files.length > 0) {\n try {\n e.preventDefault();\n await Promise.all(\n files.map((file) => api.composer().addAttachment(file)),\n );\n } catch (error) {\n console.error(\"Error adding attachment:\", error);\n }\n }\n };\n\n const autoFocusEnabled = autoFocus && !isDisabled;\n const focus = useCallback(() => {\n const textarea = textareaRef.current;\n if (!textarea || !autoFocusEnabled) return;\n\n textarea.focus({ preventScroll: true });\n textarea.setSelectionRange(textarea.value.length, textarea.value.length);\n }, [autoFocusEnabled]);\n\n useEffect(() => focus(), [focus]);\n\n useOnScrollToBottom(() => {\n if (\n api.composer().getState().type === \"thread\" &&\n unstable_focusOnScrollToBottom\n ) {\n focus();\n }\n });\n\n useEffect(() => {\n if (\n api.composer().getState().type !== \"thread\" ||\n !unstable_focusOnRunStart\n )\n return undefined;\n\n return api.on(\"thread.run-start\", focus);\n }, [unstable_focusOnRunStart, focus, api]);\n\n useEffect(() => {\n if (\n api.composer().getState().type !== \"thread\" ||\n !unstable_focusOnThreadSwitched\n )\n return undefined;\n\n return api.on(\"thread-list-item.switched-to\", focus);\n }, [unstable_focusOnThreadSwitched, focus, api]);\n\n return (\n <Component\n name=\"input\"\n value={value}\n {...rest}\n ref={ref as React.ForwardedRef<HTMLTextAreaElement>}\n disabled={isDisabled}\n onChange={composeEventHandlers(onChange, (e) => {\n if (!api.composer().getState().isEditing) return;\n api.composer().setText(e.target.value);\n api.flushSync();\n })}\n onKeyDown={composeEventHandlers(onKeyDown, handleKeyPress)}\n onPaste={composeEventHandlers(onPaste, handlePaste)}\n />\n );\n },\n);\n\nComposerPrimitiveInput.displayName = \"ComposerPrimitive.Input\";\n"],"mappings":";;;AAEA,SAAS,4BAA4B;AACrC,SAAS,uBAAuB;AAChC,SAAS,YAAY;AACrB;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,OAAO,sBAEA;AACP,SAAS,wBAAwB;AACjC,SAAS,2BAA2B;AACpC,SAAS,mBAAmB,uBAAuB;AAoL7C;AAzHC,IAAM,yBAAyB;AAAA,EAIpC,CACE;AAAA,IACE,YAAY;AAAA,IACZ;AAAA,IACA,UAAU;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA,gBAAgB;AAAA,IAChB,iBAAiB;AAAA,IACjB,2BAA2B;AAAA,IAC3B,iCAAiC;AAAA,IACjC,iCAAiC;AAAA,IACjC,uBAAuB;AAAA,IACvB,GAAG;AAAA,EACL,GACA,iBACG;AACH,UAAM,MAAM,gBAAgB;AAE5B,UAAM,QAAQ,kBAAkB,CAAC,EAAE,SAAS,MAAM;AAChD,UAAI,CAAC,SAAS,UAAW,QAAO;AAChC,aAAO,SAAS;AAAA,IAClB,CAAC;AAED,UAAM,YAAY,UAAU,OAAO;AAEnC,UAAM,aACJ,kBAAkB,CAAC,EAAE,OAAO,MAAM,OAAO,UAAU,KAAK;AAC1D,UAAM,cAAc,OAA4B,IAAI;AACpD,UAAM,MAAM,gBAAgB,cAAc,WAAW;AAErD,qBAAiB,CAAC,MAAM;AACtB,UAAI,CAAC,eAAgB;AAErB,YAAM,WAAW,IAAI,SAAS;AAC9B,UAAI,SAAS,SAAS,EAAE,WAAW;AACjC,iBAAS,OAAO;AAChB,UAAE,eAAe;AAAA,MACnB;AAAA,IACF,CAAC;AAED,UAAM,iBAAiB,CAAC,MAAqB;AAC3C,UAAI,cAAc,CAAC,cAAe;AAGlC,UAAI,EAAE,YAAY,YAAa;AAE/B,UAAI,EAAE,QAAQ,WAAW,EAAE,aAAa,OAAO;AAC7C,cAAM,YAAY,IAAI,OAAO,EAAE,SAAS,EAAE;AAE1C,YAAI,CAAC,WAAW;AACd,YAAE,eAAe;AAEjB,sBAAY,SAAS,QAAQ,MAAM,GAAG,cAAc;AAAA,QACtD;AAAA,MACF;AAAA,IACF;AAEA,UAAM,cAAc,OAAO,MAA2C;AACpE,UAAI,CAAC,qBAAsB;AAC3B,YAAM,qBAAqB,IAAI,OAAO,EAAE,SAAS,EAAE;AACnD,YAAM,QAAQ,MAAM,KAAK,EAAE,eAAe,SAAS,CAAC,CAAC;AAErD,UAAI,mBAAmB,eAAe,MAAM,SAAS,GAAG;AACtD,YAAI;AACF,YAAE,eAAe;AACjB,gBAAM,QAAQ;AAAA,YACZ,MAAM,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE,cAAc,IAAI,CAAC;AAAA,UACxD;AAAA,QACF,SAAS,OAAO;AACd,kBAAQ,MAAM,4BAA4B,KAAK;AAAA,QACjD;AAAA,MACF;AAAA,IACF;AAEA,UAAM,mBAAmB,aAAa,CAAC;AACvC,UAAM,QAAQ,YAAY,MAAM;AAC9B,YAAM,WAAW,YAAY;AAC7B,UAAI,CAAC,YAAY,CAAC,iBAAkB;AAEpC,eAAS,MAAM,EAAE,eAAe,KAAK,CAAC;AACtC,eAAS,kBAAkB,SAAS,MAAM,QAAQ,SAAS,MAAM,MAAM;AAAA,IACzE,GAAG,CAAC,gBAAgB,CAAC;AAErB,cAAU,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC;AAEhC,wBAAoB,MAAM;AACxB,UACE,IAAI,SAAS,EAAE,SAAS,EAAE,SAAS,YACnC,gCACA;AACA,cAAM;AAAA,MACR;AAAA,IACF,CAAC;AAED,cAAU,MAAM;AACd,UACE,IAAI,SAAS,EAAE,SAAS,EAAE,SAAS,YACnC,CAAC;AAED,eAAO;AAET,aAAO,IAAI,GAAG,oBAAoB,KAAK;AAAA,IACzC,GAAG,CAAC,0BAA0B,OAAO,GAAG,CAAC;AAEzC,cAAU,MAAM;AACd,UACE,IAAI,SAAS,EAAE,SAAS,EAAE,SAAS,YACnC,CAAC;AAED,eAAO;AAET,aAAO,IAAI,GAAG,gCAAgC,KAAK;AAAA,IACrD,GAAG,CAAC,gCAAgC,OAAO,GAAG,CAAC;AAE/C,WACE;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL;AAAA,QACC,GAAG;AAAA,QACJ;AAAA,QACA,UAAU;AAAA,QACV,UAAU,qBAAqB,UAAU,CAAC,MAAM;AAC9C,cAAI,CAAC,IAAI,SAAS,EAAE,SAAS,EAAE,UAAW;AAC1C,cAAI,SAAS,EAAE,QAAQ,EAAE,OAAO,KAAK;AACrC,cAAI,UAAU;AAAA,QAChB,CAAC;AAAA,QACD,WAAW,qBAAqB,WAAW,cAAc;AAAA,QACzD,SAAS,qBAAqB,SAAS,WAAW;AAAA;AAAA,IACpD;AAAA,EAEJ;AACF;AAEA,uBAAuB,cAAc;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ComposerSend.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerSend.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;
|
1
|
+
{"version":3,"file":"ComposerSend.d.ts","sourceRoot":"","sources":["../../../src/primitives/composer/ComposerSend.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,gCAAgC,CAAC;AAIxC,eAAO,MAAM,eAAe,2BAa3B,CAAC;AAEF,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,OAAO,GAAG,mBAAmB,CAAC;IAC1C;;;OAGG;IACH,KAAY,KAAK,GAAG,iBAAiB,CAAC,OAAO,eAAe,CAAC,CAAC;CAC/D;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB;;6DAGjC,CAAC"}
|
@@ -5,19 +5,15 @@ import {
|
|
5
5
|
createActionButton
|
6
6
|
} from "../../utils/createActionButton.js";
|
7
7
|
import { useCallback } from "react";
|
8
|
-
import {
|
9
|
-
import { useThreadRuntime } from "../../context/react/ThreadContext.js";
|
10
|
-
import { useComposerRuntime } from "../../context/index.js";
|
8
|
+
import { useAssistantState, useAssistantApi } from "../../context/index.js";
|
11
9
|
var useComposerSend = () => {
|
12
|
-
const
|
13
|
-
const
|
14
|
-
|
15
|
-
[threadRuntime, composerRuntime],
|
16
|
-
(t, c) => t.isRunning || !c.isEditing || c.isEmpty
|
10
|
+
const api = useAssistantApi();
|
11
|
+
const disabled = useAssistantState(
|
12
|
+
(s) => s.thread.isRunning || !s.composer.isEditing || s.composer.isEmpty
|
17
13
|
);
|
18
14
|
const callback = useCallback(() => {
|
19
|
-
|
20
|
-
}, [
|
15
|
+
api.composer().send();
|
16
|
+
}, [api]);
|
21
17
|
if (disabled) return null;
|
22
18
|
return callback;
|
23
19
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/primitives/composer/ComposerSend.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ActionButtonElement,\n ActionButtonProps,\n createActionButton,\n} from \"../../utils/createActionButton\";\nimport { useCallback } from \"react\";\nimport {
|
1
|
+
{"version":3,"sources":["../../../src/primitives/composer/ComposerSend.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ActionButtonElement,\n ActionButtonProps,\n createActionButton,\n} from \"../../utils/createActionButton\";\nimport { useCallback } from \"react\";\nimport { useAssistantState, useAssistantApi } from \"../../context\";\n\nexport const useComposerSend = () => {\n const api = useAssistantApi();\n\n const disabled = useAssistantState(\n (s) => s.thread.isRunning || !s.composer.isEditing || s.composer.isEmpty,\n );\n\n const callback = useCallback(() => {\n api.composer().send();\n }, [api]);\n\n if (disabled) return null;\n return callback;\n};\n\nexport namespace ComposerPrimitiveSend {\n export type Element = ActionButtonElement;\n /**\n * Props for the ComposerPrimitive.Send component.\n * Inherits all button element props and action button functionality.\n */\n export type Props = ActionButtonProps<typeof useComposerSend>;\n}\n\n/**\n * A button component that sends the current message in the composer.\n *\n * This component automatically handles the send functionality and is disabled\n * when sending is not available (e.g., when the thread is running, the composer\n * is empty, or not in editing mode).\n *\n * @example\n * ```tsx\n * <ComposerPrimitive.Send>\n * Send Message\n * </ComposerPrimitive.Send>\n * ```\n */\nexport const ComposerPrimitiveSend = createActionButton(\n \"ComposerPrimitive.Send\",\n useComposerSend,\n);\n"],"mappings":";;;AAEA;AAAA,EAGE;AAAA,OACK;AACP,SAAS,mBAAmB;AAC5B,SAAS,mBAAmB,uBAAuB;AAE5C,IAAM,kBAAkB,MAAM;AACnC,QAAM,MAAM,gBAAgB;AAE5B,QAAM,WAAW;AAAA,IACf,CAAC,MAAM,EAAE,OAAO,aAAa,CAAC,EAAE,SAAS,aAAa,EAAE,SAAS;AAAA,EACnE;AAEA,QAAM,WAAW,YAAY,MAAM;AACjC,QAAI,SAAS,EAAE,KAAK;AAAA,EACtB,GAAG,CAAC,GAAG,CAAC;AAER,MAAI,SAAU,QAAO;AACrB,SAAO;AACT;AAyBO,IAAM,wBAAwB;AAAA,EACnC;AAAA,EACA;AACF;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ErrorMessage.d.ts","sourceRoot":"","sources":["../../../src/primitives/error/ErrorMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAAc,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAGhF,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;CACrE;AAED,eAAO,MAAM,qBAAqB;;
|
1
|
+
{"version":3,"file":"ErrorMessage.d.ts","sourceRoot":"","sources":["../../../src/primitives/error/ErrorMessage.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAE,KAAK,YAAY,EAAc,wBAAwB,EAAE,MAAM,OAAO,CAAC;AAGhF,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,OAAO,GAAG,YAAY,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAC1D,KAAY,KAAK,GAAG,wBAAwB,CAAC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC;CACrE;AAED,eAAO,MAAM,qBAAqB;;2DAkBhC,CAAC"}
|
@@ -3,11 +3,11 @@
|
|
3
3
|
// src/primitives/error/ErrorMessage.tsx
|
4
4
|
import { Primitive } from "@radix-ui/react-primitive";
|
5
5
|
import { forwardRef } from "react";
|
6
|
-
import {
|
6
|
+
import { useAssistantState } from "../../context/index.js";
|
7
7
|
import { jsx } from "react/jsx-runtime";
|
8
8
|
var ErrorPrimitiveMessage = forwardRef(({ children, ...props }, forwardRef2) => {
|
9
|
-
const error =
|
10
|
-
return
|
9
|
+
const error = useAssistantState(({ message }) => {
|
10
|
+
return message.status?.type === "incomplete" && message.status.reason === "error" ? message.status.error : void 0;
|
11
11
|
});
|
12
12
|
if (error === void 0) return null;
|
13
13
|
return /* @__PURE__ */ jsx(Primitive.span, { ...props, ref: forwardRef2, children: children ?? String(error) });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/primitives/error/ErrorMessage.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { type ComponentRef, forwardRef, ComponentPropsWithoutRef } from \"react\";\nimport {
|
1
|
+
{"version":3,"sources":["../../../src/primitives/error/ErrorMessage.tsx"],"sourcesContent":["\"use client\";\n\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { type ComponentRef, forwardRef, ComponentPropsWithoutRef } from \"react\";\nimport { useAssistantState } from \"../../context\";\n\nexport namespace ErrorPrimitiveMessage {\n export type Element = ComponentRef<typeof Primitive.span>;\n export type Props = ComponentPropsWithoutRef<typeof Primitive.span>;\n}\n\nexport const ErrorPrimitiveMessage = forwardRef<\n ErrorPrimitiveMessage.Element,\n ErrorPrimitiveMessage.Props\n>(({ children, ...props }, forwardRef) => {\n const error = useAssistantState(({ message }) => {\n return message.status?.type === \"incomplete\" &&\n message.status.reason === \"error\"\n ? message.status.error\n : undefined;\n });\n\n if (error === undefined) return null;\n\n return (\n <Primitive.span {...props} ref={forwardRef}>\n {children ?? String(error)}\n </Primitive.span>\n );\n});\n\nErrorPrimitiveMessage.displayName = \"ErrorPrimitive.Message\";\n"],"mappings":";;;AAEA,SAAS,iBAAiB;AAC1B,SAA4B,kBAA4C;AACxE,SAAS,yBAAyB;AAqB9B;AAdG,IAAM,wBAAwB,WAGnC,CAAC,EAAE,UAAU,GAAG,MAAM,GAAGA,gBAAe;AACxC,QAAM,QAAQ,kBAAkB,CAAC,EAAE,QAAQ,MAAM;AAC/C,WAAO,QAAQ,QAAQ,SAAS,gBAC9B,QAAQ,OAAO,WAAW,UACxB,QAAQ,OAAO,QACf;AAAA,EACN,CAAC;AAED,MAAI,UAAU,OAAW,QAAO;AAEhC,SACE,oBAAC,UAAU,MAAV,EAAgB,GAAG,OAAO,KAAKA,aAC7B,sBAAY,OAAO,KAAK,GAC3B;AAEJ,CAAC;AAED,sBAAsB,cAAc;","names":["forwardRef"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MessageAttachments.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageAttachments.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,EAAiB,MAAM,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"MessageAttachments.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageAttachments.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,EAAiB,MAAM,OAAO,CAAC;AAO9D,yBAAiB,2BAA2B,CAAC;IAC3C,KAAY,KAAK,GAAG;QAClB,UAAU,EACN;YACE,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YAClC,QAAQ,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACrC,IAAI,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;YACjC,UAAU,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;SACxC,GACD,SAAS,CAAC;KACf,CAAC;CACH;AA+BD,yBAAiB,iCAAiC,CAAC;IACjD,KAAY,KAAK,GAAG;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,2BAA2B,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KAC9D,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iCAAiC,EAAE,EAAE,CAAC,iCAAiC,CAAC,KAAK,CAevF,CAAC;AAKJ,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAC1C,2BAA2B,CAAC,KAAK,CAkBlC,CAAC"}
|
@@ -2,9 +2,10 @@
|
|
2
2
|
|
3
3
|
// src/primitives/message/MessageAttachments.tsx
|
4
4
|
import { memo, useMemo } from "react";
|
5
|
-
import {
|
6
|
-
|
7
|
-
|
5
|
+
import {
|
6
|
+
useAssistantState,
|
7
|
+
MessageAttachmentByIndexProvider
|
8
|
+
} from "../../context/index.js";
|
8
9
|
import { jsx } from "react/jsx-runtime";
|
9
10
|
var getComponent = (components, attachment) => {
|
10
11
|
const type = attachment.type;
|
@@ -21,24 +22,21 @@ var getComponent = (components, attachment) => {
|
|
21
22
|
}
|
22
23
|
};
|
23
24
|
var AttachmentComponent = ({ components }) => {
|
24
|
-
const
|
25
|
+
const attachment = useAssistantState(({ attachment: attachment2 }) => attachment2);
|
26
|
+
if (!attachment) return null;
|
27
|
+
const Component = getComponent(components, attachment);
|
25
28
|
if (!Component) return null;
|
26
29
|
return /* @__PURE__ */ jsx(Component, {});
|
27
30
|
};
|
28
31
|
var MessagePrimitiveAttachmentByIndex = memo(
|
29
32
|
({ index, components }) => {
|
30
|
-
|
31
|
-
const runtime = useMemo(
|
32
|
-
() => messageRuntime.getAttachmentByIndex(index),
|
33
|
-
[messageRuntime, index]
|
34
|
-
);
|
35
|
-
return /* @__PURE__ */ jsx(AttachmentRuntimeProvider, { runtime, children: /* @__PURE__ */ jsx(AttachmentComponent, { components }) });
|
33
|
+
return /* @__PURE__ */ jsx(MessageAttachmentByIndexProvider, { index, children: /* @__PURE__ */ jsx(AttachmentComponent, { components }) });
|
36
34
|
},
|
37
35
|
(prev, next) => prev.index === next.index && prev.components?.Image === next.components?.Image && prev.components?.Document === next.components?.Document && prev.components?.File === next.components?.File && prev.components?.Attachment === next.components?.Attachment
|
38
36
|
);
|
39
37
|
MessagePrimitiveAttachmentByIndex.displayName = "MessagePrimitive.AttachmentByIndex";
|
40
38
|
var MessagePrimitiveAttachments = ({ components }) => {
|
41
|
-
const attachmentsCount =
|
39
|
+
const attachmentsCount = useAssistantState(({ message }) => {
|
42
40
|
if (message.role !== "user") return 0;
|
43
41
|
return message.attachments.length;
|
44
42
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/primitives/message/MessageAttachments.tsx"],"sourcesContent":["\"use client\";\n\nimport { ComponentType, type FC, memo, useMemo } from \"react\";\nimport {
|
1
|
+
{"version":3,"sources":["../../../src/primitives/message/MessageAttachments.tsx"],"sourcesContent":["\"use client\";\n\nimport { ComponentType, type FC, memo, useMemo } from \"react\";\nimport {\n useAssistantState,\n MessageAttachmentByIndexProvider,\n} from \"../../context\";\nimport { CompleteAttachment } from \"../../types\";\n\nexport namespace MessagePrimitiveAttachments {\n export type Props = {\n components:\n | {\n Image?: ComponentType | undefined;\n Document?: ComponentType | undefined;\n File?: ComponentType | undefined;\n Attachment?: ComponentType | undefined;\n }\n | undefined;\n };\n}\n\nconst getComponent = (\n components: MessagePrimitiveAttachments.Props[\"components\"],\n attachment: CompleteAttachment,\n) => {\n const type = attachment.type;\n switch (type) {\n case \"image\":\n return components?.Image ?? components?.Attachment;\n case \"document\":\n return components?.Document ?? components?.Attachment;\n case \"file\":\n return components?.File ?? components?.Attachment;\n default:\n const _exhaustiveCheck: never = type;\n throw new Error(`Unknown attachment type: ${_exhaustiveCheck}`);\n }\n};\n\nconst AttachmentComponent: FC<{\n components: MessagePrimitiveAttachments.Props[\"components\"];\n}> = ({ components }) => {\n const attachment = useAssistantState(({ attachment }) => attachment);\n if (!attachment) return null;\n\n const Component = getComponent(components, attachment as CompleteAttachment);\n if (!Component) return null;\n return <Component />;\n};\n\nexport namespace MessagePrimitiveAttachmentByIndex {\n export type Props = {\n index: number;\n components?: MessagePrimitiveAttachments.Props[\"components\"];\n };\n}\n\n/**\n * Renders a single attachment at the specified index within the current message.\n *\n * This component provides direct access to render a specific attachment\n * from the message's attachment list using the provided component configuration.\n *\n * @example\n * ```tsx\n * <MessagePrimitive.AttachmentByIndex\n * index={0}\n * components={{\n * Image: MyImageAttachment,\n * Document: MyDocumentAttachment\n * }}\n * />\n * ```\n */\nexport const MessagePrimitiveAttachmentByIndex: FC<MessagePrimitiveAttachmentByIndex.Props> =\n memo(\n ({ index, components }) => {\n return (\n <MessageAttachmentByIndexProvider index={index}>\n <AttachmentComponent components={components} />\n </MessageAttachmentByIndexProvider>\n );\n },\n (prev, next) =>\n prev.index === next.index &&\n prev.components?.Image === next.components?.Image &&\n prev.components?.Document === next.components?.Document &&\n prev.components?.File === next.components?.File &&\n prev.components?.Attachment === next.components?.Attachment,\n );\n\nMessagePrimitiveAttachmentByIndex.displayName =\n \"MessagePrimitive.AttachmentByIndex\";\n\nexport const MessagePrimitiveAttachments: FC<\n MessagePrimitiveAttachments.Props\n> = ({ components }) => {\n const attachmentsCount = useAssistantState(({ message }) => {\n if (message.role !== \"user\") return 0;\n return message.attachments.length;\n });\n\n const attachmentElements = useMemo(() => {\n return Array.from({ length: attachmentsCount }, (_, index) => (\n <MessagePrimitiveAttachmentByIndex\n key={index}\n index={index}\n components={components}\n />\n ));\n }, [attachmentsCount, components]);\n\n return attachmentElements;\n};\n\nMessagePrimitiveAttachments.displayName = \"MessagePrimitive.Attachments\";\n"],"mappings":";;;AAEA,SAAiC,MAAM,eAAe;AACtD;AAAA,EACE;AAAA,EACA;AAAA,OACK;AA0CE;AA1BT,IAAM,eAAe,CACnB,YACA,eACG;AACH,QAAM,OAAO,WAAW;AACxB,UAAQ,MAAM;AAAA,IACZ,KAAK;AACH,aAAO,YAAY,SAAS,YAAY;AAAA,IAC1C,KAAK;AACH,aAAO,YAAY,YAAY,YAAY;AAAA,IAC7C,KAAK;AACH,aAAO,YAAY,QAAQ,YAAY;AAAA,IACzC;AACE,YAAM,mBAA0B;AAChC,YAAM,IAAI,MAAM,4BAA4B,gBAAgB,EAAE;AAAA,EAClE;AACF;AAEA,IAAM,sBAED,CAAC,EAAE,WAAW,MAAM;AACvB,QAAM,aAAa,kBAAkB,CAAC,EAAE,YAAAA,YAAW,MAAMA,WAAU;AACnE,MAAI,CAAC,WAAY,QAAO;AAExB,QAAM,YAAY,aAAa,YAAY,UAAgC;AAC3E,MAAI,CAAC,UAAW,QAAO;AACvB,SAAO,oBAAC,aAAU;AACpB;AA0BO,IAAM,oCACX;AAAA,EACE,CAAC,EAAE,OAAO,WAAW,MAAM;AACzB,WACE,oBAAC,oCAAiC,OAChC,8BAAC,uBAAoB,YAAwB,GAC/C;AAAA,EAEJ;AAAA,EACA,CAAC,MAAM,SACL,KAAK,UAAU,KAAK,SACpB,KAAK,YAAY,UAAU,KAAK,YAAY,SAC5C,KAAK,YAAY,aAAa,KAAK,YAAY,YAC/C,KAAK,YAAY,SAAS,KAAK,YAAY,QAC3C,KAAK,YAAY,eAAe,KAAK,YAAY;AACrD;AAEF,kCAAkC,cAChC;AAEK,IAAM,8BAET,CAAC,EAAE,WAAW,MAAM;AACtB,QAAM,mBAAmB,kBAAkB,CAAC,EAAE,QAAQ,MAAM;AAC1D,QAAI,QAAQ,SAAS,OAAQ,QAAO;AACpC,WAAO,QAAQ,YAAY;AAAA,EAC7B,CAAC;AAED,QAAM,qBAAqB,QAAQ,MAAM;AACvC,WAAO,MAAM,KAAK,EAAE,QAAQ,iBAAiB,GAAG,CAAC,GAAG,UAClD;AAAA,MAAC;AAAA;AAAA,QAEC;AAAA,QACA;AAAA;AAAA,MAFK;AAAA,IAGP,CACD;AAAA,EACH,GAAG,CAAC,kBAAkB,UAAU,CAAC;AAEjC,SAAO;AACT;AAEA,4BAA4B,cAAc;","names":["attachment"]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MessageError.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageError.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG9C,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,iBAAiB,
|
1
|
+
{"version":3,"file":"MessageError.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageError.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAG9C,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,iBAAiB,CAOvD,CAAC"}
|
@@ -1,11 +1,11 @@
|
|
1
1
|
"use client";
|
2
2
|
|
3
3
|
// src/primitives/message/MessageError.tsx
|
4
|
-
import {
|
4
|
+
import { useAssistantState } from "../../context/index.js";
|
5
5
|
import { Fragment, jsx } from "react/jsx-runtime";
|
6
6
|
var MessagePrimitiveError = ({ children }) => {
|
7
|
-
const hasError =
|
8
|
-
(
|
7
|
+
const hasError = useAssistantState(
|
8
|
+
({ message }) => message.status?.type === "incomplete" && message.status.reason === "error"
|
9
9
|
);
|
10
10
|
return hasError ? /* @__PURE__ */ jsx(Fragment, { children }) : null;
|
11
11
|
};
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/primitives/message/MessageError.tsx"],"sourcesContent":["\"use client\";\n\nimport { FC, PropsWithChildren } from \"react\";\nimport {
|
1
|
+
{"version":3,"sources":["../../../src/primitives/message/MessageError.tsx"],"sourcesContent":["\"use client\";\n\nimport { FC, PropsWithChildren } from \"react\";\nimport { useAssistantState } from \"../../context\";\n\nexport const MessagePrimitiveError: FC<PropsWithChildren> = ({ children }) => {\n const hasError = useAssistantState(\n ({ message }) =>\n message.status?.type === \"incomplete\" &&\n message.status.reason === \"error\",\n );\n return hasError ? <>{children}</> : null;\n};\n\nMessagePrimitiveError.displayName = \"MessagePrimitive.Error\";\n"],"mappings":";;;AAGA,SAAS,yBAAyB;AAQd;AANb,IAAM,wBAA+C,CAAC,EAAE,SAAS,MAAM;AAC5E,QAAM,WAAW;AAAA,IACf,CAAC,EAAE,QAAQ,MACT,QAAQ,QAAQ,SAAS,gBACzB,QAAQ,OAAO,WAAW;AAAA,EAC9B;AACA,SAAO,WAAW,gCAAG,UAAS,IAAM;AACtC;AAEA,sBAAsB,cAAc;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MessageIf.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageIf.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"MessageIf.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageIf.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAEnD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAEvE,KAAK,gBAAgB,GAAG;IACtB,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,MAAM,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,WAAW,EAAE,OAAO,GAAG,SAAS,CAAC;IACjC,IAAI,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1B,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9B,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;IACpC,UAAU,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,iBAAiB,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,GAAG,SAAS,CAAC;CAC/D,CAAC;AACF,KAAK,iBAAiB,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;AAwD7D,yBAAiB,kBAAkB,CAAC;IAClC,KAAY,KAAK,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;CAC1D;AAED,eAAO,MAAM,kBAAkB,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,CAM3D,CAAC"}
|
@@ -1,46 +1,40 @@
|
|
1
1
|
"use client";
|
2
2
|
|
3
3
|
// src/primitives/message/MessageIf.tsx
|
4
|
-
import {
|
5
|
-
useMessageRuntime,
|
6
|
-
useMessageUtilsStore
|
7
|
-
} from "../../context/react/MessageContext.js";
|
8
|
-
import { useCombinedStore } from "../../utils/combined/useCombinedStore.js";
|
4
|
+
import { useAssistantState } from "../../context/index.js";
|
9
5
|
var useMessageIf = (props) => {
|
10
|
-
|
11
|
-
|
12
|
-
return useCombinedStore(
|
13
|
-
[messageRuntime, messageUtilsStore],
|
14
|
-
({
|
6
|
+
return useAssistantState(({ message }) => {
|
7
|
+
const {
|
15
8
|
role,
|
16
9
|
attachments,
|
17
|
-
|
10
|
+
parts,
|
18
11
|
branchCount,
|
19
12
|
isLast,
|
20
13
|
speech,
|
21
|
-
submittedFeedback
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
14
|
+
submittedFeedback,
|
15
|
+
isCopied,
|
16
|
+
isHovering
|
17
|
+
} = message;
|
18
|
+
if (props.hasBranches === true && branchCount < 2) return false;
|
19
|
+
if (props.user && role !== "user") return false;
|
20
|
+
if (props.assistant && role !== "assistant") return false;
|
21
|
+
if (props.system && role !== "system") return false;
|
22
|
+
if (props.lastOrHover === true && !isHovering && !isLast) return false;
|
23
|
+
if (props.last !== void 0 && props.last !== isLast) return false;
|
24
|
+
if (props.copied === true && !isCopied) return false;
|
25
|
+
if (props.copied === false && isCopied) return false;
|
26
|
+
if (props.speaking === true && speech == null) return false;
|
27
|
+
if (props.speaking === false && speech != null) return false;
|
28
|
+
if (props.hasAttachments === true && (role !== "user" || !attachments?.length))
|
29
|
+
return false;
|
30
|
+
if (props.hasAttachments === false && role === "user" && !!attachments?.length)
|
31
|
+
return false;
|
32
|
+
if (props.hasContent === true && parts.length === 0) return false;
|
33
|
+
if (props.hasContent === false && parts.length > 0) return false;
|
34
|
+
if (props.submittedFeedback !== void 0 && (submittedFeedback?.type ?? null) !== props.submittedFeedback)
|
35
|
+
return false;
|
36
|
+
return true;
|
37
|
+
});
|
44
38
|
};
|
45
39
|
var MessagePrimitiveIf = ({
|
46
40
|
children,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/primitives/message/MessageIf.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC, PropsWithChildren } from \"react\";\nimport {
|
1
|
+
{"version":3,"sources":["../../../src/primitives/message/MessageIf.tsx"],"sourcesContent":["\"use client\";\n\nimport type { FC, PropsWithChildren } from \"react\";\nimport { useAssistantState } from \"../../context\";\nimport type { RequireAtLeastOne } from \"../../utils/RequireAtLeastOne\";\n\ntype MessageIfFilters = {\n user: boolean | undefined;\n assistant: boolean | undefined;\n system: boolean | undefined;\n hasBranches: boolean | undefined;\n copied: boolean | undefined;\n lastOrHover: boolean | undefined;\n last: boolean | undefined;\n speaking: boolean | undefined;\n hasAttachments: boolean | undefined;\n hasContent: boolean | undefined;\n submittedFeedback: \"positive\" | \"negative\" | null | undefined;\n};\ntype UseMessageIfProps = RequireAtLeastOne<MessageIfFilters>;\n\nconst useMessageIf = (props: UseMessageIfProps) => {\n return useAssistantState(({ message }) => {\n const {\n role,\n attachments,\n parts,\n branchCount,\n isLast,\n speech,\n submittedFeedback,\n isCopied,\n isHovering,\n } = message;\n\n if (props.hasBranches === true && branchCount < 2) return false;\n\n if (props.user && role !== \"user\") return false;\n if (props.assistant && role !== \"assistant\") return false;\n if (props.system && role !== \"system\") return false;\n\n if (props.lastOrHover === true && !isHovering && !isLast) return false;\n if (props.last !== undefined && props.last !== isLast) return false;\n\n if (props.copied === true && !isCopied) return false;\n if (props.copied === false && isCopied) return false;\n\n if (props.speaking === true && speech == null) return false;\n if (props.speaking === false && speech != null) return false;\n\n if (\n props.hasAttachments === true &&\n (role !== \"user\" || !attachments?.length)\n )\n return false;\n if (\n props.hasAttachments === false &&\n role === \"user\" &&\n !!attachments?.length\n )\n return false;\n\n if (props.hasContent === true && parts.length === 0) return false;\n if (props.hasContent === false && parts.length > 0) return false;\n\n if (\n props.submittedFeedback !== undefined &&\n (submittedFeedback?.type ?? null) !== props.submittedFeedback\n )\n return false;\n\n return true;\n });\n};\n\nexport namespace MessagePrimitiveIf {\n export type Props = PropsWithChildren<UseMessageIfProps>;\n}\n\nexport const MessagePrimitiveIf: FC<MessagePrimitiveIf.Props> = ({\n children,\n ...query\n}) => {\n const result = useMessageIf(query);\n return result ? children : null;\n};\n\nMessagePrimitiveIf.displayName = \"MessagePrimitive.If\";\n"],"mappings":";;;AAGA,SAAS,yBAAyB;AAkBlC,IAAM,eAAe,CAAC,UAA6B;AACjD,SAAO,kBAAkB,CAAC,EAAE,QAAQ,MAAM;AACxC,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI;AAEJ,QAAI,MAAM,gBAAgB,QAAQ,cAAc,EAAG,QAAO;AAE1D,QAAI,MAAM,QAAQ,SAAS,OAAQ,QAAO;AAC1C,QAAI,MAAM,aAAa,SAAS,YAAa,QAAO;AACpD,QAAI,MAAM,UAAU,SAAS,SAAU,QAAO;AAE9C,QAAI,MAAM,gBAAgB,QAAQ,CAAC,cAAc,CAAC,OAAQ,QAAO;AACjE,QAAI,MAAM,SAAS,UAAa,MAAM,SAAS,OAAQ,QAAO;AAE9D,QAAI,MAAM,WAAW,QAAQ,CAAC,SAAU,QAAO;AAC/C,QAAI,MAAM,WAAW,SAAS,SAAU,QAAO;AAE/C,QAAI,MAAM,aAAa,QAAQ,UAAU,KAAM,QAAO;AACtD,QAAI,MAAM,aAAa,SAAS,UAAU,KAAM,QAAO;AAEvD,QACE,MAAM,mBAAmB,SACxB,SAAS,UAAU,CAAC,aAAa;AAElC,aAAO;AACT,QACE,MAAM,mBAAmB,SACzB,SAAS,UACT,CAAC,CAAC,aAAa;AAEf,aAAO;AAET,QAAI,MAAM,eAAe,QAAQ,MAAM,WAAW,EAAG,QAAO;AAC5D,QAAI,MAAM,eAAe,SAAS,MAAM,SAAS,EAAG,QAAO;AAE3D,QACE,MAAM,sBAAsB,WAC3B,mBAAmB,QAAQ,UAAU,MAAM;AAE5C,aAAO;AAET,WAAO;AAAA,EACT,CAAC;AACH;AAMO,IAAM,qBAAmD,CAAC;AAAA,EAC/D;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,SAAS,aAAa,KAAK;AACjC,SAAO,SAAS,WAAW;AAC7B;AAEA,mBAAmB,cAAc;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MessageParts.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageParts.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EAEP,iBAAiB,EAElB,MAAM,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"MessageParts.d.ts","sourceRoot":"","sources":["../../../src/primitives/message/MessageParts.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EAAE,EAEP,iBAAiB,EAElB,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EACV,kCAAkC,EAClC,yBAAyB,EACzB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,uCAAuC,CAAC;AAoE/C,yBAAiB,qBAAqB,CAAC;IACrC,KAAY,KAAK,GAAG;QAClB;;;;;WAKG;QACH,UAAU,CAAC,EACP;YACE,6CAA6C;YAC7C,KAAK,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;YAC9C,2CAA2C;YAC3C,IAAI,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;YAC5C,mEAAmE;YACnE,SAAS,CAAC,EAAE,6BAA6B,GAAG,SAAS,CAAC;YACtD,6CAA6C;YAC7C,MAAM,CAAC,EAAE,0BAA0B,GAAG,SAAS,CAAC;YAChD,4CAA4C;YAC5C,KAAK,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;YAC9C,2CAA2C;YAC3C,IAAI,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;YAC5C,2DAA2D;YAC3D,cAAc,CAAC,EAAE,kCAAkC,GAAG,SAAS,CAAC;YAChE,4CAA4C;YAC5C,KAAK,CAAC,EACF;gBACE,qDAAqD;gBACrD,OAAO,CAAC,EACJ,MAAM,CAAC,MAAM,EAAE,4BAA4B,GAAG,SAAS,CAAC,GACxD,SAAS,CAAC;gBACd,gDAAgD;gBAChD,QAAQ,CAAC,EAAE,aAAa,CAAC,wBAAwB,CAAC,GAAG,SAAS,CAAC;aAChE,GACD;gBACE,qDAAqD;gBACrD,QAAQ,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;aACnD,GACD,SAAS,CAAC;YAEd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eA+CG;YACH,SAAS,CAAC,EAAE,aAAa,CACvB,iBAAiB,CAAC;gBAAE,UAAU,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAA;aAAE,CAAC,CAC5D,CAAC;SACH,GACD,SAAS,CAAC;KACf,CAAC;CACH;AA0FD,yBAAiB,2BAA2B,CAAC;IAC3C,KAAY,KAAK,GAAG;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;KACvD,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAAC,2BAA2B,CAAC,KAAK,CAmB3E,CAAC;AAyCJ;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAgDjE,CAAC"}
|
@@ -6,16 +6,11 @@ import {
|
|
6
6
|
useMemo
|
7
7
|
} from "react";
|
8
8
|
import {
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
9
|
+
useAssistantState,
|
10
|
+
useAssistantApi,
|
11
|
+
PartByIndexProvider,
|
12
|
+
TextMessagePartProvider
|
13
13
|
} from "../../context/index.js";
|
14
|
-
import {
|
15
|
-
useMessage,
|
16
|
-
useMessageRuntime
|
17
|
-
} from "../../context/react/MessageContext.js";
|
18
|
-
import { MessagePartRuntimeProvider } from "../../context/providers/MessagePartRuntimeProvider.js";
|
19
14
|
import { MessagePartPrimitiveText } from "../messagePart/MessagePartText.js";
|
20
15
|
import { MessagePartPrimitiveImage } from "../messagePart/MessagePartImage.js";
|
21
16
|
import { MessagePartPrimitiveInProgress } from "../messagePart/MessagePartInProgress.js";
|
@@ -52,8 +47,8 @@ var groupMessageParts = (messageTypes) => {
|
|
52
47
|
return ranges;
|
53
48
|
};
|
54
49
|
var useMessagePartsGroups = () => {
|
55
|
-
const messageTypes =
|
56
|
-
useShallow((
|
50
|
+
const messageTypes = useAssistantState(
|
51
|
+
useShallow((s) => s.message.parts.map((c) => c.type))
|
57
52
|
);
|
58
53
|
return useMemo(() => {
|
59
54
|
if (messageTypes.length === 0) {
|
@@ -66,7 +61,11 @@ var ToolUIDisplay = ({
|
|
66
61
|
Fallback,
|
67
62
|
...props
|
68
63
|
}) => {
|
69
|
-
const Render =
|
64
|
+
const Render = useAssistantState(({ toolUIs }) => {
|
65
|
+
const Render2 = toolUIs[props.toolName] ?? Fallback;
|
66
|
+
if (Array.isArray(Render2)) return Render2[0];
|
67
|
+
return Render2;
|
68
|
+
});
|
70
69
|
if (!Render) return null;
|
71
70
|
return /* @__PURE__ */ jsx(Render, { ...props });
|
72
71
|
};
|
@@ -93,17 +92,17 @@ var MessagePartComponent = ({
|
|
93
92
|
tools = {}
|
94
93
|
} = {}
|
95
94
|
}) => {
|
96
|
-
const
|
97
|
-
const part =
|
95
|
+
const api = useAssistantApi();
|
96
|
+
const part = useAssistantState(({ part: part2 }) => part2);
|
98
97
|
const type = part.type;
|
99
98
|
if (type === "tool-call") {
|
100
|
-
const addResult = (result) =>
|
99
|
+
const addResult = (result) => api.part().addToolResult(result);
|
101
100
|
if ("Override" in tools)
|
102
101
|
return /* @__PURE__ */ jsx(tools.Override, { ...part, addResult });
|
103
102
|
const Tool = tools.by_name?.[part.toolName] ?? tools.Fallback;
|
104
103
|
return /* @__PURE__ */ jsx(ToolUIDisplay, { ...part, Fallback: Tool, addResult });
|
105
104
|
}
|
106
|
-
if (part.status
|
105
|
+
if (part.status?.type === "requires-action")
|
107
106
|
throw new Error("Encountered unexpected requires-action status");
|
108
107
|
switch (type) {
|
109
108
|
case "text":
|
@@ -125,24 +124,21 @@ var MessagePartComponent = ({
|
|
125
124
|
};
|
126
125
|
var MessagePrimitivePartByIndex = memo(
|
127
126
|
({ index, components }) => {
|
128
|
-
|
129
|
-
const runtime = useMemo(
|
130
|
-
() => messageRuntime.getMessagePartByIndex(index),
|
131
|
-
[messageRuntime, index]
|
132
|
-
);
|
133
|
-
return /* @__PURE__ */ jsx(MessagePartRuntimeProvider, { runtime, children: /* @__PURE__ */ jsx(MessagePartComponent, { components }) });
|
127
|
+
return /* @__PURE__ */ jsx(PartByIndexProvider, { index, children: /* @__PURE__ */ jsx(MessagePartComponent, { components }) });
|
134
128
|
},
|
135
129
|
(prev, next) => prev.index === next.index && prev.components?.Text === next.components?.Text && prev.components?.Reasoning === next.components?.Reasoning && prev.components?.Source === next.components?.Source && prev.components?.Image === next.components?.Image && prev.components?.File === next.components?.File && prev.components?.Unstable_Audio === next.components?.Unstable_Audio && prev.components?.tools === next.components?.tools && prev.components?.ToolGroup === next.components?.ToolGroup
|
136
130
|
);
|
137
131
|
MessagePrimitivePartByIndex.displayName = "MessagePrimitive.PartByIndex";
|
138
|
-
var COMPLETE_STATUS = Object.freeze({
|
139
|
-
type: "complete"
|
140
|
-
});
|
141
132
|
var EmptyPartFallback = ({ status, component: Component }) => {
|
142
133
|
return /* @__PURE__ */ jsx(TextMessagePartProvider, { text: "", isRunning: status.type === "running", children: /* @__PURE__ */ jsx(Component, { type: "text", text: "", status }) });
|
143
134
|
};
|
135
|
+
var COMPLETE_STATUS = Object.freeze({
|
136
|
+
type: "complete"
|
137
|
+
});
|
144
138
|
var EmptyPartsImpl = ({ components }) => {
|
145
|
-
const status =
|
139
|
+
const status = useAssistantState(
|
140
|
+
(s) => s.message.status ?? COMPLETE_STATUS
|
141
|
+
);
|
146
142
|
if (components?.Empty) return /* @__PURE__ */ jsx(components.Empty, { status });
|
147
143
|
return /* @__PURE__ */ jsx(
|
148
144
|
EmptyPartFallback,
|
@@ -159,7 +155,9 @@ var EmptyParts = memo(
|
|
159
155
|
var MessagePrimitiveParts = ({
|
160
156
|
components
|
161
157
|
}) => {
|
162
|
-
const contentLength =
|
158
|
+
const contentLength = useAssistantState(
|
159
|
+
({ message }) => message.parts.length
|
160
|
+
);
|
163
161
|
const messageRanges = useMessagePartsGroups();
|
164
162
|
const partsElements = useMemo(() => {
|
165
163
|
if (contentLength === 0) {
|