@assistant-ui/react 0.11.39 → 0.11.43
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/client/AssistantClient.d.ts.map +1 -1
- package/dist/client/AssistantClient.js.map +1 -1
- package/dist/client/ModelContext.d.ts +1 -1
- package/dist/client/ModelContext.d.ts.map +1 -1
- package/dist/client/ModelContext.js.map +1 -1
- package/dist/client/ModelContextClient.d.ts +1 -1
- package/dist/client/ThreadMessageClient.d.ts +1 -0
- package/dist/client/ThreadMessageClient.d.ts.map +1 -1
- package/dist/client/ThreadMessageClient.js +3 -1
- package/dist/client/ThreadMessageClient.js.map +1 -1
- package/dist/client/types/Message.d.ts +2 -0
- package/dist/client/types/Message.d.ts.map +1 -1
- package/dist/client/types/ModelContext.d.ts +1 -1
- package/dist/client/types/ModelContext.d.ts.map +1 -1
- package/dist/client/types/Tools.d.ts +1 -2
- package/dist/client/types/Tools.d.ts.map +1 -1
- package/dist/context/providers/ThreadViewportProvider.d.ts +5 -1
- package/dist/context/providers/ThreadViewportProvider.d.ts.map +1 -1
- package/dist/context/providers/ThreadViewportProvider.js +17 -6
- package/dist/context/providers/ThreadViewportProvider.js.map +1 -1
- package/dist/context/react/AssistantApiContext.d.ts +1 -1
- package/dist/context/react/AssistantApiContext.d.ts.map +1 -1
- package/dist/context/react/AssistantApiContext.js +1 -2
- package/dist/context/react/AssistantApiContext.js.map +1 -1
- package/dist/context/stores/ThreadViewport.d.ts +33 -3
- package/dist/context/stores/ThreadViewport.d.ts.map +1 -1
- package/dist/context/stores/ThreadViewport.js +67 -5
- package/dist/context/stores/ThreadViewport.js.map +1 -1
- package/dist/devtools/DevToolsHooks.d.ts +1 -1
- package/dist/devtools/DevToolsHooks.d.ts.map +1 -1
- package/dist/devtools/DevToolsHooks.js.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js +2 -1
- package/dist/legacy-runtime/AssistantRuntimeProvider.js.map +1 -1
- package/dist/legacy-runtime/client/ComposerRuntimeClient.d.ts +3 -3
- package/dist/legacy-runtime/client/ComposerRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/ComposerRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/EventManagerRuntimeClient.d.ts +1 -1
- package/dist/legacy-runtime/client/ThreadRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/runtime/MessageRuntime.d.ts +3 -0
- package/dist/legacy-runtime/runtime/MessageRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime/MessageRuntime.js.map +1 -1
- package/dist/legacy-runtime/runtime/RuntimeBindings.d.ts +2 -0
- package/dist/legacy-runtime/runtime/RuntimeBindings.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime/ThreadRuntime.d.ts +1 -0
- package/dist/legacy-runtime/runtime/ThreadRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime/ThreadRuntime.js +6 -3
- package/dist/legacy-runtime/runtime/ThreadRuntime.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.d.ts +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/runManager.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts +8 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/types.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js +23 -11
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.js +5 -5
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.d.ts +1 -0
- package/dist/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.d.ts +1 -0
- package/dist/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts +2 -0
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListHookInstanceManager.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +2 -0
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.d.ts +1 -0
- package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.js +2 -1
- package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.js.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts +2 -2
- package/dist/primitives/composer/ComposerAttachmentDropzone.d.ts.map +1 -1
- package/dist/primitives/composer/ComposerAttachmentDropzone.js +31 -11
- package/dist/primitives/composer/ComposerAttachmentDropzone.js.map +1 -1
- package/dist/primitives/composer/index.d.ts +1 -0
- package/dist/primitives/composer/index.d.ts.map +1 -1
- package/dist/primitives/composer/index.js +2 -0
- package/dist/primitives/composer/index.js.map +1 -1
- package/dist/primitives/message/MessageRoot.d.ts +3 -0
- package/dist/primitives/message/MessageRoot.d.ts.map +1 -1
- package/dist/primitives/message/MessageRoot.js +24 -2
- package/dist/primitives/message/MessageRoot.js.map +1 -1
- package/dist/primitives/messagePart/useMessagePartData.d.ts.map +1 -1
- package/dist/primitives/messagePart/useMessagePartData.js.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.d.ts +7 -2
- package/dist/primitives/thread/ThreadScrollToBottom.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadScrollToBottom.js +7 -4
- package/dist/primitives/thread/ThreadScrollToBottom.js.map +1 -1
- package/dist/primitives/thread/ThreadViewport.d.ts +17 -3
- package/dist/primitives/thread/ThreadViewport.d.ts.map +1 -1
- package/dist/primitives/thread/ThreadViewport.js +19 -5
- package/dist/primitives/thread/ThreadViewport.js.map +1 -1
- package/dist/primitives/thread/ThreadViewportFooter.d.ts +31 -0
- package/dist/primitives/thread/ThreadViewportFooter.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadViewportFooter.js +27 -0
- package/dist/primitives/thread/ThreadViewportFooter.js.map +1 -0
- package/dist/primitives/thread/ThreadViewportSlack.d.ts +20 -0
- package/dist/primitives/thread/ThreadViewportSlack.d.ts.map +1 -0
- package/dist/primitives/thread/ThreadViewportSlack.js +77 -0
- package/dist/primitives/thread/ThreadViewportSlack.js.map +1 -0
- package/dist/primitives/thread/index.d.ts +3 -0
- package/dist/primitives/thread/index.d.ts.map +1 -1
- package/dist/primitives/thread/index.js +7 -1
- package/dist/primitives/thread/index.js.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts +6 -0
- package/dist/primitives/thread/useThreadViewportAutoScroll.d.ts.map +1 -1
- package/dist/primitives/thread/useThreadViewportAutoScroll.js +17 -8
- package/dist/primitives/thread/useThreadViewportAutoScroll.js.map +1 -1
- package/dist/tests/setup.js +14 -14
- package/dist/tests/setup.js.map +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.d.ts +3 -1
- package/dist/utils/hooks/useOnScrollToBottom.d.ts.map +1 -1
- package/dist/utils/hooks/useOnScrollToBottom.js.map +1 -1
- package/dist/utils/hooks/useSizeHandle.d.ts +11 -0
- package/dist/utils/hooks/useSizeHandle.d.ts.map +1 -0
- package/dist/utils/hooks/useSizeHandle.js +30 -0
- package/dist/utils/hooks/useSizeHandle.js.map +1 -0
- package/dist/utils/tap-store/derived-scopes.d.ts +2 -1
- package/dist/utils/tap-store/derived-scopes.d.ts.map +1 -1
- package/dist/utils/tap-store/derived-scopes.js.map +1 -1
- package/dist/utils/tap-store/store.d.ts +2 -1
- package/dist/utils/tap-store/store.d.ts.map +1 -1
- package/dist/utils/tap-store/store.js.map +1 -1
- package/package.json +6 -6
- package/src/client/AssistantClient.ts +1 -1
- package/src/client/ModelContext.ts +1 -1
- package/src/client/ThreadMessageClient.tsx +4 -1
- package/src/client/types/Message.ts +3 -0
- package/src/client/types/ModelContext.ts +1 -1
- package/src/client/types/Tools.ts +1 -2
- package/src/context/providers/ThreadViewportProvider.tsx +27 -5
- package/src/context/react/AssistantApiContext.tsx +2 -5
- package/src/context/stores/ThreadViewport.tsx +125 -7
- package/src/devtools/DevToolsHooks.ts +1 -1
- package/src/legacy-runtime/AssistantRuntimeProvider.tsx +6 -1
- package/src/legacy-runtime/client/ComposerRuntimeClient.ts +3 -3
- package/src/legacy-runtime/client/ThreadRuntimeClient.ts +2 -2
- package/src/legacy-runtime/runtime/MessageRuntime.ts +2 -0
- package/src/legacy-runtime/runtime/RuntimeBindings.ts +2 -0
- package/src/legacy-runtime/runtime/ThreadRuntime.ts +6 -3
- package/src/legacy-runtime/runtime-cores/assistant-transport/runManager.ts +2 -2
- package/src/legacy-runtime/runtime-cores/assistant-transport/types.ts +8 -1
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.tsx +26 -11
- package/src/legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.ts +5 -5
- package/src/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.tsx +1 -0
- package/src/legacy-runtime/runtime-cores/utils/MessageRepository.tsx +1 -0
- package/src/primitives/composer/ComposerAttachmentDropzone.tsx +35 -12
- package/src/primitives/composer/index.ts +1 -0
- package/src/primitives/message/MessageRoot.tsx +45 -2
- package/src/primitives/messagePart/useMessagePartData.tsx +0 -1
- package/src/primitives/thread/ThreadScrollToBottom.tsx +12 -3
- package/src/primitives/thread/ThreadViewport.tsx +35 -9
- package/src/primitives/thread/ThreadViewportFooter.tsx +57 -0
- package/src/primitives/thread/ThreadViewportSlack.tsx +109 -0
- package/src/primitives/thread/index.ts +3 -0
- package/src/primitives/thread/useThreadViewportAutoScroll.tsx +24 -12
- package/src/utils/hooks/useOnScrollToBottom.tsx +3 -1
- package/src/utils/hooks/useSizeHandle.ts +43 -0
- package/src/utils/tap-store/derived-scopes.ts +2 -1
- package/src/utils/tap-store/store.ts +1 -1
|
@@ -11,28 +11,38 @@ import { useThreadViewportStore } from "../../context/react/ThreadViewportContex
|
|
|
11
11
|
|
|
12
12
|
export namespace useThreadViewportAutoScroll {
|
|
13
13
|
export type Options = {
|
|
14
|
+
/**
|
|
15
|
+
* Whether to automatically scroll to the bottom when new messages are added.
|
|
16
|
+
* When enabled, the viewport will automatically scroll to show the latest content.
|
|
17
|
+
*
|
|
18
|
+
* Default false if `turnAnchor` is "top", otherwise defaults to true.
|
|
19
|
+
*/
|
|
14
20
|
autoScroll?: boolean | undefined;
|
|
15
21
|
};
|
|
16
22
|
}
|
|
17
23
|
|
|
18
24
|
export const useThreadViewportAutoScroll = <TElement extends HTMLElement>({
|
|
19
|
-
autoScroll
|
|
25
|
+
autoScroll,
|
|
20
26
|
}: useThreadViewportAutoScroll.Options): RefCallback<TElement> => {
|
|
21
27
|
const divRef = useRef<TElement>(null);
|
|
22
28
|
|
|
23
29
|
const threadViewportStore = useThreadViewportStore();
|
|
30
|
+
if (autoScroll === undefined) {
|
|
31
|
+
autoScroll = threadViewportStore.getState().turnAnchor !== "top";
|
|
32
|
+
}
|
|
24
33
|
|
|
25
34
|
const lastScrollTop = useRef<number>(0);
|
|
26
35
|
|
|
27
36
|
// bug: when ScrollToBottom's button changes its disabled state, the scroll stops
|
|
28
37
|
// fix: delay the state change until the scroll is done
|
|
29
|
-
|
|
38
|
+
// stores the scroll behavior to reuse during content resize, or null if not scrolling
|
|
39
|
+
const scrollingToBottomBehaviorRef = useRef<ScrollBehavior | null>(null);
|
|
30
40
|
|
|
31
41
|
const scrollToBottom = useCallback((behavior: ScrollBehavior) => {
|
|
32
42
|
const div = divRef.current;
|
|
33
43
|
if (!div) return;
|
|
34
44
|
|
|
35
|
-
|
|
45
|
+
scrollingToBottomBehaviorRef.current = behavior;
|
|
36
46
|
div.scrollTo({ top: div.scrollHeight, behavior });
|
|
37
47
|
}, []);
|
|
38
48
|
|
|
@@ -49,7 +59,7 @@ export const useThreadViewportAutoScroll = <TElement extends HTMLElement>({
|
|
|
49
59
|
// ignore scroll down
|
|
50
60
|
} else {
|
|
51
61
|
if (newIsAtBottom) {
|
|
52
|
-
|
|
62
|
+
scrollingToBottomBehaviorRef.current = null;
|
|
53
63
|
}
|
|
54
64
|
|
|
55
65
|
if (newIsAtBottom !== isAtBottom) {
|
|
@@ -63,11 +73,10 @@ export const useThreadViewportAutoScroll = <TElement extends HTMLElement>({
|
|
|
63
73
|
};
|
|
64
74
|
|
|
65
75
|
const resizeRef = useOnResizeContent(() => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
(
|
|
69
|
-
|
|
70
|
-
) {
|
|
76
|
+
const scrollBehavior = scrollingToBottomBehaviorRef.current;
|
|
77
|
+
if (scrollBehavior) {
|
|
78
|
+
scrollToBottom(scrollBehavior);
|
|
79
|
+
} else if (autoScroll && threadViewportStore.getState().isAtBottom) {
|
|
71
80
|
scrollToBottom("instant");
|
|
72
81
|
}
|
|
73
82
|
|
|
@@ -81,13 +90,16 @@ export const useThreadViewportAutoScroll = <TElement extends HTMLElement>({
|
|
|
81
90
|
};
|
|
82
91
|
});
|
|
83
92
|
|
|
84
|
-
useOnScrollToBottom(() => {
|
|
85
|
-
scrollToBottom(
|
|
93
|
+
useOnScrollToBottom(({ behavior }) => {
|
|
94
|
+
scrollToBottom(behavior);
|
|
86
95
|
});
|
|
87
96
|
|
|
88
97
|
// autoscroll on run start
|
|
89
98
|
useAssistantEvent("thread.run-start", () => {
|
|
90
|
-
|
|
99
|
+
scrollingToBottomBehaviorRef.current = "auto";
|
|
100
|
+
requestAnimationFrame(() => {
|
|
101
|
+
scrollToBottom("auto");
|
|
102
|
+
});
|
|
91
103
|
});
|
|
92
104
|
|
|
93
105
|
const autoScrollRef = useComposedRefs<TElement>(resizeRef, scrollRef, divRef);
|
|
@@ -4,7 +4,9 @@ import { useCallbackRef } from "@radix-ui/react-use-callback-ref";
|
|
|
4
4
|
import { useEffect } from "react";
|
|
5
5
|
import { useThreadViewport } from "../../context/react/ThreadViewportContext";
|
|
6
6
|
|
|
7
|
-
export const useOnScrollToBottom = (
|
|
7
|
+
export const useOnScrollToBottom = (
|
|
8
|
+
callback: (config: { behavior: ScrollBehavior }) => void,
|
|
9
|
+
) => {
|
|
8
10
|
const callbackRef = useCallbackRef(callback);
|
|
9
11
|
const onScrollToBottom = useThreadViewport((vp) => vp.onScrollToBottom);
|
|
10
12
|
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
import { useCallback } from "react";
|
|
4
|
+
import { useManagedRef } from "./useManagedRef";
|
|
5
|
+
import type { SizeHandle } from "../../context/stores/ThreadViewport";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Hook that creates a ref for tracking element size via a SizeHandle.
|
|
9
|
+
* Automatically sets up ResizeObserver and reports height changes.
|
|
10
|
+
*
|
|
11
|
+
* @param register - Function that returns a SizeHandle (e.g., registerContentInset)
|
|
12
|
+
* @param getHeight - Optional function to compute height (defaults to el.offsetHeight)
|
|
13
|
+
* @returns A ref callback to attach to the element
|
|
14
|
+
*/
|
|
15
|
+
export const useSizeHandle = (
|
|
16
|
+
register: (() => SizeHandle) | null | undefined,
|
|
17
|
+
getHeight?: (el: HTMLElement) => number,
|
|
18
|
+
) => {
|
|
19
|
+
const callbackRef = useCallback(
|
|
20
|
+
(el: HTMLElement) => {
|
|
21
|
+
if (!register) return;
|
|
22
|
+
|
|
23
|
+
const sizeHandle = register();
|
|
24
|
+
|
|
25
|
+
const updateHeight = () => {
|
|
26
|
+
const height = getHeight ? getHeight(el) : el.offsetHeight;
|
|
27
|
+
sizeHandle.setHeight(height);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const ro = new ResizeObserver(updateHeight);
|
|
31
|
+
ro.observe(el);
|
|
32
|
+
updateHeight();
|
|
33
|
+
|
|
34
|
+
return () => {
|
|
35
|
+
ro.disconnect();
|
|
36
|
+
sizeHandle.unregister();
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
[register, getHeight],
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
return useManagedRef(callbackRef);
|
|
43
|
+
};
|
|
@@ -10,7 +10,8 @@ import type {
|
|
|
10
10
|
AssistantEventCallback,
|
|
11
11
|
AssistantEventSelector,
|
|
12
12
|
} from "../../types/EventTypes";
|
|
13
|
-
import type { ResourceElement
|
|
13
|
+
import type { ResourceElement } from "@assistant-ui/tap";
|
|
14
|
+
import { Unsubscribe } from "../../types";
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Extract the API return type from an AssistantApiField
|