@assistant-ui/react 0.9.6 → 0.10.1
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/AssistantRuntime.js +8 -34
- package/dist/api/AssistantRuntime.js.map +1 -1
- package/dist/api/AttachmentRuntime.js +12 -41
- package/dist/api/AttachmentRuntime.js.map +1 -1
- package/dist/api/ComposerRuntime.js +29 -54
- package/dist/api/ComposerRuntime.js.map +1 -1
- package/dist/api/ContentPartRuntime.js +4 -30
- package/dist/api/ContentPartRuntime.js.map +1 -1
- package/dist/api/MessageRuntime.js +34 -55
- package/dist/api/MessageRuntime.js.map +1 -1
- package/dist/api/RuntimePathTypes.js +0 -18
- package/dist/api/RuntimePathTypes.js.map +1 -1
- package/dist/api/ThreadListItemRuntime.js +4 -30
- package/dist/api/ThreadListItemRuntime.js.map +1 -1
- package/dist/api/ThreadListRuntime.js +30 -52
- package/dist/api/ThreadListRuntime.js.map +1 -1
- package/dist/api/ThreadRuntime.js +27 -50
- package/dist/api/ThreadRuntime.js.map +1 -1
- package/dist/api/index.js +0 -18
- package/dist/api/index.js.map +1 -1
- package/dist/api/subscribable/BaseSubject.js +4 -30
- package/dist/api/subscribable/BaseSubject.js.map +1 -1
- package/dist/api/subscribable/EventSubscriptionSubject.js +5 -31
- package/dist/api/subscribable/EventSubscriptionSubject.js.map +1 -1
- package/dist/api/subscribable/LazyMemoizeSubject.js +7 -33
- package/dist/api/subscribable/LazyMemoizeSubject.js.map +1 -1
- package/dist/api/subscribable/NestedSubscriptionSubject.js +5 -31
- package/dist/api/subscribable/NestedSubscriptionSubject.js.map +1 -1
- package/dist/api/subscribable/SKIP_UPDATE.js +3 -29
- package/dist/api/subscribable/SKIP_UPDATE.js.map +1 -1
- package/dist/api/subscribable/ShallowMemoizeSubject.js +10 -36
- package/dist/api/subscribable/ShallowMemoizeSubject.js.map +1 -1
- package/dist/api/subscribable/Subscribable.js +0 -18
- package/dist/api/subscribable/Subscribable.js.map +1 -1
- package/dist/api/subscribable/shallowEqual.js +2 -28
- package/dist/api/subscribable/shallowEqual.js.map +1 -1
- package/dist/cloud/AssistantCloud.js +12 -38
- package/dist/cloud/AssistantCloud.js.map +1 -1
- package/dist/cloud/AssistantCloudAPI.js +14 -36
- package/dist/cloud/AssistantCloudAPI.js.map +1 -1
- package/dist/cloud/AssistantCloudAuthStrategy.js +10 -38
- package/dist/cloud/AssistantCloudAuthStrategy.js.map +1 -1
- package/dist/cloud/AssistantCloudAuthTokens.js +4 -30
- package/dist/cloud/AssistantCloudAuthTokens.js.map +1 -1
- package/dist/cloud/AssistantCloudRuns.js +6 -32
- package/dist/cloud/AssistantCloudRuns.js.map +1 -1
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.js +12 -38
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/cloud/AssistantCloudThreadMessages.js +4 -30
- package/dist/cloud/AssistantCloudThreadMessages.js.map +1 -1
- package/dist/cloud/AssistantCloudThreads.js +6 -32
- package/dist/cloud/AssistantCloudThreads.js.map +1 -1
- package/dist/cloud/auiV0.js +8 -35
- package/dist/cloud/auiV0.js.map +1 -1
- package/dist/cloud/index.js +4 -31
- package/dist/cloud/index.js.map +1 -1
- package/dist/cloud/useCloudThreadListRuntime.js +7 -33
- package/dist/cloud/useCloudThreadListRuntime.js.map +1 -1
- package/dist/context/ReadonlyStore.js +3 -29
- package/dist/context/ReadonlyStore.js.map +1 -1
- package/dist/context/index.js +3 -28
- package/dist/context/index.js.map +1 -1
- package/dist/context/providers/AssistantRuntimeProvider.js +31 -53
- package/dist/context/providers/AssistantRuntimeProvider.js.map +1 -1
- package/dist/context/providers/AttachmentRuntimeProvider.js +16 -42
- package/dist/context/providers/AttachmentRuntimeProvider.js.map +1 -1
- package/dist/context/providers/ContentPartRuntimeProvider.js +16 -42
- package/dist/context/providers/ContentPartRuntimeProvider.js.map +1 -1
- package/dist/context/providers/MessageRuntimeProvider.js +19 -45
- package/dist/context/providers/MessageRuntimeProvider.js.map +1 -1
- package/dist/context/providers/TextContentPartProvider.js +24 -46
- package/dist/context/providers/TextContentPartProvider.js.map +1 -1
- package/dist/context/providers/ThreadListItemRuntimeProvider.js +18 -42
- package/dist/context/providers/ThreadListItemRuntimeProvider.js.map +1 -1
- package/dist/context/providers/ThreadRuntimeProvider.js +19 -45
- package/dist/context/providers/ThreadRuntimeProvider.js.map +1 -1
- package/dist/context/providers/ThreadViewportProvider.js +19 -42
- package/dist/context/providers/ThreadViewportProvider.js.map +1 -1
- package/dist/context/providers/index.js +4 -31
- package/dist/context/providers/index.js.map +1 -1
- package/dist/context/react/AssistantContext.js +11 -42
- package/dist/context/react/AssistantContext.js.map +1 -1
- package/dist/context/react/AttachmentContext.js +11 -45
- package/dist/context/react/AttachmentContext.js.map +1 -1
- package/dist/context/react/ComposerContext.js +8 -35
- package/dist/context/react/ComposerContext.js.map +1 -1
- package/dist/context/react/ContentPartContext.js +8 -36
- package/dist/context/react/ContentPartContext.js.map +1 -1
- package/dist/context/react/MessageContext.js +12 -43
- package/dist/context/react/MessageContext.js.map +1 -1
- package/dist/context/react/ThreadContext.js +12 -42
- package/dist/context/react/ThreadContext.js.map +1 -1
- package/dist/context/react/ThreadListItemContext.js +8 -36
- package/dist/context/react/ThreadListItemContext.js.map +1 -1
- package/dist/context/react/ThreadViewportContext.js +8 -36
- package/dist/context/react/ThreadViewportContext.js.map +1 -1
- package/dist/context/react/index.js +38 -62
- package/dist/context/react/index.js.map +1 -1
- package/dist/context/react/utils/createContextHook.js +4 -30
- package/dist/context/react/utils/createContextHook.js.map +1 -1
- package/dist/context/react/utils/createContextStoreHook.js +2 -28
- package/dist/context/react/utils/createContextStoreHook.js.map +1 -1
- package/dist/context/react/utils/createStateHookForRuntime.js +6 -30
- package/dist/context/react/utils/createStateHookForRuntime.js.map +1 -1
- package/dist/context/react/utils/ensureBinding.js +21 -27
- package/dist/context/react/utils/ensureBinding.js.map +1 -1
- package/dist/context/react/utils/useRuntimeState.js +8 -35
- package/dist/context/react/utils/useRuntimeState.js.map +1 -1
- package/dist/context/stores/AssistantToolUIs.js +4 -30
- package/dist/context/stores/AssistantToolUIs.js.map +1 -1
- package/dist/context/stores/MessageUtils.js +4 -30
- package/dist/context/stores/MessageUtils.js.map +1 -1
- package/dist/context/stores/ThreadViewport.js +5 -31
- package/dist/context/stores/ThreadViewport.js.map +1 -1
- package/dist/context/stores/index.js +0 -18
- package/dist/context/stores/index.js.map +1 -1
- package/dist/index.js +10 -54
- package/dist/index.js.map +1 -1
- package/dist/internal.js +16 -51
- package/dist/internal.js.map +1 -1
- package/dist/model-context/ModelContextTypes.d.ts +14 -41
- package/dist/model-context/ModelContextTypes.d.ts.map +1 -1
- package/dist/model-context/ModelContextTypes.js +3 -48
- package/dist/model-context/ModelContextTypes.js.map +1 -1
- package/dist/model-context/index.js +17 -47
- package/dist/model-context/index.js.map +1 -1
- package/dist/model-context/makeAssistantTool.js +5 -31
- package/dist/model-context/makeAssistantTool.js.map +1 -1
- package/dist/model-context/makeAssistantToolUI.js +7 -31
- package/dist/model-context/makeAssistantToolUI.js.map +1 -1
- package/dist/model-context/makeAssistantVisible.d.ts.map +1 -1
- package/dist/model-context/makeAssistantVisible.js +33 -52
- package/dist/model-context/makeAssistantVisible.js.map +1 -1
- package/dist/model-context/tool.d.ts +6 -6
- package/dist/model-context/tool.d.ts.map +1 -1
- package/dist/model-context/tool.js +2 -28
- package/dist/model-context/tool.js.map +1 -1
- package/dist/model-context/useAssistantInstructions.js +8 -34
- package/dist/model-context/useAssistantInstructions.js.map +1 -1
- package/dist/model-context/useAssistantTool.js +12 -35
- package/dist/model-context/useAssistantTool.js.map +1 -1
- package/dist/model-context/useAssistantToolUI.js +7 -33
- package/dist/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/model-context/useInlineRender.js +8 -34
- package/dist/model-context/useInlineRender.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js +24 -47
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js +12 -36
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +17 -43
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +15 -41
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js +15 -39
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarRoot.js +15 -38
- package/dist/primitives/actionBar/ActionBarRoot.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarSpeak.js +12 -36
- package/dist/primitives/actionBar/ActionBarSpeak.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js +21 -44
- package/dist/primitives/actionBar/ActionBarStopSpeaking.js.map +1 -1
- package/dist/primitives/actionBar/index.js +17 -50
- package/dist/primitives/actionBar/index.js.map +1 -1
- package/dist/primitives/actionBar/useActionBarFloatStatus.js +13 -37
- package/dist/primitives/actionBar/useActionBarFloatStatus.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.js +9 -45
- package/dist/primitives/assistantModal/AssistantModalAnchor.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js +11 -47
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.js +14 -50
- package/dist/primitives/assistantModal/AssistantModalRoot.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.js +9 -45
- package/dist/primitives/assistantModal/AssistantModalTrigger.js.map +1 -1
- package/dist/primitives/assistantModal/index.js +9 -38
- package/dist/primitives/assistantModal/index.js.map +1 -1
- package/dist/primitives/assistantModal/scope.js +4 -40
- package/dist/primitives/assistantModal/scope.js.map +1 -1
- package/dist/primitives/attachment/AttachmentName.js +7 -33
- package/dist/primitives/attachment/AttachmentName.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRemove.js +11 -35
- package/dist/primitives/attachment/AttachmentRemove.js.map +1 -1
- package/dist/primitives/attachment/AttachmentRoot.js +7 -33
- package/dist/primitives/attachment/AttachmentRoot.js.map +1 -1
- package/dist/primitives/attachment/AttachmentThumb.js +9 -35
- package/dist/primitives/attachment/AttachmentThumb.js.map +1 -1
- package/dist/primitives/attachment/index.js +9 -38
- package/dist/primitives/attachment/index.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerCount.js +8 -34
- package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNext.js +15 -36
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerNumber.js +8 -34
- package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.js +15 -36
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.js +8 -34
- package/dist/primitives/branchPicker/BranchPickerRoot.js.map +1 -1
- package/dist/primitives/branchPicker/index.js +11 -41
- package/dist/primitives/branchPicker/index.js.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.js +12 -36
- package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
- package/dist/primitives/composer/ComposerAttachments.js +19 -45
- package/dist/primitives/composer/ComposerAttachments.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.js +12 -36
- package/dist/primitives/composer/ComposerCancel.js.map +1 -1
- package/dist/primitives/composer/ComposerIf.js +6 -32
- package/dist/primitives/composer/ComposerIf.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +39 -67
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerRoot.js +14 -38
- package/dist/primitives/composer/ComposerRoot.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.js +15 -40
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/composer/index.js +15 -47
- package/dist/primitives/composer/index.js.map +1 -1
- package/dist/primitives/contentPart/ContentPartImage.js +9 -35
- package/dist/primitives/contentPart/ContentPartImage.js.map +1 -1
- package/dist/primitives/contentPart/ContentPartInProgress.js +5 -31
- package/dist/primitives/contentPart/ContentPartInProgress.js.map +1 -1
- package/dist/primitives/contentPart/ContentPartText.js +11 -35
- package/dist/primitives/contentPart/ContentPartText.js.map +1 -1
- package/dist/primitives/contentPart/index.js +7 -35
- package/dist/primitives/contentPart/index.js.map +1 -1
- package/dist/primitives/contentPart/useContentPartFile.js +5 -31
- package/dist/primitives/contentPart/useContentPartFile.js.map +1 -1
- package/dist/primitives/contentPart/useContentPartImage.js +5 -31
- package/dist/primitives/contentPart/useContentPartImage.js.map +1 -1
- package/dist/primitives/contentPart/useContentPartReasoning.js +5 -31
- package/dist/primitives/contentPart/useContentPartReasoning.js.map +1 -1
- package/dist/primitives/contentPart/useContentPartSource.js +5 -31
- package/dist/primitives/contentPart/useContentPartSource.js.map +1 -1
- package/dist/primitives/contentPart/useContentPartText.js +5 -31
- package/dist/primitives/contentPart/useContentPartText.js.map +1 -1
- package/dist/primitives/index.js +18 -69
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/message/MessageAttachments.js +19 -45
- package/dist/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/primitives/message/MessageContent.js +54 -72
- package/dist/primitives/message/MessageContent.js.map +1 -1
- package/dist/primitives/message/MessageIf.js +12 -35
- package/dist/primitives/message/MessageIf.js.map +1 -1
- package/dist/primitives/message/MessageRoot.js +18 -41
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/message/index.js +9 -38
- package/dist/primitives/message/index.js.map +1 -1
- package/dist/primitives/thread/ThreadEmpty.js +5 -31
- package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
- package/dist/primitives/thread/ThreadIf.js +6 -32
- package/dist/primitives/thread/ThreadIf.js.map +1 -1
- package/dist/primitives/thread/ThreadMessages.js +23 -50
- package/dist/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/primitives/thread/ThreadRoot.js +7 -33
- package/dist/primitives/thread/ThreadRoot.js.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.js +15 -36
- package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
- package/dist/primitives/thread/ThreadSuggestion.js +13 -37
- package/dist/primitives/thread/ThreadSuggestion.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +14 -40
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/index.js +15 -47
- package/dist/primitives/thread/index.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +22 -48
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/primitives/threadList/ThreadListItems.js +14 -40
- package/dist/primitives/threadList/ThreadListItems.js.map +1 -1
- package/dist/primitives/threadList/ThreadListNew.js +14 -40
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -1
- package/dist/primitives/threadList/ThreadListRoot.js +7 -33
- package/dist/primitives/threadList/ThreadListRoot.js.map +1 -1
- package/dist/primitives/threadList/index.js +7 -35
- package/dist/primitives/threadList/index.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.js +11 -35
- package/dist/primitives/threadListItem/ThreadListItemArchive.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.js +9 -33
- package/dist/primitives/threadListItem/ThreadListItemDelete.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.js +10 -36
- package/dist/primitives/threadListItem/ThreadListItemRoot.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTitle.js +7 -33
- package/dist/primitives/threadListItem/ThreadListItemTitle.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js +9 -33
- package/dist/primitives/threadListItem/ThreadListItemTrigger.js.map +1 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js +9 -33
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.js.map +1 -1
- package/dist/primitives/threadListItem/index.js +13 -44
- package/dist/primitives/threadListItem/index.js.map +1 -1
- package/dist/runtimes/adapters/RuntimeAdapterProvider.js +10 -37
- package/dist/runtimes/adapters/RuntimeAdapterProvider.js.map +1 -1
- package/dist/runtimes/adapters/attachment/AttachmentAdapter.js +0 -18
- package/dist/runtimes/adapters/attachment/AttachmentAdapter.js.map +1 -1
- package/dist/runtimes/adapters/attachment/CompositeAttachmentAdapter.js +4 -30
- package/dist/runtimes/adapters/attachment/CompositeAttachmentAdapter.js.map +1 -1
- package/dist/runtimes/adapters/attachment/SimpleImageAttachmentAdapter.js +5 -31
- package/dist/runtimes/adapters/attachment/SimpleImageAttachmentAdapter.js.map +1 -1
- package/dist/runtimes/adapters/attachment/SimpleTextAttachmentAdapter.js +5 -31
- package/dist/runtimes/adapters/attachment/SimpleTextAttachmentAdapter.js.map +1 -1
- package/dist/runtimes/adapters/attachment/index.js +5 -33
- package/dist/runtimes/adapters/attachment/index.js.map +1 -1
- package/dist/runtimes/adapters/feedback/FeedbackAdapter.js +0 -18
- package/dist/runtimes/adapters/feedback/FeedbackAdapter.js.map +1 -1
- package/dist/runtimes/adapters/feedback/index.js +0 -18
- package/dist/runtimes/adapters/feedback/index.js.map +1 -1
- package/dist/runtimes/adapters/index.js +4 -30
- package/dist/runtimes/adapters/index.js.map +1 -1
- package/dist/runtimes/adapters/speech/SpeechAdapterTypes.js +0 -18
- package/dist/runtimes/adapters/speech/SpeechAdapterTypes.js.map +1 -1
- package/dist/runtimes/adapters/speech/WebSpeechSynthesisAdapter.js +4 -30
- package/dist/runtimes/adapters/speech/WebSpeechSynthesisAdapter.js.map +1 -1
- package/dist/runtimes/adapters/speech/index.js +3 -29
- package/dist/runtimes/adapters/speech/index.js.map +1 -1
- package/dist/runtimes/adapters/suggestion/SuggestionAdapter.js +0 -18
- package/dist/runtimes/adapters/suggestion/SuggestionAdapter.js.map +1 -1
- package/dist/runtimes/adapters/suggestion/index.js +0 -18
- package/dist/runtimes/adapters/suggestion/index.js.map +1 -1
- package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.js +0 -18
- package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.js.map +1 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.js +6 -32
- package/dist/runtimes/composer/BaseComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js +8 -34
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.js +5 -31
- package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/AssistantRuntimeCore.js +0 -18
- package/dist/runtimes/core/AssistantRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/BaseAssistantRuntimeCore.js +6 -32
- package/dist/runtimes/core/BaseAssistantRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.js +14 -38
- package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/ComposerRuntimeCore.js +0 -18
- package/dist/runtimes/core/ComposerRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/ThreadListRuntimeCore.js +0 -18
- package/dist/runtimes/core/ThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/ThreadRuntimeCore.js +0 -18
- package/dist/runtimes/core/ThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/index.js +0 -18
- package/dist/runtimes/core/index.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.js +0 -18
- package/dist/runtimes/external-store/ExternalStoreAdapter.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js +10 -36
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +9 -35
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +23 -47
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageConverter.js +4 -30
- package/dist/runtimes/external-store/ThreadMessageConverter.js.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.js +8 -34
- package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
- package/dist/runtimes/external-store/auto-status.js +6 -33
- package/dist/runtimes/external-store/auto-status.js.map +1 -1
- package/dist/runtimes/external-store/createMessageConverter.d.ts +5 -1
- package/dist/runtimes/external-store/createMessageConverter.d.ts.map +1 -1
- package/dist/runtimes/external-store/createMessageConverter.js +22 -40
- package/dist/runtimes/external-store/createMessageConverter.js.map +1 -1
- package/dist/runtimes/external-store/external-message-converter.js +30 -54
- package/dist/runtimes/external-store/external-message-converter.js.map +1 -1
- package/dist/runtimes/external-store/getExternalStoreMessage.js +7 -35
- package/dist/runtimes/external-store/getExternalStoreMessage.js.map +1 -1
- package/dist/runtimes/external-store/index.js +14 -39
- package/dist/runtimes/external-store/index.js.map +1 -1
- package/dist/runtimes/external-store/useExternalStoreRuntime.d.ts +2 -2
- package/dist/runtimes/external-store/useExternalStoreRuntime.d.ts.map +1 -1
- package/dist/runtimes/external-store/useExternalStoreRuntime.js +14 -38
- package/dist/runtimes/external-store/useExternalStoreRuntime.js.map +1 -1
- package/dist/runtimes/index.js +8 -40
- package/dist/runtimes/index.js.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.js +0 -18
- package/dist/runtimes/local/ChatModelAdapter.js.map +1 -1
- package/dist/runtimes/local/LocalRuntimeCore.js +11 -37
- package/dist/runtimes/local/LocalRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/LocalRuntimeOptions.js +3 -29
- package/dist/runtimes/local/LocalRuntimeOptions.js.map +1 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js +6 -32
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js +11 -37
- package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/index.js +3 -29
- package/dist/runtimes/local/index.js.map +1 -1
- package/dist/runtimes/local/shouldContinue.js +3 -29
- package/dist/runtimes/local/shouldContinue.js.map +1 -1
- package/dist/runtimes/local/useLocalRuntime.js +18 -44
- package/dist/runtimes/local/useLocalRuntime.js.map +1 -1
- package/dist/runtimes/remote-thread-list/BaseSubscribable.js +4 -30
- package/dist/runtimes/remote-thread-list/BaseSubscribable.js.map +1 -1
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js +4 -30
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js.map +1 -1
- package/dist/runtimes/remote-thread-list/OptimisticState.js +6 -32
- package/dist/runtimes/remote-thread-list/OptimisticState.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js +33 -50
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +28 -54
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.js +23 -44
- package/dist/runtimes/remote-thread-list/adapter/cloud.js.map +1 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.js +4 -30
- package/dist/runtimes/remote-thread-list/adapter/in-memory.js.map +1 -1
- package/dist/runtimes/remote-thread-list/index.js +5 -32
- package/dist/runtimes/remote-thread-list/index.js.map +1 -1
- package/dist/runtimes/remote-thread-list/types.js +0 -18
- package/dist/runtimes/remote-thread-list/types.js.map +1 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js +13 -39
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/runtimes/utils/MessageRepository.js +14 -41
- package/dist/runtimes/utils/MessageRepository.js.map +1 -1
- package/dist/tests/setup.js +3 -2995
- package/dist/tests/setup.js.map +1 -1
- package/dist/types/AssistantTypes.js +0 -18
- package/dist/types/AssistantTypes.js.map +1 -1
- package/dist/types/AttachmentTypes.js +0 -18
- package/dist/types/AttachmentTypes.js.map +1 -1
- package/dist/types/ContentPartComponentTypes.js +0 -18
- package/dist/types/ContentPartComponentTypes.js.map +1 -1
- package/dist/types/Unsubscribe.js +0 -18
- package/dist/types/Unsubscribe.js.map +1 -1
- package/dist/types/index.js +0 -18
- package/dist/types/index.js.map +1 -1
- package/dist/utils/CompositeContextProvider.js +8 -32
- package/dist/utils/CompositeContextProvider.js.map +1 -1
- package/dist/utils/RequireAtLeastOne.js +0 -18
- package/dist/utils/RequireAtLeastOne.js.map +1 -1
- package/dist/utils/combined/createCombinedStore.js +5 -31
- package/dist/utils/combined/createCombinedStore.js.map +1 -1
- package/dist/utils/combined/useCombinedStore.js +8 -32
- package/dist/utils/combined/useCombinedStore.js.map +1 -1
- package/dist/utils/createActionButton.js +13 -37
- package/dist/utils/createActionButton.js.map +1 -1
- package/dist/utils/getThreadMessageText.js +3 -29
- package/dist/utils/getThreadMessageText.js.map +1 -1
- package/dist/utils/hooks/useManagedRef.js +6 -32
- package/dist/utils/hooks/useManagedRef.js.map +1 -1
- package/dist/utils/hooks/useOnResizeContent.js +9 -35
- package/dist/utils/hooks/useOnResizeContent.js.map +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.js +9 -35
- package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
- package/dist/utils/idUtils.js +7 -35
- package/dist/utils/idUtils.js.map +1 -1
- package/dist/utils/json/is-json.js +2 -30
- package/dist/utils/json/is-json.js.map +1 -1
- package/dist/utils/json/json-value.js +0 -18
- package/dist/utils/json/json-value.js.map +1 -1
- package/dist/utils/smooth/SmoothContext.js +24 -48
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/dist/utils/smooth/index.js +4 -32
- package/dist/utils/smooth/index.js.map +1 -1
- package/dist/utils/smooth/useSmooth.js +23 -49
- package/dist/utils/smooth/useSmooth.js.map +1 -1
- package/dist/utils/useToolArgsFieldStatus.js +8 -34
- package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
- package/package.json +10 -16
- package/src/model-context/ModelContextTypes.ts +14 -21
- package/src/model-context/makeAssistantVisible.tsx +2 -0
- package/src/model-context/tool.ts +6 -12
- package/src/runtimes/external-store/createMessageConverter.tsx +10 -1
- package/src/runtimes/external-store/useExternalStoreRuntime.tsx +7 -2
- package/dist/api/AssistantRuntime.mjs +0 -46
- package/dist/api/AssistantRuntime.mjs.map +0 -1
- package/dist/api/AttachmentRuntime.mjs +0 -59
- package/dist/api/AttachmentRuntime.mjs.map +0 -1
- package/dist/api/ComposerRuntime.mjs +0 -230
- package/dist/api/ComposerRuntime.mjs.map +0 -1
- package/dist/api/ContentPartRuntime.mjs +0 -47
- package/dist/api/ContentPartRuntime.mjs.map +0 -1
- package/dist/api/MessageRuntime.mjs +0 -212
- package/dist/api/MessageRuntime.mjs.map +0 -1
- package/dist/api/RuntimePathTypes.mjs +0 -1
- package/dist/api/RuntimePathTypes.mjs.map +0 -1
- package/dist/api/ThreadListItemRuntime.mjs +0 -71
- package/dist/api/ThreadListItemRuntime.mjs.map +0 -1
- package/dist/api/ThreadListRuntime.mjs +0 -165
- package/dist/api/ThreadListRuntime.mjs.map +0 -1
- package/dist/api/ThreadRuntime.mjs +0 -235
- package/dist/api/ThreadRuntime.mjs.map +0 -1
- package/dist/api/index.mjs +0 -1
- package/dist/api/index.mjs.map +0 -1
- package/dist/api/subscribable/BaseSubject.mjs +0 -32
- package/dist/api/subscribable/BaseSubject.mjs.map +0 -1
- package/dist/api/subscribable/EventSubscriptionSubject.mjs +0 -37
- package/dist/api/subscribable/EventSubscriptionSubject.mjs.map +0 -1
- package/dist/api/subscribable/LazyMemoizeSubject.mjs +0 -37
- package/dist/api/subscribable/LazyMemoizeSubject.mjs.map +0 -1
- package/dist/api/subscribable/NestedSubscriptionSubject.mjs +0 -41
- package/dist/api/subscribable/NestedSubscriptionSubject.mjs.map +0 -1
- package/dist/api/subscribable/SKIP_UPDATE.mjs +0 -6
- package/dist/api/subscribable/SKIP_UPDATE.mjs.map +0 -1
- package/dist/api/subscribable/ShallowMemoizeSubject.mjs +0 -41
- package/dist/api/subscribable/ShallowMemoizeSubject.mjs.map +0 -1
- package/dist/api/subscribable/Subscribable.mjs +0 -1
- package/dist/api/subscribable/Subscribable.mjs.map +0 -1
- package/dist/api/subscribable/shallowEqual.mjs +0 -16
- package/dist/api/subscribable/shallowEqual.mjs.map +0 -1
- package/dist/cloud/AssistantCloud.mjs +0 -22
- package/dist/cloud/AssistantCloud.mjs.map +0 -1
- package/dist/cloud/AssistantCloudAPI.mjs +0 -87
- package/dist/cloud/AssistantCloudAPI.mjs.map +0 -1
- package/dist/cloud/AssistantCloudAuthStrategy.mjs +0 -139
- package/dist/cloud/AssistantCloudAuthStrategy.mjs.map +0 -1
- package/dist/cloud/AssistantCloudAuthTokens.mjs +0 -13
- package/dist/cloud/AssistantCloudAuthTokens.mjs.map +0 -1
- package/dist/cloud/AssistantCloudRuns.mjs +0 -21
- package/dist/cloud/AssistantCloudRuns.mjs.map +0 -1
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.mjs +0 -47
- package/dist/cloud/AssistantCloudThreadHistoryAdapter.mjs.map +0 -1
- package/dist/cloud/AssistantCloudThreadMessages.mjs +0 -21
- package/dist/cloud/AssistantCloudThreadMessages.mjs.map +0 -1
- package/dist/cloud/AssistantCloudThreads.mjs +0 -30
- package/dist/cloud/AssistantCloudThreads.mjs.map +0 -1
- package/dist/cloud/auiV0.mjs +0 -88
- package/dist/cloud/auiV0.mjs.map +0 -1
- package/dist/cloud/index.mjs +0 -8
- package/dist/cloud/index.mjs.map +0 -1
- package/dist/cloud/useCloudThreadListRuntime.mjs +0 -20
- package/dist/cloud/useCloudThreadListRuntime.mjs.map +0 -1
- package/dist/context/ReadonlyStore.mjs +0 -8
- package/dist/context/ReadonlyStore.mjs.map +0 -1
- package/dist/context/index.mjs +0 -5
- package/dist/context/index.mjs.map +0 -1
- package/dist/context/providers/AssistantRuntimeProvider.mjs +0 -59
- package/dist/context/providers/AssistantRuntimeProvider.mjs.map +0 -1
- package/dist/context/providers/AttachmentRuntimeProvider.mjs +0 -33
- package/dist/context/providers/AttachmentRuntimeProvider.mjs.map +0 -1
- package/dist/context/providers/ContentPartRuntimeProvider.mjs +0 -28
- package/dist/context/providers/ContentPartRuntimeProvider.mjs.map +0 -1
- package/dist/context/providers/MessageRuntimeProvider.mjs +0 -37
- package/dist/context/providers/MessageRuntimeProvider.mjs.map +0 -1
- package/dist/context/providers/TextContentPartProvider.mjs +0 -66
- package/dist/context/providers/TextContentPartProvider.mjs.map +0 -1
- package/dist/context/providers/ThreadListItemRuntimeProvider.mjs +0 -30
- package/dist/context/providers/ThreadListItemRuntimeProvider.mjs.map +0 -1
- package/dist/context/providers/ThreadRuntimeProvider.mjs +0 -33
- package/dist/context/providers/ThreadRuntimeProvider.mjs.map +0 -1
- package/dist/context/providers/ThreadViewportProvider.mjs +0 -42
- package/dist/context/providers/ThreadViewportProvider.mjs.map +0 -1
- package/dist/context/providers/index.mjs +0 -8
- package/dist/context/providers/index.mjs.map +0 -1
- package/dist/context/react/AssistantContext.mjs +0 -34
- package/dist/context/react/AssistantContext.mjs.map +0 -1
- package/dist/context/react/AttachmentContext.mjs +0 -67
- package/dist/context/react/AttachmentContext.mjs.map +0 -1
- package/dist/context/react/ComposerContext.mjs +0 -17
- package/dist/context/react/ComposerContext.mjs.map +0 -1
- package/dist/context/react/ContentPartContext.mjs +0 -25
- package/dist/context/react/ContentPartContext.mjs.map +0 -1
- package/dist/context/react/MessageContext.mjs +0 -35
- package/dist/context/react/MessageContext.mjs.map +0 -1
- package/dist/context/react/ThreadContext.mjs +0 -38
- package/dist/context/react/ThreadContext.mjs.map +0 -1
- package/dist/context/react/ThreadListItemContext.mjs +0 -25
- package/dist/context/react/ThreadListItemContext.mjs.map +0 -1
- package/dist/context/react/ThreadViewportContext.mjs +0 -18
- package/dist/context/react/ThreadViewportContext.mjs.map +0 -1
- package/dist/context/react/index.mjs +0 -66
- package/dist/context/react/index.mjs.map +0 -1
- package/dist/context/react/utils/createContextHook.mjs +0 -18
- package/dist/context/react/utils/createContextHook.mjs.map +0 -1
- package/dist/context/react/utils/createContextStoreHook.mjs +0 -31
- package/dist/context/react/utils/createContextStoreHook.mjs.map +0 -1
- package/dist/context/react/utils/createStateHookForRuntime.mjs +0 -24
- package/dist/context/react/utils/createStateHookForRuntime.mjs.map +0 -1
- package/dist/context/react/utils/ensureBinding.mjs +0 -11
- package/dist/context/react/utils/ensureBinding.mjs.map +0 -1
- package/dist/context/react/utils/useRuntimeState.mjs +0 -22
- package/dist/context/react/utils/useRuntimeState.mjs.map +0 -1
- package/dist/context/stores/AssistantToolUIs.mjs +0 -35
- package/dist/context/stores/AssistantToolUIs.mjs.map +0 -1
- package/dist/context/stores/MessageUtils.mjs +0 -18
- package/dist/context/stores/MessageUtils.mjs.map +0 -1
- package/dist/context/stores/ThreadViewport.mjs +0 -25
- package/dist/context/stores/ThreadViewport.mjs.map +0 -1
- package/dist/context/stores/index.mjs +0 -1
- package/dist/context/stores/index.mjs.map +0 -1
- package/dist/index.mjs +0 -13
- package/dist/index.mjs.map +0 -1
- package/dist/internal.mjs +0 -27
- package/dist/internal.mjs.map +0 -1
- package/dist/model-context/ModelContextTypes.mjs +0 -61
- package/dist/model-context/ModelContextTypes.mjs.map +0 -1
- package/dist/model-context/index.mjs +0 -26
- package/dist/model-context/index.mjs.map +0 -1
- package/dist/model-context/makeAssistantTool.mjs +0 -16
- package/dist/model-context/makeAssistantTool.mjs.map +0 -1
- package/dist/model-context/makeAssistantToolUI.mjs +0 -18
- package/dist/model-context/makeAssistantToolUI.mjs.map +0 -1
- package/dist/model-context/makeAssistantVisible.mjs +0 -93
- package/dist/model-context/makeAssistantVisible.mjs.map +0 -1
- package/dist/model-context/tool.mjs +0 -8
- package/dist/model-context/tool.mjs.map +0 -1
- package/dist/model-context/useAssistantInstructions.mjs +0 -26
- package/dist/model-context/useAssistantInstructions.mjs.map +0 -1
- package/dist/model-context/useAssistantTool.mjs +0 -31
- package/dist/model-context/useAssistantTool.mjs.map +0 -1
- package/dist/model-context/useAssistantToolUI.mjs +0 -16
- package/dist/model-context/useAssistantToolUI.mjs.map +0 -1
- package/dist/model-context/useInlineRender.mjs +0 -22
- package/dist/model-context/useInlineRender.mjs.map +0 -1
- package/dist/primitives/actionBar/ActionBarCopy.mjs +0 -56
- package/dist/primitives/actionBar/ActionBarCopy.mjs.map +0 -1
- package/dist/primitives/actionBar/ActionBarEdit.mjs +0 -25
- package/dist/primitives/actionBar/ActionBarEdit.mjs.map +0 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.mjs +0 -41
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.mjs.map +0 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.mjs +0 -39
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.mjs.map +0 -1
- package/dist/primitives/actionBar/ActionBarReload.mjs +0 -31
- package/dist/primitives/actionBar/ActionBarReload.mjs.map +0 -1
- package/dist/primitives/actionBar/ActionBarRoot.mjs +0 -31
- package/dist/primitives/actionBar/ActionBarRoot.mjs.map +0 -1
- package/dist/primitives/actionBar/ActionBarSpeak.mjs +0 -27
- package/dist/primitives/actionBar/ActionBarSpeak.mjs.map +0 -1
- package/dist/primitives/actionBar/ActionBarStopSpeaking.mjs +0 -48
- package/dist/primitives/actionBar/ActionBarStopSpeaking.mjs.map +0 -1
- package/dist/primitives/actionBar/index.mjs +0 -20
- package/dist/primitives/actionBar/index.mjs.map +0 -1
- package/dist/primitives/actionBar/useActionBarFloatStatus.mjs +0 -41
- package/dist/primitives/actionBar/useActionBarFloatStatus.mjs.map +0 -1
- package/dist/primitives/assistantModal/AssistantModalAnchor.mjs +0 -21
- package/dist/primitives/assistantModal/AssistantModalAnchor.mjs.map +0 -1
- package/dist/primitives/assistantModal/AssistantModalContent.mjs +0 -39
- package/dist/primitives/assistantModal/AssistantModalContent.mjs.map +0 -1
- package/dist/primitives/assistantModal/AssistantModalRoot.mjs +0 -60
- package/dist/primitives/assistantModal/AssistantModalRoot.mjs.map +0 -1
- package/dist/primitives/assistantModal/AssistantModalTrigger.mjs +0 -19
- package/dist/primitives/assistantModal/AssistantModalTrigger.mjs.map +0 -1
- package/dist/primitives/assistantModal/index.mjs +0 -12
- package/dist/primitives/assistantModal/index.mjs.map +0 -1
- package/dist/primitives/assistantModal/scope.mjs +0 -7
- package/dist/primitives/assistantModal/scope.mjs.map +0 -1
- package/dist/primitives/attachment/AttachmentName.mjs +0 -14
- package/dist/primitives/attachment/AttachmentName.mjs.map +0 -1
- package/dist/primitives/attachment/AttachmentRemove.mjs +0 -23
- package/dist/primitives/attachment/AttachmentRemove.mjs.map +0 -1
- package/dist/primitives/attachment/AttachmentRoot.mjs +0 -12
- package/dist/primitives/attachment/AttachmentRoot.mjs.map +0 -1
- package/dist/primitives/attachment/AttachmentThumb.mjs +0 -19
- package/dist/primitives/attachment/AttachmentThumb.mjs.map +0 -1
- package/dist/primitives/attachment/index.mjs +0 -12
- package/dist/primitives/attachment/index.mjs.map +0 -1
- package/dist/primitives/branchPicker/BranchPickerCount.mjs +0 -18
- package/dist/primitives/branchPicker/BranchPickerCount.mjs.map +0 -1
- package/dist/primitives/branchPicker/BranchPickerNext.mjs +0 -28
- package/dist/primitives/branchPicker/BranchPickerNext.mjs.map +0 -1
- package/dist/primitives/branchPicker/BranchPickerNumber.mjs +0 -18
- package/dist/primitives/branchPicker/BranchPickerNumber.mjs.map +0 -1
- package/dist/primitives/branchPicker/BranchPickerPrevious.mjs +0 -28
- package/dist/primitives/branchPicker/BranchPickerPrevious.mjs.map +0 -1
- package/dist/primitives/branchPicker/BranchPickerRoot.mjs +0 -13
- package/dist/primitives/branchPicker/BranchPickerRoot.mjs.map +0 -1
- package/dist/primitives/branchPicker/index.mjs +0 -14
- package/dist/primitives/branchPicker/index.mjs.map +0 -1
- package/dist/primitives/composer/ComposerAddAttachment.mjs +0 -42
- package/dist/primitives/composer/ComposerAddAttachment.mjs.map +0 -1
- package/dist/primitives/composer/ComposerAttachments.mjs +0 -57
- package/dist/primitives/composer/ComposerAttachments.mjs.map +0 -1
- package/dist/primitives/composer/ComposerCancel.mjs +0 -25
- package/dist/primitives/composer/ComposerCancel.mjs.map +0 -1
- package/dist/primitives/composer/ComposerIf.mjs +0 -23
- package/dist/primitives/composer/ComposerIf.mjs.map +0 -1
- package/dist/primitives/composer/ComposerInput.mjs +0 -115
- package/dist/primitives/composer/ComposerInput.mjs.map +0 -1
- package/dist/primitives/composer/ComposerRoot.mjs +0 -31
- package/dist/primitives/composer/ComposerRoot.mjs.map +0 -1
- package/dist/primitives/composer/ComposerSend.mjs +0 -32
- package/dist/primitives/composer/ComposerSend.mjs.map +0 -1
- package/dist/primitives/composer/index.mjs +0 -18
- package/dist/primitives/composer/index.mjs.map +0 -1
- package/dist/primitives/contentPart/ContentPartImage.mjs +0 -16
- package/dist/primitives/contentPart/ContentPartImage.mjs.map +0 -1
- package/dist/primitives/contentPart/ContentPartInProgress.mjs +0 -13
- package/dist/primitives/contentPart/ContentPartInProgress.mjs.map +0 -1
- package/dist/primitives/contentPart/ContentPartText.mjs +0 -18
- package/dist/primitives/contentPart/ContentPartText.mjs.map +0 -1
- package/dist/primitives/contentPart/index.mjs +0 -10
- package/dist/primitives/contentPart/index.mjs.map +0 -1
- package/dist/primitives/contentPart/useContentPartFile.mjs +0 -18
- package/dist/primitives/contentPart/useContentPartFile.mjs.map +0 -1
- package/dist/primitives/contentPart/useContentPartImage.mjs +0 -18
- package/dist/primitives/contentPart/useContentPartImage.mjs.map +0 -1
- package/dist/primitives/contentPart/useContentPartReasoning.mjs +0 -18
- package/dist/primitives/contentPart/useContentPartReasoning.mjs.map +0 -1
- package/dist/primitives/contentPart/useContentPartSource.mjs +0 -18
- package/dist/primitives/contentPart/useContentPartSource.mjs.map +0 -1
- package/dist/primitives/contentPart/useContentPartText.mjs +0 -18
- package/dist/primitives/contentPart/useContentPartText.mjs.map +0 -1
- package/dist/primitives/index.mjs +0 -36
- package/dist/primitives/index.mjs.map +0 -1
- package/dist/primitives/message/MessageAttachments.mjs +0 -58
- package/dist/primitives/message/MessageAttachments.mjs.map +0 -1
- package/dist/primitives/message/MessageContent.mjs +0 -131
- package/dist/primitives/message/MessageContent.mjs.map +0 -1
- package/dist/primitives/message/MessageIf.mjs +0 -55
- package/dist/primitives/message/MessageIf.mjs.map +0 -1
- package/dist/primitives/message/MessageRoot.mjs +0 -45
- package/dist/primitives/message/MessageRoot.mjs.map +0 -1
- package/dist/primitives/message/index.mjs +0 -12
- package/dist/primitives/message/index.mjs.map +0 -1
- package/dist/primitives/thread/ThreadEmpty.mjs +0 -15
- package/dist/primitives/thread/ThreadEmpty.mjs.map +0 -1
- package/dist/primitives/thread/ThreadIf.mjs +0 -27
- package/dist/primitives/thread/ThreadIf.mjs.map +0 -1
- package/dist/primitives/thread/ThreadMessages.mjs +0 -77
- package/dist/primitives/thread/ThreadMessages.mjs.map +0 -1
- package/dist/primitives/thread/ThreadRoot.mjs +0 -12
- package/dist/primitives/thread/ThreadRoot.mjs.map +0 -1
- package/dist/primitives/thread/ThreadScrollToBottom.mjs +0 -28
- package/dist/primitives/thread/ThreadScrollToBottom.mjs.map +0 -1
- package/dist/primitives/thread/ThreadSuggestion.mjs +0 -34
- package/dist/primitives/thread/ThreadSuggestion.mjs.map +0 -1
- package/dist/primitives/thread/ThreadViewport.mjs +0 -25
- package/dist/primitives/thread/ThreadViewport.mjs.map +0 -1
- package/dist/primitives/thread/index.mjs +0 -18
- package/dist/primitives/thread/index.mjs.map +0 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.mjs +0 -68
- package/dist/primitives/thread/useThreadViewportAutoScroll.mjs.map +0 -1
- package/dist/primitives/threadList/ThreadListItems.mjs +0 -46
- package/dist/primitives/threadList/ThreadListItems.mjs.map +0 -1
- package/dist/primitives/threadList/ThreadListNew.mjs +0 -36
- package/dist/primitives/threadList/ThreadListNew.mjs.map +0 -1
- package/dist/primitives/threadList/ThreadListRoot.mjs +0 -12
- package/dist/primitives/threadList/ThreadListRoot.mjs.map +0 -1
- package/dist/primitives/threadList/index.mjs +0 -10
- package/dist/primitives/threadList/index.mjs.map +0 -1
- package/dist/primitives/threadListItem/ThreadListItemArchive.mjs +0 -22
- package/dist/primitives/threadListItem/ThreadListItemArchive.mjs.map +0 -1
- package/dist/primitives/threadListItem/ThreadListItemDelete.mjs +0 -21
- package/dist/primitives/threadListItem/ThreadListItemDelete.mjs.map +0 -1
- package/dist/primitives/threadListItem/ThreadListItemRoot.mjs +0 -23
- package/dist/primitives/threadListItem/ThreadListItemRoot.mjs.map +0 -1
- package/dist/primitives/threadListItem/ThreadListItemTitle.mjs +0 -14
- package/dist/primitives/threadListItem/ThreadListItemTitle.mjs.map +0 -1
- package/dist/primitives/threadListItem/ThreadListItemTrigger.mjs +0 -21
- package/dist/primitives/threadListItem/ThreadListItemTrigger.mjs.map +0 -1
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.mjs +0 -21
- package/dist/primitives/threadListItem/ThreadListItemUnarchive.mjs.map +0 -1
- package/dist/primitives/threadListItem/index.mjs +0 -16
- package/dist/primitives/threadListItem/index.mjs.map +0 -1
- package/dist/runtimes/adapters/RuntimeAdapterProvider.mjs +0 -29
- package/dist/runtimes/adapters/RuntimeAdapterProvider.mjs.map +0 -1
- package/dist/runtimes/adapters/attachment/AttachmentAdapter.mjs +0 -1
- package/dist/runtimes/adapters/attachment/AttachmentAdapter.mjs.map +0 -1
- package/dist/runtimes/adapters/attachment/CompositeAttachmentAdapter.mjs +0 -79
- package/dist/runtimes/adapters/attachment/CompositeAttachmentAdapter.mjs.map +0 -1
- package/dist/runtimes/adapters/attachment/SimpleImageAttachmentAdapter.mjs +0 -38
- package/dist/runtimes/adapters/attachment/SimpleImageAttachmentAdapter.mjs.map +0 -1
- package/dist/runtimes/adapters/attachment/SimpleTextAttachmentAdapter.mjs +0 -40
- package/dist/runtimes/adapters/attachment/SimpleTextAttachmentAdapter.mjs.map +0 -1
- package/dist/runtimes/adapters/attachment/index.mjs +0 -10
- package/dist/runtimes/adapters/attachment/index.mjs.map +0 -1
- package/dist/runtimes/adapters/feedback/FeedbackAdapter.mjs +0 -1
- package/dist/runtimes/adapters/feedback/FeedbackAdapter.mjs.map +0 -1
- package/dist/runtimes/adapters/feedback/index.mjs +0 -1
- package/dist/runtimes/adapters/feedback/index.mjs.map +0 -1
- package/dist/runtimes/adapters/index.mjs +0 -6
- package/dist/runtimes/adapters/index.mjs.map +0 -1
- package/dist/runtimes/adapters/speech/SpeechAdapterTypes.mjs +0 -1
- package/dist/runtimes/adapters/speech/SpeechAdapterTypes.mjs.map +0 -1
- package/dist/runtimes/adapters/speech/WebSpeechSynthesisAdapter.mjs +0 -43
- package/dist/runtimes/adapters/speech/WebSpeechSynthesisAdapter.mjs.map +0 -1
- package/dist/runtimes/adapters/speech/index.mjs +0 -6
- package/dist/runtimes/adapters/speech/index.mjs.map +0 -1
- package/dist/runtimes/adapters/suggestion/SuggestionAdapter.mjs +0 -1
- package/dist/runtimes/adapters/suggestion/SuggestionAdapter.mjs.map +0 -1
- package/dist/runtimes/adapters/suggestion/index.mjs +0 -1
- package/dist/runtimes/adapters/suggestion/index.mjs.map +0 -1
- package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.mjs +0 -1
- package/dist/runtimes/adapters/thread-history/ThreadHistoryAdapter.mjs.map +0 -1
- package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs +0 -163
- package/dist/runtimes/composer/BaseComposerRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs +0 -48
- package/dist/runtimes/composer/DefaultEditComposerRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.mjs +0 -41
- package/dist/runtimes/composer/DefaultThreadComposerRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/core/AssistantRuntimeCore.mjs +0 -1
- package/dist/runtimes/core/AssistantRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/core/BaseAssistantRuntimeCore.mjs +0 -12
- package/dist/runtimes/core/BaseAssistantRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.mjs +0 -141
- package/dist/runtimes/core/BaseThreadRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/core/ComposerRuntimeCore.mjs +0 -1
- package/dist/runtimes/core/ComposerRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/core/ThreadListRuntimeCore.mjs +0 -1
- package/dist/runtimes/core/ThreadListRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/core/ThreadRuntimeCore.mjs +0 -1
- package/dist/runtimes/core/ThreadRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/core/index.mjs +0 -1
- package/dist/runtimes/core/index.mjs.map +0 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.mjs +0 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.mjs.map +0 -1
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs +0 -25
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs +0 -134
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.mjs +0 -191
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/external-store/ThreadMessageConverter.mjs +0 -16
- package/dist/runtimes/external-store/ThreadMessageConverter.mjs.map +0 -1
- package/dist/runtimes/external-store/ThreadMessageLike.mjs +0 -111
- package/dist/runtimes/external-store/ThreadMessageLike.mjs.map +0 -1
- package/dist/runtimes/external-store/auto-status.mjs +0 -13
- package/dist/runtimes/external-store/auto-status.mjs.map +0 -1
- package/dist/runtimes/external-store/createMessageConverter.mjs +0 -52
- package/dist/runtimes/external-store/createMessageConverter.mjs.map +0 -1
- package/dist/runtimes/external-store/external-message-converter.mjs +0 -238
- package/dist/runtimes/external-store/external-message-converter.mjs.map +0 -1
- package/dist/runtimes/external-store/getExternalStoreMessage.mjs +0 -24
- package/dist/runtimes/external-store/getExternalStoreMessage.mjs.map +0 -1
- package/dist/runtimes/external-store/index.mjs +0 -20
- package/dist/runtimes/external-store/index.mjs.map +0 -1
- package/dist/runtimes/external-store/useExternalStoreRuntime.mjs +0 -23
- package/dist/runtimes/external-store/useExternalStoreRuntime.mjs.map +0 -1
- package/dist/runtimes/index.mjs +0 -11
- package/dist/runtimes/index.mjs.map +0 -1
- package/dist/runtimes/local/ChatModelAdapter.mjs +0 -1
- package/dist/runtimes/local/ChatModelAdapter.mjs.map +0 -1
- package/dist/runtimes/local/LocalRuntimeCore.mjs +0 -24
- package/dist/runtimes/local/LocalRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/local/LocalRuntimeOptions.mjs +0 -25
- package/dist/runtimes/local/LocalRuntimeOptions.mjs.map +0 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs +0 -72
- package/dist/runtimes/local/LocalThreadListRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +0 -309
- package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/local/index.mjs +0 -6
- package/dist/runtimes/local/index.mjs.map +0 -1
- package/dist/runtimes/local/shouldContinue.mjs +0 -13
- package/dist/runtimes/local/shouldContinue.mjs.map +0 -1
- package/dist/runtimes/local/useLocalRuntime.mjs +0 -46
- package/dist/runtimes/local/useLocalRuntime.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/BaseSubscribable.mjs +0 -37
- package/dist/runtimes/remote-thread-list/BaseSubscribable.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.mjs +0 -128
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/OptimisticState.mjs +0 -60
- package/dist/runtimes/remote-thread-list/OptimisticState.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs +0 -128
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs +0 -431
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/adapter/cloud.mjs +0 -83
- package/dist/runtimes/remote-thread-list/adapter/cloud.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/adapter/in-memory.mjs +0 -30
- package/dist/runtimes/remote-thread-list/adapter/in-memory.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/index.mjs +0 -8
- package/dist/runtimes/remote-thread-list/index.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/types.mjs +0 -1
- package/dist/runtimes/remote-thread-list/types.mjs.map +0 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs +0 -32
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs.map +0 -1
- package/dist/runtimes/utils/MessageRepository.mjs +0 -345
- package/dist/runtimes/utils/MessageRepository.mjs.map +0 -1
- package/dist/tests/MessageRepository.test.d.ts +0 -2
- package/dist/tests/MessageRepository.test.d.ts.map +0 -1
- package/dist/tests/setup.mjs +0 -2974
- package/dist/tests/setup.mjs.map +0 -1
- package/dist/types/AssistantTypes.mjs +0 -1
- package/dist/types/AssistantTypes.mjs.map +0 -1
- package/dist/types/AttachmentTypes.mjs +0 -1
- package/dist/types/AttachmentTypes.mjs.map +0 -1
- package/dist/types/ContentPartComponentTypes.mjs +0 -1
- package/dist/types/ContentPartComponentTypes.mjs.map +0 -1
- package/dist/types/Unsubscribe.mjs +0 -1
- package/dist/types/Unsubscribe.mjs.map +0 -1
- package/dist/types/index.mjs +0 -1
- package/dist/types/index.mjs.map +0 -1
- package/dist/utils/CompositeContextProvider.mjs +0 -34
- package/dist/utils/CompositeContextProvider.mjs.map +0 -1
- package/dist/utils/RequireAtLeastOne.mjs +0 -1
- package/dist/utils/RequireAtLeastOne.mjs.map +0 -1
- package/dist/utils/combined/createCombinedStore.mjs +0 -22
- package/dist/utils/combined/createCombinedStore.mjs.map +0 -1
- package/dist/utils/combined/useCombinedStore.mjs +0 -15
- package/dist/utils/combined/useCombinedStore.mjs.map +0 -1
- package/dist/utils/createActionButton.mjs +0 -37
- package/dist/utils/createActionButton.mjs.map +0 -1
- package/dist/utils/getThreadMessageText.mjs +0 -11
- package/dist/utils/getThreadMessageText.mjs.map +0 -1
- package/dist/utils/hooks/useManagedRef.mjs +0 -21
- package/dist/utils/hooks/useManagedRef.mjs.map +0 -1
- package/dist/utils/hooks/useOnResizeContent.mjs +0 -34
- package/dist/utils/hooks/useOnResizeContent.mjs.map +0 -1
- package/dist/utils/hooks/useOnScrollToBottom.mjs +0 -17
- package/dist/utils/hooks/useOnScrollToBottom.mjs.map +0 -1
- package/dist/utils/idUtils.mjs +0 -15
- package/dist/utils/idUtils.mjs.map +0 -1
- package/dist/utils/json/is-json.mjs +0 -35
- package/dist/utils/json/is-json.mjs.map +0 -1
- package/dist/utils/json/json-value.mjs +0 -1
- package/dist/utils/json/json-value.mjs.map +0 -1
- package/dist/utils/smooth/SmoothContext.mjs +0 -53
- package/dist/utils/smooth/SmoothContext.mjs.map +0 -1
- package/dist/utils/smooth/index.mjs +0 -11
- package/dist/utils/smooth/index.mjs.map +0 -1
- package/dist/utils/smooth/useSmooth.mjs +0 -114
- package/dist/utils/smooth/useSmooth.mjs.map +0 -1
- package/dist/utils/useToolArgsFieldStatus.mjs +0 -20
- package/dist/utils/useToolArgsFieldStatus.mjs.map +0 -1
@@ -1,43 +1,27 @@
|
|
1
|
-
"use strict";
|
2
1
|
"use client";
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
};
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
};
|
19
|
-
|
20
|
-
|
21
|
-
// src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx
|
22
|
-
var RemoteThreadListHookInstanceManager_exports = {};
|
23
|
-
__export(RemoteThreadListHookInstanceManager_exports, {
|
24
|
-
RemoteThreadListHookInstanceManager: () => RemoteThreadListHookInstanceManager
|
25
|
-
});
|
26
|
-
module.exports = __toCommonJS(RemoteThreadListHookInstanceManager_exports);
|
27
|
-
var import_react = require("react");
|
28
|
-
var import_zustand = require("zustand");
|
29
|
-
var import_context = require("../../context/index.js");
|
30
|
-
var import_ThreadListItemRuntimeProvider = require("../../context/providers/ThreadListItemRuntimeProvider.js");
|
31
|
-
var import_ThreadListItemContext = require("../../context/react/ThreadListItemContext.js");
|
32
|
-
var import_BaseSubscribable = require("./BaseSubscribable.js");
|
33
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
34
|
-
var RemoteThreadListHookInstanceManager = class extends import_BaseSubscribable.BaseSubscribable {
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
3
|
+
import {
|
4
|
+
useCallback,
|
5
|
+
useRef,
|
6
|
+
useEffect,
|
7
|
+
memo,
|
8
|
+
useMemo
|
9
|
+
} from "react";
|
10
|
+
import { create } from "zustand";
|
11
|
+
import { useAssistantRuntime } from "../../context";
|
12
|
+
import { ThreadListItemRuntimeProvider } from "../../context/providers/ThreadListItemRuntimeProvider";
|
13
|
+
import {
|
14
|
+
useThreadListItem,
|
15
|
+
useThreadListItemRuntime
|
16
|
+
} from "../../context/react/ThreadListItemContext";
|
17
|
+
import { BaseSubscribable } from "./BaseSubscribable";
|
18
|
+
class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
35
19
|
useRuntimeHook;
|
36
20
|
instances = /* @__PURE__ */ new Map();
|
37
|
-
useAliveThreadsKeysChanged =
|
21
|
+
useAliveThreadsKeysChanged = create(() => ({}));
|
38
22
|
constructor(runtimeHook) {
|
39
23
|
super();
|
40
|
-
this.useRuntimeHook =
|
24
|
+
this.useRuntimeHook = create(() => ({ useRuntime: runtimeHook }));
|
41
25
|
}
|
42
26
|
startThreadRuntime(threadId) {
|
43
27
|
if (!this.instances.has(threadId)) {
|
@@ -80,11 +64,11 @@ var RemoteThreadListHookInstanceManager = class extends import_BaseSubscribable.
|
|
80
64
|
}
|
81
65
|
}
|
82
66
|
_InnerActiveThreadProvider = () => {
|
83
|
-
const { id } =
|
67
|
+
const { id } = useThreadListItem();
|
84
68
|
const { useRuntime } = this.useRuntimeHook();
|
85
69
|
const runtime = useRuntime();
|
86
70
|
const threadBinding = runtime.thread.__internal_threadBinding;
|
87
|
-
const updateRuntime =
|
71
|
+
const updateRuntime = useCallback(() => {
|
88
72
|
const aliveThread = this.instances.get(id);
|
89
73
|
if (!aliveThread)
|
90
74
|
throw new Error("Thread not found. This is a bug in assistant-ui.");
|
@@ -93,17 +77,17 @@ var RemoteThreadListHookInstanceManager = class extends import_BaseSubscribable.
|
|
93
77
|
this._notifySubscribers();
|
94
78
|
}
|
95
79
|
}, [id, threadBinding]);
|
96
|
-
const isMounted =
|
80
|
+
const isMounted = useRef(false);
|
97
81
|
if (!isMounted.current) {
|
98
82
|
updateRuntime();
|
99
83
|
}
|
100
|
-
|
84
|
+
useEffect(() => {
|
101
85
|
isMounted.current = true;
|
102
86
|
updateRuntime();
|
103
87
|
return threadBinding.outerSubscribe(updateRuntime);
|
104
88
|
}, [threadBinding, updateRuntime]);
|
105
|
-
const threadListItemRuntime =
|
106
|
-
|
89
|
+
const threadListItemRuntime = useThreadListItemRuntime();
|
90
|
+
useEffect(() => {
|
107
91
|
return runtime.threads.main.unstable_on("initialize", () => {
|
108
92
|
if (threadListItemRuntime.getState().status === "new") {
|
109
93
|
threadListItemRuntime.initialize();
|
@@ -116,17 +100,17 @@ var RemoteThreadListHookInstanceManager = class extends import_BaseSubscribable.
|
|
116
100
|
}, [runtime, threadListItemRuntime]);
|
117
101
|
return null;
|
118
102
|
};
|
119
|
-
_OuterActiveThreadProvider =
|
120
|
-
const assistantRuntime =
|
121
|
-
const threadListItemRuntime =
|
103
|
+
_OuterActiveThreadProvider = memo(({ threadId, provider: Provider }) => {
|
104
|
+
const assistantRuntime = useAssistantRuntime();
|
105
|
+
const threadListItemRuntime = useMemo(
|
122
106
|
() => assistantRuntime.threads.getItemById(threadId),
|
123
107
|
[assistantRuntime, threadId]
|
124
108
|
);
|
125
|
-
return /* @__PURE__ */
|
109
|
+
return /* @__PURE__ */ jsx(ThreadListItemRuntimeProvider, { runtime: threadListItemRuntime, children: /* @__PURE__ */ jsx(Provider, { children: /* @__PURE__ */ jsx(this._InnerActiveThreadProvider, {}) }) });
|
126
110
|
});
|
127
111
|
__internal_RenderThreadRuntimes = ({ provider }) => {
|
128
112
|
this.useAliveThreadsKeysChanged();
|
129
|
-
return Array.from(this.instances.keys()).map((threadId) => /* @__PURE__ */
|
113
|
+
return Array.from(this.instances.keys()).map((threadId) => /* @__PURE__ */ jsx(
|
130
114
|
this._OuterActiveThreadProvider,
|
131
115
|
{
|
132
116
|
threadId,
|
@@ -135,9 +119,8 @@ var RemoteThreadListHookInstanceManager = class extends import_BaseSubscribable.
|
|
135
119
|
threadId
|
136
120
|
));
|
137
121
|
};
|
138
|
-
}
|
139
|
-
|
140
|
-
0 && (module.exports = {
|
122
|
+
}
|
123
|
+
export {
|
141
124
|
RemoteThreadListHookInstanceManager
|
142
|
-
}
|
125
|
+
};
|
143
126
|
//# sourceMappingURL=RemoteThreadListHookInstanceManager.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n FC,\n useCallback,\n useRef,\n useEffect,\n memo,\n useMemo,\n PropsWithChildren,\n ComponentType,\n} from \"react\";\nimport { UseBoundStore, StoreApi, create } from \"zustand\";\nimport { useAssistantRuntime } from \"../../context\";\nimport { ThreadListItemRuntimeProvider } from \"../../context/providers/ThreadListItemRuntimeProvider\";\nimport {\n useThreadListItem,\n useThreadListItemRuntime,\n} from \"../../context/react/ThreadListItemContext\";\nimport { ThreadRuntimeCore, ThreadRuntimeImpl } from \"../../internal\";\nimport { BaseSubscribable } from \"./BaseSubscribable\";\nimport { AssistantRuntime } from \"../../api\";\n\ntype RemoteThreadListHook = () => AssistantRuntime;\n\ntype RemoteThreadListHookInstance = {\n runtime?: ThreadRuntimeCore;\n};\nexport class RemoteThreadListHookInstanceManager extends BaseSubscribable {\n private useRuntimeHook: UseBoundStore<\n StoreApi<{ useRuntime: RemoteThreadListHook }>\n >;\n private instances = new Map<string, RemoteThreadListHookInstance>();\n private useAliveThreadsKeysChanged = create(() => ({}));\n\n constructor(runtimeHook: RemoteThreadListHook) {\n super();\n this.useRuntimeHook = create(() => ({ useRuntime: runtimeHook }));\n }\n\n public startThreadRuntime(threadId: string) {\n if (!this.instances.has(threadId)) {\n this.instances.set(threadId, {});\n this.useAliveThreadsKeysChanged.setState({}, true);\n }\n\n return new Promise<ThreadRuntimeCore>((resolve, reject) => {\n const callback = () => {\n const instance = this.instances.get(threadId);\n if (!instance) {\n dispose();\n reject(new Error(\"Thread was deleted before runtime was started\"));\n } else if (!instance.runtime) {\n return; // misc update\n } else {\n dispose();\n resolve(instance.runtime);\n }\n };\n const dispose = this.subscribe(callback);\n callback();\n });\n }\n\n public getThreadRuntimeCore(threadId: string) {\n const instance = this.instances.get(threadId);\n if (!instance)\n throw new Error(\n \"getThreadRuntimeCore not found. This is a bug in assistant-ui.\",\n );\n return instance.runtime;\n }\n\n public stopThreadRuntime(threadId: string) {\n this.instances.delete(threadId);\n this.useAliveThreadsKeysChanged.setState({}, true);\n }\n\n public setRuntimeHook(newRuntimeHook: RemoteThreadListHook) {\n const prevRuntimeHook = this.useRuntimeHook.getState().useRuntime;\n if (prevRuntimeHook !== newRuntimeHook) {\n this.useRuntimeHook.setState({ useRuntime: newRuntimeHook }, true);\n }\n }\n\n private _InnerActiveThreadProvider: FC = () => {\n const { id } = useThreadListItem();\n\n const { useRuntime } = this.useRuntimeHook();\n const runtime = useRuntime();\n\n const threadBinding = (runtime.thread as ThreadRuntimeImpl)\n .__internal_threadBinding;\n\n const updateRuntime = useCallback(() => {\n const aliveThread = this.instances.get(id);\n if (!aliveThread)\n throw new Error(\"Thread not found. This is a bug in assistant-ui.\");\n\n aliveThread.runtime = threadBinding.getState();\n\n if (isMounted) {\n this._notifySubscribers();\n }\n }, [id, threadBinding]);\n\n const isMounted = useRef(false);\n if (!isMounted.current) {\n updateRuntime();\n }\n\n useEffect(() => {\n isMounted.current = true;\n updateRuntime();\n return threadBinding.outerSubscribe(updateRuntime);\n }, [threadBinding, updateRuntime]);\n\n // auto initialize thread\n const threadListItemRuntime = useThreadListItemRuntime();\n useEffect(() => {\n return runtime.threads.main.unstable_on(\"initialize\", () => {\n if (threadListItemRuntime.getState().status === \"new\") {\n threadListItemRuntime.initialize();\n\n // auto generate a title after first run\n const dispose = runtime.thread.unstable_on(\"run-end\", () => {\n dispose();\n\n threadListItemRuntime.generateTitle();\n });\n }\n });\n }, [runtime, threadListItemRuntime]);\n\n return null;\n };\n\n private _OuterActiveThreadProvider: FC<{\n threadId: string;\n provider: ComponentType<PropsWithChildren>;\n }> = memo(({ threadId, provider: Provider }) => {\n const assistantRuntime = useAssistantRuntime();\n const threadListItemRuntime = useMemo(\n () => assistantRuntime.threads.getItemById(threadId),\n [assistantRuntime, threadId],\n );\n\n return (\n <ThreadListItemRuntimeProvider runtime={threadListItemRuntime}>\n <Provider>\n <this._InnerActiveThreadProvider />\n </Provider>\n </ThreadListItemRuntimeProvider>\n );\n });\n\n public __internal_RenderThreadRuntimes: FC<{\n provider: ComponentType<PropsWithChildren>;\n }> = ({ provider }) => {\n this.useAliveThreadsKeysChanged(); // trigger re-render on alive threads change\n\n return Array.from(this.instances.keys()).map((threadId) => (\n <this._OuterActiveThreadProvider\n key={threadId}\n threadId={threadId}\n provider={provider}\n />\n ));\n };\n}\n"],"mappings":"
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n FC,\n useCallback,\n useRef,\n useEffect,\n memo,\n useMemo,\n PropsWithChildren,\n ComponentType,\n} from \"react\";\nimport { UseBoundStore, StoreApi, create } from \"zustand\";\nimport { useAssistantRuntime } from \"../../context\";\nimport { ThreadListItemRuntimeProvider } from \"../../context/providers/ThreadListItemRuntimeProvider\";\nimport {\n useThreadListItem,\n useThreadListItemRuntime,\n} from \"../../context/react/ThreadListItemContext\";\nimport { ThreadRuntimeCore, ThreadRuntimeImpl } from \"../../internal\";\nimport { BaseSubscribable } from \"./BaseSubscribable\";\nimport { AssistantRuntime } from \"../../api\";\n\ntype RemoteThreadListHook = () => AssistantRuntime;\n\ntype RemoteThreadListHookInstance = {\n runtime?: ThreadRuntimeCore;\n};\nexport class RemoteThreadListHookInstanceManager extends BaseSubscribable {\n private useRuntimeHook: UseBoundStore<\n StoreApi<{ useRuntime: RemoteThreadListHook }>\n >;\n private instances = new Map<string, RemoteThreadListHookInstance>();\n private useAliveThreadsKeysChanged = create(() => ({}));\n\n constructor(runtimeHook: RemoteThreadListHook) {\n super();\n this.useRuntimeHook = create(() => ({ useRuntime: runtimeHook }));\n }\n\n public startThreadRuntime(threadId: string) {\n if (!this.instances.has(threadId)) {\n this.instances.set(threadId, {});\n this.useAliveThreadsKeysChanged.setState({}, true);\n }\n\n return new Promise<ThreadRuntimeCore>((resolve, reject) => {\n const callback = () => {\n const instance = this.instances.get(threadId);\n if (!instance) {\n dispose();\n reject(new Error(\"Thread was deleted before runtime was started\"));\n } else if (!instance.runtime) {\n return; // misc update\n } else {\n dispose();\n resolve(instance.runtime);\n }\n };\n const dispose = this.subscribe(callback);\n callback();\n });\n }\n\n public getThreadRuntimeCore(threadId: string) {\n const instance = this.instances.get(threadId);\n if (!instance)\n throw new Error(\n \"getThreadRuntimeCore not found. This is a bug in assistant-ui.\",\n );\n return instance.runtime;\n }\n\n public stopThreadRuntime(threadId: string) {\n this.instances.delete(threadId);\n this.useAliveThreadsKeysChanged.setState({}, true);\n }\n\n public setRuntimeHook(newRuntimeHook: RemoteThreadListHook) {\n const prevRuntimeHook = this.useRuntimeHook.getState().useRuntime;\n if (prevRuntimeHook !== newRuntimeHook) {\n this.useRuntimeHook.setState({ useRuntime: newRuntimeHook }, true);\n }\n }\n\n private _InnerActiveThreadProvider: FC = () => {\n const { id } = useThreadListItem();\n\n const { useRuntime } = this.useRuntimeHook();\n const runtime = useRuntime();\n\n const threadBinding = (runtime.thread as ThreadRuntimeImpl)\n .__internal_threadBinding;\n\n const updateRuntime = useCallback(() => {\n const aliveThread = this.instances.get(id);\n if (!aliveThread)\n throw new Error(\"Thread not found. This is a bug in assistant-ui.\");\n\n aliveThread.runtime = threadBinding.getState();\n\n if (isMounted) {\n this._notifySubscribers();\n }\n }, [id, threadBinding]);\n\n const isMounted = useRef(false);\n if (!isMounted.current) {\n updateRuntime();\n }\n\n useEffect(() => {\n isMounted.current = true;\n updateRuntime();\n return threadBinding.outerSubscribe(updateRuntime);\n }, [threadBinding, updateRuntime]);\n\n // auto initialize thread\n const threadListItemRuntime = useThreadListItemRuntime();\n useEffect(() => {\n return runtime.threads.main.unstable_on(\"initialize\", () => {\n if (threadListItemRuntime.getState().status === \"new\") {\n threadListItemRuntime.initialize();\n\n // auto generate a title after first run\n const dispose = runtime.thread.unstable_on(\"run-end\", () => {\n dispose();\n\n threadListItemRuntime.generateTitle();\n });\n }\n });\n }, [runtime, threadListItemRuntime]);\n\n return null;\n };\n\n private _OuterActiveThreadProvider: FC<{\n threadId: string;\n provider: ComponentType<PropsWithChildren>;\n }> = memo(({ threadId, provider: Provider }) => {\n const assistantRuntime = useAssistantRuntime();\n const threadListItemRuntime = useMemo(\n () => assistantRuntime.threads.getItemById(threadId),\n [assistantRuntime, threadId],\n );\n\n return (\n <ThreadListItemRuntimeProvider runtime={threadListItemRuntime}>\n <Provider>\n <this._InnerActiveThreadProvider />\n </Provider>\n </ThreadListItemRuntimeProvider>\n );\n });\n\n public __internal_RenderThreadRuntimes: FC<{\n provider: ComponentType<PropsWithChildren>;\n }> = ({ provider }) => {\n this.useAliveThreadsKeysChanged(); // trigger re-render on alive threads change\n\n return Array.from(this.instances.keys()).map((threadId) => (\n <this._OuterActiveThreadProvider\n key={threadId}\n threadId={threadId}\n provider={provider}\n />\n ));\n };\n}\n"],"mappings":"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","names":[]}
|
@@ -1,48 +1,23 @@
|
|
1
|
-
"use strict";
|
2
1
|
"use client";
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
};
|
11
|
-
|
12
|
-
|
13
|
-
for (let key of __getOwnPropNames(from))
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
16
|
-
}
|
17
|
-
return to;
|
18
|
-
};
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
20
|
-
|
21
|
-
// src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx
|
22
|
-
var RemoteThreadListThreadListRuntimeCore_exports = {};
|
23
|
-
__export(RemoteThreadListThreadListRuntimeCore_exports, {
|
24
|
-
RemoteThreadListThreadListRuntimeCore: () => RemoteThreadListThreadListRuntimeCore
|
25
|
-
});
|
26
|
-
module.exports = __toCommonJS(RemoteThreadListThreadListRuntimeCore_exports);
|
27
|
-
var import_internal = require("../../internal.js");
|
28
|
-
var import_RemoteThreadListHookInstanceManager = require("./RemoteThreadListHookInstanceManager.js");
|
29
|
-
var import_BaseSubscribable = require("./BaseSubscribable.js");
|
30
|
-
var import_EMPTY_THREAD_CORE = require("./EMPTY_THREAD_CORE.js");
|
31
|
-
var import_OptimisticState = require("./OptimisticState.js");
|
32
|
-
var import_react = require("react");
|
33
|
-
var import_zustand = require("zustand");
|
34
|
-
var import_assistant_stream = require("assistant-stream");
|
35
|
-
var import_RuntimeAdapterProvider = require("../adapters/RuntimeAdapterProvider.js");
|
36
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
3
|
+
import { generateId } from "../../internal";
|
4
|
+
import { RemoteThreadListHookInstanceManager } from "./RemoteThreadListHookInstanceManager";
|
5
|
+
import { BaseSubscribable } from "./BaseSubscribable";
|
6
|
+
import { EMPTY_THREAD_CORE } from "./EMPTY_THREAD_CORE";
|
7
|
+
import { OptimisticState } from "./OptimisticState";
|
8
|
+
import { Fragment, useEffect, useId } from "react";
|
9
|
+
import { create } from "zustand";
|
10
|
+
import { AssistantMessageStream } from "assistant-stream";
|
11
|
+
import { RuntimeAdapterProvider } from "../adapters/RuntimeAdapterProvider";
|
37
12
|
function createThreadMappingId(id) {
|
38
13
|
return id;
|
39
14
|
}
|
40
|
-
|
15
|
+
const getThreadData = (state, threadIdOrRemoteId) => {
|
41
16
|
const idx = state.threadIdMap[threadIdOrRemoteId];
|
42
17
|
if (idx === void 0) return void 0;
|
43
18
|
return state.threadData[idx];
|
44
19
|
};
|
45
|
-
|
20
|
+
const updateStatusReducer = (state, threadIdOrRemoteId, newStatus) => {
|
46
21
|
const data = getThreadData(state, threadIdOrRemoteId);
|
47
22
|
if (!data) return state;
|
48
23
|
const { threadId, remoteId, status: lastStatus } = data;
|
@@ -98,16 +73,16 @@ var updateStatusReducer = (state, threadIdOrRemoteId, newStatus) => {
|
|
98
73
|
}
|
99
74
|
return newState;
|
100
75
|
};
|
101
|
-
|
76
|
+
class RemoteThreadListThreadListRuntimeCore extends BaseSubscribable {
|
102
77
|
constructor(options, contextProvider) {
|
103
78
|
super();
|
104
79
|
this.contextProvider = contextProvider;
|
105
80
|
this._state.subscribe(() => this._notifySubscribers());
|
106
|
-
this._hookManager = new
|
81
|
+
this._hookManager = new RemoteThreadListHookInstanceManager(
|
107
82
|
options.runtimeHook
|
108
83
|
);
|
109
|
-
this.useProvider =
|
110
|
-
Provider: options.adapter.unstable_Provider ??
|
84
|
+
this.useProvider = create(() => ({
|
85
|
+
Provider: options.adapter.unstable_Provider ?? Fragment
|
111
86
|
}));
|
112
87
|
this.__internal_setOptions(options);
|
113
88
|
this.switchToNewThread();
|
@@ -116,7 +91,7 @@ var RemoteThreadListThreadListRuntimeCore = class extends import_BaseSubscribabl
|
|
116
91
|
_hookManager;
|
117
92
|
_loadThreadsPromise;
|
118
93
|
_mainThreadId;
|
119
|
-
_state = new
|
94
|
+
_state = new OptimisticState({
|
120
95
|
isLoading: false,
|
121
96
|
newThreadId: void 0,
|
122
97
|
threadIds: [],
|
@@ -189,7 +164,7 @@ var RemoteThreadListThreadListRuntimeCore = class extends import_BaseSubscribabl
|
|
189
164
|
__internal_setOptions(options) {
|
190
165
|
if (this._options === options) return;
|
191
166
|
this._options = options;
|
192
|
-
const Provider = options.adapter.unstable_Provider ??
|
167
|
+
const Provider = options.adapter.unstable_Provider ?? Fragment;
|
193
168
|
if (Provider !== this.useProvider.getState().Provider) {
|
194
169
|
this.useProvider.setState({ Provider }, true);
|
195
170
|
}
|
@@ -212,7 +187,7 @@ var RemoteThreadListThreadListRuntimeCore = class extends import_BaseSubscribabl
|
|
212
187
|
}
|
213
188
|
getMainThreadRuntimeCore() {
|
214
189
|
const result = this._hookManager.getThreadRuntimeCore(this._mainThreadId);
|
215
|
-
if (!result) return
|
190
|
+
if (!result) return EMPTY_THREAD_CORE;
|
216
191
|
return result;
|
217
192
|
}
|
218
193
|
getThreadRuntimeCore(threadIdOrRemoteId) {
|
@@ -247,7 +222,7 @@ var RemoteThreadListThreadListRuntimeCore = class extends import_BaseSubscribabl
|
|
247
222
|
let threadId = this._state.value.newThreadId;
|
248
223
|
if (threadId === void 0) {
|
249
224
|
do {
|
250
|
-
threadId = `__LOCALID_${
|
225
|
+
threadId = `__LOCALID_${generateId()}`;
|
251
226
|
} while (state.threadIdMap[threadId]);
|
252
227
|
const mappingId = createThreadMappingId(threadId);
|
253
228
|
this._state.update({
|
@@ -328,7 +303,7 @@ var RemoteThreadListThreadListRuntimeCore = class extends import_BaseSubscribabl
|
|
328
303
|
remoteId,
|
329
304
|
messages
|
330
305
|
);
|
331
|
-
const messageStream =
|
306
|
+
const messageStream = AssistantMessageStream.fromAssistantStream(stream);
|
332
307
|
for await (const result of messageStream) {
|
333
308
|
const newTitle = result.parts.filter((c) => c.type === "text")[0]?.text;
|
334
309
|
const state = this._state.baseValue;
|
@@ -425,10 +400,10 @@ var RemoteThreadListThreadListRuntimeCore = class extends import_BaseSubscribabl
|
|
425
400
|
}
|
426
401
|
});
|
427
402
|
}
|
428
|
-
useBoundIds =
|
403
|
+
useBoundIds = create(() => []);
|
429
404
|
__internal_RenderComponent = () => {
|
430
|
-
const id =
|
431
|
-
|
405
|
+
const id = useId();
|
406
|
+
useEffect(() => {
|
432
407
|
this.useBoundIds.setState((s) => [...s, id], true);
|
433
408
|
return () => {
|
434
409
|
this.useBoundIds.setState((s) => s.filter((i) => i !== id), true);
|
@@ -440,16 +415,15 @@ var RemoteThreadListThreadListRuntimeCore = class extends import_BaseSubscribabl
|
|
440
415
|
modelContext: this.contextProvider
|
441
416
|
};
|
442
417
|
return (boundIds.length === 0 || boundIds[0] === id) && // only render if the component is the first one mounted
|
443
|
-
/* @__PURE__ */
|
418
|
+
/* @__PURE__ */ jsx(RuntimeAdapterProvider, { adapters, children: /* @__PURE__ */ jsx(
|
444
419
|
this._hookManager.__internal_RenderThreadRuntimes,
|
445
420
|
{
|
446
421
|
provider: Provider
|
447
422
|
}
|
448
423
|
) });
|
449
424
|
};
|
450
|
-
}
|
451
|
-
|
452
|
-
0 && (module.exports = {
|
425
|
+
}
|
426
|
+
export {
|
453
427
|
RemoteThreadListThreadListRuntimeCore
|
454
|
-
}
|
428
|
+
};
|
455
429
|
//# sourceMappingURL=RemoteThreadListThreadListRuntimeCore.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx"],"sourcesContent":["\"use client\";\n\nimport { ThreadListRuntimeCore } from \"../core/ThreadListRuntimeCore\";\nimport { generateId } from \"../../internal\";\nimport {\n RemoteThreadInitializeResponse,\n RemoteThreadListOptions,\n} from \"./types\";\nimport { RemoteThreadListHookInstanceManager } from \"./RemoteThreadListHookInstanceManager\";\nimport { BaseSubscribable } from \"./BaseSubscribable\";\nimport { EMPTY_THREAD_CORE } from \"./EMPTY_THREAD_CORE\";\nimport { OptimisticState } from \"./OptimisticState\";\nimport { FC, Fragment, useEffect, useId } from \"react\";\nimport { create } from \"zustand\";\nimport { AssistantMessageStream } from \"assistant-stream\";\nimport { ModelContextProvider } from \"../../model-context\";\nimport { RuntimeAdapterProvider } from \"../adapters/RuntimeAdapterProvider\";\n\ntype RemoteThreadData =\n | {\n readonly threadId: string;\n readonly remoteId?: undefined;\n readonly externalId?: undefined;\n readonly status: \"new\";\n readonly title: undefined;\n }\n | {\n readonly threadId: string;\n readonly initializeTask: Promise<RemoteThreadInitializeResponse>;\n readonly remoteId?: undefined;\n readonly externalId?: undefined;\n readonly status: \"regular\" | \"archived\";\n readonly title?: string | undefined;\n }\n | {\n readonly threadId: string;\n readonly initializeTask: Promise<RemoteThreadInitializeResponse>;\n readonly remoteId: string;\n readonly externalId: string | undefined;\n readonly status: \"regular\" | \"archived\";\n readonly title?: string | undefined;\n };\n\ntype THREAD_MAPPING_ID = string & { __brand: \"THREAD_MAPPING_ID\" };\nfunction createThreadMappingId(id: string): THREAD_MAPPING_ID {\n return id as THREAD_MAPPING_ID;\n}\n\ntype RemoteThreadState = {\n readonly isLoading: boolean;\n readonly newThreadId: string | undefined;\n readonly threadIds: readonly string[];\n readonly archivedThreadIds: readonly string[];\n readonly threadIdMap: Readonly<Record<string, THREAD_MAPPING_ID>>;\n readonly threadData: Readonly<Record<THREAD_MAPPING_ID, RemoteThreadData>>;\n};\n\nconst getThreadData = (\n state: RemoteThreadState,\n threadIdOrRemoteId: string,\n) => {\n const idx = state.threadIdMap[threadIdOrRemoteId];\n if (idx === undefined) return undefined;\n return state.threadData[idx];\n};\n\nconst updateStatusReducer = (\n state: RemoteThreadState,\n threadIdOrRemoteId: string,\n newStatus: \"regular\" | \"archived\" | \"deleted\",\n) => {\n const data = getThreadData(state, threadIdOrRemoteId);\n if (!data) return state;\n\n const { threadId, remoteId, status: lastStatus } = data;\n if (lastStatus === newStatus) return state;\n\n const newState = { ...state };\n\n // lastStatus\n switch (lastStatus) {\n case \"new\":\n newState.newThreadId = undefined;\n break;\n case \"regular\":\n newState.threadIds = newState.threadIds.filter((t) => t !== threadId);\n break;\n case \"archived\":\n newState.archivedThreadIds = newState.archivedThreadIds.filter(\n (t) => t !== threadId,\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = lastStatus;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n // newStatus\n switch (newStatus) {\n case \"regular\":\n newState.threadIds = [threadId, ...newState.threadIds];\n break;\n\n case \"archived\":\n newState.archivedThreadIds = [threadId, ...newState.archivedThreadIds];\n break;\n\n case \"deleted\":\n newState.threadData = Object.fromEntries(\n Object.entries(newState.threadData).filter(([key]) => key !== threadId),\n );\n newState.threadIdMap = Object.fromEntries(\n Object.entries(newState.threadIdMap).filter(\n ([key]) => key !== threadId && key !== remoteId,\n ),\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = newStatus;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n if (newStatus !== \"deleted\") {\n newState.threadData = {\n ...newState.threadData,\n [threadId]: {\n ...data,\n status: newStatus,\n },\n };\n }\n\n return newState;\n};\n\nexport class RemoteThreadListThreadListRuntimeCore\n extends BaseSubscribable\n implements ThreadListRuntimeCore\n{\n private _options!: RemoteThreadListOptions;\n private readonly _hookManager: RemoteThreadListHookInstanceManager;\n\n private _loadThreadsPromise: Promise<void> | undefined;\n\n private _mainThreadId!: string;\n private readonly _state = new OptimisticState<RemoteThreadState>({\n isLoading: false,\n newThreadId: undefined,\n threadIds: [],\n archivedThreadIds: [],\n threadIdMap: {},\n threadData: {},\n });\n\n public getLoadThreadsPromise() {\n // TODO this needs to be cached in case this promise is loaded during suspense\n if (!this._loadThreadsPromise) {\n this._loadThreadsPromise = this._state\n .optimisticUpdate({\n execute: () => this._options.adapter.list(),\n loading: (state) => {\n return {\n ...state,\n isLoading: true,\n };\n },\n then: (state, l) => {\n const newThreadIds = [];\n const newArchivedThreadIds = [];\n const newThreadIdMap = {} as Record<string, THREAD_MAPPING_ID>;\n const newThreadData = {} as Record<\n THREAD_MAPPING_ID,\n RemoteThreadData\n >;\n\n for (const thread of l.threads) {\n switch (thread.status) {\n case \"regular\":\n newThreadIds.push(thread.remoteId);\n break;\n case \"archived\":\n newArchivedThreadIds.push(thread.remoteId);\n break;\n default: {\n const _exhaustiveCheck: never = thread.status;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n const mappingId = createThreadMappingId(thread.remoteId);\n newThreadIdMap[thread.remoteId] = mappingId;\n newThreadData[mappingId] = {\n threadId: thread.remoteId,\n remoteId: thread.remoteId,\n externalId: thread.externalId,\n status: thread.status,\n title: thread.title,\n initializeTask: Promise.resolve({\n remoteId: thread.remoteId,\n externalId: thread.externalId,\n }),\n };\n }\n\n return {\n ...state,\n threadIds: newThreadIds,\n archivedThreadIds: newArchivedThreadIds,\n threadIdMap: {\n ...state.threadIdMap,\n ...newThreadIdMap,\n },\n threadData: {\n ...state.threadData,\n ...newThreadData,\n },\n };\n },\n })\n .then(() => {});\n }\n\n return this._loadThreadsPromise;\n }\n\n constructor(\n options: RemoteThreadListOptions,\n private readonly contextProvider: ModelContextProvider,\n ) {\n super();\n\n this._state.subscribe(() => this._notifySubscribers());\n this._hookManager = new RemoteThreadListHookInstanceManager(\n options.runtimeHook,\n );\n this.useProvider = create(() => ({\n Provider: options.adapter.unstable_Provider ?? Fragment,\n }));\n this.__internal_setOptions(options);\n\n this.switchToNewThread();\n }\n\n private useProvider;\n\n public __internal_setOptions(options: RemoteThreadListOptions) {\n if (this._options === options) return;\n\n this._options = options;\n\n const Provider = options.adapter.unstable_Provider ?? Fragment;\n if (Provider !== this.useProvider.getState().Provider) {\n this.useProvider.setState({ Provider }, true);\n }\n\n this._hookManager.setRuntimeHook(options.runtimeHook);\n }\n\n public __internal_load() {\n this.getLoadThreadsPromise(); // begin loading on initial bind\n }\n\n public get threadIds() {\n return this._state.value.threadIds;\n }\n\n public get archivedThreadIds() {\n return this._state.value.archivedThreadIds;\n }\n\n public get newThreadId() {\n return this._state.value.newThreadId;\n }\n\n public get mainThreadId(): string {\n return this._mainThreadId;\n }\n\n public getMainThreadRuntimeCore() {\n const result = this._hookManager.getThreadRuntimeCore(this._mainThreadId);\n if (!result) return EMPTY_THREAD_CORE;\n return result;\n }\n\n public getThreadRuntimeCore(threadIdOrRemoteId: string) {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n\n const result = this._hookManager.getThreadRuntimeCore(data.threadId);\n if (!result) throw new Error(\"Thread not found\");\n return result;\n }\n\n public getItemById(threadIdOrRemoteId: string) {\n return getThreadData(this._state.value, threadIdOrRemoteId);\n }\n\n public async switchToThread(threadIdOrRemoteId: string): Promise<void> {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n\n if (this._mainThreadId === data.threadId) return;\n\n const task = this._hookManager.startThreadRuntime(data.threadId);\n if (this.mainThreadId !== undefined) {\n await task;\n } else {\n task.then(() => this._notifySubscribers());\n }\n\n if (data.status === \"archived\") await this.unarchive(data.threadId);\n this._mainThreadId = data.threadId;\n\n this._notifySubscribers();\n }\n\n public async switchToNewThread(): Promise<void> {\n // an initialization transaction is in progress, wait for it to settle\n while (\n this._state.baseValue.newThreadId !== undefined &&\n this._state.value.newThreadId === undefined\n ) {\n await this._state.waitForUpdate();\n }\n\n const state = this._state.value;\n let threadId: string | undefined = this._state.value.newThreadId;\n if (threadId === undefined) {\n do {\n threadId = `__LOCALID_${generateId()}`;\n } while (state.threadIdMap[threadId]);\n\n const mappingId = createThreadMappingId(threadId);\n this._state.update({\n ...state,\n newThreadId: threadId,\n threadIdMap: {\n ...state.threadIdMap,\n [threadId]: mappingId,\n },\n threadData: {\n ...state.threadData,\n [threadId]: {\n status: \"new\",\n threadId,\n },\n },\n });\n }\n\n return this.switchToThread(threadId);\n }\n\n public initialize = async (threadId: string) => {\n if (this._state.value.newThreadId !== threadId) {\n const data = this.getItemById(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status === \"new\") throw new Error(\"Unexpected new state\");\n return data.initializeTask;\n }\n\n return this._state.optimisticUpdate({\n execute: () => {\n return this._options.adapter.initialize(threadId);\n },\n optimistic: (state) => {\n return updateStatusReducer(state, threadId, \"regular\");\n },\n loading: (state, task) => {\n const mappingId = createThreadMappingId(threadId);\n return {\n ...state,\n threadData: {\n ...state.threadData,\n [mappingId]: {\n ...state.threadData[mappingId],\n initializeTask: task,\n },\n },\n };\n },\n then: (state, { remoteId, externalId }) => {\n const data = getThreadData(state, threadId);\n if (!data) return state;\n\n const mappingId = createThreadMappingId(threadId);\n return {\n ...state,\n threadIdMap: {\n ...state.threadIdMap,\n [remoteId]: mappingId,\n },\n threadData: {\n ...state.threadData,\n [mappingId]: {\n ...data,\n initializeTask: Promise.resolve({ remoteId, externalId }),\n remoteId,\n externalId,\n },\n },\n };\n },\n });\n };\n\n public generateTitle = async (threadId: string) => {\n const data = this.getItemById(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status === \"new\") throw new Error(\"Thread is not yet initialized\");\n\n const { remoteId } = await data.initializeTask;\n const messages = this.getThreadRuntimeCore(threadId).messages;\n const stream = await this._options.adapter.generateTitle(\n remoteId,\n messages,\n );\n const messageStream = AssistantMessageStream.fromAssistantStream(stream);\n for await (const result of messageStream) {\n const newTitle = result.parts.filter((c) => c.type === \"text\")[0]?.text;\n const state = this._state.baseValue;\n this._state.update({\n ...state,\n threadData: {\n ...state.threadData,\n [data.threadId]: {\n ...data,\n title: newTitle,\n },\n },\n });\n }\n };\n\n public rename(threadIdOrRemoteId: string, newTitle: string): Promise<void> {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status === \"new\") throw new Error(\"Thread is not yet initialized\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n const { remoteId } = await data.initializeTask;\n return this._options.adapter.rename(remoteId, newTitle);\n },\n optimistic: (state) => {\n const data = getThreadData(state, threadIdOrRemoteId);\n if (!data) return state;\n\n return {\n ...state,\n threadData: {\n ...state.threadData,\n [data.threadId]: {\n ...data,\n title: newTitle,\n },\n },\n };\n },\n });\n }\n\n private async _ensureThreadIsNotMain(threadId: string) {\n // if thread is main thread, switch to another thread\n if (threadId === this._mainThreadId) {\n await this.switchToNewThread();\n }\n }\n\n public async archive(threadIdOrRemoteId: string) {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status !== \"regular\")\n throw new Error(\"Thread is not yet initialized or already archived\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n await this._ensureThreadIsNotMain(data.threadId);\n const { remoteId } = await data.initializeTask;\n return this._options.adapter.archive(remoteId);\n },\n optimistic: (state) => {\n return updateStatusReducer(state, data.threadId, \"archived\");\n },\n });\n }\n\n public unarchive(threadIdOrRemoteId: string): Promise<void> {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status !== \"archived\") throw new Error(\"Thread is not archived\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n try {\n const { remoteId } = await data.initializeTask;\n return await this._options.adapter.unarchive(remoteId);\n } catch (error) {\n await this._ensureThreadIsNotMain(data.threadId);\n throw error;\n }\n },\n optimistic: (state) => {\n return updateStatusReducer(state, data.threadId, \"regular\");\n },\n });\n }\n\n public async delete(threadIdOrRemoteId: string) {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status !== \"regular\" && data.status !== \"archived\")\n throw new Error(\"Thread is not yet initialized\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n await this._ensureThreadIsNotMain(data.threadId);\n const { remoteId } = await data.initializeTask;\n return await this._options.adapter.delete(remoteId);\n },\n optimistic: (state) => {\n return updateStatusReducer(state, data.threadId, \"deleted\");\n },\n });\n }\n\n private useBoundIds = create<string[]>(() => []);\n\n public __internal_RenderComponent: FC = () => {\n const id = useId();\n useEffect(() => {\n this.useBoundIds.setState((s) => [...s, id], true);\n return () => {\n this.useBoundIds.setState((s) => s.filter((i) => i !== id), true);\n };\n }, [id]);\n\n const boundIds = this.useBoundIds();\n const { Provider } = this.useProvider();\n\n const adapters = {\n modelContext: this.contextProvider,\n };\n\n return (\n (boundIds.length === 0 || boundIds[0] === id) && (\n // only render if the component is the first one mounted\n <RuntimeAdapterProvider adapters={adapters}>\n <this._hookManager.__internal_RenderThreadRuntimes\n provider={Provider}\n />\n </RuntimeAdapterProvider>\n )\n );\n };\n}\n"],"mappings":"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","names":["data"]}
|
1
|
+
{"version":3,"sources":["../../../src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx"],"sourcesContent":["\"use client\";\n\nimport { ThreadListRuntimeCore } from \"../core/ThreadListRuntimeCore\";\nimport { generateId } from \"../../internal\";\nimport {\n RemoteThreadInitializeResponse,\n RemoteThreadListOptions,\n} from \"./types\";\nimport { RemoteThreadListHookInstanceManager } from \"./RemoteThreadListHookInstanceManager\";\nimport { BaseSubscribable } from \"./BaseSubscribable\";\nimport { EMPTY_THREAD_CORE } from \"./EMPTY_THREAD_CORE\";\nimport { OptimisticState } from \"./OptimisticState\";\nimport { FC, Fragment, useEffect, useId } from \"react\";\nimport { create } from \"zustand\";\nimport { AssistantMessageStream } from \"assistant-stream\";\nimport { ModelContextProvider } from \"../../model-context\";\nimport { RuntimeAdapterProvider } from \"../adapters/RuntimeAdapterProvider\";\n\ntype RemoteThreadData =\n | {\n readonly threadId: string;\n readonly remoteId?: undefined;\n readonly externalId?: undefined;\n readonly status: \"new\";\n readonly title: undefined;\n }\n | {\n readonly threadId: string;\n readonly initializeTask: Promise<RemoteThreadInitializeResponse>;\n readonly remoteId?: undefined;\n readonly externalId?: undefined;\n readonly status: \"regular\" | \"archived\";\n readonly title?: string | undefined;\n }\n | {\n readonly threadId: string;\n readonly initializeTask: Promise<RemoteThreadInitializeResponse>;\n readonly remoteId: string;\n readonly externalId: string | undefined;\n readonly status: \"regular\" | \"archived\";\n readonly title?: string | undefined;\n };\n\ntype THREAD_MAPPING_ID = string & { __brand: \"THREAD_MAPPING_ID\" };\nfunction createThreadMappingId(id: string): THREAD_MAPPING_ID {\n return id as THREAD_MAPPING_ID;\n}\n\ntype RemoteThreadState = {\n readonly isLoading: boolean;\n readonly newThreadId: string | undefined;\n readonly threadIds: readonly string[];\n readonly archivedThreadIds: readonly string[];\n readonly threadIdMap: Readonly<Record<string, THREAD_MAPPING_ID>>;\n readonly threadData: Readonly<Record<THREAD_MAPPING_ID, RemoteThreadData>>;\n};\n\nconst getThreadData = (\n state: RemoteThreadState,\n threadIdOrRemoteId: string,\n) => {\n const idx = state.threadIdMap[threadIdOrRemoteId];\n if (idx === undefined) return undefined;\n return state.threadData[idx];\n};\n\nconst updateStatusReducer = (\n state: RemoteThreadState,\n threadIdOrRemoteId: string,\n newStatus: \"regular\" | \"archived\" | \"deleted\",\n) => {\n const data = getThreadData(state, threadIdOrRemoteId);\n if (!data) return state;\n\n const { threadId, remoteId, status: lastStatus } = data;\n if (lastStatus === newStatus) return state;\n\n const newState = { ...state };\n\n // lastStatus\n switch (lastStatus) {\n case \"new\":\n newState.newThreadId = undefined;\n break;\n case \"regular\":\n newState.threadIds = newState.threadIds.filter((t) => t !== threadId);\n break;\n case \"archived\":\n newState.archivedThreadIds = newState.archivedThreadIds.filter(\n (t) => t !== threadId,\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = lastStatus;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n // newStatus\n switch (newStatus) {\n case \"regular\":\n newState.threadIds = [threadId, ...newState.threadIds];\n break;\n\n case \"archived\":\n newState.archivedThreadIds = [threadId, ...newState.archivedThreadIds];\n break;\n\n case \"deleted\":\n newState.threadData = Object.fromEntries(\n Object.entries(newState.threadData).filter(([key]) => key !== threadId),\n );\n newState.threadIdMap = Object.fromEntries(\n Object.entries(newState.threadIdMap).filter(\n ([key]) => key !== threadId && key !== remoteId,\n ),\n );\n break;\n\n default: {\n const _exhaustiveCheck: never = newStatus;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n if (newStatus !== \"deleted\") {\n newState.threadData = {\n ...newState.threadData,\n [threadId]: {\n ...data,\n status: newStatus,\n },\n };\n }\n\n return newState;\n};\n\nexport class RemoteThreadListThreadListRuntimeCore\n extends BaseSubscribable\n implements ThreadListRuntimeCore\n{\n private _options!: RemoteThreadListOptions;\n private readonly _hookManager: RemoteThreadListHookInstanceManager;\n\n private _loadThreadsPromise: Promise<void> | undefined;\n\n private _mainThreadId!: string;\n private readonly _state = new OptimisticState<RemoteThreadState>({\n isLoading: false,\n newThreadId: undefined,\n threadIds: [],\n archivedThreadIds: [],\n threadIdMap: {},\n threadData: {},\n });\n\n public getLoadThreadsPromise() {\n // TODO this needs to be cached in case this promise is loaded during suspense\n if (!this._loadThreadsPromise) {\n this._loadThreadsPromise = this._state\n .optimisticUpdate({\n execute: () => this._options.adapter.list(),\n loading: (state) => {\n return {\n ...state,\n isLoading: true,\n };\n },\n then: (state, l) => {\n const newThreadIds = [];\n const newArchivedThreadIds = [];\n const newThreadIdMap = {} as Record<string, THREAD_MAPPING_ID>;\n const newThreadData = {} as Record<\n THREAD_MAPPING_ID,\n RemoteThreadData\n >;\n\n for (const thread of l.threads) {\n switch (thread.status) {\n case \"regular\":\n newThreadIds.push(thread.remoteId);\n break;\n case \"archived\":\n newArchivedThreadIds.push(thread.remoteId);\n break;\n default: {\n const _exhaustiveCheck: never = thread.status;\n throw new Error(`Unsupported state: ${_exhaustiveCheck}`);\n }\n }\n\n const mappingId = createThreadMappingId(thread.remoteId);\n newThreadIdMap[thread.remoteId] = mappingId;\n newThreadData[mappingId] = {\n threadId: thread.remoteId,\n remoteId: thread.remoteId,\n externalId: thread.externalId,\n status: thread.status,\n title: thread.title,\n initializeTask: Promise.resolve({\n remoteId: thread.remoteId,\n externalId: thread.externalId,\n }),\n };\n }\n\n return {\n ...state,\n threadIds: newThreadIds,\n archivedThreadIds: newArchivedThreadIds,\n threadIdMap: {\n ...state.threadIdMap,\n ...newThreadIdMap,\n },\n threadData: {\n ...state.threadData,\n ...newThreadData,\n },\n };\n },\n })\n .then(() => {});\n }\n\n return this._loadThreadsPromise;\n }\n\n constructor(\n options: RemoteThreadListOptions,\n private readonly contextProvider: ModelContextProvider,\n ) {\n super();\n\n this._state.subscribe(() => this._notifySubscribers());\n this._hookManager = new RemoteThreadListHookInstanceManager(\n options.runtimeHook,\n );\n this.useProvider = create(() => ({\n Provider: options.adapter.unstable_Provider ?? Fragment,\n }));\n this.__internal_setOptions(options);\n\n this.switchToNewThread();\n }\n\n private useProvider;\n\n public __internal_setOptions(options: RemoteThreadListOptions) {\n if (this._options === options) return;\n\n this._options = options;\n\n const Provider = options.adapter.unstable_Provider ?? Fragment;\n if (Provider !== this.useProvider.getState().Provider) {\n this.useProvider.setState({ Provider }, true);\n }\n\n this._hookManager.setRuntimeHook(options.runtimeHook);\n }\n\n public __internal_load() {\n this.getLoadThreadsPromise(); // begin loading on initial bind\n }\n\n public get threadIds() {\n return this._state.value.threadIds;\n }\n\n public get archivedThreadIds() {\n return this._state.value.archivedThreadIds;\n }\n\n public get newThreadId() {\n return this._state.value.newThreadId;\n }\n\n public get mainThreadId(): string {\n return this._mainThreadId;\n }\n\n public getMainThreadRuntimeCore() {\n const result = this._hookManager.getThreadRuntimeCore(this._mainThreadId);\n if (!result) return EMPTY_THREAD_CORE;\n return result;\n }\n\n public getThreadRuntimeCore(threadIdOrRemoteId: string) {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n\n const result = this._hookManager.getThreadRuntimeCore(data.threadId);\n if (!result) throw new Error(\"Thread not found\");\n return result;\n }\n\n public getItemById(threadIdOrRemoteId: string) {\n return getThreadData(this._state.value, threadIdOrRemoteId);\n }\n\n public async switchToThread(threadIdOrRemoteId: string): Promise<void> {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n\n if (this._mainThreadId === data.threadId) return;\n\n const task = this._hookManager.startThreadRuntime(data.threadId);\n if (this.mainThreadId !== undefined) {\n await task;\n } else {\n task.then(() => this._notifySubscribers());\n }\n\n if (data.status === \"archived\") await this.unarchive(data.threadId);\n this._mainThreadId = data.threadId;\n\n this._notifySubscribers();\n }\n\n public async switchToNewThread(): Promise<void> {\n // an initialization transaction is in progress, wait for it to settle\n while (\n this._state.baseValue.newThreadId !== undefined &&\n this._state.value.newThreadId === undefined\n ) {\n await this._state.waitForUpdate();\n }\n\n const state = this._state.value;\n let threadId: string | undefined = this._state.value.newThreadId;\n if (threadId === undefined) {\n do {\n threadId = `__LOCALID_${generateId()}`;\n } while (state.threadIdMap[threadId]);\n\n const mappingId = createThreadMappingId(threadId);\n this._state.update({\n ...state,\n newThreadId: threadId,\n threadIdMap: {\n ...state.threadIdMap,\n [threadId]: mappingId,\n },\n threadData: {\n ...state.threadData,\n [threadId]: {\n status: \"new\",\n threadId,\n },\n },\n });\n }\n\n return this.switchToThread(threadId);\n }\n\n public initialize = async (threadId: string) => {\n if (this._state.value.newThreadId !== threadId) {\n const data = this.getItemById(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status === \"new\") throw new Error(\"Unexpected new state\");\n return data.initializeTask;\n }\n\n return this._state.optimisticUpdate({\n execute: () => {\n return this._options.adapter.initialize(threadId);\n },\n optimistic: (state) => {\n return updateStatusReducer(state, threadId, \"regular\");\n },\n loading: (state, task) => {\n const mappingId = createThreadMappingId(threadId);\n return {\n ...state,\n threadData: {\n ...state.threadData,\n [mappingId]: {\n ...state.threadData[mappingId],\n initializeTask: task,\n },\n },\n };\n },\n then: (state, { remoteId, externalId }) => {\n const data = getThreadData(state, threadId);\n if (!data) return state;\n\n const mappingId = createThreadMappingId(threadId);\n return {\n ...state,\n threadIdMap: {\n ...state.threadIdMap,\n [remoteId]: mappingId,\n },\n threadData: {\n ...state.threadData,\n [mappingId]: {\n ...data,\n initializeTask: Promise.resolve({ remoteId, externalId }),\n remoteId,\n externalId,\n },\n },\n };\n },\n });\n };\n\n public generateTitle = async (threadId: string) => {\n const data = this.getItemById(threadId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status === \"new\") throw new Error(\"Thread is not yet initialized\");\n\n const { remoteId } = await data.initializeTask;\n const messages = this.getThreadRuntimeCore(threadId).messages;\n const stream = await this._options.adapter.generateTitle(\n remoteId,\n messages,\n );\n const messageStream = AssistantMessageStream.fromAssistantStream(stream);\n for await (const result of messageStream) {\n const newTitle = result.parts.filter((c) => c.type === \"text\")[0]?.text;\n const state = this._state.baseValue;\n this._state.update({\n ...state,\n threadData: {\n ...state.threadData,\n [data.threadId]: {\n ...data,\n title: newTitle,\n },\n },\n });\n }\n };\n\n public rename(threadIdOrRemoteId: string, newTitle: string): Promise<void> {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status === \"new\") throw new Error(\"Thread is not yet initialized\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n const { remoteId } = await data.initializeTask;\n return this._options.adapter.rename(remoteId, newTitle);\n },\n optimistic: (state) => {\n const data = getThreadData(state, threadIdOrRemoteId);\n if (!data) return state;\n\n return {\n ...state,\n threadData: {\n ...state.threadData,\n [data.threadId]: {\n ...data,\n title: newTitle,\n },\n },\n };\n },\n });\n }\n\n private async _ensureThreadIsNotMain(threadId: string) {\n // if thread is main thread, switch to another thread\n if (threadId === this._mainThreadId) {\n await this.switchToNewThread();\n }\n }\n\n public async archive(threadIdOrRemoteId: string) {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status !== \"regular\")\n throw new Error(\"Thread is not yet initialized or already archived\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n await this._ensureThreadIsNotMain(data.threadId);\n const { remoteId } = await data.initializeTask;\n return this._options.adapter.archive(remoteId);\n },\n optimistic: (state) => {\n return updateStatusReducer(state, data.threadId, \"archived\");\n },\n });\n }\n\n public unarchive(threadIdOrRemoteId: string): Promise<void> {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status !== \"archived\") throw new Error(\"Thread is not archived\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n try {\n const { remoteId } = await data.initializeTask;\n return await this._options.adapter.unarchive(remoteId);\n } catch (error) {\n await this._ensureThreadIsNotMain(data.threadId);\n throw error;\n }\n },\n optimistic: (state) => {\n return updateStatusReducer(state, data.threadId, \"regular\");\n },\n });\n }\n\n public async delete(threadIdOrRemoteId: string) {\n const data = this.getItemById(threadIdOrRemoteId);\n if (!data) throw new Error(\"Thread not found\");\n if (data.status !== \"regular\" && data.status !== \"archived\")\n throw new Error(\"Thread is not yet initialized\");\n\n return this._state.optimisticUpdate({\n execute: async () => {\n await this._ensureThreadIsNotMain(data.threadId);\n const { remoteId } = await data.initializeTask;\n return await this._options.adapter.delete(remoteId);\n },\n optimistic: (state) => {\n return updateStatusReducer(state, data.threadId, \"deleted\");\n },\n });\n }\n\n private useBoundIds = create<string[]>(() => []);\n\n public __internal_RenderComponent: FC = () => {\n const id = useId();\n useEffect(() => {\n this.useBoundIds.setState((s) => [...s, id], true);\n return () => {\n this.useBoundIds.setState((s) => s.filter((i) => i !== id), true);\n };\n }, [id]);\n\n const boundIds = this.useBoundIds();\n const { Provider } = this.useProvider();\n\n const adapters = {\n modelContext: this.contextProvider,\n };\n\n return (\n (boundIds.length === 0 || boundIds[0] === id) && (\n // only render if the component is the first one mounted\n <RuntimeAdapterProvider adapters={adapters}>\n <this._hookManager.__internal_RenderThreadRuntimes\n provider={Provider}\n />\n </RuntimeAdapterProvider>\n )\n );\n };\n}\n"],"mappings":"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","names":["data"]}
|
@@ -1,55 +1,35 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
};
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
};
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
-
|
20
|
-
// src/runtimes/remote-thread-list/adapter/cloud.tsx
|
21
|
-
var cloud_exports = {};
|
22
|
-
__export(cloud_exports, {
|
23
|
-
useCloudThreadListAdapter: () => useCloudThreadListAdapter
|
24
|
-
});
|
25
|
-
module.exports = __toCommonJS(cloud_exports);
|
26
|
-
var import_react = require("react");
|
27
|
-
var import_cloud = require("../../../cloud/index.js");
|
28
|
-
var import_AssistantCloudThreadHistoryAdapter = require("../../../cloud/AssistantCloudThreadHistoryAdapter.js");
|
29
|
-
var import_RuntimeAdapterProvider = require("../../adapters/RuntimeAdapterProvider.js");
|
30
|
-
var import_in_memory = require("./in-memory.js");
|
31
|
-
var import_jsx_runtime = require("react/jsx-runtime");
|
32
|
-
var baseUrl = typeof process !== "undefined" && process?.env?.["NEXT_PUBLIC_ASSISTANT_BASE_URL"];
|
33
|
-
var autoCloud = baseUrl ? new import_cloud.AssistantCloud({ baseUrl, anonymous: true }) : void 0;
|
34
|
-
var useCloudThreadListAdapter = (adapter) => {
|
35
|
-
const adapterRef = (0, import_react.useRef)(adapter);
|
36
|
-
(0, import_react.useEffect)(() => {
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
2
|
+
import {
|
3
|
+
useCallback,
|
4
|
+
useEffect,
|
5
|
+
useMemo,
|
6
|
+
useRef
|
7
|
+
} from "react";
|
8
|
+
import { AssistantCloud } from "../../../cloud";
|
9
|
+
import { useAssistantCloudThreadHistoryAdapter } from "../../../cloud/AssistantCloudThreadHistoryAdapter";
|
10
|
+
import { RuntimeAdapterProvider } from "../../adapters/RuntimeAdapterProvider";
|
11
|
+
import { InMemoryThreadListAdapter } from "./in-memory";
|
12
|
+
const baseUrl = typeof process !== "undefined" && process?.env?.["NEXT_PUBLIC_ASSISTANT_BASE_URL"];
|
13
|
+
const autoCloud = baseUrl ? new AssistantCloud({ baseUrl, anonymous: true }) : void 0;
|
14
|
+
const useCloudThreadListAdapter = (adapter) => {
|
15
|
+
const adapterRef = useRef(adapter);
|
16
|
+
useEffect(() => {
|
37
17
|
adapterRef.current = adapter;
|
38
18
|
}, [adapter]);
|
39
|
-
const unstable_Provider =
|
19
|
+
const unstable_Provider = useCallback(
|
40
20
|
function Provider({ children }) {
|
41
|
-
const history =
|
21
|
+
const history = useAssistantCloudThreadHistoryAdapter({
|
42
22
|
get current() {
|
43
23
|
return adapterRef.current.cloud ?? autoCloud;
|
44
24
|
}
|
45
25
|
});
|
46
|
-
const adapters =
|
47
|
-
return /* @__PURE__ */
|
26
|
+
const adapters = useMemo(() => ({ history }), [history]);
|
27
|
+
return /* @__PURE__ */ jsx(RuntimeAdapterProvider, { adapters, children });
|
48
28
|
},
|
49
29
|
[]
|
50
30
|
);
|
51
31
|
const cloud = adapter.cloud ?? autoCloud;
|
52
|
-
if (!cloud) return new
|
32
|
+
if (!cloud) return new InMemoryThreadListAdapter();
|
53
33
|
return {
|
54
34
|
list: async () => {
|
55
35
|
const { threads } = await cloud.threads.list();
|
@@ -96,8 +76,7 @@ var useCloudThreadListAdapter = (adapter) => {
|
|
96
76
|
unstable_Provider
|
97
77
|
};
|
98
78
|
};
|
99
|
-
|
100
|
-
0 && (module.exports = {
|
79
|
+
export {
|
101
80
|
useCloudThreadListAdapter
|
102
|
-
}
|
81
|
+
};
|
103
82
|
//# sourceMappingURL=cloud.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../../src/runtimes/remote-thread-list/adapter/cloud.tsx"],"sourcesContent":["import {\n FC,\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { AssistantCloud } from \"../../../cloud\";\nimport { RemoteThreadListAdapter } from \"../types\";\nimport { useAssistantCloudThreadHistoryAdapter } from \"../../../cloud/AssistantCloudThreadHistoryAdapter\";\nimport { RuntimeAdapterProvider } from \"../../adapters/RuntimeAdapterProvider\";\nimport { InMemoryThreadListAdapter } from \"./in-memory\";\n\ntype ThreadData = {\n externalId: string;\n};\n\ntype CloudThreadListAdapterOptions = {\n cloud?: AssistantCloud | undefined;\n\n create?(): Promise<ThreadData>;\n delete?(threadId: string): Promise<void>;\n};\n\nconst baseUrl =\n typeof process !== \"undefined\" &&\n process?.env?.[\"NEXT_PUBLIC_ASSISTANT_BASE_URL\"];\nconst autoCloud = baseUrl\n ? new AssistantCloud({ baseUrl, anonymous: true })\n : undefined;\n\nexport const useCloudThreadListAdapter = (\n adapter: CloudThreadListAdapterOptions,\n): RemoteThreadListAdapter => {\n const adapterRef = useRef(adapter);\n useEffect(() => {\n adapterRef.current = adapter;\n }, [adapter]);\n\n const unstable_Provider = useCallback<FC<PropsWithChildren>>(\n function Provider({ children }) {\n const history = useAssistantCloudThreadHistoryAdapter({\n get current() {\n return adapterRef.current.cloud ?? autoCloud!;\n },\n });\n const adapters = useMemo(() => ({ history }), [history]);\n\n return (\n <RuntimeAdapterProvider adapters={adapters}>\n {children}\n </RuntimeAdapterProvider>\n );\n },\n [],\n );\n\n const cloud = adapter.cloud ?? autoCloud;\n if (!cloud) return new InMemoryThreadListAdapter();\n\n return {\n list: async () => {\n const { threads } = await cloud.threads.list();\n return {\n threads: threads.map((t) => ({\n status: t.is_archived ? \"archived\" : \"regular\",\n remoteId: t.id,\n title: t.title,\n externalId: t.external_id ?? undefined,\n })),\n };\n },\n\n initialize: async () => {\n const createTask = adapter.create?.() ?? Promise.resolve();\n const t = await createTask;\n const external_id = t ? t.externalId : undefined;\n const { thread_id: remoteId } = await cloud.threads.create({\n last_message_at: new Date(),\n external_id,\n });\n\n return { externalId: external_id, remoteId: remoteId };\n },\n\n rename: async (threadId, newTitle) => {\n return cloud.threads.update(threadId, { title: newTitle });\n },\n archive: async (threadId) => {\n return cloud.threads.update(threadId, { is_archived: true });\n },\n unarchive: async (threadId) => {\n return cloud.threads.update(threadId, { is_archived: false });\n },\n delete: async (threadId) => {\n await adapter.delete?.(threadId);\n return cloud.threads.delete(threadId);\n },\n\n generateTitle: async (threadId, messages) => {\n return cloud.runs.stream({\n thread_id: threadId,\n assistant_id: \"system/thread_title\",\n messages: messages, // TODO serialize these to a more efficient format\n });\n },\n\n unstable_Provider,\n };\n};\n"],"mappings":"
|
1
|
+
{"version":3,"sources":["../../../../src/runtimes/remote-thread-list/adapter/cloud.tsx"],"sourcesContent":["import {\n FC,\n PropsWithChildren,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n} from \"react\";\nimport { AssistantCloud } from \"../../../cloud\";\nimport { RemoteThreadListAdapter } from \"../types\";\nimport { useAssistantCloudThreadHistoryAdapter } from \"../../../cloud/AssistantCloudThreadHistoryAdapter\";\nimport { RuntimeAdapterProvider } from \"../../adapters/RuntimeAdapterProvider\";\nimport { InMemoryThreadListAdapter } from \"./in-memory\";\n\ntype ThreadData = {\n externalId: string;\n};\n\ntype CloudThreadListAdapterOptions = {\n cloud?: AssistantCloud | undefined;\n\n create?(): Promise<ThreadData>;\n delete?(threadId: string): Promise<void>;\n};\n\nconst baseUrl =\n typeof process !== \"undefined\" &&\n process?.env?.[\"NEXT_PUBLIC_ASSISTANT_BASE_URL\"];\nconst autoCloud = baseUrl\n ? new AssistantCloud({ baseUrl, anonymous: true })\n : undefined;\n\nexport const useCloudThreadListAdapter = (\n adapter: CloudThreadListAdapterOptions,\n): RemoteThreadListAdapter => {\n const adapterRef = useRef(adapter);\n useEffect(() => {\n adapterRef.current = adapter;\n }, [adapter]);\n\n const unstable_Provider = useCallback<FC<PropsWithChildren>>(\n function Provider({ children }) {\n const history = useAssistantCloudThreadHistoryAdapter({\n get current() {\n return adapterRef.current.cloud ?? autoCloud!;\n },\n });\n const adapters = useMemo(() => ({ history }), [history]);\n\n return (\n <RuntimeAdapterProvider adapters={adapters}>\n {children}\n </RuntimeAdapterProvider>\n );\n },\n [],\n );\n\n const cloud = adapter.cloud ?? autoCloud;\n if (!cloud) return new InMemoryThreadListAdapter();\n\n return {\n list: async () => {\n const { threads } = await cloud.threads.list();\n return {\n threads: threads.map((t) => ({\n status: t.is_archived ? \"archived\" : \"regular\",\n remoteId: t.id,\n title: t.title,\n externalId: t.external_id ?? undefined,\n })),\n };\n },\n\n initialize: async () => {\n const createTask = adapter.create?.() ?? Promise.resolve();\n const t = await createTask;\n const external_id = t ? t.externalId : undefined;\n const { thread_id: remoteId } = await cloud.threads.create({\n last_message_at: new Date(),\n external_id,\n });\n\n return { externalId: external_id, remoteId: remoteId };\n },\n\n rename: async (threadId, newTitle) => {\n return cloud.threads.update(threadId, { title: newTitle });\n },\n archive: async (threadId) => {\n return cloud.threads.update(threadId, { is_archived: true });\n },\n unarchive: async (threadId) => {\n return cloud.threads.update(threadId, { is_archived: false });\n },\n delete: async (threadId) => {\n await adapter.delete?.(threadId);\n return cloud.threads.delete(threadId);\n },\n\n generateTitle: async (threadId, messages) => {\n return cloud.runs.stream({\n thread_id: threadId,\n assistant_id: \"system/thread_title\",\n messages: messages, // TODO serialize these to a more efficient format\n });\n },\n\n unstable_Provider,\n };\n};\n"],"mappings":"AAkDQ;AAlDR;AAAA,EAGE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB;AAE/B,SAAS,6CAA6C;AACtD,SAAS,8BAA8B;AACvC,SAAS,iCAAiC;AAa1C,MAAM,UACJ,OAAO,YAAY,eACnB,SAAS,MAAM,gCAAgC;AACjD,MAAM,YAAY,UACd,IAAI,eAAe,EAAE,SAAS,WAAW,KAAK,CAAC,IAC/C;AAEG,MAAM,4BAA4B,CACvC,YAC4B;AAC5B,QAAM,aAAa,OAAO,OAAO;AACjC,YAAU,MAAM;AACd,eAAW,UAAU;AAAA,EACvB,GAAG,CAAC,OAAO,CAAC;AAEZ,QAAM,oBAAoB;AAAA,IACxB,SAAS,SAAS,EAAE,SAAS,GAAG;AAC9B,YAAM,UAAU,sCAAsC;AAAA,QACpD,IAAI,UAAU;AACZ,iBAAO,WAAW,QAAQ,SAAS;AAAA,QACrC;AAAA,MACF,CAAC;AACD,YAAM,WAAW,QAAQ,OAAO,EAAE,QAAQ,IAAI,CAAC,OAAO,CAAC;AAEvD,aACE,oBAAC,0BAAuB,UACrB,UACH;AAAA,IAEJ;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,QAAQ,QAAQ,SAAS;AAC/B,MAAI,CAAC,MAAO,QAAO,IAAI,0BAA0B;AAEjD,SAAO;AAAA,IACL,MAAM,YAAY;AAChB,YAAM,EAAE,QAAQ,IAAI,MAAM,MAAM,QAAQ,KAAK;AAC7C,aAAO;AAAA,QACL,SAAS,QAAQ,IAAI,CAAC,OAAO;AAAA,UAC3B,QAAQ,EAAE,cAAc,aAAa;AAAA,UACrC,UAAU,EAAE;AAAA,UACZ,OAAO,EAAE;AAAA,UACT,YAAY,EAAE,eAAe;AAAA,QAC/B,EAAE;AAAA,MACJ;AAAA,IACF;AAAA,IAEA,YAAY,YAAY;AACtB,YAAM,aAAa,QAAQ,SAAS,KAAK,QAAQ,QAAQ;AACzD,YAAM,IAAI,MAAM;AAChB,YAAM,cAAc,IAAI,EAAE,aAAa;AACvC,YAAM,EAAE,WAAW,SAAS,IAAI,MAAM,MAAM,QAAQ,OAAO;AAAA,QACzD,iBAAiB,oBAAI,KAAK;AAAA,QAC1B;AAAA,MACF,CAAC;AAED,aAAO,EAAE,YAAY,aAAa,SAAmB;AAAA,IACvD;AAAA,IAEA,QAAQ,OAAO,UAAU,aAAa;AACpC,aAAO,MAAM,QAAQ,OAAO,UAAU,EAAE,OAAO,SAAS,CAAC;AAAA,IAC3D;AAAA,IACA,SAAS,OAAO,aAAa;AAC3B,aAAO,MAAM,QAAQ,OAAO,UAAU,EAAE,aAAa,KAAK,CAAC;AAAA,IAC7D;AAAA,IACA,WAAW,OAAO,aAAa;AAC7B,aAAO,MAAM,QAAQ,OAAO,UAAU,EAAE,aAAa,MAAM,CAAC;AAAA,IAC9D;AAAA,IACA,QAAQ,OAAO,aAAa;AAC1B,YAAM,QAAQ,SAAS,QAAQ;AAC/B,aAAO,MAAM,QAAQ,OAAO,QAAQ;AAAA,IACtC;AAAA,IAEA,eAAe,OAAO,UAAU,aAAa;AAC3C,aAAO,MAAM,KAAK,OAAO;AAAA,QACvB,WAAW;AAAA,QACX,cAAc;AAAA,QACd;AAAA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,IAEA;AAAA,EACF;AACF;","names":[]}
|
@@ -1,29 +1,4 @@
|
|
1
|
-
|
2
|
-
var __defProp = Object.defineProperty;
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
6
|
-
var __export = (target, all) => {
|
7
|
-
for (var name in all)
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
9
|
-
};
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
12
|
-
for (let key of __getOwnPropNames(from))
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
15
|
-
}
|
16
|
-
return to;
|
17
|
-
};
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
19
|
-
|
20
|
-
// src/runtimes/remote-thread-list/adapter/in-memory.tsx
|
21
|
-
var in_memory_exports = {};
|
22
|
-
__export(in_memory_exports, {
|
23
|
-
InMemoryThreadListAdapter: () => InMemoryThreadListAdapter
|
24
|
-
});
|
25
|
-
module.exports = __toCommonJS(in_memory_exports);
|
26
|
-
var InMemoryThreadListAdapter = class {
|
1
|
+
class InMemoryThreadListAdapter {
|
27
2
|
list() {
|
28
3
|
return Promise.resolve({
|
29
4
|
threads: []
|
@@ -47,9 +22,8 @@ var InMemoryThreadListAdapter = class {
|
|
47
22
|
generateTitle() {
|
48
23
|
return Promise.resolve(new ReadableStream());
|
49
24
|
}
|
50
|
-
}
|
51
|
-
|
52
|
-
0 && (module.exports = {
|
25
|
+
}
|
26
|
+
export {
|
53
27
|
InMemoryThreadListAdapter
|
54
|
-
}
|
28
|
+
};
|
55
29
|
//# sourceMappingURL=in-memory.js.map
|