@assistant-ui/react 0.10.50 → 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/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/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/attachment/index.ts +1 -1
- 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/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
@@ -0,0 +1,196 @@
|
|
1
|
+
import {
|
2
|
+
resource,
|
3
|
+
tapInlineResource,
|
4
|
+
tapMemo,
|
5
|
+
tapState,
|
6
|
+
} from "@assistant-ui/tap";
|
7
|
+
import { tapApi } from "../utils/tap-store";
|
8
|
+
import { MessageRuntime } from "../api/MessageRuntime";
|
9
|
+
import { tapSubscribable } from "./util-hooks/tapSubscribable";
|
10
|
+
import {
|
11
|
+
ComposerClient,
|
12
|
+
ComposerClientActions,
|
13
|
+
ComposerClientState,
|
14
|
+
} from "./ComposerClient";
|
15
|
+
import {
|
16
|
+
MessagePartClient,
|
17
|
+
MessagePartClientActions,
|
18
|
+
MessagePartClientState,
|
19
|
+
} from "./MessagePartClient";
|
20
|
+
import { ThreadMessage } from "../types";
|
21
|
+
import {
|
22
|
+
SpeechState,
|
23
|
+
SubmittedFeedback,
|
24
|
+
} from "../runtimes/core/ThreadRuntimeCore";
|
25
|
+
import { RunConfig } from "../types/AssistantTypes";
|
26
|
+
import { tapLookupResources } from "./util-hooks/tapLookupResources";
|
27
|
+
import {
|
28
|
+
AttachmentClientActions,
|
29
|
+
AttachmentClientState,
|
30
|
+
} from "./AttachmentClient";
|
31
|
+
import { StoreApi } from "../utils/tap-store/tap-store-api";
|
32
|
+
import { EventManagerActions } from "./EventManagerClient";
|
33
|
+
import { RefObject } from "react";
|
34
|
+
|
35
|
+
export type MessageClientState = ThreadMessage & {
|
36
|
+
readonly parentId: string | null;
|
37
|
+
readonly isLast: boolean;
|
38
|
+
|
39
|
+
readonly branchNumber: number;
|
40
|
+
readonly branchCount: number;
|
41
|
+
|
42
|
+
/**
|
43
|
+
* @deprecated This API is still under active development and might change without notice.
|
44
|
+
*/
|
45
|
+
readonly speech: SpeechState | undefined;
|
46
|
+
readonly submittedFeedback: SubmittedFeedback | undefined;
|
47
|
+
|
48
|
+
readonly composer: ComposerClientState;
|
49
|
+
readonly parts: readonly MessagePartClientState[];
|
50
|
+
|
51
|
+
readonly isCopied: boolean;
|
52
|
+
readonly isHovering: boolean;
|
53
|
+
};
|
54
|
+
|
55
|
+
export type MessageClientActions = {
|
56
|
+
readonly composer: StoreApi<ComposerClientState, ComposerClientActions>;
|
57
|
+
|
58
|
+
reload(config?: { runConfig?: RunConfig }): void;
|
59
|
+
/**
|
60
|
+
* @deprecated This API is still under active development and might change without notice.
|
61
|
+
*/
|
62
|
+
speak(): void;
|
63
|
+
/**
|
64
|
+
* @deprecated This API is still under active development and might change without notice.
|
65
|
+
*/
|
66
|
+
stopSpeaking(): void;
|
67
|
+
submitFeedback(feedback: { type: "positive" | "negative" }): void;
|
68
|
+
switchToBranch(options: {
|
69
|
+
position?: "previous" | "next";
|
70
|
+
branchId?: string;
|
71
|
+
}): void;
|
72
|
+
getCopyText(): string;
|
73
|
+
|
74
|
+
part: (
|
75
|
+
selector: { index: number } | { toolCallId: string },
|
76
|
+
) => StoreApi<MessagePartClientState, MessagePartClientActions>;
|
77
|
+
attachment(selector: {
|
78
|
+
index: number;
|
79
|
+
}): StoreApi<AttachmentClientState, AttachmentClientActions>;
|
80
|
+
|
81
|
+
setIsCopied(value: boolean): void;
|
82
|
+
setIsHovering(value: boolean): void;
|
83
|
+
|
84
|
+
/** @internal */
|
85
|
+
__internal_getRuntime(): MessageRuntime;
|
86
|
+
};
|
87
|
+
|
88
|
+
const MessagePartByIndex = resource(
|
89
|
+
({ runtime, index }: { runtime: MessageRuntime; index: number }) => {
|
90
|
+
const partRuntime = tapMemo(
|
91
|
+
() => runtime.getMessagePartByIndex(index),
|
92
|
+
[runtime, index],
|
93
|
+
);
|
94
|
+
return tapInlineResource(MessagePartClient({ runtime: partRuntime }));
|
95
|
+
},
|
96
|
+
);
|
97
|
+
|
98
|
+
export const MessageClient = resource(
|
99
|
+
({
|
100
|
+
runtime,
|
101
|
+
events,
|
102
|
+
threadIdRef,
|
103
|
+
}: {
|
104
|
+
runtime: MessageRuntime;
|
105
|
+
events: EventManagerActions;
|
106
|
+
threadIdRef: RefObject<string>;
|
107
|
+
}) => {
|
108
|
+
const runtimeState = tapSubscribable(runtime);
|
109
|
+
|
110
|
+
const [isCopiedState, setIsCopied] = tapState(false);
|
111
|
+
const [isHoveringState, setIsHovering] = tapState(false);
|
112
|
+
|
113
|
+
const messageIdRef = tapMemo(
|
114
|
+
() => ({
|
115
|
+
get current() {
|
116
|
+
return runtime.getState().id;
|
117
|
+
},
|
118
|
+
}),
|
119
|
+
[runtime],
|
120
|
+
);
|
121
|
+
|
122
|
+
const composer = tapInlineResource(
|
123
|
+
ComposerClient({
|
124
|
+
runtime: runtime.composer,
|
125
|
+
events,
|
126
|
+
threadIdRef,
|
127
|
+
messageIdRef,
|
128
|
+
}),
|
129
|
+
);
|
130
|
+
|
131
|
+
const parts = tapLookupResources(
|
132
|
+
runtimeState.content.map((_, idx) =>
|
133
|
+
MessagePartByIndex({ runtime, index: idx }, { key: idx }),
|
134
|
+
),
|
135
|
+
);
|
136
|
+
|
137
|
+
const state = tapMemo<MessageClientState>(() => {
|
138
|
+
return {
|
139
|
+
...(runtimeState as MessageClientState),
|
140
|
+
|
141
|
+
parts: parts.state,
|
142
|
+
composer: composer.state,
|
143
|
+
|
144
|
+
isCopied: isCopiedState,
|
145
|
+
isHovering: isHoveringState,
|
146
|
+
};
|
147
|
+
}, [
|
148
|
+
runtimeState,
|
149
|
+
parts.state,
|
150
|
+
composer.state,
|
151
|
+
isCopiedState,
|
152
|
+
isHoveringState,
|
153
|
+
]);
|
154
|
+
|
155
|
+
const api = tapApi<MessageClientState, MessageClientActions>(state, {
|
156
|
+
composer: composer.api,
|
157
|
+
|
158
|
+
reload: (config) => runtime.reload(config),
|
159
|
+
speak: () => runtime.speak(),
|
160
|
+
stopSpeaking: () => runtime.stopSpeaking(),
|
161
|
+
submitFeedback: (feedback) => runtime.submitFeedback(feedback),
|
162
|
+
switchToBranch: (options) => runtime.switchToBranch(options),
|
163
|
+
getCopyText: () => runtime.unstable_getCopyText(),
|
164
|
+
|
165
|
+
part: (selector) => {
|
166
|
+
if ("index" in selector) {
|
167
|
+
return parts.api({ index: selector.index });
|
168
|
+
} else {
|
169
|
+
return parts.api({ key: "toolCallId-" + selector.toolCallId });
|
170
|
+
}
|
171
|
+
},
|
172
|
+
|
173
|
+
attachment: ({ index }) => {
|
174
|
+
const attachmentRuntime = runtime.getAttachmentByIndex(index);
|
175
|
+
return {
|
176
|
+
getState: attachmentRuntime.getState,
|
177
|
+
|
178
|
+
remove: attachmentRuntime.remove,
|
179
|
+
|
180
|
+
__internal_getRuntime: () => attachmentRuntime,
|
181
|
+
};
|
182
|
+
},
|
183
|
+
|
184
|
+
setIsCopied,
|
185
|
+
setIsHovering,
|
186
|
+
|
187
|
+
__internal_getRuntime: () => runtime,
|
188
|
+
});
|
189
|
+
|
190
|
+
return {
|
191
|
+
key: runtimeState.id,
|
192
|
+
state,
|
193
|
+
api,
|
194
|
+
};
|
195
|
+
},
|
196
|
+
);
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import { resource } from "@assistant-ui/tap";
|
2
|
+
import { tapApi } from "../utils/tap-store";
|
3
|
+
import { MessagePartRuntime } from "../api/MessagePartRuntime";
|
4
|
+
import { tapSubscribable } from "./util-hooks/tapSubscribable";
|
5
|
+
import {
|
6
|
+
ThreadAssistantMessagePart,
|
7
|
+
ThreadUserMessagePart,
|
8
|
+
MessagePartStatus,
|
9
|
+
ToolCallMessagePartStatus,
|
10
|
+
} from "../types/AssistantTypes";
|
11
|
+
import { ToolResponse } from "assistant-stream";
|
12
|
+
|
13
|
+
export type MessagePartClientState = (
|
14
|
+
| ThreadUserMessagePart
|
15
|
+
| ThreadAssistantMessagePart
|
16
|
+
) & {
|
17
|
+
readonly status: MessagePartStatus | ToolCallMessagePartStatus;
|
18
|
+
};
|
19
|
+
|
20
|
+
export type MessagePartClientActions = {
|
21
|
+
/**
|
22
|
+
* Add tool result to a tool call message part that has no tool result yet.
|
23
|
+
* This is useful when you are collecting a tool result via user input ("human tool calls").
|
24
|
+
*/
|
25
|
+
addToolResult(result: any | ToolResponse<any>): void;
|
26
|
+
|
27
|
+
/** @internal */
|
28
|
+
__internal_getRuntime(): MessagePartRuntime;
|
29
|
+
};
|
30
|
+
|
31
|
+
export const MessagePartClient = resource(
|
32
|
+
({ runtime }: { runtime: MessagePartRuntime }) => {
|
33
|
+
const runtimeState = tapSubscribable(runtime);
|
34
|
+
|
35
|
+
const api = tapApi<MessagePartClientState, MessagePartClientActions>(
|
36
|
+
runtimeState,
|
37
|
+
{
|
38
|
+
addToolResult: (result) => runtime.addToolResult(result),
|
39
|
+
|
40
|
+
__internal_getRuntime: () => runtime,
|
41
|
+
},
|
42
|
+
);
|
43
|
+
|
44
|
+
return {
|
45
|
+
key:
|
46
|
+
runtimeState.type === "tool-call"
|
47
|
+
? "toolCallId-" + runtimeState.toolCallId
|
48
|
+
: undefined,
|
49
|
+
state: runtimeState,
|
50
|
+
api,
|
51
|
+
};
|
52
|
+
},
|
53
|
+
);
|
@@ -0,0 +1,280 @@
|
|
1
|
+
import { ReadonlyJSONValue } from "assistant-stream/utils";
|
2
|
+
import {
|
3
|
+
RuntimeCapabilities,
|
4
|
+
SpeechState,
|
5
|
+
ThreadRuntimeEventType,
|
6
|
+
ThreadSuggestion,
|
7
|
+
} from "../runtimes/core/ThreadRuntimeCore";
|
8
|
+
import { CreateAppendMessage, CreateStartRunConfig } from "../api";
|
9
|
+
import { CreateResumeRunConfig, ThreadRuntime } from "../api/ThreadRuntime";
|
10
|
+
import {
|
11
|
+
resource,
|
12
|
+
tapInlineResource,
|
13
|
+
tapMemo,
|
14
|
+
tapEffect,
|
15
|
+
RefObject,
|
16
|
+
} from "@assistant-ui/tap";
|
17
|
+
import { ModelContext } from "../model-context";
|
18
|
+
import { ExportedMessageRepository, ThreadMessageLike } from "../runtimes";
|
19
|
+
import {
|
20
|
+
ComposerClient,
|
21
|
+
ComposerClientActions,
|
22
|
+
ComposerClientState,
|
23
|
+
} from "./ComposerClient";
|
24
|
+
import {
|
25
|
+
MessageClient,
|
26
|
+
MessageClientActions,
|
27
|
+
MessageClientState,
|
28
|
+
} from "./MessageClient";
|
29
|
+
import { tapSubscribable } from "./util-hooks/tapSubscribable";
|
30
|
+
import { tapApi } from "../utils/tap-store";
|
31
|
+
import { tapLookupResources } from "./util-hooks/tapLookupResources";
|
32
|
+
import { StoreApi } from "../utils/tap-store/tap-store-api";
|
33
|
+
import { Unsubscribe } from "../types";
|
34
|
+
import { EventManagerActions } from "./EventManagerClient";
|
35
|
+
|
36
|
+
export type ThreadClientState = {
|
37
|
+
/**
|
38
|
+
* Whether the thread is disabled. Disabled threads cannot receive new messages.
|
39
|
+
*/
|
40
|
+
readonly isDisabled: boolean;
|
41
|
+
|
42
|
+
/**
|
43
|
+
* Whether the thread is loading its history.
|
44
|
+
*/
|
45
|
+
readonly isLoading: boolean;
|
46
|
+
|
47
|
+
/**
|
48
|
+
* Whether the thread is running. A thread is considered running when there is an active stream connection to the backend.
|
49
|
+
*/
|
50
|
+
readonly isRunning: boolean;
|
51
|
+
|
52
|
+
/**
|
53
|
+
* The capabilities of the thread, such as whether the thread supports editing, branch switching, etc.
|
54
|
+
*/
|
55
|
+
readonly capabilities: RuntimeCapabilities;
|
56
|
+
|
57
|
+
/**
|
58
|
+
* The messages in the currently selected branch of the thread.
|
59
|
+
*/
|
60
|
+
readonly messages: readonly MessageClientState[];
|
61
|
+
|
62
|
+
/**
|
63
|
+
* The thread state.
|
64
|
+
*
|
65
|
+
* @deprecated This feature is experimental
|
66
|
+
*/
|
67
|
+
readonly state: ReadonlyJSONValue;
|
68
|
+
|
69
|
+
/**
|
70
|
+
* Follow up message suggestions to show the user.
|
71
|
+
*/
|
72
|
+
readonly suggestions: readonly ThreadSuggestion[];
|
73
|
+
|
74
|
+
/**
|
75
|
+
* Custom extra information provided by the runtime.
|
76
|
+
*/
|
77
|
+
readonly extras: unknown;
|
78
|
+
|
79
|
+
/**
|
80
|
+
* @deprecated This API is still under active development and might change without notice.
|
81
|
+
*/
|
82
|
+
readonly speech: SpeechState | undefined;
|
83
|
+
|
84
|
+
readonly composer: ComposerClientState;
|
85
|
+
};
|
86
|
+
|
87
|
+
export type ThreadClientActions = {
|
88
|
+
/**
|
89
|
+
* The thread composer runtime.
|
90
|
+
*/
|
91
|
+
readonly composer: StoreApi<ComposerClientState, ComposerClientActions>;
|
92
|
+
|
93
|
+
/**
|
94
|
+
* Append a new message to the thread.
|
95
|
+
*
|
96
|
+
* @example ```ts
|
97
|
+
* // append a new user message with the text "Hello, world!"
|
98
|
+
* threadRuntime.append("Hello, world!");
|
99
|
+
* ```
|
100
|
+
*
|
101
|
+
* @example ```ts
|
102
|
+
* // append a new assistant message with the text "Hello, world!"
|
103
|
+
* threadRuntime.append({
|
104
|
+
* role: "assistant",
|
105
|
+
* content: [{ type: "text", text: "Hello, world!" }],
|
106
|
+
* });
|
107
|
+
* ```
|
108
|
+
*/
|
109
|
+
append(message: CreateAppendMessage): void;
|
110
|
+
|
111
|
+
/**
|
112
|
+
* Start a new run with the given configuration.
|
113
|
+
* @param config The configuration for starting the run
|
114
|
+
*/
|
115
|
+
startRun(config: CreateStartRunConfig): void;
|
116
|
+
|
117
|
+
/**
|
118
|
+
* Resume a run with the given configuration.
|
119
|
+
* @param config The configuration for resuming the run
|
120
|
+
**/
|
121
|
+
unstable_resumeRun(config: CreateResumeRunConfig): void;
|
122
|
+
|
123
|
+
cancelRun(): void;
|
124
|
+
getModelContext(): ModelContext;
|
125
|
+
|
126
|
+
export(): ExportedMessageRepository;
|
127
|
+
import(repository: ExportedMessageRepository): void;
|
128
|
+
|
129
|
+
/**
|
130
|
+
* Reset the thread with optional initial messages.
|
131
|
+
*
|
132
|
+
* @param initialMessages - Optional array of initial messages to populate the thread
|
133
|
+
*/
|
134
|
+
reset(initialMessages?: readonly ThreadMessageLike[]): void;
|
135
|
+
|
136
|
+
message(
|
137
|
+
selector: { id: string } | { index: number },
|
138
|
+
): StoreApi<MessageClientState, MessageClientActions>;
|
139
|
+
|
140
|
+
/**
|
141
|
+
* @deprecated This API is still under active development and might change without notice.
|
142
|
+
*/
|
143
|
+
stopSpeaking(): void;
|
144
|
+
|
145
|
+
/** @internal */
|
146
|
+
__internal_getRuntime(): ThreadRuntime;
|
147
|
+
};
|
148
|
+
|
149
|
+
const MessageClientById = resource(
|
150
|
+
({
|
151
|
+
runtime,
|
152
|
+
id,
|
153
|
+
events,
|
154
|
+
threadIdRef,
|
155
|
+
}: {
|
156
|
+
runtime: ThreadRuntime;
|
157
|
+
id: string;
|
158
|
+
events: EventManagerActions;
|
159
|
+
threadIdRef: RefObject<string>;
|
160
|
+
}) => {
|
161
|
+
const messageRuntime = tapMemo(
|
162
|
+
() => runtime.getMessageById(id),
|
163
|
+
[runtime, id],
|
164
|
+
);
|
165
|
+
|
166
|
+
return tapInlineResource(
|
167
|
+
MessageClient({ runtime: messageRuntime, events, threadIdRef }),
|
168
|
+
);
|
169
|
+
},
|
170
|
+
);
|
171
|
+
|
172
|
+
export const ThreadClient = resource(
|
173
|
+
({
|
174
|
+
runtime,
|
175
|
+
events,
|
176
|
+
}: {
|
177
|
+
runtime: ThreadRuntime;
|
178
|
+
events: EventManagerActions;
|
179
|
+
}) => {
|
180
|
+
const runtimeState = tapSubscribable(runtime);
|
181
|
+
|
182
|
+
// Bind thread events to event manager
|
183
|
+
tapEffect(() => {
|
184
|
+
const unsubscribers: Unsubscribe[] = [];
|
185
|
+
|
186
|
+
// Subscribe to thread events
|
187
|
+
const threadEvents: ThreadRuntimeEventType[] = [
|
188
|
+
"run-start",
|
189
|
+
"run-end",
|
190
|
+
"initialize",
|
191
|
+
"model-context-update",
|
192
|
+
];
|
193
|
+
|
194
|
+
for (const event of threadEvents) {
|
195
|
+
const unsubscribe = runtime.unstable_on(event, () => {
|
196
|
+
const threadId = runtime.getState()?.threadId || "unknown";
|
197
|
+
events.emit(`thread.${event}`, {
|
198
|
+
threadId,
|
199
|
+
});
|
200
|
+
});
|
201
|
+
unsubscribers.push(unsubscribe);
|
202
|
+
}
|
203
|
+
|
204
|
+
return () => {
|
205
|
+
for (const unsub of unsubscribers) unsub();
|
206
|
+
};
|
207
|
+
}, [runtime, events]);
|
208
|
+
|
209
|
+
const threadIdRef = tapMemo(
|
210
|
+
() => ({
|
211
|
+
get current() {
|
212
|
+
return runtime.getState()!.threadId;
|
213
|
+
},
|
214
|
+
}),
|
215
|
+
[runtime],
|
216
|
+
);
|
217
|
+
|
218
|
+
const composer = tapInlineResource(
|
219
|
+
ComposerClient({
|
220
|
+
runtime: runtime.composer,
|
221
|
+
events,
|
222
|
+
threadIdRef,
|
223
|
+
}),
|
224
|
+
);
|
225
|
+
|
226
|
+
const messages = tapLookupResources(
|
227
|
+
runtimeState.messages.map((m) =>
|
228
|
+
MessageClientById(
|
229
|
+
{ runtime: runtime, id: m.id, events, threadIdRef },
|
230
|
+
{ key: m.id },
|
231
|
+
),
|
232
|
+
),
|
233
|
+
);
|
234
|
+
|
235
|
+
const state = tapMemo<ThreadClientState>(() => {
|
236
|
+
return {
|
237
|
+
isDisabled: runtimeState.isDisabled,
|
238
|
+
isLoading: runtimeState.isLoading,
|
239
|
+
isRunning: runtimeState.isRunning,
|
240
|
+
capabilities: runtimeState.capabilities,
|
241
|
+
state: runtimeState.state,
|
242
|
+
suggestions: runtimeState.suggestions,
|
243
|
+
extras: runtimeState.extras,
|
244
|
+
speech: runtimeState.speech,
|
245
|
+
|
246
|
+
composer: composer.state,
|
247
|
+
messages: messages.state,
|
248
|
+
};
|
249
|
+
}, [runtimeState, messages, composer.state]);
|
250
|
+
|
251
|
+
const api = tapApi<ThreadClientState, ThreadClientActions>(state, {
|
252
|
+
composer: composer.api,
|
253
|
+
|
254
|
+
append: runtime.append,
|
255
|
+
startRun: runtime.startRun,
|
256
|
+
unstable_resumeRun: runtime.unstable_resumeRun,
|
257
|
+
cancelRun: runtime.cancelRun,
|
258
|
+
getModelContext: runtime.getModelContext,
|
259
|
+
export: runtime.export,
|
260
|
+
import: runtime.import,
|
261
|
+
reset: runtime.reset,
|
262
|
+
stopSpeaking: runtime.stopSpeaking,
|
263
|
+
|
264
|
+
message: (selector) => {
|
265
|
+
if ("id" in selector) {
|
266
|
+
return messages.api({ key: selector.id });
|
267
|
+
} else {
|
268
|
+
return messages.api(selector);
|
269
|
+
}
|
270
|
+
},
|
271
|
+
|
272
|
+
__internal_getRuntime: () => runtime,
|
273
|
+
});
|
274
|
+
|
275
|
+
return {
|
276
|
+
state,
|
277
|
+
api,
|
278
|
+
};
|
279
|
+
},
|
280
|
+
);
|
@@ -0,0 +1,135 @@
|
|
1
|
+
import { tapApi } from "../utils/tap-store";
|
2
|
+
import { resource, tapInlineResource, tapMemo } from "@assistant-ui/tap";
|
3
|
+
import { ThreadListRuntime } from "../api/ThreadListRuntime";
|
4
|
+
import { tapSubscribable } from "./util-hooks/tapSubscribable";
|
5
|
+
import {
|
6
|
+
ThreadListItemClientState,
|
7
|
+
ThreadListItemClientActions,
|
8
|
+
ThreadListItemClient,
|
9
|
+
} from "./ThreadListItemClient";
|
10
|
+
import {
|
11
|
+
ThreadClient,
|
12
|
+
ThreadClientActions,
|
13
|
+
ThreadClientState,
|
14
|
+
} from "./ThreadClient";
|
15
|
+
import { StoreApi } from "../utils/tap-store/tap-store-api";
|
16
|
+
import { tapLookupResources } from "./util-hooks/tapLookupResources";
|
17
|
+
import { EventManagerActions } from "./EventManagerClient";
|
18
|
+
|
19
|
+
export type ThreadListClientState = {
|
20
|
+
readonly mainThreadId: string;
|
21
|
+
readonly newThreadId: string | undefined;
|
22
|
+
readonly isLoading: boolean;
|
23
|
+
readonly threadIds: readonly string[];
|
24
|
+
readonly archivedThreadIds: readonly string[];
|
25
|
+
|
26
|
+
readonly threadItems: readonly ThreadListItemClientState[];
|
27
|
+
|
28
|
+
readonly main: ThreadClientState;
|
29
|
+
};
|
30
|
+
|
31
|
+
export type ThreadListClientActions = {
|
32
|
+
switchToThread(threadId: string): void;
|
33
|
+
switchToNewThread(): void;
|
34
|
+
item(
|
35
|
+
threadIdOrOptions:
|
36
|
+
| "main"
|
37
|
+
| { id: string }
|
38
|
+
| { index: number; archived?: boolean },
|
39
|
+
): StoreApi<ThreadListItemClientState, ThreadListItemClientActions>;
|
40
|
+
|
41
|
+
thread(selector: "main"): StoreApi<ThreadClientState, ThreadClientActions>;
|
42
|
+
};
|
43
|
+
|
44
|
+
const ThreadListItemClientById = resource(
|
45
|
+
({
|
46
|
+
runtime,
|
47
|
+
id,
|
48
|
+
events,
|
49
|
+
}: {
|
50
|
+
runtime: ThreadListRuntime;
|
51
|
+
id: string;
|
52
|
+
events: EventManagerActions;
|
53
|
+
}) => {
|
54
|
+
const threadListItemRuntime = tapMemo(
|
55
|
+
() => runtime.getItemById(id),
|
56
|
+
[runtime, id],
|
57
|
+
);
|
58
|
+
return tapInlineResource(
|
59
|
+
ThreadListItemClient({
|
60
|
+
runtime: threadListItemRuntime,
|
61
|
+
events,
|
62
|
+
}),
|
63
|
+
);
|
64
|
+
},
|
65
|
+
);
|
66
|
+
|
67
|
+
export const ThreadListClient = resource(
|
68
|
+
({
|
69
|
+
runtime,
|
70
|
+
events,
|
71
|
+
}: {
|
72
|
+
runtime: ThreadListRuntime;
|
73
|
+
events: EventManagerActions;
|
74
|
+
}) => {
|
75
|
+
const runtimeState = tapSubscribable(runtime);
|
76
|
+
|
77
|
+
const main = tapInlineResource(
|
78
|
+
ThreadClient({
|
79
|
+
runtime: runtime.main,
|
80
|
+
events,
|
81
|
+
}),
|
82
|
+
);
|
83
|
+
|
84
|
+
const threadItems = tapLookupResources(
|
85
|
+
Object.keys(runtimeState.threadItems).map((id) =>
|
86
|
+
ThreadListItemClientById({ runtime, id, events }, { key: id }),
|
87
|
+
),
|
88
|
+
);
|
89
|
+
|
90
|
+
const state = tapMemo<ThreadListClientState>(() => {
|
91
|
+
return {
|
92
|
+
mainThreadId: runtimeState.mainThreadId,
|
93
|
+
newThreadId: runtimeState.newThread,
|
94
|
+
isLoading: runtimeState.isLoading,
|
95
|
+
threadIds: runtimeState.threads,
|
96
|
+
archivedThreadIds: runtimeState.archivedThreads,
|
97
|
+
threadItems: threadItems.state,
|
98
|
+
|
99
|
+
main: main.state,
|
100
|
+
};
|
101
|
+
}, [runtimeState, threadItems.state, main.state]);
|
102
|
+
|
103
|
+
const api = tapApi<ThreadListClientState, ThreadListClientActions>(state, {
|
104
|
+
thread: () => main.api,
|
105
|
+
|
106
|
+
item: (threadIdOrOptions) => {
|
107
|
+
if (threadIdOrOptions === "main") {
|
108
|
+
return threadItems.api({ key: state.mainThreadId });
|
109
|
+
}
|
110
|
+
|
111
|
+
if ("id" in threadIdOrOptions) {
|
112
|
+
return threadItems.api({ key: threadIdOrOptions.id });
|
113
|
+
}
|
114
|
+
|
115
|
+
const { index, archived = false } = threadIdOrOptions;
|
116
|
+
const id = archived
|
117
|
+
? state.archivedThreadIds[index]!
|
118
|
+
: state.threadIds[index]!;
|
119
|
+
return threadItems.api({ key: id });
|
120
|
+
},
|
121
|
+
|
122
|
+
switchToThread: (threadId) => {
|
123
|
+
runtime.switchToThread(threadId);
|
124
|
+
},
|
125
|
+
switchToNewThread: () => {
|
126
|
+
runtime.switchToNewThread();
|
127
|
+
},
|
128
|
+
});
|
129
|
+
|
130
|
+
return {
|
131
|
+
state,
|
132
|
+
api,
|
133
|
+
};
|
134
|
+
},
|
135
|
+
);
|