@assistant-ui/react 0.10.23 → 0.10.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/{ContentPartRuntime.d.ts → MessagePartRuntime.d.ts} +14 -14
- package/dist/api/{ContentPartRuntime.d.ts.map → MessagePartRuntime.d.ts.map} +1 -1
- package/dist/api/{ContentPartRuntime.js → MessagePartRuntime.js} +6 -6
- package/dist/api/{ContentPartRuntime.js.map → MessagePartRuntime.js.map} +1 -1
- package/dist/api/MessageRuntime.d.ts +8 -8
- package/dist/api/MessageRuntime.js +17 -17
- package/dist/api/MessageRuntime.js.map +1 -1
- package/dist/api/RuntimePathTypes.d.ts +2 -2
- package/dist/api/ThreadListRuntime.d.ts +3 -0
- package/dist/api/ThreadListRuntime.d.ts.map +1 -1
- package/dist/api/ThreadListRuntime.js +5 -1
- package/dist/api/ThreadListRuntime.js.map +1 -1
- package/dist/api/ThreadRuntime.d.ts +5 -0
- package/dist/api/ThreadRuntime.d.ts.map +1 -1
- package/dist/api/ThreadRuntime.js +1 -0
- package/dist/api/ThreadRuntime.js.map +1 -1
- package/dist/api/index.d.ts +2 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts +1 -1
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/cloud/auiV0.d.ts +3 -3
- package/dist/cloud/auiV0.d.ts.map +1 -1
- package/dist/cloud/auiV0.js +1 -1
- package/dist/cloud/auiV0.js.map +1 -1
- package/dist/cloud/index.d.ts +1 -1
- package/dist/cloud/index.d.ts.map +1 -1
- package/dist/cloud/index.js +1 -1
- package/dist/cloud/index.js.map +1 -1
- package/dist/cloud/useCloudThreadListRuntime.d.ts +1 -1
- package/dist/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/cloud/useCloudThreadListRuntime.js.map +1 -1
- package/dist/context/providers/MessagePartRuntimeProvider.d.ts +9 -0
- package/dist/context/providers/{ContentPartRuntimeProvider.d.ts.map → MessagePartRuntimeProvider.d.ts.map} +1 -1
- package/dist/context/providers/{ContentPartRuntimeProvider.js → MessagePartRuntimeProvider.js} +9 -9
- package/dist/context/providers/MessagePartRuntimeProvider.js.map +1 -0
- package/dist/context/providers/{TextContentPartProvider.d.ts → TextMessagePartProvider.d.ts} +3 -3
- package/dist/context/providers/{TextContentPartProvider.d.ts.map → TextMessagePartProvider.d.ts.map} +1 -1
- package/dist/context/providers/{TextContentPartProvider.js → TextMessagePartProvider.js} +19 -19
- package/dist/context/providers/{TextContentPartProvider.js.map → TextMessagePartProvider.js.map} +1 -1
- package/dist/context/providers/index.d.ts +2 -1
- package/dist/context/providers/index.d.ts.map +1 -1
- package/dist/context/providers/index.js +4 -2
- package/dist/context/providers/index.js.map +1 -1
- package/dist/context/react/AssistantContext.d.ts +23 -0
- package/dist/context/react/AssistantContext.d.ts.map +1 -1
- package/dist/context/react/AssistantContext.js.map +1 -1
- package/dist/context/react/AttachmentContext.d.ts +72 -72
- package/dist/context/react/ComposerContext.d.ts +64 -0
- package/dist/context/react/ComposerContext.d.ts.map +1 -1
- package/dist/context/react/ComposerContext.js.map +1 -1
- package/dist/context/react/MessageContext.d.ts +56 -0
- package/dist/context/react/MessageContext.d.ts.map +1 -1
- package/dist/context/react/MessageContext.js.map +1 -1
- package/dist/context/react/MessagePartContext.d.ts +41 -0
- package/dist/context/react/{ContentPartContext.d.ts.map → MessagePartContext.d.ts.map} +1 -1
- package/dist/context/react/MessagePartContext.js +25 -0
- package/dist/context/react/MessagePartContext.js.map +1 -0
- package/dist/context/react/ThreadContext.d.ts +42 -0
- package/dist/context/react/ThreadContext.d.ts.map +1 -1
- package/dist/context/react/ThreadContext.js.map +1 -1
- package/dist/context/react/index.d.ts +1 -1
- package/dist/context/react/index.js +3 -3
- package/dist/context/react/index.js.map +1 -1
- package/dist/context/stores/AssistantToolUIs.d.ts +3 -3
- package/dist/context/stores/AssistantToolUIs.js.map +1 -1
- package/dist/model-context/useAssistantTool.d.ts +2 -2
- package/dist/model-context/useAssistantTool.js.map +1 -1
- package/dist/model-context/useAssistantToolUI.d.ts +2 -2
- package/dist/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/model-context/useInlineRender.d.ts +2 -2
- package/dist/model-context/useInlineRender.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.d.ts +42 -0
- package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.d.ts +38 -0
- package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.d.ts +39 -0
- package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.d.ts +56 -0
- package/dist/primitives/actionBar/ActionBarRoot.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.d.ts +2 -0
- package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js +2 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.d.ts +18 -0
- package/dist/primitives/attachment/AttachmentRoot.d.ts.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerCount.d.ts +17 -0
- package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts +17 -0
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +38 -0
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.d.ts +27 -0
- package/dist/primitives/branchPicker/BranchPickerRoot.d.ts.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerAttachments.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAttachments.js +11 -8
- package/dist/primitives/composer/ComposerAttachments.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.d.ts +17 -0
- package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerCancel.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts +72 -0
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerRoot.d.ts +19 -0
- package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.d.ts +18 -0
- package/dist/primitives/composer/ComposerSend.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/index.d.ts +12 -6
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +23 -11
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/primitives/message/MessageAttachments.js +11 -8
- package/dist/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/primitives/message/MessageParts.d.ts +116 -0
- package/dist/primitives/message/MessageParts.d.ts.map +1 -0
- package/dist/primitives/message/MessageParts.js +208 -0
- package/dist/primitives/message/MessageParts.js.map +1 -0
- package/dist/primitives/message/MessageRoot.d.ts +22 -0
- package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/message/index.d.ts +2 -1
- package/dist/primitives/message/index.d.ts.map +1 -1
- package/dist/primitives/message/index.js +4 -2
- package/dist/primitives/message/index.js.map +1 -1
- package/dist/primitives/messagePart/MessagePartImage.d.ts +29 -0
- package/dist/primitives/messagePart/MessagePartImage.d.ts.map +1 -0
- package/dist/primitives/messagePart/MessagePartImage.js +16 -0
- package/dist/primitives/messagePart/MessagePartImage.js.map +1 -0
- package/dist/primitives/messagePart/MessagePartInProgress.d.ts +6 -0
- package/dist/primitives/{contentPart/ContentPartInProgress.d.ts.map → messagePart/MessagePartInProgress.d.ts.map} +1 -1
- package/dist/primitives/messagePart/MessagePartInProgress.js +13 -0
- package/dist/primitives/messagePart/MessagePartInProgress.js.map +1 -0
- package/dist/primitives/messagePart/MessagePartText.d.ts +50 -0
- package/dist/primitives/messagePart/MessagePartText.d.ts.map +1 -0
- package/dist/primitives/messagePart/MessagePartText.js +18 -0
- package/dist/primitives/messagePart/MessagePartText.js.map +1 -0
- package/dist/primitives/messagePart/index.d.ts +4 -0
- package/dist/primitives/{contentPart → messagePart}/index.d.ts.map +1 -1
- package/dist/primitives/messagePart/index.js +10 -0
- package/dist/primitives/messagePart/index.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartFile.d.ts +5 -0
- package/dist/primitives/messagePart/useMessagePartFile.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartFile.js +18 -0
- package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartImage.d.ts +5 -0
- package/dist/primitives/messagePart/useMessagePartImage.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartImage.js +18 -0
- package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.d.ts +5 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.js +18 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartSource.d.ts +5 -0
- package/dist/primitives/messagePart/useMessagePartSource.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartSource.js +18 -0
- package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartText.d.ts +7 -0
- package/dist/primitives/messagePart/useMessagePartText.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartText.js +18 -0
- package/dist/primitives/messagePart/useMessagePartText.js.map +1 -0
- package/dist/primitives/thread/ThreadMessages.d.ts +44 -0
- package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadMessages.js +5 -2
- package/dist/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/primitives/thread/ThreadRoot.d.ts +19 -0
- package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.d.ts +24 -0
- package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -1
- package/dist/primitives/threadList/ThreadListItems.js +12 -9
- package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
- package/dist/runtimes/adapters/attachment/AttachmentAdapter.d.ts +54 -0
- package/dist/runtimes/adapters/attachment/AttachmentAdapter.d.ts.map +1 -1
- package/dist/runtimes/adapters/feedback/FeedbackAdapter.d.ts +33 -0
- package/dist/runtimes/adapters/feedback/FeedbackAdapter.d.ts.map +1 -1
- package/dist/runtimes/adapters/speech/SpeechAdapterTypes.d.ts +47 -0
- package/dist/runtimes/adapters/speech/SpeechAdapterTypes.d.ts.map +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +1 -0
- package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +1 -0
- package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/ThreadRuntimeCore.d.ts +1 -0
- package/dist/runtimes/core/ThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +2 -0
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +1 -0
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +3 -0
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts +1 -0
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +3 -0
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.d.ts +3 -3
- package/dist/runtimes/external-store/ThreadMessageLike.js +3 -3
- package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
- package/dist/runtimes/external-store/createMessageConverter.js +3 -3
- package/dist/runtimes/external-store/createMessageConverter.js.map +1 -1
- package/dist/runtimes/external-store/external-message-converter.js.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.d.ts +4 -4
- package/dist/runtimes/local/LocalRuntimeOptions.d.ts +2 -2
- package/dist/runtimes/local/LocalRuntimeOptions.d.ts.map +1 -1
- package/dist/runtimes/local/LocalRuntimeOptions.js.map +1 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +1 -0
- package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js +3 -0
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts +2 -0
- package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js +12 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js +1 -0
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts +2 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +3 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +3 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.js +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -1
- package/dist/runtimes/utils/MessageRepository.js +1 -1
- package/dist/runtimes/utils/MessageRepository.js.map +1 -1
- package/dist/tests/setup.js +8 -8
- package/dist/tests/setup.js.map +1 -1
- package/dist/types/AssistantTypes.d.ts +15 -15
- package/dist/types/AttachmentTypes.d.ts +3 -3
- package/dist/types/MessagePartComponentTypes.d.ts +25 -0
- package/dist/types/{ContentPartComponentTypes.d.ts.map → MessagePartComponentTypes.d.ts.map} +1 -1
- package/dist/types/MessagePartComponentTypes.js +1 -0
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/getThreadMessageText.js.map +1 -1
- package/dist/utils/smooth/SmoothContext.js +3 -3
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/dist/utils/smooth/useSmooth.d.ts +3 -3
- package/dist/utils/smooth/useSmooth.js.map +1 -1
- package/dist/utils/useToolArgsFieldStatus.js +3 -3
- package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
- package/package.json +9 -8
- package/src/api/{ContentPartRuntime.ts → MessagePartRuntime.ts} +20 -20
- package/src/api/MessageRuntime.ts +32 -32
- package/src/api/RuntimePathTypes.ts +2 -2
- package/src/api/ThreadListRuntime.ts +8 -0
- package/src/api/ThreadRuntime.ts +6 -0
- package/src/api/index.ts +11 -3
- package/src/cloud/AssistantCloudThreadHistoryAdapter.tsx +1 -1
- package/src/cloud/auiV0.ts +4 -4
- package/src/cloud/index.ts +1 -1
- package/src/cloud/useCloudThreadListRuntime.tsx +1 -1
- package/src/context/providers/MessagePartRuntimeProvider.tsx +42 -0
- package/src/context/providers/{TextContentPartProvider.tsx → TextMessagePartProvider.tsx} +27 -27
- package/src/context/providers/index.ts +4 -1
- package/src/context/react/AssistantContext.ts +23 -0
- package/src/context/react/ComposerContext.ts +64 -0
- package/src/context/react/MessageContext.ts +56 -0
- package/src/context/react/MessagePartContext.ts +37 -0
- package/src/context/react/ThreadContext.ts +42 -0
- package/src/context/react/index.ts +1 -1
- package/src/context/stores/AssistantToolUIs.ts +4 -4
- package/src/model-context/useAssistantTool.tsx +2 -2
- package/src/model-context/useAssistantToolUI.tsx +2 -2
- package/src/model-context/useInlineRender.tsx +3 -3
- package/src/primitives/actionBar/ActionBarCopy.tsx +42 -0
- package/src/primitives/actionBar/ActionBarEdit.tsx +38 -0
- package/src/primitives/actionBar/ActionBarReload.tsx +39 -0
- package/src/primitives/actionBar/ActionBarRoot.tsx +38 -0
- package/src/primitives/assistantModal/AssistantModalContent.tsx +5 -1
- package/src/primitives/attachment/AttachmentRoot.tsx +18 -0
- package/src/primitives/branchPicker/BranchPickerCount.tsx +17 -0
- package/src/primitives/branchPicker/BranchPickerNext.tsx +17 -0
- package/src/primitives/branchPicker/BranchPickerPrevious.tsx +38 -0
- package/src/primitives/branchPicker/BranchPickerRoot.tsx +22 -0
- package/src/primitives/composer/ComposerAttachments.tsx +11 -7
- package/src/primitives/composer/ComposerCancel.tsx +17 -0
- package/src/primitives/composer/ComposerInput.tsx +44 -0
- package/src/primitives/composer/ComposerRoot.tsx +19 -0
- package/src/primitives/composer/ComposerSend.tsx +18 -0
- package/src/primitives/index.ts +14 -6
- package/src/primitives/message/MessageAttachments.tsx +11 -7
- package/src/primitives/message/MessageParts.tsx +423 -0
- package/src/primitives/message/MessageRoot.tsx +22 -0
- package/src/primitives/message/index.ts +2 -1
- package/src/primitives/messagePart/MessagePartImage.tsx +39 -0
- package/src/primitives/messagePart/MessagePartInProgress.tsx +19 -0
- package/src/primitives/messagePart/MessagePartText.tsx +62 -0
- package/src/primitives/messagePart/index.ts +3 -0
- package/src/primitives/messagePart/useMessagePartFile.tsx +18 -0
- package/src/primitives/messagePart/useMessagePartImage.tsx +18 -0
- package/src/primitives/messagePart/useMessagePartReasoning.tsx +18 -0
- package/src/primitives/messagePart/useMessagePartSource.tsx +18 -0
- package/src/primitives/messagePart/useMessagePartText.tsx +18 -0
- package/src/primitives/thread/ThreadMessages.tsx +52 -4
- package/src/primitives/thread/ThreadRoot.tsx +19 -0
- package/src/primitives/thread/ThreadViewport.tsx +19 -0
- package/src/primitives/threadList/ThreadListItems.tsx +12 -8
- package/src/runtimes/adapters/attachment/AttachmentAdapter.ts +56 -0
- package/src/runtimes/adapters/feedback/FeedbackAdapter.ts +33 -0
- package/src/runtimes/adapters/speech/SpeechAdapterTypes.ts +47 -0
- package/src/runtimes/core/BaseThreadRuntimeCore.tsx +1 -0
- package/src/runtimes/core/ThreadListRuntimeCore.tsx +1 -0
- package/src/runtimes/core/ThreadRuntimeCore.tsx +1 -0
- package/src/runtimes/external-store/ExternalStoreAdapter.tsx +2 -0
- package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +4 -0
- package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +3 -0
- package/src/runtimes/external-store/ThreadMessageLike.tsx +20 -20
- package/src/runtimes/external-store/createMessageConverter.tsx +3 -3
- package/src/runtimes/external-store/external-message-converter.tsx +2 -2
- package/src/runtimes/local/ChatModelAdapter.tsx +13 -13
- package/src/runtimes/local/LocalRuntimeOptions.tsx +1 -1
- package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +4 -0
- package/src/runtimes/local/LocalThreadRuntimeCore.tsx +30 -15
- package/src/runtimes/remote-thread-list/EMPTY_THREAD_CORE.tsx +1 -0
- package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +4 -0
- package/src/runtimes/remote-thread-list/adapter/cloud.tsx +1 -1
- package/src/runtimes/utils/MessageRepository.tsx +1 -1
- package/src/tests/MessageRepository.test.ts +6 -6
- package/src/types/AssistantTypes.ts +24 -24
- package/src/types/AttachmentTypes.ts +3 -3
- package/src/types/MessagePartComponentTypes.tsx +52 -0
- package/src/types/index.ts +69 -28
- package/src/utils/getThreadMessageText.tsx +2 -2
- package/src/utils/smooth/SmoothContext.tsx +7 -7
- package/src/utils/smooth/useSmooth.tsx +7 -7
- package/src/utils/useToolArgsFieldStatus.tsx +3 -3
- package/dist/cloud/AssistantCloud.d.ts +0 -15
- package/dist/cloud/AssistantCloud.d.ts.map +0 -1
- package/dist/cloud/AssistantCloud.js +0 -25
- package/dist/cloud/AssistantCloud.js.map +0 -1
- package/dist/cloud/AssistantCloudAPI.d.ts +0 -28
- package/dist/cloud/AssistantCloudAPI.d.ts.map +0 -1
- package/dist/cloud/AssistantCloudAPI.js +0 -87
- package/dist/cloud/AssistantCloudAPI.js.map +0 -1
- package/dist/cloud/AssistantCloudAuthStrategy.d.ts +0 -30
- package/dist/cloud/AssistantCloudAuthStrategy.d.ts.map +0 -1
- package/dist/cloud/AssistantCloudAuthStrategy.js +0 -139
- package/dist/cloud/AssistantCloudAuthStrategy.js.map +0 -1
- package/dist/cloud/AssistantCloudAuthTokens.d.ts +0 -11
- package/dist/cloud/AssistantCloudAuthTokens.d.ts.map +0 -1
- package/dist/cloud/AssistantCloudAuthTokens.js +0 -13
- package/dist/cloud/AssistantCloudAuthTokens.js.map +0 -1
- package/dist/cloud/AssistantCloudFiles.d.ts +0 -27
- package/dist/cloud/AssistantCloudFiles.d.ts.map +0 -1
- package/dist/cloud/AssistantCloudFiles.js +0 -25
- package/dist/cloud/AssistantCloudFiles.js.map +0 -1
- package/dist/cloud/AssistantCloudRuns.d.ts +0 -26
- package/dist/cloud/AssistantCloudRuns.d.ts.map +0 -1
- package/dist/cloud/AssistantCloudRuns.js +0 -39
- package/dist/cloud/AssistantCloudRuns.js.map +0 -1
- package/dist/cloud/AssistantCloudThreadMessages.d.ts +0 -30
- package/dist/cloud/AssistantCloudThreadMessages.d.ts.map +0 -1
- package/dist/cloud/AssistantCloudThreadMessages.js +0 -21
- package/dist/cloud/AssistantCloudThreadMessages.js.map +0 -1
- package/dist/cloud/AssistantCloudThreads.d.ts +0 -48
- package/dist/cloud/AssistantCloudThreads.d.ts.map +0 -1
- package/dist/cloud/AssistantCloudThreads.js +0 -30
- package/dist/cloud/AssistantCloudThreads.js.map +0 -1
- package/dist/context/providers/ContentPartRuntimeProvider.d.ts +0 -9
- package/dist/context/providers/ContentPartRuntimeProvider.js.map +0 -1
- package/dist/context/react/ContentPartContext.d.ts +0 -41
- package/dist/context/react/ContentPartContext.js +0 -25
- package/dist/context/react/ContentPartContext.js.map +0 -1
- package/dist/primitives/contentPart/ContentPartImage.d.ts +0 -10
- package/dist/primitives/contentPart/ContentPartImage.d.ts.map +0 -1
- package/dist/primitives/contentPart/ContentPartImage.js +0 -16
- package/dist/primitives/contentPart/ContentPartImage.js.map +0 -1
- package/dist/primitives/contentPart/ContentPartInProgress.d.ts +0 -6
- package/dist/primitives/contentPart/ContentPartInProgress.js +0 -13
- package/dist/primitives/contentPart/ContentPartInProgress.js.map +0 -1
- package/dist/primitives/contentPart/ContentPartText.d.ts +0 -16
- package/dist/primitives/contentPart/ContentPartText.d.ts.map +0 -1
- package/dist/primitives/contentPart/ContentPartText.js +0 -18
- package/dist/primitives/contentPart/ContentPartText.js.map +0 -1
- package/dist/primitives/contentPart/index.d.ts +0 -4
- package/dist/primitives/contentPart/index.js +0 -10
- package/dist/primitives/contentPart/index.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartFile.d.ts +0 -5
- package/dist/primitives/contentPart/useContentPartFile.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartFile.js +0 -18
- package/dist/primitives/contentPart/useContentPartFile.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartImage.d.ts +0 -5
- package/dist/primitives/contentPart/useContentPartImage.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartImage.js +0 -18
- package/dist/primitives/contentPart/useContentPartImage.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartReasoning.d.ts +0 -5
- package/dist/primitives/contentPart/useContentPartReasoning.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartReasoning.js +0 -18
- package/dist/primitives/contentPart/useContentPartReasoning.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartSource.d.ts +0 -5
- package/dist/primitives/contentPart/useContentPartSource.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartSource.js +0 -18
- package/dist/primitives/contentPart/useContentPartSource.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartText.d.ts +0 -7
- package/dist/primitives/contentPart/useContentPartText.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartText.js +0 -18
- package/dist/primitives/contentPart/useContentPartText.js.map +0 -1
- package/dist/primitives/message/MessageContent.d.ts +0 -23
- package/dist/primitives/message/MessageContent.d.ts.map +0 -1
- package/dist/primitives/message/MessageContent.js +0 -138
- package/dist/primitives/message/MessageContent.js.map +0 -1
- package/dist/types/ContentPartComponentTypes.d.ts +0 -25
- package/dist/types/ContentPartComponentTypes.js +0 -1
- package/src/cloud/AssistantCloud.tsx +0 -22
- package/src/cloud/AssistantCloudAPI.tsx +0 -121
- package/src/cloud/AssistantCloudAuthStrategy.tsx +0 -193
- package/src/cloud/AssistantCloudAuthTokens.tsx +0 -13
- package/src/cloud/AssistantCloudFiles.tsx +0 -48
- package/src/cloud/AssistantCloudRuns.tsx +0 -45
- package/src/cloud/AssistantCloudThreadMessages.tsx +0 -48
- package/src/cloud/AssistantCloudThreads.tsx +0 -79
- package/src/context/providers/ContentPartRuntimeProvider.tsx +0 -42
- package/src/context/react/ContentPartContext.ts +0 -37
- package/src/primitives/contentPart/ContentPartImage.tsx +0 -20
- package/src/primitives/contentPart/ContentPartInProgress.tsx +0 -19
- package/src/primitives/contentPart/ContentPartText.tsx +0 -37
- package/src/primitives/contentPart/index.ts +0 -3
- package/src/primitives/contentPart/useContentPartFile.tsx +0 -18
- package/src/primitives/contentPart/useContentPartImage.tsx +0 -18
- package/src/primitives/contentPart/useContentPartReasoning.tsx +0 -18
- package/src/primitives/contentPart/useContentPartSource.tsx +0 -18
- package/src/primitives/contentPart/useContentPartText.tsx +0 -18
- package/src/primitives/message/MessageContent.tsx +0 -241
- package/src/tests/AssistantCloudFiles.test.ts +0 -564
- package/src/types/ContentPartComponentTypes.tsx +0 -52
- /package/dist/types/{ContentPartComponentTypes.js.map → MessagePartComponentTypes.js.map} +0 -0
@@ -21,11 +21,14 @@ export type ThreadListState = {
|
|
21
21
|
readonly newThread: string | undefined;
|
22
22
|
readonly threads: readonly string[];
|
23
23
|
readonly archivedThreads: readonly string[];
|
24
|
+
readonly isLoading: boolean;
|
24
25
|
};
|
25
26
|
|
26
27
|
export type ThreadListRuntime = {
|
27
28
|
getState(): ThreadListState;
|
28
29
|
|
30
|
+
readonly isLoading: boolean;
|
31
|
+
|
29
32
|
subscribe(callback: () => void): Unsubscribe;
|
30
33
|
|
31
34
|
readonly main: ThreadRuntime;
|
@@ -48,6 +51,7 @@ const getThreadListState = (
|
|
48
51
|
newThread: threadList.newThreadId,
|
49
52
|
threads: threadList.threadIds,
|
50
53
|
archivedThreads: threadList.archivedThreadIds,
|
54
|
+
isLoading: threadList.isLoading,
|
51
55
|
};
|
52
56
|
};
|
53
57
|
|
@@ -139,6 +143,10 @@ export class ThreadListRuntimeImpl implements ThreadListRuntime {
|
|
139
143
|
return this._getState();
|
140
144
|
}
|
141
145
|
|
146
|
+
public get isLoading() {
|
147
|
+
return this._core.isLoading;
|
148
|
+
}
|
149
|
+
|
142
150
|
public subscribe(callback: () => void): Unsubscribe {
|
143
151
|
return this._core.subscribe(callback);
|
144
152
|
}
|
package/src/api/ThreadRuntime.ts
CHANGED
@@ -139,6 +139,11 @@ export type ThreadState = {
|
|
139
139
|
*/
|
140
140
|
readonly isDisabled: boolean;
|
141
141
|
|
142
|
+
/**
|
143
|
+
* Whether the thread is loading its history.
|
144
|
+
*/
|
145
|
+
readonly isLoading: boolean;
|
146
|
+
|
142
147
|
/**
|
143
148
|
* Whether the thread is running. A thread is considered running when there is an active stream connection to the backend.
|
144
149
|
*/
|
@@ -187,6 +192,7 @@ export const getThreadState = (
|
|
187
192
|
metadata: threadListItemState,
|
188
193
|
capabilities: runtime.capabilities,
|
189
194
|
isDisabled: runtime.isDisabled,
|
195
|
+
isLoading: runtime.isLoading,
|
190
196
|
isRunning:
|
191
197
|
lastMessage?.role !== "assistant"
|
192
198
|
? false
|
package/src/api/index.ts
CHANGED
@@ -6,10 +6,18 @@ export type {
|
|
6
6
|
CreateStartRunConfig,
|
7
7
|
} from "./ThreadRuntime";
|
8
8
|
export type { MessageRuntime, MessageState } from "./MessageRuntime";
|
9
|
+
|
9
10
|
export type {
|
10
|
-
|
11
|
-
|
12
|
-
} from "./
|
11
|
+
MessagePartRuntime,
|
12
|
+
MessagePartState,
|
13
|
+
} from "./MessagePartRuntime";
|
14
|
+
|
15
|
+
// TODO remove in v0.11
|
16
|
+
export type {
|
17
|
+
MessagePartRuntime as MessageContentRuntime,
|
18
|
+
MessagePartState as MessageContentState,
|
19
|
+
} from "./MessagePartRuntime";
|
20
|
+
|
13
21
|
export type {
|
14
22
|
ComposerRuntime,
|
15
23
|
ThreadComposerRuntime,
|
@@ -2,7 +2,7 @@ import { RefObject, useState } from "react";
|
|
2
2
|
import { useThreadListItemRuntime } from "../context";
|
3
3
|
import { ThreadHistoryAdapter } from "../runtimes/adapters/thread-history/ThreadHistoryAdapter";
|
4
4
|
import { ExportedMessageRepositoryItem } from "../runtimes/utils/MessageRepository";
|
5
|
-
import { AssistantCloud } from "
|
5
|
+
import { AssistantCloud } from "assistant-cloud";
|
6
6
|
import { auiV0Decode, auiV0Encode } from "./auiV0";
|
7
7
|
import { ThreadListItemRuntime } from "../api";
|
8
8
|
|
package/src/cloud/auiV0.ts
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
import { ThreadMessage } from "../types";
|
2
2
|
import { MessageStatus } from "../types/AssistantTypes";
|
3
3
|
import { fromThreadMessageLike } from "../runtimes/external-store/ThreadMessageLike";
|
4
|
-
import { CloudMessage } from "
|
4
|
+
import { CloudMessage } from "assistant-cloud";
|
5
5
|
import { isJSONValue } from "../utils/json/is-json";
|
6
6
|
import { ReadonlyJSONObject, ReadonlyJSONValue } from "assistant-stream/utils";
|
7
7
|
import { ExportedMessageRepositoryItem } from "../runtimes/utils/MessageRepository";
|
8
8
|
|
9
|
-
type
|
9
|
+
type AuiV0MessageMessagePart =
|
10
10
|
| {
|
11
11
|
readonly type: "text";
|
12
12
|
readonly text: string;
|
@@ -42,7 +42,7 @@ type AuiV0MessageContentPart =
|
|
42
42
|
type AuiV0Message = {
|
43
43
|
readonly role: "assistant" | "user" | "system";
|
44
44
|
readonly status?: MessageStatus;
|
45
|
-
readonly content: readonly
|
45
|
+
readonly content: readonly AuiV0MessageMessagePart[];
|
46
46
|
readonly metadata: {
|
47
47
|
readonly unstable_state?: ReadonlyJSONValue;
|
48
48
|
readonly unstable_annotations: readonly ReadonlyJSONValue[];
|
@@ -114,7 +114,7 @@ export const auiV0Encode = (message: ThreadMessage): AuiV0Message => {
|
|
114
114
|
default: {
|
115
115
|
const unhandledType: "image" | "file" | "audio" = type;
|
116
116
|
throw new Error(
|
117
|
-
`
|
117
|
+
`Message part type not supported by aui/v0: ${unhandledType}`,
|
118
118
|
);
|
119
119
|
}
|
120
120
|
}
|
package/src/cloud/index.ts
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
export { useCloudThreadListRuntime } from "./useCloudThreadListRuntime";
|
2
|
-
export { AssistantCloud } from "
|
2
|
+
export { AssistantCloud } from "assistant-cloud";
|
@@ -1,6 +1,6 @@
|
|
1
1
|
"use client";
|
2
2
|
|
3
|
-
import { AssistantCloud } from "
|
3
|
+
import { AssistantCloud } from "assistant-cloud";
|
4
4
|
import { AssistantRuntime } from "../api";
|
5
5
|
import { useRemoteThreadListRuntime } from "../runtimes/remote-thread-list/useRemoteThreadListRuntime";
|
6
6
|
import { useCloudThreadListAdapter } from "../runtimes/remote-thread-list/adapter/cloud";
|
@@ -0,0 +1,42 @@
|
|
1
|
+
"use client";
|
2
|
+
|
3
|
+
import { type FC, type PropsWithChildren, useEffect, useState } from "react";
|
4
|
+
import { create } from "zustand";
|
5
|
+
import { MessagePartContext } from "../react/MessagePartContext";
|
6
|
+
import type { MessagePartContextValue } from "../react/MessagePartContext";
|
7
|
+
import { writableStore } from "../ReadonlyStore";
|
8
|
+
import { MessagePartRuntime } from "../../api/MessagePartRuntime";
|
9
|
+
import { ensureBinding } from "../react/utils/ensureBinding";
|
10
|
+
|
11
|
+
export namespace MessagePartRuntimeProvider {
|
12
|
+
export type Props = PropsWithChildren<{
|
13
|
+
runtime: MessagePartRuntime;
|
14
|
+
}>;
|
15
|
+
}
|
16
|
+
|
17
|
+
const useMessagePartRuntimeStore = (runtime: MessagePartRuntime) => {
|
18
|
+
const [store] = useState(() => create(() => runtime));
|
19
|
+
|
20
|
+
useEffect(() => {
|
21
|
+
ensureBinding(runtime);
|
22
|
+
|
23
|
+
writableStore(store).setState(runtime, true);
|
24
|
+
}, [runtime, store]);
|
25
|
+
|
26
|
+
return store;
|
27
|
+
};
|
28
|
+
|
29
|
+
export const MessagePartRuntimeProvider: FC<
|
30
|
+
MessagePartRuntimeProvider.Props
|
31
|
+
> = ({ runtime, children }) => {
|
32
|
+
const useMessagePartRuntime = useMessagePartRuntimeStore(runtime);
|
33
|
+
const [context] = useState<MessagePartContextValue>(() => {
|
34
|
+
return { useMessagePartRuntime };
|
35
|
+
});
|
36
|
+
|
37
|
+
return (
|
38
|
+
<MessagePartContext.Provider value={context}>
|
39
|
+
{children}
|
40
|
+
</MessagePartContext.Provider>
|
41
|
+
);
|
42
|
+
};
|
@@ -3,88 +3,88 @@
|
|
3
3
|
import { FC, PropsWithChildren, useEffect, useState } from "react";
|
4
4
|
import { create, StoreApi, UseBoundStore } from "zustand";
|
5
5
|
import {
|
6
|
-
|
7
|
-
|
8
|
-
} from "../react/
|
9
|
-
import {
|
6
|
+
MessagePartContext,
|
7
|
+
MessagePartContextValue,
|
8
|
+
} from "../react/MessagePartContext";
|
9
|
+
import { MessagePartStatus } from "../../types/AssistantTypes";
|
10
10
|
import { writableStore } from "../ReadonlyStore";
|
11
11
|
import {
|
12
|
-
|
13
|
-
|
14
|
-
} from "../../api/
|
12
|
+
MessagePartRuntimeImpl,
|
13
|
+
MessagePartState,
|
14
|
+
} from "../../api/MessagePartRuntime";
|
15
15
|
import { ensureBinding } from "../react/utils/ensureBinding";
|
16
16
|
|
17
|
-
export namespace
|
17
|
+
export namespace TextMessagePartProvider {
|
18
18
|
export type Props = PropsWithChildren<{
|
19
19
|
text: string;
|
20
20
|
isRunning?: boolean | undefined;
|
21
21
|
}>;
|
22
22
|
}
|
23
23
|
|
24
|
-
const COMPLETE_STATUS:
|
24
|
+
const COMPLETE_STATUS: MessagePartStatus = {
|
25
25
|
type: "complete",
|
26
26
|
};
|
27
27
|
|
28
|
-
const RUNNING_STATUS:
|
28
|
+
const RUNNING_STATUS: MessagePartStatus = {
|
29
29
|
type: "running",
|
30
30
|
};
|
31
31
|
|
32
|
-
export const
|
32
|
+
export const TextMessagePartProvider: FC<TextMessagePartProvider.Props> = ({
|
33
33
|
children,
|
34
34
|
text,
|
35
35
|
isRunning,
|
36
36
|
}) => {
|
37
37
|
const [context] = useState<
|
38
|
-
|
39
|
-
|
40
|
-
StoreApi<
|
38
|
+
MessagePartContextValue & {
|
39
|
+
useMessagePart: UseBoundStore<
|
40
|
+
StoreApi<MessagePartState & { type: "text" }>
|
41
41
|
>;
|
42
42
|
}
|
43
43
|
>(() => {
|
44
|
-
const
|
44
|
+
const useMessagePart = create<MessagePartState & { type: "text" }>(() => ({
|
45
45
|
status: isRunning ? RUNNING_STATUS : COMPLETE_STATUS,
|
46
46
|
type: "text",
|
47
47
|
text,
|
48
48
|
}));
|
49
49
|
|
50
|
-
const
|
50
|
+
const MessagePartRuntime = new MessagePartRuntimeImpl({
|
51
51
|
path: {
|
52
52
|
ref: "text",
|
53
53
|
threadSelector: { type: "main" },
|
54
54
|
messageSelector: { type: "messageId", messageId: "" },
|
55
|
-
|
55
|
+
messagePartSelector: { type: "index", index: 0 },
|
56
56
|
},
|
57
|
-
getState:
|
58
|
-
subscribe:
|
57
|
+
getState: useMessagePart.getState,
|
58
|
+
subscribe: useMessagePart.subscribe,
|
59
59
|
});
|
60
|
-
ensureBinding(
|
60
|
+
ensureBinding(MessagePartRuntime);
|
61
61
|
|
62
|
-
const
|
62
|
+
const useMessagePartRuntime = create(() => MessagePartRuntime);
|
63
63
|
|
64
|
-
return {
|
64
|
+
return { useMessagePartRuntime, useMessagePart };
|
65
65
|
});
|
66
66
|
|
67
67
|
useEffect(() => {
|
68
|
-
const state = context.
|
68
|
+
const state = context.useMessagePart.getState();
|
69
69
|
const textUpdated = state.text !== text;
|
70
70
|
const targetStatus = isRunning ? RUNNING_STATUS : COMPLETE_STATUS;
|
71
71
|
const statusUpdated = state.status !== targetStatus;
|
72
72
|
|
73
73
|
if (!textUpdated && !statusUpdated) return;
|
74
74
|
|
75
|
-
writableStore(context.
|
75
|
+
writableStore(context.useMessagePart).setState(
|
76
76
|
{
|
77
77
|
type: "text",
|
78
78
|
text,
|
79
79
|
status: targetStatus,
|
80
|
-
} satisfies
|
80
|
+
} satisfies MessagePartState,
|
81
81
|
true,
|
82
82
|
);
|
83
83
|
}, [context, isRunning, text]);
|
84
84
|
|
85
85
|
return (
|
86
|
-
<
|
86
|
+
<MessagePartContext.Provider value={context}>
|
87
87
|
{children}
|
88
|
-
</
|
88
|
+
</MessagePartContext.Provider>
|
89
89
|
);
|
90
90
|
};
|
@@ -1,2 +1,5 @@
|
|
1
1
|
export { AssistantRuntimeProvider } from "./AssistantRuntimeProvider";
|
2
|
-
export {
|
2
|
+
export { TextMessagePartProvider } from "./TextMessagePartProvider";
|
3
|
+
|
4
|
+
// TODO remove in v0.11
|
5
|
+
export { TextMessagePartProvider as TextContentPartProvider } from "./TextMessagePartProvider";
|
@@ -24,6 +24,29 @@ export const useAssistantContext = createContextHook(
|
|
24
24
|
"AssistantRuntimeProvider",
|
25
25
|
);
|
26
26
|
|
27
|
+
/**
|
28
|
+
* Hook to access the AssistantRuntime from the current context.
|
29
|
+
*
|
30
|
+
* The AssistantRuntime provides access to the top-level assistant state and actions,
|
31
|
+
* including thread management, tool registration, and configuration.
|
32
|
+
*
|
33
|
+
* @param options Configuration options
|
34
|
+
* @param options.optional Whether the hook should return null if no context is found
|
35
|
+
* @returns The AssistantRuntime instance, or null if optional is true and no context exists
|
36
|
+
*
|
37
|
+
* @example
|
38
|
+
* ```tsx
|
39
|
+
* function MyComponent() {
|
40
|
+
* const runtime = useAssistantRuntime();
|
41
|
+
*
|
42
|
+
* const handleNewThread = () => {
|
43
|
+
* runtime.switchToNewThread();
|
44
|
+
* };
|
45
|
+
*
|
46
|
+
* return <button onClick={handleNewThread}>New Thread</button>;
|
47
|
+
* }
|
48
|
+
* ```
|
49
|
+
*/
|
27
50
|
export function useAssistantRuntime(options?: {
|
28
51
|
optional?: false | undefined;
|
29
52
|
}): AssistantRuntime;
|
@@ -5,6 +5,44 @@ import { useThreadRuntime } from "./ThreadContext";
|
|
5
5
|
import { ComposerRuntime } from "../../api/ComposerRuntime";
|
6
6
|
import { createStateHookForRuntime } from "./utils/createStateHookForRuntime";
|
7
7
|
|
8
|
+
/**
|
9
|
+
* Hook to access the ComposerRuntime from the current context.
|
10
|
+
*
|
11
|
+
* The ComposerRuntime provides access to composer state and actions for message
|
12
|
+
* composition, including text input, attachments, and sending functionality.
|
13
|
+
* This hook automatically resolves to either the message's edit composer or
|
14
|
+
* the thread's main composer depending on the context.
|
15
|
+
*
|
16
|
+
* @param options Configuration options
|
17
|
+
* @param options.optional Whether the hook should return null if no context is found
|
18
|
+
* @returns The ComposerRuntime instance, or null if optional is true and no context exists
|
19
|
+
*
|
20
|
+
* @example
|
21
|
+
* ```tsx
|
22
|
+
* function ComposerActions() {
|
23
|
+
* const runtime = useComposerRuntime();
|
24
|
+
*
|
25
|
+
* const handleSend = () => {
|
26
|
+
* if (runtime.getState().canSend) {
|
27
|
+
* runtime.send();
|
28
|
+
* }
|
29
|
+
* };
|
30
|
+
*
|
31
|
+
* const handleCancel = () => {
|
32
|
+
* if (runtime.getState().canCancel) {
|
33
|
+
* runtime.cancel();
|
34
|
+
* }
|
35
|
+
* };
|
36
|
+
*
|
37
|
+
* return (
|
38
|
+
* <div>
|
39
|
+
* <button onClick={handleSend}>Send</button>
|
40
|
+
* <button onClick={handleCancel}>Cancel</button>
|
41
|
+
* </div>
|
42
|
+
* );
|
43
|
+
* }
|
44
|
+
* ```
|
45
|
+
*/
|
8
46
|
export function useComposerRuntime(options?: {
|
9
47
|
optional?: false | undefined;
|
10
48
|
}): ComposerRuntime;
|
@@ -21,4 +59,30 @@ export function useComposerRuntime(options?: {
|
|
21
59
|
: (threadRuntime?.composer ?? null);
|
22
60
|
}
|
23
61
|
|
62
|
+
/**
|
63
|
+
* Hook to access the current composer state.
|
64
|
+
*
|
65
|
+
* This hook provides reactive access to the composer's state, including text content,
|
66
|
+
* attachments, editing status, and send/cancel capabilities.
|
67
|
+
*
|
68
|
+
* @param selector Optional selector function to pick specific state properties
|
69
|
+
* @returns The selected composer state or the entire composer state if no selector provided
|
70
|
+
*
|
71
|
+
* @example
|
72
|
+
* ```tsx
|
73
|
+
* function ComposerStatus() {
|
74
|
+
* const text = useComposer((state) => state.text);
|
75
|
+
* const canSend = useComposer((state) => state.canSend);
|
76
|
+
* const attachmentCount = useComposer((state) => state.attachments.length);
|
77
|
+
*
|
78
|
+
* return (
|
79
|
+
* <div>
|
80
|
+
* Text: {text.length} chars,
|
81
|
+
* Attachments: {attachmentCount},
|
82
|
+
* Can send: {canSend}
|
83
|
+
* </div>
|
84
|
+
* );
|
85
|
+
* }
|
86
|
+
* ```
|
87
|
+
*/
|
24
88
|
export const useComposer = createStateHookForRuntime(useComposerRuntime);
|
@@ -22,6 +22,38 @@ const useMessageContext = createContextHook(
|
|
22
22
|
"a component passed to <ThreadPrimitive.Messages components={...} />",
|
23
23
|
);
|
24
24
|
|
25
|
+
/**
|
26
|
+
* Hook to access the MessageRuntime from the current context.
|
27
|
+
*
|
28
|
+
* The MessageRuntime provides access to message-level state and actions,
|
29
|
+
* including message content, status, editing capabilities, and branching.
|
30
|
+
*
|
31
|
+
* @param options Configuration options
|
32
|
+
* @param options.optional Whether the hook should return null if no context is found
|
33
|
+
* @returns The MessageRuntime instance, or null if optional is true and no context exists
|
34
|
+
*
|
35
|
+
* @example
|
36
|
+
* ```tsx
|
37
|
+
* function MessageActions() {
|
38
|
+
* const runtime = useMessageRuntime();
|
39
|
+
*
|
40
|
+
* const handleReload = () => {
|
41
|
+
* runtime.reload();
|
42
|
+
* };
|
43
|
+
*
|
44
|
+
* const handleEdit = () => {
|
45
|
+
* runtime.startEdit();
|
46
|
+
* };
|
47
|
+
*
|
48
|
+
* return (
|
49
|
+
* <div>
|
50
|
+
* <button onClick={handleReload}>Reload</button>
|
51
|
+
* <button onClick={handleEdit}>Edit</button>
|
52
|
+
* </div>
|
53
|
+
* );
|
54
|
+
* }
|
55
|
+
* ```
|
56
|
+
*/
|
25
57
|
export function useMessageRuntime(options?: {
|
26
58
|
optional?: false | undefined;
|
27
59
|
}): MessageRuntime;
|
@@ -36,6 +68,30 @@ export function useMessageRuntime(options?: {
|
|
36
68
|
return context.useMessageRuntime();
|
37
69
|
}
|
38
70
|
|
71
|
+
/**
|
72
|
+
* Hook to access the current message state.
|
73
|
+
*
|
74
|
+
* This hook provides reactive access to the message's state, including content,
|
75
|
+
* role, status, and other message-level properties.
|
76
|
+
*
|
77
|
+
* @param selector Optional selector function to pick specific state properties
|
78
|
+
* @returns The selected message state or the entire message state if no selector provided
|
79
|
+
*
|
80
|
+
* @example
|
81
|
+
* ```tsx
|
82
|
+
* function MessageContent() {
|
83
|
+
* const role = useMessage((state) => state.role);
|
84
|
+
* const content = useMessage((state) => state.content);
|
85
|
+
* const isLoading = useMessage((state) => state.status.type === "running");
|
86
|
+
*
|
87
|
+
* return (
|
88
|
+
* <div className={`message-${role}`}>
|
89
|
+
* {isLoading ? "Loading..." : content.map(part => part.text).join("")}
|
90
|
+
* </div>
|
91
|
+
* );
|
92
|
+
* }
|
93
|
+
* ```
|
94
|
+
*/
|
39
95
|
export const useMessage = createStateHookForRuntime(useMessageRuntime);
|
40
96
|
|
41
97
|
const useEditComposerRuntime = (opt: {
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use client";
|
2
|
+
|
3
|
+
import { createContext } from "react";
|
4
|
+
import { ReadonlyStore } from "../ReadonlyStore";
|
5
|
+
import { createContextHook } from "./utils/createContextHook";
|
6
|
+
import { UseBoundStore } from "zustand";
|
7
|
+
import { MessagePartRuntime } from "../../api/MessagePartRuntime";
|
8
|
+
import { createStateHookForRuntime } from "./utils/createStateHookForRuntime";
|
9
|
+
|
10
|
+
export type MessagePartContextValue = {
|
11
|
+
useMessagePartRuntime: UseBoundStore<ReadonlyStore<MessagePartRuntime>>;
|
12
|
+
};
|
13
|
+
|
14
|
+
export const MessagePartContext = createContext<MessagePartContextValue | null>(
|
15
|
+
null,
|
16
|
+
);
|
17
|
+
|
18
|
+
const useMessagePartContext = createContextHook(
|
19
|
+
MessagePartContext,
|
20
|
+
"a component passed to <MessagePrimitive.Parts components={...}>",
|
21
|
+
);
|
22
|
+
|
23
|
+
export function useMessagePartRuntime(options?: {
|
24
|
+
optional?: false | undefined;
|
25
|
+
}): MessagePartRuntime;
|
26
|
+
export function useMessagePartRuntime(options?: {
|
27
|
+
optional?: boolean | undefined;
|
28
|
+
}): MessagePartRuntime | null;
|
29
|
+
export function useMessagePartRuntime(options?: {
|
30
|
+
optional?: boolean | undefined;
|
31
|
+
}) {
|
32
|
+
const context = useMessagePartContext(options);
|
33
|
+
if (!context) return null;
|
34
|
+
return context.useMessagePartRuntime();
|
35
|
+
}
|
36
|
+
|
37
|
+
export const useMessagePart = createStateHookForRuntime(useMessagePartRuntime);
|
@@ -20,6 +20,29 @@ const useThreadContext = createContextHook(
|
|
20
20
|
"AssistantRuntimeProvider",
|
21
21
|
);
|
22
22
|
|
23
|
+
/**
|
24
|
+
* Hook to access the ThreadRuntime from the current context.
|
25
|
+
*
|
26
|
+
* The ThreadRuntime provides access to thread-level state and actions,
|
27
|
+
* including message management, thread state, and composer functionality.
|
28
|
+
*
|
29
|
+
* @param options Configuration options
|
30
|
+
* @param options.optional Whether the hook should return null if no context is found
|
31
|
+
* @returns The ThreadRuntime instance, or null if optional is true and no context exists
|
32
|
+
*
|
33
|
+
* @example
|
34
|
+
* ```tsx
|
35
|
+
* function MyComponent() {
|
36
|
+
* const runtime = useThreadRuntime();
|
37
|
+
*
|
38
|
+
* const handleSendMessage = (text: string) => {
|
39
|
+
* runtime.append({ role: "user", content: [{ type: "text", text }] });
|
40
|
+
* };
|
41
|
+
*
|
42
|
+
* return <button onClick={() => handleSendMessage("Hello!")}>Send</button>;
|
43
|
+
* }
|
44
|
+
* ```
|
45
|
+
*/
|
23
46
|
export function useThreadRuntime(options?: {
|
24
47
|
optional?: false | undefined;
|
25
48
|
}): ThreadRuntime;
|
@@ -32,6 +55,25 @@ export function useThreadRuntime(options?: { optional?: boolean | undefined }) {
|
|
32
55
|
return context.useThreadRuntime();
|
33
56
|
}
|
34
57
|
|
58
|
+
/**
|
59
|
+
* Hook to access the current thread state.
|
60
|
+
*
|
61
|
+
* This hook provides reactive access to the thread's state, including messages,
|
62
|
+
* running status, capabilities, and other thread-level properties.
|
63
|
+
*
|
64
|
+
* @param selector Optional selector function to pick specific state properties
|
65
|
+
* @returns The selected thread state or the entire thread state if no selector provided
|
66
|
+
*
|
67
|
+
* @example
|
68
|
+
* ```tsx
|
69
|
+
* function ThreadStatus() {
|
70
|
+
* const isRunning = useThread((state) => state.isRunning);
|
71
|
+
* const messageCount = useThread((state) => state.messages.length);
|
72
|
+
*
|
73
|
+
* return <div>Running: {isRunning}, Messages: {messageCount}</div>;
|
74
|
+
* }
|
75
|
+
* ```
|
76
|
+
*/
|
35
77
|
export const useThread = createStateHookForRuntime(useThreadRuntime);
|
36
78
|
|
37
79
|
const useThreadComposerRuntime = (opt: {
|
@@ -37,7 +37,7 @@ export {
|
|
37
37
|
useMessageUtils,
|
38
38
|
useMessageUtilsStore,
|
39
39
|
} from "./MessageContext";
|
40
|
-
export {
|
40
|
+
export { useMessagePartRuntime, useMessagePart } from "./MessagePartContext";
|
41
41
|
export { useComposerRuntime, useComposer } from "./ComposerContext";
|
42
42
|
|
43
43
|
export {
|
@@ -1,25 +1,25 @@
|
|
1
1
|
import { create } from "zustand";
|
2
|
-
import type {
|
2
|
+
import type { ToolCallMessagePartComponent } from "../../types/MessagePartComponentTypes";
|
3
3
|
import { Unsubscribe } from "../../types";
|
4
4
|
|
5
5
|
export type AssistantToolUIsState = {
|
6
6
|
/**
|
7
7
|
* Get the tool UI configured for a given tool name.
|
8
8
|
*/
|
9
|
-
getToolUI: (toolName: string) =>
|
9
|
+
getToolUI: (toolName: string) => ToolCallMessagePartComponent | null;
|
10
10
|
|
11
11
|
/**
|
12
12
|
* Registers a tool UI for a given tool name. Returns an unsubscribe function to remove the tool UI.
|
13
13
|
*/
|
14
14
|
setToolUI: (
|
15
15
|
toolName: string,
|
16
|
-
render:
|
16
|
+
render: ToolCallMessagePartComponent,
|
17
17
|
) => Unsubscribe;
|
18
18
|
};
|
19
19
|
|
20
20
|
export const makeAssistantToolUIsStore = () =>
|
21
21
|
create<AssistantToolUIsState>((set) => {
|
22
|
-
const renderers = new Map<string,
|
22
|
+
const renderers = new Map<string, ToolCallMessagePartComponent[]>();
|
23
23
|
|
24
24
|
return Object.freeze({
|
25
25
|
getToolUI: (name) => {
|
@@ -5,7 +5,7 @@ import {
|
|
5
5
|
useAssistantRuntime,
|
6
6
|
useToolUIsStore,
|
7
7
|
} from "../context/react/AssistantContext";
|
8
|
-
import type {
|
8
|
+
import type { ToolCallMessagePartComponent } from "../types/MessagePartComponentTypes";
|
9
9
|
import type { Tool } from "assistant-stream";
|
10
10
|
|
11
11
|
export type AssistantToolProps<
|
@@ -13,7 +13,7 @@ export type AssistantToolProps<
|
|
13
13
|
TResult,
|
14
14
|
> = Tool<TArgs, TResult> & {
|
15
15
|
toolName: string;
|
16
|
-
render?:
|
16
|
+
render?: ToolCallMessagePartComponent<TArgs, TResult> | undefined;
|
17
17
|
};
|
18
18
|
|
19
19
|
export const useAssistantTool = <
|
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
import { useEffect } from "react";
|
4
4
|
import { useToolUIsStore } from "../context/react/AssistantContext";
|
5
|
-
import type {
|
5
|
+
import type { ToolCallMessagePartComponent } from "../types/MessagePartComponentTypes";
|
6
6
|
|
7
7
|
export type AssistantToolUIProps<TArgs, TResult> = {
|
8
8
|
toolName: string;
|
9
|
-
render:
|
9
|
+
render: ToolCallMessagePartComponent<TArgs, TResult>;
|
10
10
|
};
|
11
11
|
|
12
12
|
export const useAssistantToolUI = (
|
@@ -1,12 +1,12 @@
|
|
1
1
|
"use client";
|
2
2
|
|
3
3
|
import { FC, useCallback, useEffect, useState } from "react";
|
4
|
-
import {
|
4
|
+
import { ToolCallMessagePartProps } from "../types";
|
5
5
|
import { create } from "zustand";
|
6
6
|
|
7
7
|
export const useInlineRender = <TArgs, TResult>(
|
8
|
-
toolUI: FC<
|
9
|
-
): FC<
|
8
|
+
toolUI: FC<ToolCallMessagePartProps<TArgs, TResult>>,
|
9
|
+
): FC<ToolCallMessagePartProps<TArgs, TResult>> => {
|
10
10
|
const [useToolUIStore] = useState(() =>
|
11
11
|
create(() => ({
|
12
12
|
toolUI,
|