@assistant-ui/react-ink 0.0.2 → 0.0.6
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 +86 -0
- package/dist/context/AssistantContext.d.ts +1 -7
- package/dist/context/AssistantContext.d.ts.map +1 -1
- package/dist/context/AssistantContext.js +1 -15
- package/dist/context/AssistantContext.js.map +1 -1
- package/dist/index.d.ts +27 -18
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -21
- package/dist/index.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
- package/dist/primitives/actionBar.d.ts +6 -0
- package/dist/primitives/actionBar.d.ts.map +1 -0
- package/dist/primitives/actionBar.js +6 -0
- package/dist/primitives/actionBar.js.map +1 -0
- 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 -15
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.js +3 -15
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
- package/dist/primitives/branchPicker.d.ts +5 -0
- package/dist/primitives/branchPicker.d.ts.map +1 -0
- package/dist/primitives/branchPicker.js +5 -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/ComposerAddAttachment.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.js +3 -5
- package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.js +3 -3
- package/dist/primitives/composer/ComposerCancel.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.js +3 -3
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/composer.d.ts +8 -0
- package/dist/primitives/composer.d.ts.map +1 -0
- package/dist/primitives/composer.js +8 -0
- package/dist/primitives/composer.js.map +1 -0
- package/dist/primitives/error/ErrorMessage.d.ts +10 -0
- package/dist/primitives/error/ErrorMessage.d.ts.map +1 -0
- package/dist/primitives/error/ErrorMessage.js +11 -0
- package/dist/primitives/error/ErrorMessage.js.map +1 -0
- package/dist/primitives/error/ErrorRoot.d.ts +10 -0
- package/dist/primitives/error/ErrorRoot.d.ts.map +1 -0
- package/dist/primitives/error/ErrorRoot.js +11 -0
- package/dist/primitives/error/ErrorRoot.js.map +1 -0
- package/dist/primitives/error/index.d.ts +3 -0
- package/dist/primitives/error/index.d.ts.map +1 -0
- package/dist/primitives/error/index.js +3 -0
- package/dist/primitives/error/index.js.map +1 -0
- package/dist/primitives/message/MessageContent.d.ts.map +1 -1
- package/dist/primitives/message/MessageContent.js +9 -3
- package/dist/primitives/message/MessageContent.js.map +1 -1
- package/dist/primitives/message/MessageError.d.ts +3 -0
- package/dist/primitives/message/MessageError.d.ts.map +1 -0
- package/dist/primitives/message/MessageError.js +7 -0
- package/dist/primitives/message/MessageError.js.map +1 -0
- package/dist/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/primitives/message/MessageParts.js +5 -1
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message.d.ts +7 -0
- package/dist/primitives/message.d.ts.map +1 -0
- package/dist/primitives/message.js +7 -0
- package/dist/primitives/message.js.map +1 -0
- package/dist/primitives/suggestion/SuggestionTrigger.d.ts +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.d.ts.map +1 -1
- package/dist/primitives/suggestion/SuggestionTrigger.js +8 -29
- package/dist/primitives/suggestion/SuggestionTrigger.js.map +1 -1
- 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/ThreadEmpty.js +1 -1
- package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
- package/dist/primitives/thread/ThreadMessages.d.ts +28 -5
- package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadMessages.js +67 -13
- package/dist/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.d.ts +1 -1
- package/dist/primitives/thread/ThreadSuggestion.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.js +7 -29
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
- package/dist/primitives/thread.d.ts +8 -0
- package/dist/primitives/thread.d.ts.map +1 -0
- package/dist/primitives/thread.js +8 -0
- package/dist/primitives/thread.js.map +1 -0
- package/dist/primitives/threadList/ThreadListNew.d.ts +1 -1
- package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.js +3 -7
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
- package/dist/primitives/threadList.d.ts +4 -0
- package/dist/primitives/threadList.d.ts.map +1 -0
- package/dist/primitives/threadList.js +4 -0
- package/dist/primitives/threadList.js.map +1 -0
- package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.js +3 -7
- package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.js +3 -7
- package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js +3 -7
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.d.ts.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +3 -7
- 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/toolCall/ToolFallback.d.ts +33 -0
- package/dist/primitives/toolCall/ToolFallback.d.ts.map +1 -0
- package/dist/primitives/toolCall/ToolFallback.js +103 -0
- package/dist/primitives/toolCall/ToolFallback.js.map +1 -0
- package/dist/primitives/toolCall.d.ts +2 -0
- package/dist/primitives/toolCall.d.ts.map +1 -0
- package/dist/primitives/toolCall.js +2 -0
- package/dist/primitives/toolCall.js.map +1 -0
- package/dist/runtimes/useLocalRuntime.d.ts +1 -17
- package/dist/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/runtimes/useLocalRuntime.js +1 -61
- package/dist/runtimes/useLocalRuntime.js.map +1 -1
- package/package.json +13 -11
- package/src/context/AssistantContext.tsx +1 -31
- package/src/index.ts +80 -44
- package/src/primitives/actionBar/ActionBarCopy.tsx +1 -1
- package/src/primitives/actionBar/ActionBarEdit.tsx +1 -1
- package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +1 -1
- package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +1 -1
- package/src/primitives/actionBar/ActionBarReload.tsx +1 -1
- package/src/primitives/actionBar.ts +20 -0
- package/src/primitives/attachment.ts +16 -0
- package/src/primitives/branchPicker/BranchPickerNext.tsx +3 -15
- package/src/primitives/branchPicker/BranchPickerPrevious.tsx +3 -15
- package/src/primitives/branchPicker.ts +16 -0
- package/src/primitives/chainOfThought.ts +9 -0
- package/src/primitives/composer/ComposerAddAttachment.tsx +3 -5
- package/src/primitives/composer/ComposerCancel.tsx +3 -3
- package/src/primitives/composer/ComposerSend.tsx +3 -3
- package/src/primitives/composer.ts +25 -0
- package/src/primitives/error/ErrorMessage.tsx +17 -0
- package/src/primitives/error/ErrorRoot.tsx +16 -0
- package/src/primitives/error/index.ts +8 -0
- package/src/primitives/message/MessageContent.test.tsx +83 -0
- package/src/primitives/message/MessageContent.tsx +22 -16
- package/src/primitives/message/MessageError.tsx +9 -0
- package/src/primitives/message/MessageParts.tsx +10 -4
- package/src/primitives/message.ts +21 -0
- package/src/primitives/suggestion/SuggestionTrigger.tsx +10 -30
- package/src/primitives/suggestion.ts +12 -0
- package/src/primitives/thread/ThreadEmpty.tsx +1 -1
- package/src/primitives/thread/ThreadMessages.tsx +133 -29
- package/src/primitives/thread/ThreadSuggestion.tsx +9 -30
- package/src/primitives/thread.ts +25 -0
- package/src/primitives/threadList/ThreadListNew.tsx +4 -8
- package/src/primitives/threadList.ts +12 -0
- package/src/primitives/threadListItem/ThreadListItemArchive.tsx +4 -8
- package/src/primitives/threadListItem/ThreadListItemDelete.tsx +4 -8
- package/src/primitives/threadListItem/ThreadListItemTrigger.tsx +4 -8
- package/src/primitives/threadListItem/ThreadListItemUnarchive.tsx +4 -8
- package/src/primitives/threadListItem.ts +21 -0
- package/src/primitives/toolCall/ToolFallback.test.tsx +40 -0
- package/src/primitives/toolCall/ToolFallback.tsx +227 -0
- package/src/primitives/toolCall.ts +5 -0
- package/src/runtimes/useLocalRuntime.ts +4 -105
- package/dist/adapters/LocalStorageThreadListAdapter.d.ts +0 -15
- package/dist/adapters/LocalStorageThreadListAdapter.d.ts.map +0 -1
- package/dist/adapters/LocalStorageThreadListAdapter.js +0 -154
- package/dist/adapters/LocalStorageThreadListAdapter.js.map +0 -1
- package/dist/adapters/TitleGenerationAdapter.d.ts +0 -6
- package/dist/adapters/TitleGenerationAdapter.d.ts.map +0 -1
- package/dist/adapters/TitleGenerationAdapter.js +0 -15
- package/dist/adapters/TitleGenerationAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -3
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -3
- package/dist/adapters/index.js.map +0 -1
- package/dist/client/index.d.ts +0 -5
- package/dist/client/index.d.ts.map +0 -1
- package/dist/client/index.js +0 -7
- package/dist/client/index.js.map +0 -1
- package/dist/context/index.d.ts +0 -2
- package/dist/context/index.d.ts.map +0 -1
- package/dist/context/index.js +0 -2
- package/dist/context/index.js.map +0 -1
- package/dist/model-context/index.d.ts +0 -9
- package/dist/model-context/index.d.ts.map +0 -1
- package/dist/model-context/index.js +0 -7
- package/dist/model-context/index.js.map +0 -1
- package/dist/primitive-hooks/index.d.ts +0 -15
- package/dist/primitive-hooks/index.d.ts.map +0 -1
- package/dist/primitive-hooks/index.js +0 -15
- package/dist/primitive-hooks/index.js.map +0 -1
- package/dist/primitive-hooks/useActionBarCopy.d.ts +0 -10
- package/dist/primitive-hooks/useActionBarCopy.d.ts.map +0 -1
- package/dist/primitive-hooks/useActionBarCopy.js +0 -26
- package/dist/primitive-hooks/useActionBarCopy.js.map +0 -1
- package/dist/primitive-hooks/useActionBarEdit.d.ts +0 -5
- package/dist/primitive-hooks/useActionBarEdit.d.ts.map +0 -1
- package/dist/primitive-hooks/useActionBarEdit.js +0 -11
- package/dist/primitive-hooks/useActionBarEdit.js.map +0 -1
- package/dist/primitive-hooks/useActionBarFeedback.d.ts +0 -9
- package/dist/primitive-hooks/useActionBarFeedback.d.ts.map +0 -1
- package/dist/primitive-hooks/useActionBarFeedback.js +0 -19
- package/dist/primitive-hooks/useActionBarFeedback.js.map +0 -1
- package/dist/primitive-hooks/useActionBarReload.d.ts +0 -5
- package/dist/primitive-hooks/useActionBarReload.d.ts.map +0 -1
- package/dist/primitive-hooks/useActionBarReload.js +0 -13
- package/dist/primitive-hooks/useActionBarReload.js.map +0 -1
- package/dist/primitive-hooks/useComposerAddAttachment.d.ts +0 -5
- package/dist/primitive-hooks/useComposerAddAttachment.d.ts.map +0 -1
- package/dist/primitive-hooks/useComposerAddAttachment.js +0 -10
- package/dist/primitive-hooks/useComposerAddAttachment.js.map +0 -1
- package/dist/primitive-hooks/useComposerCancel.d.ts +0 -5
- package/dist/primitive-hooks/useComposerCancel.d.ts.map +0 -1
- package/dist/primitive-hooks/useComposerCancel.js +0 -11
- package/dist/primitive-hooks/useComposerCancel.js.map +0 -1
- package/dist/primitive-hooks/useComposerSend.d.ts +0 -5
- package/dist/primitive-hooks/useComposerSend.d.ts.map +0 -1
- package/dist/primitive-hooks/useComposerSend.js +0 -11
- package/dist/primitive-hooks/useComposerSend.js.map +0 -1
- package/dist/primitive-hooks/useEditComposerCancel.d.ts +0 -4
- package/dist/primitive-hooks/useEditComposerCancel.d.ts.map +0 -1
- package/dist/primitive-hooks/useEditComposerCancel.js +0 -10
- package/dist/primitive-hooks/useEditComposerCancel.js.map +0 -1
- package/dist/primitive-hooks/useEditComposerSend.d.ts +0 -5
- package/dist/primitive-hooks/useEditComposerSend.d.ts.map +0 -1
- package/dist/primitive-hooks/useEditComposerSend.js +0 -11
- package/dist/primitive-hooks/useEditComposerSend.js.map +0 -1
- package/dist/primitive-hooks/useMessageBranching.d.ts +0 -7
- package/dist/primitive-hooks/useMessageBranching.d.ts.map +0 -1
- package/dist/primitive-hooks/useMessageBranching.js +0 -15
- package/dist/primitive-hooks/useMessageBranching.js.map +0 -1
- package/dist/primitive-hooks/useMessageReload.d.ts +0 -5
- package/dist/primitive-hooks/useMessageReload.d.ts.map +0 -1
- package/dist/primitive-hooks/useMessageReload.js +0 -11
- package/dist/primitive-hooks/useMessageReload.js.map +0 -1
- package/dist/primitive-hooks/useThreadIsEmpty.d.ts +0 -2
- package/dist/primitive-hooks/useThreadIsEmpty.d.ts.map +0 -1
- package/dist/primitive-hooks/useThreadIsEmpty.js +0 -5
- package/dist/primitive-hooks/useThreadIsEmpty.js.map +0 -1
- package/dist/primitive-hooks/useThreadIsRunning.d.ts +0 -2
- package/dist/primitive-hooks/useThreadIsRunning.d.ts.map +0 -1
- package/dist/primitive-hooks/useThreadIsRunning.js +0 -5
- package/dist/primitive-hooks/useThreadIsRunning.js.map +0 -1
- package/dist/primitive-hooks/useThreadMessages.d.ts +0 -3
- package/dist/primitive-hooks/useThreadMessages.d.ts.map +0 -1
- package/dist/primitive-hooks/useThreadMessages.js +0 -5
- package/dist/primitive-hooks/useThreadMessages.js.map +0 -1
- package/dist/primitives/actionBar/index.d.ts +0 -6
- package/dist/primitives/actionBar/index.d.ts.map +0 -1
- package/dist/primitives/actionBar/index.js +0 -6
- package/dist/primitives/actionBar/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 -5
- package/dist/primitives/branchPicker/index.d.ts.map +0 -1
- package/dist/primitives/branchPicker/index.js +0 -5
- 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/EditComposerCancel.d.ts +0 -7
- package/dist/primitives/composer/EditComposerCancel.d.ts.map +0 -1
- package/dist/primitives/composer/EditComposerCancel.js +0 -8
- package/dist/primitives/composer/EditComposerCancel.js.map +0 -1
- package/dist/primitives/composer/EditComposerInput.d.ts +0 -10
- package/dist/primitives/composer/EditComposerInput.d.ts.map +0 -1
- package/dist/primitives/composer/EditComposerInput.js +0 -19
- package/dist/primitives/composer/EditComposerInput.js.map +0 -1
- package/dist/primitives/composer/EditComposerSend.d.ts +0 -7
- package/dist/primitives/composer/EditComposerSend.d.ts.map +0 -1
- package/dist/primitives/composer/EditComposerSend.js +0 -8
- package/dist/primitives/composer/EditComposerSend.js.map +0 -1
- package/dist/primitives/composer/index.d.ts +0 -11
- package/dist/primitives/composer/index.d.ts.map +0 -1
- package/dist/primitives/composer/index.js +0 -11
- package/dist/primitives/composer/index.js.map +0 -1
- package/dist/primitives/message/index.d.ts +0 -6
- package/dist/primitives/message/index.d.ts.map +0 -1
- package/dist/primitives/message/index.js +0 -6
- package/dist/primitives/message/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 -8
- package/dist/primitives/thread/index.d.ts.map +0 -1
- package/dist/primitives/thread/index.js +0 -8
- package/dist/primitives/thread/index.js.map +0 -1
- package/dist/primitives/threadList/index.d.ts +0 -4
- package/dist/primitives/threadList/index.d.ts.map +0 -1
- package/dist/primitives/threadList/index.js +0 -4
- 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/runtimes/index.d.ts +0 -3
- package/dist/runtimes/index.d.ts.map +0 -1
- package/dist/runtimes/index.js +0 -3
- package/dist/runtimes/index.js.map +0 -1
- package/dist/types/index.d.ts +0 -2
- 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/src/adapters/LocalStorageThreadListAdapter.tsx +0 -227
- package/src/adapters/TitleGenerationAdapter.ts +0 -20
- package/src/adapters/index.ts +0 -5
- package/src/client/index.ts +0 -7
- package/src/context/index.ts +0 -1
- package/src/model-context/index.ts +0 -44
- package/src/primitive-hooks/index.ts +0 -20
- package/src/primitive-hooks/useActionBarCopy.ts +0 -38
- package/src/primitive-hooks/useActionBarEdit.ts +0 -13
- package/src/primitive-hooks/useActionBarFeedback.ts +0 -28
- package/src/primitive-hooks/useActionBarReload.ts +0 -18
- package/src/primitive-hooks/useComposerAddAttachment.ts +0 -16
- package/src/primitive-hooks/useComposerCancel.ts +0 -13
- package/src/primitive-hooks/useComposerSend.ts +0 -13
- package/src/primitive-hooks/useEditComposerCancel.ts +0 -12
- package/src/primitive-hooks/useEditComposerSend.ts +0 -13
- package/src/primitive-hooks/useMessageBranching.ts +0 -18
- package/src/primitive-hooks/useMessageReload.ts +0 -13
- package/src/primitive-hooks/useThreadIsEmpty.ts +0 -5
- package/src/primitive-hooks/useThreadIsRunning.ts +0 -5
- package/src/primitive-hooks/useThreadMessages.ts +0 -6
- package/src/primitives/actionBar/index.ts +0 -11
- package/src/primitives/attachment/index.ts +0 -7
- package/src/primitives/branchPicker/index.ts +0 -16
- package/src/primitives/chainOfThought/index.ts +0 -9
- package/src/primitives/composer/EditComposerCancel.tsx +0 -20
- package/src/primitives/composer/EditComposerInput.tsx +0 -40
- package/src/primitives/composer/EditComposerSend.tsx +0 -25
- package/src/primitives/composer/index.ts +0 -25
- package/src/primitives/message/index.ts +0 -11
- package/src/primitives/suggestion/index.ts +0 -12
- package/src/primitives/thread/index.ts +0 -16
- package/src/primitives/threadList/index.ts +0 -3
- package/src/primitives/threadListItem/index.ts +0 -21
- package/src/runtimes/index.ts +0 -2
- package/src/types/index.ts +0 -23
- package/src/types/scopes/index.ts +0 -59
|
@@ -1,31 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { useAui } from "@assistant-ui/store";
|
|
3
|
-
import type { AssistantRuntime } from "@assistant-ui/core";
|
|
4
|
-
import { AssistantProviderBase } from "@assistant-ui/core/react";
|
|
5
|
-
|
|
6
|
-
export const useAssistantRuntime = (): AssistantRuntime => {
|
|
7
|
-
const aui = useAui();
|
|
8
|
-
const runtime = aui.threads().__internal_getAssistantRuntime?.();
|
|
9
|
-
if (!runtime) {
|
|
10
|
-
throw new Error(
|
|
11
|
-
"useAssistantRuntime must be used within an AssistantProvider",
|
|
12
|
-
);
|
|
13
|
-
}
|
|
14
|
-
return runtime;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export const AssistantProvider = memo(
|
|
18
|
-
({
|
|
19
|
-
runtime,
|
|
20
|
-
children,
|
|
21
|
-
}: {
|
|
22
|
-
runtime: AssistantRuntime;
|
|
23
|
-
children: ReactNode;
|
|
24
|
-
}) => {
|
|
25
|
-
return (
|
|
26
|
-
<AssistantProviderBase runtime={runtime}>
|
|
27
|
-
{children}
|
|
28
|
-
</AssistantProviderBase>
|
|
29
|
-
);
|
|
30
|
-
},
|
|
31
|
-
);
|
|
1
|
+
export { AssistantRuntimeProvider } from "@assistant-ui/core/react";
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
|
|
1
|
+
/// <reference types="@assistant-ui/core/react" />
|
|
2
2
|
|
|
3
3
|
// Re-export core types
|
|
4
4
|
export type {
|
|
@@ -91,47 +91,29 @@ export {
|
|
|
91
91
|
type AssistantEventCallback,
|
|
92
92
|
} from "@assistant-ui/store";
|
|
93
93
|
|
|
94
|
-
// Context providers
|
|
95
|
-
export {
|
|
96
|
-
|
|
97
|
-
// Primitive hooks
|
|
98
|
-
export {
|
|
99
|
-
useThreadMessages,
|
|
100
|
-
useThreadIsRunning,
|
|
101
|
-
useThreadIsEmpty,
|
|
102
|
-
useComposerSend,
|
|
103
|
-
useComposerCancel,
|
|
104
|
-
useMessageReload,
|
|
105
|
-
useMessageBranching,
|
|
106
|
-
useActionBarCopy,
|
|
107
|
-
type UseActionBarCopyOptions,
|
|
108
|
-
useActionBarEdit,
|
|
109
|
-
useActionBarReload,
|
|
110
|
-
useActionBarFeedbackPositive,
|
|
111
|
-
useActionBarFeedbackNegative,
|
|
112
|
-
useEditComposerSend,
|
|
113
|
-
useEditComposerCancel,
|
|
114
|
-
useComposerAddAttachment,
|
|
115
|
-
} from "./primitive-hooks";
|
|
94
|
+
// Context providers
|
|
95
|
+
export { AssistantRuntimeProvider } from "./context/AssistantContext";
|
|
116
96
|
|
|
117
97
|
// Runtime
|
|
118
98
|
export {
|
|
119
99
|
useLocalRuntime,
|
|
120
100
|
type LocalRuntimeOptions,
|
|
121
|
-
|
|
122
|
-
} from "./runtimes";
|
|
101
|
+
} from "./runtimes/useLocalRuntime";
|
|
102
|
+
export { useRemoteThreadListRuntime } from "./runtimes/useRemoteThreadListRuntime";
|
|
123
103
|
|
|
124
104
|
// Primitives
|
|
125
|
-
export * from "./primitives/thread";
|
|
126
|
-
export * from "./primitives/composer";
|
|
127
|
-
export * from "./primitives/message";
|
|
128
|
-
export * from "./primitives/threadList";
|
|
129
|
-
export * from "./primitives/actionBar";
|
|
130
|
-
export * from "./primitives/branchPicker";
|
|
131
|
-
export * from "./primitives/attachment";
|
|
132
|
-
export * from "./primitives/threadListItem";
|
|
133
|
-
export * from "./primitives/chainOfThought";
|
|
134
|
-
export * from "./primitives/suggestion";
|
|
105
|
+
export * as ThreadPrimitive from "./primitives/thread";
|
|
106
|
+
export * as ComposerPrimitive from "./primitives/composer";
|
|
107
|
+
export * as MessagePrimitive from "./primitives/message";
|
|
108
|
+
export * as ThreadListPrimitive from "./primitives/threadList";
|
|
109
|
+
export * as ActionBarPrimitive from "./primitives/actionBar";
|
|
110
|
+
export * as BranchPickerPrimitive from "./primitives/branchPicker";
|
|
111
|
+
export * as AttachmentPrimitive from "./primitives/attachment";
|
|
112
|
+
export * as ThreadListItemPrimitive from "./primitives/threadListItem";
|
|
113
|
+
export * as ChainOfThoughtPrimitive from "./primitives/chainOfThought";
|
|
114
|
+
export * as SuggestionPrimitive from "./primitives/suggestion";
|
|
115
|
+
export * as ToolCallPrimitive from "./primitives/toolCall";
|
|
116
|
+
export * as ErrorPrimitive from "./primitives/error";
|
|
135
117
|
|
|
136
118
|
// Re-export shared providers from core/react
|
|
137
119
|
export {
|
|
@@ -145,13 +127,67 @@ export {
|
|
|
145
127
|
} from "@assistant-ui/core/react";
|
|
146
128
|
|
|
147
129
|
// Model context, tools & clients
|
|
148
|
-
export * from "./model-context";
|
|
149
|
-
export * from "./client";
|
|
150
|
-
export * from "./types";
|
|
151
|
-
|
|
152
|
-
// Adapters
|
|
153
130
|
export {
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
131
|
+
makeAssistantTool,
|
|
132
|
+
type AssistantTool,
|
|
133
|
+
makeAssistantToolUI,
|
|
134
|
+
type AssistantToolUI,
|
|
135
|
+
makeAssistantDataUI,
|
|
136
|
+
type AssistantDataUI,
|
|
137
|
+
useAssistantTool,
|
|
138
|
+
type AssistantToolProps,
|
|
139
|
+
useAssistantToolUI,
|
|
140
|
+
type AssistantToolUIProps,
|
|
141
|
+
useAssistantDataUI,
|
|
142
|
+
type AssistantDataUIProps,
|
|
143
|
+
useAssistantInstructions,
|
|
144
|
+
useInlineRender,
|
|
145
|
+
type Toolkit,
|
|
146
|
+
type ToolDefinition,
|
|
147
|
+
Tools,
|
|
148
|
+
DataRenderers,
|
|
149
|
+
} from "@assistant-ui/core/react";
|
|
150
|
+
export type {
|
|
151
|
+
ModelContext,
|
|
152
|
+
ModelContextProvider,
|
|
153
|
+
LanguageModelConfig,
|
|
154
|
+
LanguageModelV1CallSettings,
|
|
155
|
+
} from "@assistant-ui/core";
|
|
156
|
+
export { mergeModelContexts } from "@assistant-ui/core";
|
|
157
|
+
export type { Tool } from "assistant-stream";
|
|
158
|
+
export { tool } from "@assistant-ui/core";
|
|
159
|
+
export { Suggestions, type SuggestionConfig } from "@assistant-ui/core/store";
|
|
160
|
+
export { ModelContextRegistry } from "@assistant-ui/core";
|
|
161
|
+
export type {
|
|
162
|
+
ModelContextRegistryToolHandle,
|
|
163
|
+
ModelContextRegistryInstructionHandle,
|
|
164
|
+
ModelContextRegistryProviderHandle,
|
|
165
|
+
} from "@assistant-ui/core";
|
|
166
|
+
|
|
167
|
+
// Client exports
|
|
168
|
+
export { ModelContext as ModelContextClient } from "@assistant-ui/core/store";
|
|
169
|
+
export { ChainOfThoughtClient } from "@assistant-ui/core/store";
|
|
170
|
+
|
|
171
|
+
// Component types
|
|
172
|
+
export type {
|
|
173
|
+
EmptyMessagePartComponent,
|
|
174
|
+
EmptyMessagePartProps,
|
|
175
|
+
TextMessagePartComponent,
|
|
176
|
+
TextMessagePartProps,
|
|
177
|
+
ReasoningMessagePartComponent,
|
|
178
|
+
ReasoningMessagePartProps,
|
|
179
|
+
ReasoningGroupProps,
|
|
180
|
+
ReasoningGroupComponent,
|
|
181
|
+
SourceMessagePartComponent,
|
|
182
|
+
SourceMessagePartProps,
|
|
183
|
+
ImageMessagePartComponent,
|
|
184
|
+
ImageMessagePartProps,
|
|
185
|
+
FileMessagePartComponent,
|
|
186
|
+
FileMessagePartProps,
|
|
187
|
+
Unstable_AudioMessagePartComponent,
|
|
188
|
+
Unstable_AudioMessagePartProps,
|
|
189
|
+
DataMessagePartComponent,
|
|
190
|
+
DataMessagePartProps,
|
|
191
|
+
ToolCallMessagePartComponent,
|
|
192
|
+
ToolCallMessagePartProps,
|
|
193
|
+
} from "@assistant-ui/core/react";
|
|
@@ -2,7 +2,7 @@ import type { ReactNode } from "react";
|
|
|
2
2
|
import {
|
|
3
3
|
useActionBarCopy,
|
|
4
4
|
type UseActionBarCopyOptions,
|
|
5
|
-
} from "
|
|
5
|
+
} from "@assistant-ui/core/react";
|
|
6
6
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
7
7
|
|
|
8
8
|
export type ActionBarCopyProps = Omit<PressableProps, "onPress" | "children"> &
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import { useActionBarEdit } from "
|
|
2
|
+
import { useActionBarEdit } from "@assistant-ui/core/react";
|
|
3
3
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
4
4
|
|
|
5
5
|
export type ActionBarEditProps = Omit<PressableProps, "onPress"> & {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import { useActionBarFeedbackNegative } from "
|
|
2
|
+
import { useActionBarFeedbackNegative } from "@assistant-ui/core/react";
|
|
3
3
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
4
4
|
|
|
5
5
|
export type ActionBarFeedbackNegativeProps = Omit<
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import { useActionBarFeedbackPositive } from "
|
|
2
|
+
import { useActionBarFeedbackPositive } from "@assistant-ui/core/react";
|
|
3
3
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
4
4
|
|
|
5
5
|
export type ActionBarFeedbackPositiveProps = Omit<
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import { useActionBarReload } from "
|
|
2
|
+
import { useActionBarReload } from "@assistant-ui/core/react";
|
|
3
3
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
4
4
|
|
|
5
5
|
export type ActionBarReloadProps = Omit<PressableProps, "onPress"> & {
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export {
|
|
2
|
+
ActionBarCopy as Copy,
|
|
3
|
+
type ActionBarCopyProps as CopyProps,
|
|
4
|
+
} from "./actionBar/ActionBarCopy";
|
|
5
|
+
export {
|
|
6
|
+
ActionBarEdit as Edit,
|
|
7
|
+
type ActionBarEditProps as EditProps,
|
|
8
|
+
} from "./actionBar/ActionBarEdit";
|
|
9
|
+
export {
|
|
10
|
+
ActionBarReload as Reload,
|
|
11
|
+
type ActionBarReloadProps as ReloadProps,
|
|
12
|
+
} from "./actionBar/ActionBarReload";
|
|
13
|
+
export {
|
|
14
|
+
ActionBarFeedbackPositive as FeedbackPositive,
|
|
15
|
+
type ActionBarFeedbackPositiveProps as FeedbackPositiveProps,
|
|
16
|
+
} from "./actionBar/ActionBarFeedbackPositive";
|
|
17
|
+
export {
|
|
18
|
+
ActionBarFeedbackNegative as FeedbackNegative,
|
|
19
|
+
type ActionBarFeedbackNegativeProps as FeedbackNegativeProps,
|
|
20
|
+
} from "./actionBar/ActionBarFeedbackNegative";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export {
|
|
2
|
+
AttachmentRoot as Root,
|
|
3
|
+
type AttachmentRootProps as RootProps,
|
|
4
|
+
} from "./attachment/AttachmentRoot";
|
|
5
|
+
export {
|
|
6
|
+
AttachmentName as Name,
|
|
7
|
+
type AttachmentNameProps as NameProps,
|
|
8
|
+
} from "./attachment/AttachmentName";
|
|
9
|
+
export {
|
|
10
|
+
AttachmentThumb as Thumb,
|
|
11
|
+
type AttachmentThumbProps as ThumbProps,
|
|
12
|
+
} from "./attachment/AttachmentThumb";
|
|
13
|
+
export {
|
|
14
|
+
AttachmentRemove as Remove,
|
|
15
|
+
type AttachmentRemoveProps as RemoveProps,
|
|
16
|
+
} from "./attachment/AttachmentRemove";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import {
|
|
3
|
-
import { useAui, useAuiState } from "@assistant-ui/store";
|
|
2
|
+
import { useBranchPickerNext } from "@assistant-ui/core/react";
|
|
4
3
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
5
4
|
|
|
6
5
|
export type BranchPickerNextProps = Omit<PressableProps, "onPress"> & {
|
|
@@ -12,22 +11,11 @@ export const BranchPickerNext = ({
|
|
|
12
11
|
disabled: disabledProp,
|
|
13
12
|
...pressableProps
|
|
14
13
|
}: BranchPickerNextProps) => {
|
|
15
|
-
const
|
|
16
|
-
const disabled = useAuiState((s) => {
|
|
17
|
-
if (s.message.branchNumber >= s.message.branchCount) return true;
|
|
18
|
-
if (s.thread.isRunning && !s.thread.capabilities.switchBranchDuringRun) {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
return false;
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
const goToNext = useCallback(() => {
|
|
25
|
-
aui.message().switchToBranch({ position: "next" });
|
|
26
|
-
}, [aui]);
|
|
14
|
+
const { next, disabled } = useBranchPickerNext();
|
|
27
15
|
|
|
28
16
|
return (
|
|
29
17
|
<Pressable
|
|
30
|
-
onPress={
|
|
18
|
+
onPress={next}
|
|
31
19
|
disabled={disabledProp ?? disabled}
|
|
32
20
|
{...pressableProps}
|
|
33
21
|
>
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import {
|
|
3
|
-
import { useAui, useAuiState } from "@assistant-ui/store";
|
|
2
|
+
import { useBranchPickerPrevious } from "@assistant-ui/core/react";
|
|
4
3
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
5
4
|
|
|
6
5
|
export type BranchPickerPreviousProps = Omit<PressableProps, "onPress"> & {
|
|
@@ -12,22 +11,11 @@ export const BranchPickerPrevious = ({
|
|
|
12
11
|
disabled: disabledProp,
|
|
13
12
|
...pressableProps
|
|
14
13
|
}: BranchPickerPreviousProps) => {
|
|
15
|
-
const
|
|
16
|
-
const disabled = useAuiState((s) => {
|
|
17
|
-
if (s.message.branchNumber <= 1) return true;
|
|
18
|
-
if (s.thread.isRunning && !s.thread.capabilities.switchBranchDuringRun) {
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
return false;
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
const goToPrevious = useCallback(() => {
|
|
25
|
-
aui.message().switchToBranch({ position: "previous" });
|
|
26
|
-
}, [aui]);
|
|
14
|
+
const { previous, disabled } = useBranchPickerPrevious();
|
|
27
15
|
|
|
28
16
|
return (
|
|
29
17
|
<Pressable
|
|
30
|
-
onPress={
|
|
18
|
+
onPress={previous}
|
|
31
19
|
disabled={disabledProp ?? disabled}
|
|
32
20
|
{...pressableProps}
|
|
33
21
|
>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export {
|
|
2
|
+
BranchPickerPrevious as Previous,
|
|
3
|
+
type BranchPickerPreviousProps as PreviousProps,
|
|
4
|
+
} from "./branchPicker/BranchPickerPrevious";
|
|
5
|
+
export {
|
|
6
|
+
BranchPickerNext as Next,
|
|
7
|
+
type BranchPickerNextProps as NextProps,
|
|
8
|
+
} from "./branchPicker/BranchPickerNext";
|
|
9
|
+
export {
|
|
10
|
+
BranchPickerNumber as Number,
|
|
11
|
+
type BranchPickerNumberProps as NumberProps,
|
|
12
|
+
} from "./branchPicker/BranchPickerNumber";
|
|
13
|
+
export {
|
|
14
|
+
BranchPickerCount as Count,
|
|
15
|
+
type BranchPickerCountProps as CountProps,
|
|
16
|
+
} from "./branchPicker/BranchPickerCount";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export {
|
|
2
|
+
ChainOfThoughtRoot as Root,
|
|
3
|
+
type ChainOfThoughtRootProps as RootProps,
|
|
4
|
+
} from "./chainOfThought/ChainOfThoughtRoot";
|
|
5
|
+
export {
|
|
6
|
+
ChainOfThoughtAccordionTrigger as AccordionTrigger,
|
|
7
|
+
type ChainOfThoughtAccordionTriggerProps as AccordionTriggerProps,
|
|
8
|
+
} from "./chainOfThought/ChainOfThoughtAccordionTrigger";
|
|
9
|
+
export { ChainOfThoughtPrimitiveParts as Parts } from "@assistant-ui/core/react";
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import {
|
|
3
|
-
import { useComposerAddAttachment } from "../../primitive-hooks/useComposerAddAttachment";
|
|
2
|
+
import { useComposerAddAttachment } from "@assistant-ui/core/react";
|
|
4
3
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
5
4
|
|
|
6
5
|
export type ComposerAddAttachmentProps = Omit<PressableProps, "onPress"> & {
|
|
@@ -12,11 +11,10 @@ export const ComposerAddAttachment = ({
|
|
|
12
11
|
disabled: disabledProp,
|
|
13
12
|
...pressableProps
|
|
14
13
|
}: ComposerAddAttachmentProps) => {
|
|
15
|
-
const
|
|
16
|
-
const { addAttachment: _addAttachment } = useComposerAddAttachment();
|
|
14
|
+
const { disabled } = useComposerAddAttachment();
|
|
17
15
|
|
|
18
16
|
return (
|
|
19
|
-
<Pressable disabled={disabledProp ??
|
|
17
|
+
<Pressable disabled={disabledProp ?? disabled} {...pressableProps}>
|
|
20
18
|
{children}
|
|
21
19
|
</Pressable>
|
|
22
20
|
);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import { useComposerCancel } from "
|
|
2
|
+
import { useComposerCancel } from "@assistant-ui/core/react";
|
|
3
3
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
4
4
|
|
|
5
5
|
export type ComposerCancelProps = Omit<PressableProps, "onPress"> & {
|
|
@@ -11,12 +11,12 @@ export const ComposerCancel = ({
|
|
|
11
11
|
disabled,
|
|
12
12
|
...pressableProps
|
|
13
13
|
}: ComposerCancelProps) => {
|
|
14
|
-
const { cancel,
|
|
14
|
+
const { cancel, disabled: hookDisabled } = useComposerCancel();
|
|
15
15
|
|
|
16
16
|
return (
|
|
17
17
|
<Pressable
|
|
18
18
|
onPress={cancel}
|
|
19
|
-
disabled={disabled ??
|
|
19
|
+
disabled={disabled ?? hookDisabled}
|
|
20
20
|
{...pressableProps}
|
|
21
21
|
>
|
|
22
22
|
{children}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ReactNode } from "react";
|
|
2
|
-
import { useComposerSend } from "
|
|
2
|
+
import { useComposerSend } from "@assistant-ui/core/react";
|
|
3
3
|
import { Pressable, type PressableProps } from "../internal/Pressable";
|
|
4
4
|
|
|
5
5
|
export type ComposerSendProps = Omit<PressableProps, "onPress"> & {
|
|
@@ -11,12 +11,12 @@ export const ComposerSend = ({
|
|
|
11
11
|
disabled,
|
|
12
12
|
...pressableProps
|
|
13
13
|
}: ComposerSendProps) => {
|
|
14
|
-
const { send,
|
|
14
|
+
const { send, disabled: hookDisabled } = useComposerSend();
|
|
15
15
|
|
|
16
16
|
return (
|
|
17
17
|
<Pressable
|
|
18
18
|
onPress={send}
|
|
19
|
-
disabled={disabled ??
|
|
19
|
+
disabled={disabled ?? hookDisabled}
|
|
20
20
|
{...pressableProps}
|
|
21
21
|
>
|
|
22
22
|
{children}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export {
|
|
2
|
+
ComposerRoot as Root,
|
|
3
|
+
type ComposerRootProps as RootProps,
|
|
4
|
+
} from "./composer/ComposerRoot";
|
|
5
|
+
export {
|
|
6
|
+
ComposerAttachments as Attachments,
|
|
7
|
+
ComposerAttachmentByIndex as AttachmentByIndex,
|
|
8
|
+
} from "./composer/ComposerAttachments";
|
|
9
|
+
export {
|
|
10
|
+
ComposerInput as Input,
|
|
11
|
+
type ComposerInputProps as InputProps,
|
|
12
|
+
} from "./composer/ComposerInput";
|
|
13
|
+
export {
|
|
14
|
+
ComposerSend as Send,
|
|
15
|
+
type ComposerSendProps as SendProps,
|
|
16
|
+
} from "./composer/ComposerSend";
|
|
17
|
+
export {
|
|
18
|
+
ComposerCancel as Cancel,
|
|
19
|
+
type ComposerCancelProps as CancelProps,
|
|
20
|
+
} from "./composer/ComposerCancel";
|
|
21
|
+
export {
|
|
22
|
+
ComposerAddAttachment as AddAttachment,
|
|
23
|
+
type ComposerAddAttachmentProps as AddAttachmentProps,
|
|
24
|
+
} from "./composer/ComposerAddAttachment";
|
|
25
|
+
export { ComposerIf as If } from "./composer/ComposerIf";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ComponentProps, ReactNode } from "react";
|
|
2
|
+
import { Text } from "ink";
|
|
3
|
+
import { useMessageError } from "@assistant-ui/core/react";
|
|
4
|
+
|
|
5
|
+
export type ErrorMessageProps = ComponentProps<typeof Text> & {
|
|
6
|
+
children?: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const ErrorMessage = ({ children, ...props }: ErrorMessageProps) => {
|
|
10
|
+
const error = useMessageError();
|
|
11
|
+
|
|
12
|
+
if (error === undefined) return null;
|
|
13
|
+
|
|
14
|
+
return <Text {...props}>{children ?? String(error)}</Text>;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
ErrorMessage.displayName = "ErrorPrimitive.Message";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ComponentProps, ReactNode } from "react";
|
|
2
|
+
import { Box } from "ink";
|
|
3
|
+
import { useMessageError } from "@assistant-ui/core/react";
|
|
4
|
+
|
|
5
|
+
export type ErrorRootProps = ComponentProps<typeof Box> & {
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const ErrorRoot = ({ children, ...props }: ErrorRootProps) => {
|
|
10
|
+
const error = useMessageError();
|
|
11
|
+
if (error === undefined) return null;
|
|
12
|
+
|
|
13
|
+
return <Box {...props}>{children}</Box>;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
ErrorRoot.displayName = "ErrorPrimitive.Root";
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type { ReactElement } from "react";
|
|
2
|
+
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
3
|
+
import { cleanup, render } from "ink-testing-library";
|
|
4
|
+
import { MessageContent } from "./MessageContent";
|
|
5
|
+
|
|
6
|
+
const mockUseAui = vi.fn();
|
|
7
|
+
const mockUseAuiState = vi.fn();
|
|
8
|
+
|
|
9
|
+
type UseAuiStateSelector = Parameters<
|
|
10
|
+
typeof import("@assistant-ui/store")["useAuiState"]
|
|
11
|
+
>[0];
|
|
12
|
+
|
|
13
|
+
vi.mock("@assistant-ui/store", async (importOriginal) => {
|
|
14
|
+
const actual = await importOriginal<typeof import("@assistant-ui/store")>();
|
|
15
|
+
return {
|
|
16
|
+
...actual,
|
|
17
|
+
useAui: () => mockUseAui(),
|
|
18
|
+
useAuiState: (selector: UseAuiStateSelector) => mockUseAuiState(selector),
|
|
19
|
+
};
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const renderFrame = async (node: ReactElement) => {
|
|
23
|
+
const instance = render(node);
|
|
24
|
+
await new Promise((resolve) => setTimeout(resolve, 0));
|
|
25
|
+
return instance.lastFrame() ?? "";
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
afterEach(() => {
|
|
29
|
+
cleanup();
|
|
30
|
+
vi.clearAllMocks();
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
describe("MessageContent", () => {
|
|
34
|
+
it("renders incomplete tool calls as errors instead of running forever", async () => {
|
|
35
|
+
const state = {
|
|
36
|
+
tools: { tools: {} },
|
|
37
|
+
message: {
|
|
38
|
+
content: [
|
|
39
|
+
{
|
|
40
|
+
type: "tool-call",
|
|
41
|
+
toolCallId: "tool-call-1",
|
|
42
|
+
toolName: "search",
|
|
43
|
+
args: { query: "weather" },
|
|
44
|
+
argsText: '{"query":"weather"}',
|
|
45
|
+
},
|
|
46
|
+
],
|
|
47
|
+
parts: [
|
|
48
|
+
{
|
|
49
|
+
type: "tool-call",
|
|
50
|
+
toolCallId: "tool-call-1",
|
|
51
|
+
toolName: "search",
|
|
52
|
+
args: { query: "weather" },
|
|
53
|
+
argsText: '{"query":"weather"}',
|
|
54
|
+
status: {
|
|
55
|
+
type: "incomplete",
|
|
56
|
+
reason: "error",
|
|
57
|
+
error: "request failed",
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
mockUseAuiState.mockImplementation((selector: UseAuiStateSelector) =>
|
|
65
|
+
selector(state as never),
|
|
66
|
+
);
|
|
67
|
+
mockUseAui.mockReturnValue({
|
|
68
|
+
message: () => ({
|
|
69
|
+
part: () => ({
|
|
70
|
+
addToolResult: vi.fn(),
|
|
71
|
+
resumeToolCall: vi.fn(),
|
|
72
|
+
}),
|
|
73
|
+
}),
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
const frame = await renderFrame(<MessageContent />);
|
|
77
|
+
|
|
78
|
+
expect(frame).toContain("search");
|
|
79
|
+
expect(frame).toContain("Error:");
|
|
80
|
+
expect(frame).toContain("request failed");
|
|
81
|
+
expect(frame).not.toContain("Running...");
|
|
82
|
+
});
|
|
83
|
+
});
|
|
@@ -3,16 +3,17 @@ import { Text } from "ink";
|
|
|
3
3
|
import type {
|
|
4
4
|
ThreadUserMessagePart,
|
|
5
5
|
ThreadAssistantMessagePart,
|
|
6
|
-
|
|
7
|
-
DataMessagePart,
|
|
6
|
+
MessagePartState,
|
|
8
7
|
} from "@assistant-ui/core";
|
|
9
8
|
import { useAui, useAuiState } from "@assistant-ui/store";
|
|
10
9
|
import type {
|
|
11
10
|
ToolCallMessagePartProps,
|
|
12
11
|
DataMessagePartProps,
|
|
13
|
-
} from "
|
|
12
|
+
} from "@assistant-ui/core/react";
|
|
13
|
+
import { ToolFallback } from "../toolCall/ToolFallback";
|
|
14
14
|
|
|
15
15
|
type MessageContentPart = ThreadUserMessagePart | ThreadAssistantMessagePart;
|
|
16
|
+
type MessageContentStatePart = MessagePartState;
|
|
16
17
|
|
|
17
18
|
export type MessageContentProps = {
|
|
18
19
|
renderText?: (props: {
|
|
@@ -59,9 +60,12 @@ const ToolUIDisplay = ({
|
|
|
59
60
|
index,
|
|
60
61
|
}: {
|
|
61
62
|
Fallback:
|
|
62
|
-
| ((props: {
|
|
63
|
+
| ((props: {
|
|
64
|
+
part: Extract<MessageContentPart, { type: "tool-call" }>;
|
|
65
|
+
index: number;
|
|
66
|
+
}) => ReactElement)
|
|
63
67
|
| undefined;
|
|
64
|
-
part:
|
|
68
|
+
part: Extract<MessageContentStatePart, { type: "tool-call" }>;
|
|
65
69
|
index: number;
|
|
66
70
|
}) => {
|
|
67
71
|
const aui = useAui();
|
|
@@ -75,18 +79,17 @@ const ToolUIDisplay = ({
|
|
|
75
79
|
() => aui.message().part({ index }),
|
|
76
80
|
[aui, index],
|
|
77
81
|
);
|
|
82
|
+
const toolProps = {
|
|
83
|
+
...(part as ToolCallMessagePartProps),
|
|
84
|
+
addResult: partMethods.addToolResult,
|
|
85
|
+
resume: partMethods.resumeToolCall,
|
|
86
|
+
};
|
|
78
87
|
|
|
79
88
|
if (Render) {
|
|
80
|
-
return
|
|
81
|
-
<Render
|
|
82
|
-
{...(part as ToolCallMessagePartProps)}
|
|
83
|
-
addResult={partMethods.addToolResult}
|
|
84
|
-
resume={partMethods.resumeToolCall}
|
|
85
|
-
/>
|
|
86
|
-
);
|
|
89
|
+
return <Render {...toolProps} />;
|
|
87
90
|
}
|
|
88
91
|
if (Fallback) return <Fallback part={part} index={index} />;
|
|
89
|
-
return
|
|
92
|
+
return <ToolFallback {...toolProps} />;
|
|
90
93
|
};
|
|
91
94
|
|
|
92
95
|
const DataUIDisplay = ({
|
|
@@ -95,9 +98,12 @@ const DataUIDisplay = ({
|
|
|
95
98
|
index,
|
|
96
99
|
}: {
|
|
97
100
|
Fallback:
|
|
98
|
-
| ((props: {
|
|
101
|
+
| ((props: {
|
|
102
|
+
part: Extract<MessageContentPart, { type: "data" }>;
|
|
103
|
+
index: number;
|
|
104
|
+
}) => ReactElement)
|
|
99
105
|
| undefined;
|
|
100
|
-
part:
|
|
106
|
+
part: Extract<MessageContentStatePart, { type: "data" }>;
|
|
101
107
|
index: number;
|
|
102
108
|
}) => {
|
|
103
109
|
const Render = useAuiState((s) => {
|
|
@@ -119,7 +125,7 @@ export const MessageContent = ({
|
|
|
119
125
|
renderFile,
|
|
120
126
|
renderData,
|
|
121
127
|
}: MessageContentProps) => {
|
|
122
|
-
const content = useAuiState((s) => s.message.
|
|
128
|
+
const content = useAuiState((s) => s.message.parts);
|
|
123
129
|
|
|
124
130
|
return (
|
|
125
131
|
<>
|