@assistant-ui/react 0.7.28 → 0.7.29
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/context/providers/AssistantRuntimeProvider.d.ts.map +1 -1
- package/dist/context/providers/AssistantRuntimeProvider.js +12 -9
- package/dist/context/providers/AssistantRuntimeProvider.js.map +1 -1
- package/dist/context/providers/AssistantRuntimeProvider.mjs +14 -11
- package/dist/context/providers/AssistantRuntimeProvider.mjs.map +1 -1
- package/dist/runtimes/core/AssistantRuntimeCore.d.ts +4 -5
- package/dist/runtimes/core/AssistantRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/AssistantRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/BaseAssistantRuntimeCore.d.ts +0 -2
- package/dist/runtimes/core/BaseAssistantRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/BaseAssistantRuntimeCore.js.map +1 -1
- package/dist/runtimes/core/BaseAssistantRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/core/ThreadRuntimeCore.d.ts +0 -4
- package/dist/runtimes/core/ThreadRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/core/ThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/dangerous-in-browser/DangerousInBrowserAdapter.d.ts +1 -1
- package/dist/runtimes/edge/EdgeRuntimeRequestOptions.d.ts +26 -26
- package/dist/runtimes/edge/EdgeRuntimeRequestOptions.d.ts.map +1 -1
- package/dist/runtimes/edge/EdgeRuntimeRequestOptions.js +5 -5
- package/dist/runtimes/edge/EdgeRuntimeRequestOptions.js.map +1 -1
- package/dist/runtimes/edge/EdgeRuntimeRequestOptions.mjs +5 -5
- package/dist/runtimes/edge/EdgeRuntimeRequestOptions.mjs.map +1 -1
- package/dist/runtimes/edge/converters/fromCoreMessage.js +1 -1
- package/dist/runtimes/edge/converters/fromCoreMessage.js.map +1 -1
- package/dist/runtimes/edge/converters/fromCoreMessage.mjs +1 -1
- package/dist/runtimes/edge/converters/fromCoreMessage.mjs.map +1 -1
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.d.ts.map +1 -1
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.js +4 -1
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.js.map +1 -1
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.mjs +4 -1
- package/dist/runtimes/edge/converters/fromLanguageModelMessages.mjs.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.d.ts.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.js +3 -4
- package/dist/runtimes/edge/createEdgeRuntimeAPI.js.map +1 -1
- package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs +3 -4
- package/dist/runtimes/edge/createEdgeRuntimeAPI.mjs.map +1 -1
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.d.ts +4 -2
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.js +1 -0
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.js.map +1 -1
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.mjs +1 -0
- package/dist/runtimes/edge/streams/AssistantStreamChunkType.mjs.map +1 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.js +7 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.js.map +1 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.mjs +7 -1
- package/dist/runtimes/edge/streams/assistantDecoderStream.mjs.map +1 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.js +7 -0
- package/dist/runtimes/edge/streams/assistantEncoderStream.js.map +1 -1
- package/dist/runtimes/edge/streams/assistantEncoderStream.mjs +7 -0
- package/dist/runtimes/edge/streams/assistantEncoderStream.mjs.map +1 -1
- package/dist/runtimes/edge/streams/runResultStream.d.ts +2 -2
- package/dist/runtimes/edge/streams/runResultStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/runResultStream.js +17 -2
- package/dist/runtimes/edge/streams/runResultStream.js.map +1 -1
- package/dist/runtimes/edge/streams/runResultStream.mjs +17 -2
- package/dist/runtimes/edge/streams/runResultStream.mjs.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.d.ts +4 -1
- package/dist/runtimes/edge/streams/toolResultStream.d.ts.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.js +1 -0
- package/dist/runtimes/edge/streams/toolResultStream.js.map +1 -1
- package/dist/runtimes/edge/streams/toolResultStream.mjs +1 -0
- package/dist/runtimes/edge/streams/toolResultStream.mjs.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts +0 -6
- package/dist/runtimes/external-store/ExternalStoreAdapter.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreAdapter.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts +0 -3
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js +0 -15
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.js.map +1 -1
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs +0 -15
- package/dist/runtimes/external-store/ExternalStoreRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.d.ts +4 -3
- package/dist/runtimes/external-store/ThreadMessageLike.d.ts.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.js +1 -0
- package/dist/runtimes/external-store/ThreadMessageLike.js.map +1 -1
- package/dist/runtimes/external-store/ThreadMessageLike.mjs +1 -0
- package/dist/runtimes/external-store/ThreadMessageLike.mjs.map +1 -1
- package/dist/runtimes/external-store/external-message-converter.js.map +1 -1
- package/dist/runtimes/external-store/external-message-converter.mjs.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.d.ts +5 -1
- package/dist/runtimes/local/ChatModelAdapter.d.ts.map +1 -1
- package/dist/runtimes/local/ChatModelAdapter.js.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.js.map +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.mjs +1 -1
- package/dist/runtimes/local/LocalThreadRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts +3 -3
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js +13 -14
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.js.map +1 -1
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs +11 -14
- package/dist/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.mjs.map +1 -1
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.d.ts +2 -2
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.js.map +1 -1
- package/dist/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.mjs.map +1 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.d.ts.map +1 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js +2 -2
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.js.map +1 -1
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs +2 -2
- package/dist/runtimes/remote-thread-list/useRemoteThreadListRuntime.mjs.map +1 -1
- package/dist/types/AssistantTypes.d.ts +10 -8
- package/dist/types/AssistantTypes.d.ts.map +1 -1
- package/dist/types/AssistantTypes.js.map +1 -1
- package/package.json +3 -3
- package/src/context/providers/AssistantRuntimeProvider.tsx +9 -12
- package/src/runtimes/core/AssistantRuntimeCore.tsx +4 -5
- package/src/runtimes/core/BaseAssistantRuntimeCore.tsx +0 -4
- package/src/runtimes/core/ThreadRuntimeCore.tsx +5 -4
- package/src/runtimes/edge/EdgeRuntimeRequestOptions.ts +7 -5
- package/src/runtimes/edge/converters/fromCoreMessage.ts +1 -1
- package/src/runtimes/edge/converters/fromLanguageModelMessages.ts +4 -1
- package/src/runtimes/edge/createEdgeRuntimeAPI.ts +6 -11
- package/src/runtimes/edge/streams/AssistantStreamChunkType.ts +4 -3
- package/src/runtimes/edge/streams/assistantDecoderStream.ts +8 -1
- package/src/runtimes/edge/streams/assistantEncoderStream.ts +8 -0
- package/src/runtimes/edge/streams/runResultStream.ts +38 -15
- package/src/runtimes/edge/streams/toolResultStream.ts +6 -1
- package/src/runtimes/external-store/ExternalStoreAdapter.tsx +0 -8
- package/src/runtimes/external-store/ExternalStoreRuntimeCore.tsx +0 -20
- package/src/runtimes/external-store/ThreadMessageLike.tsx +5 -3
- package/src/runtimes/external-store/external-message-converter.tsx +1 -1
- package/src/runtimes/local/ChatModelAdapter.tsx +7 -0
- package/src/runtimes/local/LocalThreadRuntimeCore.tsx +1 -1
- package/src/runtimes/remote-thread-list/RemoteThreadListThreadListRuntimeCore.tsx +11 -15
- package/src/runtimes/remote-thread-list/cloud/useCloudThreadListRuntime.tsx +1 -1
- package/src/runtimes/remote-thread-list/useRemoteThreadListRuntime.tsx +7 -3
- package/src/types/AssistantTypes.ts +10 -8
|
@@ -131,8 +131,15 @@ export function assistantDecoderStream() {
|
|
|
131
131
|
break;
|
|
132
132
|
}
|
|
133
133
|
|
|
134
|
-
// TODO
|
|
135
134
|
case AssistantStreamChunkType.Data:
|
|
135
|
+
controller.enqueue({
|
|
136
|
+
type: "data",
|
|
137
|
+
data: value,
|
|
138
|
+
});
|
|
139
|
+
break;
|
|
140
|
+
|
|
141
|
+
// TODO
|
|
142
|
+
case AssistantStreamChunkType.Annotation:
|
|
136
143
|
break;
|
|
137
144
|
|
|
138
145
|
default: {
|
|
@@ -44,6 +44,14 @@ export function assistantEncoderStream() {
|
|
|
44
44
|
break;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
+
case "data": {
|
|
48
|
+
controller.enqueue({
|
|
49
|
+
type: AssistantStreamChunkType.Data,
|
|
50
|
+
value: chunk.data,
|
|
51
|
+
});
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
|
|
47
55
|
// ignore
|
|
48
56
|
case "tool-call":
|
|
49
57
|
case "response-metadata":
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CoreChatModelRunResult } from "../../local/ChatModelAdapter";
|
|
2
2
|
import { parsePartialJson } from "../partial-json/parse-partial-json";
|
|
3
3
|
import { LanguageModelV1StreamPart } from "@ai-sdk/provider";
|
|
4
4
|
import { ToolResultStreamPart } from "./toolResultStream";
|
|
5
5
|
import { MessageStatus, ToolCallContentPart } from "../../../types";
|
|
6
6
|
|
|
7
7
|
export function runResultStream() {
|
|
8
|
-
let message:
|
|
8
|
+
let message: CoreChatModelRunResult = {
|
|
9
9
|
content: [],
|
|
10
10
|
status: { type: "running" },
|
|
11
11
|
};
|
|
12
12
|
|
|
13
|
-
return new TransformStream<ToolResultStreamPart,
|
|
13
|
+
return new TransformStream<ToolResultStreamPart, CoreChatModelRunResult>({
|
|
14
14
|
transform(chunk, controller) {
|
|
15
15
|
const chunkType = chunk.type;
|
|
16
16
|
switch (chunkType) {
|
|
@@ -34,9 +34,16 @@ export function runResultStream() {
|
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
case "tool-call":
|
|
37
|
+
// ignoring tool call events because they are converted to tool-call-delta as well
|
|
37
38
|
case "response-metadata":
|
|
38
39
|
break;
|
|
39
40
|
|
|
41
|
+
case "data": {
|
|
42
|
+
message = appendData(message, chunk);
|
|
43
|
+
controller.enqueue(message);
|
|
44
|
+
break;
|
|
45
|
+
}
|
|
46
|
+
|
|
40
47
|
case "tool-result": {
|
|
41
48
|
message = appendOrUpdateToolResult(
|
|
42
49
|
message,
|
|
@@ -48,7 +55,7 @@ export function runResultStream() {
|
|
|
48
55
|
break;
|
|
49
56
|
}
|
|
50
57
|
case "step-finish": {
|
|
51
|
-
message =
|
|
58
|
+
message = appendStepFinish(message, chunk);
|
|
52
59
|
controller.enqueue(message);
|
|
53
60
|
break;
|
|
54
61
|
}
|
|
@@ -92,7 +99,10 @@ export function runResultStream() {
|
|
|
92
99
|
});
|
|
93
100
|
}
|
|
94
101
|
|
|
95
|
-
const appendOrUpdateText = (
|
|
102
|
+
const appendOrUpdateText = (
|
|
103
|
+
message: CoreChatModelRunResult,
|
|
104
|
+
textDelta: string,
|
|
105
|
+
) => {
|
|
96
106
|
let contentParts = message.content ?? [];
|
|
97
107
|
let contentPart = message.content?.at(-1);
|
|
98
108
|
if (contentPart?.type !== "text") {
|
|
@@ -108,11 +118,11 @@ const appendOrUpdateText = (message: ChatModelRunResult, textDelta: string) => {
|
|
|
108
118
|
};
|
|
109
119
|
|
|
110
120
|
const appendOrUpdateToolCall = (
|
|
111
|
-
message:
|
|
121
|
+
message: CoreChatModelRunResult,
|
|
112
122
|
toolCallId: string,
|
|
113
123
|
toolName: string,
|
|
114
124
|
argsTextDelta: string,
|
|
115
|
-
):
|
|
125
|
+
): CoreChatModelRunResult => {
|
|
116
126
|
let contentParts = message.content ?? [];
|
|
117
127
|
const contentPartIdx = contentParts.findIndex(
|
|
118
128
|
(c) => c.type === "tool-call" && c.toolCallId === toolCallId,
|
|
@@ -152,7 +162,7 @@ const appendOrUpdateToolCall = (
|
|
|
152
162
|
};
|
|
153
163
|
|
|
154
164
|
const appendOrUpdateToolResult = (
|
|
155
|
-
message:
|
|
165
|
+
message: CoreChatModelRunResult,
|
|
156
166
|
toolCallId: string,
|
|
157
167
|
toolName: string,
|
|
158
168
|
result: any,
|
|
@@ -184,10 +194,23 @@ const appendOrUpdateToolResult = (
|
|
|
184
194
|
};
|
|
185
195
|
};
|
|
186
196
|
|
|
187
|
-
const
|
|
188
|
-
message:
|
|
197
|
+
const appendData = (
|
|
198
|
+
message: CoreChatModelRunResult,
|
|
199
|
+
chunk: ToolResultStreamPart & { type: "data" },
|
|
200
|
+
): CoreChatModelRunResult => {
|
|
201
|
+
return {
|
|
202
|
+
...message,
|
|
203
|
+
metadata: {
|
|
204
|
+
...message.metadata,
|
|
205
|
+
unstable_data: [...(message.metadata?.unstable_data ?? []), chunk.data],
|
|
206
|
+
},
|
|
207
|
+
};
|
|
208
|
+
};
|
|
209
|
+
|
|
210
|
+
const appendStepFinish = (
|
|
211
|
+
message: CoreChatModelRunResult,
|
|
189
212
|
chunk: ToolResultStreamPart & { type: "step-finish" },
|
|
190
|
-
):
|
|
213
|
+
): CoreChatModelRunResult => {
|
|
191
214
|
const { type, ...rest } = chunk;
|
|
192
215
|
const steps = [
|
|
193
216
|
...(message.metadata?.steps ?? []),
|
|
@@ -205,9 +228,9 @@ const appendOrUpdateStepFinish = (
|
|
|
205
228
|
};
|
|
206
229
|
|
|
207
230
|
const appendOrUpdateFinish = (
|
|
208
|
-
message:
|
|
231
|
+
message: CoreChatModelRunResult,
|
|
209
232
|
chunk: LanguageModelV1StreamPart & { type: "finish" },
|
|
210
|
-
):
|
|
233
|
+
): CoreChatModelRunResult => {
|
|
211
234
|
const { type, ...rest } = chunk;
|
|
212
235
|
|
|
213
236
|
const steps = [
|
|
@@ -254,8 +277,8 @@ const getStatus = (
|
|
|
254
277
|
};
|
|
255
278
|
|
|
256
279
|
const appendOrUpdateCancel = (
|
|
257
|
-
message:
|
|
258
|
-
):
|
|
280
|
+
message: CoreChatModelRunResult,
|
|
281
|
+
): CoreChatModelRunResult => {
|
|
259
282
|
return {
|
|
260
283
|
...message,
|
|
261
284
|
status: {
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { Tool } from "../../../types/ModelConfigTypes";
|
|
2
|
-
import { LanguageModelV1StreamPart } from "@ai-sdk/provider";
|
|
2
|
+
import { JSONValue, LanguageModelV1StreamPart } from "@ai-sdk/provider";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import sjson from "secure-json-parse";
|
|
5
5
|
|
|
6
6
|
export type ToolResultStreamPart =
|
|
7
7
|
| LanguageModelV1StreamPart
|
|
8
|
+
| {
|
|
9
|
+
type: "data";
|
|
10
|
+
data: JSONValue[];
|
|
11
|
+
}
|
|
8
12
|
| {
|
|
9
13
|
type: "tool-result";
|
|
10
14
|
toolCallType: "function";
|
|
@@ -107,6 +111,7 @@ export function toolResultStream(
|
|
|
107
111
|
case "finish":
|
|
108
112
|
case "error":
|
|
109
113
|
case "response-metadata":
|
|
114
|
+
case "data":
|
|
110
115
|
break;
|
|
111
116
|
|
|
112
117
|
default: {
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { PropsWithChildren } from "react";
|
|
2
1
|
import { AppendMessage, ThreadMessage } from "../../types";
|
|
3
2
|
import { AttachmentAdapter } from "../attachment";
|
|
4
3
|
import {
|
|
@@ -54,11 +53,6 @@ type ExternalStoreAdapterBase<T> = {
|
|
|
54
53
|
isRunning?: boolean | undefined;
|
|
55
54
|
messages: T[];
|
|
56
55
|
suggestions?: readonly ThreadSuggestion[] | undefined;
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* @deprecated This field is deprecated and will be removed in 0.8.0.
|
|
60
|
-
* Please migrate to `Provider` and a custom react context provider component instead.
|
|
61
|
-
*/
|
|
62
56
|
extras?: unknown;
|
|
63
57
|
|
|
64
58
|
setMessages?: ((messages: T[]) => void) | undefined;
|
|
@@ -88,8 +82,6 @@ type ExternalStoreAdapterBase<T> = {
|
|
|
88
82
|
copy?: boolean | undefined;
|
|
89
83
|
}
|
|
90
84
|
| undefined;
|
|
91
|
-
|
|
92
|
-
unstable_Provider?: React.ComponentType<PropsWithChildren> | undefined;
|
|
93
85
|
};
|
|
94
86
|
|
|
95
87
|
export type ExternalStoreAdapter<T = ThreadMessage> =
|
|
@@ -2,9 +2,6 @@ import { BaseAssistantRuntimeCore } from "../../internal";
|
|
|
2
2
|
import { ExternalStoreThreadListRuntimeCore } from "./ExternalStoreThreadListRuntimeCore";
|
|
3
3
|
import { ExternalStoreAdapter } from "./ExternalStoreAdapter";
|
|
4
4
|
import { ExternalStoreThreadRuntimeCore } from "./ExternalStoreThreadRuntimeCore";
|
|
5
|
-
import { Fragment } from "react/jsx-runtime";
|
|
6
|
-
import { PropsWithChildren } from "react";
|
|
7
|
-
import { create } from "zustand";
|
|
8
5
|
|
|
9
6
|
const getThreadListAdapter = (store: ExternalStoreAdapter<any>) => {
|
|
10
7
|
return {
|
|
@@ -15,13 +12,8 @@ const getThreadListAdapter = (store: ExternalStoreAdapter<any>) => {
|
|
|
15
12
|
export class ExternalStoreRuntimeCore extends BaseAssistantRuntimeCore {
|
|
16
13
|
public readonly threadList;
|
|
17
14
|
|
|
18
|
-
private useRenderComponent;
|
|
19
|
-
|
|
20
15
|
constructor(adapter: ExternalStoreAdapter<any>) {
|
|
21
16
|
super();
|
|
22
|
-
this.useRenderComponent = create(() => ({
|
|
23
|
-
RenderComponent: adapter.unstable_Provider ?? Fragment,
|
|
24
|
-
}));
|
|
25
17
|
this.threadList = new ExternalStoreThreadListRuntimeCore(
|
|
26
18
|
getThreadListAdapter(adapter),
|
|
27
19
|
() =>
|
|
@@ -33,17 +25,5 @@ export class ExternalStoreRuntimeCore extends BaseAssistantRuntimeCore {
|
|
|
33
25
|
// Update the thread list adapter and propagate store changes to the main thread
|
|
34
26
|
this.threadList.__internal_setAdapter(getThreadListAdapter(adapter));
|
|
35
27
|
this.threadList.getMainThreadRuntimeCore().__internal_setAdapter(adapter);
|
|
36
|
-
|
|
37
|
-
const RenderComponent = adapter.unstable_Provider ?? Fragment;
|
|
38
|
-
if (
|
|
39
|
-
RenderComponent !== this.useRenderComponent.getState().RenderComponent
|
|
40
|
-
) {
|
|
41
|
-
this.useRenderComponent.setState({ RenderComponent }, true);
|
|
42
|
-
}
|
|
43
28
|
}
|
|
44
|
-
|
|
45
|
-
public readonly Provider = ({ children }: PropsWithChildren) => {
|
|
46
|
-
const RenderComponent = this.useRenderComponent.getState().RenderComponent;
|
|
47
|
-
return <RenderComponent>{children}</RenderComponent>;
|
|
48
|
-
};
|
|
49
29
|
}
|
|
@@ -22,7 +22,7 @@ export type ThreadMessageLike = {
|
|
|
22
22
|
role: "assistant" | "user" | "system";
|
|
23
23
|
content:
|
|
24
24
|
| string
|
|
25
|
-
| (
|
|
25
|
+
| readonly (
|
|
26
26
|
| TextContentPart
|
|
27
27
|
| ImageContentPart
|
|
28
28
|
| Unstable_AudioContentPart
|
|
@@ -33,9 +33,10 @@ export type ThreadMessageLike = {
|
|
|
33
33
|
id?: string | undefined;
|
|
34
34
|
createdAt?: Date | undefined;
|
|
35
35
|
status?: MessageStatus | undefined;
|
|
36
|
-
attachments?: CompleteAttachment[] | undefined;
|
|
36
|
+
attachments?: readonly CompleteAttachment[] | undefined;
|
|
37
37
|
metadata?: {
|
|
38
|
-
|
|
38
|
+
unstable_data?: readonly Record<string, unknown>[] | undefined;
|
|
39
|
+
steps?: readonly ThreadStep[] | undefined;
|
|
39
40
|
custom?: Record<string, unknown> | undefined;
|
|
40
41
|
};
|
|
41
42
|
};
|
|
@@ -98,6 +99,7 @@ export const fromThreadMessageLike = (
|
|
|
98
99
|
.filter((c) => !!c),
|
|
99
100
|
status: status ?? fallbackStatus,
|
|
100
101
|
metadata: {
|
|
102
|
+
unstable_data: metadata?.unstable_data ?? [],
|
|
101
103
|
custom: metadata?.custom ?? {},
|
|
102
104
|
steps: metadata?.steps ?? [],
|
|
103
105
|
},
|
|
@@ -32,7 +32,7 @@ type ChunkResult<T> = {
|
|
|
32
32
|
};
|
|
33
33
|
|
|
34
34
|
const joinExternalMessages = (
|
|
35
|
-
messages: useExternalMessageConverter.Message[],
|
|
35
|
+
messages: readonly useExternalMessageConverter.Message[],
|
|
36
36
|
): ThreadMessageLike => {
|
|
37
37
|
const assistantMessage: ThreadMessageLike & { content: any[] } = {
|
|
38
38
|
role: "assistant",
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
import type {
|
|
4
4
|
MessageStatus,
|
|
5
5
|
RunConfig,
|
|
6
|
+
TextContentPart,
|
|
6
7
|
ThreadAssistantContentPart,
|
|
7
8
|
ThreadMessage,
|
|
8
9
|
ThreadStep,
|
|
10
|
+
ToolCallContentPart,
|
|
9
11
|
} from "../../types/AssistantTypes";
|
|
10
12
|
import type { ModelConfig } from "../../types/ModelConfigTypes";
|
|
11
13
|
|
|
@@ -18,11 +20,16 @@ export type ChatModelRunResult = {
|
|
|
18
20
|
content?: ThreadAssistantContentPart[] | undefined;
|
|
19
21
|
status?: MessageStatus | undefined;
|
|
20
22
|
metadata?: {
|
|
23
|
+
unstable_data?: unknown[] | undefined;
|
|
21
24
|
steps?: ThreadStep[] | undefined;
|
|
22
25
|
custom?: Record<string, unknown> | undefined;
|
|
23
26
|
};
|
|
24
27
|
};
|
|
25
28
|
|
|
29
|
+
export type CoreChatModelRunResult = Omit<ChatModelRunResult, "content"> & {
|
|
30
|
+
content: (TextContentPart | ToolCallContentPart)[];
|
|
31
|
+
};
|
|
32
|
+
|
|
26
33
|
export type ChatModelRunOptions = {
|
|
27
34
|
messages: ThreadMessage[];
|
|
28
35
|
runConfig: RunConfig;
|
|
@@ -5,7 +5,7 @@ import { RemoteThreadListHookInstanceManager } from "./RemoteThreadListHookInsta
|
|
|
5
5
|
import { BaseSubscribable } from "./BaseSubscribable";
|
|
6
6
|
import { EMPTY_THREAD_CORE } from "./EMPTY_THREAD_CORE";
|
|
7
7
|
import { OptimisticState } from "./OptimisticState";
|
|
8
|
-
import { FC, Fragment,
|
|
8
|
+
import { FC, Fragment, useEffect, useId } from "react";
|
|
9
9
|
import { create } from "zustand";
|
|
10
10
|
import { CloudInitializeResponse } from "./cloud/CloudContext";
|
|
11
11
|
|
|
@@ -152,8 +152,8 @@ export class RemoteThreadListThreadListRuntimeCore
|
|
|
152
152
|
this._hookManager = new RemoteThreadListHookInstanceManager(
|
|
153
153
|
adapter.runtimeHook,
|
|
154
154
|
);
|
|
155
|
-
this.
|
|
156
|
-
|
|
155
|
+
this.useProvider = create(() => ({
|
|
156
|
+
Provider: adapter.unstable_Provider ?? Fragment,
|
|
157
157
|
}));
|
|
158
158
|
this.__internal_setAdapter(adapter);
|
|
159
159
|
|
|
@@ -220,7 +220,7 @@ export class RemoteThreadListThreadListRuntimeCore
|
|
|
220
220
|
this.switchToNewThread();
|
|
221
221
|
}
|
|
222
222
|
|
|
223
|
-
private
|
|
223
|
+
private useProvider;
|
|
224
224
|
|
|
225
225
|
public __internal_setAdapter(adapter: RemoteThreadListAdapter) {
|
|
226
226
|
if (this._adapter === adapter) return;
|
|
@@ -229,11 +229,9 @@ export class RemoteThreadListThreadListRuntimeCore
|
|
|
229
229
|
this._disposeOldAdapter?.();
|
|
230
230
|
this._disposeOldAdapter = this._adapter.onInitialize(this._onInitialize);
|
|
231
231
|
|
|
232
|
-
const
|
|
233
|
-
if (
|
|
234
|
-
|
|
235
|
-
) {
|
|
236
|
-
this.useRenderComponent.setState({ RenderComponent }, true);
|
|
232
|
+
const Provider = adapter.unstable_Provider ?? Fragment;
|
|
233
|
+
if (Provider !== this.useProvider.getState().Provider) {
|
|
234
|
+
this.useProvider.setState({ Provider }, true);
|
|
237
235
|
}
|
|
238
236
|
|
|
239
237
|
this._hookManager.setRuntimeHook(adapter.runtimeHook);
|
|
@@ -454,7 +452,7 @@ export class RemoteThreadListThreadListRuntimeCore
|
|
|
454
452
|
|
|
455
453
|
private useBoundIds = create<string[]>(() => []);
|
|
456
454
|
|
|
457
|
-
public
|
|
455
|
+
public __internal_RenderComponent: FC = () => {
|
|
458
456
|
const id = useId();
|
|
459
457
|
useEffect(() => {
|
|
460
458
|
this.useBoundIds.setState((s) => [...s, id], true);
|
|
@@ -464,17 +462,15 @@ export class RemoteThreadListThreadListRuntimeCore
|
|
|
464
462
|
}, []);
|
|
465
463
|
|
|
466
464
|
const boundIds = this.useBoundIds();
|
|
467
|
-
const {
|
|
465
|
+
const { Provider } = this.useProvider();
|
|
468
466
|
|
|
469
467
|
return (
|
|
470
|
-
<
|
|
468
|
+
<Provider>
|
|
471
469
|
{(boundIds.length === 0 || boundIds[0] === id) && (
|
|
472
470
|
// only render if the component is the first one mounted
|
|
473
471
|
<this._hookManager.__internal_RenderThreadRuntimes />
|
|
474
472
|
)}
|
|
475
|
-
|
|
476
|
-
{children}
|
|
477
|
-
</RenderComponent>
|
|
473
|
+
</Provider>
|
|
478
474
|
);
|
|
479
475
|
};
|
|
480
476
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import { AssistantRuntime } from "@assistant-ui/react";
|
|
4
3
|
import { PropsWithChildren, useEffect, useMemo, useRef } from "react";
|
|
5
4
|
import { useRemoteThreadListRuntime } from "../useRemoteThreadListRuntime";
|
|
6
5
|
import { AssistantCloud } from "./AssistantCloud";
|
|
7
6
|
import { CloudContext, CloudInitializeResponse } from "./CloudContext";
|
|
7
|
+
import { AssistantRuntime } from "../../../api";
|
|
8
8
|
|
|
9
9
|
type ThreadData = {
|
|
10
10
|
externalId: string;
|
|
@@ -3,8 +3,12 @@ import { BaseAssistantRuntimeCore } from "../core/BaseAssistantRuntimeCore";
|
|
|
3
3
|
import { RemoteThreadListThreadListRuntimeCore } from "./RemoteThreadListThreadListRuntimeCore";
|
|
4
4
|
import { RemoteThreadListAdapter } from "./types";
|
|
5
5
|
import { AssistantRuntimeImpl } from "../../internal";
|
|
6
|
+
import { AssistantRuntimeCore } from "../core/AssistantRuntimeCore";
|
|
6
7
|
|
|
7
|
-
class RemoteThreadListRuntimeCore
|
|
8
|
+
class RemoteThreadListRuntimeCore
|
|
9
|
+
extends BaseAssistantRuntimeCore
|
|
10
|
+
implements AssistantRuntimeCore
|
|
11
|
+
{
|
|
8
12
|
public readonly threadList;
|
|
9
13
|
|
|
10
14
|
constructor(adapter: RemoteThreadListAdapter) {
|
|
@@ -12,8 +16,8 @@ class RemoteThreadListRuntimeCore extends BaseAssistantRuntimeCore {
|
|
|
12
16
|
this.threadList = new RemoteThreadListThreadListRuntimeCore(adapter);
|
|
13
17
|
}
|
|
14
18
|
|
|
15
|
-
public get
|
|
16
|
-
return this.threadList.
|
|
19
|
+
public get RenderComponent() {
|
|
20
|
+
return this.threadList.__internal_RenderComponent;
|
|
17
21
|
}
|
|
18
22
|
}
|
|
19
23
|
|
|
@@ -121,7 +121,7 @@ export type MessageStatus =
|
|
|
121
121
|
|
|
122
122
|
export type ThreadSystemMessage = MessageCommonProps & {
|
|
123
123
|
readonly role: "system";
|
|
124
|
-
readonly content: [TextContentPart];
|
|
124
|
+
readonly content: readonly [TextContentPart];
|
|
125
125
|
readonly metadata: {
|
|
126
126
|
readonly custom: Record<string, unknown>;
|
|
127
127
|
};
|
|
@@ -129,7 +129,7 @@ export type ThreadSystemMessage = MessageCommonProps & {
|
|
|
129
129
|
|
|
130
130
|
export type ThreadUserMessage = MessageCommonProps & {
|
|
131
131
|
readonly role: "user";
|
|
132
|
-
readonly content: ThreadUserContentPart[];
|
|
132
|
+
readonly content: readonly ThreadUserContentPart[];
|
|
133
133
|
readonly attachments: readonly CompleteAttachment[];
|
|
134
134
|
readonly metadata: {
|
|
135
135
|
readonly custom: Record<string, unknown>;
|
|
@@ -138,10 +138,11 @@ export type ThreadUserMessage = MessageCommonProps & {
|
|
|
138
138
|
|
|
139
139
|
export type ThreadAssistantMessage = MessageCommonProps & {
|
|
140
140
|
readonly role: "assistant";
|
|
141
|
-
readonly content: ThreadAssistantContentPart[];
|
|
141
|
+
readonly content: readonly ThreadAssistantContentPart[];
|
|
142
142
|
readonly status: MessageStatus;
|
|
143
143
|
readonly metadata: {
|
|
144
|
-
readonly
|
|
144
|
+
readonly unstable_data: readonly unknown[];
|
|
145
|
+
readonly steps: readonly ThreadStep[];
|
|
145
146
|
readonly custom: Record<string, unknown>;
|
|
146
147
|
};
|
|
147
148
|
};
|
|
@@ -162,7 +163,8 @@ export type AppendMessage = CoreMessage & {
|
|
|
162
163
|
type BaseThreadMessage = {
|
|
163
164
|
readonly status?: ThreadAssistantMessage["status"];
|
|
164
165
|
readonly metadata: {
|
|
165
|
-
readonly
|
|
166
|
+
readonly unstable_data?: readonly unknown[];
|
|
167
|
+
readonly steps?: readonly ThreadStep[];
|
|
166
168
|
readonly custom: Record<string, unknown>;
|
|
167
169
|
};
|
|
168
170
|
readonly attachments?: ThreadUserMessage["attachments"];
|
|
@@ -183,17 +185,17 @@ export type CoreAssistantContentPart =
|
|
|
183
185
|
|
|
184
186
|
export type CoreSystemMessage = {
|
|
185
187
|
role: "system";
|
|
186
|
-
content: [TextContentPart];
|
|
188
|
+
content: readonly [TextContentPart];
|
|
187
189
|
};
|
|
188
190
|
|
|
189
191
|
export type CoreUserMessage = {
|
|
190
192
|
role: "user";
|
|
191
|
-
content: CoreUserContentPart[];
|
|
193
|
+
content: readonly CoreUserContentPart[];
|
|
192
194
|
};
|
|
193
195
|
|
|
194
196
|
export type CoreAssistantMessage = {
|
|
195
197
|
role: "assistant";
|
|
196
|
-
content: CoreAssistantContentPart[];
|
|
198
|
+
content: readonly CoreAssistantContentPart[];
|
|
197
199
|
};
|
|
198
200
|
|
|
199
201
|
export type CoreMessage =
|