@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
@@ -1,38 +1,38 @@
|
|
1
1
|
import { CompleteAttachment } from "./AttachmentTypes";
|
2
2
|
import { ReadonlyJSONObject, ReadonlyJSONValue } from "assistant-stream/utils";
|
3
3
|
export type MessageRole = ThreadMessage["role"];
|
4
|
-
export type
|
4
|
+
export type TextMessagePart = {
|
5
5
|
readonly type: "text";
|
6
6
|
readonly text: string;
|
7
7
|
};
|
8
|
-
export type
|
8
|
+
export type ReasoningMessagePart = {
|
9
9
|
readonly type: "reasoning";
|
10
10
|
readonly text: string;
|
11
11
|
};
|
12
|
-
export type
|
12
|
+
export type SourceMessagePart = {
|
13
13
|
readonly type: "source";
|
14
14
|
readonly sourceType: "url";
|
15
15
|
readonly id: string;
|
16
16
|
readonly url: string;
|
17
17
|
readonly title?: string;
|
18
18
|
};
|
19
|
-
export type
|
19
|
+
export type ImageMessagePart = {
|
20
20
|
readonly type: "image";
|
21
21
|
readonly image: string;
|
22
22
|
};
|
23
|
-
export type
|
23
|
+
export type FileMessagePart = {
|
24
24
|
readonly type: "file";
|
25
25
|
readonly data: string;
|
26
26
|
readonly mimeType: string;
|
27
27
|
};
|
28
|
-
export type
|
28
|
+
export type Unstable_AudioMessagePart = {
|
29
29
|
readonly type: "audio";
|
30
30
|
readonly audio: {
|
31
31
|
readonly data: string;
|
32
32
|
readonly format: "mp3" | "wav";
|
33
33
|
};
|
34
34
|
};
|
35
|
-
export type
|
35
|
+
export type ToolCallMessagePart<TArgs = ReadonlyJSONObject, TResult = unknown> = {
|
36
36
|
readonly type: "tool-call";
|
37
37
|
readonly toolCallId: string;
|
38
38
|
readonly toolName: string;
|
@@ -42,8 +42,8 @@ export type ToolCallContentPart<TArgs = ReadonlyJSONObject, TResult = unknown> =
|
|
42
42
|
readonly argsText: string;
|
43
43
|
readonly artifact?: unknown;
|
44
44
|
};
|
45
|
-
export type
|
46
|
-
export type
|
45
|
+
export type ThreadUserMessagePart = TextMessagePart | ImageMessagePart | FileMessagePart | Unstable_AudioMessagePart;
|
46
|
+
export type ThreadAssistantMessagePart = TextMessagePart | ReasoningMessagePart | ToolCallMessagePart | SourceMessagePart | FileMessagePart;
|
47
47
|
type MessageCommonProps = {
|
48
48
|
readonly id: string;
|
49
49
|
readonly createdAt: Date;
|
@@ -55,7 +55,7 @@ export type ThreadStep = {
|
|
55
55
|
readonly completionTokens: number;
|
56
56
|
} | undefined;
|
57
57
|
};
|
58
|
-
export type
|
58
|
+
export type MessagePartStatus = {
|
59
59
|
readonly type: "running";
|
60
60
|
} | {
|
61
61
|
readonly type: "complete";
|
@@ -64,10 +64,10 @@ export type ContentPartStatus = {
|
|
64
64
|
readonly reason: "cancelled" | "length" | "content-filter" | "other" | "error";
|
65
65
|
readonly error?: unknown;
|
66
66
|
};
|
67
|
-
export type
|
67
|
+
export type ToolCallMessagePartStatus = {
|
68
68
|
readonly type: "requires-action";
|
69
69
|
readonly reason: "tool-calls";
|
70
|
-
} |
|
70
|
+
} | MessagePartStatus;
|
71
71
|
export type MessageStatus = {
|
72
72
|
readonly type: "running";
|
73
73
|
} | {
|
@@ -83,14 +83,14 @@ export type MessageStatus = {
|
|
83
83
|
};
|
84
84
|
export type ThreadSystemMessage = MessageCommonProps & {
|
85
85
|
readonly role: "system";
|
86
|
-
readonly content: readonly [
|
86
|
+
readonly content: readonly [TextMessagePart];
|
87
87
|
readonly metadata: {
|
88
88
|
readonly custom: Record<string, unknown>;
|
89
89
|
};
|
90
90
|
};
|
91
91
|
export type ThreadUserMessage = MessageCommonProps & {
|
92
92
|
readonly role: "user";
|
93
|
-
readonly content: readonly
|
93
|
+
readonly content: readonly ThreadUserMessagePart[];
|
94
94
|
readonly attachments: readonly CompleteAttachment[];
|
95
95
|
readonly metadata: {
|
96
96
|
readonly custom: Record<string, unknown>;
|
@@ -98,7 +98,7 @@ export type ThreadUserMessage = MessageCommonProps & {
|
|
98
98
|
};
|
99
99
|
export type ThreadAssistantMessage = MessageCommonProps & {
|
100
100
|
readonly role: "assistant";
|
101
|
-
readonly content: readonly
|
101
|
+
readonly content: readonly ThreadAssistantMessagePart[];
|
102
102
|
readonly status: MessageStatus;
|
103
103
|
readonly metadata: {
|
104
104
|
readonly unstable_state: ReadonlyJSONValue;
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
1
|
+
import { ThreadUserMessagePart } from "./AssistantTypes";
|
2
2
|
export type PendingAttachmentStatus = {
|
3
3
|
type: "running";
|
4
4
|
reason: "uploading";
|
@@ -20,7 +20,7 @@ type BaseAttachment = {
|
|
20
20
|
name: string;
|
21
21
|
contentType: string;
|
22
22
|
file?: File;
|
23
|
-
content?:
|
23
|
+
content?: ThreadUserMessagePart[];
|
24
24
|
};
|
25
25
|
export type PendingAttachment = BaseAttachment & {
|
26
26
|
status: PendingAttachmentStatus;
|
@@ -28,7 +28,7 @@ export type PendingAttachment = BaseAttachment & {
|
|
28
28
|
};
|
29
29
|
export type CompleteAttachment = BaseAttachment & {
|
30
30
|
status: CompleteAttachmentStatus;
|
31
|
-
content:
|
31
|
+
content: ThreadUserMessagePart[];
|
32
32
|
};
|
33
33
|
export type Attachment = PendingAttachment | CompleteAttachment;
|
34
34
|
export {};
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import type { ComponentType } from "react";
|
2
|
+
import type { MessagePartStatus, FileMessagePart, ImageMessagePart, ReasoningMessagePart, SourceMessagePart, TextMessagePart, ToolCallMessagePart, Unstable_AudioMessagePart } from "./AssistantTypes";
|
3
|
+
import { MessagePartState } from "../api/MessagePartRuntime";
|
4
|
+
import { ToolResponse } from "assistant-stream";
|
5
|
+
export type EmptyMessagePartProps = {
|
6
|
+
status: MessagePartStatus;
|
7
|
+
};
|
8
|
+
export type EmptyMessagePartComponent = ComponentType<EmptyMessagePartProps>;
|
9
|
+
export type TextMessagePartProps = MessagePartState & TextMessagePart;
|
10
|
+
export type TextMessagePartComponent = ComponentType<TextMessagePartProps>;
|
11
|
+
export type ReasoningMessagePartProps = MessagePartState & ReasoningMessagePart;
|
12
|
+
export type ReasoningMessagePartComponent = ComponentType<ReasoningMessagePartProps>;
|
13
|
+
export type SourceMessagePartProps = MessagePartState & SourceMessagePart;
|
14
|
+
export type SourceMessagePartComponent = ComponentType<SourceMessagePartProps>;
|
15
|
+
export type ImageMessagePartProps = MessagePartState & ImageMessagePart;
|
16
|
+
export type ImageMessagePartComponent = ComponentType<ImageMessagePartProps>;
|
17
|
+
export type FileMessagePartProps = MessagePartState & FileMessagePart;
|
18
|
+
export type FileMessagePartComponent = ComponentType<FileMessagePartProps>;
|
19
|
+
export type Unstable_AudioMessagePartProps = MessagePartState & Unstable_AudioMessagePart;
|
20
|
+
export type Unstable_AudioMessagePartComponent = ComponentType<Unstable_AudioMessagePartProps>;
|
21
|
+
export type ToolCallMessagePartProps<TArgs = any, TResult = unknown> = MessagePartState & ToolCallMessagePart<TArgs, TResult> & {
|
22
|
+
addResult: (result: TResult | ToolResponse<TResult>) => void;
|
23
|
+
};
|
24
|
+
export type ToolCallMessagePartComponent<TArgs = any, TResult = any> = ComponentType<ToolCallMessagePartProps<TArgs, TResult>>;
|
25
|
+
//# sourceMappingURL=MessagePartComponentTypes.d.ts.map
|
package/dist/types/{ContentPartComponentTypes.d.ts.map → MessagePartComponentTypes.d.ts.map}
RENAMED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"
|
1
|
+
{"version":3,"file":"MessagePartComponentTypes.d.ts","sourceRoot":"","sources":["../../src/types/MessagePartComponentTypes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,iBAAiB,CAAC;CAC3B,CAAC;AACF,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAE3E,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,GAAG,oBAAoB,CAAC;AAChF,MAAM,MAAM,6BAA6B,GACvC,aAAa,CAAC,yBAAyB,CAAC,CAAC;AAE3C,MAAM,MAAM,sBAAsB,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;AAC1E,MAAM,MAAM,0BAA0B,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC;AAE/E,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AACxE,MAAM,MAAM,yBAAyB,GAAG,aAAa,CAAC,qBAAqB,CAAC,CAAC;AAE7E,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,eAAe,CAAC;AACtE,MAAM,MAAM,wBAAwB,GAAG,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAE3E,MAAM,MAAM,8BAA8B,GAAG,gBAAgB,GAC3D,yBAAyB,CAAC;AAC5B,MAAM,MAAM,kCAAkC,GAC5C,aAAa,CAAC,8BAA8B,CAAC,CAAC;AAEhD,MAAM,MAAM,wBAAwB,CAClC,KAAK,GAAG,GAAG,EACX,OAAO,GAAG,OAAO,IACf,gBAAgB,GAClB,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG;IACpC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;CAC9D,CAAC;AAEJ,MAAM,MAAM,4BAA4B,CACtC,KAAK,GAAG,GAAG,EACX,OAAO,GAAG,GAAG,IACX,aAAa,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC"}
|
@@ -0,0 +1 @@
|
|
1
|
+
//# sourceMappingURL=MessagePartComponentTypes.js.map
|
package/dist/types/index.d.ts
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
export type { Attachment, PendingAttachment, CompleteAttachment, AttachmentStatus, } from "./AttachmentTypes";
|
2
|
-
export type { AppendMessage,
|
3
|
-
export type {
|
2
|
+
export type { AppendMessage, TextMessagePart, ReasoningMessagePart, SourceMessagePart, ImageMessagePart, FileMessagePart, Unstable_AudioMessagePart, ToolCallMessagePart, MessageStatus, MessagePartStatus, ToolCallMessagePartStatus, ThreadUserMessagePart, ThreadAssistantMessagePart, ThreadSystemMessage, ThreadAssistantMessage, ThreadUserMessage, ThreadMessage, } from "./AssistantTypes";
|
3
|
+
export type { TextMessagePart as TextContentPart, ReasoningMessagePart as ReasoningContentPart, SourceMessagePart as SourceContentPart, ImageMessagePart as ImageContentPart, FileMessagePart as FileContentPart, Unstable_AudioMessagePart as AudioContentPart, ToolCallMessagePart as ToolCallContentPart, MessagePartStatus as ContentPartStatus, ToolCallMessagePartStatus as ToolCallContentPartStatus, ThreadUserMessagePart as ThreadUserContentPart, ThreadAssistantMessagePart as ThreadAssistantContentPart, ThreadSystemMessage as ThreadSystemContentPart, ThreadAssistantMessage as ThreadAssistantContent, ThreadUserMessage as ThreadUserContent, ThreadMessage as ThreadContent, } from "./AssistantTypes";
|
4
|
+
export type { EmptyMessagePartComponent, EmptyMessagePartProps, TextMessagePartComponent, TextMessagePartProps, ReasoningMessagePartComponent, ReasoningMessagePartProps, SourceMessagePartComponent, SourceMessagePartProps, ImageMessagePartComponent, ImageMessagePartProps, FileMessagePartComponent, FileMessagePartProps, Unstable_AudioMessagePartComponent, Unstable_AudioMessagePartProps, ToolCallMessagePartComponent, ToolCallMessagePartProps, } from "./MessagePartComponentTypes";
|
5
|
+
export type { EmptyMessagePartComponent as EmptyContentPartComponent, EmptyMessagePartProps as EmptyContentPartProps, TextMessagePartComponent as TextContentPartComponent, TextMessagePartProps as TextContentPartProps, ReasoningMessagePartComponent as ReasoningContentPartComponent, ReasoningMessagePartProps as ReasoningContentPartProps, SourceMessagePartComponent as SourceContentPartComponent, SourceMessagePartProps as SourceContentPartProps, ImageMessagePartComponent as ImageContentPartComponent, ImageMessagePartProps as ImageContentPartProps, FileMessagePartComponent as FileContentPartComponent, FileMessagePartProps as FileContentPartProps, Unstable_AudioMessagePartComponent as AudioContentPartComponent, Unstable_AudioMessagePartProps as AudioContentPartProps, ToolCallMessagePartComponent as ToolCallContentPartComponent, ToolCallMessagePartProps as ToolCallContentPartProps, } from "./MessagePartComponentTypes";
|
4
6
|
export type { Unsubscribe } from "./Unsubscribe";
|
5
7
|
//# sourceMappingURL=index.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EAGzB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,kBAAkB,CAAC;
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EACf,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EAGzB,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EACV,eAAe,IAAI,eAAe,EAClC,oBAAoB,IAAI,oBAAoB,EAC5C,iBAAiB,IAAI,iBAAiB,EACtC,gBAAgB,IAAI,gBAAgB,EACpC,eAAe,IAAI,eAAe,EAClC,yBAAyB,IAAI,gBAAgB,EAC7C,mBAAmB,IAAI,mBAAmB,EAC1C,iBAAiB,IAAI,iBAAiB,EACtC,yBAAyB,IAAI,yBAAyB,EAGtD,qBAAqB,IAAI,qBAAqB,EAC9C,0BAA0B,IAAI,0BAA0B,EACxD,mBAAmB,IAAI,uBAAuB,EAC9C,sBAAsB,IAAI,sBAAsB,EAChD,iBAAiB,IAAI,iBAAiB,EACtC,aAAa,IAAI,aAAa,GAC/B,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,wBAAwB,EACxB,oBAAoB,EACpB,kCAAkC,EAClC,8BAA8B,EAC9B,4BAA4B,EAC5B,wBAAwB,GACzB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EACV,yBAAyB,IAAI,yBAAyB,EACtD,qBAAqB,IAAI,qBAAqB,EAC9C,wBAAwB,IAAI,wBAAwB,EACpD,oBAAoB,IAAI,oBAAoB,EAC5C,6BAA6B,IAAI,6BAA6B,EAC9D,yBAAyB,IAAI,yBAAyB,EACtD,0BAA0B,IAAI,0BAA0B,EACxD,sBAAsB,IAAI,sBAAsB,EAChD,yBAAyB,IAAI,yBAAyB,EACtD,qBAAqB,IAAI,qBAAqB,EAC9C,wBAAwB,IAAI,wBAAwB,EACpD,oBAAoB,IAAI,oBAAoB,EAC5C,kCAAkC,IAAI,yBAAyB,EAC/D,8BAA8B,IAAI,qBAAqB,EACvD,4BAA4B,IAAI,4BAA4B,EAC5D,wBAAwB,IAAI,wBAAwB,GACrD,MAAM,6BAA6B,CAAC;AAErC,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/utils/getThreadMessageText.tsx"],"sourcesContent":["import type {\n AppendMessage,\n
|
1
|
+
{"version":3,"sources":["../../src/utils/getThreadMessageText.tsx"],"sourcesContent":["import type {\n AppendMessage,\n TextMessagePart,\n ThreadMessage,\n} from \"../types/AssistantTypes\";\n\nexport const getThreadMessageText = (\n message: ThreadMessage | AppendMessage,\n) => {\n const textParts = message.content.filter(\n (part) => part.type === \"text\",\n ) as TextMessagePart[];\n\n return textParts.map((part) => part.text).join(\"\\n\\n\");\n};\n"],"mappings":";AAMO,IAAM,uBAAuB,CAClC,YACG;AACH,QAAM,YAAY,QAAQ,QAAQ;AAAA,IAChC,CAAC,SAAS,KAAK,SAAS;AAAA,EAC1B;AAEA,SAAO,UAAU,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,KAAK,MAAM;AACvD;","names":[]}
|
@@ -8,7 +8,7 @@ import {
|
|
8
8
|
useState
|
9
9
|
} from "react";
|
10
10
|
import { create } from "zustand";
|
11
|
-
import {
|
11
|
+
import { useMessagePartRuntime } from "../../context/react/MessagePartContext.js";
|
12
12
|
import { createContextStoreHook } from "../../context/react/utils/createContextStoreHook.js";
|
13
13
|
import { jsx } from "react/jsx-runtime";
|
14
14
|
var SmoothContext = createContext(null);
|
@@ -18,9 +18,9 @@ var makeSmoothContext = (initialState) => {
|
|
18
18
|
};
|
19
19
|
var SmoothContextProvider = ({ children }) => {
|
20
20
|
const outer = useSmoothContext({ optional: true });
|
21
|
-
const
|
21
|
+
const MessagePartRuntime = useMessagePartRuntime();
|
22
22
|
const [context] = useState(
|
23
|
-
() => makeSmoothContext(
|
23
|
+
() => makeSmoothContext(MessagePartRuntime.getState().status)
|
24
24
|
);
|
25
25
|
if (outer) return children;
|
26
26
|
return /* @__PURE__ */ jsx(SmoothContext.Provider, { value: context, children });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/smooth/SmoothContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ComponentType,\n createContext,\n FC,\n forwardRef,\n PropsWithChildren,\n useContext,\n useState,\n} from \"react\";\nimport { ReadonlyStore } from \"../../context/ReadonlyStore\";\nimport { create, UseBoundStore } from \"zustand\";\nimport {\n
|
1
|
+
{"version":3,"sources":["../../../src/utils/smooth/SmoothContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n ComponentType,\n createContext,\n FC,\n forwardRef,\n PropsWithChildren,\n useContext,\n useState,\n} from \"react\";\nimport { ReadonlyStore } from \"../../context/ReadonlyStore\";\nimport { create, UseBoundStore } from \"zustand\";\nimport {\n MessagePartStatus,\n ToolCallMessagePartStatus,\n} from \"../../types/AssistantTypes\";\nimport { useMessagePartRuntime } from \"../../context/react/MessagePartContext\";\nimport { createContextStoreHook } from \"../../context/react/utils/createContextStoreHook\";\n\ntype SmoothContextValue = {\n useSmoothStatus: UseBoundStore<\n ReadonlyStore<MessagePartStatus | ToolCallMessagePartStatus>\n >;\n};\n\nconst SmoothContext = createContext<SmoothContextValue | null>(null);\n\nconst makeSmoothContext = (\n initialState: MessagePartStatus | ToolCallMessagePartStatus,\n) => {\n const useSmoothStatus = create(() => initialState);\n return { useSmoothStatus };\n};\n\nexport const SmoothContextProvider: FC<PropsWithChildren> = ({ children }) => {\n const outer = useSmoothContext({ optional: true });\n const MessagePartRuntime = useMessagePartRuntime();\n\n const [context] = useState(() =>\n makeSmoothContext(MessagePartRuntime.getState().status),\n );\n\n // do not wrap if there is an outer SmoothContextProvider\n if (outer) return children;\n\n return (\n <SmoothContext.Provider value={context}>{children}</SmoothContext.Provider>\n );\n};\n\nexport const withSmoothContextProvider = <C extends ComponentType<any>>(\n Component: C,\n): C => {\n const Wrapped = forwardRef((props, ref) => {\n return (\n <SmoothContextProvider>\n <Component {...(props as any)} ref={ref} />\n </SmoothContextProvider>\n );\n });\n Wrapped.displayName = Component.displayName;\n return Wrapped as any;\n};\n\nfunction useSmoothContext(options?: {\n optional?: false | undefined;\n}): SmoothContextValue;\nfunction useSmoothContext(options?: {\n optional?: boolean | undefined;\n}): SmoothContextValue | null;\nfunction useSmoothContext(options?: { optional?: boolean | undefined }) {\n const context = useContext(SmoothContext);\n if (!options?.optional && !context)\n throw new Error(\n \"This component must be used within a SmoothContextProvider.\",\n );\n return context;\n}\n\nexport const { useSmoothStatus, useSmoothStatusStore } = createContextStoreHook(\n useSmoothContext,\n \"useSmoothStatus\",\n);\n"],"mappings":";;;AAEA;AAAA,EAEE;AAAA,EAEA;AAAA,EAEA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,cAA6B;AAKtC,SAAS,6BAA6B;AACtC,SAAS,8BAA8B;AA6BnC;AArBJ,IAAM,gBAAgB,cAAyC,IAAI;AAEnE,IAAM,oBAAoB,CACxB,iBACG;AACH,QAAMA,mBAAkB,OAAO,MAAM,YAAY;AACjD,SAAO,EAAE,iBAAAA,iBAAgB;AAC3B;AAEO,IAAM,wBAA+C,CAAC,EAAE,SAAS,MAAM;AAC5E,QAAM,QAAQ,iBAAiB,EAAE,UAAU,KAAK,CAAC;AACjD,QAAM,qBAAqB,sBAAsB;AAEjD,QAAM,CAAC,OAAO,IAAI;AAAA,IAAS,MACzB,kBAAkB,mBAAmB,SAAS,EAAE,MAAM;AAAA,EACxD;AAGA,MAAI,MAAO,QAAO;AAElB,SACE,oBAAC,cAAc,UAAd,EAAuB,OAAO,SAAU,UAAS;AAEtD;AAEO,IAAM,4BAA4B,CACvC,cACM;AACN,QAAM,UAAU,WAAW,CAAC,OAAO,QAAQ;AACzC,WACE,oBAAC,yBACC,8BAAC,aAAW,GAAI,OAAe,KAAU,GAC3C;AAAA,EAEJ,CAAC;AACD,UAAQ,cAAc,UAAU;AAChC,SAAO;AACT;AAQA,SAAS,iBAAiB,SAA8C;AACtE,QAAM,UAAU,WAAW,aAAa;AACxC,MAAI,CAAC,SAAS,YAAY,CAAC;AACzB,UAAM,IAAI;AAAA,MACR;AAAA,IACF;AACF,SAAO;AACT;AAEO,IAAM,EAAE,iBAAiB,qBAAqB,IAAI;AAAA,EACvD;AAAA,EACA;AACF;","names":["useSmoothStatus"]}
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import {
|
2
|
-
import {
|
3
|
-
export declare const useSmooth: (state:
|
1
|
+
import { ReasoningMessagePart, TextMessagePart } from "../../types/AssistantTypes";
|
2
|
+
import { MessagePartState } from "../../api/MessagePartRuntime";
|
3
|
+
export declare const useSmooth: (state: MessagePartState & (TextMessagePart | ReasoningMessagePart), smooth?: boolean) => MessagePartState & (TextMessagePart | ReasoningMessagePart);
|
4
4
|
//# sourceMappingURL=useSmooth.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/utils/smooth/useSmooth.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useMessage } from \"../../context\";\nimport {\n
|
1
|
+
{"version":3,"sources":["../../../src/utils/smooth/useSmooth.tsx"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { useMessage } from \"../../context\";\nimport {\n MessagePartStatus,\n ReasoningMessagePart,\n TextMessagePart,\n} from \"../../types/AssistantTypes\";\nimport { useCallbackRef } from \"@radix-ui/react-use-callback-ref\";\nimport { useSmoothStatusStore } from \"./SmoothContext\";\nimport { writableStore } from \"../../context/ReadonlyStore\";\nimport { MessagePartState } from \"../../api/MessagePartRuntime\";\n\nclass TextStreamAnimator {\n private animationFrameId: number | null = null;\n private lastUpdateTime: number = Date.now();\n\n public targetText: string = \"\";\n\n constructor(\n public currentText: string,\n private setText: (newText: string) => void,\n ) {}\n\n start() {\n if (this.animationFrameId !== null) return;\n this.lastUpdateTime = Date.now();\n this.animate();\n }\n\n stop() {\n if (this.animationFrameId !== null) {\n cancelAnimationFrame(this.animationFrameId);\n this.animationFrameId = null;\n }\n }\n\n private animate = () => {\n const currentTime = Date.now();\n const deltaTime = currentTime - this.lastUpdateTime;\n let timeToConsume = deltaTime;\n\n const remainingChars = this.targetText.length - this.currentText.length;\n const baseTimePerChar = Math.min(5, 250 / remainingChars);\n\n let charsToAdd = 0;\n while (timeToConsume >= baseTimePerChar && charsToAdd < remainingChars) {\n charsToAdd++;\n timeToConsume -= baseTimePerChar;\n }\n\n if (charsToAdd !== remainingChars) {\n this.animationFrameId = requestAnimationFrame(this.animate);\n } else {\n this.animationFrameId = null;\n }\n if (charsToAdd === 0) return;\n\n this.currentText = this.targetText.slice(\n 0,\n this.currentText.length + charsToAdd,\n );\n this.lastUpdateTime = currentTime - timeToConsume;\n this.setText(this.currentText);\n };\n}\n\nconst SMOOTH_STATUS: MessagePartStatus = Object.freeze({\n type: \"running\",\n});\n\nexport const useSmooth = (\n state: MessagePartState & (TextMessagePart | ReasoningMessagePart),\n smooth: boolean = false,\n): MessagePartState & (TextMessagePart | ReasoningMessagePart) => {\n const { text } = state;\n const id = useMessage({\n optional: true,\n selector: (m: { id: string }) => m.id,\n });\n\n const idRef = useRef(id);\n const [displayedText, setDisplayedText] = useState(text);\n\n const smoothStatusStore = useSmoothStatusStore({ optional: true });\n const setText = useCallbackRef((text: string) => {\n setDisplayedText(text);\n if (smoothStatusStore) {\n const target =\n displayedText !== text || state.status.type === \"running\"\n ? SMOOTH_STATUS\n : state.status;\n writableStore(smoothStatusStore).setState(target, true);\n }\n });\n\n // TODO this is hacky\n useEffect(() => {\n if (smoothStatusStore) {\n const target =\n displayedText !== text || state.status.type === \"running\"\n ? SMOOTH_STATUS\n : state.status;\n writableStore(smoothStatusStore).setState(target, true);\n }\n }, [smoothStatusStore, text, displayedText, state.status]);\n\n const [animatorRef] = useState<TextStreamAnimator>(\n new TextStreamAnimator(text, setText),\n );\n\n useEffect(() => {\n if (!smooth) {\n animatorRef.stop();\n return;\n }\n\n if (idRef.current !== id || !text.startsWith(animatorRef.targetText)) {\n idRef.current = id;\n setText(text);\n\n animatorRef.currentText = text;\n animatorRef.targetText = text;\n animatorRef.stop();\n\n return;\n }\n\n animatorRef.targetText = text;\n animatorRef.start();\n }, [setText, animatorRef, id, smooth, text]);\n\n useEffect(() => {\n return () => {\n animatorRef.stop();\n };\n }, [animatorRef]);\n\n return useMemo(\n () =>\n smooth\n ? {\n type: \"text\",\n text: displayedText,\n status: text === displayedText ? state.status : SMOOTH_STATUS,\n }\n : state,\n [smooth, displayedText, state, text],\n );\n};\n"],"mappings":";;;AAEA,SAAS,WAAW,SAAS,QAAQ,gBAAgB;AACrD,SAAS,kBAAkB;AAM3B,SAAS,sBAAsB;AAC/B,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAG9B,IAAM,qBAAN,MAAyB;AAAA,EAMvB,YACS,aACC,SACR;AAFO;AACC;AAAA,EACP;AAAA,EARK,mBAAkC;AAAA,EAClC,iBAAyB,KAAK,IAAI;AAAA,EAEnC,aAAqB;AAAA,EAO5B,QAAQ;AACN,QAAI,KAAK,qBAAqB,KAAM;AACpC,SAAK,iBAAiB,KAAK,IAAI;AAC/B,SAAK,QAAQ;AAAA,EACf;AAAA,EAEA,OAAO;AACL,QAAI,KAAK,qBAAqB,MAAM;AAClC,2BAAqB,KAAK,gBAAgB;AAC1C,WAAK,mBAAmB;AAAA,IAC1B;AAAA,EACF;AAAA,EAEQ,UAAU,MAAM;AACtB,UAAM,cAAc,KAAK,IAAI;AAC7B,UAAM,YAAY,cAAc,KAAK;AACrC,QAAI,gBAAgB;AAEpB,UAAM,iBAAiB,KAAK,WAAW,SAAS,KAAK,YAAY;AACjE,UAAM,kBAAkB,KAAK,IAAI,GAAG,MAAM,cAAc;AAExD,QAAI,aAAa;AACjB,WAAO,iBAAiB,mBAAmB,aAAa,gBAAgB;AACtE;AACA,uBAAiB;AAAA,IACnB;AAEA,QAAI,eAAe,gBAAgB;AACjC,WAAK,mBAAmB,sBAAsB,KAAK,OAAO;AAAA,IAC5D,OAAO;AACL,WAAK,mBAAmB;AAAA,IAC1B;AACA,QAAI,eAAe,EAAG;AAEtB,SAAK,cAAc,KAAK,WAAW;AAAA,MACjC;AAAA,MACA,KAAK,YAAY,SAAS;AAAA,IAC5B;AACA,SAAK,iBAAiB,cAAc;AACpC,SAAK,QAAQ,KAAK,WAAW;AAAA,EAC/B;AACF;AAEA,IAAM,gBAAmC,OAAO,OAAO;AAAA,EACrD,MAAM;AACR,CAAC;AAEM,IAAM,YAAY,CACvB,OACA,SAAkB,UAC8C;AAChE,QAAM,EAAE,KAAK,IAAI;AACjB,QAAM,KAAK,WAAW;AAAA,IACpB,UAAU;AAAA,IACV,UAAU,CAAC,MAAsB,EAAE;AAAA,EACrC,CAAC;AAED,QAAM,QAAQ,OAAO,EAAE;AACvB,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,IAAI;AAEvD,QAAM,oBAAoB,qBAAqB,EAAE,UAAU,KAAK,CAAC;AACjE,QAAM,UAAU,eAAe,CAACA,UAAiB;AAC/C,qBAAiBA,KAAI;AACrB,QAAI,mBAAmB;AACrB,YAAM,SACJ,kBAAkBA,SAAQ,MAAM,OAAO,SAAS,YAC5C,gBACA,MAAM;AACZ,oBAAc,iBAAiB,EAAE,SAAS,QAAQ,IAAI;AAAA,IACxD;AAAA,EACF,CAAC;AAGD,YAAU,MAAM;AACd,QAAI,mBAAmB;AACrB,YAAM,SACJ,kBAAkB,QAAQ,MAAM,OAAO,SAAS,YAC5C,gBACA,MAAM;AACZ,oBAAc,iBAAiB,EAAE,SAAS,QAAQ,IAAI;AAAA,IACxD;AAAA,EACF,GAAG,CAAC,mBAAmB,MAAM,eAAe,MAAM,MAAM,CAAC;AAEzD,QAAM,CAAC,WAAW,IAAI;AAAA,IACpB,IAAI,mBAAmB,MAAM,OAAO;AAAA,EACtC;AAEA,YAAU,MAAM;AACd,QAAI,CAAC,QAAQ;AACX,kBAAY,KAAK;AACjB;AAAA,IACF;AAEA,QAAI,MAAM,YAAY,MAAM,CAAC,KAAK,WAAW,YAAY,UAAU,GAAG;AACpE,YAAM,UAAU;AAChB,cAAQ,IAAI;AAEZ,kBAAY,cAAc;AAC1B,kBAAY,aAAa;AACzB,kBAAY,KAAK;AAEjB;AAAA,IACF;AAEA,gBAAY,aAAa;AACzB,gBAAY,MAAM;AAAA,EACpB,GAAG,CAAC,SAAS,aAAa,IAAI,QAAQ,IAAI,CAAC;AAE3C,YAAU,MAAM;AACd,WAAO,MAAM;AACX,kBAAY,KAAK;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,WAAW,CAAC;AAEhB,SAAO;AAAA,IACL,MACE,SACI;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ,SAAS,gBAAgB,MAAM,SAAS;AAAA,IAClD,IACA;AAAA,IACN,CAAC,QAAQ,eAAe,OAAO,IAAI;AAAA,EACrC;AACF;","names":["text"]}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
// src/utils/useToolArgsFieldStatus.tsx
|
2
2
|
import { getPartialJsonObjectFieldState } from "assistant-stream/utils";
|
3
|
-
import {
|
3
|
+
import { useMessagePart } from "../context/index.js";
|
4
4
|
var COMPLETE_STATUS = { type: "complete" };
|
5
5
|
var useToolArgsFieldStatus = (fieldPath) => {
|
6
|
-
return
|
6
|
+
return useMessagePart((t) => {
|
7
7
|
if (t.type !== "tool-call")
|
8
8
|
throw new Error(
|
9
|
-
"useToolArgsFieldStatus can only be used inside tool-call
|
9
|
+
"useToolArgsFieldStatus can only be used inside tool-call message parts"
|
10
10
|
);
|
11
11
|
const state = getPartialJsonObjectFieldState(t.args, fieldPath);
|
12
12
|
if (state === "complete" || t.status.type === "requires-action")
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../src/utils/useToolArgsFieldStatus.tsx"],"sourcesContent":["import { getPartialJsonObjectFieldState } from \"assistant-stream/utils\";\nimport {
|
1
|
+
{"version":3,"sources":["../../src/utils/useToolArgsFieldStatus.tsx"],"sourcesContent":["import { getPartialJsonObjectFieldState } from \"assistant-stream/utils\";\nimport { useMessagePart } from \"../context\";\n\nconst COMPLETE_STATUS = { type: \"complete\" };\n\nexport const useToolArgsFieldStatus = (fieldPath: (string | number)[]) => {\n return useMessagePart((t) => {\n if (t.type !== \"tool-call\")\n throw new Error(\n \"useToolArgsFieldStatus can only be used inside tool-call message parts\",\n );\n\n const state = getPartialJsonObjectFieldState(t.args, fieldPath);\n if (state === \"complete\" || t.status.type === \"requires-action\")\n return COMPLETE_STATUS;\n return t.status;\n });\n};\n"],"mappings":";AAAA,SAAS,sCAAsC;AAC/C,SAAS,sBAAsB;AAE/B,IAAM,kBAAkB,EAAE,MAAM,WAAW;AAEpC,IAAM,yBAAyB,CAAC,cAAmC;AACxE,SAAO,eAAe,CAAC,MAAM;AAC3B,QAAI,EAAE,SAAS;AACb,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAEF,UAAM,QAAQ,+BAA+B,EAAE,MAAM,SAAS;AAC9D,QAAI,UAAU,cAAc,EAAE,OAAO,SAAS;AAC5C,aAAO;AACT,WAAO,EAAE;AAAA,EACX,CAAC;AACH;","names":[]}
|
package/package.json
CHANGED
@@ -28,7 +28,7 @@
|
|
28
28
|
"conversational-ui",
|
29
29
|
"conversational-ai"
|
30
30
|
],
|
31
|
-
"version": "0.10.
|
31
|
+
"version": "0.10.25",
|
32
32
|
"license": "MIT",
|
33
33
|
"type": "module",
|
34
34
|
"exports": {
|
@@ -57,12 +57,13 @@
|
|
57
57
|
"@radix-ui/react-use-callback-ref": "^1.1.1",
|
58
58
|
"@radix-ui/react-use-escape-keydown": "^1.1.1",
|
59
59
|
"@standard-schema/spec": "^1.0.0",
|
60
|
-
"assistant-stream": "^0.2.
|
60
|
+
"assistant-stream": "^0.2.18",
|
61
61
|
"json-schema": "^0.4.0",
|
62
62
|
"nanoid": "5.1.5",
|
63
63
|
"react-textarea-autosize": "^8.5.9",
|
64
|
-
"zod": "^3.25.
|
65
|
-
"zustand": "^5.0.
|
64
|
+
"zod": "^3.25.67",
|
65
|
+
"zustand": "^5.0.6",
|
66
|
+
"assistant-cloud": "0.0.3"
|
66
67
|
},
|
67
68
|
"peerDependencies": {
|
68
69
|
"@types/react": "*",
|
@@ -82,11 +83,11 @@
|
|
82
83
|
"@stryker-mutator/core": "^9.0.1",
|
83
84
|
"@stryker-mutator/vitest-runner": "^9.0.1",
|
84
85
|
"@types/json-schema": "^7.0.15",
|
85
|
-
"@types/node": "^
|
86
|
+
"@types/node": "^24.0.4",
|
86
87
|
"eslint": "^9",
|
87
|
-
"eslint-config-next": "15.3.
|
88
|
-
"tsx": "^4.
|
89
|
-
"vitest": "^3.2.
|
88
|
+
"eslint-config-next": "15.3.4",
|
89
|
+
"tsx": "^4.20.3",
|
90
|
+
"vitest": "^3.2.4",
|
90
91
|
"@assistant-ui/x-buildutils": "0.0.1"
|
91
92
|
},
|
92
93
|
"publishConfig": {
|
@@ -1,47 +1,47 @@
|
|
1
1
|
import {
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
ThreadAssistantMessagePart,
|
3
|
+
ThreadUserMessagePart,
|
4
|
+
MessagePartStatus,
|
5
|
+
ToolCallMessagePartStatus,
|
6
6
|
} from "../types/AssistantTypes";
|
7
7
|
import { ThreadRuntimeCoreBinding } from "./ThreadRuntime";
|
8
8
|
import { MessageStateBinding } from "./MessageRuntime";
|
9
9
|
import { SubscribableWithState } from "./subscribable/Subscribable";
|
10
10
|
import { Unsubscribe } from "../types";
|
11
|
-
import {
|
11
|
+
import { MessagePartRuntimePath } from "./RuntimePathTypes";
|
12
12
|
import { ToolResponse } from "assistant-stream";
|
13
13
|
|
14
|
-
export type
|
15
|
-
|
|
16
|
-
|
|
14
|
+
export type MessagePartState = (
|
15
|
+
| ThreadUserMessagePart
|
16
|
+
| ThreadAssistantMessagePart
|
17
17
|
) & {
|
18
|
-
readonly status:
|
18
|
+
readonly status: MessagePartStatus | ToolCallMessagePartStatus;
|
19
19
|
};
|
20
20
|
|
21
|
-
type
|
22
|
-
|
23
|
-
|
21
|
+
type MessagePartSnapshotBinding = SubscribableWithState<
|
22
|
+
MessagePartState,
|
23
|
+
MessagePartRuntimePath
|
24
24
|
>;
|
25
25
|
|
26
|
-
export type
|
26
|
+
export type MessagePartRuntime = {
|
27
27
|
/**
|
28
|
-
* Add tool result to a tool call
|
28
|
+
* Add tool result to a tool call message part that has no tool result yet.
|
29
29
|
* This is useful when you are collecting a tool result via user input ("human tool calls").
|
30
30
|
*/
|
31
31
|
addToolResult(result: any | ToolResponse<any>): void;
|
32
32
|
|
33
|
-
readonly path:
|
34
|
-
getState():
|
33
|
+
readonly path: MessagePartRuntimePath;
|
34
|
+
getState(): MessagePartState;
|
35
35
|
subscribe(callback: () => void): Unsubscribe;
|
36
36
|
};
|
37
37
|
|
38
|
-
export class
|
38
|
+
export class MessagePartRuntimeImpl implements MessagePartRuntime {
|
39
39
|
public get path() {
|
40
40
|
return this.contentBinding.path;
|
41
41
|
}
|
42
42
|
|
43
43
|
constructor(
|
44
|
-
private contentBinding:
|
44
|
+
private contentBinding: MessagePartSnapshotBinding,
|
45
45
|
private messageApi?: MessageStateBinding,
|
46
46
|
private threadApi?: ThreadRuntimeCoreBinding,
|
47
47
|
) {}
|
@@ -58,10 +58,10 @@ export class ContentPartRuntimeImpl implements ContentPartRuntime {
|
|
58
58
|
|
59
59
|
public addToolResult(result: any | ToolResponse<any>) {
|
60
60
|
const state = this.contentBinding.getState();
|
61
|
-
if (!state) throw new Error("
|
61
|
+
if (!state) throw new Error("Message part is not available");
|
62
62
|
|
63
63
|
if (state.type !== "tool-call")
|
64
|
-
throw new Error("Tried to add tool result to non-tool
|
64
|
+
throw new Error("Tried to add tool result to non-tool message part");
|
65
65
|
|
66
66
|
if (!this.messageApi)
|
67
67
|
throw new Error(
|
@@ -5,14 +5,14 @@ import {
|
|
5
5
|
import { symbolInnerMessage } from "../runtimes/external-store/getExternalStoreMessage";
|
6
6
|
import {
|
7
7
|
ThreadMessage,
|
8
|
-
|
9
|
-
|
8
|
+
ThreadAssistantMessagePart,
|
9
|
+
ThreadUserMessagePart,
|
10
10
|
Unsubscribe,
|
11
11
|
} from "../types";
|
12
12
|
import {
|
13
|
-
|
13
|
+
MessagePartStatus,
|
14
14
|
RunConfig,
|
15
|
-
|
15
|
+
ToolCallMessagePartStatus,
|
16
16
|
} from "../types/AssistantTypes";
|
17
17
|
import { getThreadMessageText } from "../utils/getThreadMessageText";
|
18
18
|
import {
|
@@ -25,10 +25,10 @@ import {
|
|
25
25
|
EditComposerRuntimeImpl,
|
26
26
|
} from "./ComposerRuntime";
|
27
27
|
import {
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
} from "./
|
28
|
+
MessagePartRuntime,
|
29
|
+
MessagePartRuntimeImpl,
|
30
|
+
MessagePartState,
|
31
|
+
} from "./MessagePartRuntime";
|
32
32
|
import { MessageRuntimePath } from "./RuntimePathTypes";
|
33
33
|
import { ThreadRuntimeCoreBinding } from "./ThreadRuntime";
|
34
34
|
import { NestedSubscriptionSubject } from "./subscribable/NestedSubscriptionSubject";
|
@@ -36,20 +36,20 @@ import { SKIP_UPDATE } from "./subscribable/SKIP_UPDATE";
|
|
36
36
|
import { ShallowMemoizeSubject } from "./subscribable/ShallowMemoizeSubject";
|
37
37
|
import { SubscribableWithState } from "./subscribable/Subscribable";
|
38
38
|
|
39
|
-
const COMPLETE_STATUS:
|
39
|
+
const COMPLETE_STATUS: MessagePartStatus = Object.freeze({
|
40
40
|
type: "complete",
|
41
41
|
});
|
42
42
|
|
43
|
-
export const
|
43
|
+
export const toMessagePartStatus = (
|
44
44
|
message: ThreadMessage,
|
45
45
|
partIndex: number,
|
46
|
-
part:
|
47
|
-
):
|
46
|
+
part: ThreadUserMessagePart | ThreadAssistantMessagePart,
|
47
|
+
): ToolCallMessagePartStatus => {
|
48
48
|
if (message.role !== "assistant") return COMPLETE_STATUS;
|
49
49
|
|
50
50
|
if (part.type === "tool-call") {
|
51
51
|
if (!part.result) {
|
52
|
-
return message.status as
|
52
|
+
return message.status as ToolCallMessagePartStatus;
|
53
53
|
} else {
|
54
54
|
return COMPLETE_STATUS;
|
55
55
|
}
|
@@ -57,20 +57,20 @@ export const toContentPartStatus = (
|
|
57
57
|
|
58
58
|
const isLastPart = partIndex === Math.max(0, message.content.length - 1);
|
59
59
|
if (message.status.type === "requires-action") return COMPLETE_STATUS;
|
60
|
-
return isLastPart ? (message.status as
|
60
|
+
return isLastPart ? (message.status as MessagePartStatus) : COMPLETE_STATUS;
|
61
61
|
};
|
62
62
|
|
63
|
-
const
|
63
|
+
const getMessagePartState = (
|
64
64
|
message: MessageState,
|
65
65
|
partIndex: number,
|
66
|
-
):
|
66
|
+
): MessagePartState | SKIP_UPDATE => {
|
67
67
|
const part = message.content[partIndex];
|
68
68
|
if (!part) {
|
69
69
|
return SKIP_UPDATE;
|
70
70
|
}
|
71
71
|
|
72
|
-
// if the
|
73
|
-
const status =
|
72
|
+
// if the message part is the same, don't update
|
73
|
+
const status = toMessagePartStatus(message, partIndex, part);
|
74
74
|
return Object.freeze({
|
75
75
|
...part,
|
76
76
|
...{ [symbolInnerMessage]: (part as any)[symbolInnerMessage] },
|
@@ -128,8 +128,8 @@ export type MessageRuntime = {
|
|
128
128
|
|
129
129
|
subscribe(callback: () => void): Unsubscribe;
|
130
130
|
|
131
|
-
|
132
|
-
|
131
|
+
getMessagePartByIndex(idx: number): MessagePartRuntime;
|
132
|
+
getMessagePartByToolCallId(toolCallId: string): MessagePartRuntime;
|
133
133
|
|
134
134
|
getAttachmentByIndex(idx: number): AttachmentRuntime & { source: "message" };
|
135
135
|
};
|
@@ -161,9 +161,9 @@ export class MessageRuntimeImpl implements MessageRuntime {
|
|
161
161
|
this.reload = this.reload.bind(this);
|
162
162
|
this.getState = this.getState.bind(this);
|
163
163
|
this.subscribe = this.subscribe.bind(this);
|
164
|
-
this.
|
165
|
-
this.
|
166
|
-
this.
|
164
|
+
this.getMessagePartByIndex = this.getMessagePartByIndex.bind(this);
|
165
|
+
this.getMessagePartByToolCallId =
|
166
|
+
this.getMessagePartByToolCallId.bind(this);
|
167
167
|
this.getAttachmentByIndex = this.getAttachmentByIndex.bind(this);
|
168
168
|
this.unstable_getCopyText = this.unstable_getCopyText.bind(this);
|
169
169
|
this.speak = this.speak.bind(this);
|
@@ -260,17 +260,17 @@ export class MessageRuntimeImpl implements MessageRuntime {
|
|
260
260
|
return this._core.subscribe(callback);
|
261
261
|
}
|
262
262
|
|
263
|
-
public
|
264
|
-
if (idx < 0) throw new Error("
|
265
|
-
return new
|
263
|
+
public getMessagePartByIndex(idx: number) {
|
264
|
+
if (idx < 0) throw new Error("Message part index must be >= 0");
|
265
|
+
return new MessagePartRuntimeImpl(
|
266
266
|
new ShallowMemoizeSubject({
|
267
267
|
path: {
|
268
268
|
...this.path,
|
269
269
|
ref: this.path.ref + `${this.path.ref}.content[${idx}]`,
|
270
|
-
|
270
|
+
messagePartSelector: { type: "index", index: idx },
|
271
271
|
},
|
272
272
|
getState: () => {
|
273
|
-
return
|
273
|
+
return getMessagePartState(this.getState(), idx);
|
274
274
|
},
|
275
275
|
subscribe: (callback) => this._core.subscribe(callback),
|
276
276
|
}),
|
@@ -279,15 +279,15 @@ export class MessageRuntimeImpl implements MessageRuntime {
|
|
279
279
|
);
|
280
280
|
}
|
281
281
|
|
282
|
-
public
|
283
|
-
return new
|
282
|
+
public getMessagePartByToolCallId(toolCallId: string) {
|
283
|
+
return new MessagePartRuntimeImpl(
|
284
284
|
new ShallowMemoizeSubject({
|
285
285
|
path: {
|
286
286
|
...this.path,
|
287
287
|
ref:
|
288
288
|
this.path.ref +
|
289
289
|
`${this.path.ref}.content[toolCallId=${JSON.stringify(toolCallId)}]`,
|
290
|
-
|
290
|
+
messagePartSelector: { type: "toolCallId", toolCallId },
|
291
291
|
},
|
292
292
|
getState: () => {
|
293
293
|
const state = this._core.getState();
|
@@ -296,7 +296,7 @@ export class MessageRuntimeImpl implements MessageRuntime {
|
|
296
296
|
part.type === "tool-call" && part.toolCallId === toolCallId,
|
297
297
|
);
|
298
298
|
if (idx === -1) return SKIP_UPDATE;
|
299
|
-
return
|
299
|
+
return getMessagePartState(state, idx);
|
300
300
|
},
|
301
301
|
subscribe: (callback) => this._core.subscribe(callback),
|
302
302
|
}),
|
@@ -23,8 +23,8 @@ export type MessageRuntimePath = ThreadRuntimePath & {
|
|
23
23
|
| { readonly type: "index"; readonly index: number };
|
24
24
|
};
|
25
25
|
|
26
|
-
export type
|
27
|
-
readonly
|
26
|
+
export type MessagePartRuntimePath = MessageRuntimePath & {
|
27
|
+
readonly messagePartSelector:
|
28
28
|
| { readonly type: "index"; readonly index: number }
|
29
29
|
| { readonly type: "toolCallId"; readonly toolCallId: string };
|
30
30
|
};
|