@assistant-ui/react-native 0.1.2 → 0.1.4
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/context/AssistantContext.d.ts +1 -7
- package/dist/context/AssistantContext.d.ts.map +1 -1
- package/dist/context/AssistantContext.js +1 -15
- package/dist/context/AssistantContext.js.map +1 -1
- package/dist/context/index.d.ts +1 -1
- package/dist/context/index.d.ts.map +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context/index.js.map +1 -1
- package/dist/context/providers/RuntimeAdapterProvider.d.ts +1 -15
- package/dist/context/providers/RuntimeAdapterProvider.d.ts.map +1 -1
- package/dist/context/providers/RuntimeAdapterProvider.js +1 -13
- package/dist/context/providers/RuntimeAdapterProvider.js.map +1 -1
- package/dist/index.d.ts +12 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -16
- package/dist/index.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.d.ts +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.d.ts.map +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js +1 -1
- package/dist/primitives/actionBar/ActionBarCopy.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js +1 -1
- package/dist/primitives/actionBar/ActionBarEdit.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackNegative.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js +1 -1
- package/dist/primitives/actionBar/ActionBarFeedbackPositive.js.map +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js +1 -1
- package/dist/primitives/actionBar/ActionBarReload.js.map +1 -1
- package/dist/primitives/actionBar/index.d.ts +5 -5
- package/dist/primitives/actionBar/index.d.ts.map +1 -1
- package/dist/primitives/actionBar/index.js +5 -5
- package/dist/primitives/actionBar/index.js.map +1 -1
- package/dist/primitives/attachment/index.d.ts +4 -4
- package/dist/primitives/attachment/index.d.ts.map +1 -1
- package/dist/primitives/attachment/index.js +4 -4
- package/dist/primitives/attachment/index.js.map +1 -1
- package/dist/primitives/branchPicker/index.d.ts +4 -4
- package/dist/primitives/branchPicker/index.d.ts.map +1 -1
- package/dist/primitives/branchPicker/index.js +4 -4
- package/dist/primitives/branchPicker/index.js.map +1 -1
- package/dist/primitives/chainOfThought/index.d.ts +3 -3
- package/dist/primitives/chainOfThought/index.d.ts.map +1 -1
- package/dist/primitives/chainOfThought/index.js +3 -3
- package/dist/primitives/chainOfThought/index.js.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.d.ts +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAddAttachment.js +4 -6
- package/dist/primitives/composer/ComposerAddAttachment.js.map +1 -1
- package/dist/primitives/composer/ComposerCancel.js +3 -3
- package/dist/primitives/composer/ComposerCancel.js.map +1 -1
- package/dist/primitives/composer/ComposerInput.d.ts +10 -2
- package/dist/primitives/composer/ComposerInput.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerInput.js +36 -4
- package/dist/primitives/composer/ComposerInput.js.map +1 -1
- package/dist/primitives/composer/ComposerSend.js +3 -3
- package/dist/primitives/composer/ComposerSend.js.map +1 -1
- package/dist/primitives/composer/EditComposerCancel.js +1 -1
- package/dist/primitives/composer/EditComposerCancel.js.map +1 -1
- package/dist/primitives/composer/EditComposerSend.js +1 -1
- package/dist/primitives/composer/EditComposerSend.js.map +1 -1
- package/dist/primitives/composer/index.d.ts +10 -10
- package/dist/primitives/composer/index.d.ts.map +1 -1
- package/dist/primitives/composer/index.js +10 -10
- package/dist/primitives/composer/index.js.map +1 -1
- package/dist/primitives/message/index.d.ts +5 -5
- package/dist/primitives/message/index.d.ts.map +1 -1
- package/dist/primitives/message/index.js +5 -5
- package/dist/primitives/message/index.js.map +1 -1
- package/dist/primitives/suggestion/index.d.ts +3 -3
- package/dist/primitives/suggestion/index.d.ts.map +1 -1
- package/dist/primitives/suggestion/index.js +3 -3
- package/dist/primitives/suggestion/index.js.map +1 -1
- package/dist/primitives/thread/ThreadEmpty.js +1 -1
- package/dist/primitives/thread/ThreadEmpty.js.map +1 -1
- package/dist/primitives/thread/ThreadMessages.d.ts +23 -6
- package/dist/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadMessages.js +56 -15
- package/dist/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/primitives/thread/index.d.ts +7 -7
- package/dist/primitives/thread/index.d.ts.map +1 -1
- package/dist/primitives/thread/index.js +7 -7
- package/dist/primitives/thread/index.js.map +1 -1
- package/dist/primitives/threadList/index.d.ts +3 -3
- package/dist/primitives/threadList/index.d.ts.map +1 -1
- package/dist/primitives/threadList/index.js +3 -3
- package/dist/primitives/threadList/index.js.map +1 -1
- package/dist/primitives/threadListItem/index.d.ts +6 -6
- package/dist/primitives/threadListItem/index.d.ts.map +1 -1
- package/dist/primitives/threadListItem/index.js +6 -6
- package/dist/primitives/threadListItem/index.js.map +1 -1
- package/dist/runtimes/RemoteThreadListHookInstanceManager.d.ts +1 -95
- package/dist/runtimes/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/runtimes/RemoteThreadListHookInstanceManager.js +1 -109
- package/dist/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +1 -112
- package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.js +1 -439
- package/dist/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/useLocalRuntime.d.ts +1 -17
- package/dist/runtimes/useLocalRuntime.d.ts.map +1 -1
- package/dist/runtimes/useLocalRuntime.js +1 -61
- package/dist/runtimes/useLocalRuntime.js.map +1 -1
- package/dist/runtimes/useRemoteThreadListRuntime.d.ts +1 -3
- package/dist/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/runtimes/useRemoteThreadListRuntime.js +1 -46
- package/dist/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/package.json +3 -3
- package/src/context/AssistantContext.tsx +4 -31
- package/src/context/index.ts +4 -1
- package/src/context/providers/RuntimeAdapterProvider.tsx +5 -42
- package/src/index.ts +12 -39
- package/src/primitives/actionBar/ActionBarCopy.tsx +1 -1
- package/src/primitives/actionBar/ActionBarEdit.tsx +1 -1
- package/src/primitives/actionBar/ActionBarFeedbackNegative.tsx +1 -1
- package/src/primitives/actionBar/ActionBarFeedbackPositive.tsx +1 -1
- package/src/primitives/actionBar/ActionBarReload.tsx +1 -1
- package/src/primitives/actionBar/index.ts +16 -7
- package/src/primitives/attachment/index.ts +14 -5
- package/src/primitives/branchPicker/index.ts +8 -8
- package/src/primitives/chainOfThought/index.ts +5 -5
- package/src/primitives/composer/ComposerAddAttachment.tsx +4 -6
- package/src/primitives/composer/ComposerCancel.tsx +3 -3
- package/src/primitives/composer/ComposerInput.tsx +75 -5
- package/src/primitives/composer/ComposerSend.tsx +3 -3
- package/src/primitives/composer/EditComposerCancel.tsx +1 -1
- package/src/primitives/composer/EditComposerSend.tsx +1 -1
- package/src/primitives/composer/index.ts +27 -15
- package/src/primitives/message/index.ts +13 -7
- package/src/primitives/suggestion/index.ts +6 -6
- package/src/primitives/thread/ThreadEmpty.tsx +1 -1
- package/src/primitives/thread/ThreadMessages.tsx +103 -29
- package/src/primitives/thread/index.ts +17 -11
- package/src/primitives/threadList/index.ts +12 -3
- package/src/primitives/threadListItem/index.ts +11 -11
- package/src/runtimes/RemoteThreadListHookInstanceManager.tsx +1 -180
- package/src/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +1 -538
- package/src/runtimes/useLocalRuntime.ts +4 -105
- package/src/runtimes/useRemoteThreadListRuntime.ts +1 -80
- package/dist/adapters/LocalStorageThreadListAdapter.d.ts +0 -15
- package/dist/adapters/LocalStorageThreadListAdapter.d.ts.map +0 -1
- package/dist/adapters/LocalStorageThreadListAdapter.js +0 -154
- package/dist/adapters/LocalStorageThreadListAdapter.js.map +0 -1
- package/dist/adapters/TitleGenerationAdapter.d.ts +0 -6
- package/dist/adapters/TitleGenerationAdapter.d.ts.map +0 -1
- package/dist/adapters/TitleGenerationAdapter.js +0 -15
- package/dist/adapters/TitleGenerationAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -3
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js +0 -3
- package/dist/adapters/index.js.map +0 -1
- package/dist/primitive-hooks/index.d.ts +0 -15
- package/dist/primitive-hooks/index.d.ts.map +0 -1
- package/dist/primitive-hooks/index.js +0 -15
- package/dist/primitive-hooks/index.js.map +0 -1
- package/dist/primitive-hooks/useActionBarCopy.d.ts +0 -10
- package/dist/primitive-hooks/useActionBarCopy.d.ts.map +0 -1
- package/dist/primitive-hooks/useActionBarCopy.js +0 -26
- package/dist/primitive-hooks/useActionBarCopy.js.map +0 -1
- package/dist/primitive-hooks/useActionBarEdit.d.ts +0 -5
- package/dist/primitive-hooks/useActionBarEdit.d.ts.map +0 -1
- package/dist/primitive-hooks/useActionBarEdit.js +0 -11
- package/dist/primitive-hooks/useActionBarEdit.js.map +0 -1
- package/dist/primitive-hooks/useActionBarFeedback.d.ts +0 -9
- package/dist/primitive-hooks/useActionBarFeedback.d.ts.map +0 -1
- package/dist/primitive-hooks/useActionBarFeedback.js +0 -19
- package/dist/primitive-hooks/useActionBarFeedback.js.map +0 -1
- package/dist/primitive-hooks/useActionBarReload.d.ts +0 -5
- package/dist/primitive-hooks/useActionBarReload.d.ts.map +0 -1
- package/dist/primitive-hooks/useActionBarReload.js +0 -13
- package/dist/primitive-hooks/useActionBarReload.js.map +0 -1
- package/dist/primitive-hooks/useComposerAddAttachment.d.ts +0 -5
- package/dist/primitive-hooks/useComposerAddAttachment.d.ts.map +0 -1
- package/dist/primitive-hooks/useComposerAddAttachment.js +0 -10
- package/dist/primitive-hooks/useComposerAddAttachment.js.map +0 -1
- package/dist/primitive-hooks/useComposerCancel.d.ts +0 -5
- package/dist/primitive-hooks/useComposerCancel.d.ts.map +0 -1
- package/dist/primitive-hooks/useComposerCancel.js +0 -11
- package/dist/primitive-hooks/useComposerCancel.js.map +0 -1
- package/dist/primitive-hooks/useComposerSend.d.ts +0 -5
- package/dist/primitive-hooks/useComposerSend.d.ts.map +0 -1
- package/dist/primitive-hooks/useComposerSend.js +0 -11
- package/dist/primitive-hooks/useComposerSend.js.map +0 -1
- package/dist/primitive-hooks/useEditComposerCancel.d.ts +0 -4
- package/dist/primitive-hooks/useEditComposerCancel.d.ts.map +0 -1
- package/dist/primitive-hooks/useEditComposerCancel.js +0 -10
- package/dist/primitive-hooks/useEditComposerCancel.js.map +0 -1
- package/dist/primitive-hooks/useEditComposerSend.d.ts +0 -5
- package/dist/primitive-hooks/useEditComposerSend.d.ts.map +0 -1
- package/dist/primitive-hooks/useEditComposerSend.js +0 -11
- package/dist/primitive-hooks/useEditComposerSend.js.map +0 -1
- package/dist/primitive-hooks/useMessageBranching.d.ts +0 -7
- package/dist/primitive-hooks/useMessageBranching.d.ts.map +0 -1
- package/dist/primitive-hooks/useMessageBranching.js +0 -15
- package/dist/primitive-hooks/useMessageBranching.js.map +0 -1
- package/dist/primitive-hooks/useMessageReload.d.ts +0 -5
- package/dist/primitive-hooks/useMessageReload.d.ts.map +0 -1
- package/dist/primitive-hooks/useMessageReload.js +0 -11
- package/dist/primitive-hooks/useMessageReload.js.map +0 -1
- package/dist/primitive-hooks/useThreadIsEmpty.d.ts +0 -2
- package/dist/primitive-hooks/useThreadIsEmpty.d.ts.map +0 -1
- package/dist/primitive-hooks/useThreadIsEmpty.js +0 -5
- package/dist/primitive-hooks/useThreadIsEmpty.js.map +0 -1
- package/dist/primitive-hooks/useThreadIsRunning.d.ts +0 -2
- package/dist/primitive-hooks/useThreadIsRunning.d.ts.map +0 -1
- package/dist/primitive-hooks/useThreadIsRunning.js +0 -5
- package/dist/primitive-hooks/useThreadIsRunning.js.map +0 -1
- package/dist/primitive-hooks/useThreadMessages.d.ts +0 -3
- package/dist/primitive-hooks/useThreadMessages.d.ts.map +0 -1
- package/dist/primitive-hooks/useThreadMessages.js +0 -5
- package/dist/primitive-hooks/useThreadMessages.js.map +0 -1
- package/src/adapters/LocalStorageThreadListAdapter.tsx +0 -227
- package/src/adapters/TitleGenerationAdapter.ts +0 -20
- package/src/adapters/index.ts +0 -5
- package/src/primitive-hooks/index.ts +0 -20
- package/src/primitive-hooks/useActionBarCopy.ts +0 -38
- package/src/primitive-hooks/useActionBarEdit.ts +0 -13
- package/src/primitive-hooks/useActionBarFeedback.ts +0 -28
- package/src/primitive-hooks/useActionBarReload.ts +0 -18
- package/src/primitive-hooks/useComposerAddAttachment.ts +0 -16
- package/src/primitive-hooks/useComposerCancel.ts +0 -13
- package/src/primitive-hooks/useComposerSend.ts +0 -13
- package/src/primitive-hooks/useEditComposerCancel.ts +0 -12
- package/src/primitive-hooks/useEditComposerSend.ts +0 -13
- package/src/primitive-hooks/useMessageBranching.ts +0 -18
- package/src/primitive-hooks/useMessageReload.ts +0 -13
- package/src/primitive-hooks/useThreadIsEmpty.ts +0 -5
- package/src/primitive-hooks/useThreadIsRunning.ts +0 -5
- package/src/primitive-hooks/useThreadMessages.ts +0 -6
|
@@ -1,51 +1,125 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ComponentType, type FC, memo, useCallback } from "react";
|
|
2
2
|
import { FlatList, type FlatListProps } from "react-native";
|
|
3
3
|
import type { ThreadMessage } from "@assistant-ui/core";
|
|
4
|
-
import {
|
|
4
|
+
import { useAuiState } from "@assistant-ui/store";
|
|
5
|
+
import { MessageByIndexProvider } from "@assistant-ui/core/react";
|
|
6
|
+
|
|
7
|
+
type MessageComponents =
|
|
8
|
+
| {
|
|
9
|
+
Message: ComponentType;
|
|
10
|
+
EditComposer?: ComponentType | undefined;
|
|
11
|
+
UserEditComposer?: ComponentType | undefined;
|
|
12
|
+
AssistantEditComposer?: ComponentType | undefined;
|
|
13
|
+
SystemEditComposer?: ComponentType | undefined;
|
|
14
|
+
UserMessage?: ComponentType | undefined;
|
|
15
|
+
AssistantMessage?: ComponentType | undefined;
|
|
16
|
+
SystemMessage?: ComponentType | undefined;
|
|
17
|
+
}
|
|
18
|
+
| {
|
|
19
|
+
Message?: ComponentType | undefined;
|
|
20
|
+
EditComposer?: ComponentType | undefined;
|
|
21
|
+
UserEditComposer?: ComponentType | undefined;
|
|
22
|
+
AssistantEditComposer?: ComponentType | undefined;
|
|
23
|
+
SystemEditComposer?: ComponentType | undefined;
|
|
24
|
+
UserMessage: ComponentType;
|
|
25
|
+
AssistantMessage: ComponentType;
|
|
26
|
+
SystemMessage?: ComponentType | undefined;
|
|
27
|
+
};
|
|
5
28
|
|
|
6
29
|
export type ThreadMessagesProps = Omit<
|
|
7
30
|
FlatListProps<ThreadMessage>,
|
|
8
31
|
"data" | "renderItem"
|
|
9
32
|
> & {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
33
|
+
components: MessageComponents;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const DEFAULT_SYSTEM_MESSAGE = () => null;
|
|
37
|
+
|
|
38
|
+
const getComponent = (
|
|
39
|
+
components: MessageComponents,
|
|
40
|
+
role: ThreadMessage["role"],
|
|
41
|
+
isEditing: boolean,
|
|
42
|
+
) => {
|
|
43
|
+
switch (role) {
|
|
44
|
+
case "user":
|
|
45
|
+
if (isEditing) {
|
|
46
|
+
return (
|
|
47
|
+
components.UserEditComposer ??
|
|
48
|
+
components.EditComposer ??
|
|
49
|
+
components.UserMessage ??
|
|
50
|
+
(components.Message as ComponentType)
|
|
51
|
+
);
|
|
52
|
+
} else {
|
|
53
|
+
return components.UserMessage ?? (components.Message as ComponentType);
|
|
54
|
+
}
|
|
55
|
+
case "assistant":
|
|
56
|
+
if (isEditing) {
|
|
57
|
+
return (
|
|
58
|
+
components.AssistantEditComposer ??
|
|
59
|
+
components.EditComposer ??
|
|
60
|
+
components.AssistantMessage ??
|
|
61
|
+
(components.Message as ComponentType)
|
|
62
|
+
);
|
|
63
|
+
} else {
|
|
64
|
+
return (
|
|
65
|
+
components.AssistantMessage ?? (components.Message as ComponentType)
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
case "system":
|
|
69
|
+
if (isEditing) {
|
|
70
|
+
return (
|
|
71
|
+
components.SystemEditComposer ??
|
|
72
|
+
components.EditComposer ??
|
|
73
|
+
components.SystemMessage ??
|
|
74
|
+
(components.Message as ComponentType)
|
|
75
|
+
);
|
|
76
|
+
} else {
|
|
77
|
+
return (
|
|
78
|
+
components.SystemMessage ??
|
|
79
|
+
(components.Message as ComponentType) ??
|
|
80
|
+
DEFAULT_SYSTEM_MESSAGE
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
default: {
|
|
84
|
+
const _exhaustiveCheck: never = role;
|
|
85
|
+
throw new Error(`Unknown message role: ${_exhaustiveCheck}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
14
88
|
};
|
|
15
89
|
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
children,
|
|
19
|
-
}: {
|
|
20
|
-
index: number;
|
|
21
|
-
children: ReactElement;
|
|
90
|
+
const ThreadMessageComponent: FC<{ components: MessageComponents }> = ({
|
|
91
|
+
components,
|
|
22
92
|
}) => {
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}),
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
return <AuiProvider value={aui}>{children}</AuiProvider>;
|
|
93
|
+
const role = useAuiState((s) => s.message.role);
|
|
94
|
+
const isEditing = useAuiState((s) => s.message.composer.isEditing);
|
|
95
|
+
const Component = getComponent(components, role, isEditing);
|
|
96
|
+
|
|
97
|
+
return <Component />;
|
|
32
98
|
};
|
|
33
99
|
|
|
100
|
+
const ThreadMessageByIndex = memo(
|
|
101
|
+
({ index, components }: { index: number; components: MessageComponents }) => {
|
|
102
|
+
return (
|
|
103
|
+
<MessageByIndexProvider index={index}>
|
|
104
|
+
<ThreadMessageComponent components={components} />
|
|
105
|
+
</MessageByIndexProvider>
|
|
106
|
+
);
|
|
107
|
+
},
|
|
108
|
+
(prev, next) =>
|
|
109
|
+
prev.index === next.index && prev.components === next.components,
|
|
110
|
+
);
|
|
111
|
+
|
|
34
112
|
export const ThreadMessages = ({
|
|
35
|
-
|
|
113
|
+
components,
|
|
36
114
|
...flatListProps
|
|
37
115
|
}: ThreadMessagesProps) => {
|
|
38
116
|
const messages = useAuiState((s) => s.thread.messages);
|
|
39
117
|
|
|
40
118
|
const renderItem = useCallback(
|
|
41
|
-
({
|
|
42
|
-
return
|
|
43
|
-
<MessageScope index={index}>
|
|
44
|
-
{renderMessage({ message: item as ThreadMessage, index })}
|
|
45
|
-
</MessageScope>
|
|
46
|
-
);
|
|
119
|
+
({ index }: { item: ThreadMessage; index: number }) => {
|
|
120
|
+
return <ThreadMessageByIndex index={index} components={components} />;
|
|
47
121
|
},
|
|
48
|
-
[
|
|
122
|
+
[components],
|
|
49
123
|
);
|
|
50
124
|
|
|
51
125
|
const keyExtractor = useCallback((item: ThreadMessage) => item.id, []);
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
export { ThreadRoot, type ThreadRootProps } from "./ThreadRoot";
|
|
2
|
-
export { ThreadMessages, type ThreadMessagesProps } from "./ThreadMessages";
|
|
3
1
|
export {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} from "
|
|
7
|
-
export {
|
|
8
|
-
|
|
2
|
+
ThreadRoot as Root,
|
|
3
|
+
type ThreadRootProps as RootProps,
|
|
4
|
+
} from "./ThreadRoot";
|
|
5
|
+
export {
|
|
6
|
+
ThreadMessages as Messages,
|
|
7
|
+
type ThreadMessagesProps as MessagesProps,
|
|
8
|
+
} from "./ThreadMessages";
|
|
9
|
+
export { ThreadPrimitiveMessageByIndex as MessageByIndex } from "@assistant-ui/core/react";
|
|
10
|
+
export {
|
|
11
|
+
ThreadEmpty as Empty,
|
|
12
|
+
type ThreadEmptyProps as EmptyProps,
|
|
13
|
+
} from "./ThreadEmpty";
|
|
14
|
+
export { ThreadIf as If, type ThreadIfProps as IfProps } from "./ThreadIf";
|
|
9
15
|
export {
|
|
10
|
-
ThreadSuggestion,
|
|
11
|
-
type ThreadSuggestionProps,
|
|
16
|
+
ThreadSuggestion as Suggestion,
|
|
17
|
+
type ThreadSuggestionProps as SuggestionProps,
|
|
12
18
|
} from "./ThreadSuggestion";
|
|
13
19
|
export {
|
|
14
|
-
ThreadPrimitiveSuggestions,
|
|
15
|
-
ThreadPrimitiveSuggestionByIndex,
|
|
20
|
+
ThreadPrimitiveSuggestions as Suggestions,
|
|
21
|
+
ThreadPrimitiveSuggestionByIndex as SuggestionByIndex,
|
|
16
22
|
} from "@assistant-ui/core/react";
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
-
export {
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
export {
|
|
2
|
+
ThreadListRoot as Root,
|
|
3
|
+
type ThreadListRootProps as RootProps,
|
|
4
|
+
} from "./ThreadListRoot";
|
|
5
|
+
export {
|
|
6
|
+
ThreadListItems as Items,
|
|
7
|
+
type ThreadListItemsProps as ItemsProps,
|
|
8
|
+
} from "./ThreadListItems";
|
|
9
|
+
export {
|
|
10
|
+
ThreadListNew as New,
|
|
11
|
+
type ThreadListNewProps as NewProps,
|
|
12
|
+
} from "./ThreadListNew";
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
export {
|
|
2
|
-
ThreadListItemRoot,
|
|
3
|
-
type ThreadListItemRootProps,
|
|
2
|
+
ThreadListItemRoot as Root,
|
|
3
|
+
type ThreadListItemRootProps as RootProps,
|
|
4
4
|
} from "./ThreadListItemRoot";
|
|
5
|
-
export { ThreadListItemPrimitiveTitle as
|
|
5
|
+
export { ThreadListItemPrimitiveTitle as Title } from "@assistant-ui/core/react";
|
|
6
6
|
export {
|
|
7
|
-
ThreadListItemTrigger,
|
|
8
|
-
type ThreadListItemTriggerProps,
|
|
7
|
+
ThreadListItemTrigger as Trigger,
|
|
8
|
+
type ThreadListItemTriggerProps as TriggerProps,
|
|
9
9
|
} from "./ThreadListItemTrigger";
|
|
10
10
|
export {
|
|
11
|
-
ThreadListItemDelete,
|
|
12
|
-
type ThreadListItemDeleteProps,
|
|
11
|
+
ThreadListItemDelete as Delete,
|
|
12
|
+
type ThreadListItemDeleteProps as DeleteProps,
|
|
13
13
|
} from "./ThreadListItemDelete";
|
|
14
14
|
export {
|
|
15
|
-
ThreadListItemArchive,
|
|
16
|
-
type ThreadListItemArchiveProps,
|
|
15
|
+
ThreadListItemArchive as Archive,
|
|
16
|
+
type ThreadListItemArchiveProps as ArchiveProps,
|
|
17
17
|
} from "./ThreadListItemArchive";
|
|
18
18
|
export {
|
|
19
|
-
ThreadListItemUnarchive,
|
|
20
|
-
type ThreadListItemUnarchiveProps,
|
|
19
|
+
ThreadListItemUnarchive as Unarchive,
|
|
20
|
+
type ThreadListItemUnarchiveProps as UnarchiveProps,
|
|
21
21
|
} from "./ThreadListItemUnarchive";
|
|
@@ -1,180 +1 @@
|
|
|
1
|
-
|
|
2
|
-
FC,
|
|
3
|
-
useCallback,
|
|
4
|
-
useRef,
|
|
5
|
-
useEffect,
|
|
6
|
-
memo,
|
|
7
|
-
PropsWithChildren,
|
|
8
|
-
ComponentType,
|
|
9
|
-
useMemo,
|
|
10
|
-
} from "react";
|
|
11
|
-
import { UseBoundStore, StoreApi, create } from "zustand";
|
|
12
|
-
import { useAui } from "@assistant-ui/store";
|
|
13
|
-
import { ThreadListItemRuntimeProvider } from "../context/providers/ThreadListItemRuntimeProvider";
|
|
14
|
-
import type {
|
|
15
|
-
ThreadListRuntimeCore,
|
|
16
|
-
ThreadRuntimeCore,
|
|
17
|
-
AssistantRuntime,
|
|
18
|
-
} from "@assistant-ui/core";
|
|
19
|
-
import {
|
|
20
|
-
BaseSubscribable,
|
|
21
|
-
ThreadRuntimeImpl,
|
|
22
|
-
ThreadListRuntimeImpl,
|
|
23
|
-
} from "@assistant-ui/core/internal";
|
|
24
|
-
|
|
25
|
-
type RemoteThreadListHook = () => AssistantRuntime;
|
|
26
|
-
|
|
27
|
-
type RemoteThreadListHookInstance = {
|
|
28
|
-
runtime?: ThreadRuntimeCore;
|
|
29
|
-
};
|
|
30
|
-
export class RemoteThreadListHookInstanceManager extends BaseSubscribable {
|
|
31
|
-
private useRuntimeHook: UseBoundStore<
|
|
32
|
-
StoreApi<{ useRuntime: RemoteThreadListHook }>
|
|
33
|
-
>;
|
|
34
|
-
private instances = new Map<string, RemoteThreadListHookInstance>();
|
|
35
|
-
private useAliveThreadsKeysChanged = create(() => ({}));
|
|
36
|
-
private parent: ThreadListRuntimeCore;
|
|
37
|
-
|
|
38
|
-
constructor(
|
|
39
|
-
runtimeHook: RemoteThreadListHook,
|
|
40
|
-
parent: ThreadListRuntimeCore,
|
|
41
|
-
) {
|
|
42
|
-
super();
|
|
43
|
-
this.parent = parent;
|
|
44
|
-
this.useRuntimeHook = create(() => ({ useRuntime: runtimeHook }));
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
public startThreadRuntime(threadId: string) {
|
|
48
|
-
if (!this.instances.has(threadId)) {
|
|
49
|
-
this.instances.set(threadId, {});
|
|
50
|
-
this.useAliveThreadsKeysChanged.setState({}, true);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return new Promise<ThreadRuntimeCore>((resolve, reject) => {
|
|
54
|
-
const callback = () => {
|
|
55
|
-
const instance = this.instances.get(threadId);
|
|
56
|
-
if (!instance) {
|
|
57
|
-
dispose();
|
|
58
|
-
reject(new Error("Thread was deleted before runtime was started"));
|
|
59
|
-
} else if (!instance.runtime) {
|
|
60
|
-
return; // misc update
|
|
61
|
-
} else {
|
|
62
|
-
dispose();
|
|
63
|
-
resolve(instance.runtime);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
const dispose = this.subscribe(callback);
|
|
67
|
-
callback();
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
public getThreadRuntimeCore(threadId: string) {
|
|
72
|
-
const instance = this.instances.get(threadId);
|
|
73
|
-
if (!instance) return undefined;
|
|
74
|
-
return instance.runtime;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
public stopThreadRuntime(threadId: string) {
|
|
78
|
-
this.instances.delete(threadId);
|
|
79
|
-
this.useAliveThreadsKeysChanged.setState({}, true);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
public setRuntimeHook(newRuntimeHook: RemoteThreadListHook) {
|
|
83
|
-
const prevRuntimeHook = this.useRuntimeHook.getState().useRuntime;
|
|
84
|
-
if (prevRuntimeHook !== newRuntimeHook) {
|
|
85
|
-
this.useRuntimeHook.setState({ useRuntime: newRuntimeHook }, true);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
private _InnerActiveThreadProvider: FC<{
|
|
90
|
-
threadId: string;
|
|
91
|
-
}> = ({ threadId }) => {
|
|
92
|
-
const { useRuntime } = this.useRuntimeHook();
|
|
93
|
-
const runtime = useRuntime();
|
|
94
|
-
|
|
95
|
-
const threadBinding = (runtime.thread as ThreadRuntimeImpl)
|
|
96
|
-
.__internal_threadBinding;
|
|
97
|
-
|
|
98
|
-
const updateRuntime = useCallback(() => {
|
|
99
|
-
const aliveThread = this.instances.get(threadId);
|
|
100
|
-
if (!aliveThread)
|
|
101
|
-
throw new Error("Thread not found. This is a bug in assistant-ui.");
|
|
102
|
-
|
|
103
|
-
aliveThread.runtime = threadBinding.getState();
|
|
104
|
-
this._notifySubscribers();
|
|
105
|
-
}, [threadId, threadBinding]);
|
|
106
|
-
|
|
107
|
-
const isMounted = useRef(false);
|
|
108
|
-
if (!isMounted.current) {
|
|
109
|
-
updateRuntime();
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
useEffect(() => {
|
|
113
|
-
isMounted.current = true;
|
|
114
|
-
updateRuntime();
|
|
115
|
-
return threadBinding.outerSubscribe(updateRuntime);
|
|
116
|
-
}, [threadBinding, updateRuntime]);
|
|
117
|
-
|
|
118
|
-
const aui = useAui();
|
|
119
|
-
const initPromiseRef = useRef<Promise<unknown> | undefined>(undefined);
|
|
120
|
-
|
|
121
|
-
useEffect(() => {
|
|
122
|
-
const runtimeCore = threadBinding.getState();
|
|
123
|
-
const setGetInitializePromise = (runtimeCore as Record<string, unknown>)[
|
|
124
|
-
"__internal_setGetInitializePromise"
|
|
125
|
-
];
|
|
126
|
-
if (typeof setGetInitializePromise === "function") {
|
|
127
|
-
setGetInitializePromise.call(runtimeCore, () => initPromiseRef.current);
|
|
128
|
-
}
|
|
129
|
-
}, [threadBinding]);
|
|
130
|
-
|
|
131
|
-
useEffect(() => {
|
|
132
|
-
return runtime.threads.main.unstable_on("initialize", () => {
|
|
133
|
-
const state = aui.threadListItem().getState();
|
|
134
|
-
if (state.status === "new") {
|
|
135
|
-
initPromiseRef.current = aui.threadListItem().initialize();
|
|
136
|
-
|
|
137
|
-
const dispose = runtime.thread.unstable_on("runEnd", () => {
|
|
138
|
-
dispose();
|
|
139
|
-
|
|
140
|
-
aui.threadListItem().generateTitle();
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
}, [runtime, aui]);
|
|
145
|
-
|
|
146
|
-
return null;
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
private _OuterActiveThreadProvider: FC<{
|
|
150
|
-
threadId: string;
|
|
151
|
-
provider: ComponentType<PropsWithChildren>;
|
|
152
|
-
}> = memo(({ threadId, provider: Provider }) => {
|
|
153
|
-
const runtime = useMemo(
|
|
154
|
-
() => new ThreadListRuntimeImpl(this.parent).getItemById(threadId),
|
|
155
|
-
[threadId],
|
|
156
|
-
);
|
|
157
|
-
|
|
158
|
-
return (
|
|
159
|
-
<ThreadListItemRuntimeProvider runtime={runtime}>
|
|
160
|
-
<Provider>
|
|
161
|
-
<this._InnerActiveThreadProvider threadId={threadId} />
|
|
162
|
-
</Provider>
|
|
163
|
-
</ThreadListItemRuntimeProvider>
|
|
164
|
-
);
|
|
165
|
-
});
|
|
166
|
-
|
|
167
|
-
public __internal_RenderThreadRuntimes: FC<{
|
|
168
|
-
provider: ComponentType<PropsWithChildren>;
|
|
169
|
-
}> = ({ provider }) => {
|
|
170
|
-
this.useAliveThreadsKeysChanged(); // trigger re-render on alive threads change
|
|
171
|
-
|
|
172
|
-
return Array.from(this.instances.keys()).map((threadId) => (
|
|
173
|
-
<this._OuterActiveThreadProvider
|
|
174
|
-
key={threadId}
|
|
175
|
-
threadId={threadId}
|
|
176
|
-
provider={provider}
|
|
177
|
-
/>
|
|
178
|
-
));
|
|
179
|
-
};
|
|
180
|
-
}
|
|
1
|
+
export { RemoteThreadListHookInstanceManager } from "@assistant-ui/core/react";
|