@assistant-ui/react 0.12.17 → 0.12.20
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/README.md +1 -1
- package/dist/client/ExternalThread.d.ts +24 -3
- package/dist/client/ExternalThread.d.ts.map +1 -1
- package/dist/client/ExternalThread.js +107 -27
- package/dist/client/ExternalThread.js.map +1 -1
- package/dist/client/InMemoryThreadList.js +23 -30
- package/dist/client/InMemoryThreadList.js.map +1 -1
- package/dist/client/SingleThreadList.d.ts +12 -0
- package/dist/client/SingleThreadList.d.ts.map +1 -0
- package/dist/client/SingleThreadList.js +68 -0
- package/dist/client/SingleThreadList.js.map +1 -0
- package/dist/context/index.d.ts +19 -3
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +18 -3
- package/dist/context/index.js.map +1 -1
- package/dist/context/react/ThreadViewportContext.d.ts +1 -1
- package/dist/context/react/ThreadViewportContext.d.ts.map +1 -1
- package/dist/hooks/useMessageQuote.d.ts.map +1 -1
- package/dist/hooks/useMessageQuote.js +2 -1
- package/dist/hooks/useMessageQuote.js.map +1 -1
- package/dist/index.d.ts +96 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +101 -8
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -1
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +2 -1
- package/dist/internal.js.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.d.ts +1 -1
- package/dist/legacy-runtime/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadContext.d.ts +1 -1
- package/dist/legacy-runtime/hooks/ThreadContext.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/types.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.js +4 -13
- 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 +4 -9
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
- package/dist/primitives/actionBar.d.ts +10 -0
- package/dist/primitives/actionBar.d.ts.map +1 -0
- package/dist/primitives/actionBar.js +10 -0
- package/dist/primitives/actionBar.js.map +1 -0
- package/dist/primitives/actionBarMore.d.ts +6 -0
- package/dist/primitives/actionBarMore.d.ts.map +1 -0
- package/dist/primitives/actionBarMore.js +6 -0
- package/dist/primitives/actionBarMore.js.map +1 -0
- package/dist/primitives/assistantModal.d.ts +5 -0
- package/dist/primitives/assistantModal.d.ts.map +1 -0
- package/dist/primitives/assistantModal.js +5 -0
- package/dist/primitives/assistantModal.js.map +1 -0
- package/dist/primitives/attachment/AttachmentThumb.js +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
- package/dist/primitives/attachment.d.ts +5 -0
- package/dist/primitives/attachment.d.ts.map +1 -0
- package/dist/primitives/attachment.js +5 -0
- package/dist/primitives/attachment.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.js +3 -17
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +0 -21
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.js +3 -38
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
- package/dist/primitives/branchPicker.d.ts +6 -0
- package/dist/primitives/branchPicker.d.ts.map +1 -0
- package/dist/primitives/branchPicker.js +6 -0
- package/dist/primitives/branchPicker.js.map +1 -0
- package/dist/primitives/chainOfThought.d.ts +4 -0
- package/dist/primitives/chainOfThought.d.ts.map +1 -0
- package/dist/primitives/chainOfThought.js +4 -0
- package/dist/primitives/chainOfThought.js.map +1 -0
- package/dist/primitives/composer/ComposerDictate.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerDictate.js +3 -10
- package/dist/primitives/composer/ComposerDictate.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +37 -7
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerQueue.d.ts +2 -0
- package/dist/primitives/composer/ComposerQueue.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerQueue.js +3 -0
- package/dist/primitives/composer/ComposerQueue.js.map +1 -0
- package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerSend.js +3 -1
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/composer/mention/ComposerMentionBack.d.ts +21 -0
- package/dist/primitives/composer/mention/ComposerMentionBack.d.ts.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionBack.js +28 -0
- package/dist/primitives/composer/mention/ComposerMentionBack.js.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionCategories.d.ts +42 -0
- package/dist/primitives/composer/mention/ComposerMentionCategories.d.ts.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionCategories.js +32 -0
- package/dist/primitives/composer/mention/ComposerMentionCategories.js.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionContext.d.ts +23 -0
- package/dist/primitives/composer/mention/ComposerMentionContext.d.ts.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionContext.js +66 -0
- package/dist/primitives/composer/mention/ComposerMentionContext.js.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionItems.d.ts +46 -0
- package/dist/primitives/composer/mention/ComposerMentionItems.d.ts.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionItems.js +30 -0
- package/dist/primitives/composer/mention/ComposerMentionItems.js.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionPopover.d.ts +24 -0
- package/dist/primitives/composer/mention/ComposerMentionPopover.d.ts.map +1 -0
- package/dist/primitives/composer/mention/ComposerMentionPopover.js +28 -0
- package/dist/primitives/composer/mention/ComposerMentionPopover.js.map +1 -0
- package/dist/primitives/composer/mention/MentionResource.d.ts +39 -0
- package/dist/primitives/composer/mention/MentionResource.d.ts.map +1 -0
- package/dist/primitives/composer/mention/MentionResource.js +230 -0
- package/dist/primitives/composer/mention/MentionResource.js.map +1 -0
- package/dist/primitives/composer/mention/detectMentionTrigger.d.ts +2 -0
- package/dist/primitives/composer/mention/detectMentionTrigger.d.ts.map +1 -0
- package/dist/primitives/composer/mention/detectMentionTrigger.js +26 -0
- package/dist/primitives/composer/mention/detectMentionTrigger.js.map +1 -0
- package/dist/primitives/composer/mention/index.d.ts +6 -0
- package/dist/primitives/composer/mention/index.d.ts.map +1 -0
- package/dist/primitives/composer/mention/index.js +6 -0
- package/dist/primitives/composer/mention/index.js.map +1 -0
- package/dist/primitives/composer.d.ts +26 -0
- package/dist/primitives/composer.d.ts.map +1 -0
- package/dist/primitives/composer.js +26 -0
- package/dist/primitives/composer.js.map +1 -0
- package/dist/primitives/error/ErrorMessage.d.ts.map +1 -1
- package/dist/primitives/error/ErrorMessage.js +2 -7
- package/dist/primitives/error/ErrorMessage.js.map +1 -1
- package/dist/primitives/error.d.ts +3 -0
- package/dist/primitives/error.d.ts.map +1 -0
- package/dist/primitives/error.js +3 -0
- package/dist/primitives/error.js.map +1 -0
- package/dist/primitives/message/MessageError.d.ts.map +1 -1
- package/dist/primitives/message/MessageError.js +3 -4
- package/dist/primitives/message/MessageError.js.map +1 -1
- package/dist/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/primitives/message/MessageParts.js +6 -1
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +2 -1
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/primitives/message.d.ts +11 -0
- package/dist/primitives/message.d.ts.map +1 -0
- package/dist/primitives/message.js +11 -0
- package/dist/primitives/message.js.map +1 -0
- package/dist/primitives/messagePart.d.ts +5 -0
- package/dist/primitives/messagePart.d.ts.map +1 -0
- package/dist/primitives/messagePart.js +5 -0
- package/dist/primitives/messagePart.js.map +1 -0
- package/dist/primitives/queueItem/QueueItemRemove.d.ts +19 -0
- package/dist/primitives/queueItem/QueueItemRemove.d.ts.map +1 -0
- package/dist/primitives/queueItem/QueueItemRemove.js +21 -0
- package/dist/primitives/queueItem/QueueItemRemove.js.map +1 -0
- package/dist/primitives/queueItem/QueueItemSteer.d.ts +19 -0
- package/dist/primitives/queueItem/QueueItemSteer.d.ts.map +1 -0
- package/dist/primitives/queueItem/QueueItemSteer.js +21 -0
- package/dist/primitives/queueItem/QueueItemSteer.js.map +1 -0
- package/dist/primitives/queueItem/QueueItemText.d.ts +18 -0
- package/dist/primitives/queueItem/QueueItemText.d.ts.map +1 -0
- package/dist/primitives/queueItem/QueueItemText.js +19 -0
- package/dist/primitives/queueItem/QueueItemText.js.map +1 -0
- package/dist/primitives/queueItem.d.ts +4 -0
- package/dist/primitives/queueItem.d.ts.map +1 -0
- package/dist/primitives/queueItem.js +4 -0
- package/dist/primitives/queueItem.js.map +1 -0
- package/dist/primitives/selectionToolbar.d.ts +3 -0
- package/dist/primitives/selectionToolbar.d.ts.map +1 -0
- package/dist/primitives/selectionToolbar.js +3 -0
- package/dist/primitives/selectionToolbar.js.map +1 -0
- package/dist/primitives/suggestion.d.ts +4 -0
- package/dist/primitives/suggestion.d.ts.map +1 -0
- package/dist/primitives/suggestion.js +4 -0
- package/dist/primitives/suggestion.js.map +1 -0
- package/dist/primitives/thread/ThreadRoot.d.ts +3 -1
- package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadRoot.js +3 -1
- package/dist/primitives/thread/ThreadRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.js +8 -29
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.d.ts +3 -1
- package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +3 -1
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.d.ts +3 -1
- package/dist/primitives/thread/ThreadViewportFooter.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.js +3 -1
- package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -1
- package/dist/primitives/thread.d.ts +13 -0
- package/dist/primitives/thread.d.ts.map +1 -0
- package/dist/primitives/thread.js +13 -0
- package/dist/primitives/thread.js.map +1 -0
- package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.js +4 -5
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
- package/dist/primitives/threadList.d.ts +5 -0
- package/dist/primitives/threadList.d.ts.map +1 -0
- package/dist/primitives/threadList.js +5 -0
- package/dist/primitives/threadList.js.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.js +3 -6
- 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 +3 -6
- package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js +3 -6
- 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 +3 -6
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
- package/dist/primitives/threadListItem.d.ts +7 -0
- package/dist/primitives/threadListItem.d.ts.map +1 -0
- package/dist/primitives/threadListItem.js +7 -0
- package/dist/primitives/threadListItem.js.map +1 -0
- package/dist/primitives/threadListItemMore.d.ts +6 -0
- package/dist/primitives/threadListItemMore.d.ts.map +1 -0
- package/dist/primitives/threadListItemMore.js +6 -0
- package/dist/primitives/threadListItemMore.js.map +1 -0
- package/dist/unstable/useToolMentionAdapter.d.ts +42 -0
- package/dist/unstable/useToolMentionAdapter.d.ts.map +1 -0
- package/dist/unstable/useToolMentionAdapter.js +65 -0
- package/dist/unstable/useToolMentionAdapter.js.map +1 -0
- package/package.json +12 -12
- package/src/client/ExternalThread.ts +161 -32
- package/src/client/InMemoryThreadList.ts +24 -35
- package/src/client/SingleThreadList.ts +95 -0
- package/src/context/index.ts +67 -3
- package/src/context/react/ThreadViewportContext.ts +1 -1
- package/src/hooks/useMessageQuote.ts +3 -7
- package/src/index.ts +357 -8
- package/src/internal.ts +5 -1
- package/src/legacy-runtime/AssistantRuntimeProvider.tsx +1 -1
- package/src/legacy-runtime/cloud/useCloudThreadListRuntime.ts +1 -1
- package/src/legacy-runtime/hooks/MessageContext.ts +1 -1
- package/src/legacy-runtime/hooks/ThreadContext.ts +2 -2
- package/src/legacy-runtime/runtime-cores/assistant-transport/types.ts +4 -1
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.ts +1 -1
- package/src/model-context/frame/SPEC_AssistantFrame.md +2 -2
- package/src/primitives/actionBar/ActionBarSpeak.ts +4 -17
- package/src/primitives/actionBar/ActionBarStopSpeaking.tsx +4 -12
- package/src/primitives/actionBar.ts +9 -0
- package/src/primitives/actionBarMore.ts +5 -0
- package/src/primitives/assistantModal.ts +4 -0
- package/src/primitives/attachment/AttachmentThumb.tsx +1 -1
- package/src/primitives/attachment.ts +4 -0
- package/src/primitives/branchPicker/BranchPickerNext.ts +3 -20
- package/src/primitives/branchPicker/BranchPickerPrevious.ts +3 -41
- package/src/primitives/branchPicker/BranchPickerRoot.tsx +1 -1
- package/src/primitives/branchPicker.ts +5 -0
- package/src/primitives/{chainOfThought/index.ts → chainOfThought.ts} +3 -3
- package/src/primitives/composer/ComposerDictate.ts +3 -15
- package/src/primitives/composer/ComposerInput.tsx +49 -5
- package/src/primitives/composer/ComposerQueue.tsx +3 -0
- package/src/primitives/composer/ComposerSend.ts +3 -1
- package/src/primitives/composer/mention/ComposerMentionBack.tsx +55 -0
- package/src/primitives/composer/mention/ComposerMentionCategories.tsx +104 -0
- package/src/primitives/composer/mention/ComposerMentionContext.tsx +141 -0
- package/src/primitives/composer/mention/ComposerMentionItems.tsx +104 -0
- package/src/primitives/composer/mention/ComposerMentionPopover.tsx +52 -0
- package/src/primitives/composer/mention/MentionResource.ts +328 -0
- package/src/primitives/composer/mention/detectMentionTrigger.test.ts +78 -0
- package/src/primitives/composer/mention/detectMentionTrigger.ts +37 -0
- package/src/primitives/composer/mention/index.ts +16 -0
- package/src/primitives/composer.ts +25 -0
- package/src/primitives/error/ErrorMessage.tsx +2 -7
- package/src/primitives/error.ts +2 -0
- package/src/primitives/message/MessageError.ts +3 -7
- package/src/primitives/message/MessageParts.tsx +11 -4
- package/src/primitives/message/MessagePartsGrouped.tsx +3 -5
- package/src/primitives/message.ts +13 -0
- package/src/primitives/messagePart.ts +4 -0
- package/src/primitives/queueItem/QueueItemRemove.ts +37 -0
- package/src/primitives/queueItem/QueueItemSteer.ts +37 -0
- package/src/primitives/queueItem/QueueItemText.tsx +37 -0
- package/src/primitives/queueItem.ts +3 -0
- package/src/primitives/{selectionToolbar/index.ts → selectionToolbar.ts} +2 -2
- package/src/primitives/suggestion.ts +3 -0
- package/src/primitives/thread/ThreadRoot.tsx +3 -1
- package/src/primitives/thread/ThreadSuggestion.ts +8 -30
- package/src/primitives/thread/ThreadViewport.tsx +3 -1
- package/src/primitives/thread/ThreadViewportFooter.tsx +3 -1
- package/src/primitives/thread.ts +15 -0
- package/src/primitives/threadList/ThreadListNew.tsx +4 -5
- package/src/primitives/threadList.ts +4 -0
- package/src/primitives/threadListItem/ThreadListItemArchive.ts +3 -6
- package/src/primitives/threadListItem/ThreadListItemDelete.ts +3 -6
- package/src/primitives/threadListItem/ThreadListItemTrigger.ts +3 -6
- package/src/primitives/threadListItem/ThreadListItemUnarchive.ts +3 -6
- package/src/primitives/threadListItem.ts +6 -0
- package/src/primitives/threadListItemMore.ts +5 -0
- package/src/unstable/useToolMentionAdapter.ts +114 -0
- package/dist/client/index.d.ts +0 -7
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -10
- package/dist/client/index.js.map +0 -1
- package/dist/context/providers/index.d.ts +0 -10
- package/dist/context/providers/index.d.ts.map +0 -1
- package/dist/context/providers/index.js +0 -10
- package/dist/context/providers/index.js.map +0 -1
- package/dist/context/react/index.d.ts +0 -9
- package/dist/context/react/index.d.ts.map +0 -1
- package/dist/context/react/index.js +0 -10
- package/dist/context/react/index.js.map +0 -1
- package/dist/context/stores/index.d.ts +0 -2
- package/dist/context/stores/index.d.ts.map +0 -1
- package/dist/context/stores/index.js +0 -2
- package/dist/context/stores/index.js.map +0 -1
- package/dist/devtools/index.d.ts +0 -2
- package/dist/devtools/index.d.ts.map +0 -1
- package/dist/devtools/index.js +0 -2
- package/dist/devtools/index.js.map +0 -1
- package/dist/legacy-runtime/cloud/index.d.ts +0 -3
- package/dist/legacy-runtime/cloud/index.d.ts.map +0 -1
- package/dist/legacy-runtime/cloud/index.js +0 -3
- package/dist/legacy-runtime/cloud/index.js.map +0 -1
- package/dist/legacy-runtime/runtime/index.d.ts +0 -2
- package/dist/legacy-runtime/runtime/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime/index.js +0 -2
- package/dist/legacy-runtime/runtime/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/attachment/index.d.ts +0 -4
- package/dist/legacy-runtime/runtime-cores/adapters/attachment/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/attachment/index.js +0 -4
- package/dist/legacy-runtime/runtime-cores/adapters/attachment/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/feedback/index.d.ts +0 -2
- package/dist/legacy-runtime/runtime-cores/adapters/feedback/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/feedback/index.js +0 -2
- package/dist/legacy-runtime/runtime-cores/adapters/feedback/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/index.d.ts +0 -7
- package/dist/legacy-runtime/runtime-cores/adapters/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/index.js +0 -7
- package/dist/legacy-runtime/runtime-cores/adapters/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/speech/index.d.ts +0 -3
- package/dist/legacy-runtime/runtime-cores/adapters/speech/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/speech/index.js +0 -2
- package/dist/legacy-runtime/runtime-cores/adapters/speech/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/suggestion/index.d.ts +0 -2
- package/dist/legacy-runtime/runtime-cores/adapters/suggestion/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/suggestion/index.js +0 -2
- package/dist/legacy-runtime/runtime-cores/adapters/suggestion/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/thread-history/index.d.ts +0 -2
- package/dist/legacy-runtime/runtime-cores/adapters/thread-history/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/adapters/thread-history/index.js +0 -2
- package/dist/legacy-runtime/runtime-cores/adapters/thread-history/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/index.d.ts +0 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/index.js +0 -2
- package/dist/legacy-runtime/runtime-cores/assistant-transport/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/core/index.d.ts +0 -2
- package/dist/legacy-runtime/runtime-cores/core/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/core/index.js +0 -2
- package/dist/legacy-runtime/runtime-cores/core/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/external-store/index.d.ts +0 -7
- package/dist/legacy-runtime/runtime-cores/external-store/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/external-store/index.js +0 -6
- package/dist/legacy-runtime/runtime-cores/external-store/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/index.d.ts +0 -9
- package/dist/legacy-runtime/runtime-cores/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/index.js +0 -8
- package/dist/legacy-runtime/runtime-cores/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/local/index.d.ts +0 -8
- package/dist/legacy-runtime/runtime-cores/local/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/local/index.js +0 -7
- package/dist/legacy-runtime/runtime-cores/local/index.js.map +0 -1
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/index.d.ts +0 -5
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/index.d.ts.map +0 -1
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/index.js +0 -5
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/index.js.map +0 -1
- package/dist/model-context/frame/index.d.ts +0 -6
- package/dist/model-context/frame/index.d.ts.map +0 -1
- package/dist/model-context/frame/index.js +0 -5
- package/dist/model-context/frame/index.js.map +0 -1
- package/dist/model-context/index.d.ts +0 -10
- package/dist/model-context/index.d.ts.map +0 -1
- package/dist/model-context/index.js +0 -11
- package/dist/model-context/index.js.map +0 -1
- package/dist/model-context/registry/index.d.ts +0 -3
- package/dist/model-context/registry/index.d.ts.map +0 -1
- package/dist/model-context/registry/index.js +0 -2
- package/dist/model-context/registry/index.js.map +0 -1
- package/dist/primitives/actionBar/index.d.ts +0 -10
- package/dist/primitives/actionBar/index.d.ts.map +0 -1
- package/dist/primitives/actionBar/index.js +0 -10
- package/dist/primitives/actionBar/index.js.map +0 -1
- package/dist/primitives/actionBarMore/index.d.ts +0 -6
- package/dist/primitives/actionBarMore/index.d.ts.map +0 -1
- package/dist/primitives/actionBarMore/index.js +0 -6
- package/dist/primitives/actionBarMore/index.js.map +0 -1
- package/dist/primitives/assistantModal/index.d.ts +0 -5
- package/dist/primitives/assistantModal/index.d.ts.map +0 -1
- package/dist/primitives/assistantModal/index.js +0 -5
- package/dist/primitives/assistantModal/index.js.map +0 -1
- package/dist/primitives/attachment/index.d.ts +0 -5
- package/dist/primitives/attachment/index.d.ts.map +0 -1
- package/dist/primitives/attachment/index.js +0 -5
- package/dist/primitives/attachment/index.js.map +0 -1
- package/dist/primitives/branchPicker/index.d.ts +0 -6
- package/dist/primitives/branchPicker/index.d.ts.map +0 -1
- package/dist/primitives/branchPicker/index.js +0 -6
- package/dist/primitives/branchPicker/index.js.map +0 -1
- package/dist/primitives/chainOfThought/index.d.ts +0 -4
- package/dist/primitives/chainOfThought/index.d.ts.map +0 -1
- package/dist/primitives/chainOfThought/index.js +0 -4
- package/dist/primitives/chainOfThought/index.js.map +0 -1
- package/dist/primitives/composer/index.d.ts +0 -16
- package/dist/primitives/composer/index.d.ts.map +0 -1
- package/dist/primitives/composer/index.js +0 -16
- package/dist/primitives/composer/index.js.map +0 -1
- package/dist/primitives/error/index.d.ts +0 -3
- package/dist/primitives/error/index.d.ts.map +0 -1
- package/dist/primitives/error/index.js +0 -3
- package/dist/primitives/error/index.js.map +0 -1
- package/dist/primitives/index.d.ts +0 -27
- package/dist/primitives/index.d.ts.map +0 -1
- package/dist/primitives/index.js +0 -27
- package/dist/primitives/index.js.map +0 -1
- package/dist/primitives/message/index.d.ts +0 -10
- package/dist/primitives/message/index.d.ts.map +0 -1
- package/dist/primitives/message/index.js +0 -10
- package/dist/primitives/message/index.js.map +0 -1
- package/dist/primitives/messagePart/index.d.ts +0 -4
- package/dist/primitives/messagePart/index.d.ts.map +0 -1
- package/dist/primitives/messagePart/index.js +0 -4
- package/dist/primitives/messagePart/index.js.map +0 -1
- package/dist/primitives/reasoning/index.d.ts +0 -2
- package/dist/primitives/reasoning/index.d.ts.map +0 -1
- package/dist/primitives/reasoning/index.js +0 -2
- package/dist/primitives/reasoning/index.js.map +0 -1
- package/dist/primitives/selectionToolbar/index.d.ts +0 -3
- package/dist/primitives/selectionToolbar/index.d.ts.map +0 -1
- package/dist/primitives/selectionToolbar/index.js +0 -3
- package/dist/primitives/selectionToolbar/index.js.map +0 -1
- package/dist/primitives/suggestion/index.d.ts +0 -4
- package/dist/primitives/suggestion/index.d.ts.map +0 -1
- package/dist/primitives/suggestion/index.js +0 -4
- package/dist/primitives/suggestion/index.js.map +0 -1
- package/dist/primitives/thread/index.d.ts +0 -13
- package/dist/primitives/thread/index.d.ts.map +0 -1
- package/dist/primitives/thread/index.js +0 -13
- package/dist/primitives/thread/index.js.map +0 -1
- package/dist/primitives/threadList/index.d.ts +0 -5
- package/dist/primitives/threadList/index.d.ts.map +0 -1
- package/dist/primitives/threadList/index.js +0 -5
- package/dist/primitives/threadList/index.js.map +0 -1
- package/dist/primitives/threadListItem/index.d.ts +0 -7
- package/dist/primitives/threadListItem/index.d.ts.map +0 -1
- package/dist/primitives/threadListItem/index.js +0 -7
- package/dist/primitives/threadListItem/index.js.map +0 -1
- package/dist/primitives/threadListItemMore/index.d.ts +0 -6
- package/dist/primitives/threadListItemMore/index.d.ts.map +0 -1
- package/dist/primitives/threadListItemMore/index.js +0 -6
- package/dist/primitives/threadListItemMore/index.js.map +0 -1
- package/dist/types/index.d.ts +0 -4
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -2
- package/dist/types/index.js.map +0 -1
- package/dist/types/scopes/index.d.ts +0 -3
- package/dist/types/scopes/index.d.ts.map +0 -1
- package/dist/types/scopes/index.js +0 -2
- package/dist/types/scopes/index.js.map +0 -1
- package/dist/utils/smooth/index.d.ts +0 -3
- package/dist/utils/smooth/index.d.ts.map +0 -1
- package/dist/utils/smooth/index.js +0 -6
- package/dist/utils/smooth/index.js.map +0 -1
- package/src/client/index.ts +0 -18
- package/src/context/providers/index.ts +0 -15
- package/src/context/react/index.ts +0 -50
- package/src/context/stores/index.ts +0 -1
- package/src/devtools/index.ts +0 -1
- package/src/legacy-runtime/cloud/index.ts +0 -2
- package/src/legacy-runtime/runtime/index.ts +0 -25
- package/src/legacy-runtime/runtime-cores/adapters/attachment/index.ts +0 -10
- package/src/legacy-runtime/runtime-cores/adapters/feedback/index.ts +0 -2
- package/src/legacy-runtime/runtime-cores/adapters/index.ts +0 -6
- package/src/legacy-runtime/runtime-cores/adapters/speech/index.ts +0 -9
- package/src/legacy-runtime/runtime-cores/adapters/suggestion/index.ts +0 -2
- package/src/legacy-runtime/runtime-cores/adapters/thread-history/index.ts +0 -9
- package/src/legacy-runtime/runtime-cores/assistant-transport/index.ts +0 -11
- package/src/legacy-runtime/runtime-cores/core/index.ts +0 -7
- package/src/legacy-runtime/runtime-cores/external-store/index.ts +0 -21
- package/src/legacy-runtime/runtime-cores/index.ts +0 -10
- package/src/legacy-runtime/runtime-cores/local/index.ts +0 -18
- package/src/legacy-runtime/runtime-cores/remote-thread-list/index.ts +0 -7
- package/src/model-context/frame/index.ts +0 -10
- package/src/model-context/index.ts +0 -45
- package/src/model-context/registry/index.ts +0 -6
- package/src/primitives/actionBar/index.ts +0 -9
- package/src/primitives/actionBarMore/index.ts +0 -5
- package/src/primitives/assistantModal/index.ts +0 -4
- package/src/primitives/attachment/index.ts +0 -4
- package/src/primitives/branchPicker/index.ts +0 -5
- package/src/primitives/composer/index.ts +0 -15
- package/src/primitives/error/index.ts +0 -2
- package/src/primitives/index.ts +0 -27
- package/src/primitives/message/index.ts +0 -12
- package/src/primitives/messagePart/index.ts +0 -3
- package/src/primitives/reasoning/index.ts +0 -1
- package/src/primitives/suggestion/index.ts +0 -3
- package/src/primitives/thread/index.ts +0 -15
- package/src/primitives/threadList/index.ts +0 -4
- package/src/primitives/threadListItem/index.ts +0 -6
- package/src/primitives/threadListItemMore/index.ts +0 -5
- package/src/types/index.ts +0 -56
- package/src/types/scopes/index.ts +0 -59
- package/src/utils/smooth/index.ts +0 -6
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
tapEffectEvent,
|
|
7
7
|
} from "@assistant-ui/tap";
|
|
8
8
|
import {
|
|
9
|
+
type ClientElement,
|
|
9
10
|
type ClientOutput,
|
|
10
11
|
tapClientLookup,
|
|
11
12
|
attachTransformScopes,
|
|
@@ -14,34 +15,60 @@ import {
|
|
|
14
15
|
} from "@assistant-ui/store";
|
|
15
16
|
import { withKey } from "@assistant-ui/tap";
|
|
16
17
|
import type {
|
|
18
|
+
AppendMessage,
|
|
17
19
|
Attachment,
|
|
18
20
|
CreateAttachment,
|
|
19
21
|
ThreadAssistantMessagePart,
|
|
20
22
|
ThreadUserMessagePart,
|
|
21
23
|
ThreadMessage,
|
|
22
24
|
} from "@assistant-ui/core";
|
|
25
|
+
import type { QueueItemState } from "@assistant-ui/core/store";
|
|
26
|
+
import type { ComposerSendOptions } from "@assistant-ui/core/store";
|
|
23
27
|
import { ModelContext, Suggestions } from "@assistant-ui/core/store";
|
|
24
28
|
import { Tools, DataRenderers } from "@assistant-ui/core/react";
|
|
29
|
+
import { SingleThreadList } from "./SingleThreadList";
|
|
30
|
+
|
|
31
|
+
const EMPTY_QUEUE_ITEMS: readonly QueueItemState[] = [];
|
|
25
32
|
|
|
26
33
|
export type ExternalThreadMessage = ThreadMessage & {
|
|
27
34
|
id: string;
|
|
28
35
|
};
|
|
29
36
|
|
|
37
|
+
export type ExternalThreadQueueAdapter = {
|
|
38
|
+
/** The current queue items. */
|
|
39
|
+
items: readonly QueueItemState[];
|
|
40
|
+
/** Called when a message is submitted via the composer. Receives the steer preference. */
|
|
41
|
+
enqueue: (message: AppendMessage, opts: { steer: boolean }) => void;
|
|
42
|
+
/** Called to promote an existing queue item (cancel current run, run this immediately). */
|
|
43
|
+
steer: (queueItemId: string) => void;
|
|
44
|
+
/** Called to remove an item from the queue. */
|
|
45
|
+
remove: (queueItemId: string) => void;
|
|
46
|
+
/** Called to clear all pending queue items, with the reason for clearing. */
|
|
47
|
+
clear: (reason: "edit" | "reload" | "cancel-run") => void;
|
|
48
|
+
};
|
|
49
|
+
|
|
30
50
|
export type ExternalThreadProps = {
|
|
31
51
|
messages: readonly ExternalThreadMessage[];
|
|
32
52
|
isRunning?: boolean;
|
|
33
|
-
|
|
34
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Callback for new messages (non-queue runtimes).
|
|
55
|
+
* @note Unused when `queue` is provided — new messages are routed through `queue.enqueue` instead.
|
|
56
|
+
*/
|
|
57
|
+
onNew?: (message: AppendMessage) => void;
|
|
58
|
+
onEdit?: (message: AppendMessage) => void;
|
|
35
59
|
onReload?: (parentId: string | null) => void;
|
|
36
60
|
onStartRun?: () => void;
|
|
37
61
|
onCancel?: () => void;
|
|
62
|
+
/** Queue adapter for runtimes that support message queuing and steering. */
|
|
63
|
+
queue?: ExternalThreadQueueAdapter;
|
|
38
64
|
};
|
|
39
65
|
|
|
40
66
|
type MessageClientProps = {
|
|
41
67
|
message: ExternalThreadMessage;
|
|
42
68
|
index: number;
|
|
43
|
-
onEdit?: (message:
|
|
69
|
+
onEdit?: (message: AppendMessage) => void;
|
|
44
70
|
onReload?: () => void;
|
|
71
|
+
queue?: ExternalThreadQueueAdapter | undefined;
|
|
45
72
|
};
|
|
46
73
|
|
|
47
74
|
// Message Client - minimal implementation
|
|
@@ -51,6 +78,7 @@ const MessageClient = resource(
|
|
|
51
78
|
index,
|
|
52
79
|
onEdit,
|
|
53
80
|
onReload,
|
|
81
|
+
queue,
|
|
54
82
|
}: MessageClientProps): ClientOutput<"message"> => {
|
|
55
83
|
const [isCopied, setIsCopied] = tapState(false);
|
|
56
84
|
const [isHovering, setIsHovering] = tapState(false);
|
|
@@ -86,7 +114,8 @@ const MessageClient = resource(
|
|
|
86
114
|
setIsEditing(false);
|
|
87
115
|
};
|
|
88
116
|
|
|
89
|
-
const handleSendEdit = (msg:
|
|
117
|
+
const handleSendEdit = (msg: AppendMessage) => {
|
|
118
|
+
queue?.clear("edit");
|
|
90
119
|
onEdit?.({
|
|
91
120
|
...msg,
|
|
92
121
|
parentId: message.id,
|
|
@@ -104,6 +133,7 @@ const MessageClient = resource(
|
|
|
104
133
|
onBeginEdit: handleBeginEdit,
|
|
105
134
|
onSend: handleSendEdit,
|
|
106
135
|
message,
|
|
136
|
+
queue,
|
|
107
137
|
}),
|
|
108
138
|
);
|
|
109
139
|
|
|
@@ -214,10 +244,29 @@ type ComposerClientResourceProps = {
|
|
|
214
244
|
canCancel: boolean;
|
|
215
245
|
onCancel: () => void;
|
|
216
246
|
onBeginEdit?: () => void;
|
|
217
|
-
onSend?: (message:
|
|
247
|
+
onSend?: (message: AppendMessage) => void;
|
|
218
248
|
message?: ExternalThreadMessage;
|
|
249
|
+
queue?: ExternalThreadQueueAdapter | undefined;
|
|
219
250
|
};
|
|
220
251
|
|
|
252
|
+
const QueueItemClient = resource(
|
|
253
|
+
({
|
|
254
|
+
item,
|
|
255
|
+
onSteer,
|
|
256
|
+
onRemove,
|
|
257
|
+
}: {
|
|
258
|
+
item: QueueItemState;
|
|
259
|
+
onSteer: () => void;
|
|
260
|
+
onRemove: () => void;
|
|
261
|
+
}): ClientOutput<"queueItem"> => {
|
|
262
|
+
return {
|
|
263
|
+
getState: () => item,
|
|
264
|
+
steer: onSteer,
|
|
265
|
+
remove: onRemove,
|
|
266
|
+
};
|
|
267
|
+
},
|
|
268
|
+
);
|
|
269
|
+
|
|
221
270
|
// Composer Client - minimal implementation
|
|
222
271
|
const ComposerClientResource = resource(
|
|
223
272
|
({
|
|
@@ -228,6 +277,7 @@ const ComposerClientResource = resource(
|
|
|
228
277
|
onBeginEdit,
|
|
229
278
|
onSend,
|
|
230
279
|
message,
|
|
280
|
+
queue,
|
|
231
281
|
}: ComposerClientResourceProps): ClientOutput<"composer"> => {
|
|
232
282
|
const [text, setText] = tapState("");
|
|
233
283
|
const [role, setRole] = tapState<"user" | "assistant" | "system">("user");
|
|
@@ -276,6 +326,22 @@ const ComposerClientResource = resource(
|
|
|
276
326
|
[attachments],
|
|
277
327
|
);
|
|
278
328
|
|
|
329
|
+
const queueItems = queue?.items ?? EMPTY_QUEUE_ITEMS;
|
|
330
|
+
const queueItemClients = tapClientLookup(
|
|
331
|
+
() =>
|
|
332
|
+
queueItems.map((item) =>
|
|
333
|
+
withKey(
|
|
334
|
+
item.id,
|
|
335
|
+
QueueItemClient({
|
|
336
|
+
item,
|
|
337
|
+
onSteer: () => queue?.steer(item.id),
|
|
338
|
+
onRemove: () => queue?.remove(item.id),
|
|
339
|
+
}),
|
|
340
|
+
),
|
|
341
|
+
),
|
|
342
|
+
[queueItems],
|
|
343
|
+
);
|
|
344
|
+
|
|
279
345
|
const state = tapMemo(
|
|
280
346
|
() => ({
|
|
281
347
|
text,
|
|
@@ -289,6 +355,7 @@ const ComposerClientResource = resource(
|
|
|
289
355
|
type,
|
|
290
356
|
dictation: undefined,
|
|
291
357
|
quote,
|
|
358
|
+
queue: queueItems,
|
|
292
359
|
}),
|
|
293
360
|
[
|
|
294
361
|
text,
|
|
@@ -300,6 +367,7 @@ const ComposerClientResource = resource(
|
|
|
300
367
|
type,
|
|
301
368
|
attachments.length,
|
|
302
369
|
quote,
|
|
370
|
+
queueItems,
|
|
303
371
|
],
|
|
304
372
|
);
|
|
305
373
|
|
|
@@ -348,19 +416,25 @@ const ComposerClientResource = resource(
|
|
|
348
416
|
setAttachments([]);
|
|
349
417
|
setQuote(undefined);
|
|
350
418
|
},
|
|
351
|
-
send: () => {
|
|
419
|
+
send: (opts?: ComposerSendOptions) => {
|
|
352
420
|
const currentQuote = quote;
|
|
353
|
-
const
|
|
421
|
+
const composedMessage: AppendMessage = {
|
|
354
422
|
role,
|
|
355
423
|
content: text ? [{ type: "text" as const, text }] : [],
|
|
356
424
|
attachments: attachments as any,
|
|
357
425
|
createdAt: new Date(),
|
|
426
|
+
parentId: null,
|
|
427
|
+
sourceId: null,
|
|
358
428
|
runConfig,
|
|
359
429
|
metadata: {
|
|
360
430
|
custom: { ...(currentQuote ? { quote: currentQuote } : {}) },
|
|
361
431
|
},
|
|
362
432
|
};
|
|
363
|
-
|
|
433
|
+
if (queue) {
|
|
434
|
+
queue.enqueue(composedMessage, { steer: opts?.steer ?? false });
|
|
435
|
+
} else {
|
|
436
|
+
onSend?.(composedMessage);
|
|
437
|
+
}
|
|
364
438
|
setText("");
|
|
365
439
|
setAttachments([]);
|
|
366
440
|
setQuote(undefined);
|
|
@@ -372,6 +446,9 @@ const ComposerClientResource = resource(
|
|
|
372
446
|
startDictation: () => {},
|
|
373
447
|
stopDictation: () => {},
|
|
374
448
|
setQuote,
|
|
449
|
+
queueItem: (selector: { index: number }) => {
|
|
450
|
+
return queueItemClients.get(selector);
|
|
451
|
+
},
|
|
375
452
|
};
|
|
376
453
|
},
|
|
377
454
|
);
|
|
@@ -386,12 +463,14 @@ export const ExternalThread = resource(
|
|
|
386
463
|
onReload,
|
|
387
464
|
onStartRun,
|
|
388
465
|
onCancel,
|
|
466
|
+
queue,
|
|
389
467
|
}: ExternalThreadProps): ClientOutput<"thread"> => {
|
|
390
468
|
const handleReload = (messageId: string) => {
|
|
391
469
|
const messageIndex = messages.findIndex((m) => m.id === messageId);
|
|
392
470
|
if (messageIndex === -1) return;
|
|
393
471
|
|
|
394
472
|
const parentId = messageIndex > 0 ? messages[messageIndex - 1]!.id : null;
|
|
473
|
+
queue?.clear("reload");
|
|
395
474
|
onReload?.(parentId);
|
|
396
475
|
};
|
|
397
476
|
|
|
@@ -402,18 +481,20 @@ export const ExternalThread = resource(
|
|
|
402
481
|
message: msg,
|
|
403
482
|
index,
|
|
404
483
|
onReload: () => handleReload(msg.id),
|
|
484
|
+
queue,
|
|
405
485
|
};
|
|
406
486
|
if (onEdit) props.onEdit = onEdit;
|
|
407
487
|
return withKey(msg.id, MessageClient(props));
|
|
408
488
|
}),
|
|
409
|
-
[messages, onEdit],
|
|
489
|
+
[messages, onEdit, queue],
|
|
410
490
|
);
|
|
411
491
|
|
|
412
492
|
const handleCancelRun = () => {
|
|
493
|
+
queue?.clear("cancel-run");
|
|
413
494
|
onCancel?.();
|
|
414
495
|
};
|
|
415
496
|
|
|
416
|
-
const handleSendNew = (message:
|
|
497
|
+
const handleSendNew = (message: AppendMessage) => {
|
|
417
498
|
onNew?.(message);
|
|
418
499
|
};
|
|
419
500
|
|
|
@@ -424,9 +505,11 @@ export const ExternalThread = resource(
|
|
|
424
505
|
canCancel: isRunning,
|
|
425
506
|
onCancel: handleCancelRun,
|
|
426
507
|
onSend: handleSendNew,
|
|
508
|
+
queue,
|
|
427
509
|
}),
|
|
428
510
|
);
|
|
429
511
|
|
|
512
|
+
const hasQueue = !!queue;
|
|
430
513
|
const state = tapMemo(() => {
|
|
431
514
|
const messageStates = messageClients.state.map((s, idx, arr) => ({
|
|
432
515
|
...s,
|
|
@@ -449,6 +532,7 @@ export const ExternalThread = resource(
|
|
|
449
532
|
switchBranchDuringRun: false,
|
|
450
533
|
unstable_copy: false,
|
|
451
534
|
dictation: false,
|
|
535
|
+
queue: hasQueue,
|
|
452
536
|
},
|
|
453
537
|
messages: messageStates,
|
|
454
538
|
state: {},
|
|
@@ -457,17 +541,51 @@ export const ExternalThread = resource(
|
|
|
457
541
|
speech: undefined,
|
|
458
542
|
composer: composerClient.state,
|
|
459
543
|
};
|
|
460
|
-
}, [
|
|
544
|
+
}, [
|
|
545
|
+
messages,
|
|
546
|
+
isRunning,
|
|
547
|
+
hasQueue,
|
|
548
|
+
messageClients.state,
|
|
549
|
+
composerClient.state,
|
|
550
|
+
]);
|
|
461
551
|
|
|
462
552
|
return {
|
|
463
553
|
getState: () => state,
|
|
464
554
|
composer: () => composerClient.methods,
|
|
465
555
|
append: (message) => {
|
|
466
|
-
|
|
556
|
+
const appendMessage: AppendMessage =
|
|
557
|
+
typeof message === "string"
|
|
558
|
+
? {
|
|
559
|
+
createdAt: new Date(),
|
|
560
|
+
parentId: messages.at(-1)?.id ?? null,
|
|
561
|
+
sourceId: null,
|
|
562
|
+
runConfig: {},
|
|
563
|
+
role: "user",
|
|
564
|
+
content: [{ type: "text", text: message }],
|
|
565
|
+
attachments: [],
|
|
566
|
+
metadata: { custom: {} },
|
|
567
|
+
}
|
|
568
|
+
: {
|
|
569
|
+
createdAt: message.createdAt ?? new Date(),
|
|
570
|
+
parentId: message.parentId ?? messages.at(-1)?.id ?? null,
|
|
571
|
+
sourceId: message.sourceId ?? null,
|
|
572
|
+
role: message.role ?? "user",
|
|
573
|
+
content: message.content,
|
|
574
|
+
attachments: message.attachments ?? [],
|
|
575
|
+
metadata: message.metadata ?? { custom: {} },
|
|
576
|
+
runConfig: message.runConfig ?? {},
|
|
577
|
+
startRun: message.startRun,
|
|
578
|
+
};
|
|
579
|
+
if (queue) {
|
|
580
|
+
queue.enqueue(appendMessage, { steer: false });
|
|
581
|
+
} else {
|
|
582
|
+
onNew?.(appendMessage);
|
|
583
|
+
}
|
|
467
584
|
},
|
|
468
585
|
startRun: () => {
|
|
469
586
|
onStartRun?.();
|
|
470
587
|
},
|
|
588
|
+
resumeRun: () => {},
|
|
471
589
|
unstable_resumeRun: () => {},
|
|
472
590
|
cancelRun: handleCancelRun,
|
|
473
591
|
getModelContext: () => ({ tools: {}, config: {} }),
|
|
@@ -488,29 +606,40 @@ export const ExternalThread = resource(
|
|
|
488
606
|
);
|
|
489
607
|
|
|
490
608
|
attachTransformScopes(ExternalThread, (scopes, parent) => {
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
609
|
+
if (!scopes.threads && parent.threads.source === null) {
|
|
610
|
+
const threadElement = scopes.thread as ClientElement<"thread">;
|
|
611
|
+
scopes.threads = SingleThreadList({ thread: threadElement });
|
|
612
|
+
scopes.thread = Derived({
|
|
613
|
+
source: "threads",
|
|
614
|
+
query: { type: "main" },
|
|
615
|
+
get: (aui) => aui.threads().thread("main"),
|
|
616
|
+
});
|
|
617
|
+
}
|
|
618
|
+
|
|
619
|
+
if (!scopes.threadListItem && parent.threadListItem.source === null) {
|
|
620
|
+
scopes.threadListItem = Derived({
|
|
621
|
+
source: "threads",
|
|
622
|
+
query: { type: "main" },
|
|
623
|
+
get: (aui) => aui.threads().item("main"),
|
|
624
|
+
});
|
|
625
|
+
}
|
|
501
626
|
|
|
502
|
-
|
|
503
|
-
|
|
627
|
+
scopes.composer ??= Derived({
|
|
628
|
+
source: "thread",
|
|
629
|
+
query: {},
|
|
630
|
+
get: (aui) => aui.thread().composer(),
|
|
631
|
+
});
|
|
632
|
+
|
|
633
|
+
if (!scopes.modelContext && parent.modelContext.source === null) {
|
|
634
|
+
scopes.modelContext = ModelContext();
|
|
504
635
|
}
|
|
505
|
-
if (!
|
|
506
|
-
|
|
636
|
+
if (!scopes.tools && parent.tools.source === null) {
|
|
637
|
+
scopes.tools = Tools({});
|
|
507
638
|
}
|
|
508
|
-
if (!
|
|
509
|
-
|
|
639
|
+
if (!scopes.dataRenderers && parent.dataRenderers.source === null) {
|
|
640
|
+
scopes.dataRenderers = DataRenderers();
|
|
510
641
|
}
|
|
511
|
-
if (!
|
|
512
|
-
|
|
642
|
+
if (!scopes.suggestions && parent.suggestions.source === null) {
|
|
643
|
+
scopes.suggestions = Suggestions();
|
|
513
644
|
}
|
|
514
|
-
|
|
515
|
-
return result;
|
|
516
645
|
});
|
|
@@ -168,43 +168,32 @@ export const InMemoryThreadList = resource(
|
|
|
168
168
|
);
|
|
169
169
|
|
|
170
170
|
attachTransformScopes(InMemoryThreadList, (scopes, parent) => {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
Derived({
|
|
190
|
-
source: "thread",
|
|
191
|
-
query: {},
|
|
192
|
-
get: (aui) => aui.threads().thread("main").composer(),
|
|
193
|
-
}),
|
|
194
|
-
};
|
|
195
|
-
|
|
196
|
-
if (!result.modelContext && parent.modelContext.source === null) {
|
|
197
|
-
result.modelContext = ModelContext();
|
|
171
|
+
scopes.thread ??= Derived({
|
|
172
|
+
source: "threads",
|
|
173
|
+
query: { type: "main" },
|
|
174
|
+
get: (aui) => aui.threads().thread("main"),
|
|
175
|
+
});
|
|
176
|
+
scopes.threadListItem ??= Derived({
|
|
177
|
+
source: "threads",
|
|
178
|
+
query: { type: "main" },
|
|
179
|
+
get: (aui) => aui.threads().item("main"),
|
|
180
|
+
});
|
|
181
|
+
scopes.composer ??= Derived({
|
|
182
|
+
source: "thread",
|
|
183
|
+
query: {},
|
|
184
|
+
get: (aui) => aui.threads().thread("main").composer(),
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
if (!scopes.modelContext && parent.modelContext.source === null) {
|
|
188
|
+
scopes.modelContext = ModelContext();
|
|
198
189
|
}
|
|
199
|
-
if (!
|
|
200
|
-
|
|
190
|
+
if (!scopes.tools && parent.tools.source === null) {
|
|
191
|
+
scopes.tools = Tools({});
|
|
201
192
|
}
|
|
202
|
-
if (!
|
|
203
|
-
|
|
193
|
+
if (!scopes.dataRenderers && parent.dataRenderers.source === null) {
|
|
194
|
+
scopes.dataRenderers = DataRenderers();
|
|
204
195
|
}
|
|
205
|
-
if (!
|
|
206
|
-
|
|
196
|
+
if (!scopes.suggestions && parent.suggestions.source === null) {
|
|
197
|
+
scopes.suggestions = Suggestions();
|
|
207
198
|
}
|
|
208
|
-
|
|
209
|
-
return result;
|
|
210
199
|
});
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { resource, tapMemo } from "@assistant-ui/tap";
|
|
2
|
+
import {
|
|
3
|
+
type ClientElement,
|
|
4
|
+
type ClientOutput,
|
|
5
|
+
tapClientResource,
|
|
6
|
+
} from "@assistant-ui/store";
|
|
7
|
+
|
|
8
|
+
const THREAD_ID = "default";
|
|
9
|
+
|
|
10
|
+
const SingleThreadListItem = resource((): ClientOutput<"threadListItem"> => {
|
|
11
|
+
return {
|
|
12
|
+
getState: () => ({
|
|
13
|
+
id: THREAD_ID,
|
|
14
|
+
remoteId: undefined,
|
|
15
|
+
externalId: undefined,
|
|
16
|
+
title: undefined,
|
|
17
|
+
status: "regular",
|
|
18
|
+
}),
|
|
19
|
+
switchTo: () => {},
|
|
20
|
+
rename: () => {},
|
|
21
|
+
archive: () => {},
|
|
22
|
+
unarchive: () => {},
|
|
23
|
+
delete: () => {},
|
|
24
|
+
generateTitle: () => {},
|
|
25
|
+
initialize: async () => ({ remoteId: THREAD_ID, externalId: undefined }),
|
|
26
|
+
detach: () => {},
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
type SingleThreadListProps = {
|
|
31
|
+
thread: ClientElement<"thread">;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* A minimal threads scope that wraps a single thread.
|
|
36
|
+
* Automatically provided by ExternalThread when no threads scope exists.
|
|
37
|
+
* Mounts the provided thread resource element.
|
|
38
|
+
*/
|
|
39
|
+
export const SingleThreadList = resource(
|
|
40
|
+
({ thread }: SingleThreadListProps): ClientOutput<"threads"> => {
|
|
41
|
+
const itemClient = tapClientResource(SingleThreadListItem());
|
|
42
|
+
const threadClient = tapClientResource(thread);
|
|
43
|
+
|
|
44
|
+
const state = tapMemo(
|
|
45
|
+
() => ({
|
|
46
|
+
mainThreadId: THREAD_ID,
|
|
47
|
+
newThreadId: null,
|
|
48
|
+
isLoading: false,
|
|
49
|
+
threadIds: [THREAD_ID],
|
|
50
|
+
archivedThreadIds: [],
|
|
51
|
+
threadItems: [itemClient.state],
|
|
52
|
+
main: threadClient.state,
|
|
53
|
+
}),
|
|
54
|
+
[itemClient.state, threadClient.state],
|
|
55
|
+
);
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
getState: () => state,
|
|
59
|
+
switchToThread: () => {
|
|
60
|
+
throw new Error("SingleThreadList does not support switchToThread");
|
|
61
|
+
},
|
|
62
|
+
switchToNewThread: () => {
|
|
63
|
+
throw new Error("SingleThreadList does not support switchToNewThread");
|
|
64
|
+
},
|
|
65
|
+
item: (selector) => {
|
|
66
|
+
if (
|
|
67
|
+
selector !== "main" &&
|
|
68
|
+
!(
|
|
69
|
+
typeof selector === "object" &&
|
|
70
|
+
"id" in selector &&
|
|
71
|
+
selector.id === THREAD_ID
|
|
72
|
+
) &&
|
|
73
|
+
!(
|
|
74
|
+
typeof selector === "object" &&
|
|
75
|
+
"index" in selector &&
|
|
76
|
+
selector.index === 0
|
|
77
|
+
)
|
|
78
|
+
) {
|
|
79
|
+
throw new Error(
|
|
80
|
+
`SingleThreadList: unknown item selector ${JSON.stringify(selector)}`,
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
return itemClient.methods;
|
|
84
|
+
},
|
|
85
|
+
thread: (selector) => {
|
|
86
|
+
if (selector !== "main" && selector !== THREAD_ID) {
|
|
87
|
+
throw new Error(
|
|
88
|
+
`SingleThreadList: unknown thread selector ${JSON.stringify(selector)}`,
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
return threadClient.methods;
|
|
92
|
+
},
|
|
93
|
+
};
|
|
94
|
+
},
|
|
95
|
+
);
|
package/src/context/index.ts
CHANGED
|
@@ -1,3 +1,67 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
|
|
1
|
+
export { AssistantRuntimeProvider } from "../legacy-runtime/AssistantRuntimeProvider";
|
|
2
|
+
export {
|
|
3
|
+
ThreadListItemByIndexProvider,
|
|
4
|
+
ThreadListItemRuntimeProvider,
|
|
5
|
+
} from "./providers/ThreadListItemProvider";
|
|
6
|
+
export { MessageByIndexProvider } from "./providers/MessageByIndexProvider";
|
|
7
|
+
export { SuggestionByIndexProvider } from "./providers/SuggestionByIndexProvider";
|
|
8
|
+
export { PartByIndexProvider } from "./providers/PartByIndexProvider";
|
|
9
|
+
export {
|
|
10
|
+
MessageAttachmentByIndexProvider,
|
|
11
|
+
ComposerAttachmentByIndexProvider,
|
|
12
|
+
} from "./providers/AttachmentByIndexProvider";
|
|
13
|
+
export { TextMessagePartProvider } from "./providers/TextMessagePartProvider";
|
|
14
|
+
export { MessageProvider } from "./providers/MessageProvider";
|
|
15
|
+
export { ChainOfThoughtByIndicesProvider } from "./providers/ChainOfThoughtByIndicesProvider";
|
|
16
|
+
export { ReadonlyThreadProvider } from "@assistant-ui/core/react";
|
|
17
|
+
|
|
18
|
+
export type { ThreadViewportState } from "./stores/ThreadViewport";
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
useThreadViewport,
|
|
22
|
+
useThreadViewportStore,
|
|
23
|
+
} from "./react/ThreadViewportContext";
|
|
24
|
+
|
|
25
|
+
export {
|
|
26
|
+
useAssistantRuntime,
|
|
27
|
+
useThreadList,
|
|
28
|
+
} from "../legacy-runtime/hooks/AssistantContext";
|
|
29
|
+
|
|
30
|
+
export {
|
|
31
|
+
useAttachmentRuntime,
|
|
32
|
+
useAttachment,
|
|
33
|
+
useThreadComposerAttachmentRuntime,
|
|
34
|
+
useThreadComposerAttachment,
|
|
35
|
+
useEditComposerAttachmentRuntime,
|
|
36
|
+
useEditComposerAttachment,
|
|
37
|
+
useMessageAttachment,
|
|
38
|
+
useMessageAttachmentRuntime,
|
|
39
|
+
} from "../legacy-runtime/hooks/AttachmentContext";
|
|
40
|
+
|
|
41
|
+
export {
|
|
42
|
+
useComposerRuntime,
|
|
43
|
+
useComposer,
|
|
44
|
+
} from "../legacy-runtime/hooks/ComposerContext";
|
|
45
|
+
|
|
46
|
+
export {
|
|
47
|
+
useMessageRuntime,
|
|
48
|
+
useEditComposer,
|
|
49
|
+
useMessage,
|
|
50
|
+
} from "../legacy-runtime/hooks/MessageContext";
|
|
51
|
+
|
|
52
|
+
export {
|
|
53
|
+
useMessagePartRuntime,
|
|
54
|
+
useMessagePart,
|
|
55
|
+
} from "../legacy-runtime/hooks/MessagePartContext";
|
|
56
|
+
|
|
57
|
+
export {
|
|
58
|
+
useThreadRuntime,
|
|
59
|
+
useThread,
|
|
60
|
+
useThreadComposer,
|
|
61
|
+
useThreadModelContext,
|
|
62
|
+
} from "../legacy-runtime/hooks/ThreadContext";
|
|
63
|
+
|
|
64
|
+
export {
|
|
65
|
+
useThreadListItemRuntime,
|
|
66
|
+
useThreadListItem,
|
|
67
|
+
} from "../legacy-runtime/hooks/ThreadListItemContext";
|
|
@@ -5,7 +5,7 @@ import { ReadonlyStore } from "../ReadonlyStore";
|
|
|
5
5
|
import { UseBoundStore } from "zustand";
|
|
6
6
|
import { createContextHook } from "./utils/createContextHook";
|
|
7
7
|
import { createContextStoreHook } from "./utils/createContextStoreHook";
|
|
8
|
-
import { ThreadViewportState } from "../stores";
|
|
8
|
+
import { ThreadViewportState } from "../stores/ThreadViewport";
|
|
9
9
|
|
|
10
10
|
export type ThreadViewportContextValue = {
|
|
11
11
|
useThreadViewport: UseBoundStore<ReadonlyStore<ThreadViewportState>>;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { useAuiState } from "@assistant-ui/store";
|
|
4
3
|
import type { QuoteInfo } from "@assistant-ui/core";
|
|
4
|
+
import { getMessageQuote } from "@assistant-ui/core/react";
|
|
5
|
+
import { useAuiState } from "@assistant-ui/store";
|
|
5
6
|
|
|
6
7
|
/**
|
|
7
8
|
* Hook that returns the quote info for the current message, if any.
|
|
@@ -18,10 +19,5 @@ import type { QuoteInfo } from "@assistant-ui/core";
|
|
|
18
19
|
* ```
|
|
19
20
|
*/
|
|
20
21
|
export const useMessageQuote = (): QuoteInfo | undefined => {
|
|
21
|
-
return useAuiState(
|
|
22
|
-
(s) =>
|
|
23
|
-
(s.message.metadata?.custom as Record<string, unknown>)?.quote as
|
|
24
|
-
| QuoteInfo
|
|
25
|
-
| undefined,
|
|
26
|
-
);
|
|
22
|
+
return useAuiState(getMessageQuote);
|
|
27
23
|
};
|