@assistant-ui/react 0.11.21 → 0.11.22
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/augmentations.d.ts +20 -9
- package/dist/augmentations.d.ts.map +1 -1
- package/dist/client/AssistantClient.d.ts +6 -7
- package/dist/client/AssistantClient.d.ts.map +1 -1
- package/dist/client/AssistantClient.js +9 -4
- package/dist/client/AssistantClient.js.map +1 -1
- package/dist/client/NoOpComposerClient.d.ts +9 -0
- package/dist/client/NoOpComposerClient.d.ts.map +1 -0
- package/dist/client/NoOpComposerClient.js +59 -0
- package/dist/client/NoOpComposerClient.js.map +1 -0
- package/dist/client/ThreadMessageClient.d.ts +14 -0
- package/dist/client/ThreadMessageClient.d.ts.map +1 -0
- package/dist/client/ThreadMessageClient.js +140 -0
- package/dist/client/ThreadMessageClient.js.map +1 -0
- package/dist/client/types/Part.d.ts +5 -0
- package/dist/client/types/Part.d.ts.map +1 -1
- package/dist/client/types/Thread.d.ts +8 -0
- package/dist/client/types/Thread.d.ts.map +1 -1
- package/dist/context/providers/MessageProvider.d.ts +1 -8
- package/dist/context/providers/MessageProvider.d.ts.map +1 -1
- package/dist/context/providers/MessageProvider.js +4 -181
- package/dist/context/providers/MessageProvider.js.map +1 -1
- package/dist/context/providers/TextMessagePartProvider.d.ts.map +1 -1
- package/dist/context/providers/TextMessagePartProvider.js +3 -1
- package/dist/context/providers/TextMessagePartProvider.js.map +1 -1
- package/dist/context/react/AssistantApiContext.d.ts +3 -1
- package/dist/context/react/AssistantApiContext.d.ts.map +1 -1
- package/dist/context/react/AssistantApiContext.js +17 -4
- package/dist/context/react/AssistantApiContext.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +1 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +5 -1
- package/dist/internal.js.map +1 -1
- package/dist/legacy-runtime/client/MessagePartRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/MessagePartRuntimeClient.js +9 -10
- package/dist/legacy-runtime/client/MessagePartRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/client/ThreadRuntimeClient.d.ts.map +1 -1
- package/dist/legacy-runtime/client/ThreadRuntimeClient.js +6 -0
- package/dist/legacy-runtime/client/ThreadRuntimeClient.js.map +1 -1
- package/dist/legacy-runtime/hooks/AssistantContext.js +1 -1
- package/dist/legacy-runtime/hooks/AssistantContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.js +1 -1
- package/dist/legacy-runtime/hooks/AttachmentContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ComposerContext.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/ComposerContext.js +1 -1
- package/dist/legacy-runtime/hooks/ComposerContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/MessageContext.d.ts.map +1 -1
- package/dist/legacy-runtime/hooks/MessageContext.js +1 -1
- package/dist/legacy-runtime/hooks/MessageContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.js +1 -1
- package/dist/legacy-runtime/hooks/MessagePartContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadContext.js +1 -1
- package/dist/legacy-runtime/hooks/ThreadContext.js.map +1 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js +1 -1
- package/dist/legacy-runtime/hooks/ThreadListItemContext.js.map +1 -1
- package/dist/legacy-runtime/runtime/MessagePartRuntime.d.ts +6 -0
- package/dist/legacy-runtime/runtime/MessagePartRuntime.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime/MessagePartRuntime.js +13 -0
- package/dist/legacy-runtime/runtime/MessagePartRuntime.js.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-cores/assistant-transport/types.d.ts +2 -0
- 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 +5 -2
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.d.ts +2 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js +3 -3
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.d.ts +9 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.js +48 -7
- package/dist/legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.d.ts +2 -1
- package/dist/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.d.ts +6 -1
- package/dist/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreAdapter.d.ts +5 -1
- package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreAdapter.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadRuntimeCore.d.ts +2 -1
- package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadRuntimeCore.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadRuntimeCore.js +6 -1
- package/dist/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadRuntimeCore.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/auto-status.d.ts +4 -1
- package/dist/legacy-runtime/runtime-cores/external-store/auto-status.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/auto-status.js +5 -1
- package/dist/legacy-runtime/runtime-cores/external-store/auto-status.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/createMessageConverter.d.ts +3 -2
- package/dist/legacy-runtime/runtime-cores/external-store/createMessageConverter.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/createMessageConverter.js +6 -4
- package/dist/legacy-runtime/runtime-cores/external-store/createMessageConverter.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/external-message-converter.d.ts +8 -3
- package/dist/legacy-runtime/runtime-cores/external-store/external-message-converter.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/external-store/external-message-converter.js +20 -6
- package/dist/legacy-runtime/runtime-cores/external-store/external-message-converter.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.d.ts +2 -1
- package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.js +3 -0
- package/dist/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.js.map +1 -1
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/EMPTY_THREAD_CORE.d.ts.map +1 -1
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/EMPTY_THREAD_CORE.js +3 -0
- package/dist/legacy-runtime/runtime-cores/remote-thread-list/EMPTY_THREAD_CORE.js.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.js +1 -1
- package/dist/legacy-runtime/runtime-cores/utils/MessageRepository.js.map +1 -1
- package/dist/model-context/frame/AssistantFrameProvider.d.ts.map +1 -1
- package/dist/model-context/frame/AssistantFrameProvider.js +6 -1
- package/dist/model-context/frame/AssistantFrameProvider.js.map +1 -1
- package/dist/primitives/message/MessageParts.d.ts.map +1 -1
- package/dist/primitives/message/MessageParts.js +12 -3
- package/dist/primitives/message/MessageParts.js.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.d.ts.map +1 -1
- package/dist/primitives/message/MessagePartsGrouped.js +11 -2
- package/dist/primitives/message/MessagePartsGrouped.js.map +1 -1
- package/dist/types/AssistantTypes.d.ts +2 -2
- package/dist/types/AssistantTypes.d.ts.map +1 -1
- package/dist/types/MessagePartComponentTypes.d.ts +1 -0
- package/dist/types/MessagePartComponentTypes.d.ts.map +1 -1
- package/dist/types/MessagePartTypes.d.ts +1 -0
- package/dist/types/MessagePartTypes.d.ts.map +1 -1
- package/dist/utils/smooth/SmoothContext.d.ts +6 -6
- package/package.json +2 -2
- package/src/augmentations.ts +21 -24
- package/src/client/AssistantClient.ts +15 -8
- package/src/client/NoOpComposerClient.tsx +56 -0
- package/src/client/ThreadMessageClient.tsx +161 -0
- package/src/client/types/Attachment.ts +1 -1
- package/src/client/types/Composer.ts +1 -1
- package/src/client/types/Message.ts +1 -1
- package/src/client/types/Part.ts +7 -1
- package/src/client/types/Thread.ts +11 -1
- package/src/client/types/ThreadListItem.ts +1 -1
- package/src/context/providers/MessageProvider.tsx +4 -222
- package/src/context/providers/TextMessagePartProvider.tsx +3 -1
- package/src/context/react/AssistantApiContext.tsx +27 -5
- package/src/index.ts +3 -0
- package/src/internal.ts +4 -0
- package/src/legacy-runtime/client/MessagePartRuntimeClient.ts +12 -13
- package/src/legacy-runtime/client/ThreadRuntimeClient.ts +6 -0
- package/src/legacy-runtime/hooks/AssistantContext.ts +1 -1
- package/src/legacy-runtime/hooks/AttachmentContext.ts +3 -1
- package/src/legacy-runtime/hooks/ComposerContext.ts +3 -1
- package/src/legacy-runtime/hooks/MessageContext.ts +3 -1
- package/src/legacy-runtime/hooks/MessagePartContext.ts +1 -1
- package/src/legacy-runtime/hooks/ThreadContext.ts +1 -1
- package/src/legacy-runtime/hooks/ThreadListItemContext.ts +1 -1
- package/src/legacy-runtime/runtime/MessagePartRuntime.ts +23 -0
- package/src/legacy-runtime/runtime-cores/assistant-transport/types.ts +2 -0
- package/src/legacy-runtime/runtime-cores/assistant-transport/useAssistantTransportRuntime.tsx +10 -3
- package/src/legacy-runtime/runtime-cores/assistant-transport/useConvertedState.ts +4 -2
- package/src/legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.ts +73 -6
- package/src/legacy-runtime/runtime-cores/core/BaseThreadRuntimeCore.tsx +2 -0
- package/src/legacy-runtime/runtime-cores/core/ThreadRuntimeCore.tsx +7 -1
- package/src/legacy-runtime/runtime-cores/external-store/ExternalStoreAdapter.tsx +4 -1
- package/src/legacy-runtime/runtime-cores/external-store/ExternalStoreThreadRuntimeCore.tsx +8 -1
- package/src/legacy-runtime/runtime-cores/external-store/auto-status.tsx +11 -3
- package/src/legacy-runtime/runtime-cores/external-store/createMessageConverter.tsx +9 -2
- package/src/legacy-runtime/runtime-cores/external-store/external-message-converter.tsx +33 -5
- package/src/legacy-runtime/runtime-cores/local/LocalThreadRuntimeCore.tsx +5 -0
- package/src/legacy-runtime/runtime-cores/remote-thread-list/EMPTY_THREAD_CORE.tsx +4 -0
- package/src/legacy-runtime/runtime-cores/utils/MessageRepository.tsx +1 -1
- package/src/model-context/frame/AssistantFrameProvider.ts +5 -0
- package/src/primitives/message/MessageParts.tsx +11 -3
- package/src/primitives/message/MessagePartsGrouped.tsx +10 -2
- package/src/types/AssistantTypes.ts +2 -2
- package/src/types/MessagePartComponentTypes.tsx +1 -0
- package/src/types/MessagePartTypes.ts +1 -0
@@ -6,189 +6,12 @@ import {
|
|
6
6
|
AssistantProvider,
|
7
7
|
createAssistantApiField
|
8
8
|
} from "../react/AssistantApiContext.js";
|
9
|
-
import {
|
10
|
-
resource,
|
11
|
-
tapInlineResource,
|
12
|
-
tapMemo,
|
13
|
-
tapState
|
14
|
-
} from "@assistant-ui/tap";
|
15
9
|
import { useResource } from "@assistant-ui/tap/react";
|
16
|
-
import { asStore
|
17
|
-
import {
|
10
|
+
import { asStore } from "../../utils/tap-store/index.js";
|
11
|
+
import {
|
12
|
+
ThreadMessageClient
|
13
|
+
} from "../../client/ThreadMessageClient.js";
|
18
14
|
import { jsx } from "react/jsx-runtime";
|
19
|
-
var NoOpComposerClient = resource(({ type }) => {
|
20
|
-
const state = tapMemo(() => {
|
21
|
-
return {
|
22
|
-
isEditing: false,
|
23
|
-
isEmpty: true,
|
24
|
-
text: "",
|
25
|
-
attachmentAccept: "*",
|
26
|
-
attachments: [],
|
27
|
-
role: "user",
|
28
|
-
runConfig: {},
|
29
|
-
canCancel: false,
|
30
|
-
type
|
31
|
-
};
|
32
|
-
}, [type]);
|
33
|
-
return tapApi({
|
34
|
-
getState: () => state,
|
35
|
-
setText: () => {
|
36
|
-
throw new Error("Not supported");
|
37
|
-
},
|
38
|
-
setRole: () => {
|
39
|
-
throw new Error("Not supported");
|
40
|
-
},
|
41
|
-
setRunConfig: () => {
|
42
|
-
throw new Error("Not supported");
|
43
|
-
},
|
44
|
-
addAttachment: () => {
|
45
|
-
throw new Error("Not supported");
|
46
|
-
},
|
47
|
-
clearAttachments: () => {
|
48
|
-
throw new Error("Not supported");
|
49
|
-
},
|
50
|
-
attachment: () => {
|
51
|
-
throw new Error("Not supported");
|
52
|
-
},
|
53
|
-
reset: () => {
|
54
|
-
throw new Error("Not supported");
|
55
|
-
},
|
56
|
-
send: () => {
|
57
|
-
throw new Error("Not supported");
|
58
|
-
},
|
59
|
-
cancel: () => {
|
60
|
-
throw new Error("Not supported");
|
61
|
-
},
|
62
|
-
beginEdit: () => {
|
63
|
-
throw new Error("Not supported");
|
64
|
-
},
|
65
|
-
__internal_getRuntime: () => null
|
66
|
-
});
|
67
|
-
});
|
68
|
-
var ThreadMessagePartClient = resource(
|
69
|
-
({ part }) => {
|
70
|
-
const state = tapMemo(() => {
|
71
|
-
return {
|
72
|
-
...part,
|
73
|
-
status: { type: "complete" }
|
74
|
-
};
|
75
|
-
}, [part]);
|
76
|
-
return tapApi(
|
77
|
-
{
|
78
|
-
getState: () => state,
|
79
|
-
addToolResult: () => {
|
80
|
-
throw new Error("Not supported");
|
81
|
-
},
|
82
|
-
__internal_getRuntime: () => null
|
83
|
-
},
|
84
|
-
{
|
85
|
-
key: state.type === "tool-call" ? "toolCallId-" + state.toolCallId : void 0
|
86
|
-
}
|
87
|
-
);
|
88
|
-
}
|
89
|
-
);
|
90
|
-
var ThreadMessageAttachmentClient = resource(
|
91
|
-
({ attachment }) => {
|
92
|
-
return tapApi(
|
93
|
-
{
|
94
|
-
getState: () => attachment,
|
95
|
-
remove: () => {
|
96
|
-
throw new Error("Not supported");
|
97
|
-
},
|
98
|
-
__internal_getRuntime: () => null
|
99
|
-
},
|
100
|
-
{
|
101
|
-
key: attachment.id
|
102
|
-
}
|
103
|
-
);
|
104
|
-
}
|
105
|
-
);
|
106
|
-
var ThreadMessageClient = resource(
|
107
|
-
({
|
108
|
-
message,
|
109
|
-
isLast = true,
|
110
|
-
branchNumber = 1,
|
111
|
-
branchCount = 1
|
112
|
-
}) => {
|
113
|
-
const [isCopiedState, setIsCopied] = tapState(false);
|
114
|
-
const [isHoveringState, setIsHovering] = tapState(false);
|
115
|
-
const parts = tapLookupResources(
|
116
|
-
message.content.map(
|
117
|
-
(_, idx) => ThreadMessagePartClient({ part: message.content[idx] }, { key: idx })
|
118
|
-
)
|
119
|
-
);
|
120
|
-
const attachments = tapLookupResources(
|
121
|
-
message.attachments?.map(
|
122
|
-
(_, idx) => ThreadMessageAttachmentClient(
|
123
|
-
{ attachment: message.attachments[idx] },
|
124
|
-
{ key: idx }
|
125
|
-
)
|
126
|
-
) ?? []
|
127
|
-
);
|
128
|
-
const composerState = tapInlineResource(
|
129
|
-
NoOpComposerClient({ type: "edit" })
|
130
|
-
);
|
131
|
-
const state = tapMemo(() => {
|
132
|
-
return {
|
133
|
-
...message,
|
134
|
-
parts: parts.state,
|
135
|
-
composer: composerState.state,
|
136
|
-
parentId: null,
|
137
|
-
isLast,
|
138
|
-
branchNumber,
|
139
|
-
branchCount,
|
140
|
-
speech: void 0,
|
141
|
-
submittedFeedback: void 0,
|
142
|
-
isCopied: isCopiedState,
|
143
|
-
isHovering: isHoveringState
|
144
|
-
};
|
145
|
-
}, [message, isCopiedState, isHoveringState, isLast]);
|
146
|
-
return tapApi({
|
147
|
-
getState: () => state,
|
148
|
-
composer: composerState.api,
|
149
|
-
part: (selector) => {
|
150
|
-
if ("index" in selector) {
|
151
|
-
return parts.api({ index: selector.index });
|
152
|
-
} else {
|
153
|
-
return parts.api({ key: "toolCallId-" + selector.toolCallId });
|
154
|
-
}
|
155
|
-
},
|
156
|
-
attachment: (selector) => {
|
157
|
-
if ("id" in selector) {
|
158
|
-
return attachments.api({ key: selector.id });
|
159
|
-
} else {
|
160
|
-
return attachments.api(selector);
|
161
|
-
}
|
162
|
-
},
|
163
|
-
reload: () => {
|
164
|
-
throw new Error("Not supported in ThreadMessageProvider");
|
165
|
-
},
|
166
|
-
speak: () => {
|
167
|
-
throw new Error("Not supported in ThreadMessageProvider");
|
168
|
-
},
|
169
|
-
stopSpeaking: () => {
|
170
|
-
throw new Error("Not supported in ThreadMessageProvider");
|
171
|
-
},
|
172
|
-
submitFeedback: () => {
|
173
|
-
throw new Error("Not supported in ThreadMessageProvider");
|
174
|
-
},
|
175
|
-
switchToBranch: () => {
|
176
|
-
throw new Error("Not supported in ThreadMessageProvider");
|
177
|
-
},
|
178
|
-
getCopyText: () => {
|
179
|
-
return message.content.map((part) => {
|
180
|
-
if ("text" in part && typeof part.text === "string") {
|
181
|
-
return part.text;
|
182
|
-
}
|
183
|
-
return "";
|
184
|
-
}).join("\n");
|
185
|
-
},
|
186
|
-
setIsCopied,
|
187
|
-
setIsHovering,
|
188
|
-
__internal_getRuntime: () => null
|
189
|
-
});
|
190
|
-
}
|
191
|
-
);
|
192
15
|
var MessageProvider = ({ children, ...props }) => {
|
193
16
|
const store = useResource(asStore(ThreadMessageClient(props)));
|
194
17
|
const api = useMemo(() => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/context/providers/MessageProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantProvider,\n AssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport {\n MessageClientApi,\n MessageClientState,\n} from \"../../client/types/Message\";\nimport {\n resource,\n tapInlineResource,\n tapMemo,\n tapState,\n} from \"@assistant-ui/tap\";\nimport { useResource } from \"@assistant-ui/tap/react\";\nimport { asStore, tapApi } from \"../../utils/tap-store\";\nimport {\n ThreadAssistantMessagePart,\n ThreadMessage,\n ThreadUserMessagePart,\n} from \"../../types/AssistantTypes\";\nimport {\n ComposerClientApi,\n ComposerClientState,\n} from \"../../client/types/Composer\";\nimport {\n MessagePartClientApi,\n MessagePartClientState,\n} from \"../../client/types/Part\";\nimport { tapLookupResources } from \"../../client/util-hooks/tapLookupResources\";\nimport { Attachment } from \"../../types\";\nimport { AttachmentClientApi } from \"../../client/types/Attachment\";\n\nconst NoOpComposerClient = resource(({ type }: { type: \"edit\" | \"thread\" }) => {\n const state = tapMemo<ComposerClientState>(() => {\n return {\n isEditing: false,\n isEmpty: true,\n text: \"\",\n attachmentAccept: \"*\",\n attachments: [],\n role: \"user\",\n runConfig: {},\n canCancel: false,\n type: type,\n };\n }, [type]);\n\n return tapApi<ComposerClientApi>({\n getState: () => state,\n setText: () => {\n throw new Error(\"Not supported\");\n },\n setRole: () => {\n throw new Error(\"Not supported\");\n },\n setRunConfig: () => {\n throw new Error(\"Not supported\");\n },\n addAttachment: () => {\n throw new Error(\"Not supported\");\n },\n clearAttachments: () => {\n throw new Error(\"Not supported\");\n },\n attachment: () => {\n throw new Error(\"Not supported\");\n },\n reset: () => {\n throw new Error(\"Not supported\");\n },\n send: () => {\n throw new Error(\"Not supported\");\n },\n cancel: () => {\n throw new Error(\"Not supported\");\n },\n beginEdit: () => {\n throw new Error(\"Not supported\");\n },\n __internal_getRuntime: () => null,\n });\n});\n\nconst ThreadMessagePartClient = resource(\n ({ part }: { part: ThreadAssistantMessagePart | ThreadUserMessagePart }) => {\n const state = tapMemo<MessagePartClientState>(() => {\n return {\n ...part,\n status: { type: \"complete\" },\n };\n }, [part]);\n\n return tapApi<MessagePartClientApi>(\n {\n getState: () => state,\n addToolResult: () => {\n throw new Error(\"Not supported\");\n },\n __internal_getRuntime: () => null,\n },\n {\n key:\n state.type === \"tool-call\"\n ? \"toolCallId-\" + state.toolCallId\n : undefined,\n },\n );\n },\n);\n\nconst ThreadMessageAttachmentClient = resource(\n ({ attachment }: { attachment: Attachment }) => {\n return tapApi<AttachmentClientApi>(\n {\n getState: () => attachment,\n remove: () => {\n throw new Error(\"Not supported\");\n },\n __internal_getRuntime: () => null,\n },\n {\n key: attachment.id,\n },\n );\n },\n);\n\ntype ThreadMessageClientProps = {\n message: ThreadMessage;\n isLast?: boolean;\n branchNumber?: number;\n branchCount?: number;\n};\n\nconst ThreadMessageClient = resource(\n ({\n message,\n isLast = true,\n branchNumber = 1,\n branchCount = 1,\n }: ThreadMessageClientProps) => {\n const [isCopiedState, setIsCopied] = tapState(false);\n const [isHoveringState, setIsHovering] = tapState(false);\n\n const parts = tapLookupResources(\n message.content.map((_, idx) =>\n ThreadMessagePartClient({ part: message.content[idx]! }, { key: idx }),\n ),\n );\n\n const attachments = tapLookupResources(\n message.attachments?.map((_, idx) =>\n ThreadMessageAttachmentClient(\n { attachment: message.attachments![idx]! },\n { key: idx },\n ),\n ) ?? [],\n );\n\n const composerState = tapInlineResource(\n NoOpComposerClient({ type: \"edit\" }),\n );\n\n const state = tapMemo<MessageClientState>(() => {\n return {\n ...message,\n parts: parts.state,\n composer: composerState.state,\n parentId: null,\n isLast,\n branchNumber,\n branchCount,\n speech: undefined,\n submittedFeedback: undefined,\n isCopied: isCopiedState,\n isHovering: isHoveringState,\n };\n }, [message, isCopiedState, isHoveringState, isLast]);\n\n return tapApi<MessageClientApi>({\n getState: () => state,\n composer: composerState.api,\n part: (selector) => {\n if (\"index\" in selector) {\n return parts.api({ index: selector.index });\n } else {\n return parts.api({ key: \"toolCallId-\" + selector.toolCallId });\n }\n },\n attachment: (selector) => {\n if (\"id\" in selector) {\n return attachments.api({ key: selector.id });\n } else {\n return attachments.api(selector);\n }\n },\n reload: () => {\n throw new Error(\"Not supported in ThreadMessageProvider\");\n },\n speak: () => {\n throw new Error(\"Not supported in ThreadMessageProvider\");\n },\n stopSpeaking: () => {\n throw new Error(\"Not supported in ThreadMessageProvider\");\n },\n submitFeedback: () => {\n throw new Error(\"Not supported in ThreadMessageProvider\");\n },\n switchToBranch: () => {\n throw new Error(\"Not supported in ThreadMessageProvider\");\n },\n getCopyText: () => {\n return message.content\n .map((part) => {\n if (\"text\" in part && typeof part.text === \"string\") {\n return part.text;\n }\n return \"\";\n })\n .join(\"\\n\");\n },\n setIsCopied,\n setIsHovering,\n __internal_getRuntime: () => null,\n });\n },\n);\n\nexport const MessageProvider: FC<\n PropsWithChildren<ThreadMessageClientProps>\n> = ({ children, ...props }) => {\n const store = useResource(asStore(ThreadMessageClient(props)));\n const api = useMemo(() => {\n return {\n message: createAssistantApiField({\n source: \"root\",\n query: {},\n get: () => store.getState().api,\n }),\n subscribe: store.subscribe,\n flushSync: store.flushSync,\n } satisfies Partial<AssistantApi>;\n }, [store]);\n\n return <AssistantProvider api={api}>{children}</AssistantProvider>;\n};\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../src/context/providers/MessageProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantProvider,\n AssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport { useResource } from \"@assistant-ui/tap/react\";\nimport { asStore } from \"../../utils/tap-store\";\nimport {\n ThreadMessageClientProps,\n ThreadMessageClient,\n} from \"../../client/ThreadMessageClient\";\n\nexport const MessageProvider: FC<\n PropsWithChildren<ThreadMessageClientProps>\n> = ({ children, ...props }) => {\n const store = useResource(asStore(ThreadMessageClient(props)));\n const api = useMemo(() => {\n return {\n message: createAssistantApiField({\n source: \"root\",\n query: {},\n get: () => store.getState().api,\n }),\n subscribe: store.subscribe,\n flushSync: store.flushSync,\n } satisfies Partial<AssistantApi>;\n }, [store]);\n\n return <AssistantProvider api={api}>{children}</AssistantProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AACP,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB;AAAA,EAEE;AAAA,OACK;AAkBE;AAhBF,IAAM,kBAET,CAAC,EAAE,UAAU,GAAG,MAAM,MAAM;AAC9B,QAAM,QAAQ,YAAY,QAAQ,oBAAoB,KAAK,CAAC,CAAC;AAC7D,QAAM,MAAM,QAAQ,MAAM;AACxB,WAAO;AAAA,MACL,SAAS,wBAAwB;AAAA,QAC/B,QAAQ;AAAA,QACR,OAAO,CAAC;AAAA,QACR,KAAK,MAAM,MAAM,SAAS,EAAE;AAAA,MAC9B,CAAC;AAAA,MACD,WAAW,MAAM;AAAA,MACjB,WAAW,MAAM;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,oBAAC,qBAAkB,KAAW,UAAS;AAChD;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TextMessagePartProvider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/TextMessagePartProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;
|
1
|
+
{"version":3,"file":"TextMessagePartProvider.d.ts","sourceRoot":"","sources":["../../../src/context/providers/TextMessagePartProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAqCjE,eAAO,MAAM,uBAAuB,EAAE,EAAE,CACtC,iBAAiB,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC,CAkBH,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/context/providers/TextMessagePartProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantProvider,\n AssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport {\n MessagePartClientApi,\n MessagePartClientState,\n} from \"../../client/types/Part\";\nimport { resource, tapMemo } from \"@assistant-ui/tap\";\nimport { useResource } from \"@assistant-ui/tap/react\";\nimport { asStore, tapApi } from \"../../utils/tap-store\";\n\nconst TextMessagePartClient = resource(\n ({ text, isRunning }: { text: string; isRunning: boolean }) => {\n const state = tapMemo<MessagePartClientState>(\n () => ({\n type: \"text\",\n text,\n status: isRunning ? { type: \"running\" } : { type: \"complete\" },\n }),\n [text, isRunning],\n );\n\n return tapApi<MessagePartClientApi>({\n getState: () => state,\n addToolResult: () => {\n throw new Error(\"Not supported\");\n },\n
|
1
|
+
{"version":3,"sources":["../../../src/context/providers/TextMessagePartProvider.tsx"],"sourcesContent":["\"use client\";\n\nimport { useMemo, type FC, type PropsWithChildren } from \"react\";\nimport {\n AssistantProvider,\n AssistantApi,\n createAssistantApiField,\n} from \"../react/AssistantApiContext\";\nimport {\n MessagePartClientApi,\n MessagePartClientState,\n} from \"../../client/types/Part\";\nimport { resource, tapMemo } from \"@assistant-ui/tap\";\nimport { useResource } from \"@assistant-ui/tap/react\";\nimport { asStore, tapApi } from \"../../utils/tap-store\";\n\nconst TextMessagePartClient = resource(\n ({ text, isRunning }: { text: string; isRunning: boolean }) => {\n const state = tapMemo<MessagePartClientState>(\n () => ({\n type: \"text\",\n text,\n status: isRunning ? { type: \"running\" } : { type: \"complete\" },\n }),\n [text, isRunning],\n );\n\n return tapApi<MessagePartClientApi>({\n getState: () => state,\n addToolResult: () => {\n throw new Error(\"Not supported\");\n },\n resumeToolCall: () => {\n throw new Error(\"Not supported\");\n },\n });\n },\n);\n\nexport const TextMessagePartProvider: FC<\n PropsWithChildren<{\n text: string;\n isRunning?: boolean;\n }>\n> = ({ text, isRunning = false, children }) => {\n const store = useResource(\n asStore(TextMessagePartClient({ text, isRunning })),\n );\n const api = useMemo(() => {\n return {\n part: createAssistantApiField({\n source: \"root\",\n query: {},\n get: () => store.getState().api,\n }),\n subscribe: store.subscribe,\n flushSync: store.flushSync,\n } satisfies Partial<AssistantApi>;\n }, [store]);\n\n return <AssistantProvider api={api}>{children}</AssistantProvider>;\n};\n"],"mappings":";;;AAEA,SAAS,eAAgD;AACzD;AAAA,EACE;AAAA,EAEA;AAAA,OACK;AAKP,SAAS,UAAU,eAAe;AAClC,SAAS,mBAAmB;AAC5B,SAAS,SAAS,cAAc;AA8CvB;AA5CT,IAAM,wBAAwB;AAAA,EAC5B,CAAC,EAAE,MAAM,UAAU,MAA4C;AAC7D,UAAM,QAAQ;AAAA,MACZ,OAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,QACA,QAAQ,YAAY,EAAE,MAAM,UAAU,IAAI,EAAE,MAAM,WAAW;AAAA,MAC/D;AAAA,MACA,CAAC,MAAM,SAAS;AAAA,IAClB;AAEA,WAAO,OAA6B;AAAA,MAClC,UAAU,MAAM;AAAA,MAChB,eAAe,MAAM;AACnB,cAAM,IAAI,MAAM,eAAe;AAAA,MACjC;AAAA,MACA,gBAAgB,MAAM;AACpB,cAAM,IAAI,MAAM,eAAe;AAAA,MACjC;AAAA,IACF,CAAC;AAAA,EACH;AACF;AAEO,IAAM,0BAKT,CAAC,EAAE,MAAM,YAAY,OAAO,SAAS,MAAM;AAC7C,QAAM,QAAQ;AAAA,IACZ,QAAQ,sBAAsB,EAAE,MAAM,UAAU,CAAC,CAAC;AAAA,EACpD;AACA,QAAM,MAAM,QAAQ,MAAM;AACxB,WAAO;AAAA,MACL,MAAM,wBAAwB;AAAA,QAC5B,QAAQ;AAAA,QACR,OAAO,CAAC;AAAA,QACR,KAAK,MAAM,MAAM,SAAS,EAAE;AAAA,MAC9B,CAAC;AAAA,MACD,WAAW,MAAM;AAAA,MACjB,WAAW,MAAM;AAAA,IACnB;AAAA,EACF,GAAG,CAAC,KAAK,CAAC;AAEV,SAAO,oBAAC,qBAAkB,KAAW,UAAS;AAChD;","names":[]}
|
@@ -10,6 +10,7 @@ import { Unsubscribe } from "@assistant-ui/tap";
|
|
10
10
|
import { ModelContextProvider } from "../../model-context";
|
11
11
|
import { AssistantEvent, AssistantEventCallback, AssistantEventSelector } from "../../types/EventTypes";
|
12
12
|
import { ThreadListClientApi, ThreadListClientState } from "../../client/types/ThreadList";
|
13
|
+
import { AssistantClientProps } from "../../client/AssistantClient";
|
13
14
|
export type AssistantState = {
|
14
15
|
readonly threads: ThreadListClientState;
|
15
16
|
readonly toolUIs: ToolUIState;
|
@@ -101,7 +102,8 @@ export declare const createAssistantApiField: <TApi, TMeta extends {
|
|
101
102
|
source: null;
|
102
103
|
query: Record<string, never>;
|
103
104
|
})) => AssistantApiField<TApi, TMeta>;
|
104
|
-
export declare
|
105
|
+
export declare function useAssistantApi(): AssistantApi;
|
106
|
+
export declare function useAssistantApi(config: AssistantClientProps): AssistantApi;
|
105
107
|
export declare const AssistantProvider: FC<PropsWithChildren<{
|
106
108
|
api: Partial<AssistantApi>;
|
107
109
|
devToolsVisible?: boolean;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AssistantApiContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/AssistantApiContext.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,EAAE,EACF,iBAAiB,EAIlB,MAAM,OAAO,CAAC;AAEf,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC/E,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACpB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D,OAAO,EACL,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,+BAA+B,CAAC;
|
1
|
+
{"version":3,"file":"AssistantApiContext.d.ts","sourceRoot":"","sources":["../../../src/context/react/AssistantApiContext.tsx"],"names":[],"mappings":"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"}
|
@@ -12,6 +12,9 @@ import {
|
|
12
12
|
} from "../../types/EventTypes.js";
|
13
13
|
import { ThreadViewportProvider } from "../providers/ThreadViewportProvider.js";
|
14
14
|
import { DevToolsProviderApi } from "../../devtools/DevToolsHooks.js";
|
15
|
+
import {
|
16
|
+
useAssistantClient
|
17
|
+
} from "../../client/AssistantClient.js";
|
15
18
|
import { jsx } from "react/jsx-runtime";
|
16
19
|
var createAssistantApiField = (config) => {
|
17
20
|
const fn = config.get;
|
@@ -98,14 +101,24 @@ var AssistantApiContext = createContext({
|
|
98
101
|
throw new Error(
|
99
102
|
"Registering model context providers is only available inside <AssistantProvider />"
|
100
103
|
);
|
101
|
-
},
|
102
|
-
__internal_getRuntime: () => {
|
103
|
-
return null;
|
104
104
|
}
|
105
105
|
});
|
106
|
-
var
|
106
|
+
var useAssistantApiImpl = () => {
|
107
107
|
return useContext(AssistantApiContext);
|
108
108
|
};
|
109
|
+
var useExtendedAssistantApiImpl = (config) => {
|
110
|
+
const api = useAssistantApiImpl();
|
111
|
+
const api2 = useAssistantClient(config);
|
112
|
+
const extendedApi = useMemo(() => extendApi(api, api2), [api, api2]);
|
113
|
+
return extendedApi;
|
114
|
+
};
|
115
|
+
function useAssistantApi(config) {
|
116
|
+
if (config) {
|
117
|
+
return useExtendedAssistantApiImpl(config);
|
118
|
+
} else {
|
119
|
+
return useAssistantApiImpl();
|
120
|
+
}
|
121
|
+
}
|
109
122
|
var mergeFns = (fn1, fn2) => {
|
110
123
|
if (fn1 === NO_OP_FN) return fn2;
|
111
124
|
if (fn2 === NO_OP_FN) return fn1;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/context/react/AssistantApiContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useMemo,\n useEffect,\n} from \"react\";\n\nimport { ToolUIApi, ToolUIState, ToolUIMeta } from \"../../client/types/ToolUI\";\nimport {\n MessageClientApi,\n MessageClientState,\n} from \"../../client/types/Message\";\nimport {\n ThreadListItemClientApi,\n ThreadListItemClientState,\n} from \"../../client/types/ThreadListItem\";\nimport {\n MessagePartClientApi,\n MessagePartClientState,\n} from \"../../client/types/Part\";\nimport { ThreadClientApi, ThreadClientState } from \"../../client/types/Thread\";\nimport {\n ComposerClientApi,\n ComposerClientState,\n} from \"../../client/types/Composer\";\nimport {\n AttachmentClientApi,\n AttachmentClientState,\n} from \"../../client/types/Attachment\";\nimport { Unsubscribe } from \"@assistant-ui/tap\";\nimport { ModelContextProvider } from \"../../model-context\";\nimport { AssistantRuntime } from \"../../legacy-runtime/runtime/AssistantRuntime\";\nimport {\n AssistantEvent,\n AssistantEventCallback,\n AssistantEventSelector,\n normalizeEventSelector,\n} from \"../../types/EventTypes\";\nimport {\n ThreadListClientApi,\n ThreadListClientState,\n} from \"../../client/types/ThreadList\";\nimport { ThreadViewportProvider } from \"../providers/ThreadViewportProvider\";\nimport { DevToolsProviderApi } from \"../../devtools/DevToolsHooks\";\n\nexport type AssistantState = {\n readonly threads: ThreadListClientState;\n readonly toolUIs: ToolUIState;\n\n readonly threadListItem: ThreadListItemClientState;\n readonly thread: ThreadClientState;\n readonly composer: ComposerClientState;\n readonly message: MessageClientState;\n readonly part: MessagePartClientState;\n readonly attachment: AttachmentClientState;\n};\n\ntype AssistantApiField<\n TApi,\n TMeta extends { source: string | null; query: any },\n> = (() => TApi) & (TMeta | { source: null; query: Record<string, never> });\n\n// Meta types for each API method\ntype ThreadsMeta = {\n source: \"root\";\n query: Record<string, never>;\n};\n\ntype ThreadListItemMeta = {\n source: \"threads\";\n query:\n | { type: \"index\"; index: number; archived: boolean }\n | { type: \"main\" }\n | { type: \"id\"; id: string };\n};\n\ntype ThreadMeta = {\n source: \"threads\";\n query: { type: \"main\" };\n};\n\ntype ComposerMeta = {\n source: \"message\" | \"thread\";\n query: Record<string, never>;\n};\n\ntype MessageMeta =\n | {\n source: \"thread\";\n query: { type: \"index\"; index: number };\n }\n | {\n source: \"root\";\n query: Record<string, never>;\n };\n\ntype PartMeta = {\n source: \"message\" | \"root\";\n query: { type: \"index\"; index: number } | Record<string, never>;\n};\n\ntype AttachmentMeta = {\n source: \"message\" | \"composer\";\n query: { type: \"index\"; index: number };\n};\n\nexport type AssistantApi = {\n threads: AssistantApiField<ThreadListClientApi, ThreadsMeta>;\n toolUIs: AssistantApiField<ToolUIApi, ToolUIMeta>;\n threadListItem: AssistantApiField<\n ThreadListItemClientApi,\n ThreadListItemMeta\n >;\n thread: AssistantApiField<ThreadClientApi, ThreadMeta>;\n composer: AssistantApiField<ComposerClientApi, ComposerMeta>;\n message: AssistantApiField<MessageClientApi, MessageMeta>;\n part: AssistantApiField<MessagePartClientApi, PartMeta>;\n attachment: AssistantApiField<AttachmentClientApi, AttachmentMeta>;\n\n subscribe(listener: () => void): Unsubscribe;\n flushSync(): void;\n\n on<TEvent extends AssistantEvent>(\n event: AssistantEventSelector<TEvent>,\n callback: AssistantEventCallback<TEvent>,\n ): Unsubscribe;\n\n // temp\n registerModelContextProvider(provider: ModelContextProvider): void;\n /** @internal */\n __internal_getRuntime(): AssistantRuntime | null;\n};\n\nexport const createAssistantApiField = <\n TApi,\n TMeta extends { source: any; query: any },\n>(\n config: {\n get: () => TApi;\n } & (TMeta | { source: null; query: Record<string, never> }),\n): AssistantApiField<TApi, TMeta> => {\n const fn = config.get as AssistantApiField<TApi, TMeta>;\n fn.source = config.source;\n fn.query = config.query;\n return fn;\n};\n\nconst NO_OP_FN = () => () => {};\n\nconst AssistantApiContext = createContext<AssistantApi>({\n threads: createAssistantApiField({\n source: null,\n query: {},\n get: () => {\n throw new Error(\"Threads is only available inside <AssistantProvider />\");\n },\n }),\n toolUIs: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\"ToolUIs is only available inside <AssistantProvider />\");\n },\n }),\n threadListItem: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"ThreadListItem is only available inside <AssistantProvider />\",\n );\n },\n }),\n thread: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\"Thread is only available inside <AssistantProvider />\");\n },\n }),\n composer: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Composer is only available inside <AssistantProvider />\",\n );\n },\n }),\n message: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Message is only available inside <ThreadPrimitive.Messages />\",\n );\n },\n }),\n part: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Part is only available inside <MessagePrimitive.Parts />\",\n );\n },\n }),\n attachment: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Attachment is only available inside <MessagePrimitive.Attachments /> or <ComposerPrimitive.Attachments />\",\n );\n },\n }),\n\n subscribe: NO_OP_FN,\n flushSync: NO_OP_FN,\n on: (selector) => {\n const { scope } = normalizeEventSelector(selector);\n throw new Error(`Event scope is not available in this component: ${scope}`);\n },\n\n registerModelContextProvider: () => {\n throw new Error(\n \"Registering model context providers is only available inside <AssistantProvider />\",\n );\n },\n __internal_getRuntime: () => {\n return null;\n },\n});\n\nexport const useAssistantApi = (): AssistantApi => {\n return useContext(AssistantApiContext);\n};\n\nconst mergeFns = <TArgs extends Array<unknown>>(\n fn1: (...args: TArgs) => void,\n fn2: (...args: TArgs) => void,\n) => {\n if (fn1 === NO_OP_FN) return fn2;\n if (fn2 === NO_OP_FN) return fn1;\n\n return (...args: TArgs) => {\n fn1(...args);\n fn2(...args);\n };\n};\n\nconst mergeFnsWithUnsubscribe = <TArgs extends Array<unknown>>(\n fn1: (...args: TArgs) => Unsubscribe,\n fn2: (...args: TArgs) => Unsubscribe,\n) => {\n if (fn1 === NO_OP_FN) return fn2;\n if (fn2 === NO_OP_FN) return fn1;\n\n return (...args: TArgs) => {\n const unsubscribe1 = fn1(...args);\n const unsubscribe2 = fn2(...args);\n\n return () => {\n unsubscribe1();\n unsubscribe2();\n };\n };\n};\n\nconst extendApi = (\n api: AssistantApi,\n api2: Partial<AssistantApi>,\n): AssistantApi => {\n const api2Subscribe = api2.subscribe;\n const api2FlushSync = api2.flushSync;\n return {\n ...api,\n ...api2,\n subscribe: mergeFnsWithUnsubscribe(\n api.subscribe,\n api2Subscribe ?? NO_OP_FN,\n ),\n flushSync: mergeFns(api.flushSync, api2FlushSync ?? NO_OP_FN),\n };\n};\n\nexport const AssistantProvider: FC<\n PropsWithChildren<{ api: Partial<AssistantApi>; devToolsVisible?: boolean }>\n> = ({ api: api2, children, devToolsVisible = true }) => {\n const api = useAssistantApi();\n const extendedApi = useMemo(() => extendApi(api, api2), [api, api2]);\n\n useEffect(() => {\n if (!devToolsVisible || !api2.subscribe) return undefined;\n return DevToolsProviderApi.register(api2);\n }, [api2, devToolsVisible]);\n\n return (\n <AssistantApiContext.Provider value={extendedApi}>\n {/* TODO temporarily allow accessing viewport state from outside the viewport */}\n {/* TODO figure out if this behavior should be deprecated, since it is quite hacky */}\n <ThreadViewportProvider>{children}</ThreadViewportProvider>\n </AssistantApiContext.Provider>\n );\n};\n"],"mappings":"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","names":[]}
|
1
|
+
{"version":3,"sources":["../../../src/context/react/AssistantApiContext.tsx"],"sourcesContent":["\"use client\";\n\nimport {\n createContext,\n FC,\n PropsWithChildren,\n useContext,\n useMemo,\n useEffect,\n} from \"react\";\n\nimport { ToolUIApi, ToolUIState, ToolUIMeta } from \"../../client/types/ToolUI\";\nimport {\n MessageClientApi,\n MessageClientState,\n} from \"../../client/types/Message\";\nimport {\n ThreadListItemClientApi,\n ThreadListItemClientState,\n} from \"../../client/types/ThreadListItem\";\nimport {\n MessagePartClientApi,\n MessagePartClientState,\n} from \"../../client/types/Part\";\nimport { ThreadClientApi, ThreadClientState } from \"../../client/types/Thread\";\nimport {\n ComposerClientApi,\n ComposerClientState,\n} from \"../../client/types/Composer\";\nimport {\n AttachmentClientApi,\n AttachmentClientState,\n} from \"../../client/types/Attachment\";\nimport { Unsubscribe } from \"@assistant-ui/tap\";\nimport { ModelContextProvider } from \"../../model-context\";\nimport { AssistantRuntime } from \"../../legacy-runtime/runtime/AssistantRuntime\";\nimport {\n AssistantEvent,\n AssistantEventCallback,\n AssistantEventSelector,\n normalizeEventSelector,\n} from \"../../types/EventTypes\";\nimport {\n ThreadListClientApi,\n ThreadListClientState,\n} from \"../../client/types/ThreadList\";\nimport { ThreadViewportProvider } from \"../providers/ThreadViewportProvider\";\nimport { DevToolsProviderApi } from \"../../devtools/DevToolsHooks\";\nimport {\n AssistantClientProps,\n useAssistantClient,\n} from \"../../client/AssistantClient\";\n\nexport type AssistantState = {\n readonly threads: ThreadListClientState;\n readonly toolUIs: ToolUIState;\n\n readonly threadListItem: ThreadListItemClientState;\n readonly thread: ThreadClientState;\n readonly composer: ComposerClientState;\n readonly message: MessageClientState;\n readonly part: MessagePartClientState;\n readonly attachment: AttachmentClientState;\n};\n\ntype AssistantApiField<\n TApi,\n TMeta extends { source: string | null; query: any },\n> = (() => TApi) & (TMeta | { source: null; query: Record<string, never> });\n\n// Meta types for each API method\ntype ThreadsMeta = {\n source: \"root\";\n query: Record<string, never>;\n};\n\ntype ThreadListItemMeta = {\n source: \"threads\";\n query:\n | { type: \"index\"; index: number; archived: boolean }\n | { type: \"main\" }\n | { type: \"id\"; id: string };\n};\n\ntype ThreadMeta = {\n source: \"threads\";\n query: { type: \"main\" };\n};\n\ntype ComposerMeta = {\n source: \"message\" | \"thread\";\n query: Record<string, never>;\n};\n\ntype MessageMeta =\n | {\n source: \"thread\";\n query: { type: \"index\"; index: number };\n }\n | {\n source: \"root\";\n query: Record<string, never>;\n };\n\ntype PartMeta = {\n source: \"message\" | \"root\";\n query: { type: \"index\"; index: number } | Record<string, never>;\n};\n\ntype AttachmentMeta = {\n source: \"message\" | \"composer\";\n query: { type: \"index\"; index: number };\n};\n\nexport type AssistantApi = {\n threads: AssistantApiField<ThreadListClientApi, ThreadsMeta>;\n toolUIs: AssistantApiField<ToolUIApi, ToolUIMeta>;\n threadListItem: AssistantApiField<\n ThreadListItemClientApi,\n ThreadListItemMeta\n >;\n thread: AssistantApiField<ThreadClientApi, ThreadMeta>;\n composer: AssistantApiField<ComposerClientApi, ComposerMeta>;\n message: AssistantApiField<MessageClientApi, MessageMeta>;\n part: AssistantApiField<MessagePartClientApi, PartMeta>;\n attachment: AssistantApiField<AttachmentClientApi, AttachmentMeta>;\n\n subscribe(listener: () => void): Unsubscribe;\n flushSync(): void;\n\n on<TEvent extends AssistantEvent>(\n event: AssistantEventSelector<TEvent>,\n callback: AssistantEventCallback<TEvent>,\n ): Unsubscribe;\n\n // temp\n registerModelContextProvider(provider: ModelContextProvider): void;\n /** @internal */\n __internal_getRuntime?(): AssistantRuntime;\n};\n\nexport const createAssistantApiField = <\n TApi,\n TMeta extends { source: any; query: any },\n>(\n config: {\n get: () => TApi;\n } & (TMeta | { source: null; query: Record<string, never> }),\n): AssistantApiField<TApi, TMeta> => {\n const fn = config.get as AssistantApiField<TApi, TMeta>;\n fn.source = config.source;\n fn.query = config.query;\n return fn;\n};\n\nconst NO_OP_FN = () => () => {};\n\nconst AssistantApiContext = createContext<AssistantApi>({\n threads: createAssistantApiField({\n source: null,\n query: {},\n get: () => {\n throw new Error(\"Threads is only available inside <AssistantProvider />\");\n },\n }),\n toolUIs: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\"ToolUIs is only available inside <AssistantProvider />\");\n },\n }),\n threadListItem: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"ThreadListItem is only available inside <AssistantProvider />\",\n );\n },\n }),\n thread: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\"Thread is only available inside <AssistantProvider />\");\n },\n }),\n composer: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Composer is only available inside <AssistantProvider />\",\n );\n },\n }),\n message: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Message is only available inside <ThreadPrimitive.Messages />\",\n );\n },\n }),\n part: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Part is only available inside <MessagePrimitive.Parts />\",\n );\n },\n }),\n attachment: createAssistantApiField({\n source: null,\n query: {},\n get: (): never => {\n throw new Error(\n \"Attachment is only available inside <MessagePrimitive.Attachments /> or <ComposerPrimitive.Attachments />\",\n );\n },\n }),\n\n subscribe: NO_OP_FN,\n flushSync: NO_OP_FN,\n on: (selector) => {\n const { scope } = normalizeEventSelector(selector);\n throw new Error(`Event scope is not available in this component: ${scope}`);\n },\n\n registerModelContextProvider: () => {\n throw new Error(\n \"Registering model context providers is only available inside <AssistantProvider />\",\n );\n },\n});\n\nconst useAssistantApiImpl = (): AssistantApi => {\n return useContext(AssistantApiContext);\n};\n\nconst useExtendedAssistantApiImpl = (\n config: AssistantClientProps,\n): AssistantApi => {\n const api = useAssistantApiImpl();\n const api2 = useAssistantClient(config);\n const extendedApi = useMemo(() => extendApi(api, api2), [api, api2]);\n return extendedApi;\n};\n\nexport function useAssistantApi(): AssistantApi;\nexport function useAssistantApi(config: AssistantClientProps): AssistantApi;\nexport function useAssistantApi(config?: AssistantClientProps): AssistantApi {\n if (config) {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useExtendedAssistantApiImpl(config);\n } else {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return useAssistantApiImpl();\n }\n}\n\nconst mergeFns = <TArgs extends Array<unknown>>(\n fn1: (...args: TArgs) => void,\n fn2: (...args: TArgs) => void,\n) => {\n if (fn1 === NO_OP_FN) return fn2;\n if (fn2 === NO_OP_FN) return fn1;\n\n return (...args: TArgs) => {\n fn1(...args);\n fn2(...args);\n };\n};\n\nconst mergeFnsWithUnsubscribe = <TArgs extends Array<unknown>>(\n fn1: (...args: TArgs) => Unsubscribe,\n fn2: (...args: TArgs) => Unsubscribe,\n) => {\n if (fn1 === NO_OP_FN) return fn2;\n if (fn2 === NO_OP_FN) return fn1;\n\n return (...args: TArgs) => {\n const unsubscribe1 = fn1(...args);\n const unsubscribe2 = fn2(...args);\n\n return () => {\n unsubscribe1();\n unsubscribe2();\n };\n };\n};\n\nconst extendApi = (\n api: AssistantApi,\n api2: Partial<AssistantApi>,\n): AssistantApi => {\n const api2Subscribe = api2.subscribe;\n const api2FlushSync = api2.flushSync;\n return {\n ...api,\n ...api2,\n subscribe: mergeFnsWithUnsubscribe(\n api.subscribe,\n api2Subscribe ?? NO_OP_FN,\n ),\n flushSync: mergeFns(api.flushSync, api2FlushSync ?? NO_OP_FN),\n };\n};\n\nexport const AssistantProvider: FC<\n PropsWithChildren<{ api: Partial<AssistantApi>; devToolsVisible?: boolean }>\n> = ({ api: api2, children, devToolsVisible = true }) => {\n const api = useAssistantApi();\n const extendedApi = useMemo(() => extendApi(api, api2), [api, api2]);\n\n useEffect(() => {\n if (!devToolsVisible || !api2.subscribe) return undefined;\n return DevToolsProviderApi.register(api2);\n }, [api2, devToolsVisible]);\n\n return (\n <AssistantApiContext.Provider value={extendedApi}>\n {/* TODO temporarily allow accessing viewport state from outside the viewport */}\n {/* TODO figure out if this behavior should be deprecated, since it is quite hacky */}\n <ThreadViewportProvider>{children}</ThreadViewportProvider>\n </AssistantApiContext.Provider>\n );\n};\n"],"mappings":"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","names":[]}
|
package/dist/index.d.ts
CHANGED
@@ -7,4 +7,6 @@ export * from "./primitives";
|
|
7
7
|
export * from "./types";
|
8
8
|
export * from "./devtools";
|
9
9
|
export * as INTERNAL from "./internal";
|
10
|
+
export type { ToolExecutionStatus } from "./internal";
|
11
|
+
export type { Assistant } from "./augmentations";
|
10
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAE/C,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAE3B,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC"}
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAC;AACzC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gCAAgC,CAAC;AAE/C,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAE3B,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,YAAY,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./legacy-runtime/runtime\";\nexport * from \"./legacy-runtime/cloud\";\nexport * from \"./legacy-runtime/runtime-cores\";\n\nexport * from \"./context\";\nexport * from \"./model-context\";\nexport * from \"./primitives\";\nexport * from \"./types\";\nexport * from \"./devtools\";\n\nexport * as INTERNAL from \"./internal\";\n"],"mappings":";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,YAAY,cAAc;","names":[]}
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from \"./legacy-runtime/runtime\";\nexport * from \"./legacy-runtime/cloud\";\nexport * from \"./legacy-runtime/runtime-cores\";\n\nexport * from \"./context\";\nexport * from \"./model-context\";\nexport * from \"./primitives\";\nexport * from \"./types\";\nexport * from \"./devtools\";\n\nexport * as INTERNAL from \"./internal\";\nexport type { ToolExecutionStatus } from \"./internal\";\n\nexport type { Assistant } from \"./augmentations\";\n"],"mappings":";AAAA,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,YAAY,cAAc;","names":[]}
|
package/dist/internal.d.ts
CHANGED
@@ -10,5 +10,6 @@ export { ThreadRuntimeImpl, type ThreadRuntimeCoreBinding, type ThreadListItemRu
|
|
10
10
|
export { fromThreadMessageLike } from "./legacy-runtime/runtime-cores/external-store/ThreadMessageLike";
|
11
11
|
export { getAutoStatus } from "./legacy-runtime/runtime-cores/external-store/auto-status";
|
12
12
|
export { splitLocalRuntimeOptions } from "./legacy-runtime/runtime-cores/local/LocalRuntimeOptions";
|
13
|
+
export { useToolInvocations, type ToolExecutionStatus, } from "./legacy-runtime/runtime-cores/assistant-transport/useToolInvocations";
|
13
14
|
export * from "./utils/smooth";
|
14
15
|
//# sourceMappingURL=internal.d.ts.map
|
package/dist/internal.d.ts.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,YAAY,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAC;AACvG,OAAO,EAAE,gCAAgC,EAAE,MAAM,0EAA0E,CAAC;AAC5H,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wDAAwD,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,GAClC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iEAAiE,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../src/internal.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC/F,YAAY,EAAE,qBAAqB,EAAE,MAAM,2DAA2D,CAAC;AACvG,OAAO,EAAE,gCAAgC,EAAE,MAAM,0EAA0E,CAAC;AAC5H,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,wDAAwD,CAAC;AAC3F,OAAO,EAAE,wBAAwB,EAAE,MAAM,8DAA8D,CAAC;AACxG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,EAC7B,KAAK,4BAA4B,GAClC,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,iEAAiE,CAAC;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,2DAA2D,CAAC;AAC1F,OAAO,EAAE,wBAAwB,EAAE,MAAM,0DAA0D,CAAC;AACpG,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,uEAAuE,CAAC;AAE/E,cAAc,gBAAgB,CAAC"}
|
package/dist/internal.js
CHANGED
@@ -11,6 +11,9 @@ import {
|
|
11
11
|
import { fromThreadMessageLike } from "./legacy-runtime/runtime-cores/external-store/ThreadMessageLike.js";
|
12
12
|
import { getAutoStatus } from "./legacy-runtime/runtime-cores/external-store/auto-status.js";
|
13
13
|
import { splitLocalRuntimeOptions } from "./legacy-runtime/runtime-cores/local/LocalRuntimeOptions.js";
|
14
|
+
import {
|
15
|
+
useToolInvocations
|
16
|
+
} from "./legacy-runtime/runtime-cores/assistant-transport/useToolInvocations.js";
|
14
17
|
export * from "./utils/smooth/index.js";
|
15
18
|
export {
|
16
19
|
AssistantRuntimeImpl,
|
@@ -22,6 +25,7 @@ export {
|
|
22
25
|
fromThreadMessageLike,
|
23
26
|
generateId,
|
24
27
|
getAutoStatus,
|
25
|
-
splitLocalRuntimeOptions
|
28
|
+
splitLocalRuntimeOptions,
|
29
|
+
useToolInvocations
|
26
30
|
};
|
27
31
|
//# sourceMappingURL=internal.js.map
|
package/dist/internal.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../src/internal.ts"],"sourcesContent":["export type { ThreadRuntimeCore } from \"./legacy-runtime/runtime-cores/core/ThreadRuntimeCore\";\nexport type { ThreadListRuntimeCore } from \"./legacy-runtime/runtime-cores/core/ThreadListRuntimeCore\";\nexport { DefaultThreadComposerRuntimeCore } from \"./legacy-runtime/runtime-cores/composer/DefaultThreadComposerRuntimeCore\";\nexport { CompositeContextProvider } from \"./utils/CompositeContextProvider\";\nexport { MessageRepository } from \"./legacy-runtime/runtime-cores/utils/MessageRepository\";\nexport { BaseAssistantRuntimeCore } from \"./legacy-runtime/runtime-cores/core/BaseAssistantRuntimeCore\";\nexport { generateId } from \"./utils/idUtils\";\nexport { AssistantRuntimeImpl } from \"./legacy-runtime/runtime/AssistantRuntime\";\nexport {\n ThreadRuntimeImpl,\n type ThreadRuntimeCoreBinding,\n type ThreadListItemRuntimeBinding,\n} from \"./legacy-runtime/runtime/ThreadRuntime\";\nexport { fromThreadMessageLike } from \"./legacy-runtime/runtime-cores/external-store/ThreadMessageLike\";\nexport { getAutoStatus } from \"./legacy-runtime/runtime-cores/external-store/auto-status\";\nexport { splitLocalRuntimeOptions } from \"./legacy-runtime/runtime-cores/local/LocalRuntimeOptions\";\n\nexport * from \"./utils/smooth\";\n"],"mappings":";AAEA,SAAS,wCAAwC;AACjD,SAAS,gCAAgC;AACzC,SAAS,yBAAyB;AAClC,SAAS,gCAAgC;AACzC,SAAS,kBAAkB;AAC3B,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,OAGK;AACP,SAAS,6BAA6B;AACtC,SAAS,qBAAqB;AAC9B,SAAS,gCAAgC;
|
1
|
+
{"version":3,"sources":["../src/internal.ts"],"sourcesContent":["export type { ThreadRuntimeCore } from \"./legacy-runtime/runtime-cores/core/ThreadRuntimeCore\";\nexport type { ThreadListRuntimeCore } from \"./legacy-runtime/runtime-cores/core/ThreadListRuntimeCore\";\nexport { DefaultThreadComposerRuntimeCore } from \"./legacy-runtime/runtime-cores/composer/DefaultThreadComposerRuntimeCore\";\nexport { CompositeContextProvider } from \"./utils/CompositeContextProvider\";\nexport { MessageRepository } from \"./legacy-runtime/runtime-cores/utils/MessageRepository\";\nexport { BaseAssistantRuntimeCore } from \"./legacy-runtime/runtime-cores/core/BaseAssistantRuntimeCore\";\nexport { generateId } from \"./utils/idUtils\";\nexport { AssistantRuntimeImpl } from \"./legacy-runtime/runtime/AssistantRuntime\";\nexport {\n ThreadRuntimeImpl,\n type ThreadRuntimeCoreBinding,\n type ThreadListItemRuntimeBinding,\n} from \"./legacy-runtime/runtime/ThreadRuntime\";\nexport { fromThreadMessageLike } from \"./legacy-runtime/runtime-cores/external-store/ThreadMessageLike\";\nexport { getAutoStatus } from \"./legacy-runtime/runtime-cores/external-store/auto-status\";\nexport { splitLocalRuntimeOptions } from \"./legacy-runtime/runtime-cores/local/LocalRuntimeOptions\";\nexport {\n useToolInvocations,\n type ToolExecutionStatus,\n} from \"./legacy-runtime/runtime-cores/assistant-transport/useToolInvocations\";\n\nexport * from \"./utils/smooth\";\n"],"mappings":";AAEA,SAAS,wCAAwC;AACjD,SAAS,gCAAgC;AACzC,SAAS,yBAAyB;AAClC,SAAS,gCAAgC;AACzC,SAAS,kBAAkB;AAC3B,SAAS,4BAA4B;AACrC;AAAA,EACE;AAAA,OAGK;AACP,SAAS,6BAA6B;AACtC,SAAS,qBAAqB;AAC9B,SAAS,gCAAgC;AACzC;AAAA,EACE;AAAA,OAEK;AAEP,cAAc;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"MessagePartRuntimeClient.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/client/MessagePartRuntimeClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,eAAO,MAAM,iBAAiB;;;;;aACH,kBAAkB;
|
1
|
+
{"version":3,"file":"MessagePartRuntimeClient.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/client/MessagePartRuntimeClient.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,eAAO,MAAM,iBAAiB;;;;;aACH,kBAAkB;EAkB5C,CAAC"}
|
@@ -5,16 +5,15 @@ import { tapSubscribable } from "../util-hooks/tapSubscribable.js";
|
|
5
5
|
var MessagePartClient = resource(
|
6
6
|
({ runtime }) => {
|
7
7
|
const runtimeState = tapSubscribable(runtime);
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
);
|
8
|
+
const api = {
|
9
|
+
getState: () => runtimeState,
|
10
|
+
addToolResult: (result) => runtime.addToolResult(result),
|
11
|
+
resumeToolCall: (payload) => runtime.resumeToolCall(payload),
|
12
|
+
__internal_getRuntime: () => runtime
|
13
|
+
};
|
14
|
+
return tapApi(api, {
|
15
|
+
key: runtimeState.type === "tool-call" ? "toolCallId-" + runtimeState.toolCallId : void 0
|
16
|
+
});
|
18
17
|
}
|
19
18
|
);
|
20
19
|
export {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy-runtime/client/MessagePartRuntimeClient.ts"],"sourcesContent":["import { resource } from \"@assistant-ui/tap\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { MessagePartRuntime } from \"../runtime/MessagePartRuntime\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { MessagePartClientApi } from \"../../client/types/Part\";\nexport const MessagePartClient = resource(\n ({ runtime }: { runtime: MessagePartRuntime }) => {\n const runtimeState = tapSubscribable(runtime);\n\n
|
1
|
+
{"version":3,"sources":["../../../src/legacy-runtime/client/MessagePartRuntimeClient.ts"],"sourcesContent":["import { resource } from \"@assistant-ui/tap\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { MessagePartRuntime } from \"../runtime/MessagePartRuntime\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { MessagePartClientApi } from \"../../client/types/Part\";\nexport const MessagePartClient = resource(\n ({ runtime }: { runtime: MessagePartRuntime }) => {\n const runtimeState = tapSubscribable(runtime);\n\n const api: MessagePartClientApi = {\n getState: () => runtimeState,\n\n addToolResult: (result) => runtime.addToolResult(result),\n resumeToolCall: (payload) => runtime.resumeToolCall(payload),\n __internal_getRuntime: () => runtime,\n };\n\n return tapApi<MessagePartClientApi>(api, {\n key:\n runtimeState.type === \"tool-call\"\n ? \"toolCallId-\" + runtimeState.toolCallId\n : undefined,\n });\n },\n);\n"],"mappings":";AAAA,SAAS,gBAAgB;AACzB,SAAS,cAAc;AAEvB,SAAS,uBAAuB;AAEzB,IAAM,oBAAoB;AAAA,EAC/B,CAAC,EAAE,QAAQ,MAAuC;AAChD,UAAM,eAAe,gBAAgB,OAAO;AAE5C,UAAM,MAA4B;AAAA,MAChC,UAAU,MAAM;AAAA,MAEhB,eAAe,CAAC,WAAW,QAAQ,cAAc,MAAM;AAAA,MACvD,gBAAgB,CAAC,YAAY,QAAQ,eAAe,OAAO;AAAA,MAC3D,uBAAuB,MAAM;AAAA,IAC/B;AAEA,WAAO,OAA6B,KAAK;AAAA,MACvC,KACE,aAAa,SAAS,cAClB,gBAAgB,aAAa,aAC7B;AAAA,IACR,CAAC;AAAA,EACH;AACF;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ThreadRuntimeClient.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/client/ThreadRuntimeClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAezD,OAAO,EAAqB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAuB/E,eAAO,MAAM,YAAY;;;;;aACE,aAAa;
|
1
|
+
{"version":3,"file":"ThreadRuntimeClient.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/client/ThreadRuntimeClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAezD,OAAO,EAAqB,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAuB/E,eAAO,MAAM,YAAY;;;;;aACE,aAAa;EAyGvC,CAAC"}
|
@@ -99,6 +99,12 @@ var ThreadClient = resource(
|
|
99
99
|
import: runtime.import,
|
100
100
|
reset: runtime.reset,
|
101
101
|
stopSpeaking: runtime.stopSpeaking,
|
102
|
+
startVoice: async () => {
|
103
|
+
throw new Error("startVoice is not supported in this runtime");
|
104
|
+
},
|
105
|
+
stopVoice: async () => {
|
106
|
+
throw new Error("stopVoice is not supported in this runtime");
|
107
|
+
},
|
102
108
|
message: (selector) => {
|
103
109
|
if ("id" in selector) {
|
104
110
|
return messages.api({ key: selector.id });
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy-runtime/client/ThreadRuntimeClient.ts"],"sourcesContent":["import { ThreadRuntimeEventType } from \"../runtime-cores/core/ThreadRuntimeCore\";\nimport { ThreadRuntime } from \"../runtime/ThreadRuntime\";\nimport {\n resource,\n tapInlineResource,\n tapMemo,\n tapEffect,\n RefObject,\n} from \"@assistant-ui/tap\";\nimport { ComposerClient } from \"./ComposerRuntimeClient\";\nimport { MessageClient } from \"./MessageRuntimeClient\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { tapLookupResources } from \"../../client/util-hooks/tapLookupResources\";\nimport { Unsubscribe } from \"../../types\";\nimport { tapEvents } from \"../../client/EventContext\";\nimport { ThreadClientState, ThreadClientApi } from \"../../client/types/Thread\";\n\nconst MessageClientById = resource(\n ({\n runtime,\n id,\n threadIdRef,\n }: {\n runtime: ThreadRuntime;\n id: string;\n threadIdRef: RefObject<string>;\n }) => {\n const messageRuntime = tapMemo(\n () => runtime.getMessageById(id),\n [runtime, id],\n );\n\n return tapInlineResource(\n MessageClient({ runtime: messageRuntime, threadIdRef }),\n );\n },\n);\n\nexport const ThreadClient = resource(\n ({ runtime }: { runtime: ThreadRuntime }) => {\n const runtimeState = tapSubscribable(runtime);\n\n const events = tapEvents();\n\n // Bind thread events to event manager\n tapEffect(() => {\n const unsubscribers: Unsubscribe[] = [];\n\n // Subscribe to thread events\n const threadEvents: ThreadRuntimeEventType[] = [\n \"run-start\",\n \"run-end\",\n \"initialize\",\n \"model-context-update\",\n ];\n\n for (const event of threadEvents) {\n const unsubscribe = runtime.unstable_on(event, () => {\n const threadId = runtime.getState()?.threadId || \"unknown\";\n events.emit(`thread.${event}`, {\n threadId,\n });\n });\n unsubscribers.push(unsubscribe);\n }\n\n return () => {\n for (const unsub of unsubscribers) unsub();\n };\n }, [runtime]);\n\n const threadIdRef = tapMemo(\n () => ({\n get current() {\n return runtime.getState()!.threadId;\n },\n }),\n [runtime],\n );\n\n const composer = tapInlineResource(\n ComposerClient({\n runtime: runtime.composer,\n threadIdRef,\n }),\n );\n\n const messages = tapLookupResources(\n runtimeState.messages.map((m) =>\n MessageClientById(\n { runtime: runtime, id: m.id, threadIdRef },\n { key: m.id },\n ),\n ),\n );\n\n const state = tapMemo<ThreadClientState>(() => {\n return {\n isDisabled: runtimeState.isDisabled,\n isLoading: runtimeState.isLoading,\n isRunning: runtimeState.isRunning,\n capabilities: runtimeState.capabilities,\n state: runtimeState.state,\n suggestions: runtimeState.suggestions,\n extras: runtimeState.extras,\n speech: runtimeState.speech,\n\n composer: composer.state,\n messages: messages.state,\n };\n }, [runtimeState, messages, composer.state]);\n\n return tapApi<ThreadClientApi>({\n getState: () => state,\n\n composer: composer.api,\n\n append: runtime.append,\n startRun: runtime.startRun,\n unstable_resumeRun: runtime.unstable_resumeRun,\n cancelRun: runtime.cancelRun,\n getModelContext: runtime.getModelContext,\n export: runtime.export,\n import: runtime.import,\n reset: runtime.reset,\n stopSpeaking: runtime.stopSpeaking,\n\n message: (selector) => {\n if (\"id\" in selector) {\n return messages.api({ key: selector.id });\n } else {\n return messages.api(selector);\n }\n },\n\n __internal_getRuntime: () => runtime,\n });\n },\n);\n"],"mappings":";AAEA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;AACP,SAAS,sBAAsB;AAC/B,SAAS,qBAAqB;AAC9B,SAAS,uBAAuB;AAChC,SAAS,cAAc;AACvB,SAAS,0BAA0B;AAEnC,SAAS,iBAAiB;AAG1B,IAAM,oBAAoB;AAAA,EACxB,CAAC;AAAA,IACC;AAAA,IACA;AAAA,IACA;AAAA,EACF,MAIM;AACJ,UAAM,iBAAiB;AAAA,MACrB,MAAM,QAAQ,eAAe,EAAE;AAAA,MAC/B,CAAC,SAAS,EAAE;AAAA,IACd;AAEA,WAAO;AAAA,MACL,cAAc,EAAE,SAAS,gBAAgB,YAAY,CAAC;AAAA,IACxD;AAAA,EACF;AACF;AAEO,IAAM,eAAe;AAAA,EAC1B,CAAC,EAAE,QAAQ,MAAkC;AAC3C,UAAM,eAAe,gBAAgB,OAAO;AAE5C,UAAM,SAAS,UAAU;AAGzB,cAAU,MAAM;AACd,YAAM,gBAA+B,CAAC;AAGtC,YAAM,eAAyC;AAAA,QAC7C;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,MACF;AAEA,iBAAW,SAAS,cAAc;AAChC,cAAM,cAAc,QAAQ,YAAY,OAAO,MAAM;AACnD,gBAAM,WAAW,QAAQ,SAAS,GAAG,YAAY;AACjD,iBAAO,KAAK,UAAU,KAAK,IAAI;AAAA,YAC7B;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AACD,sBAAc,KAAK,WAAW;AAAA,MAChC;AAEA,aAAO,MAAM;AACX,mBAAW,SAAS,cAAe,OAAM;AAAA,MAC3C;AAAA,IACF,GAAG,CAAC,OAAO,CAAC;AAEZ,UAAM,cAAc;AAAA,MAClB,OAAO;AAAA,QACL,IAAI,UAAU;AACZ,iBAAO,QAAQ,SAAS,EAAG;AAAA,QAC7B;AAAA,MACF;AAAA,MACA,CAAC,OAAO;AAAA,IACV;AAEA,UAAM,WAAW;AAAA,MACf,eAAe;AAAA,QACb,SAAS,QAAQ;AAAA,QACjB;AAAA,MACF,CAAC;AAAA,IACH;AAEA,UAAM,WAAW;AAAA,MACf,aAAa,SAAS;AAAA,QAAI,CAAC,MACzB;AAAA,UACE,EAAE,SAAkB,IAAI,EAAE,IAAI,YAAY;AAAA,UAC1C,EAAE,KAAK,EAAE,GAAG;AAAA,QACd;AAAA,MACF;AAAA,IACF;AAEA,UAAM,QAAQ,QAA2B,MAAM;AAC7C,aAAO;AAAA,QACL,YAAY,aAAa;AAAA,QACzB,WAAW,aAAa;AAAA,QACxB,WAAW,aAAa;AAAA,QACxB,cAAc,aAAa;AAAA,QAC3B,OAAO,aAAa;AAAA,QACpB,aAAa,aAAa;AAAA,QAC1B,QAAQ,aAAa;AAAA,QACrB,QAAQ,aAAa;AAAA,QAErB,UAAU,SAAS;AAAA,QACnB,UAAU,SAAS;AAAA,MACrB;AAAA,IACF,GAAG,CAAC,cAAc,UAAU,SAAS,KAAK,CAAC;AAE3C,WAAO,OAAwB;AAAA,MAC7B,UAAU,MAAM;AAAA,MAEhB,UAAU,SAAS;AAAA,MAEnB,QAAQ,QAAQ;AAAA,MAChB,UAAU,QAAQ;AAAA,MAClB,oBAAoB,QAAQ;AAAA,MAC5B,WAAW,QAAQ;AAAA,MACnB,iBAAiB,QAAQ;AAAA,MACzB,QAAQ,QAAQ;AAAA,MAChB,QAAQ,QAAQ;AAAA,MAChB,OAAO,QAAQ;AAAA,MACf,cAAc,QAAQ;AAAA,
|
1
|
+
{"version":3,"sources":["../../../src/legacy-runtime/client/ThreadRuntimeClient.ts"],"sourcesContent":["import { ThreadRuntimeEventType } from \"../runtime-cores/core/ThreadRuntimeCore\";\nimport { ThreadRuntime } from \"../runtime/ThreadRuntime\";\nimport {\n resource,\n tapInlineResource,\n tapMemo,\n tapEffect,\n RefObject,\n} from \"@assistant-ui/tap\";\nimport { ComposerClient } from \"./ComposerRuntimeClient\";\nimport { MessageClient } from \"./MessageRuntimeClient\";\nimport { tapSubscribable } from \"../util-hooks/tapSubscribable\";\nimport { tapApi } from \"../../utils/tap-store\";\nimport { tapLookupResources } from \"../../client/util-hooks/tapLookupResources\";\nimport { Unsubscribe } from \"../../types\";\nimport { tapEvents } from \"../../client/EventContext\";\nimport { ThreadClientState, ThreadClientApi } from \"../../client/types/Thread\";\n\nconst MessageClientById = resource(\n ({\n runtime,\n id,\n threadIdRef,\n }: {\n runtime: ThreadRuntime;\n id: string;\n threadIdRef: RefObject<string>;\n }) => {\n const messageRuntime = tapMemo(\n () => runtime.getMessageById(id),\n [runtime, id],\n );\n\n return tapInlineResource(\n MessageClient({ runtime: messageRuntime, threadIdRef }),\n );\n },\n);\n\nexport const ThreadClient = resource(\n ({ runtime }: { runtime: ThreadRuntime }) => {\n const runtimeState = tapSubscribable(runtime);\n\n const events = tapEvents();\n\n // Bind thread events to event manager\n tapEffect(() => {\n const unsubscribers: Unsubscribe[] = [];\n\n // Subscribe to thread events\n const threadEvents: ThreadRuntimeEventType[] = [\n \"run-start\",\n \"run-end\",\n \"initialize\",\n \"model-context-update\",\n ];\n\n for (const event of threadEvents) {\n const unsubscribe = runtime.unstable_on(event, () => {\n const threadId = runtime.getState()?.threadId || \"unknown\";\n events.emit(`thread.${event}`, {\n threadId,\n });\n });\n unsubscribers.push(unsubscribe);\n }\n\n return () => {\n for (const unsub of unsubscribers) unsub();\n };\n }, [runtime]);\n\n const threadIdRef = tapMemo(\n () => ({\n get current() {\n return runtime.getState()!.threadId;\n },\n }),\n [runtime],\n );\n\n const composer = tapInlineResource(\n ComposerClient({\n runtime: runtime.composer,\n threadIdRef,\n }),\n );\n\n const messages = tapLookupResources(\n runtimeState.messages.map((m) =>\n MessageClientById(\n { runtime: runtime, id: m.id, threadIdRef },\n { key: m.id },\n ),\n ),\n );\n\n const state = tapMemo<ThreadClientState>(() => {\n return {\n isDisabled: runtimeState.isDisabled,\n isLoading: runtimeState.isLoading,\n isRunning: runtimeState.isRunning,\n capabilities: runtimeState.capabilities,\n state: runtimeState.state,\n suggestions: runtimeState.suggestions,\n extras: runtimeState.extras,\n speech: runtimeState.speech,\n\n composer: composer.state,\n messages: messages.state,\n };\n }, [runtimeState, messages, composer.state]);\n\n return tapApi<ThreadClientApi>({\n getState: () => state,\n\n composer: composer.api,\n\n append: runtime.append,\n startRun: runtime.startRun,\n unstable_resumeRun: runtime.unstable_resumeRun,\n cancelRun: runtime.cancelRun,\n getModelContext: runtime.getModelContext,\n export: runtime.export,\n import: runtime.import,\n reset: runtime.reset,\n stopSpeaking: runtime.stopSpeaking,\n startVoice: async () => {\n throw new Error(\"startVoice is not supported in this runtime\");\n },\n stopVoice: async () => {\n throw new Error(\"stopVoice is not supported in this runtime\");\n },\n\n message: (selector) => {\n if (\"id\" in selector) {\n return messages.api({ key: selector.id });\n } else {\n return messages.api(selector);\n }\n },\n\n __internal_getRuntime: () => runtime,\n });\n },\n);\n"],"mappings":"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","names":[]}
|
@@ -5,7 +5,7 @@ import { useAssistantApi } from "../../context/react/AssistantApiContext.js";
|
|
5
5
|
import { createStateHookForRuntime } from "../../context/react/utils/createStateHookForRuntime.js";
|
6
6
|
function useAssistantRuntime(options) {
|
7
7
|
const api = useAssistantApi();
|
8
|
-
const runtime = api.__internal_getRuntime();
|
8
|
+
const runtime = api.__internal_getRuntime?.() ?? null;
|
9
9
|
if (!runtime && !options?.optional) {
|
10
10
|
throw new Error("AssistantRuntime is not available");
|
11
11
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["../../../src/legacy-runtime/hooks/AssistantContext.ts"],"sourcesContent":["\"use client\";\n\nimport { useAssistantApi } from \"../../context/react/AssistantApiContext\";\nimport { AssistantRuntime } from \"../runtime/AssistantRuntime\";\nimport type { ThreadListRuntime } from \"../runtime/ThreadListRuntime\";\nimport { createStateHookForRuntime } from \"../../context/react/utils/createStateHookForRuntime\";\n\n/**\n * Hook to access the AssistantRuntime from the current context.\n *\n * The AssistantRuntime provides access to the top-level assistant state and actions,\n * including thread management, tool registration, and configuration.\n *\n * @param options Configuration options\n * @param options.optional Whether the hook should return null if no context is found\n * @returns The AssistantRuntime instance, or null if optional is true and no context exists\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const runtime = useAssistantRuntime();\n *\n * const handleNewThread = () => {\n * runtime.switchToNewThread();\n * };\n *\n * return <button onClick={handleNewThread}>New Thread</button>;\n * }\n * ```\n */\nexport function useAssistantRuntime(options?: {\n optional?: false | undefined;\n}): AssistantRuntime;\nexport function useAssistantRuntime(options?: {\n optional?: boolean | undefined;\n}): AssistantRuntime | null;\nexport function useAssistantRuntime(options?: {\n optional?: boolean | undefined;\n}) {\n const api = useAssistantApi();\n const runtime = api.__internal_getRuntime();\n\n if (!runtime && !options?.optional) {\n throw new Error(\"AssistantRuntime is not available\");\n }\n\n return runtime;\n}\n\nconst useThreadListRuntime = (opt: {\n optional: boolean | undefined;\n}): ThreadListRuntime | null => useAssistantRuntime(opt)?.threads ?? null;\nexport const useThreadList = createStateHookForRuntime(useThreadListRuntime);\n"],"mappings":";;;AAEA,SAAS,uBAAuB;AAGhC,SAAS,iCAAiC;AA+BnC,SAAS,oBAAoB,SAEjC;AACD,QAAM,MAAM,gBAAgB;AAC5B,QAAM,UAAU,IAAI,
|
1
|
+
{"version":3,"sources":["../../../src/legacy-runtime/hooks/AssistantContext.ts"],"sourcesContent":["\"use client\";\n\nimport { useAssistantApi } from \"../../context/react/AssistantApiContext\";\nimport { AssistantRuntime } from \"../runtime/AssistantRuntime\";\nimport type { ThreadListRuntime } from \"../runtime/ThreadListRuntime\";\nimport { createStateHookForRuntime } from \"../../context/react/utils/createStateHookForRuntime\";\n\n/**\n * Hook to access the AssistantRuntime from the current context.\n *\n * The AssistantRuntime provides access to the top-level assistant state and actions,\n * including thread management, tool registration, and configuration.\n *\n * @param options Configuration options\n * @param options.optional Whether the hook should return null if no context is found\n * @returns The AssistantRuntime instance, or null if optional is true and no context exists\n *\n * @example\n * ```tsx\n * function MyComponent() {\n * const runtime = useAssistantRuntime();\n *\n * const handleNewThread = () => {\n * runtime.switchToNewThread();\n * };\n *\n * return <button onClick={handleNewThread}>New Thread</button>;\n * }\n * ```\n */\nexport function useAssistantRuntime(options?: {\n optional?: false | undefined;\n}): AssistantRuntime;\nexport function useAssistantRuntime(options?: {\n optional?: boolean | undefined;\n}): AssistantRuntime | null;\nexport function useAssistantRuntime(options?: {\n optional?: boolean | undefined;\n}) {\n const api = useAssistantApi();\n const runtime = api.__internal_getRuntime?.() ?? null;\n\n if (!runtime && !options?.optional) {\n throw new Error(\"AssistantRuntime is not available\");\n }\n\n return runtime;\n}\n\nconst useThreadListRuntime = (opt: {\n optional: boolean | undefined;\n}): ThreadListRuntime | null => useAssistantRuntime(opt)?.threads ?? null;\nexport const useThreadList = createStateHookForRuntime(useThreadListRuntime);\n"],"mappings":";;;AAEA,SAAS,uBAAuB;AAGhC,SAAS,iCAAiC;AA+BnC,SAAS,oBAAoB,SAEjC;AACD,QAAM,MAAM,gBAAgB;AAC5B,QAAM,UAAU,IAAI,wBAAwB,KAAK;AAEjD,MAAI,CAAC,WAAW,CAAC,SAAS,UAAU;AAClC,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AAEA,SAAO;AACT;AAEA,IAAM,uBAAuB,CAAC,QAEE,oBAAoB,GAAG,GAAG,WAAW;AAC9D,IAAM,gBAAgB,0BAA0B,oBAAoB;","names":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"AttachmentContext.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/hooks/AttachmentContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAIjE,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,iBAAiB,CAAC;AACtB,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,iBAAiB,GAAG,IAAI,CAAC;
|
1
|
+
{"version":3,"file":"AttachmentContext.d.ts","sourceRoot":"","sources":["../../../src/legacy-runtime/hooks/AttachmentContext.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAIjE,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,iBAAiB,CAAC;AACtB,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE;IAC7C,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,iBAAiB,GAAG,IAAI,CAAC;AAgB7B,wBAAgB,kCAAkC,CAAC,OAAO,CAAC,EAAE;IAC3D,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,CAAC;AACzC,wBAAgB,kCAAkC,CAAC,OAAO,CAAC,EAAE;IAC3D,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC;AAahD,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IACzD,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;AACvC,wBAAgB,gCAAgC,CAAC,OAAO,CAAC,EAAE;IACzD,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,iBAAiB,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;AAc9C,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IACpD,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAC;CAC9B,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACjC,wBAAgB,2BAA2B,CAAC,OAAO,CAAC,EAAE;IACpD,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;CAChC,GAAG,iBAAiB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;AAaxC,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAkD,CAAC;AAE7E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEvC,CAAC;AACF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAErC,CAAC;AACF,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAEhC,CAAC"}
|
@@ -6,7 +6,7 @@ import { useAssistantApi, useAssistantState } from "../../context/react/index.js
|
|
6
6
|
function useAttachmentRuntime(options) {
|
7
7
|
const api = useAssistantApi();
|
8
8
|
const runtime = useAssistantState(
|
9
|
-
() => api.attachment.source ? api.attachment().__internal_getRuntime() : null
|
9
|
+
() => api.attachment.source ? api.attachment().__internal_getRuntime?.() ?? null : null
|
10
10
|
);
|
11
11
|
if (!runtime && !options?.optional) {
|
12
12
|
throw new Error("AttachmentRuntime is not available");
|