@assistant-ui/react 0.10.24 → 0.10.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/{ContentPartRuntime.d.ts → MessagePartRuntime.d.ts} +14 -14
- package/dist/api/{ContentPartRuntime.d.ts.map → MessagePartRuntime.d.ts.map} +1 -1
- package/dist/api/{ContentPartRuntime.js → MessagePartRuntime.js} +6 -6
- package/dist/api/{ContentPartRuntime.js.map → MessagePartRuntime.js.map} +1 -1
- package/dist/api/MessageRuntime.d.ts +8 -8
- package/dist/api/MessageRuntime.js +17 -17
- package/dist/api/MessageRuntime.js.map +1 -1
- package/dist/api/RuntimePathTypes.d.ts +2 -2
- package/dist/api/ThreadListRuntime.d.ts +3 -0
- package/dist/api/ThreadListRuntime.d.ts.map +1 -1
- package/dist/api/ThreadListRuntime.js +5 -1
- package/dist/api/ThreadListRuntime.js.map +1 -1
- package/dist/api/ThreadRuntime.d.ts +5 -0
- package/dist/api/ThreadRuntime.d.ts.map +1 -1
- package/dist/api/ThreadRuntime.js +1 -0
- package/dist/api/ThreadRuntime.js.map +1 -1
- package/dist/api/index.d.ts +2 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/cloud/auiV0.d.ts +2 -2
- package/dist/cloud/auiV0.js +1 -1
- package/dist/cloud/auiV0.js.map +1 -1
- package/dist/context/providers/MessagePartRuntimeProvider.d.ts +9 -0
- package/dist/context/providers/{ContentPartRuntimeProvider.d.ts.map → MessagePartRuntimeProvider.d.ts.map} +1 -1
- package/dist/context/providers/{ContentPartRuntimeProvider.js → MessagePartRuntimeProvider.js} +9 -9
- package/dist/context/providers/MessagePartRuntimeProvider.js.map +1 -0
- package/dist/context/providers/{TextContentPartProvider.d.ts → TextMessagePartProvider.d.ts} +3 -3
- package/dist/context/providers/{TextContentPartProvider.d.ts.map → TextMessagePartProvider.d.ts.map} +1 -1
- package/dist/context/providers/{TextContentPartProvider.js → TextMessagePartProvider.js} +19 -19
- package/dist/context/providers/{TextContentPartProvider.js.map → TextMessagePartProvider.js.map} +1 -1
- package/dist/context/providers/index.d.ts +2 -1
- package/dist/context/providers/index.d.ts.map +1 -1
- package/dist/context/providers/index.js +4 -2
- package/dist/context/providers/index.js.map +1 -1
- package/dist/context/react/AttachmentContext.d.ts +72 -72
- package/dist/context/react/MessagePartContext.d.ts +41 -0
- package/dist/context/react/{ContentPartContext.d.ts.map → MessagePartContext.d.ts.map} +1 -1
- package/dist/context/react/MessagePartContext.js +25 -0
- package/dist/context/react/MessagePartContext.js.map +1 -0
- package/dist/context/react/index.d.ts +1 -1
- package/dist/context/react/index.js +3 -3
- package/dist/context/react/index.js.map +1 -1
- package/dist/context/stores/AssistantToolUIs.d.ts +3 -3
- package/dist/context/stores/AssistantToolUIs.js.map +1 -1
- package/dist/model-context/useAssistantTool.d.ts +2 -2
- package/dist/model-context/useAssistantTool.js.map +1 -1
- package/dist/model-context/useAssistantToolUI.d.ts +2 -2
- package/dist/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/model-context/useInlineRender.d.ts +2 -2
- package/dist/model-context/useInlineRender.js.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.d.ts +2 -0
- package/dist/primitives/assistantModal/AssistantModalContent.d.ts.map +1 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js +2 -1
- package/dist/primitives/assistantModal/AssistantModalContent.js.map +1 -1
- package/dist/primitives/index.d.ts +12 -6
- package/dist/primitives/index.d.ts.map +1 -1
- package/dist/primitives/index.js +23 -11
- package/dist/primitives/index.js.map +1 -1
- package/dist/primitives/message/MessageParts.d.ts +116 -0
- package/dist/primitives/message/MessageParts.d.ts.map +1 -0
- package/dist/primitives/message/MessageParts.js +208 -0
- package/dist/primitives/message/MessageParts.js.map +1 -0
- package/dist/primitives/message/index.d.ts +2 -1
- package/dist/primitives/message/index.d.ts.map +1 -1
- package/dist/primitives/message/index.js +4 -2
- package/dist/primitives/message/index.js.map +1 -1
- package/dist/primitives/{contentPart/ContentPartImage.d.ts → messagePart/MessagePartImage.d.ts} +8 -8
- package/dist/primitives/{contentPart/ContentPartImage.d.ts.map → messagePart/MessagePartImage.d.ts.map} +1 -1
- package/dist/primitives/messagePart/MessagePartImage.js +16 -0
- package/dist/primitives/messagePart/MessagePartImage.js.map +1 -0
- package/dist/primitives/messagePart/MessagePartInProgress.d.ts +6 -0
- package/dist/primitives/{contentPart/ContentPartInProgress.d.ts.map → messagePart/MessagePartInProgress.d.ts.map} +1 -1
- package/dist/primitives/messagePart/MessagePartInProgress.js +13 -0
- package/dist/primitives/messagePart/MessagePartInProgress.js.map +1 -0
- package/dist/primitives/{contentPart/ContentPartText.d.ts → messagePart/MessagePartText.d.ts} +6 -6
- package/dist/primitives/{contentPart/ContentPartText.d.ts.map → messagePart/MessagePartText.d.ts.map} +1 -1
- package/dist/primitives/messagePart/MessagePartText.js +18 -0
- package/dist/primitives/{contentPart/ContentPartText.js.map → messagePart/MessagePartText.js.map} +1 -1
- package/dist/primitives/messagePart/index.d.ts +4 -0
- package/dist/primitives/{contentPart → messagePart}/index.d.ts.map +1 -1
- package/dist/primitives/messagePart/index.js +10 -0
- package/dist/primitives/messagePart/index.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartFile.d.ts +5 -0
- package/dist/primitives/messagePart/useMessagePartFile.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartFile.js +18 -0
- package/dist/primitives/messagePart/useMessagePartFile.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartImage.d.ts +5 -0
- package/dist/primitives/messagePart/useMessagePartImage.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartImage.js +18 -0
- package/dist/primitives/messagePart/useMessagePartImage.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.d.ts +5 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.js +18 -0
- package/dist/primitives/messagePart/useMessagePartReasoning.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartSource.d.ts +5 -0
- package/dist/primitives/messagePart/useMessagePartSource.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartSource.js +18 -0
- package/dist/primitives/messagePart/useMessagePartSource.js.map +1 -0
- package/dist/primitives/messagePart/useMessagePartText.d.ts +7 -0
- package/dist/primitives/messagePart/useMessagePartText.d.ts.map +1 -0
- package/dist/primitives/messagePart/useMessagePartText.js +18 -0
- package/dist/primitives/messagePart/useMessagePartText.js.map +1 -0
- package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts +1 -0
- package/dist/runtimes/core/BaseThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/BaseThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/ThreadListRuntimeCore.d.ts +1 -0
- package/dist/runtimes/core/ThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/ThreadRuntimeCore.d.ts +1 -0
- package/dist/runtimes/core/ThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +2 -0
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts +1 -0
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js +3 -0
- package/dist/runtimes/external-store/ExternalStoreThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts +1 -0
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js +3 -8
- package/dist/runtimes/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.d.ts +3 -3
- package/dist/runtimes/external-store/ThreadMessageLike.js +4 -4
- package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
- package/dist/runtimes/external-store/createMessageConverter.js +3 -3
- package/dist/runtimes/external-store/createMessageConverter.js.map +1 -1
- package/dist/runtimes/external-store/external-message-converter.js.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.d.ts +4 -4
- package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts +1 -0
- package/dist/runtimes/local/LocalThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js +3 -0
- package/dist/runtimes/local/LocalThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts +2 -0
- package/dist/runtimes/local/LocalThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js +12 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js +1 -0
- package/dist/runtimes/remote-thread-list/EMPTY_THREAD_CORE.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts +2 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +3 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +3 -0
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/utils/MessageRepository.js +1 -1
- package/dist/runtimes/utils/MessageRepository.js.map +1 -1
- package/dist/tests/setup.js +8 -8
- package/dist/tests/setup.js.map +1 -1
- package/dist/types/AssistantTypes.d.ts +15 -15
- package/dist/types/AttachmentTypes.d.ts +3 -3
- package/dist/types/MessagePartComponentTypes.d.ts +25 -0
- package/dist/types/{ContentPartComponentTypes.d.ts.map → MessagePartComponentTypes.d.ts.map} +1 -1
- package/dist/types/MessagePartComponentTypes.js +1 -0
- package/dist/types/index.d.ts +4 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/getThreadMessageText.js.map +1 -1
- package/dist/utils/smooth/SmoothContext.js +3 -3
- package/dist/utils/smooth/SmoothContext.js.map +1 -1
- package/dist/utils/smooth/useSmooth.d.ts +3 -3
- package/dist/utils/smooth/useSmooth.js.map +1 -1
- package/dist/utils/useToolArgsFieldStatus.js +3 -3
- package/dist/utils/useToolArgsFieldStatus.js.map +1 -1
- package/package.json +8 -8
- package/src/api/{ContentPartRuntime.ts → MessagePartRuntime.ts} +20 -20
- package/src/api/MessageRuntime.ts +32 -32
- package/src/api/RuntimePathTypes.ts +2 -2
- package/src/api/ThreadListRuntime.ts +8 -0
- package/src/api/ThreadRuntime.ts +6 -0
- package/src/api/index.ts +11 -3
- package/src/cloud/auiV0.ts +3 -3
- package/src/context/providers/MessagePartRuntimeProvider.tsx +42 -0
- package/src/context/providers/{TextContentPartProvider.tsx → TextMessagePartProvider.tsx} +27 -27
- package/src/context/providers/index.ts +4 -1
- package/src/context/react/MessagePartContext.ts +37 -0
- package/src/context/react/index.ts +1 -1
- package/src/context/stores/AssistantToolUIs.ts +4 -4
- package/src/model-context/useAssistantTool.tsx +2 -2
- package/src/model-context/useAssistantToolUI.tsx +2 -2
- package/src/model-context/useInlineRender.tsx +3 -3
- package/src/primitives/assistantModal/AssistantModalContent.tsx +5 -1
- package/src/primitives/index.ts +14 -6
- package/src/primitives/message/MessageParts.tsx +423 -0
- package/src/primitives/message/index.ts +2 -1
- package/src/primitives/messagePart/MessagePartImage.tsx +39 -0
- package/src/primitives/messagePart/MessagePartInProgress.tsx +19 -0
- package/src/primitives/{contentPart/ContentPartText.tsx → messagePart/MessagePartText.tsx} +10 -10
- package/src/primitives/messagePart/index.ts +3 -0
- package/src/primitives/messagePart/useMessagePartFile.tsx +18 -0
- package/src/primitives/messagePart/useMessagePartImage.tsx +18 -0
- package/src/primitives/messagePart/useMessagePartReasoning.tsx +18 -0
- package/src/primitives/messagePart/useMessagePartSource.tsx +18 -0
- package/src/primitives/messagePart/useMessagePartText.tsx +18 -0
- package/src/runtimes/core/BaseThreadRuntimeCore.tsx +1 -0
- package/src/runtimes/core/ThreadListRuntimeCore.tsx +1 -0
- package/src/runtimes/core/ThreadRuntimeCore.tsx +1 -0
- package/src/runtimes/external-store/ExternalStoreAdapter.tsx +2 -0
- package/src/runtimes/external-store/ExternalStoreThreadListRuntimeCore.tsx +4 -0
- package/src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx +3 -8
- package/src/runtimes/external-store/ThreadMessageLike.tsx +21 -21
- package/src/runtimes/external-store/createMessageConverter.tsx +3 -3
- package/src/runtimes/external-store/external-message-converter.tsx +2 -2
- package/src/runtimes/local/ChatModelAdapter.tsx +13 -13
- package/src/runtimes/local/LocalThreadListRuntimeCore.tsx +4 -0
- package/src/runtimes/local/LocalThreadRuntimeCore.tsx +30 -15
- package/src/runtimes/remote-thread-list/EMPTY_THREAD_CORE.tsx +1 -0
- package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +4 -0
- package/src/runtimes/utils/MessageRepository.tsx +1 -1
- package/src/tests/MessageRepository.test.ts +6 -6
- package/src/types/AssistantTypes.ts +24 -24
- package/src/types/AttachmentTypes.ts +3 -3
- package/src/types/MessagePartComponentTypes.tsx +52 -0
- package/src/types/index.ts +69 -28
- package/src/utils/getThreadMessageText.tsx +2 -2
- package/src/utils/smooth/SmoothContext.tsx +7 -7
- package/src/utils/smooth/useSmooth.tsx +7 -7
- package/src/utils/useToolArgsFieldStatus.tsx +3 -3
- package/dist/context/providers/ContentPartRuntimeProvider.d.ts +0 -9
- package/dist/context/providers/ContentPartRuntimeProvider.js.map +0 -1
- package/dist/context/react/ContentPartContext.d.ts +0 -41
- package/dist/context/react/ContentPartContext.js +0 -25
- package/dist/context/react/ContentPartContext.js.map +0 -1
- package/dist/primitives/contentPart/ContentPartImage.js +0 -16
- package/dist/primitives/contentPart/ContentPartImage.js.map +0 -1
- package/dist/primitives/contentPart/ContentPartInProgress.d.ts +0 -6
- package/dist/primitives/contentPart/ContentPartInProgress.js +0 -13
- package/dist/primitives/contentPart/ContentPartInProgress.js.map +0 -1
- package/dist/primitives/contentPart/ContentPartText.js +0 -18
- package/dist/primitives/contentPart/index.d.ts +0 -4
- package/dist/primitives/contentPart/index.js +0 -10
- package/dist/primitives/contentPart/index.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartFile.d.ts +0 -5
- package/dist/primitives/contentPart/useContentPartFile.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartFile.js +0 -18
- package/dist/primitives/contentPart/useContentPartFile.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartImage.d.ts +0 -5
- package/dist/primitives/contentPart/useContentPartImage.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartImage.js +0 -18
- package/dist/primitives/contentPart/useContentPartImage.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartReasoning.d.ts +0 -5
- package/dist/primitives/contentPart/useContentPartReasoning.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartReasoning.js +0 -18
- package/dist/primitives/contentPart/useContentPartReasoning.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartSource.d.ts +0 -5
- package/dist/primitives/contentPart/useContentPartSource.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartSource.js +0 -18
- package/dist/primitives/contentPart/useContentPartSource.js.map +0 -1
- package/dist/primitives/contentPart/useContentPartText.d.ts +0 -7
- package/dist/primitives/contentPart/useContentPartText.d.ts.map +0 -1
- package/dist/primitives/contentPart/useContentPartText.js +0 -18
- package/dist/primitives/contentPart/useContentPartText.js.map +0 -1
- package/dist/primitives/message/MessageContent.d.ts +0 -64
- package/dist/primitives/message/MessageContent.d.ts.map +0 -1
- package/dist/primitives/message/MessageContent.js +0 -141
- package/dist/primitives/message/MessageContent.js.map +0 -1
- package/dist/types/ContentPartComponentTypes.d.ts +0 -25
- package/dist/types/ContentPartComponentTypes.js +0 -1
- package/src/context/providers/ContentPartRuntimeProvider.tsx +0 -42
- package/src/context/react/ContentPartContext.ts +0 -37
- package/src/primitives/contentPart/ContentPartImage.tsx +0 -39
- package/src/primitives/contentPart/ContentPartInProgress.tsx +0 -19
- package/src/primitives/contentPart/index.ts +0 -3
- package/src/primitives/contentPart/useContentPartFile.tsx +0 -18
- package/src/primitives/contentPart/useContentPartImage.tsx +0 -18
- package/src/primitives/contentPart/useContentPartReasoning.tsx +0 -18
- package/src/primitives/contentPart/useContentPartSource.tsx +0 -18
- package/src/primitives/contentPart/useContentPartText.tsx +0 -18
- package/src/primitives/message/MessageContent.tsx +0 -277
- package/src/types/ContentPartComponentTypes.tsx +0 -52
- /package/dist/types/{ContentPartComponentTypes.js.map → MessagePartComponentTypes.js.map} +0 -0
@@ -21,11 +21,14 @@ export type ThreadListState = {
|
|
21
21
|
readonly newThread: string | undefined;
|
22
22
|
readonly threads: readonly string[];
|
23
23
|
readonly archivedThreads: readonly string[];
|
24
|
+
readonly isLoading: boolean;
|
24
25
|
};
|
25
26
|
|
26
27
|
export type ThreadListRuntime = {
|
27
28
|
getState(): ThreadListState;
|
28
29
|
|
30
|
+
readonly isLoading: boolean;
|
31
|
+
|
29
32
|
subscribe(callback: () => void): Unsubscribe;
|
30
33
|
|
31
34
|
readonly main: ThreadRuntime;
|
@@ -48,6 +51,7 @@ const getThreadListState = (
|
|
48
51
|
newThread: threadList.newThreadId,
|
49
52
|
threads: threadList.threadIds,
|
50
53
|
archivedThreads: threadList.archivedThreadIds,
|
54
|
+
isLoading: threadList.isLoading,
|
51
55
|
};
|
52
56
|
};
|
53
57
|
|
@@ -139,6 +143,10 @@ export class ThreadListRuntimeImpl implements ThreadListRuntime {
|
|
139
143
|
return this._getState();
|
140
144
|
}
|
141
145
|
|
146
|
+
public get isLoading() {
|
147
|
+
return this._core.isLoading;
|
148
|
+
}
|
149
|
+
|
142
150
|
public subscribe(callback: () => void): Unsubscribe {
|
143
151
|
return this._core.subscribe(callback);
|
144
152
|
}
|
package/src/api/ThreadRuntime.ts
CHANGED
@@ -139,6 +139,11 @@ export type ThreadState = {
|
|
139
139
|
*/
|
140
140
|
readonly isDisabled: boolean;
|
141
141
|
|
142
|
+
/**
|
143
|
+
* Whether the thread is loading its history.
|
144
|
+
*/
|
145
|
+
readonly isLoading: boolean;
|
146
|
+
|
142
147
|
/**
|
143
148
|
* Whether the thread is running. A thread is considered running when there is an active stream connection to the backend.
|
144
149
|
*/
|
@@ -187,6 +192,7 @@ export const getThreadState = (
|
|
187
192
|
metadata: threadListItemState,
|
188
193
|
capabilities: runtime.capabilities,
|
189
194
|
isDisabled: runtime.isDisabled,
|
195
|
+
isLoading: runtime.isLoading,
|
190
196
|
isRunning:
|
191
197
|
lastMessage?.role !== "assistant"
|
192
198
|
? false
|
package/src/api/index.ts
CHANGED
@@ -6,10 +6,18 @@ export type {
|
|
6
6
|
CreateStartRunConfig,
|
7
7
|
} from "./ThreadRuntime";
|
8
8
|
export type { MessageRuntime, MessageState } from "./MessageRuntime";
|
9
|
+
|
9
10
|
export type {
|
10
|
-
|
11
|
-
|
12
|
-
} from "./
|
11
|
+
MessagePartRuntime,
|
12
|
+
MessagePartState,
|
13
|
+
} from "./MessagePartRuntime";
|
14
|
+
|
15
|
+
// TODO remove in v0.11
|
16
|
+
export type {
|
17
|
+
MessagePartRuntime as MessageContentRuntime,
|
18
|
+
MessagePartState as MessageContentState,
|
19
|
+
} from "./MessagePartRuntime";
|
20
|
+
|
13
21
|
export type {
|
14
22
|
ComposerRuntime,
|
15
23
|
ThreadComposerRuntime,
|
package/src/cloud/auiV0.ts
CHANGED
@@ -6,7 +6,7 @@ import { isJSONValue } from "../utils/json/is-json";
|
|
6
6
|
import { ReadonlyJSONObject, ReadonlyJSONValue } from "assistant-stream/utils";
|
7
7
|
import { ExportedMessageRepositoryItem } from "../runtimes/utils/MessageRepository";
|
8
8
|
|
9
|
-
type
|
9
|
+
type AuiV0MessageMessagePart =
|
10
10
|
| {
|
11
11
|
readonly type: "text";
|
12
12
|
readonly text: string;
|
@@ -42,7 +42,7 @@ type AuiV0MessageContentPart =
|
|
42
42
|
type AuiV0Message = {
|
43
43
|
readonly role: "assistant" | "user" | "system";
|
44
44
|
readonly status?: MessageStatus;
|
45
|
-
readonly content: readonly
|
45
|
+
readonly content: readonly AuiV0MessageMessagePart[];
|
46
46
|
readonly metadata: {
|
47
47
|
readonly unstable_state?: ReadonlyJSONValue;
|
48
48
|
readonly unstable_annotations: readonly ReadonlyJSONValue[];
|
@@ -114,7 +114,7 @@ export const auiV0Encode = (message: ThreadMessage): AuiV0Message => {
|
|
114
114
|
default: {
|
115
115
|
const unhandledType: "image" | "file" | "audio" = type;
|
116
116
|
throw new Error(
|
117
|
-
`
|
117
|
+
`Message part type not supported by aui/v0: ${unhandledType}`,
|
118
118
|
);
|
119
119
|
}
|
120
120
|
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
"use client";
|
2
|
+
|
3
|
+
import { type FC, type PropsWithChildren, useEffect, useState } from "react";
|
4
|
+
import { create } from "zustand";
|
5
|
+
import { MessagePartContext } from "../react/MessagePartContext";
|
6
|
+
import type { MessagePartContextValue } from "../react/MessagePartContext";
|
7
|
+
import { writableStore } from "../ReadonlyStore";
|
8
|
+
import { MessagePartRuntime } from "../../api/MessagePartRuntime";
|
9
|
+
import { ensureBinding } from "../react/utils/ensureBinding";
|
10
|
+
|
11
|
+
export namespace MessagePartRuntimeProvider {
|
12
|
+
export type Props = PropsWithChildren<{
|
13
|
+
runtime: MessagePartRuntime;
|
14
|
+
}>;
|
15
|
+
}
|
16
|
+
|
17
|
+
const useMessagePartRuntimeStore = (runtime: MessagePartRuntime) => {
|
18
|
+
const [store] = useState(() => create(() => runtime));
|
19
|
+
|
20
|
+
useEffect(() => {
|
21
|
+
ensureBinding(runtime);
|
22
|
+
|
23
|
+
writableStore(store).setState(runtime, true);
|
24
|
+
}, [runtime, store]);
|
25
|
+
|
26
|
+
return store;
|
27
|
+
};
|
28
|
+
|
29
|
+
export const MessagePartRuntimeProvider: FC<
|
30
|
+
MessagePartRuntimeProvider.Props
|
31
|
+
> = ({ runtime, children }) => {
|
32
|
+
const useMessagePartRuntime = useMessagePartRuntimeStore(runtime);
|
33
|
+
const [context] = useState<MessagePartContextValue>(() => {
|
34
|
+
return { useMessagePartRuntime };
|
35
|
+
});
|
36
|
+
|
37
|
+
return (
|
38
|
+
<MessagePartContext.Provider value={context}>
|
39
|
+
{children}
|
40
|
+
</MessagePartContext.Provider>
|
41
|
+
);
|
42
|
+
};
|
@@ -3,88 +3,88 @@
|
|
3
3
|
import { FC, PropsWithChildren, useEffect, useState } from "react";
|
4
4
|
import { create, StoreApi, UseBoundStore } from "zustand";
|
5
5
|
import {
|
6
|
-
|
7
|
-
|
8
|
-
} from "../react/
|
9
|
-
import {
|
6
|
+
MessagePartContext,
|
7
|
+
MessagePartContextValue,
|
8
|
+
} from "../react/MessagePartContext";
|
9
|
+
import { MessagePartStatus } from "../../types/AssistantTypes";
|
10
10
|
import { writableStore } from "../ReadonlyStore";
|
11
11
|
import {
|
12
|
-
|
13
|
-
|
14
|
-
} from "../../api/
|
12
|
+
MessagePartRuntimeImpl,
|
13
|
+
MessagePartState,
|
14
|
+
} from "../../api/MessagePartRuntime";
|
15
15
|
import { ensureBinding } from "../react/utils/ensureBinding";
|
16
16
|
|
17
|
-
export namespace
|
17
|
+
export namespace TextMessagePartProvider {
|
18
18
|
export type Props = PropsWithChildren<{
|
19
19
|
text: string;
|
20
20
|
isRunning?: boolean | undefined;
|
21
21
|
}>;
|
22
22
|
}
|
23
23
|
|
24
|
-
const COMPLETE_STATUS:
|
24
|
+
const COMPLETE_STATUS: MessagePartStatus = {
|
25
25
|
type: "complete",
|
26
26
|
};
|
27
27
|
|
28
|
-
const RUNNING_STATUS:
|
28
|
+
const RUNNING_STATUS: MessagePartStatus = {
|
29
29
|
type: "running",
|
30
30
|
};
|
31
31
|
|
32
|
-
export const
|
32
|
+
export const TextMessagePartProvider: FC<TextMessagePartProvider.Props> = ({
|
33
33
|
children,
|
34
34
|
text,
|
35
35
|
isRunning,
|
36
36
|
}) => {
|
37
37
|
const [context] = useState<
|
38
|
-
|
39
|
-
|
40
|
-
StoreApi<
|
38
|
+
MessagePartContextValue & {
|
39
|
+
useMessagePart: UseBoundStore<
|
40
|
+
StoreApi<MessagePartState & { type: "text" }>
|
41
41
|
>;
|
42
42
|
}
|
43
43
|
>(() => {
|
44
|
-
const
|
44
|
+
const useMessagePart = create<MessagePartState & { type: "text" }>(() => ({
|
45
45
|
status: isRunning ? RUNNING_STATUS : COMPLETE_STATUS,
|
46
46
|
type: "text",
|
47
47
|
text,
|
48
48
|
}));
|
49
49
|
|
50
|
-
const
|
50
|
+
const MessagePartRuntime = new MessagePartRuntimeImpl({
|
51
51
|
path: {
|
52
52
|
ref: "text",
|
53
53
|
threadSelector: { type: "main" },
|
54
54
|
messageSelector: { type: "messageId", messageId: "" },
|
55
|
-
|
55
|
+
messagePartSelector: { type: "index", index: 0 },
|
56
56
|
},
|
57
|
-
getState:
|
58
|
-
subscribe:
|
57
|
+
getState: useMessagePart.getState,
|
58
|
+
subscribe: useMessagePart.subscribe,
|
59
59
|
});
|
60
|
-
ensureBinding(
|
60
|
+
ensureBinding(MessagePartRuntime);
|
61
61
|
|
62
|
-
const
|
62
|
+
const useMessagePartRuntime = create(() => MessagePartRuntime);
|
63
63
|
|
64
|
-
return {
|
64
|
+
return { useMessagePartRuntime, useMessagePart };
|
65
65
|
});
|
66
66
|
|
67
67
|
useEffect(() => {
|
68
|
-
const state = context.
|
68
|
+
const state = context.useMessagePart.getState();
|
69
69
|
const textUpdated = state.text !== text;
|
70
70
|
const targetStatus = isRunning ? RUNNING_STATUS : COMPLETE_STATUS;
|
71
71
|
const statusUpdated = state.status !== targetStatus;
|
72
72
|
|
73
73
|
if (!textUpdated && !statusUpdated) return;
|
74
74
|
|
75
|
-
writableStore(context.
|
75
|
+
writableStore(context.useMessagePart).setState(
|
76
76
|
{
|
77
77
|
type: "text",
|
78
78
|
text,
|
79
79
|
status: targetStatus,
|
80
|
-
} satisfies
|
80
|
+
} satisfies MessagePartState,
|
81
81
|
true,
|
82
82
|
);
|
83
83
|
}, [context, isRunning, text]);
|
84
84
|
|
85
85
|
return (
|
86
|
-
<
|
86
|
+
<MessagePartContext.Provider value={context}>
|
87
87
|
{children}
|
88
|
-
</
|
88
|
+
</MessagePartContext.Provider>
|
89
89
|
);
|
90
90
|
};
|
@@ -1,2 +1,5 @@
|
|
1
1
|
export { AssistantRuntimeProvider } from "./AssistantRuntimeProvider";
|
2
|
-
export {
|
2
|
+
export { TextMessagePartProvider } from "./TextMessagePartProvider";
|
3
|
+
|
4
|
+
// TODO remove in v0.11
|
5
|
+
export { TextMessagePartProvider as TextContentPartProvider } from "./TextMessagePartProvider";
|
@@ -0,0 +1,37 @@
|
|
1
|
+
"use client";
|
2
|
+
|
3
|
+
import { createContext } from "react";
|
4
|
+
import { ReadonlyStore } from "../ReadonlyStore";
|
5
|
+
import { createContextHook } from "./utils/createContextHook";
|
6
|
+
import { UseBoundStore } from "zustand";
|
7
|
+
import { MessagePartRuntime } from "../../api/MessagePartRuntime";
|
8
|
+
import { createStateHookForRuntime } from "./utils/createStateHookForRuntime";
|
9
|
+
|
10
|
+
export type MessagePartContextValue = {
|
11
|
+
useMessagePartRuntime: UseBoundStore<ReadonlyStore<MessagePartRuntime>>;
|
12
|
+
};
|
13
|
+
|
14
|
+
export const MessagePartContext = createContext<MessagePartContextValue | null>(
|
15
|
+
null,
|
16
|
+
);
|
17
|
+
|
18
|
+
const useMessagePartContext = createContextHook(
|
19
|
+
MessagePartContext,
|
20
|
+
"a component passed to <MessagePrimitive.Parts components={...}>",
|
21
|
+
);
|
22
|
+
|
23
|
+
export function useMessagePartRuntime(options?: {
|
24
|
+
optional?: false | undefined;
|
25
|
+
}): MessagePartRuntime;
|
26
|
+
export function useMessagePartRuntime(options?: {
|
27
|
+
optional?: boolean | undefined;
|
28
|
+
}): MessagePartRuntime | null;
|
29
|
+
export function useMessagePartRuntime(options?: {
|
30
|
+
optional?: boolean | undefined;
|
31
|
+
}) {
|
32
|
+
const context = useMessagePartContext(options);
|
33
|
+
if (!context) return null;
|
34
|
+
return context.useMessagePartRuntime();
|
35
|
+
}
|
36
|
+
|
37
|
+
export const useMessagePart = createStateHookForRuntime(useMessagePartRuntime);
|
@@ -37,7 +37,7 @@ export {
|
|
37
37
|
useMessageUtils,
|
38
38
|
useMessageUtilsStore,
|
39
39
|
} from "./MessageContext";
|
40
|
-
export {
|
40
|
+
export { useMessagePartRuntime, useMessagePart } from "./MessagePartContext";
|
41
41
|
export { useComposerRuntime, useComposer } from "./ComposerContext";
|
42
42
|
|
43
43
|
export {
|
@@ -1,25 +1,25 @@
|
|
1
1
|
import { create } from "zustand";
|
2
|
-
import type {
|
2
|
+
import type { ToolCallMessagePartComponent } from "../../types/MessagePartComponentTypes";
|
3
3
|
import { Unsubscribe } from "../../types";
|
4
4
|
|
5
5
|
export type AssistantToolUIsState = {
|
6
6
|
/**
|
7
7
|
* Get the tool UI configured for a given tool name.
|
8
8
|
*/
|
9
|
-
getToolUI: (toolName: string) =>
|
9
|
+
getToolUI: (toolName: string) => ToolCallMessagePartComponent | null;
|
10
10
|
|
11
11
|
/**
|
12
12
|
* Registers a tool UI for a given tool name. Returns an unsubscribe function to remove the tool UI.
|
13
13
|
*/
|
14
14
|
setToolUI: (
|
15
15
|
toolName: string,
|
16
|
-
render:
|
16
|
+
render: ToolCallMessagePartComponent,
|
17
17
|
) => Unsubscribe;
|
18
18
|
};
|
19
19
|
|
20
20
|
export const makeAssistantToolUIsStore = () =>
|
21
21
|
create<AssistantToolUIsState>((set) => {
|
22
|
-
const renderers = new Map<string,
|
22
|
+
const renderers = new Map<string, ToolCallMessagePartComponent[]>();
|
23
23
|
|
24
24
|
return Object.freeze({
|
25
25
|
getToolUI: (name) => {
|
@@ -5,7 +5,7 @@ import {
|
|
5
5
|
useAssistantRuntime,
|
6
6
|
useToolUIsStore,
|
7
7
|
} from "../context/react/AssistantContext";
|
8
|
-
import type {
|
8
|
+
import type { ToolCallMessagePartComponent } from "../types/MessagePartComponentTypes";
|
9
9
|
import type { Tool } from "assistant-stream";
|
10
10
|
|
11
11
|
export type AssistantToolProps<
|
@@ -13,7 +13,7 @@ export type AssistantToolProps<
|
|
13
13
|
TResult,
|
14
14
|
> = Tool<TArgs, TResult> & {
|
15
15
|
toolName: string;
|
16
|
-
render?:
|
16
|
+
render?: ToolCallMessagePartComponent<TArgs, TResult> | undefined;
|
17
17
|
};
|
18
18
|
|
19
19
|
export const useAssistantTool = <
|
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
import { useEffect } from "react";
|
4
4
|
import { useToolUIsStore } from "../context/react/AssistantContext";
|
5
|
-
import type {
|
5
|
+
import type { ToolCallMessagePartComponent } from "../types/MessagePartComponentTypes";
|
6
6
|
|
7
7
|
export type AssistantToolUIProps<TArgs, TResult> = {
|
8
8
|
toolName: string;
|
9
|
-
render:
|
9
|
+
render: ToolCallMessagePartComponent<TArgs, TResult>;
|
10
10
|
};
|
11
11
|
|
12
12
|
export const useAssistantToolUI = (
|
@@ -1,12 +1,12 @@
|
|
1
1
|
"use client";
|
2
2
|
|
3
3
|
import { FC, useCallback, useEffect, useState } from "react";
|
4
|
-
import {
|
4
|
+
import { ToolCallMessagePartProps } from "../types";
|
5
5
|
import { create } from "zustand";
|
6
6
|
|
7
7
|
export const useInlineRender = <TArgs, TResult>(
|
8
|
-
toolUI: FC<
|
9
|
-
): FC<
|
8
|
+
toolUI: FC<ToolCallMessagePartProps<TArgs, TResult>>,
|
9
|
+
): FC<ToolCallMessagePartProps<TArgs, TResult>> => {
|
10
10
|
const [useToolUIStore] = useState(() =>
|
11
11
|
create(() => ({
|
12
12
|
toolUI,
|
@@ -10,6 +10,9 @@ export namespace AssistantModalPrimitiveContent {
|
|
10
10
|
export type Props = ComponentPropsWithoutRef<
|
11
11
|
typeof PopoverPrimitive.Content
|
12
12
|
> & {
|
13
|
+
portalProps?:
|
14
|
+
| ComponentPropsWithoutRef<typeof PopoverPrimitive.Portal>
|
15
|
+
| undefined;
|
13
16
|
dissmissOnInteractOutside?: boolean | undefined;
|
14
17
|
};
|
15
18
|
}
|
@@ -25,6 +28,7 @@ export const AssistantModalPrimitiveContent = forwardRef<
|
|
25
28
|
align,
|
26
29
|
onInteractOutside,
|
27
30
|
dissmissOnInteractOutside = false,
|
31
|
+
portalProps,
|
28
32
|
...props
|
29
33
|
}: ScopedProps<AssistantModalPrimitiveContent.Props>,
|
30
34
|
forwardedRef,
|
@@ -32,7 +36,7 @@ export const AssistantModalPrimitiveContent = forwardRef<
|
|
32
36
|
const scope = usePopoverScope(__scopeAssistantModal);
|
33
37
|
|
34
38
|
return (
|
35
|
-
<PopoverPrimitive.Portal {...scope}>
|
39
|
+
<PopoverPrimitive.Portal {...scope} {...portalProps}>
|
36
40
|
<PopoverPrimitive.Content
|
37
41
|
{...scope}
|
38
42
|
{...props}
|
package/src/primitives/index.ts
CHANGED
@@ -3,16 +3,24 @@ export * as AssistantModalPrimitive from "./assistantModal";
|
|
3
3
|
export * as AttachmentPrimitive from "./attachment";
|
4
4
|
export * as BranchPickerPrimitive from "./branchPicker";
|
5
5
|
export * as ComposerPrimitive from "./composer";
|
6
|
-
export * as
|
6
|
+
export * as MessagePartPrimitive from "./messagePart";
|
7
7
|
export * as ErrorPrimitive from "./error";
|
8
8
|
export * as MessagePrimitive from "./message";
|
9
9
|
export * as ThreadPrimitive from "./thread";
|
10
10
|
export * as ThreadListPrimitive from "./threadList";
|
11
11
|
export * as ThreadListItemPrimitive from "./threadListItem";
|
12
12
|
|
13
|
-
export {
|
14
|
-
export {
|
15
|
-
export {
|
16
|
-
export {
|
17
|
-
export {
|
13
|
+
export { useMessagePartText } from "./messagePart/useMessagePartText";
|
14
|
+
export { useMessagePartReasoning } from "./messagePart/useMessagePartReasoning";
|
15
|
+
export { useMessagePartSource } from "./messagePart/useMessagePartSource";
|
16
|
+
export { useMessagePartFile } from "./messagePart/useMessagePartFile";
|
17
|
+
export { useMessagePartImage } from "./messagePart/useMessagePartImage";
|
18
18
|
export { useThreadViewportAutoScroll } from "./thread/useThreadViewportAutoScroll";
|
19
|
+
|
20
|
+
// TODO remove in v0.11
|
21
|
+
export * as ContentPartPrimitive from "./messagePart";
|
22
|
+
export { useMessagePartText as useContentPartText } from "./messagePart/useMessagePartText";
|
23
|
+
export { useMessagePartReasoning as useContentPartReasoning } from "./messagePart/useMessagePartReasoning";
|
24
|
+
export { useMessagePartSource as useContentPartSource } from "./messagePart/useMessagePartSource";
|
25
|
+
export { useMessagePartFile as useContentPartFile } from "./messagePart/useMessagePartFile";
|
26
|
+
export { useMessagePartImage as useContentPartImage } from "./messagePart/useMessagePartImage";
|