@assistant-ui/react-native 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -0
- package/dist/adapters/LocalStorageThreadListAdapter.d.ts +15 -0
- package/dist/adapters/LocalStorageThreadListAdapter.d.ts.map +1 -0
- package/dist/adapters/LocalStorageThreadListAdapter.js +154 -0
- package/dist/adapters/LocalStorageThreadListAdapter.js.map +1 -0
- package/dist/adapters/TitleGenerationAdapter.d.ts +6 -0
- package/dist/adapters/TitleGenerationAdapter.d.ts.map +1 -0
- package/dist/adapters/TitleGenerationAdapter.js +15 -0
- package/dist/adapters/TitleGenerationAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts +3 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +3 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/context/AssistantContext.d.ts +8 -0
- package/dist/context/AssistantContext.d.ts.map +1 -0
- package/dist/context/AssistantContext.js +21 -0
- package/dist/context/AssistantContext.js.map +1 -0
- package/dist/context/index.d.ts +2 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/providers/RuntimeAdapterProvider.d.ts +15 -0
- package/dist/context/providers/RuntimeAdapterProvider.d.ts.map +1 -0
- package/dist/context/providers/RuntimeAdapterProvider.js +14 -0
- package/dist/context/providers/RuntimeAdapterProvider.js.map +1 -0
- package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts +6 -0
- package/dist/context/providers/ThreadListItemRuntimeProvider.d.ts.map +1 -0
- package/dist/context/providers/ThreadListItemRuntimeProvider.js +10 -0
- package/dist/context/providers/ThreadListItemRuntimeProvider.js.map +1 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +6 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useComposer.d.ts +4 -0
- package/dist/hooks/useComposer.d.ts.map +1 -0
- package/dist/hooks/useComposer.js +5 -0
- package/dist/hooks/useComposer.js.map +1 -0
- package/dist/hooks/useContentPart.d.ts +2 -0
- package/dist/hooks/useContentPart.d.ts.map +1 -0
- package/dist/hooks/useContentPart.js +5 -0
- package/dist/hooks/useContentPart.js.map +1 -0
- package/dist/hooks/useMessage.d.ts +4 -0
- package/dist/hooks/useMessage.d.ts.map +1 -0
- package/dist/hooks/useMessage.js +5 -0
- package/dist/hooks/useMessage.js.map +1 -0
- package/dist/hooks/useThread.d.ts +4 -0
- package/dist/hooks/useThread.d.ts.map +1 -0
- package/dist/hooks/useThread.js +5 -0
- package/dist/hooks/useThread.js.map +1 -0
- package/dist/hooks/useThreadList.d.ts +4 -0
- package/dist/hooks/useThreadList.d.ts.map +1 -0
- package/dist/hooks/useThreadList.js +5 -0
- package/dist/hooks/useThreadList.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/internal.d.ts +4 -0
- package/dist/internal.d.ts.map +1 -0
- package/dist/internal.js +3 -0
- package/dist/internal.js.map +1 -0
- package/dist/primitive-hooks/index.d.ts +14 -0
- package/dist/primitive-hooks/index.d.ts.map +1 -0
- package/dist/primitive-hooks/index.js +14 -0
- package/dist/primitive-hooks/index.js.map +1 -0
- package/dist/primitive-hooks/useActionBarCopy.d.ts +10 -0
- package/dist/primitive-hooks/useActionBarCopy.d.ts.map +1 -0
- package/dist/primitive-hooks/useActionBarCopy.js +26 -0
- package/dist/primitive-hooks/useActionBarCopy.js.map +1 -0
- package/dist/primitive-hooks/useActionBarEdit.d.ts +5 -0
- package/dist/primitive-hooks/useActionBarEdit.d.ts.map +1 -0
- package/dist/primitive-hooks/useActionBarEdit.js +11 -0
- package/dist/primitive-hooks/useActionBarEdit.js.map +1 -0
- package/dist/primitive-hooks/useActionBarFeedback.d.ts +9 -0
- package/dist/primitive-hooks/useActionBarFeedback.d.ts.map +1 -0
- package/dist/primitive-hooks/useActionBarFeedback.js +19 -0
- package/dist/primitive-hooks/useActionBarFeedback.js.map +1 -0
- package/dist/primitive-hooks/useActionBarReload.d.ts +5 -0
- package/dist/primitive-hooks/useActionBarReload.d.ts.map +1 -0
- package/dist/primitive-hooks/useActionBarReload.js +13 -0
- package/dist/primitive-hooks/useActionBarReload.js.map +1 -0
- package/dist/primitive-hooks/useComposerCancel.d.ts +5 -0
- package/dist/primitive-hooks/useComposerCancel.d.ts.map +1 -0
- package/dist/primitive-hooks/useComposerCancel.js +11 -0
- package/dist/primitive-hooks/useComposerCancel.js.map +1 -0
- package/dist/primitive-hooks/useComposerSend.d.ts +5 -0
- package/dist/primitive-hooks/useComposerSend.d.ts.map +1 -0
- package/dist/primitive-hooks/useComposerSend.js +11 -0
- package/dist/primitive-hooks/useComposerSend.js.map +1 -0
- package/dist/primitive-hooks/useEditComposerCancel.d.ts +4 -0
- package/dist/primitive-hooks/useEditComposerCancel.d.ts.map +1 -0
- package/dist/primitive-hooks/useEditComposerCancel.js +10 -0
- package/dist/primitive-hooks/useEditComposerCancel.js.map +1 -0
- package/dist/primitive-hooks/useEditComposerSend.d.ts +5 -0
- package/dist/primitive-hooks/useEditComposerSend.d.ts.map +1 -0
- package/dist/primitive-hooks/useEditComposerSend.js +11 -0
- package/dist/primitive-hooks/useEditComposerSend.js.map +1 -0
- package/dist/primitive-hooks/useMessageBranching.d.ts +7 -0
- package/dist/primitive-hooks/useMessageBranching.d.ts.map +1 -0
- package/dist/primitive-hooks/useMessageBranching.js +15 -0
- package/dist/primitive-hooks/useMessageBranching.js.map +1 -0
- package/dist/primitive-hooks/useMessageReload.d.ts +5 -0
- package/dist/primitive-hooks/useMessageReload.d.ts.map +1 -0
- package/dist/primitive-hooks/useMessageReload.js +11 -0
- package/dist/primitive-hooks/useMessageReload.js.map +1 -0
- package/dist/primitive-hooks/useThreadIsEmpty.d.ts +2 -0
- package/dist/primitive-hooks/useThreadIsEmpty.d.ts.map +1 -0
- package/dist/primitive-hooks/useThreadIsEmpty.js +5 -0
- package/dist/primitive-hooks/useThreadIsEmpty.js.map +1 -0
- package/dist/primitive-hooks/useThreadIsRunning.d.ts +2 -0
- package/dist/primitive-hooks/useThreadIsRunning.d.ts.map +1 -0
- package/dist/primitive-hooks/useThreadIsRunning.js +5 -0
- package/dist/primitive-hooks/useThreadIsRunning.js.map +1 -0
- package/dist/primitive-hooks/useThreadMessages.d.ts +3 -0
- package/dist/primitive-hooks/useThreadMessages.d.ts.map +1 -0
- package/dist/primitive-hooks/useThreadMessages.js +5 -0
- package/dist/primitive-hooks/useThreadMessages.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarCopy.d.ts +10 -0
- package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarCopy.js +11 -0
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarEdit.d.ts +7 -0
- package/dist/primitives/actionBar/ActionBarEdit.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarEdit.js +8 -0
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts +9 -0
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +8 -0
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts +9 -0
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +8 -0
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -0
- package/dist/primitives/actionBar/ActionBarReload.d.ts +7 -0
- package/dist/primitives/actionBar/ActionBarReload.d.ts.map +1 -0
- package/dist/primitives/actionBar/ActionBarReload.js +8 -0
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -0
- package/dist/primitives/actionBar/index.d.ts +6 -0
- package/dist/primitives/actionBar/index.d.ts.map +1 -0
- package/dist/primitives/actionBar/index.js +6 -0
- package/dist/primitives/actionBar/index.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerCount.d.ts +4 -0
- package/dist/primitives/branchPicker/BranchPickerCount.d.ts.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerCount.js +8 -0
- package/dist/primitives/branchPicker/BranchPickerCount.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts +7 -0
- package/dist/primitives/branchPicker/BranchPickerNext.d.ts.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerNext.js +20 -0
- package/dist/primitives/branchPicker/BranchPickerNext.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerNumber.d.ts +4 -0
- package/dist/primitives/branchPicker/BranchPickerNumber.d.ts.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerNumber.js +8 -0
- package/dist/primitives/branchPicker/BranchPickerNumber.js.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts +7 -0
- package/dist/primitives/branchPicker/BranchPickerPrevious.d.ts.map +1 -0
- package/dist/primitives/branchPicker/BranchPickerPrevious.js +20 -0
- package/dist/primitives/branchPicker/BranchPickerPrevious.js.map +1 -0
- package/dist/primitives/branchPicker/index.d.ts +5 -0
- package/dist/primitives/branchPicker/index.d.ts.map +1 -0
- package/dist/primitives/branchPicker/index.js +5 -0
- package/dist/primitives/branchPicker/index.js.map +1 -0
- package/dist/primitives/composer/ComposerCancel.d.ts +7 -0
- package/dist/primitives/composer/ComposerCancel.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerCancel.js +8 -0
- package/dist/primitives/composer/ComposerCancel.js.map +1 -0
- package/dist/primitives/composer/ComposerInput.d.ts +4 -0
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerInput.js +13 -0
- package/dist/primitives/composer/ComposerInput.js.map +1 -0
- package/dist/primitives/composer/ComposerRoot.d.ts +7 -0
- package/dist/primitives/composer/ComposerRoot.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerRoot.js +6 -0
- package/dist/primitives/composer/ComposerRoot.js.map +1 -0
- package/dist/primitives/composer/ComposerSend.d.ts +7 -0
- package/dist/primitives/composer/ComposerSend.d.ts.map +1 -0
- package/dist/primitives/composer/ComposerSend.js +8 -0
- package/dist/primitives/composer/ComposerSend.js.map +1 -0
- package/dist/primitives/composer/EditComposerCancel.d.ts +7 -0
- package/dist/primitives/composer/EditComposerCancel.d.ts.map +1 -0
- package/dist/primitives/composer/EditComposerCancel.js +8 -0
- package/dist/primitives/composer/EditComposerCancel.js.map +1 -0
- package/dist/primitives/composer/EditComposerInput.d.ts +4 -0
- package/dist/primitives/composer/EditComposerInput.d.ts.map +1 -0
- package/dist/primitives/composer/EditComposerInput.js +13 -0
- package/dist/primitives/composer/EditComposerInput.js.map +1 -0
- package/dist/primitives/composer/EditComposerSend.d.ts +7 -0
- package/dist/primitives/composer/EditComposerSend.d.ts.map +1 -0
- package/dist/primitives/composer/EditComposerSend.js +8 -0
- package/dist/primitives/composer/EditComposerSend.js.map +1 -0
- package/dist/primitives/composer/index.d.ts +8 -0
- package/dist/primitives/composer/index.d.ts.map +1 -0
- package/dist/primitives/composer/index.js +8 -0
- package/dist/primitives/composer/index.js.map +1 -0
- package/dist/primitives/message/MessageContent.d.ts +50 -0
- package/dist/primitives/message/MessageContent.d.ts.map +1 -0
- package/dist/primitives/message/MessageContent.js +44 -0
- package/dist/primitives/message/MessageContent.js.map +1 -0
- package/dist/primitives/message/MessageIf.d.ts +10 -0
- package/dist/primitives/message/MessageIf.d.ts.map +1 -0
- package/dist/primitives/message/MessageIf.js +24 -0
- package/dist/primitives/message/MessageIf.js.map +1 -0
- package/dist/primitives/message/MessageRoot.d.ts +7 -0
- package/dist/primitives/message/MessageRoot.d.ts.map +1 -0
- package/dist/primitives/message/MessageRoot.js +6 -0
- package/dist/primitives/message/MessageRoot.js.map +1 -0
- package/dist/primitives/message/index.d.ts +4 -0
- package/dist/primitives/message/index.d.ts.map +1 -0
- package/dist/primitives/message/index.js +4 -0
- package/dist/primitives/message/index.js.map +1 -0
- package/dist/primitives/thread/ThreadEmpty.d.ts +6 -0
- package/dist/primitives/thread/ThreadEmpty.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadEmpty.js +9 -0
- package/dist/primitives/thread/ThreadEmpty.js.map +1 -0
- package/dist/primitives/thread/ThreadIf.d.ts +8 -0
- package/dist/primitives/thread/ThreadIf.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadIf.js +16 -0
- package/dist/primitives/thread/ThreadIf.js.map +1 -0
- package/dist/primitives/thread/ThreadMessages.d.ts +11 -0
- package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadMessages.js +23 -0
- package/dist/primitives/thread/ThreadMessages.js.map +1 -0
- package/dist/primitives/thread/ThreadRoot.d.ts +7 -0
- package/dist/primitives/thread/ThreadRoot.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadRoot.js +6 -0
- package/dist/primitives/thread/ThreadRoot.js.map +1 -0
- package/dist/primitives/thread/index.d.ts +5 -0
- package/dist/primitives/thread/index.d.ts.map +1 -0
- package/dist/primitives/thread/index.js +5 -0
- package/dist/primitives/thread/index.js.map +1 -0
- package/dist/primitives/threadList/ThreadListItems.d.ts +10 -0
- package/dist/primitives/threadList/ThreadListItems.d.ts.map +1 -0
- package/dist/primitives/threadList/ThreadListItems.js +13 -0
- package/dist/primitives/threadList/ThreadListItems.js.map +1 -0
- package/dist/primitives/threadList/ThreadListNew.d.ts +7 -0
- package/dist/primitives/threadList/ThreadListNew.d.ts.map +1 -0
- package/dist/primitives/threadList/ThreadListNew.js +12 -0
- package/dist/primitives/threadList/ThreadListNew.js.map +1 -0
- package/dist/primitives/threadList/ThreadListRoot.d.ts +7 -0
- package/dist/primitives/threadList/ThreadListRoot.d.ts.map +1 -0
- package/dist/primitives/threadList/ThreadListRoot.js +6 -0
- package/dist/primitives/threadList/ThreadListRoot.js.map +1 -0
- package/dist/primitives/threadList/index.d.ts +4 -0
- package/dist/primitives/threadList/index.d.ts.map +1 -0
- package/dist/primitives/threadList/index.js +4 -0
- package/dist/primitives/threadList/index.js.map +1 -0
- package/dist/runtimes/RemoteThreadListHookInstanceManager.d.ts +96 -0
- package/dist/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -0
- package/dist/runtimes/RemoteThreadListHookInstanceManager.js +110 -0
- package/dist/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -0
- package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +112 -0
- package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -0
- package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.js +434 -0
- package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -0
- package/dist/runtimes/index.d.ts +3 -0
- package/dist/runtimes/index.d.ts.map +1 -0
- package/dist/runtimes/index.js +3 -0
- package/dist/runtimes/index.js.map +1 -0
- package/dist/runtimes/runtime-adapter.d.ts +3 -0
- package/dist/runtimes/runtime-adapter.d.ts.map +1 -0
- package/dist/runtimes/runtime-adapter.js +44 -0
- package/dist/runtimes/runtime-adapter.js.map +1 -0
- package/dist/runtimes/useLocalRuntime.d.ts +18 -0
- package/dist/runtimes/useLocalRuntime.d.ts.map +1 -0
- package/dist/runtimes/useLocalRuntime.js +57 -0
- package/dist/runtimes/useLocalRuntime.js.map +1 -0
- package/dist/runtimes/useRemoteThreadListRuntime.d.ts +4 -0
- package/dist/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -0
- package/dist/runtimes/useRemoteThreadListRuntime.js +37 -0
- package/dist/runtimes/useRemoteThreadListRuntime.js.map +1 -0
- package/package.json +77 -0
- package/src/adapters/LocalStorageThreadListAdapter.tsx +227 -0
- package/src/adapters/TitleGenerationAdapter.ts +20 -0
- package/src/adapters/index.ts +5 -0
- package/src/context/AssistantContext.tsx +44 -0
- package/src/context/index.ts +1 -0
- package/src/context/providers/RuntimeAdapterProvider.tsx +40 -0
- package/src/context/providers/ThreadListItemRuntimeProvider.tsx +16 -0
- package/src/hooks/index.ts +5 -0
- package/src/hooks/useComposer.ts +14 -0
- package/src/hooks/useContentPart.ts +5 -0
- package/src/hooks/useMessage.ts +14 -0
- package/src/hooks/useThread.ts +14 -0
- package/src/hooks/useThreadList.ts +14 -0
- package/src/index.ts +122 -0
- package/src/internal.ts +22 -0
- package/src/primitive-hooks/index.ts +19 -0
- package/src/primitive-hooks/useActionBarCopy.ts +38 -0
- package/src/primitive-hooks/useActionBarEdit.ts +13 -0
- package/src/primitive-hooks/useActionBarFeedback.ts +28 -0
- package/src/primitive-hooks/useActionBarReload.ts +18 -0
- package/src/primitive-hooks/useComposerCancel.ts +13 -0
- package/src/primitive-hooks/useComposerSend.ts +13 -0
- package/src/primitive-hooks/useEditComposerCancel.ts +12 -0
- package/src/primitive-hooks/useEditComposerSend.ts +13 -0
- package/src/primitive-hooks/useMessageBranching.ts +18 -0
- package/src/primitive-hooks/useMessageReload.ts +13 -0
- package/src/primitive-hooks/useThreadIsEmpty.ts +5 -0
- package/src/primitive-hooks/useThreadIsRunning.ts +5 -0
- package/src/primitive-hooks/useThreadMessages.ts +6 -0
- package/src/primitives/actionBar/ActionBarCopy.tsx +34 -0
- package/src/primitives/actionBar/ActionBarEdit.tsx +25 -0
- package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +23 -0
- package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +23 -0
- package/src/primitives/actionBar/ActionBarReload.tsx +25 -0
- package/src/primitives/actionBar/index.ts +11 -0
- package/src/primitives/branchPicker/BranchPickerCount.tsx +9 -0
- package/src/primitives/branchPicker/BranchPickerNext.tsx +37 -0
- package/src/primitives/branchPicker/BranchPickerNumber.tsx +9 -0
- package/src/primitives/branchPicker/BranchPickerPrevious.tsx +37 -0
- package/src/primitives/branchPicker/index.ts +16 -0
- package/src/primitives/composer/ComposerCancel.tsx +25 -0
- package/src/primitives/composer/ComposerInput.tsx +19 -0
- package/src/primitives/composer/ComposerRoot.tsx +10 -0
- package/src/primitives/composer/ComposerSend.tsx +25 -0
- package/src/primitives/composer/EditComposerCancel.tsx +20 -0
- package/src/primitives/composer/EditComposerInput.tsx +22 -0
- package/src/primitives/composer/EditComposerSend.tsx +25 -0
- package/src/primitives/composer/index.ts +16 -0
- package/src/primitives/message/MessageContent.tsx +108 -0
- package/src/primitives/message/MessageIf.tsx +40 -0
- package/src/primitives/message/MessageRoot.tsx +10 -0
- package/src/primitives/message/index.ts +3 -0
- package/src/primitives/thread/ThreadEmpty.tsx +12 -0
- package/src/primitives/thread/ThreadIf.tsx +23 -0
- package/src/primitives/thread/ThreadMessages.tsx +61 -0
- package/src/primitives/thread/ThreadRoot.tsx +10 -0
- package/src/primitives/thread/index.ts +4 -0
- package/src/primitives/threadList/ThreadListItems.tsx +35 -0
- package/src/primitives/threadList/ThreadListNew.tsx +24 -0
- package/src/primitives/threadList/ThreadListRoot.tsx +13 -0
- package/src/primitives/threadList/index.ts +3 -0
- package/src/runtimes/RemoteThreadListHookInstanceManager.tsx +180 -0
- package/src/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +528 -0
- package/src/runtimes/index.ts +2 -0
- package/src/runtimes/runtime-adapter.ts +63 -0
- package/src/runtimes/useLocalRuntime.ts +100 -0
- package/src/runtimes/useRemoteThreadListRuntime.ts +64 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { useState, useEffect, useMemo } from "react";
|
|
2
|
+
import { BaseAssistantRuntimeCore, AssistantRuntimeImpl, } from "@assistant-ui/core/internal";
|
|
3
|
+
import { RemoteThreadListThreadListRuntimeCore } from "./RemoteThreadListThreadListRuntimeCore.js";
|
|
4
|
+
import { useAui } from "@assistant-ui/store";
|
|
5
|
+
class RemoteThreadListRuntimeCore extends BaseAssistantRuntimeCore {
|
|
6
|
+
threads;
|
|
7
|
+
constructor(options) {
|
|
8
|
+
super();
|
|
9
|
+
this.threads = new RemoteThreadListThreadListRuntimeCore(options, this._contextProvider);
|
|
10
|
+
}
|
|
11
|
+
get RenderComponent() {
|
|
12
|
+
return this.threads.__internal_RenderComponent;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
const useRemoteThreadListRuntimeImpl = (options) => {
|
|
16
|
+
const [runtime] = useState(() => new RemoteThreadListRuntimeCore(options));
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
runtime.threads.__internal_setOptions(options);
|
|
19
|
+
runtime.threads.__internal_load();
|
|
20
|
+
}, [runtime, options]);
|
|
21
|
+
return useMemo(() => new AssistantRuntimeImpl(runtime), [runtime]);
|
|
22
|
+
};
|
|
23
|
+
export const useRemoteThreadListRuntime = (options) => {
|
|
24
|
+
const aui = useAui();
|
|
25
|
+
const isNested = aui.threadListItem.source !== null;
|
|
26
|
+
if (isNested) {
|
|
27
|
+
if (!options.allowNesting) {
|
|
28
|
+
throw new Error("useRemoteThreadListRuntime cannot be nested inside another RemoteThreadListRuntime. " +
|
|
29
|
+
"Set allowNesting: true to allow nesting (the inner runtime will become a no-op).");
|
|
30
|
+
}
|
|
31
|
+
// If allowNesting is true and already inside a thread list context,
|
|
32
|
+
// just call the runtimeHook directly (no-op behavior)
|
|
33
|
+
return options.runtimeHook();
|
|
34
|
+
}
|
|
35
|
+
return useRemoteThreadListRuntimeImpl(options);
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=useRemoteThreadListRuntime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useRemoteThreadListRuntime.js","sourceRoot":"","sources":["../../src/runtimes/useRemoteThreadListRuntime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,GAErB,MAAM,6BAA6B,CAAC;AAKrC,OAAO,EAAE,qCAAqC,EAAE,mDAAgD;AAChG,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,MAAM,2BACJ,SAAQ,wBAAwB;IAGhB,OAAO,CAAC;IAExB,YAAY,OAAgC;QAC1C,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,IAAI,qCAAqC,CACtD,OAAO,EACP,IAAI,CAAC,gBAAgB,CACtB,CAAC;IACJ,CAAC;IAED,IAAW,eAAe;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC;IACjD,CAAC;CACF;AAED,MAAM,8BAA8B,GAAG,CACrC,OAAgC,EACd,EAAE;IACpB,MAAM,CAAC,OAAO,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QAC/C,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;IACpC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvB,OAAO,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,OAAgC,EACd,EAAE;IACpB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;IACrB,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,MAAM,KAAK,IAAI,CAAC;IAEpD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,sFAAsF;gBACpF,kFAAkF,CACrF,CAAC;QACJ,CAAC;QAED,oEAAoE;QACpE,sDAAsD;QACtD,OAAO,OAAO,CAAC,WAAW,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,8BAA8B,CAAC,OAAO,CAAC,CAAC;AACjD,CAAC,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@assistant-ui/react-native",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "React Native bindings for assistant-ui",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"assistant",
|
|
7
|
+
"ai",
|
|
8
|
+
"chat",
|
|
9
|
+
"react-native",
|
|
10
|
+
"mobile"
|
|
11
|
+
],
|
|
12
|
+
"author": "AgentbaseAI Inc.",
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"type": "module",
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"aui-source": "./src/index.ts",
|
|
18
|
+
"types": "./dist/index.d.ts",
|
|
19
|
+
"default": "./dist/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./internal": {
|
|
22
|
+
"aui-source": "./src/internal.ts",
|
|
23
|
+
"types": "./dist/internal.d.ts",
|
|
24
|
+
"default": "./dist/internal.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"main": "./dist/index.js",
|
|
28
|
+
"types": "./dist/index.d.ts",
|
|
29
|
+
"files": [
|
|
30
|
+
"dist",
|
|
31
|
+
"src",
|
|
32
|
+
"README.md"
|
|
33
|
+
],
|
|
34
|
+
"sideEffects": false,
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build": "aui-build",
|
|
37
|
+
"test": "vitest run",
|
|
38
|
+
"test:watch": "vitest"
|
|
39
|
+
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@assistant-ui/core": "^0.1.0",
|
|
42
|
+
"@assistant-ui/store": "^0.2.0",
|
|
43
|
+
"@assistant-ui/tap": "^0.5.0",
|
|
44
|
+
"assistant-stream": "^0.3.3",
|
|
45
|
+
"zustand": "^5.0.11"
|
|
46
|
+
},
|
|
47
|
+
"peerDependencies": {
|
|
48
|
+
"@types/react": "*",
|
|
49
|
+
"react": "^18 || ^19",
|
|
50
|
+
"react-native": "*"
|
|
51
|
+
},
|
|
52
|
+
"peerDependenciesMeta": {
|
|
53
|
+
"@types/react": {
|
|
54
|
+
"optional": true
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"devDependencies": {
|
|
58
|
+
"@assistant-ui/x-buildutils": "workspace:*",
|
|
59
|
+
"@types/react": "^19.2.14",
|
|
60
|
+
"react": "^19.2.4",
|
|
61
|
+
"react-native": "^0.84.0",
|
|
62
|
+
"vitest": "^4.0.18"
|
|
63
|
+
},
|
|
64
|
+
"publishConfig": {
|
|
65
|
+
"access": "public",
|
|
66
|
+
"provenance": true
|
|
67
|
+
},
|
|
68
|
+
"homepage": "https://www.assistant-ui.com/",
|
|
69
|
+
"repository": {
|
|
70
|
+
"type": "git",
|
|
71
|
+
"url": "git+https://github.com/assistant-ui/assistant-ui.git",
|
|
72
|
+
"directory": "packages/react-native"
|
|
73
|
+
},
|
|
74
|
+
"bugs": {
|
|
75
|
+
"url": "https://github.com/assistant-ui/assistant-ui/issues"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { type AssistantStream, createAssistantStream } from "assistant-stream";
|
|
2
|
+
import { FC, PropsWithChildren, useMemo } from "react";
|
|
3
|
+
import { useAui } from "@assistant-ui/store";
|
|
4
|
+
import type {
|
|
5
|
+
RemoteThreadInitializeResponse,
|
|
6
|
+
RemoteThreadListAdapter,
|
|
7
|
+
RemoteThreadListResponse,
|
|
8
|
+
RemoteThreadMetadata,
|
|
9
|
+
ThreadHistoryAdapter,
|
|
10
|
+
ThreadMessage,
|
|
11
|
+
} from "@assistant-ui/core";
|
|
12
|
+
import type {
|
|
13
|
+
ExportedMessageRepository,
|
|
14
|
+
ExportedMessageRepositoryItem,
|
|
15
|
+
} from "@assistant-ui/core/internal";
|
|
16
|
+
import { RuntimeAdapterProvider } from "../context/providers/RuntimeAdapterProvider";
|
|
17
|
+
import type { TitleGenerationAdapter } from "./TitleGenerationAdapter";
|
|
18
|
+
|
|
19
|
+
type AsyncStorageLike = {
|
|
20
|
+
getItem(key: string): Promise<string | null>;
|
|
21
|
+
setItem(key: string, value: string): Promise<void>;
|
|
22
|
+
removeItem(key: string): Promise<void>;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
type LocalStorageAdapterOptions = {
|
|
26
|
+
storage: AsyncStorageLike;
|
|
27
|
+
prefix?: string | undefined;
|
|
28
|
+
titleGenerator?: TitleGenerationAdapter | undefined;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
type StoredThreadMetadata = {
|
|
32
|
+
remoteId: string;
|
|
33
|
+
externalId?: string;
|
|
34
|
+
status: "regular" | "archived";
|
|
35
|
+
title?: string;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
class AsyncStorageHistoryAdapter implements ThreadHistoryAdapter {
|
|
39
|
+
constructor(
|
|
40
|
+
private storage: AsyncStorageLike,
|
|
41
|
+
private aui: ReturnType<typeof useAui>,
|
|
42
|
+
private prefix: string,
|
|
43
|
+
) {}
|
|
44
|
+
|
|
45
|
+
private _messagesKey(remoteId: string) {
|
|
46
|
+
return `${this.prefix}messages:${remoteId}`;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
async load(): Promise<ExportedMessageRepository> {
|
|
50
|
+
const remoteId = this.aui.threadListItem().getState().remoteId;
|
|
51
|
+
if (!remoteId) return { messages: [] };
|
|
52
|
+
|
|
53
|
+
const raw = await this.storage.getItem(this._messagesKey(remoteId));
|
|
54
|
+
if (!raw) return { messages: [] };
|
|
55
|
+
return JSON.parse(raw) as ExportedMessageRepository;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async append(item: ExportedMessageRepositoryItem): Promise<void> {
|
|
59
|
+
const { remoteId } = await this.aui.threadListItem().initialize();
|
|
60
|
+
|
|
61
|
+
const key = this._messagesKey(remoteId);
|
|
62
|
+
const raw = await this.storage.getItem(key);
|
|
63
|
+
const repo: ExportedMessageRepository = raw
|
|
64
|
+
? (JSON.parse(raw) as ExportedMessageRepository)
|
|
65
|
+
: { messages: [] };
|
|
66
|
+
|
|
67
|
+
const idx = repo.messages.findIndex(
|
|
68
|
+
(m) => m.message.id === item.message.id,
|
|
69
|
+
);
|
|
70
|
+
if (idx >= 0) {
|
|
71
|
+
repo.messages[idx] = item;
|
|
72
|
+
} else {
|
|
73
|
+
repo.messages.push(item);
|
|
74
|
+
}
|
|
75
|
+
repo.headId = item.message.id;
|
|
76
|
+
|
|
77
|
+
await this.storage.setItem(key, JSON.stringify(repo));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const createHistoryProvider = (
|
|
82
|
+
storage: AsyncStorageLike,
|
|
83
|
+
prefix: string,
|
|
84
|
+
): FC<PropsWithChildren> => {
|
|
85
|
+
const Provider: FC<PropsWithChildren> = ({ children }) => {
|
|
86
|
+
const aui = useAui();
|
|
87
|
+
const history = useMemo(
|
|
88
|
+
() => new AsyncStorageHistoryAdapter(storage, aui, prefix),
|
|
89
|
+
[aui],
|
|
90
|
+
);
|
|
91
|
+
const adapters = useMemo(() => ({ history }), [history]);
|
|
92
|
+
|
|
93
|
+
return (
|
|
94
|
+
<RuntimeAdapterProvider adapters={adapters}>
|
|
95
|
+
{children}
|
|
96
|
+
</RuntimeAdapterProvider>
|
|
97
|
+
);
|
|
98
|
+
};
|
|
99
|
+
return Provider;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
export const createLocalStorageAdapter = (
|
|
103
|
+
options: LocalStorageAdapterOptions,
|
|
104
|
+
): RemoteThreadListAdapter => {
|
|
105
|
+
const { storage, prefix = "@assistant-ui:", titleGenerator } = options;
|
|
106
|
+
|
|
107
|
+
const threadsKey = `${prefix}threads`;
|
|
108
|
+
const messagesKey = (threadId: string) => `${prefix}messages:${threadId}`;
|
|
109
|
+
|
|
110
|
+
const loadThreadMetadata = async (): Promise<StoredThreadMetadata[]> => {
|
|
111
|
+
const raw = await storage.getItem(threadsKey);
|
|
112
|
+
return raw ? (JSON.parse(raw) as StoredThreadMetadata[]) : [];
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
const saveThreadMetadata = async (
|
|
116
|
+
threads: StoredThreadMetadata[],
|
|
117
|
+
): Promise<void> => {
|
|
118
|
+
await storage.setItem(threadsKey, JSON.stringify(threads));
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
const adapter: RemoteThreadListAdapter = {
|
|
122
|
+
unstable_Provider: createHistoryProvider(storage, prefix),
|
|
123
|
+
|
|
124
|
+
async list(): Promise<RemoteThreadListResponse> {
|
|
125
|
+
const threads = await loadThreadMetadata();
|
|
126
|
+
return {
|
|
127
|
+
threads: threads.map((t) => ({
|
|
128
|
+
remoteId: t.remoteId,
|
|
129
|
+
externalId: t.externalId,
|
|
130
|
+
status: t.status,
|
|
131
|
+
title: t.title,
|
|
132
|
+
})),
|
|
133
|
+
};
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
async initialize(
|
|
137
|
+
threadId: string,
|
|
138
|
+
): Promise<RemoteThreadInitializeResponse> {
|
|
139
|
+
const remoteId = threadId;
|
|
140
|
+
const threads = await loadThreadMetadata();
|
|
141
|
+
|
|
142
|
+
// Only add if not already present
|
|
143
|
+
if (!threads.some((t) => t.remoteId === remoteId)) {
|
|
144
|
+
threads.unshift({
|
|
145
|
+
remoteId,
|
|
146
|
+
status: "regular",
|
|
147
|
+
});
|
|
148
|
+
await saveThreadMetadata(threads);
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
return { remoteId, externalId: undefined };
|
|
152
|
+
},
|
|
153
|
+
|
|
154
|
+
async rename(remoteId: string, newTitle: string): Promise<void> {
|
|
155
|
+
const threads = await loadThreadMetadata();
|
|
156
|
+
const thread = threads.find((t) => t.remoteId === remoteId);
|
|
157
|
+
if (thread) {
|
|
158
|
+
thread.title = newTitle;
|
|
159
|
+
await saveThreadMetadata(threads);
|
|
160
|
+
}
|
|
161
|
+
},
|
|
162
|
+
|
|
163
|
+
async archive(remoteId: string): Promise<void> {
|
|
164
|
+
const threads = await loadThreadMetadata();
|
|
165
|
+
const thread = threads.find((t) => t.remoteId === remoteId);
|
|
166
|
+
if (thread) {
|
|
167
|
+
thread.status = "archived";
|
|
168
|
+
await saveThreadMetadata(threads);
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
|
|
172
|
+
async unarchive(remoteId: string): Promise<void> {
|
|
173
|
+
const threads = await loadThreadMetadata();
|
|
174
|
+
const thread = threads.find((t) => t.remoteId === remoteId);
|
|
175
|
+
if (thread) {
|
|
176
|
+
thread.status = "regular";
|
|
177
|
+
await saveThreadMetadata(threads);
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
async delete(remoteId: string): Promise<void> {
|
|
182
|
+
const threads = await loadThreadMetadata();
|
|
183
|
+
const filtered = threads.filter((t) => t.remoteId !== remoteId);
|
|
184
|
+
await saveThreadMetadata(filtered);
|
|
185
|
+
await storage.removeItem(messagesKey(remoteId));
|
|
186
|
+
},
|
|
187
|
+
|
|
188
|
+
async fetch(threadId: string): Promise<RemoteThreadMetadata> {
|
|
189
|
+
const threads = await loadThreadMetadata();
|
|
190
|
+
const thread = threads.find((t) => t.remoteId === threadId);
|
|
191
|
+
if (!thread) throw new Error("Thread not found");
|
|
192
|
+
return {
|
|
193
|
+
remoteId: thread.remoteId,
|
|
194
|
+
externalId: thread.externalId,
|
|
195
|
+
status: thread.status,
|
|
196
|
+
title: thread.title,
|
|
197
|
+
};
|
|
198
|
+
},
|
|
199
|
+
|
|
200
|
+
async generateTitle(
|
|
201
|
+
remoteId: string,
|
|
202
|
+
messages: readonly ThreadMessage[],
|
|
203
|
+
): Promise<AssistantStream> {
|
|
204
|
+
if (titleGenerator) {
|
|
205
|
+
const title = await titleGenerator.generateTitle(messages);
|
|
206
|
+
|
|
207
|
+
// Update the stored title
|
|
208
|
+
const threads = await loadThreadMetadata();
|
|
209
|
+
const thread = threads.find((t) => t.remoteId === remoteId);
|
|
210
|
+
if (thread) {
|
|
211
|
+
thread.title = title;
|
|
212
|
+
await saveThreadMetadata(threads);
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
// Return a stream with a single text part
|
|
216
|
+
return createAssistantStream((controller) => {
|
|
217
|
+
controller.appendText(title);
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
// No title generator — return empty stream
|
|
222
|
+
return createAssistantStream(() => {});
|
|
223
|
+
},
|
|
224
|
+
};
|
|
225
|
+
|
|
226
|
+
return adapter;
|
|
227
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ThreadMessage } from "@assistant-ui/core";
|
|
2
|
+
|
|
3
|
+
export type TitleGenerationAdapter = {
|
|
4
|
+
generateTitle(messages: readonly ThreadMessage[]): Promise<string>;
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
export const createSimpleTitleAdapter = (): TitleGenerationAdapter => {
|
|
8
|
+
return {
|
|
9
|
+
async generateTitle(messages) {
|
|
10
|
+
const firstUserMessage = messages.find((m) => m.role === "user");
|
|
11
|
+
if (!firstUserMessage) return "New Thread";
|
|
12
|
+
|
|
13
|
+
const textPart = firstUserMessage.content.find((p) => p.type === "text");
|
|
14
|
+
if (!textPart || textPart.type !== "text") return "New Thread";
|
|
15
|
+
|
|
16
|
+
const text = textPart.text.trim();
|
|
17
|
+
return text.length > 50 ? `${text.slice(0, 47)}...` : text;
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
};
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type ComponentType, type ReactNode, memo } from "react";
|
|
2
|
+
import { useAui, AuiProvider } from "@assistant-ui/store";
|
|
3
|
+
import type {
|
|
4
|
+
AssistantRuntime,
|
|
5
|
+
AssistantRuntimeCore,
|
|
6
|
+
} from "@assistant-ui/core";
|
|
7
|
+
import { RuntimeAdapter } from "../runtimes/runtime-adapter";
|
|
8
|
+
|
|
9
|
+
export const useAssistantRuntime = (): AssistantRuntime => {
|
|
10
|
+
const aui = useAui();
|
|
11
|
+
const runtime = aui.threads().__internal_getAssistantRuntime?.();
|
|
12
|
+
if (!runtime) {
|
|
13
|
+
throw new Error(
|
|
14
|
+
"useAssistantRuntime must be used within an AssistantProvider",
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
return runtime;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const getRenderComponent = (runtime: AssistantRuntime) => {
|
|
21
|
+
return (runtime as { _core?: AssistantRuntimeCore })._core?.RenderComponent as
|
|
22
|
+
| ComponentType
|
|
23
|
+
| undefined;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
export const AssistantProvider = memo(
|
|
27
|
+
({
|
|
28
|
+
runtime,
|
|
29
|
+
children,
|
|
30
|
+
}: {
|
|
31
|
+
runtime: AssistantRuntime;
|
|
32
|
+
children: ReactNode;
|
|
33
|
+
}) => {
|
|
34
|
+
const aui = useAui({ threads: RuntimeAdapter(runtime) }, { parent: null });
|
|
35
|
+
const RenderComponent = getRenderComponent(runtime);
|
|
36
|
+
|
|
37
|
+
return (
|
|
38
|
+
<AuiProvider value={aui}>
|
|
39
|
+
{RenderComponent && <RenderComponent />}
|
|
40
|
+
{children}
|
|
41
|
+
</AuiProvider>
|
|
42
|
+
);
|
|
43
|
+
},
|
|
44
|
+
);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { AssistantProvider, useAssistantRuntime } from "./AssistantContext";
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createContext, FC, ReactNode, useContext } from "react";
|
|
2
|
+
import type {
|
|
3
|
+
ThreadHistoryAdapter,
|
|
4
|
+
AttachmentAdapter,
|
|
5
|
+
} from "@assistant-ui/core";
|
|
6
|
+
|
|
7
|
+
export type RuntimeAdapters = {
|
|
8
|
+
history?: ThreadHistoryAdapter | undefined;
|
|
9
|
+
attachments?: AttachmentAdapter | undefined;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
const RuntimeAdaptersContext = createContext<RuntimeAdapters | null>(null);
|
|
13
|
+
|
|
14
|
+
export namespace RuntimeAdapterProvider {
|
|
15
|
+
export type Props = {
|
|
16
|
+
adapters: RuntimeAdapters;
|
|
17
|
+
children: ReactNode;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const RuntimeAdapterProvider: FC<RuntimeAdapterProvider.Props> = ({
|
|
22
|
+
adapters,
|
|
23
|
+
children,
|
|
24
|
+
}) => {
|
|
25
|
+
const context = useContext(RuntimeAdaptersContext);
|
|
26
|
+
return (
|
|
27
|
+
<RuntimeAdaptersContext.Provider
|
|
28
|
+
value={{
|
|
29
|
+
...context,
|
|
30
|
+
...adapters,
|
|
31
|
+
}}
|
|
32
|
+
>
|
|
33
|
+
{children}
|
|
34
|
+
</RuntimeAdaptersContext.Provider>
|
|
35
|
+
);
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export const useRuntimeAdapters = () => {
|
|
39
|
+
return useContext(RuntimeAdaptersContext);
|
|
40
|
+
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type FC, type PropsWithChildren } from "react";
|
|
2
|
+
import { useAui, AuiProvider } from "@assistant-ui/store";
|
|
3
|
+
import type { ThreadListItemRuntime } from "@assistant-ui/core";
|
|
4
|
+
import { ThreadListItemClient } from "@assistant-ui/core/store/internal";
|
|
5
|
+
|
|
6
|
+
export const ThreadListItemRuntimeProvider: FC<
|
|
7
|
+
PropsWithChildren<{
|
|
8
|
+
runtime: ThreadListItemRuntime;
|
|
9
|
+
}>
|
|
10
|
+
> = ({ runtime, children }) => {
|
|
11
|
+
const aui = useAui({
|
|
12
|
+
threadListItem: ThreadListItemClient({ runtime }),
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
return <AuiProvider value={aui}>{children}</AuiProvider>;
|
|
16
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ComposerState } from "@assistant-ui/core/store";
|
|
2
|
+
import { useAuiState } from "@assistant-ui/store";
|
|
3
|
+
|
|
4
|
+
export function useComposer(): ComposerState;
|
|
5
|
+
export function useComposer<TSelected>(
|
|
6
|
+
selector: (state: ComposerState) => TSelected,
|
|
7
|
+
): TSelected;
|
|
8
|
+
export function useComposer<TSelected = ComposerState>(
|
|
9
|
+
selector?: (state: ComposerState) => TSelected,
|
|
10
|
+
): TSelected {
|
|
11
|
+
return useAuiState((s) =>
|
|
12
|
+
selector ? selector(s.composer) : (s.composer as unknown as TSelected),
|
|
13
|
+
);
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MessageState } from "@assistant-ui/core/store";
|
|
2
|
+
import { useAuiState } from "@assistant-ui/store";
|
|
3
|
+
|
|
4
|
+
export function useMessage(): MessageState;
|
|
5
|
+
export function useMessage<TSelected>(
|
|
6
|
+
selector: (state: MessageState) => TSelected,
|
|
7
|
+
): TSelected;
|
|
8
|
+
export function useMessage<TSelected = MessageState>(
|
|
9
|
+
selector?: (state: MessageState) => TSelected,
|
|
10
|
+
): TSelected {
|
|
11
|
+
return useAuiState((s) =>
|
|
12
|
+
selector ? selector(s.message) : (s.message as unknown as TSelected),
|
|
13
|
+
);
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ThreadState } from "@assistant-ui/core/store";
|
|
2
|
+
import { useAuiState } from "@assistant-ui/store";
|
|
3
|
+
|
|
4
|
+
export function useThread(): ThreadState;
|
|
5
|
+
export function useThread<TSelected>(
|
|
6
|
+
selector: (state: ThreadState) => TSelected,
|
|
7
|
+
): TSelected;
|
|
8
|
+
export function useThread<TSelected = ThreadState>(
|
|
9
|
+
selector?: (state: ThreadState) => TSelected,
|
|
10
|
+
): TSelected {
|
|
11
|
+
return useAuiState((s) =>
|
|
12
|
+
selector ? selector(s.thread) : (s.thread as unknown as TSelected),
|
|
13
|
+
);
|
|
14
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ThreadsState } from "@assistant-ui/core/store";
|
|
2
|
+
import { useAuiState } from "@assistant-ui/store";
|
|
3
|
+
|
|
4
|
+
export function useThreadList(): ThreadsState;
|
|
5
|
+
export function useThreadList<TSelected>(
|
|
6
|
+
selector: (state: ThreadsState) => TSelected,
|
|
7
|
+
): TSelected;
|
|
8
|
+
export function useThreadList<TSelected = ThreadsState>(
|
|
9
|
+
selector?: (state: ThreadsState) => TSelected,
|
|
10
|
+
): TSelected {
|
|
11
|
+
return useAuiState((s) =>
|
|
12
|
+
selector ? selector(s.threads) : (s.threads as unknown as TSelected),
|
|
13
|
+
);
|
|
14
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
// Re-export core types
|
|
2
|
+
export type {
|
|
3
|
+
// Message types
|
|
4
|
+
ThreadMessage,
|
|
5
|
+
ThreadUserMessage,
|
|
6
|
+
ThreadAssistantMessage,
|
|
7
|
+
ThreadSystemMessage,
|
|
8
|
+
MessageStatus,
|
|
9
|
+
MessageRole,
|
|
10
|
+
ThreadMessageLike,
|
|
11
|
+
AppendMessage,
|
|
12
|
+
RunConfig,
|
|
13
|
+
// Message parts
|
|
14
|
+
TextMessagePart,
|
|
15
|
+
ReasoningMessagePart,
|
|
16
|
+
SourceMessagePart,
|
|
17
|
+
ToolCallMessagePart,
|
|
18
|
+
ImageMessagePart,
|
|
19
|
+
FileMessagePart,
|
|
20
|
+
DataMessagePart,
|
|
21
|
+
Unstable_AudioMessagePart,
|
|
22
|
+
ThreadUserMessagePart,
|
|
23
|
+
ThreadAssistantMessagePart,
|
|
24
|
+
// Runtime types
|
|
25
|
+
AssistantRuntime,
|
|
26
|
+
ThreadRuntime,
|
|
27
|
+
MessageRuntime,
|
|
28
|
+
ThreadComposerRuntime,
|
|
29
|
+
EditComposerRuntime,
|
|
30
|
+
ComposerRuntime,
|
|
31
|
+
ThreadListRuntime,
|
|
32
|
+
ThreadListItemRuntime,
|
|
33
|
+
// Runtime core types
|
|
34
|
+
ChatModelAdapter,
|
|
35
|
+
ChatModelRunOptions,
|
|
36
|
+
ChatModelRunResult,
|
|
37
|
+
RuntimeCapabilities,
|
|
38
|
+
// Attachment types
|
|
39
|
+
Attachment,
|
|
40
|
+
PendingAttachment,
|
|
41
|
+
AttachmentRuntime,
|
|
42
|
+
// Other
|
|
43
|
+
Unsubscribe,
|
|
44
|
+
} from "@assistant-ui/core";
|
|
45
|
+
|
|
46
|
+
// Re-export store scope state types
|
|
47
|
+
export type {
|
|
48
|
+
ThreadState,
|
|
49
|
+
ThreadsState,
|
|
50
|
+
MessageState,
|
|
51
|
+
ComposerState,
|
|
52
|
+
AttachmentState,
|
|
53
|
+
ThreadListItemState,
|
|
54
|
+
} from "@assistant-ui/core/store";
|
|
55
|
+
|
|
56
|
+
// Store hooks
|
|
57
|
+
export {
|
|
58
|
+
useAui,
|
|
59
|
+
useAuiState,
|
|
60
|
+
useAuiEvent,
|
|
61
|
+
AuiProvider,
|
|
62
|
+
} from "@assistant-ui/store";
|
|
63
|
+
|
|
64
|
+
// Context providers and hooks
|
|
65
|
+
export { AssistantProvider, useAssistantRuntime } from "./context";
|
|
66
|
+
|
|
67
|
+
// State hooks
|
|
68
|
+
export {
|
|
69
|
+
useThread,
|
|
70
|
+
useMessage,
|
|
71
|
+
useComposer,
|
|
72
|
+
useContentPart,
|
|
73
|
+
useThreadList,
|
|
74
|
+
} from "./hooks";
|
|
75
|
+
|
|
76
|
+
// Primitive hooks
|
|
77
|
+
export {
|
|
78
|
+
useThreadMessages,
|
|
79
|
+
useThreadIsRunning,
|
|
80
|
+
useThreadIsEmpty,
|
|
81
|
+
useComposerSend,
|
|
82
|
+
useComposerCancel,
|
|
83
|
+
useMessageReload,
|
|
84
|
+
useMessageBranching,
|
|
85
|
+
useActionBarCopy,
|
|
86
|
+
type UseActionBarCopyOptions,
|
|
87
|
+
useActionBarEdit,
|
|
88
|
+
useActionBarReload,
|
|
89
|
+
useActionBarFeedbackPositive,
|
|
90
|
+
useActionBarFeedbackNegative,
|
|
91
|
+
useEditComposerSend,
|
|
92
|
+
useEditComposerCancel,
|
|
93
|
+
} from "./primitive-hooks";
|
|
94
|
+
|
|
95
|
+
// Runtime
|
|
96
|
+
export {
|
|
97
|
+
useLocalRuntime,
|
|
98
|
+
type LocalRuntimeOptions,
|
|
99
|
+
useRemoteThreadListRuntime,
|
|
100
|
+
} from "./runtimes";
|
|
101
|
+
|
|
102
|
+
// Re-export core remote thread list types
|
|
103
|
+
export type {
|
|
104
|
+
RemoteThreadListAdapter,
|
|
105
|
+
RemoteThreadListOptions,
|
|
106
|
+
} from "@assistant-ui/core";
|
|
107
|
+
export { InMemoryThreadListAdapter } from "@assistant-ui/core";
|
|
108
|
+
|
|
109
|
+
// Primitives
|
|
110
|
+
export * from "./primitives/thread";
|
|
111
|
+
export * from "./primitives/composer";
|
|
112
|
+
export * from "./primitives/message";
|
|
113
|
+
export * from "./primitives/threadList";
|
|
114
|
+
export * from "./primitives/actionBar";
|
|
115
|
+
export * from "./primitives/branchPicker";
|
|
116
|
+
|
|
117
|
+
// Adapters
|
|
118
|
+
export {
|
|
119
|
+
type TitleGenerationAdapter,
|
|
120
|
+
createSimpleTitleAdapter,
|
|
121
|
+
createLocalStorageAdapter,
|
|
122
|
+
} from "./adapters";
|