@assistant-ui/core 0.2.18 → 0.2.19
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/index.d.ts +4 -2
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +2 -1
- package/dist/internal.js +2 -1
- package/dist/model-context/interactable-composer-metadata.d.ts +105 -0
- package/dist/model-context/interactable-composer-metadata.d.ts.map +1 -0
- package/dist/model-context/interactable-composer-metadata.js +259 -0
- package/dist/model-context/interactable-composer-metadata.js.map +1 -0
- package/dist/model-context/registry.d.ts.map +1 -1
- package/dist/model-context/registry.js +1 -0
- package/dist/model-context/registry.js.map +1 -1
- package/dist/model-context/types.d.ts +6 -0
- package/dist/model-context/types.d.ts.map +1 -1
- package/dist/model-context/types.js +4 -0
- package/dist/model-context/types.js.map +1 -1
- package/dist/react/AssistantProvider.d.ts +1 -1
- package/dist/react/AssistantProvider.js +1 -1
- package/dist/react/AssistantRuntimeProvider.d.ts +1 -1
- package/dist/react/RuntimeAdapter.js +1 -1
- package/dist/react/client/Interactables.d.ts +8 -2
- package/dist/react/client/Interactables.d.ts.map +1 -1
- package/dist/react/client/Interactables.js +190 -94
- package/dist/react/client/Interactables.js.map +1 -1
- package/dist/react/client/Tools.js +1 -1
- package/dist/react/client/interactable-model-context.d.ts +9 -6
- package/dist/react/client/interactable-model-context.d.ts.map +1 -1
- package/dist/react/client/interactable-model-context.js +154 -32
- package/dist/react/client/interactable-model-context.js.map +1 -1
- package/dist/react/index.d.ts +15 -6
- package/dist/react/index.js +12 -5
- package/dist/react/interactables-legacy/Interactables.d.ts +12 -0
- package/dist/react/interactables-legacy/Interactables.d.ts.map +1 -0
- package/dist/react/interactables-legacy/Interactables.js +264 -0
- package/dist/react/interactables-legacy/Interactables.js.map +1 -0
- package/dist/react/interactables-legacy/interactable-model-context.d.ts +12 -0
- package/dist/react/interactables-legacy/interactable-model-context.d.ts.map +1 -0
- package/dist/react/interactables-legacy/interactable-model-context.js +54 -0
- package/dist/react/interactables-legacy/interactable-model-context.js.map +1 -0
- package/dist/react/interactables-legacy/scopes.d.ts +58 -0
- package/dist/react/interactables-legacy/scopes.d.ts.map +1 -0
- package/dist/react/interactables-legacy/scopes.js +0 -0
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts +31 -0
- package/dist/react/interactables-legacy/useAssistantInteractable.d.ts.map +1 -0
- package/dist/react/{model-context → interactables-legacy}/useAssistantInteractable.js +6 -2
- package/dist/react/interactables-legacy/useAssistantInteractable.js.map +1 -0
- package/dist/react/interactables-legacy/useInteractableState.d.ts +21 -0
- package/dist/react/interactables-legacy/useInteractableState.d.ts.map +1 -0
- package/dist/react/interactables-legacy/useInteractableState.js +84 -0
- package/dist/react/interactables-legacy/useInteractableState.js.map +1 -0
- package/dist/react/model-context/interactableTool.d.ts +53 -0
- package/dist/react/model-context/interactableTool.d.ts.map +1 -0
- package/dist/react/model-context/interactableTool.js +188 -0
- package/dist/react/model-context/interactableTool.js.map +1 -0
- package/dist/react/model-context/useAssistantContext.js +1 -1
- package/dist/react/model-context/useAssistantDataUI.js +1 -1
- package/dist/react/model-context/useAssistantInstructions.js +1 -1
- package/dist/react/model-context/useAssistantTool.js +1 -1
- package/dist/react/model-context/useAssistantToolUI.js +1 -1
- package/dist/react/model-context/useAuiToolOverrides.js +1 -1
- package/dist/react/model-context/useInteractable.d.ts +73 -0
- package/dist/react/model-context/useInteractable.d.ts.map +1 -0
- package/dist/react/model-context/useInteractable.js +100 -0
- package/dist/react/model-context/useInteractable.js.map +1 -0
- package/dist/react/model-context/useInteractableState.d.ts +8 -5
- package/dist/react/model-context/useInteractableState.d.ts.map +1 -1
- package/dist/react/model-context/useInteractableState.js +48 -48
- package/dist/react/model-context/useInteractableState.js.map +1 -1
- package/dist/react/model-context/useInteractableVersions.d.ts +19 -0
- package/dist/react/model-context/useInteractableVersions.d.ts.map +1 -0
- package/dist/react/model-context/useInteractableVersions.js +51 -0
- package/dist/react/model-context/useInteractableVersions.js.map +1 -0
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts +15 -0
- package/dist/react/primitive-hooks/useThreadMessageIds.d.ts.map +1 -0
- package/dist/react/primitive-hooks/useThreadMessageIds.js +26 -0
- package/dist/react/primitive-hooks/useThreadMessageIds.js.map +1 -0
- package/dist/react/primitive-hooks/useVoice.js +1 -1
- package/dist/react/primitives/chainOfThought/ChainOfThoughtParts.js +1 -1
- package/dist/react/primitives/composer/ComposerAttachments.js +1 -1
- package/dist/react/primitives/composer/ComposerQueue.js +1 -1
- package/dist/react/primitives/generativeUI/GenerativeUI.js +1 -1
- package/dist/react/primitives/message/MessageAttachments.js +1 -1
- package/dist/react/primitives/message/MessageGroupedParts.js +1 -1
- package/dist/react/primitives/message/MessageParts.js +1 -1
- package/dist/react/primitives/message/MessageQuote.js +1 -1
- package/dist/react/primitives/part/PartMessages.d.ts +5 -2
- package/dist/react/primitives/part/PartMessages.d.ts.map +1 -1
- package/dist/react/primitives/part/PartMessages.js +8 -8
- package/dist/react/primitives/part/PartMessages.js.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts +31 -1
- package/dist/react/primitives/thread/ThreadMessages.d.ts.map +1 -1
- package/dist/react/primitives/thread/ThreadMessages.js +64 -2
- package/dist/react/primitives/thread/ThreadMessages.js.map +1 -1
- package/dist/react/primitives/thread/ThreadSuggestions.js +1 -1
- package/dist/react/primitives/threadList/ThreadListItems.js +1 -1
- package/dist/react/providers/MessageByIdProvider.d.ts +9 -0
- package/dist/react/providers/MessageByIdProvider.d.ts.map +1 -0
- package/dist/react/providers/MessageByIdProvider.js +57 -0
- package/dist/react/providers/MessageByIdProvider.js.map +1 -0
- package/dist/react/providers/ReadonlyThreadProvider.js +1 -1
- package/dist/react/runtimes/RemoteThreadListHookInstanceManager.js +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts +3 -0
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js +16 -1
- package/dist/react/runtimes/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/react/runtimes/cloud/AssistantCloudThreadHistoryAdapter.js +1 -1
- package/dist/react/runtimes/cloud/auiV0.js +1 -1
- package/dist/react/runtimes/cloud/useCloudThreadListAdapter.js +1 -1
- package/dist/react/runtimes/createRuntimeExtras.d.ts +20 -0
- package/dist/react/runtimes/createRuntimeExtras.d.ts.map +1 -0
- package/dist/react/runtimes/createRuntimeExtras.js +43 -0
- package/dist/react/runtimes/createRuntimeExtras.js.map +1 -0
- package/dist/react/runtimes/useLocalRuntime.js +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/react/runtimes/useRemoteThreadListRuntime.js +6 -2
- package/dist/react/runtimes/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/react/runtimes/useStreamingTiming.d.ts +26 -0
- package/dist/react/runtimes/useStreamingTiming.d.ts.map +1 -0
- package/dist/react/runtimes/useStreamingTiming.js +43 -0
- package/dist/react/runtimes/useStreamingTiming.js.map +1 -0
- package/dist/react/types/scopes/interactables.d.ts +40 -24
- package/dist/react/types/scopes/interactables.d.ts.map +1 -1
- package/dist/react/types/store-augmentation.d.ts +3 -1
- package/dist/react/types/store-augmentation.d.ts.map +1 -1
- package/dist/react/utils/useJSONEqual.d.ts +11 -0
- package/dist/react/utils/useJSONEqual.d.ts.map +1 -0
- package/dist/react/utils/useJSONEqual.js +30 -0
- package/dist/react/utils/useJSONEqual.js.map +1 -0
- package/dist/runtime/base/base-composer-runtime-core.d.ts +5 -0
- package/dist/runtime/base/base-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/base-composer-runtime-core.js +13 -0
- package/dist/runtime/base/base-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js +6 -1
- package/dist/runtime/base/default-edit-composer-runtime-core.js.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.d.ts.map +1 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js +4 -1
- package/dist/runtime/base/default-thread-composer-runtime-core.js.map +1 -1
- package/dist/runtime/utils/message-repository.d.ts +1 -0
- package/dist/runtime/utils/message-repository.d.ts.map +1 -1
- package/dist/runtime/utils/message-repository.js +6 -3
- package/dist/runtime/utils/message-repository.js.map +1 -1
- package/dist/runtime/utils/streaming-timing.d.ts +59 -0
- package/dist/runtime/utils/streaming-timing.d.ts.map +1 -0
- package/dist/runtime/utils/streaming-timing.js +76 -0
- package/dist/runtime/utils/streaming-timing.js.map +1 -0
- package/dist/runtime/utils/thread-message-like.js +2 -1
- package/dist/runtime/utils/thread-message-like.js.map +1 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts +26 -1
- package/dist/runtimes/external-store/external-store-adapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts +9 -0
- package/dist/runtimes/external-store/external-store-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js +19 -0
- package/dist/runtimes/external-store/external-store-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.d.ts.map +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js +1 -1
- package/dist/runtimes/local/local-thread-runtime-core.js.map +1 -1
- package/dist/runtimes/remote-thread-list/types.d.ts +12 -0
- package/dist/runtimes/remote-thread-list/types.d.ts.map +1 -1
- package/dist/store/clients/suggestions.js +1 -1
- package/dist/store/clients/thread-message-client.js +1 -1
- package/dist/store/runtime-clients/composer-runtime-client.js +1 -1
- package/dist/store/runtime-clients/message-runtime-client.js +1 -1
- package/dist/store/runtime-clients/thread-list-item-runtime-client.js +1 -1
- package/dist/store/runtime-clients/thread-runtime-client.js +1 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts +1 -1
- package/dist/tests/remote-thread-list-test-helpers.d.ts.map +1 -1
- package/dist/tests/remote-thread-list-test-helpers.js +3 -2
- package/dist/tests/remote-thread-list-test-helpers.js.map +1 -1
- package/package.json +9 -9
- package/src/index.ts +17 -0
- package/src/internal.ts +7 -0
- package/src/model-context/interactable-composer-metadata.test.ts +550 -0
- package/src/model-context/interactable-composer-metadata.ts +395 -0
- package/src/model-context/registry.ts +5 -0
- package/src/model-context/types.ts +12 -0
- package/src/react/client/Interactables.test.ts +358 -0
- package/src/react/client/Interactables.ts +339 -86
- package/src/react/client/interactable-model-context.test.ts +418 -0
- package/src/react/client/interactable-model-context.ts +252 -58
- package/src/react/index.ts +72 -3
- package/src/react/interactables-legacy/Interactables.ts +332 -0
- package/src/react/interactables-legacy/interactable-model-context.test.ts +54 -0
- package/src/react/interactables-legacy/interactable-model-context.ts +80 -0
- package/src/react/interactables-legacy/scopes.ts +66 -0
- package/src/react/{model-context → interactables-legacy}/useAssistantInteractable.ts +10 -1
- package/src/react/interactables-legacy/useInteractableState.ts +67 -0
- package/src/react/model-context/interactableTool.tsx +175 -0
- package/src/react/model-context/useInteractable.ts +233 -0
- package/src/react/model-context/useInteractableState.ts +31 -23
- package/src/react/model-context/useInteractableVersions.ts +48 -0
- package/src/react/primitive-hooks/useThreadMessageIds.ts +27 -0
- package/src/react/primitives/part/PartMessages.test.tsx +17 -0
- package/src/react/primitives/part/PartMessages.tsx +13 -8
- package/src/react/primitives/thread/ThreadMessages.tsx +67 -0
- package/src/react/providers/MessageByIdProvider.tsx +23 -0
- package/src/react/runtimes/RemoteThreadListThreadListRuntimeCore.tsx +21 -1
- package/src/react/runtimes/createRuntimeExtras.test.ts +58 -0
- package/src/react/runtimes/createRuntimeExtras.ts +68 -0
- package/src/react/runtimes/createRuntimeExtras.use.test.ts +50 -0
- package/src/react/runtimes/useRemoteThreadListRuntime.ts +13 -1
- package/src/react/runtimes/useStreamingTiming.ts +68 -0
- package/src/react/types/scopes/interactables.ts +45 -23
- package/src/react/types/store-augmentation.ts +4 -2
- package/src/react/utils/useJSONEqual.ts +20 -0
- package/src/runtime/base/base-composer-runtime-core.ts +13 -0
- package/src/runtime/base/default-edit-composer-runtime-core.ts +18 -1
- package/src/runtime/base/default-thread-composer-runtime-core.ts +11 -1
- package/src/runtime/utils/message-repository.ts +11 -7
- package/src/runtime/utils/streaming-timing.test.ts +301 -0
- package/src/runtime/utils/streaming-timing.ts +161 -0
- package/src/runtime/utils/thread-message-like.ts +2 -1
- package/src/runtimes/external-store/external-store-adapter.ts +28 -0
- package/src/runtimes/external-store/external-store-thread-runtime-core.ts +33 -1
- package/src/runtimes/local/local-thread-runtime-core.ts +4 -1
- package/src/runtimes/remote-thread-list/types.ts +13 -0
- package/src/tests/MessageRepository.test.ts +2 -0
- package/src/tests/composer-can-send.test.ts +1 -0
- package/src/tests/default-edit-composer-runtime-core.test.ts +78 -1
- package/src/tests/default-thread-composer-runtime-core.test.ts +82 -0
- package/src/tests/external-store-thread-runtime-core.test.ts +337 -0
- package/src/tests/groupParts.test.ts +32 -0
- package/src/tests/remote-thread-list-reactive-threadId.test.ts +90 -0
- package/src/tests/remote-thread-list-test-helpers.ts +2 -1
- package/src/tests/thread-message-like.test.ts +50 -0
- package/dist/react/model-context/useAssistantInteractable.d.ts +0 -22
- package/dist/react/model-context/useAssistantInteractable.d.ts.map +0 -1
- package/dist/react/model-context/useAssistantInteractable.js.map +0 -1
|
@@ -1,80 +1,80 @@
|
|
|
1
|
+
"use client";
|
|
1
2
|
import { useAui, useAuiState } from "@assistant-ui/store";
|
|
2
3
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
3
4
|
//#region src/react/model-context/useInteractableState.ts
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
*
|
|
7
|
-
* Pair with {@link useAssistantInteractable} which handles registration.
|
|
8
|
-
*/
|
|
9
|
-
const useInteractableState = (id, fallback) => {
|
|
10
|
-
const $ = c(19);
|
|
5
|
+
const useInteractableState = (id) => {
|
|
6
|
+
const $ = c(17);
|
|
11
7
|
const aui = useAui();
|
|
12
|
-
const state = useAuiState((s) => s.interactables.definitions[id]?.state) ?? fallback;
|
|
13
8
|
let t0;
|
|
14
9
|
if ($[0] !== id) {
|
|
15
|
-
t0 = (
|
|
10
|
+
t0 = (s) => s.unstable_interactables.definitions[id]?.state;
|
|
16
11
|
$[0] = id;
|
|
17
12
|
$[1] = t0;
|
|
18
13
|
} else t0 = $[1];
|
|
19
|
-
const
|
|
14
|
+
const state = useAuiState(t0);
|
|
20
15
|
let t1;
|
|
21
|
-
if ($[2] !==
|
|
22
|
-
t1 = (
|
|
23
|
-
|
|
16
|
+
if ($[2] !== id) {
|
|
17
|
+
t1 = (s_0) => s_0.unstable_interactables.persistence[id];
|
|
18
|
+
$[2] = id;
|
|
19
|
+
$[3] = t1;
|
|
20
|
+
} else t1 = $[3];
|
|
21
|
+
const persistenceStatus = useAuiState(t1);
|
|
22
|
+
let t2;
|
|
23
|
+
if ($[4] !== aui || $[5] !== id) {
|
|
24
|
+
t2 = (updater) => {
|
|
25
|
+
aui.unstable_interactables().setState(id, (prev) => {
|
|
24
26
|
if (typeof updater === "function") return updater(prev);
|
|
25
27
|
return updater;
|
|
26
28
|
});
|
|
27
29
|
};
|
|
28
|
-
$[
|
|
29
|
-
$[
|
|
30
|
-
$[
|
|
31
|
-
} else
|
|
32
|
-
const setState =
|
|
33
|
-
let t2;
|
|
34
|
-
if ($[5] !== aui || $[6] !== id) {
|
|
35
|
-
t2 = (selected) => {
|
|
36
|
-
aui.interactables().setSelected(id, selected);
|
|
37
|
-
};
|
|
38
|
-
$[5] = aui;
|
|
39
|
-
$[6] = id;
|
|
40
|
-
$[7] = t2;
|
|
41
|
-
} else t2 = $[7];
|
|
42
|
-
const setSelected = t2;
|
|
30
|
+
$[4] = aui;
|
|
31
|
+
$[5] = id;
|
|
32
|
+
$[6] = t2;
|
|
33
|
+
} else t2 = $[6];
|
|
34
|
+
const setState = t2;
|
|
43
35
|
let t3;
|
|
44
|
-
if ($[
|
|
45
|
-
t3 = () => aui.
|
|
46
|
-
$[
|
|
47
|
-
$[
|
|
48
|
-
} else t3 = $[
|
|
36
|
+
if ($[7] !== aui) {
|
|
37
|
+
t3 = () => aui.unstable_interactables().flush();
|
|
38
|
+
$[7] = aui;
|
|
39
|
+
$[8] = t3;
|
|
40
|
+
} else t3 = $[8];
|
|
49
41
|
const flush = t3;
|
|
50
42
|
const t4 = persistenceStatus?.isPending ?? false;
|
|
51
43
|
const t5 = persistenceStatus?.error;
|
|
52
44
|
let t6;
|
|
53
|
-
if ($[
|
|
45
|
+
if ($[9] !== flush || $[10] !== setState || $[11] !== t4 || $[12] !== t5) {
|
|
54
46
|
t6 = {
|
|
55
47
|
setState,
|
|
56
|
-
setSelected,
|
|
57
48
|
isPending: t4,
|
|
58
49
|
error: t5,
|
|
59
50
|
flush
|
|
60
51
|
};
|
|
61
|
-
$[
|
|
62
|
-
$[
|
|
63
|
-
$[
|
|
64
|
-
$[
|
|
65
|
-
$[
|
|
66
|
-
|
|
67
|
-
} else t6 = $[15];
|
|
52
|
+
$[9] = flush;
|
|
53
|
+
$[10] = setState;
|
|
54
|
+
$[11] = t4;
|
|
55
|
+
$[12] = t5;
|
|
56
|
+
$[13] = t6;
|
|
57
|
+
} else t6 = $[13];
|
|
68
58
|
let t7;
|
|
69
|
-
if ($[
|
|
59
|
+
if ($[14] !== state || $[15] !== t6) {
|
|
70
60
|
t7 = [state, t6];
|
|
71
|
-
$[
|
|
72
|
-
$[
|
|
73
|
-
$[
|
|
74
|
-
} else t7 = $[
|
|
61
|
+
$[14] = state;
|
|
62
|
+
$[15] = t6;
|
|
63
|
+
$[16] = t7;
|
|
64
|
+
} else t7 = $[16];
|
|
75
65
|
return t7;
|
|
76
66
|
};
|
|
67
|
+
/**
|
|
68
|
+
* Reads and writes the state of an interactable registered elsewhere, by id.
|
|
69
|
+
*
|
|
70
|
+
* Use this from secondary readers (children, siblings); the owning component
|
|
71
|
+
* registers with `unstable_useInteractable`, which returns state directly. Returns
|
|
72
|
+
* `undefined` until the owning interactable is registered.
|
|
73
|
+
*
|
|
74
|
+
* @deprecated Unstable / Experimental (not actually removed).
|
|
75
|
+
*/
|
|
76
|
+
const unstable_useInteractableState = useInteractableState;
|
|
77
77
|
//#endregion
|
|
78
|
-
export {
|
|
78
|
+
export { unstable_useInteractableState };
|
|
79
79
|
|
|
80
80
|
//# sourceMappingURL=useInteractableState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useInteractableState.js","names":["useCallback","useAui","useAuiState","StateUpdater","TState","prev","useInteractableState","id","
|
|
1
|
+
{"version":3,"file":"useInteractableState.js","names":["c","_c","useCallback","useAui","useAuiState","StateUpdater","TState","prev","useInteractableState","id","$","aui","t0","s","unstable_interactables","definitions","state","t1","s_0","persistence","persistenceStatus","t2","updater","setState","t3","flush","t4","isPending","t5","error","t6","t7","unstable_useInteractableState","Promise"],"sources":["../../../src/react/model-context/useInteractableState.ts"],"sourcesContent":["\"use client\";\n\nimport { useCallback } from \"react\";\nimport { useAui, useAuiState } from \"@assistant-ui/store\";\n\ntype StateUpdater<TState> = TState | ((prev: TState) => TState);\n\nconst useInteractableState = <TState>(\n id: string,\n): [\n TState | undefined,\n {\n setState: (updater: StateUpdater<TState>) => void;\n isPending: boolean;\n error: unknown;\n flush: () => Promise<void>;\n },\n] => {\n const aui = useAui();\n\n const state = useAuiState(\n (s) => s.unstable_interactables.definitions[id]?.state,\n ) as TState | undefined;\n\n const persistenceStatus = useAuiState(\n (s) => s.unstable_interactables.persistence[id],\n );\n\n const setState = useCallback(\n (updater: StateUpdater<TState>) => {\n aui.unstable_interactables().setState(id, (prev) => {\n if (typeof updater === \"function\") {\n return (updater as (prev: TState) => TState)(prev as TState);\n }\n return updater;\n });\n },\n [aui, id],\n );\n\n const flush = useCallback(() => aui.unstable_interactables().flush(), [aui]);\n\n return [\n state,\n {\n setState,\n isPending: persistenceStatus?.isPending ?? false,\n error: persistenceStatus?.error,\n flush,\n },\n ];\n};\n\n/**\n * Reads and writes the state of an interactable registered elsewhere, by id.\n *\n * Use this from secondary readers (children, siblings); the owning component\n * registers with `unstable_useInteractable`, which returns state directly. Returns\n * `undefined` until the owning interactable is registered.\n *\n * @deprecated Unstable / Experimental (not actually removed).\n */\nexport const unstable_useInteractableState: <TState>(id: string) => [\n TState | undefined,\n {\n setState: (updater: StateUpdater<TState>) => void;\n isPending: boolean;\n error: unknown;\n flush: () => Promise<void>;\n },\n] = useInteractableState;\n"],"mappings":";;;;AAOA,MAAMQ,wBAAuBC,OAAA;CAAA,MAAAC,IAAAT,EAAA,EAAA;CAW3B,MAAAU,MAAYR,OAAO;CAAE,IAAAS;CAAA,IAAAF,EAAA,OAAAD,IAAA;EAGnBG,MAAAC,MAAOA,EAACC,uBAAuBC,YAAaN,GAAU,EAAAO;EAAAN,EAAA,KAAAD;EAAAC,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CADxD,MAAAM,QAAcZ,YACZQ,EACF;CAAwB,IAAAK;CAAA,IAAAP,EAAA,OAAAD,IAAA;EAGtBQ,MAAAC,QAAOL,IAACC,uBAAuBK,YAAaV;EAAGC,EAAA,KAAAD;EAAAC,EAAA,KAAAO;CAAA,OAAAA,KAAAP,EAAA;CADjD,MAAAU,oBAA0BhB,YACxBa,EACF;CAAE,IAAAI;CAAA,IAAAX,EAAA,OAAAC,OAAAD,EAAA,OAAAD,IAAA;EAGAY,MAAAC,YAAA;GACEX,IAAGG,uBAAwB,CAAC,CAAAS,SAAUd,KAAIF,SAAA;IACxC,IAAI,OAAOe,YAAY,YAAU,OACvBA,QAAqCf,IAAc;IAC5D,OACMe;GAAO,CACf;EAAC;EACHZ,EAAA,KAAAC;EAAAD,EAAA,KAAAD;EAAAC,EAAA,KAAAW;CAAA,OAAAA,KAAAX,EAAA;CARH,MAAAa,WAAiBF;CAUf,IAAAG;CAAA,IAAAd,EAAA,OAAAC,KAAA;EAEwBa,WAAMb,IAAGG,uBAAwB,CAAC,CAAAW,MAAO;EAACf,EAAA,KAAAC;EAAAD,EAAA,KAAAc;CAAA,OAAAA,KAAAd,EAAA;CAApE,MAAAe,QAAcD;CAMC,MAAAE,KAAAN,mBAAiBO,aAAjB;CACJ,MAAAC,KAAAR,mBAAiBS;CAAO,IAAAC;CAAA,IAAApB,EAAA,OAAAe,SAAAf,EAAA,QAAAa,YAAAb,EAAA,QAAAgB,MAAAhB,EAAA,QAAAkB,IAAA;EAHjCE,KAAA;GAAAP;GAAAI,WAEaD;GAAqCG,OACzCD;GAAwBH;EAEjC;EAACf,EAAA,KAAAe;EAAAf,EAAA,MAAAa;EAAAb,EAAA,MAAAgB;EAAAhB,EAAA,MAAAkB;EAAAlB,EAAA,MAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAAA,IAAAqB;CAAA,IAAArB,EAAA,QAAAM,SAAAN,EAAA,QAAAoB,IAAA;EAPIC,KAAA,CACLf,OACAc,EAKC;EACFpB,EAAA,MAAAM;EAAAN,EAAA,MAAAoB;EAAApB,EAAA,MAAAqB;CAAA,OAAAA,KAAArB,EAAA;CAAA,OARMqB;AAQN;;;;;;;;;;AAYH,MAAaC,gCAQTxB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Unstable_InteractableVersion } from "../../model-context/interactable-composer-metadata.js";
|
|
2
|
+
|
|
3
|
+
//#region src/react/model-context/useInteractableVersions.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Every version of a tool-created interactable recorded in the current
|
|
6
|
+
* thread, oldest first: the creating tool call, each user edit, and each
|
|
7
|
+
* `update_*` call. Each entry carries the full state as of that version and a
|
|
8
|
+
* `restore()` that sets the live instance back to it — enough for a version
|
|
9
|
+
* picker like an artifact's history dropdown.
|
|
10
|
+
*
|
|
11
|
+
* @deprecated Unstable / Experimental (not actually removed).
|
|
12
|
+
*/
|
|
13
|
+
declare const unstable_useInteractableVersions: <TState = unknown>(id: string, name: string) => (Omit<Unstable_InteractableVersion, "state"> & {
|
|
14
|
+
state: TState;
|
|
15
|
+
restore: () => void;
|
|
16
|
+
})[];
|
|
17
|
+
//#endregion
|
|
18
|
+
export { unstable_useInteractableVersions };
|
|
19
|
+
//# sourceMappingURL=useInteractableVersions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInteractableVersions.d.ts","names":[],"sources":["../../../src/react/model-context/useInteractableVersions.ts"],"mappings":";;;;;AAyCA;;;;;;;cAAa,gCAAA,qBACX,EAAA,UACA,IAAA,cACI,IAAA,CAAK,4BAAA;EACT,KAAA,EAAO,MAAA;EACP,OAAA;AAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { unstable_getInteractableVersions } from "../../model-context/interactable-composer-metadata.js";
|
|
2
|
+
import { unstable_useInteractableState } from "./useInteractableState.js";
|
|
3
|
+
import { useJSONEqual } from "../utils/useJSONEqual.js";
|
|
4
|
+
import { useAuiState } from "@assistant-ui/store";
|
|
5
|
+
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
6
|
+
//#region src/react/model-context/useInteractableVersions.ts
|
|
7
|
+
const useInteractableVersions = (id, name) => {
|
|
8
|
+
const $ = c(8);
|
|
9
|
+
let t0;
|
|
10
|
+
if ($[0] !== id || $[1] !== name) {
|
|
11
|
+
t0 = (s) => unstable_getInteractableVersions(s.thread.messages, id, name);
|
|
12
|
+
$[0] = id;
|
|
13
|
+
$[1] = name;
|
|
14
|
+
$[2] = t0;
|
|
15
|
+
} else t0 = $[2];
|
|
16
|
+
const versions = useAuiState(useJSONEqual(t0));
|
|
17
|
+
const [, t1] = unstable_useInteractableState(id);
|
|
18
|
+
const { setState } = t1;
|
|
19
|
+
let t2;
|
|
20
|
+
if ($[3] !== setState || $[4] !== versions) {
|
|
21
|
+
let t3;
|
|
22
|
+
if ($[6] !== setState) {
|
|
23
|
+
t3 = (v) => ({
|
|
24
|
+
...v,
|
|
25
|
+
state: v.state,
|
|
26
|
+
restore: () => setState(v.state)
|
|
27
|
+
});
|
|
28
|
+
$[6] = setState;
|
|
29
|
+
$[7] = t3;
|
|
30
|
+
} else t3 = $[7];
|
|
31
|
+
t2 = versions.map(t3);
|
|
32
|
+
$[3] = setState;
|
|
33
|
+
$[4] = versions;
|
|
34
|
+
$[5] = t2;
|
|
35
|
+
} else t2 = $[5];
|
|
36
|
+
return t2;
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Every version of a tool-created interactable recorded in the current
|
|
40
|
+
* thread, oldest first: the creating tool call, each user edit, and each
|
|
41
|
+
* `update_*` call. Each entry carries the full state as of that version and a
|
|
42
|
+
* `restore()` that sets the live instance back to it — enough for a version
|
|
43
|
+
* picker like an artifact's history dropdown.
|
|
44
|
+
*
|
|
45
|
+
* @deprecated Unstable / Experimental (not actually removed).
|
|
46
|
+
*/
|
|
47
|
+
const unstable_useInteractableVersions = useInteractableVersions;
|
|
48
|
+
//#endregion
|
|
49
|
+
export { unstable_useInteractableVersions };
|
|
50
|
+
|
|
51
|
+
//# sourceMappingURL=useInteractableVersions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInteractableVersions.js","names":["useMemo","useAuiState","unstable_getInteractableVersions","getInteractableVersions","Unstable_InteractableVersion","unstable_useInteractableState","useInteractableState","useJSONEqual","useInteractableVersions","id","name","$","_c","t0","s","thread","messages","versions","t1","setState","t2","t3","v","state","TState","restore","map","unstable_useInteractableVersions","Omit"],"sources":["../../../src/react/model-context/useInteractableVersions.ts"],"sourcesContent":["import { useMemo } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport {\n unstable_getInteractableVersions as getInteractableVersions,\n type Unstable_InteractableVersion,\n} from \"../../model-context/interactable-composer-metadata\";\nimport { unstable_useInteractableState as useInteractableState } from \"./useInteractableState\";\nimport { useJSONEqual } from \"../utils/useJSONEqual\";\n\nconst useInteractableVersions = <TState = unknown>(\n id: string,\n name: string,\n): (Omit<Unstable_InteractableVersion, \"state\"> & {\n state: TState;\n restore: () => void;\n})[] => {\n const versions = useAuiState(\n useJSONEqual((s) => getInteractableVersions(s.thread.messages, id, name)),\n );\n const [, { setState }] = useInteractableState<TState>(id);\n\n return useMemo(\n () =>\n versions.map((v) => ({\n ...v,\n state: v.state as TState,\n restore: () => setState(v.state as TState),\n })),\n [versions, setState],\n );\n};\n\n/**\n * Every version of a tool-created interactable recorded in the current\n * thread, oldest first: the creating tool call, each user edit, and each\n * `update_*` call. Each entry carries the full state as of that version and a\n * `restore()` that sets the live instance back to it — enough for a version\n * picker like an artifact's history dropdown.\n *\n * @deprecated Unstable / Experimental (not actually removed).\n */\nexport const unstable_useInteractableVersions: <TState = unknown>(\n id: string,\n name: string,\n) => (Omit<Unstable_InteractableVersion, \"state\"> & {\n state: TState;\n restore: () => void;\n})[] = useInteractableVersions;\n"],"mappings":";;;;;;AASA,MAAMQ,2BAA0BC,IAAAC,SAAA;CAAA,MAAAC,IAAAC,EAAA,CAAA;CAAA,IAAAC;CAAA,IAAAF,EAAA,OAAAF,MAAAE,EAAA,OAAAD,MAAA;EAQfG,MAAAC,MAAOX,iCAAwBW,EAACC,OAAOC,UAAWP,IAAIC,IAAI;EAACC,EAAA,KAAAF;EAAAE,EAAA,KAAAD;EAAAC,EAAA,KAAAE;CAAA,OAAAA,KAAAF,EAAA;CAD1E,MAAAM,WAAiBhB,YACfM,aAAaM,EAA2D,CAC1E;CACA,MAAA,GAAAK,MAAyBZ,8BAA6BG,EAAE;CAA/C,MAAA,EAAAU,aAAAD;CAAY,IAAAE;CAAA,IAAAT,EAAA,OAAAQ,YAAAR,EAAA,OAAAM,UAAA;EAAA,IAAAI;EAAA,IAAAV,EAAA,OAAAQ,UAAA;GAIJE,MAAAC,OAAQ;IAAA,GAChBA;IAACC,OACGD,EAACC;IAAgBE,eACTN,SAASG,EAACC,KAAgB;GAC3C;GAAEZ,EAAA,KAAAQ;GAAAR,EAAA,KAAAU;EAAA,OAAAA,KAAAV,EAAA;EAJFS,KAAAH,SAAQS,IAAKL,EAIX;EAACV,EAAA,KAAAQ;EAAAR,EAAA,KAAAM;EAAAN,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OAJHS;AAIG;;;;;;;;;;AAcT,MAAaO,mCAMNnB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/react/primitive-hooks/useThreadMessageIds.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Returns the ids of the messages in the current thread, in order.
|
|
4
|
+
*
|
|
5
|
+
* The returned array keeps a stable identity across content-only updates (e.g.
|
|
6
|
+
* streaming), changing reference only when the id sequence itself changes. Pair
|
|
7
|
+
* with `ThreadPrimitive.Unstable_MessageById` to drive a virtualized or custom
|
|
8
|
+
* message list.
|
|
9
|
+
*
|
|
10
|
+
* @deprecated Unstable / Experimental - may change in any release.
|
|
11
|
+
*/
|
|
12
|
+
declare const unstable_useThreadMessageIds: () => readonly string[];
|
|
13
|
+
//#endregion
|
|
14
|
+
export { unstable_useThreadMessageIds };
|
|
15
|
+
//# sourceMappingURL=useThreadMessageIds.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useThreadMessageIds.d.ts","names":[],"sources":["../../../src/react/primitive-hooks/useThreadMessageIds.ts"],"mappings":";;AA0BA;;;;AAA+D;;;;;cAAlD,4BAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useAuiState } from "@assistant-ui/store";
|
|
2
|
+
import { useRef } from "@assistant-ui/tap/react-shim";
|
|
3
|
+
//#region src/react/primitive-hooks/useThreadMessageIds.ts
|
|
4
|
+
const useThreadMessageIds = () => {
|
|
5
|
+
const messages = useAuiState((s) => s.thread.messages);
|
|
6
|
+
const prevIdsRef = useRef([]);
|
|
7
|
+
const ids = messages.map((m) => m.id);
|
|
8
|
+
const prev = prevIdsRef.current;
|
|
9
|
+
if (prev.length !== ids.length || prev.some((id, i) => id !== ids[i])) prevIdsRef.current = ids;
|
|
10
|
+
return prevIdsRef.current;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Returns the ids of the messages in the current thread, in order.
|
|
14
|
+
*
|
|
15
|
+
* The returned array keeps a stable identity across content-only updates (e.g.
|
|
16
|
+
* streaming), changing reference only when the id sequence itself changes. Pair
|
|
17
|
+
* with `ThreadPrimitive.Unstable_MessageById` to drive a virtualized or custom
|
|
18
|
+
* message list.
|
|
19
|
+
*
|
|
20
|
+
* @deprecated Unstable / Experimental - may change in any release.
|
|
21
|
+
*/
|
|
22
|
+
const unstable_useThreadMessageIds = useThreadMessageIds;
|
|
23
|
+
//#endregion
|
|
24
|
+
export { unstable_useThreadMessageIds };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=useThreadMessageIds.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useThreadMessageIds.js","names":["useRef","useAuiState","useThreadMessageIds","messages","s","thread","prevIdsRef","ids","map","m","id","prev","current","length","some","i","unstable_useThreadMessageIds"],"sources":["../../../src/react/primitive-hooks/useThreadMessageIds.ts"],"sourcesContent":["import { useRef } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\n\nconst useThreadMessageIds = (): readonly string[] => {\n const messages = useAuiState((s) => s.thread.messages);\n const prevIdsRef = useRef<readonly string[]>([]);\n\n const ids = messages.map((m) => m.id);\n const prev = prevIdsRef.current;\n if (prev.length !== ids.length || prev.some((id, i) => id !== ids[i])) {\n prevIdsRef.current = ids;\n }\n\n return prevIdsRef.current;\n};\n\n/**\n * Returns the ids of the messages in the current thread, in order.\n *\n * The returned array keeps a stable identity across content-only updates (e.g.\n * streaming), changing reference only when the id sequence itself changes. Pair\n * with `ThreadPrimitive.Unstable_MessageById` to drive a virtualized or custom\n * message list.\n *\n * @deprecated Unstable / Experimental - may change in any release.\n */\nexport const unstable_useThreadMessageIds = useThreadMessageIds;\n"],"mappings":";;;AAGA,MAAME,4BAA+C;CACnD,MAAMC,WAAWF,aAAaG,MAAMA,EAAEC,OAAOF,QAAQ;CACrD,MAAMG,aAAaN,OAA0B,CAAA,CAAE;CAE/C,MAAMO,MAAMJ,SAASK,KAAKC,MAAMA,EAAEC,EAAE;CACpC,MAAMC,OAAOL,WAAWM;CACxB,IAAID,KAAKE,WAAWN,IAAIM,UAAUF,KAAKG,MAAMJ,IAAIK,MAAML,OAAOH,IAAIQ,EAAE,GAClET,WAAWM,UAAUL;CAGvB,OAAOD,WAAWM;AACpB;;;;;;;;;;;AAYA,MAAaI,+BAA+Bd"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useSyncExternalStore } from "@assistant-ui/tap/react-shim";
|
|
2
1
|
import { useAui, useAuiState } from "@assistant-ui/store";
|
|
2
|
+
import { useSyncExternalStore } from "@assistant-ui/tap/react-shim";
|
|
3
3
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
4
4
|
//#region src/react/primitive-hooks/useVoice.ts
|
|
5
5
|
const useVoiceState = () => {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChainOfThoughtPartByIndexProvider } from "../../providers/ChainOfThoughtPartByIndexProvider.js";
|
|
2
2
|
import { MessagePartComponent } from "../message/MessageParts.js";
|
|
3
|
-
import { useMemo } from "@assistant-ui/tap/react-shim";
|
|
4
3
|
import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
|
|
4
|
+
import { useMemo } from "@assistant-ui/tap/react-shim";
|
|
5
5
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
//#region src/react/primitives/chainOfThought/ChainOfThoughtParts.tsx
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ComposerAttachmentByIndexProvider } from "../../providers/AttachmentByIndexProvider.js";
|
|
2
|
-
import { memo, useMemo } from "@assistant-ui/tap/react-shim";
|
|
3
2
|
import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
|
|
3
|
+
import { memo, useMemo } from "@assistant-ui/tap/react-shim";
|
|
4
4
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region src/react/primitives/composer/ComposerAttachments.tsx
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { QueueItemByIndexProvider } from "../../providers/QueueItemByIndexProvider.js";
|
|
2
|
-
import { memo, useMemo } from "@assistant-ui/tap/react-shim";
|
|
3
2
|
import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
|
|
3
|
+
import { memo, useMemo } from "@assistant-ui/tap/react-shim";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
5
5
|
//#region src/react/primitives/composer/ComposerQueue.tsx
|
|
6
6
|
const ComposerPrimitiveQueueInner = ({ children }) => {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { createElement } from "@assistant-ui/tap/react-shim";
|
|
3
2
|
import { useAuiState } from "@assistant-ui/store";
|
|
3
|
+
import { createElement } from "@assistant-ui/tap/react-shim";
|
|
4
4
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
5
|
import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region src/react/primitives/generativeUI/GenerativeUI.tsx
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MessageAttachmentByIndexProvider } from "../../providers/AttachmentByIndexProvider.js";
|
|
2
|
-
import { memo, useMemo } from "@assistant-ui/tap/react-shim";
|
|
3
2
|
import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
|
|
3
|
+
import { memo, useMemo } from "@assistant-ui/tap/react-shim";
|
|
4
4
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
5
|
import { jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region src/react/primitives/message/MessageAttachments.tsx
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { MessagePartChildren } from "./MessageParts.js";
|
|
3
3
|
import { GROUPBY_MEMO_KEY, buildGroupTree } from "../../utils/groupParts.js";
|
|
4
|
-
import { Fragment, useMemo } from "@assistant-ui/tap/react-shim";
|
|
5
4
|
import { useAuiState } from "@assistant-ui/store";
|
|
5
|
+
import { Fragment, useMemo } from "@assistant-ui/tap/react-shim";
|
|
6
6
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
7
7
|
import { useShallow } from "zustand/shallow";
|
|
8
8
|
//#region src/react/primitives/message/MessageGroupedParts.tsx
|
|
@@ -4,8 +4,8 @@ import { TextMessagePartProvider } from "../../providers/TextMessagePartProvider
|
|
|
4
4
|
import { ChainOfThoughtByIndicesProvider } from "../../providers/ChainOfThoughtByIndicesProvider.js";
|
|
5
5
|
import { getMessageQuote } from "../../utils/getMessageQuote.js";
|
|
6
6
|
import { GenerativeUIRender } from "../generativeUI/GenerativeUI.js";
|
|
7
|
-
import { memo } from "@assistant-ui/tap/react-shim";
|
|
8
7
|
import { RenderChildrenWithAccessor, useAui, useAuiState } from "@assistant-ui/store";
|
|
8
|
+
import { memo } from "@assistant-ui/tap/react-shim";
|
|
9
9
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
10
10
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
11
11
|
import { useShallow } from "zustand/shallow";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getMessageQuote } from "../../utils/getMessageQuote.js";
|
|
2
|
-
import { memo } from "@assistant-ui/tap/react-shim";
|
|
3
2
|
import { useAuiState } from "@assistant-ui/store";
|
|
3
|
+
import { memo } from "@assistant-ui/tap/react-shim";
|
|
4
4
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
5
|
import { Fragment as Fragment$1, jsx } from "react/jsx-runtime";
|
|
6
6
|
//#region src/react/primitives/message/MessageQuote.tsx
|
|
@@ -5,10 +5,13 @@ import { FC, ReactNode } from "react";
|
|
|
5
5
|
//#region src/react/primitives/part/PartMessages.d.ts
|
|
6
6
|
declare namespace PartPrimitiveMessages {
|
|
7
7
|
type Props = {
|
|
8
|
-
components
|
|
9
|
-
children?:
|
|
8
|
+
components: NonNullable<ThreadPrimitiveMessages.Props["components"]>;
|
|
9
|
+
children?: never;
|
|
10
|
+
} | {
|
|
11
|
+
/** Render function called for each message. Receives the message. */children: (value: {
|
|
10
12
|
message: ThreadMessage;
|
|
11
13
|
}) => ReactNode;
|
|
14
|
+
components?: never;
|
|
12
15
|
};
|
|
13
16
|
}
|
|
14
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartMessages.d.ts","names":[],"sources":["../../../../src/react/primitives/part/PartMessages.tsx"],"mappings":";;;;;kBASiB,qBAAA;EAAA,KACH,KAAA;
|
|
1
|
+
{"version":3,"file":"PartMessages.d.ts","names":[],"sources":["../../../../src/react/primitives/part/PartMessages.tsx"],"mappings":";;;;;kBASiB,qBAAA;EAAA,KACH,KAAA;IAEN,UAAA,EAAY,WAAA,CAAY,uBAAA,CAAwB,KAAA;IAChD,QAAA;EAAA;IADwB,qEAKxB,QAAA,GAAW,KAAA;MAAS,OAAA,EAAS,aAAA;IAAA,MAAoB,SAAA;IACjD,UAAA;EAAA;AAAA;;;;;;;;;;;;;AAAU;AAsClB;;;;;;;;AAAsE;AAyBtE;;cAzBa,yBAAA,EAA2B,EAAE,CAAC,qBAAA,CAAsB,KAAA;AAAA,cAyBpD,qBAAA,kBAAqB,oBAAA,CAAA,qBAAA,CAAA,KAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ReadonlyThreadProvider } from "../../providers/ReadonlyThreadProvider.js";
|
|
2
2
|
import { ThreadPrimitiveMessagesImpl } from "../thread/ThreadMessages.js";
|
|
3
|
-
import { memo } from "@assistant-ui/tap/react-shim";
|
|
4
3
|
import { useAuiState } from "@assistant-ui/store";
|
|
4
|
+
import { memo } from "@assistant-ui/tap/react-shim";
|
|
5
5
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
//#region src/react/primitives/part/PartMessages.tsx
|
|
@@ -37,11 +37,11 @@ const PartPrimitiveMessagesImpl = (t0) => {
|
|
|
37
37
|
const { components, children } = t0;
|
|
38
38
|
const messages = usePartMessages();
|
|
39
39
|
if (!messages?.length) return null;
|
|
40
|
-
if (
|
|
40
|
+
if (components) {
|
|
41
41
|
let t1;
|
|
42
|
-
if ($[0] !==
|
|
43
|
-
t1 = /* @__PURE__ */ jsx(ThreadPrimitiveMessagesImpl, {
|
|
44
|
-
$[0] =
|
|
42
|
+
if ($[0] !== components) {
|
|
43
|
+
t1 = /* @__PURE__ */ jsx(ThreadPrimitiveMessagesImpl, { components });
|
|
44
|
+
$[0] = components;
|
|
45
45
|
$[1] = t1;
|
|
46
46
|
} else t1 = $[1];
|
|
47
47
|
let t2;
|
|
@@ -57,9 +57,9 @@ const PartPrimitiveMessagesImpl = (t0) => {
|
|
|
57
57
|
return t2;
|
|
58
58
|
}
|
|
59
59
|
let t1;
|
|
60
|
-
if ($[5] !==
|
|
61
|
-
t1 = /* @__PURE__ */ jsx(ThreadPrimitiveMessagesImpl, {
|
|
62
|
-
$[5] =
|
|
60
|
+
if ($[5] !== children) {
|
|
61
|
+
t1 = /* @__PURE__ */ jsx(ThreadPrimitiveMessagesImpl, { children });
|
|
62
|
+
$[5] = children;
|
|
63
63
|
$[6] = t1;
|
|
64
64
|
} else t1 = $[6];
|
|
65
65
|
let t2;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PartMessages.js","names":["FC","ReactNode","memo","useAuiState","ThreadMessage","ReadonlyThreadProvider","ThreadPrimitiveMessages","ThreadPrimitiveMessagesImpl","PartPrimitiveMessages","Props","components","children","value","message","usePartMessages","_temp","PartPrimitiveMessagesImpl","t0","$","_c","messages","length","t1","t2","displayName","s","part","type","undefined"],"sources":["../../../../src/react/primitives/part/PartMessages.tsx"],"sourcesContent":["import { type FC, type ReactNode, memo } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport type { ThreadMessage } from \"../../../types/message\";\nimport { ReadonlyThreadProvider } from \"../../providers/ReadonlyThreadProvider\";\nimport {\n type ThreadPrimitiveMessages,\n ThreadPrimitiveMessagesImpl,\n} from \"../thread/ThreadMessages\";\n\nexport namespace PartPrimitiveMessages {\n export type Props
|
|
1
|
+
{"version":3,"file":"PartMessages.js","names":["FC","ReactNode","memo","useAuiState","ThreadMessage","ReadonlyThreadProvider","ThreadPrimitiveMessages","ThreadPrimitiveMessagesImpl","PartPrimitiveMessages","Props","components","NonNullable","children","value","message","usePartMessages","_temp","PartPrimitiveMessagesImpl","t0","$","_c","messages","length","t1","t2","displayName","s","part","type","undefined"],"sources":["../../../../src/react/primitives/part/PartMessages.tsx"],"sourcesContent":["import { type FC, type ReactNode, memo } from \"react\";\nimport { useAuiState } from \"@assistant-ui/store\";\nimport type { ThreadMessage } from \"../../../types/message\";\nimport { ReadonlyThreadProvider } from \"../../providers/ReadonlyThreadProvider\";\nimport {\n type ThreadPrimitiveMessages,\n ThreadPrimitiveMessagesImpl,\n} from \"../thread/ThreadMessages\";\n\nexport namespace PartPrimitiveMessages {\n export type Props =\n | {\n components: NonNullable<ThreadPrimitiveMessages.Props[\"components\"]>;\n children?: never;\n }\n | {\n /** Render function called for each message. Receives the message. */\n children: (value: { message: ThreadMessage }) => ReactNode;\n components?: never;\n };\n}\n\nconst usePartMessages = (): readonly ThreadMessage[] | undefined => {\n return useAuiState((s) => {\n const part = s.part;\n if (part.type !== \"tool-call\") return undefined;\n return \"messages\" in part\n ? (part.messages as readonly ThreadMessage[] | undefined)\n : undefined;\n });\n};\n\n/**\n * Renders the nested messages of a tool call part (e.g. sub-agent conversation).\n *\n * This primitive reads `messages` from the current tool call part in the PartScope\n * and renders them using a readonly thread context. All existing message and part\n * primitives work inside, and parent tool UI registrations are inherited.\n *\n * @example\n * ```tsx\n * const toolkit = defineToolkit({\n * invoke_sub_agent: {\n * type: \"backend\",\n * render: () => (\n * <PartPrimitive.Messages>\n * {({ message }) => {\n * if (message.role === \"user\") return <MyUserMessage />;\n * return <MyAssistantMessage />;\n * }}\n * </PartPrimitive.Messages>\n * ),\n * },\n * });\n * ```\n */\nexport const PartPrimitiveMessagesImpl: FC<PartPrimitiveMessages.Props> = ({\n components,\n children,\n}) => {\n const messages = usePartMessages();\n\n if (!messages?.length) return null;\n\n if (components) {\n return (\n <ReadonlyThreadProvider messages={messages}>\n <ThreadPrimitiveMessagesImpl components={components} />\n </ReadonlyThreadProvider>\n );\n }\n\n return (\n <ReadonlyThreadProvider messages={messages}>\n <ThreadPrimitiveMessagesImpl>{children}</ThreadPrimitiveMessagesImpl>\n </ReadonlyThreadProvider>\n );\n};\n\nPartPrimitiveMessagesImpl.displayName = \"PartPrimitive.Messages\";\n\nexport const PartPrimitiveMessages = memo(PartPrimitiveMessagesImpl);\n"],"mappings":";;;;;;;AAsBA,MAAMe,wBAAkB;CAAA,OACfZ,YAAYa,KAMlB;AAAC;;;;;;;;;;;;;;;;;;;;;;;;;AA2BJ,MAAaC,6BAA6DC,OAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAC,MAAA,EAAAV,YAAAE,aAAAM;CAIzE,MAAAG,WAAiBN,gBAAgB;CAEjC,IAAI,CAACM,UAAQC,QAAQ,OAAS;CAE9B,IAAIZ,YAAU;EAAA,IAAAa;EAAA,IAAAJ,EAAA,OAAAT,YAAA;GAGRa,KAAA,oBAAC,6BAAD,EAAyCb,WAAU,CAAA;GAAIS,EAAA,KAAAT;GAAAS,EAAA,KAAAI;EAAA,OAAAA,KAAAJ,EAAA;EAAA,IAAAK;EAAA,IAAAL,EAAA,OAAAE,YAAAF,EAAA,OAAAI,IAAA;GADzDC,KAAA,oBAAC,wBAAD;IAAkCH;cAChCE;GADqB,CAAA;GAEEJ,EAAA,KAAAE;GAAAF,EAAA,KAAAI;GAAAJ,EAAA,KAAAK;EAAA,OAAAA,KAAAL,EAAA;EAAA,OAFzBK;CAEyB;CAE5B,IAAAD;CAAA,IAAAJ,EAAA,OAAAP,UAAA;EAIGW,KAAA,oBAAC,6BAAD,EAA8BX,SAAF,CAAA;EAAyCO,EAAA,KAAAP;EAAAO,EAAA,KAAAI;CAAA,OAAAA,KAAAJ,EAAA;CAAA,IAAAK;CAAA,IAAAL,EAAA,OAAAE,YAAAF,EAAA,OAAAI,IAAA;EADvEC,KAAA,oBAAC,wBAAD;GAAkCH;aAChCE;EADqB,CAAA;EAEEJ,EAAA,KAAAE;EAAAF,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAAA,OAFzBK;AAEyB;AAI7BP,0BAA0BQ,cAAc;AAExC,MAAajB,wBAAwBN,KAAKe,yBAAyB;AA3D3C,SAAAD,MAAAU,GAAA;CAEpB,MAAAC,OAAaD,EAACC;CACd,IAAIA,KAAIC,SAAU,aAAW;CAAmB,OACzC,cAAcD,OAChBA,KAAIN,WADFQ,KAAAA;AAEM"}
|
|
@@ -42,6 +42,36 @@ declare namespace ThreadPrimitiveMessageByIndex {
|
|
|
42
42
|
* Renders a single message at the specified index in the current thread.
|
|
43
43
|
*/
|
|
44
44
|
declare const ThreadPrimitiveMessageByIndex: FC<ThreadPrimitiveMessageByIndex.Props>;
|
|
45
|
+
declare namespace ThreadPrimitiveUnstable_MessageById {
|
|
46
|
+
type Props = {
|
|
47
|
+
messageId: string;
|
|
48
|
+
components: MessagesComponentConfig;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Renders the message with the given id in the current thread.
|
|
53
|
+
*
|
|
54
|
+
* Unlike {@link ThreadPrimitiveMessageByIndex}, this keys off the message id,
|
|
55
|
+
* so it stays attached to the same message across reordering and windowing -
|
|
56
|
+
* the shape needed to drive a virtualized or custom message list together with
|
|
57
|
+
* `unstable_useThreadMessageIds`. A missing or removed id renders `null` rather
|
|
58
|
+
* than throwing.
|
|
59
|
+
*
|
|
60
|
+
* @deprecated Unstable / Experimental - may change in any release.
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```tsx
|
|
64
|
+
* const messageIds = unstable_useThreadMessageIds();
|
|
65
|
+
* return messageIds.map((messageId) => (
|
|
66
|
+
* <ThreadPrimitive.Unstable_MessageById
|
|
67
|
+
* key={messageId}
|
|
68
|
+
* messageId={messageId}
|
|
69
|
+
* components={MESSAGE_COMPONENTS}
|
|
70
|
+
* />
|
|
71
|
+
* ));
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
declare const ThreadPrimitiveUnstable_MessageById: FC<ThreadPrimitiveUnstable_MessageById.Props>;
|
|
45
75
|
/**
|
|
46
76
|
* Renders all messages in the current thread.
|
|
47
77
|
*
|
|
@@ -58,5 +88,5 @@ declare const ThreadPrimitiveMessageByIndex: FC<ThreadPrimitiveMessageByIndex.Pr
|
|
|
58
88
|
declare const ThreadPrimitiveMessagesImpl: FC<ThreadPrimitiveMessages.Props>;
|
|
59
89
|
declare const ThreadPrimitiveMessages: import("react").NamedExoticComponent<ThreadPrimitiveMessages.Props>;
|
|
60
90
|
//#endregion
|
|
61
|
-
export { ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl };
|
|
91
|
+
export { ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl, ThreadPrimitiveUnstable_MessageById };
|
|
62
92
|
//# sourceMappingURL=ThreadMessages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThreadMessages.d.ts","names":[],"sources":["../../../../src/react/primitives/thread/ThreadMessages.tsx"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"ThreadMessages.d.ts","names":[],"sources":["../../../../src/react/primitives/thread/ThreadMessages.tsx"],"mappings":";;;;KAYK,uBAAA;mDAGC,OAAA,EAAS,aAAA,EAHV;EAKC,YAAA,GAAe,aAAA;EAEf,gBAAA,GAAmB,aAAA,cAFJ;EAIf,qBAAA,GAAwB,aAAA,cAAA;EAExB,kBAAA,GAAqB,aAAA,cAEP;EAAd,WAAA,GAAc,aAAA,cAIE;EAFhB,gBAAA,GAAmB,aAAA,cAQJ;EANf,aAAA,GAAgB,aAAA;AAAA;EAYK,4DARrB,OAAA,GAAU,aAAA,cAYQ;EAVlB,YAAA,GAAe,aAAA,cAYc;EAV7B,gBAAA,GAAmB,aAAA,cAtBnB;EAwBA,qBAAA,GAAwB,aAAA,cAtBxB;EAwBA,kBAAA,GAAqB,aAAA,cAtBrB;EAwBA,WAAA,EAAa,aAAA,EAtBb;EAwBA,gBAAA,EAAkB,aAAA,EAtBlB;EAwBA,aAAA,GAAgB,aAAA;AAAA;AAAA,kBAGL,uBAAA;EAAA,KACH,KAAA;IAxBW,4DA2BjB,UAAA,EAAY,uBAAA;IACZ,QAAA;EAAA;IAtBQ,qEA0BR,QAAA,GAAW,KAAA;MAAS,OAAA,EAAS,YAAA;IAAA,MAAmB,SAAA;IAChD,UAAA;EAAA;AAAA;AAAA,kBAqGS,6BAAA;EAAA,KACH,KAAA;IACV,KAAA;IACA,UAAA,EAAY,uBAAuB;EAAA;AAAA;;;;cAO1B,6BAAA,EAA+B,EAAE,CAAC,6BAAA,CAA8B,KAAA;AAAA,kBAgB5D,mCAAA;EAAA,KACH,KAAA;IACV,SAAA;IACA,UAAA,EAAY,uBAAuB;EAAA;AAAA;;;;;;;;;;;;;;AAlIrB;AAqGlB;;;;;;;;;cAwDa,mCAAA,EAAqC,EAAE,CAAC,mCAAA,CAAoC,KAAA;AA9CzF;;;;;;;;AAAkF;AAgBlF;;;;AAhBA,cA0Ga,2BAAA,EAA6B,EAAE,CAAC,uBAAA,CAAwB,KAAA;AAAA,cAkBxD,uBAAA,kBAAuB,oBAAA,CAAA,uBAAA,CAAA,KAAA"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { MessageByIndexProvider } from "../../providers/MessageByIndexProvider.js";
|
|
2
|
-
import {
|
|
2
|
+
import { MessageByIdProvider } from "../../providers/MessageByIdProvider.js";
|
|
3
3
|
import { RenderChildrenWithAccessor, useAuiState } from "@assistant-ui/store";
|
|
4
|
+
import { memo, useMemo } from "@assistant-ui/tap/react-shim";
|
|
4
5
|
import { c } from "@assistant-ui/tap/react-shim/compiler-runtime";
|
|
5
6
|
import { jsx } from "react/jsx-runtime";
|
|
6
7
|
//#region src/react/primitives/thread/ThreadMessages.tsx
|
|
@@ -8,6 +9,15 @@ const isComponentsSame = (prev, next) => {
|
|
|
8
9
|
return prev.Message === next.Message && prev.EditComposer === next.EditComposer && prev.UserEditComposer === next.UserEditComposer && prev.AssistantEditComposer === next.AssistantEditComposer && prev.SystemEditComposer === next.SystemEditComposer && prev.UserMessage === next.UserMessage && prev.AssistantMessage === next.AssistantMessage && prev.SystemMessage === next.SystemMessage;
|
|
9
10
|
};
|
|
10
11
|
const DEFAULT_SYSTEM_MESSAGE = () => null;
|
|
12
|
+
const messageIdSetCache = /* @__PURE__ */ new WeakMap();
|
|
13
|
+
const hasMessageId = (messages, messageId) => {
|
|
14
|
+
let ids = messageIdSetCache.get(messages);
|
|
15
|
+
if (!ids) {
|
|
16
|
+
ids = new Set(messages.map((m) => m.id));
|
|
17
|
+
messageIdSetCache.set(messages, ids);
|
|
18
|
+
}
|
|
19
|
+
return ids.has(messageId);
|
|
20
|
+
};
|
|
11
21
|
const getComponent = (components, role, isEditing) => {
|
|
12
22
|
switch (role) {
|
|
13
23
|
case "user": if (isEditing) return components.UserEditComposer ?? components.EditComposer ?? components.UserMessage ?? components.Message;
|
|
@@ -66,6 +76,58 @@ const ThreadPrimitiveMessageByIndex = memo((t0) => {
|
|
|
66
76
|
return t2;
|
|
67
77
|
}, (prev, next) => prev.index === next.index && isComponentsSame(prev.components, next.components));
|
|
68
78
|
ThreadPrimitiveMessageByIndex.displayName = "ThreadPrimitive.MessageByIndex";
|
|
79
|
+
/**
|
|
80
|
+
* Renders the message with the given id in the current thread.
|
|
81
|
+
*
|
|
82
|
+
* Unlike {@link ThreadPrimitiveMessageByIndex}, this keys off the message id,
|
|
83
|
+
* so it stays attached to the same message across reordering and windowing -
|
|
84
|
+
* the shape needed to drive a virtualized or custom message list together with
|
|
85
|
+
* `unstable_useThreadMessageIds`. A missing or removed id renders `null` rather
|
|
86
|
+
* than throwing.
|
|
87
|
+
*
|
|
88
|
+
* @deprecated Unstable / Experimental - may change in any release.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```tsx
|
|
92
|
+
* const messageIds = unstable_useThreadMessageIds();
|
|
93
|
+
* return messageIds.map((messageId) => (
|
|
94
|
+
* <ThreadPrimitive.Unstable_MessageById
|
|
95
|
+
* key={messageId}
|
|
96
|
+
* messageId={messageId}
|
|
97
|
+
* components={MESSAGE_COMPONENTS}
|
|
98
|
+
* />
|
|
99
|
+
* ));
|
|
100
|
+
* ```
|
|
101
|
+
*/
|
|
102
|
+
const ThreadPrimitiveUnstable_MessageById = memo((t0) => {
|
|
103
|
+
const $ = c(7);
|
|
104
|
+
const { messageId, components } = t0;
|
|
105
|
+
let t1;
|
|
106
|
+
if ($[0] !== messageId) {
|
|
107
|
+
t1 = (s) => hasMessageId(s.thread.messages, messageId);
|
|
108
|
+
$[0] = messageId;
|
|
109
|
+
$[1] = t1;
|
|
110
|
+
} else t1 = $[1];
|
|
111
|
+
if (!useAuiState(t1)) return null;
|
|
112
|
+
let t2;
|
|
113
|
+
if ($[2] !== components) {
|
|
114
|
+
t2 = /* @__PURE__ */ jsx(ThreadMessageComponent, { components });
|
|
115
|
+
$[2] = components;
|
|
116
|
+
$[3] = t2;
|
|
117
|
+
} else t2 = $[3];
|
|
118
|
+
let t3;
|
|
119
|
+
if ($[4] !== messageId || $[5] !== t2) {
|
|
120
|
+
t3 = /* @__PURE__ */ jsx(MessageByIdProvider, {
|
|
121
|
+
id: messageId,
|
|
122
|
+
children: t2
|
|
123
|
+
});
|
|
124
|
+
$[4] = messageId;
|
|
125
|
+
$[5] = t2;
|
|
126
|
+
$[6] = t3;
|
|
127
|
+
} else t3 = $[6];
|
|
128
|
+
return t3;
|
|
129
|
+
}, (prev, next) => prev.messageId === next.messageId && isComponentsSame(prev.components, next.components));
|
|
130
|
+
ThreadPrimitiveUnstable_MessageById.displayName = "ThreadPrimitive.Unstable_MessageById";
|
|
69
131
|
const ThreadPrimitiveMessagesInner = ({ children }) => {
|
|
70
132
|
const messagesLength = useAuiState((s) => s.thread.messages.length);
|
|
71
133
|
return useMemo(() => {
|
|
@@ -126,6 +188,6 @@ function _temp2(s_0) {
|
|
|
126
188
|
return s_0.message.composer.isEditing;
|
|
127
189
|
}
|
|
128
190
|
//#endregion
|
|
129
|
-
export { ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl };
|
|
191
|
+
export { ThreadPrimitiveMessageByIndex, ThreadPrimitiveMessages, ThreadPrimitiveMessagesImpl, ThreadPrimitiveUnstable_MessageById };
|
|
130
192
|
|
|
131
193
|
//# sourceMappingURL=ThreadMessages.js.map
|