@assistant-ui/core 0.2.23 → 0.3.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/dist/react/adapters/LocalStorageThreadListAdapter.js +2 -2
- package/dist/react/adapters/LocalStorageThreadListAdapter.js.map +1 -1
- package/dist/react/client/Tools.d.ts.map +1 -1
- package/dist/react/client/Tools.js +40 -55
- package/dist/react/client/Tools.js.map +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.js +1 -1
- package/dist/react/interactables-legacy/useAssistantInteractable.js.map +1 -1
- package/dist/react/interactables-legacy/useInteractableState.js +3 -3
- package/dist/react/interactables-legacy/useInteractableState.js.map +1 -1
- package/dist/react/model-context/useAssistantContext.js +1 -1
- package/dist/react/model-context/useAssistantContext.js.map +1 -1
- package/dist/react/model-context/useAssistantDataUI.js +1 -1
- package/dist/react/model-context/useAssistantDataUI.js.map +1 -1
- package/dist/react/model-context/useAssistantInstructions.js +1 -1
- package/dist/react/model-context/useAssistantInstructions.js.map +1 -1
- package/dist/react/model-context/useAssistantTool.js +29 -25
- package/dist/react/model-context/useAssistantTool.js.map +1 -1
- package/dist/react/model-context/useAssistantToolUI.js +1 -1
- package/dist/react/model-context/useAssistantToolUI.js.map +1 -1
- package/dist/react/model-context/useAuiToolOverrides.js +1 -1
- package/dist/react/model-context/useAuiToolOverrides.js.map +1 -1
- package/dist/react/model-context/useInteractable.js +1 -1
- package/dist/react/model-context/useInteractable.js.map +1 -1
- package/dist/react/model-context/useInteractableState.js +2 -2
- package/dist/react/model-context/useInteractableState.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarCopy.js +3 -3
- package/dist/react/primitive-hooks/useActionBarCopy.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.js +1 -1
- package/dist/react/primitive-hooks/useActionBarEdit.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarFeedback.js +2 -2
- package/dist/react/primitive-hooks/useActionBarFeedback.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.js +1 -1
- package/dist/react/primitive-hooks/useActionBarReload.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.js +1 -1
- package/dist/react/primitive-hooks/useActionBarSpeak.js.map +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js +1 -1
- package/dist/react/primitive-hooks/useActionBarStopSpeaking.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.js +1 -1
- package/dist/react/primitive-hooks/useBranchPickerNext.js.map +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js +1 -1
- package/dist/react/primitive-hooks/useBranchPickerPrevious.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.js +1 -1
- package/dist/react/primitive-hooks/useComposerAddAttachment.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.js +1 -1
- package/dist/react/primitive-hooks/useComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.js +1 -1
- package/dist/react/primitive-hooks/useComposerDictate.js.map +1 -1
- package/dist/react/primitive-hooks/useComposerSend.js +1 -1
- package/dist/react/primitive-hooks/useComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.js +1 -1
- package/dist/react/primitive-hooks/useEditComposerCancel.js.map +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.js +1 -1
- package/dist/react/primitive-hooks/useEditComposerSend.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageBranching.js +2 -2
- package/dist/react/primitive-hooks/useMessageBranching.js.map +1 -1
- package/dist/react/primitive-hooks/useMessageReload.js +1 -1
- package/dist/react/primitive-hooks/useMessageReload.js.map +1 -1
- package/dist/react/primitive-hooks/useSuggestionTrigger.js +7 -7
- package/dist/react/primitive-hooks/useSuggestionTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.js +1 -1
- package/dist/react/primitive-hooks/useThreadListItemArchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.js +1 -1
- package/dist/react/primitive-hooks/useThreadListItemDelete.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js +1 -1
- package/dist/react/primitive-hooks/useThreadListItemTrigger.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js +1 -1
- package/dist/react/primitive-hooks/useThreadListItemUnarchive.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.js +1 -1
- package/dist/react/primitive-hooks/useThreadListLoadMore.js.map +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.js +1 -1
- package/dist/react/primitive-hooks/useThreadListNew.js.map +1 -1
- package/dist/react/primitive-hooks/useVoice.js +5 -13
- package/dist/react/primitive-hooks/useVoice.js.map +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js.map +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.js +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.js.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.d.ts.map +1 -1
- package/dist/react/primitives/composer/ComposerQueue.js +1 -1
- package/dist/react/primitives/composer/ComposerQueue.js.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.d.ts.map +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +1 -1
- package/dist/react/primitives/message/MessageAttachments.js.map +1 -1
- package/dist/react/primitives/message/MessageParts.js +84 -122
- package/dist/react/primitives/message/MessageParts.js.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js.map +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.js +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.js.map +1 -1
- package/dist/react/providers/AttachmentByIndexProvider.js +2 -2
- package/dist/react/providers/AttachmentByIndexProvider.js.map +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.js +1 -1
- package/dist/react/providers/ChainOfThoughtByIndicesProvider.js.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js +30 -18
- package/dist/react/providers/ChainOfThoughtPartByIndexProvider.js.map +1 -1
- package/dist/react/providers/MessageByIdProvider.js +2 -2
- package/dist/react/providers/MessageByIdProvider.js.map +1 -1
- package/dist/react/providers/MessageByIndexProvider.js +2 -2
- package/dist/react/providers/MessageByIndexProvider.js.map +1 -1
- package/dist/react/providers/PartByIndexProvider.d.ts.map +1 -1
- package/dist/react/providers/PartByIndexProvider.js +30 -18
- package/dist/react/providers/PartByIndexProvider.js.map +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.js +1 -1
- package/dist/react/providers/QueueItemByIndexProvider.js.map +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js +1 -1
- package/dist/react/providers/ReadonlyThreadProvider.js.map +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.js +1 -1
- package/dist/react/providers/SuggestionByIndexProvider.js.map +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.js +1 -1
- package/dist/react/providers/ThreadListItemByIndexProvider.js.map +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +3 -3
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.d.ts.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +32 -20
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js.map +1 -1
- package/dist/react/runtimes/createRuntimeExtras.js +1 -1
- package/dist/react/runtimes/createRuntimeExtras.js.map +1 -1
- package/dist/react/types/scopes/tools.d.ts +0 -6
- package/dist/react/types/scopes/tools.d.ts.map +1 -1
- package/dist/react/utils/groupParts.d.ts +1 -3
- package/dist/react/utils/groupParts.d.ts.map +1 -1
- package/dist/react/utils/groupParts.js +1 -3
- package/dist/react/utils/groupParts.js.map +1 -1
- package/dist/store/clients/runtime-adapter.js +3 -3
- package/dist/store/clients/runtime-adapter.js.map +1 -1
- package/package.json +5 -5
- package/src/react/adapters/LocalStorageThreadListAdapter.tsx +2 -2
- package/src/react/client/Tools.ts +0 -7
- package/src/react/interactables-legacy/useAssistantInteractable.ts +1 -1
- package/src/react/interactables-legacy/useInteractableState.ts +3 -3
- package/src/react/model-context/useAssistantContext.ts +1 -1
- package/src/react/model-context/useAssistantDataUI.ts +1 -1
- package/src/react/model-context/useAssistantInstructions.ts +1 -1
- package/src/react/model-context/useAssistantTool.ts +2 -2
- package/src/react/model-context/useAssistantToolUI.ts +1 -1
- package/src/react/model-context/useAuiToolOverrides.ts +1 -1
- package/src/react/model-context/useInteractable.ts +1 -1
- package/src/react/model-context/useInteractableState.ts +2 -2
- package/src/react/primitive-hooks/useActionBarCopy.test.ts +2 -2
- package/src/react/primitive-hooks/useActionBarCopy.ts +3 -3
- package/src/react/primitive-hooks/useActionBarEdit.ts +1 -1
- package/src/react/primitive-hooks/useActionBarFeedback.ts +2 -2
- package/src/react/primitive-hooks/useActionBarReload.ts +1 -1
- package/src/react/primitive-hooks/useActionBarSpeak.ts +1 -1
- package/src/react/primitive-hooks/useActionBarStopSpeaking.ts +1 -1
- package/src/react/primitive-hooks/useBranchPickerNext.ts +1 -1
- package/src/react/primitive-hooks/useBranchPickerPrevious.ts +1 -1
- package/src/react/primitive-hooks/useComposerAddAttachment.ts +1 -1
- package/src/react/primitive-hooks/useComposerCancel.ts +1 -1
- package/src/react/primitive-hooks/useComposerDictate.ts +1 -1
- package/src/react/primitive-hooks/useComposerSend.ts +1 -1
- package/src/react/primitive-hooks/useEditComposerCancel.ts +1 -1
- package/src/react/primitive-hooks/useEditComposerSend.ts +1 -1
- package/src/react/primitive-hooks/useMessageBranching.ts +2 -2
- package/src/react/primitive-hooks/useMessageReload.ts +1 -1
- package/src/react/primitive-hooks/useSuggestionTrigger.ts +9 -9
- package/src/react/primitive-hooks/useThreadListItemArchive.ts +1 -1
- package/src/react/primitive-hooks/useThreadListItemDelete.ts +1 -1
- package/src/react/primitive-hooks/useThreadListItemTrigger.ts +1 -1
- package/src/react/primitive-hooks/useThreadListItemUnarchive.ts +1 -1
- package/src/react/primitive-hooks/useThreadListLoadMore.ts +1 -1
- package/src/react/primitive-hooks/useThreadListNew.ts +1 -1
- package/src/react/primitive-hooks/useVoice.ts +5 -5
- package/src/react/primitives/chainOfThought/ChainOfThoughtParts.tsx +1 -1
- package/src/react/primitives/composer/ComposerAttachments.tsx +1 -1
- package/src/react/primitives/composer/ComposerQueue.tsx +1 -3
- package/src/react/primitives/message/MessageAttachments.tsx +1 -3
- package/src/react/primitives/message/MessageParts.tsx +9 -9
- package/src/react/primitives/thread/ThreadMessages.tsx +1 -1
- package/src/react/primitives/thread/ThreadSuggestions.tsx +1 -1
- package/src/react/primitives/threadList/ThreadListItems.tsx +1 -1
- package/src/react/providers/AttachmentByIndexProvider.tsx +2 -2
- package/src/react/providers/ChainOfThoughtByIndicesProvider.tsx +1 -1
- package/src/react/providers/ChainOfThoughtPartByIndexProvider.tsx +2 -19
- package/src/react/providers/MessageByIdProvider.tsx +2 -2
- package/src/react/providers/MessageByIndexProvider.tsx +2 -2
- package/src/react/providers/PartByIndexProvider.tsx +2 -16
- package/src/react/providers/QueueItemByIndexProvider.tsx +1 -1
- package/src/react/providers/ReadonlyThreadProvider.tsx +1 -1
- package/src/react/providers/SuggestionByIndexProvider.tsx +1 -1
- package/src/react/providers/ThreadListItemByIndexProvider.tsx +1 -1
- package/src/react/runtimes/RemoteThreadListHookInstanceManager.tsx +3 -3
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.test.tsx +32 -7
- package/src/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.ts +26 -16
- package/src/react/runtimes/createRuntimeExtras.test.ts +1 -1
- package/src/react/runtimes/createRuntimeExtras.ts +1 -1
- package/src/react/types/scopes/tools.ts +0 -6
- package/src/react/utils/groupParts.ts +1 -7
- package/src/store/clients/runtime-adapter.ts +3 -3
- package/src/tests/groupParts.test.ts +3 -48
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assistant-ui/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Framework-agnostic core runtime for assistant-ui",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"assistant",
|
|
@@ -59,14 +59,14 @@
|
|
|
59
59
|
],
|
|
60
60
|
"sideEffects": false,
|
|
61
61
|
"dependencies": {
|
|
62
|
-
"assistant-stream": "^0.3.
|
|
62
|
+
"assistant-stream": "^0.3.29",
|
|
63
63
|
"nanoid": "^6.0.0"
|
|
64
64
|
},
|
|
65
65
|
"optionalDevDependencies": {
|
|
66
66
|
"@assistant-ui/x-generative-compiler": ">=0.0.3"
|
|
67
67
|
},
|
|
68
68
|
"peerDependencies": {
|
|
69
|
-
"@assistant-ui/store": "^0.
|
|
69
|
+
"@assistant-ui/store": "^0.3.0",
|
|
70
70
|
"@assistant-ui/tap": "^0.9.0",
|
|
71
71
|
"@types/react": "*",
|
|
72
72
|
"react": "^18 || ^19",
|
|
@@ -95,8 +95,8 @@
|
|
|
95
95
|
"react-dom": "^19.2.8",
|
|
96
96
|
"vitest": "^4.1.10",
|
|
97
97
|
"zustand": "^5.0.14",
|
|
98
|
-
"@assistant-ui/store": "0.
|
|
99
|
-
"@assistant-ui/tap": "0.9.
|
|
98
|
+
"@assistant-ui/store": "0.3.0",
|
|
99
|
+
"@assistant-ui/tap": "0.9.7",
|
|
100
100
|
"@assistant-ui/vite": "0.0.11",
|
|
101
101
|
"@assistant-ui/x-buildutils": "0.0.20",
|
|
102
102
|
"assistant-cloud": "0.1.37"
|
|
@@ -297,7 +297,7 @@ class AsyncStorageHistoryAdapter implements ThreadHistoryAdapter {
|
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
async load(): Promise<ExportedMessageRepository> {
|
|
300
|
-
const remoteId = this.aui.threadListItem
|
|
300
|
+
const remoteId = this.aui.threadListItem.getState().remoteId;
|
|
301
301
|
if (!remoteId) return { messages: [] };
|
|
302
302
|
|
|
303
303
|
const raw = await this.storage.getItem(this._messagesKey(remoteId));
|
|
@@ -305,7 +305,7 @@ class AsyncStorageHistoryAdapter implements ThreadHistoryAdapter {
|
|
|
305
305
|
}
|
|
306
306
|
|
|
307
307
|
async append(item: ExportedMessageRepositoryItem): Promise<void> {
|
|
308
|
-
const { remoteId } = await this.aui.threadListItem
|
|
308
|
+
const { remoteId } = await this.aui.threadListItem.initialize();
|
|
309
309
|
|
|
310
310
|
const key = this._messagesKey(remoteId);
|
|
311
311
|
await this.mutationQueue.run(key, async () => {
|
|
@@ -48,13 +48,6 @@ const useTools = ({
|
|
|
48
48
|
(): ToolsState => ({
|
|
49
49
|
toolUIs,
|
|
50
50
|
mcpApp: mcpAppOutput,
|
|
51
|
-
// Deprecated component-only view, derived from `toolUIs`. Removed in v0.15.
|
|
52
|
-
tools: Object.fromEntries(
|
|
53
|
-
Object.entries(toolUIs).map(([name, regs]) => [
|
|
54
|
-
name,
|
|
55
|
-
regs.map((r) => r.render),
|
|
56
|
-
]),
|
|
57
|
-
),
|
|
58
51
|
}),
|
|
59
52
|
[toolUIs, mcpAppOutput],
|
|
60
53
|
);
|
|
@@ -35,7 +35,7 @@ export const useInteractableState = <TState>(
|
|
|
35
35
|
|
|
36
36
|
const setState = useCallback(
|
|
37
37
|
(updater: StateUpdater<TState>) => {
|
|
38
|
-
aui.interactables
|
|
38
|
+
aui.interactables.setState(id, (prev) => {
|
|
39
39
|
if (typeof updater === "function") {
|
|
40
40
|
return (updater as (prev: TState) => TState)(prev as TState);
|
|
41
41
|
}
|
|
@@ -47,12 +47,12 @@ export const useInteractableState = <TState>(
|
|
|
47
47
|
|
|
48
48
|
const setSelected = useCallback(
|
|
49
49
|
(selected: boolean) => {
|
|
50
|
-
aui.interactables
|
|
50
|
+
aui.interactables.setSelected(id, selected);
|
|
51
51
|
},
|
|
52
52
|
[aui, id],
|
|
53
53
|
);
|
|
54
54
|
|
|
55
|
-
const flush = useCallback(() => aui.interactables
|
|
55
|
+
const flush = useCallback(() => aui.interactables.flush(), [aui]);
|
|
56
56
|
|
|
57
57
|
return [
|
|
58
58
|
state,
|
|
@@ -13,7 +13,7 @@ export const useAssistantContext = (config: AssistantContextConfig) => {
|
|
|
13
13
|
useEffect(() => {
|
|
14
14
|
if (disabled) return;
|
|
15
15
|
|
|
16
|
-
return aui.modelContext
|
|
16
|
+
return aui.modelContext.register({
|
|
17
17
|
getModelContext: () => ({
|
|
18
18
|
system: getContextRef.current(),
|
|
19
19
|
}),
|
|
@@ -20,6 +20,6 @@ export const useAssistantDataUI = (dataUI: AssistantDataUIProps | null) => {
|
|
|
20
20
|
const aui = useAui();
|
|
21
21
|
useEffect(() => {
|
|
22
22
|
if (!dataUI?.name || !dataUI?.render) return undefined;
|
|
23
|
-
return aui.dataRenderers
|
|
23
|
+
return aui.dataRenderers.setDataUI(dataUI.name, dataUI.render);
|
|
24
24
|
}, [aui, dataUI?.name, dataUI?.render]);
|
|
25
25
|
};
|
|
@@ -77,7 +77,7 @@ export const useAssistantTool = <
|
|
|
77
77
|
|
|
78
78
|
useEffect(() => {
|
|
79
79
|
if (!render) return undefined;
|
|
80
|
-
return aui.tools
|
|
80
|
+
return aui.tools.setToolUI(tool.toolName, render, { standalone });
|
|
81
81
|
}, [aui, tool.toolName, render, standalone]);
|
|
82
82
|
|
|
83
83
|
useEffect(() => {
|
|
@@ -89,7 +89,7 @@ export const useAssistantTool = <
|
|
|
89
89
|
[toolName]: rest,
|
|
90
90
|
},
|
|
91
91
|
};
|
|
92
|
-
return aui.modelContext
|
|
92
|
+
return aui.modelContext.register({
|
|
93
93
|
getModelContext: () => context,
|
|
94
94
|
});
|
|
95
95
|
}, [aui, tool]);
|
|
@@ -41,6 +41,6 @@ export const useAssistantToolUI = (
|
|
|
41
41
|
const standalone = tool?.display === "standalone";
|
|
42
42
|
useEffect(() => {
|
|
43
43
|
if (!tool?.toolName || !tool?.render) return undefined;
|
|
44
|
-
return aui.tools
|
|
44
|
+
return aui.tools.setToolUI(tool.toolName, tool.render, { standalone });
|
|
45
45
|
}, [aui, tool?.toolName, tool?.render, standalone]);
|
|
46
46
|
};
|
|
@@ -28,7 +28,7 @@ export function useAuiToolOverrides(overrides: AuiToolOverrides): void {
|
|
|
28
28
|
overridesRef.current = overrides;
|
|
29
29
|
|
|
30
30
|
useEffect(() => {
|
|
31
|
-
return aui.modelContext
|
|
31
|
+
return aui.modelContext.register({
|
|
32
32
|
getModelContext: () => ({
|
|
33
33
|
priority: 1000,
|
|
34
34
|
tools: overridesRef.current as Record<string, Tool<any, any>>,
|
|
@@ -123,7 +123,7 @@ const useInteractable = <TSchema extends Unstable_InteractableStateSchema>(
|
|
|
123
123
|
const initialStateRef = useRef(config.initialState);
|
|
124
124
|
initialStateRef.current = config.initialState;
|
|
125
125
|
|
|
126
|
-
const interactables = useAuiState(() => aui.unstable_interactables
|
|
126
|
+
const interactables = useAuiState(() => aui.unstable_interactables);
|
|
127
127
|
|
|
128
128
|
useEffect(() => {
|
|
129
129
|
return interactables.register({
|
|
@@ -28,7 +28,7 @@ const useInteractableState = <TState>(
|
|
|
28
28
|
|
|
29
29
|
const setState = useCallback(
|
|
30
30
|
(updater: StateUpdater<TState>) => {
|
|
31
|
-
aui.unstable_interactables
|
|
31
|
+
aui.unstable_interactables.setState(id, (prev) => {
|
|
32
32
|
if (typeof updater === "function") {
|
|
33
33
|
return (updater as (prev: TState) => TState)(prev as TState);
|
|
34
34
|
}
|
|
@@ -38,7 +38,7 @@ const useInteractableState = <TState>(
|
|
|
38
38
|
[aui, id],
|
|
39
39
|
);
|
|
40
40
|
|
|
41
|
-
const flush = useCallback(() => aui.unstable_interactables
|
|
41
|
+
const flush = useCallback(() => aui.unstable_interactables.flush(), [aui]);
|
|
42
42
|
|
|
43
43
|
return [
|
|
44
44
|
state,
|
|
@@ -25,15 +25,15 @@ export const useActionBarCopy = ({
|
|
|
25
25
|
const copy = useCallback(() => {
|
|
26
26
|
if (!copyToClipboard) return;
|
|
27
27
|
|
|
28
|
-
const valueToCopy = isEditing ? composerValue : aui.message
|
|
28
|
+
const valueToCopy = isEditing ? composerValue : aui.message.getCopyText();
|
|
29
29
|
if (!valueToCopy) return;
|
|
30
30
|
|
|
31
31
|
// The rejection handler swallows clipboard write failures (permission denied,
|
|
32
32
|
// API unavailable) so they don't surface as unhandled promise rejections.
|
|
33
33
|
Promise.resolve(copyToClipboard(valueToCopy)).then(
|
|
34
34
|
() => {
|
|
35
|
-
aui.message
|
|
36
|
-
setTimeout(() => aui.message
|
|
35
|
+
aui.message.setIsCopied(true);
|
|
36
|
+
setTimeout(() => aui.message.setIsCopied(false), copiedDuration);
|
|
37
37
|
},
|
|
38
38
|
() => {},
|
|
39
39
|
);
|
|
@@ -8,7 +8,7 @@ export const useActionBarFeedbackPositive = () => {
|
|
|
8
8
|
);
|
|
9
9
|
|
|
10
10
|
const submit = useCallback(() => {
|
|
11
|
-
aui.message
|
|
11
|
+
aui.message.submitFeedback({ type: "positive" });
|
|
12
12
|
}, [aui]);
|
|
13
13
|
|
|
14
14
|
return { submit, isSubmitted };
|
|
@@ -21,7 +21,7 @@ export const useActionBarFeedbackNegative = () => {
|
|
|
21
21
|
);
|
|
22
22
|
|
|
23
23
|
const submit = useCallback(() => {
|
|
24
|
-
aui.message
|
|
24
|
+
aui.message.submitFeedback({ type: "negative" });
|
|
25
25
|
}, [aui]);
|
|
26
26
|
|
|
27
27
|
return { submit, isSubmitted };
|
|
@@ -6,7 +6,7 @@ export const useActionBarStopSpeaking = () => {
|
|
|
6
6
|
const disabled = useAuiState((s) => s.message.speech == null);
|
|
7
7
|
|
|
8
8
|
const stopSpeaking = useCallback(() => {
|
|
9
|
-
aui.message
|
|
9
|
+
aui.message.stopSpeaking();
|
|
10
10
|
}, [aui]);
|
|
11
11
|
|
|
12
12
|
return { stopSpeaking, disabled };
|
|
@@ -12,7 +12,7 @@ export const useBranchPickerPrevious = () => {
|
|
|
12
12
|
});
|
|
13
13
|
|
|
14
14
|
const previous = useCallback(() => {
|
|
15
|
-
aui.message
|
|
15
|
+
aui.message.switchToBranch({ position: "previous" });
|
|
16
16
|
}, [aui]);
|
|
17
17
|
|
|
18
18
|
return { previous, disabled };
|
|
@@ -7,11 +7,11 @@ export const useMessageBranching = () => {
|
|
|
7
7
|
const branchCount = useAuiState((s) => s.message.branchCount);
|
|
8
8
|
|
|
9
9
|
const goToPrev = useCallback(() => {
|
|
10
|
-
aui.message
|
|
10
|
+
aui.message.switchToBranch({ position: "previous" });
|
|
11
11
|
}, [aui]);
|
|
12
12
|
|
|
13
13
|
const goToNext = useCallback(() => {
|
|
14
|
-
aui.message
|
|
14
|
+
aui.message.switchToBranch({ position: "next" });
|
|
15
15
|
}, [aui]);
|
|
16
16
|
|
|
17
17
|
return { branchNumber, branchCount, goToPrev, goToNext };
|
|
@@ -17,24 +17,24 @@ export const useSuggestionTrigger = ({
|
|
|
17
17
|
const resolvedSend = send ?? false;
|
|
18
18
|
|
|
19
19
|
const trigger = useCallback(() => {
|
|
20
|
-
const isRunning = aui.thread
|
|
20
|
+
const isRunning = aui.thread.getState().isRunning;
|
|
21
21
|
|
|
22
22
|
if (resolvedSend && !isRunning) {
|
|
23
|
-
aui.thread
|
|
23
|
+
aui.thread.append({
|
|
24
24
|
content: [{ type: "text", text: prompt }],
|
|
25
|
-
runConfig: aui.composer
|
|
25
|
+
runConfig: aui.composer.getState().runConfig,
|
|
26
26
|
});
|
|
27
27
|
if (clearComposer) {
|
|
28
|
-
aui.composer
|
|
28
|
+
aui.composer.setText("");
|
|
29
29
|
}
|
|
30
30
|
} else {
|
|
31
31
|
if (clearComposer) {
|
|
32
|
-
aui.composer
|
|
32
|
+
aui.composer.setText(prompt);
|
|
33
33
|
} else {
|
|
34
|
-
const currentText = aui.composer
|
|
35
|
-
aui
|
|
36
|
-
.
|
|
37
|
-
|
|
34
|
+
const currentText = aui.composer.getState().text;
|
|
35
|
+
aui.composer.setText(
|
|
36
|
+
currentText.trim() ? `${currentText} ${prompt}` : prompt,
|
|
37
|
+
);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
}, [aui, resolvedSend, clearComposer, prompt]);
|
|
@@ -10,7 +10,7 @@ const getServerVolume = () => 0;
|
|
|
10
10
|
|
|
11
11
|
export const useVoiceVolume = (): number => {
|
|
12
12
|
const aui = useAui();
|
|
13
|
-
const thread = aui.thread
|
|
13
|
+
const thread = aui.thread;
|
|
14
14
|
return useSyncExternalStore(
|
|
15
15
|
thread.subscribeVoiceVolume,
|
|
16
16
|
thread.getVoiceVolume,
|
|
@@ -22,19 +22,19 @@ export const useVoiceControls = () => {
|
|
|
22
22
|
const aui = useAui();
|
|
23
23
|
|
|
24
24
|
const connect = useCallback(() => {
|
|
25
|
-
aui.thread
|
|
25
|
+
aui.thread.connectVoice();
|
|
26
26
|
}, [aui]);
|
|
27
27
|
|
|
28
28
|
const disconnect = useCallback(() => {
|
|
29
|
-
aui.thread
|
|
29
|
+
aui.thread.disconnectVoice();
|
|
30
30
|
}, [aui]);
|
|
31
31
|
|
|
32
32
|
const mute = useCallback(() => {
|
|
33
|
-
aui.thread
|
|
33
|
+
aui.thread.muteVoice();
|
|
34
34
|
}, [aui]);
|
|
35
35
|
|
|
36
36
|
const unmute = useCallback(() => {
|
|
37
|
-
aui.thread
|
|
37
|
+
aui.thread.unmuteVoice();
|
|
38
38
|
}, [aui]);
|
|
39
39
|
|
|
40
40
|
return { connect, disconnect, mute, unmute };
|
|
@@ -51,7 +51,7 @@ const ChainOfThoughtPrimitivePartsInner: FC<{
|
|
|
51
51
|
Array.from({ length: partsLength }, (_, index) => (
|
|
52
52
|
<ChainOfThoughtPartByIndexProvider key={index} index={index}>
|
|
53
53
|
<RenderChildrenWithAccessor
|
|
54
|
-
getItemState={(aui) => aui.part
|
|
54
|
+
getItemState={(aui) => aui.part.getState()}
|
|
55
55
|
>
|
|
56
56
|
{(getItem) =>
|
|
57
57
|
children({
|
|
@@ -99,7 +99,7 @@ const ComposerPrimitiveAttachmentsInner: FC<{
|
|
|
99
99
|
<ComposerAttachmentByIndexProvider key={index} index={index}>
|
|
100
100
|
<RenderChildrenWithAccessor
|
|
101
101
|
getItemState={(aui) =>
|
|
102
|
-
aui.composer
|
|
102
|
+
aui.composer.attachment({ index }).getState()
|
|
103
103
|
}
|
|
104
104
|
>
|
|
105
105
|
{(getItem) =>
|
|
@@ -20,9 +20,7 @@ const ComposerPrimitiveQueueInner: FC<{
|
|
|
20
20
|
Array.from({ length: queue }, (_, index) => (
|
|
21
21
|
<QueueItemByIndexProvider key={index} index={index}>
|
|
22
22
|
<RenderChildrenWithAccessor
|
|
23
|
-
getItemState={(aui) =>
|
|
24
|
-
aui.composer().queueItem({ index }).getState()
|
|
25
|
-
}
|
|
23
|
+
getItemState={(aui) => aui.composer.queueItem({ index }).getState()}
|
|
26
24
|
>
|
|
27
25
|
{(getItem) =>
|
|
28
26
|
children({
|
|
@@ -101,9 +101,7 @@ const MessagePrimitiveAttachmentsInner: FC<{
|
|
|
101
101
|
Array.from({ length: attachmentsCount }, (_, index) => (
|
|
102
102
|
<MessageAttachmentByIndexProvider key={index} index={index}>
|
|
103
103
|
<RenderChildrenWithAccessor
|
|
104
|
-
getItemState={(aui) =>
|
|
105
|
-
aui.message().attachment({ index }).getState()
|
|
106
|
-
}
|
|
104
|
+
getItemState={(aui) => aui.message.attachment({ index }).getState()}
|
|
107
105
|
>
|
|
108
106
|
{(getItem) =>
|
|
109
107
|
children({
|
|
@@ -415,9 +415,9 @@ export const MessagePartComponent: FC<MessagePartComponentProps> = ({
|
|
|
415
415
|
|
|
416
416
|
const type = part.type;
|
|
417
417
|
if (type === "tool-call") {
|
|
418
|
-
const addResult = aui.part
|
|
419
|
-
const resume = aui.part
|
|
420
|
-
const respondToApproval = aui.part
|
|
418
|
+
const addResult = aui.part.addToolResult;
|
|
419
|
+
const resume = aui.part.resumeToolCall;
|
|
420
|
+
const respondToApproval = aui.part.respondToToolApproval;
|
|
421
421
|
if ("Override" in tools)
|
|
422
422
|
return (
|
|
423
423
|
<tools.Override
|
|
@@ -636,9 +636,9 @@ const RegisteredToolUI: FC = () => {
|
|
|
636
636
|
return (
|
|
637
637
|
<Render
|
|
638
638
|
{...part}
|
|
639
|
-
addResult={aui.part
|
|
640
|
-
resume={aui.part
|
|
641
|
-
respondToApproval={aui.part
|
|
639
|
+
addResult={aui.part.addToolResult}
|
|
640
|
+
resume={aui.part.resumeToolCall}
|
|
641
|
+
respondToApproval={aui.part.respondToToolApproval}
|
|
642
642
|
/>
|
|
643
643
|
);
|
|
644
644
|
};
|
|
@@ -743,16 +743,16 @@ const MessagePartChildrenInner: FC<
|
|
|
743
743
|
|
|
744
744
|
return (
|
|
745
745
|
<RenderChildrenWithAccessor
|
|
746
|
-
getItemState={(client) => client.part
|
|
746
|
+
getItemState={(client) => client.part.getState()}
|
|
747
747
|
>
|
|
748
748
|
{(getItem) =>
|
|
749
749
|
children({
|
|
750
750
|
get part() {
|
|
751
751
|
const state = getItem();
|
|
752
752
|
if (state.type === "tool-call") {
|
|
753
|
-
const toolsState = aui.tools
|
|
753
|
+
const toolsState = aui.tools.getState();
|
|
754
754
|
const hasUI = resolveToolRender(toolsState, state) !== null;
|
|
755
|
-
const partMethods = aui.part
|
|
755
|
+
const partMethods = aui.part;
|
|
756
756
|
return {
|
|
757
757
|
...state,
|
|
758
758
|
toolUI: hasUI ? <RegisteredToolUI /> : null,
|
|
@@ -247,7 +247,7 @@ const ThreadPrimitiveMessagesInner: FC<{
|
|
|
247
247
|
return Array.from({ length: messagesLength }, (_, index) => (
|
|
248
248
|
<MessageByIndexProvider key={index} index={index}>
|
|
249
249
|
<RenderChildrenWithAccessor
|
|
250
|
-
getItemState={(aui) => aui.thread
|
|
250
|
+
getItemState={(aui) => aui.thread.message({ index }).getState()}
|
|
251
251
|
>
|
|
252
252
|
{(getItem) =>
|
|
253
253
|
children({
|
|
@@ -77,7 +77,7 @@ const ThreadPrimitiveSuggestionsInner: FC<{
|
|
|
77
77
|
<SuggestionByIndexProvider key={index} index={index}>
|
|
78
78
|
<RenderChildrenWithAccessor
|
|
79
79
|
getItemState={(aui) =>
|
|
80
|
-
aui.suggestions
|
|
80
|
+
aui.suggestions.suggestion({ index }).getState()
|
|
81
81
|
}
|
|
82
82
|
>
|
|
83
83
|
{(getItem) =>
|