@assistant-ui/react-ai-sdk 0.3.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +38 -19
- package/dist/index.d.ts +38 -19
- package/dist/index.js +103 -60
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +84 -41
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -5
package/dist/index.d.mts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as _assistant_ui_react from '@assistant-ui/react';
|
|
2
|
-
import { ChatModelAdapter, ChatModelRunOptions,
|
|
2
|
+
import { ChatModelAdapter, ChatModelRunOptions, CoreAssistantContentPart, AppendMessage, ReactThreadRuntime, ThreadMessage, Unsubscribe, ModelConfigProvider, INTERNAL, AddToolResultOptions } from '@assistant-ui/react';
|
|
3
3
|
import { LanguageModel, Message } from 'ai';
|
|
4
4
|
import { ReactNode } from 'react';
|
|
5
|
-
import { useChat,
|
|
5
|
+
import { useChat, useAssistant } from 'ai/react';
|
|
6
6
|
|
|
7
7
|
declare class VercelModelAdapter implements ChatModelAdapter {
|
|
8
8
|
private readonly model;
|
|
9
9
|
constructor(model: LanguageModel);
|
|
10
10
|
run({ messages, abortSignal, config, onUpdate }: ChatModelRunOptions): Promise<{
|
|
11
|
-
content:
|
|
11
|
+
content: CoreAssistantContentPart[];
|
|
12
12
|
}>;
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -31,19 +31,15 @@ type VercelRSCAdapterBase<T> = {
|
|
|
31
31
|
};
|
|
32
32
|
type VercelRSCAdapter<T = VercelRSCMessage> = VercelRSCAdapterBase<T> & (T extends VercelRSCMessage ? object : RSCMessageConverter<T>);
|
|
33
33
|
|
|
34
|
-
declare const BaseAssistantRuntime$2: typeof INTERNAL.BaseAssistantRuntime;
|
|
35
|
-
declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$2<VercelRSCThreadRuntime<T>> {
|
|
36
|
-
private readonly _proxyConfigProvider;
|
|
37
|
-
constructor(adapter: VercelRSCAdapter<T>);
|
|
38
|
-
set adapter(adapter: VercelRSCAdapter<T>);
|
|
39
|
-
onAdapterUpdated(): void;
|
|
40
|
-
getModelConfig(): _assistant_ui_react.ModelConfig;
|
|
41
|
-
registerModelConfigProvider(provider: ModelConfigProvider): () => void;
|
|
42
|
-
switchToThread(): void;
|
|
43
|
-
}
|
|
44
34
|
declare class VercelRSCThreadRuntime<T extends WeakKey = VercelRSCMessage> implements ReactThreadRuntime {
|
|
45
35
|
adapter: VercelRSCAdapter<T>;
|
|
46
36
|
private useAdapter;
|
|
37
|
+
readonly capabilities: Readonly<{
|
|
38
|
+
edit: false;
|
|
39
|
+
reload: false;
|
|
40
|
+
cancel: false;
|
|
41
|
+
copy: false;
|
|
42
|
+
}>;
|
|
47
43
|
private _subscriptions;
|
|
48
44
|
isRunning: boolean;
|
|
49
45
|
messages: ThreadMessage[];
|
|
@@ -61,6 +57,17 @@ declare class VercelRSCThreadRuntime<T extends WeakKey = VercelRSCMessage> imple
|
|
|
61
57
|
addToolResult(): void;
|
|
62
58
|
}
|
|
63
59
|
|
|
60
|
+
declare const BaseAssistantRuntime$2: typeof INTERNAL.BaseAssistantRuntime;
|
|
61
|
+
declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$2<VercelRSCThreadRuntime<T>> {
|
|
62
|
+
private readonly _proxyConfigProvider;
|
|
63
|
+
constructor(adapter: VercelRSCAdapter<T>);
|
|
64
|
+
set adapter(adapter: VercelRSCAdapter<T>);
|
|
65
|
+
onAdapterUpdated(): void;
|
|
66
|
+
getModelConfig(): _assistant_ui_react.ModelConfig;
|
|
67
|
+
registerModelConfigProvider(provider: ModelConfigProvider): () => void;
|
|
68
|
+
switchToThread(): void;
|
|
69
|
+
}
|
|
70
|
+
|
|
64
71
|
declare const useVercelRSCRuntime: <T extends WeakKey>(adapter: VercelRSCAdapter<T>) => VercelRSCRuntime<T>;
|
|
65
72
|
|
|
66
73
|
declare const getVercelRSCMessage: <T>(message: ThreadMessage) => T | undefined;
|
|
@@ -71,6 +78,12 @@ declare class VercelUseChatThreadRuntime implements ReactThreadRuntime {
|
|
|
71
78
|
private repository;
|
|
72
79
|
private assistantOptimisticId;
|
|
73
80
|
private useVercel;
|
|
81
|
+
readonly capabilities: Readonly<{
|
|
82
|
+
edit: true;
|
|
83
|
+
reload: true;
|
|
84
|
+
cancel: true;
|
|
85
|
+
copy: true;
|
|
86
|
+
}>;
|
|
74
87
|
messages: ThreadMessage[];
|
|
75
88
|
isRunning: boolean;
|
|
76
89
|
constructor(vercel: ReturnType<typeof useChat>);
|
|
@@ -84,7 +97,7 @@ declare class VercelUseChatThreadRuntime implements ReactThreadRuntime {
|
|
|
84
97
|
onVercelUpdated(): void;
|
|
85
98
|
private updateData;
|
|
86
99
|
unstable_synchronizer: () => null;
|
|
87
|
-
addToolResult(toolCallId
|
|
100
|
+
addToolResult({ toolCallId, result }: AddToolResultOptions): void;
|
|
88
101
|
}
|
|
89
102
|
|
|
90
103
|
declare const BaseAssistantRuntime$1: typeof INTERNAL.BaseAssistantRuntime;
|
|
@@ -101,12 +114,18 @@ declare class VercelUseChatRuntime extends BaseAssistantRuntime$1<VercelUseChatT
|
|
|
101
114
|
declare const useVercelUseChatRuntime: (chatHelpers: ReturnType<typeof useChat>) => VercelUseChatRuntime;
|
|
102
115
|
|
|
103
116
|
declare class VercelUseAssistantThreadRuntime implements ReactThreadRuntime {
|
|
104
|
-
vercel:
|
|
117
|
+
vercel: ReturnType<typeof useAssistant>;
|
|
105
118
|
private _subscriptions;
|
|
119
|
+
readonly capabilities: Readonly<{
|
|
120
|
+
edit: false;
|
|
121
|
+
reload: false;
|
|
122
|
+
cancel: false;
|
|
123
|
+
copy: true;
|
|
124
|
+
}>;
|
|
106
125
|
private useVercel;
|
|
107
126
|
messages: readonly ThreadMessage[];
|
|
108
127
|
isRunning: boolean;
|
|
109
|
-
constructor(vercel:
|
|
128
|
+
constructor(vercel: ReturnType<typeof useAssistant>);
|
|
110
129
|
getBranches(): readonly string[];
|
|
111
130
|
switchToBranch(): void;
|
|
112
131
|
append(message: AppendMessage): Promise<void>;
|
|
@@ -122,15 +141,15 @@ declare class VercelUseAssistantThreadRuntime implements ReactThreadRuntime {
|
|
|
122
141
|
declare const BaseAssistantRuntime: typeof INTERNAL.BaseAssistantRuntime;
|
|
123
142
|
declare class VercelUseAssistantRuntime extends BaseAssistantRuntime<VercelUseAssistantThreadRuntime> {
|
|
124
143
|
private readonly _proxyConfigProvider;
|
|
125
|
-
constructor(vercel:
|
|
126
|
-
set vercel(vercel:
|
|
144
|
+
constructor(vercel: ReturnType<typeof useAssistant>);
|
|
145
|
+
set vercel(vercel: ReturnType<typeof useAssistant>);
|
|
127
146
|
onVercelUpdated(): void;
|
|
128
147
|
getModelConfig(): _assistant_ui_react.ModelConfig;
|
|
129
148
|
registerModelConfigProvider(provider: ModelConfigProvider): () => void;
|
|
130
149
|
switchToThread(threadId: string | null): void;
|
|
131
150
|
}
|
|
132
151
|
|
|
133
|
-
declare const useVercelUseAssistantRuntime: (assistantHelpers:
|
|
152
|
+
declare const useVercelUseAssistantRuntime: (assistantHelpers: ReturnType<typeof useAssistant>) => VercelUseAssistantRuntime;
|
|
134
153
|
|
|
135
154
|
declare const getVercelAIMessage: (message: ThreadMessage) => Message[] | undefined;
|
|
136
155
|
|
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as _assistant_ui_react from '@assistant-ui/react';
|
|
2
|
-
import { ChatModelAdapter, ChatModelRunOptions,
|
|
2
|
+
import { ChatModelAdapter, ChatModelRunOptions, CoreAssistantContentPart, AppendMessage, ReactThreadRuntime, ThreadMessage, Unsubscribe, ModelConfigProvider, INTERNAL, AddToolResultOptions } from '@assistant-ui/react';
|
|
3
3
|
import { LanguageModel, Message } from 'ai';
|
|
4
4
|
import { ReactNode } from 'react';
|
|
5
|
-
import { useChat,
|
|
5
|
+
import { useChat, useAssistant } from 'ai/react';
|
|
6
6
|
|
|
7
7
|
declare class VercelModelAdapter implements ChatModelAdapter {
|
|
8
8
|
private readonly model;
|
|
9
9
|
constructor(model: LanguageModel);
|
|
10
10
|
run({ messages, abortSignal, config, onUpdate }: ChatModelRunOptions): Promise<{
|
|
11
|
-
content:
|
|
11
|
+
content: CoreAssistantContentPart[];
|
|
12
12
|
}>;
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -31,19 +31,15 @@ type VercelRSCAdapterBase<T> = {
|
|
|
31
31
|
};
|
|
32
32
|
type VercelRSCAdapter<T = VercelRSCMessage> = VercelRSCAdapterBase<T> & (T extends VercelRSCMessage ? object : RSCMessageConverter<T>);
|
|
33
33
|
|
|
34
|
-
declare const BaseAssistantRuntime$2: typeof INTERNAL.BaseAssistantRuntime;
|
|
35
|
-
declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$2<VercelRSCThreadRuntime<T>> {
|
|
36
|
-
private readonly _proxyConfigProvider;
|
|
37
|
-
constructor(adapter: VercelRSCAdapter<T>);
|
|
38
|
-
set adapter(adapter: VercelRSCAdapter<T>);
|
|
39
|
-
onAdapterUpdated(): void;
|
|
40
|
-
getModelConfig(): _assistant_ui_react.ModelConfig;
|
|
41
|
-
registerModelConfigProvider(provider: ModelConfigProvider): () => void;
|
|
42
|
-
switchToThread(): void;
|
|
43
|
-
}
|
|
44
34
|
declare class VercelRSCThreadRuntime<T extends WeakKey = VercelRSCMessage> implements ReactThreadRuntime {
|
|
45
35
|
adapter: VercelRSCAdapter<T>;
|
|
46
36
|
private useAdapter;
|
|
37
|
+
readonly capabilities: Readonly<{
|
|
38
|
+
edit: false;
|
|
39
|
+
reload: false;
|
|
40
|
+
cancel: false;
|
|
41
|
+
copy: false;
|
|
42
|
+
}>;
|
|
47
43
|
private _subscriptions;
|
|
48
44
|
isRunning: boolean;
|
|
49
45
|
messages: ThreadMessage[];
|
|
@@ -61,6 +57,17 @@ declare class VercelRSCThreadRuntime<T extends WeakKey = VercelRSCMessage> imple
|
|
|
61
57
|
addToolResult(): void;
|
|
62
58
|
}
|
|
63
59
|
|
|
60
|
+
declare const BaseAssistantRuntime$2: typeof INTERNAL.BaseAssistantRuntime;
|
|
61
|
+
declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$2<VercelRSCThreadRuntime<T>> {
|
|
62
|
+
private readonly _proxyConfigProvider;
|
|
63
|
+
constructor(adapter: VercelRSCAdapter<T>);
|
|
64
|
+
set adapter(adapter: VercelRSCAdapter<T>);
|
|
65
|
+
onAdapterUpdated(): void;
|
|
66
|
+
getModelConfig(): _assistant_ui_react.ModelConfig;
|
|
67
|
+
registerModelConfigProvider(provider: ModelConfigProvider): () => void;
|
|
68
|
+
switchToThread(): void;
|
|
69
|
+
}
|
|
70
|
+
|
|
64
71
|
declare const useVercelRSCRuntime: <T extends WeakKey>(adapter: VercelRSCAdapter<T>) => VercelRSCRuntime<T>;
|
|
65
72
|
|
|
66
73
|
declare const getVercelRSCMessage: <T>(message: ThreadMessage) => T | undefined;
|
|
@@ -71,6 +78,12 @@ declare class VercelUseChatThreadRuntime implements ReactThreadRuntime {
|
|
|
71
78
|
private repository;
|
|
72
79
|
private assistantOptimisticId;
|
|
73
80
|
private useVercel;
|
|
81
|
+
readonly capabilities: Readonly<{
|
|
82
|
+
edit: true;
|
|
83
|
+
reload: true;
|
|
84
|
+
cancel: true;
|
|
85
|
+
copy: true;
|
|
86
|
+
}>;
|
|
74
87
|
messages: ThreadMessage[];
|
|
75
88
|
isRunning: boolean;
|
|
76
89
|
constructor(vercel: ReturnType<typeof useChat>);
|
|
@@ -84,7 +97,7 @@ declare class VercelUseChatThreadRuntime implements ReactThreadRuntime {
|
|
|
84
97
|
onVercelUpdated(): void;
|
|
85
98
|
private updateData;
|
|
86
99
|
unstable_synchronizer: () => null;
|
|
87
|
-
addToolResult(toolCallId
|
|
100
|
+
addToolResult({ toolCallId, result }: AddToolResultOptions): void;
|
|
88
101
|
}
|
|
89
102
|
|
|
90
103
|
declare const BaseAssistantRuntime$1: typeof INTERNAL.BaseAssistantRuntime;
|
|
@@ -101,12 +114,18 @@ declare class VercelUseChatRuntime extends BaseAssistantRuntime$1<VercelUseChatT
|
|
|
101
114
|
declare const useVercelUseChatRuntime: (chatHelpers: ReturnType<typeof useChat>) => VercelUseChatRuntime;
|
|
102
115
|
|
|
103
116
|
declare class VercelUseAssistantThreadRuntime implements ReactThreadRuntime {
|
|
104
|
-
vercel:
|
|
117
|
+
vercel: ReturnType<typeof useAssistant>;
|
|
105
118
|
private _subscriptions;
|
|
119
|
+
readonly capabilities: Readonly<{
|
|
120
|
+
edit: false;
|
|
121
|
+
reload: false;
|
|
122
|
+
cancel: false;
|
|
123
|
+
copy: true;
|
|
124
|
+
}>;
|
|
106
125
|
private useVercel;
|
|
107
126
|
messages: readonly ThreadMessage[];
|
|
108
127
|
isRunning: boolean;
|
|
109
|
-
constructor(vercel:
|
|
128
|
+
constructor(vercel: ReturnType<typeof useAssistant>);
|
|
110
129
|
getBranches(): readonly string[];
|
|
111
130
|
switchToBranch(): void;
|
|
112
131
|
append(message: AppendMessage): Promise<void>;
|
|
@@ -122,15 +141,15 @@ declare class VercelUseAssistantThreadRuntime implements ReactThreadRuntime {
|
|
|
122
141
|
declare const BaseAssistantRuntime: typeof INTERNAL.BaseAssistantRuntime;
|
|
123
142
|
declare class VercelUseAssistantRuntime extends BaseAssistantRuntime<VercelUseAssistantThreadRuntime> {
|
|
124
143
|
private readonly _proxyConfigProvider;
|
|
125
|
-
constructor(vercel:
|
|
126
|
-
set vercel(vercel:
|
|
144
|
+
constructor(vercel: ReturnType<typeof useAssistant>);
|
|
145
|
+
set vercel(vercel: ReturnType<typeof useAssistant>);
|
|
127
146
|
onVercelUpdated(): void;
|
|
128
147
|
getModelConfig(): _assistant_ui_react.ModelConfig;
|
|
129
148
|
registerModelConfigProvider(provider: ModelConfigProvider): () => void;
|
|
130
149
|
switchToThread(threadId: string | null): void;
|
|
131
150
|
}
|
|
132
151
|
|
|
133
|
-
declare const useVercelUseAssistantRuntime: (assistantHelpers:
|
|
152
|
+
declare const useVercelUseAssistantRuntime: (assistantHelpers: ReturnType<typeof useAssistant>) => VercelUseAssistantRuntime;
|
|
134
153
|
|
|
135
154
|
declare const getVercelAIMessage: (message: ThreadMessage) => Message[] | undefined;
|
|
136
155
|
|
package/dist/index.js
CHANGED
|
@@ -34,6 +34,9 @@ var import_ai = require("ai");
|
|
|
34
34
|
|
|
35
35
|
// src/core/convertToCoreMessage.ts
|
|
36
36
|
var convertToCoreMessage = (message) => {
|
|
37
|
+
if (message.role === "system") {
|
|
38
|
+
return [{ role: "system", content: message.content[0].text }];
|
|
39
|
+
}
|
|
37
40
|
const expandedMessages = [
|
|
38
41
|
{
|
|
39
42
|
role: message.role,
|
|
@@ -92,7 +95,8 @@ var VercelModelAdapter = class {
|
|
|
92
95
|
});
|
|
93
96
|
const content = [];
|
|
94
97
|
for await (const aiPart of fullStream) {
|
|
95
|
-
|
|
98
|
+
const partType = aiPart.type;
|
|
99
|
+
switch (partType) {
|
|
96
100
|
case "text-delta": {
|
|
97
101
|
let part = content.at(-1);
|
|
98
102
|
if (!part || part.type !== "text") {
|
|
@@ -117,19 +121,26 @@ var VercelModelAdapter = class {
|
|
|
117
121
|
}
|
|
118
122
|
case "tool-result": {
|
|
119
123
|
const toolCall = content.findIndex(
|
|
124
|
+
// @ts-expect-error
|
|
120
125
|
(c) => c.type === "tool-call" && c.toolCallId === aiPart.toolCallId
|
|
121
126
|
);
|
|
122
127
|
if (toolCall === -1) {
|
|
123
128
|
throw new Error(
|
|
129
|
+
// @ts-expect-error
|
|
124
130
|
`Tool call ${aiPart.toolCallId} not found in the content stream. This is likely an internal bug in assistant-ui.`
|
|
125
131
|
);
|
|
126
132
|
}
|
|
127
133
|
content[toolCall] = {
|
|
128
134
|
...content[toolCall],
|
|
135
|
+
// @ts-expect-error
|
|
129
136
|
result: aiPart.result
|
|
130
137
|
};
|
|
131
138
|
break;
|
|
132
139
|
}
|
|
140
|
+
default: {
|
|
141
|
+
const unhandledType = partType;
|
|
142
|
+
throw new Error(`Unknown content part type: ${unhandledType}`);
|
|
143
|
+
}
|
|
133
144
|
}
|
|
134
145
|
onUpdate({ content });
|
|
135
146
|
}
|
|
@@ -138,9 +149,12 @@ var VercelModelAdapter = class {
|
|
|
138
149
|
};
|
|
139
150
|
|
|
140
151
|
// src/rsc/useVercelRSCRuntime.tsx
|
|
141
|
-
var
|
|
152
|
+
var import_react4 = require("react");
|
|
142
153
|
|
|
143
154
|
// src/rsc/VercelRSCRuntime.tsx
|
|
155
|
+
var import_react3 = require("@assistant-ui/react");
|
|
156
|
+
|
|
157
|
+
// src/rsc/VercelRSCThreadRuntime.tsx
|
|
144
158
|
var import_react2 = require("@assistant-ui/react");
|
|
145
159
|
var import_zustand = require("zustand");
|
|
146
160
|
|
|
@@ -175,7 +189,7 @@ var vercelToThreadMessage = (converter, rawMessage) => {
|
|
|
175
189
|
role: message.role,
|
|
176
190
|
content: [{ type: "ui", display: message.display }],
|
|
177
191
|
createdAt: message.createdAt ?? /* @__PURE__ */ new Date(),
|
|
178
|
-
...{ status: "done" },
|
|
192
|
+
...{ status: { type: "done" } },
|
|
179
193
|
[symbolInnerRSCMessage]: rawMessage
|
|
180
194
|
};
|
|
181
195
|
};
|
|
@@ -193,30 +207,15 @@ var useVercelRSCSync = (adapter, updateData) => {
|
|
|
193
207
|
}, [updateData, converter, convertCallback, adapter.messages]);
|
|
194
208
|
};
|
|
195
209
|
|
|
196
|
-
// src/rsc/
|
|
197
|
-
var { ProxyConfigProvider
|
|
210
|
+
// src/rsc/VercelRSCThreadRuntime.tsx
|
|
211
|
+
var { ProxyConfigProvider } = import_react2.INTERNAL;
|
|
198
212
|
var EMPTY_BRANCHES = Object.freeze([]);
|
|
199
|
-
var
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
this.thread.adapter = adapter;
|
|
206
|
-
}
|
|
207
|
-
onAdapterUpdated() {
|
|
208
|
-
return this.thread.onAdapterUpdated();
|
|
209
|
-
}
|
|
210
|
-
getModelConfig() {
|
|
211
|
-
return this._proxyConfigProvider.getModelConfig();
|
|
212
|
-
}
|
|
213
|
-
registerModelConfigProvider(provider) {
|
|
214
|
-
return this._proxyConfigProvider.registerModelConfigProvider(provider);
|
|
215
|
-
}
|
|
216
|
-
switchToThread() {
|
|
217
|
-
throw new Error("VercelRSCRuntime does not support switching threads");
|
|
218
|
-
}
|
|
219
|
-
};
|
|
213
|
+
var CAPABILITIES = Object.freeze({
|
|
214
|
+
edit: false,
|
|
215
|
+
reload: false,
|
|
216
|
+
cancel: false,
|
|
217
|
+
copy: false
|
|
218
|
+
});
|
|
220
219
|
var VercelRSCThreadRuntime = class {
|
|
221
220
|
constructor(adapter) {
|
|
222
221
|
this.adapter = adapter;
|
|
@@ -225,6 +224,7 @@ var VercelRSCThreadRuntime = class {
|
|
|
225
224
|
}));
|
|
226
225
|
}
|
|
227
226
|
useAdapter;
|
|
227
|
+
capabilities = CAPABILITIES;
|
|
228
228
|
_subscriptions = /* @__PURE__ */ new Set();
|
|
229
229
|
isRunning = false;
|
|
230
230
|
messages = [];
|
|
@@ -261,11 +261,7 @@ var VercelRSCThreadRuntime = class {
|
|
|
261
261
|
await this.withRunning(this.adapter.reload(parentId));
|
|
262
262
|
}
|
|
263
263
|
cancelRun() {
|
|
264
|
-
|
|
265
|
-
console.warn(
|
|
266
|
-
"Run cancellation is not supported by VercelRSCAssistantProvider."
|
|
267
|
-
);
|
|
268
|
-
}
|
|
264
|
+
throw new Error("VercelRSCRuntime does not support cancelling runs.");
|
|
269
265
|
}
|
|
270
266
|
subscribe(callback) {
|
|
271
267
|
this._subscriptions.add(callback);
|
|
@@ -290,26 +286,50 @@ var VercelRSCThreadRuntime = class {
|
|
|
290
286
|
}
|
|
291
287
|
};
|
|
292
288
|
|
|
289
|
+
// src/rsc/VercelRSCRuntime.tsx
|
|
290
|
+
var { BaseAssistantRuntime } = import_react3.INTERNAL;
|
|
291
|
+
var VercelRSCRuntime = class extends BaseAssistantRuntime {
|
|
292
|
+
_proxyConfigProvider = new ProxyConfigProvider();
|
|
293
|
+
constructor(adapter) {
|
|
294
|
+
super(new VercelRSCThreadRuntime(adapter));
|
|
295
|
+
}
|
|
296
|
+
set adapter(adapter) {
|
|
297
|
+
this.thread.adapter = adapter;
|
|
298
|
+
}
|
|
299
|
+
onAdapterUpdated() {
|
|
300
|
+
return this.thread.onAdapterUpdated();
|
|
301
|
+
}
|
|
302
|
+
getModelConfig() {
|
|
303
|
+
return this._proxyConfigProvider.getModelConfig();
|
|
304
|
+
}
|
|
305
|
+
registerModelConfigProvider(provider) {
|
|
306
|
+
return this._proxyConfigProvider.registerModelConfigProvider(provider);
|
|
307
|
+
}
|
|
308
|
+
switchToThread() {
|
|
309
|
+
throw new Error("VercelRSCRuntime does not support switching threads");
|
|
310
|
+
}
|
|
311
|
+
};
|
|
312
|
+
|
|
293
313
|
// src/rsc/useVercelRSCRuntime.tsx
|
|
294
314
|
var useVercelRSCRuntime = (adapter) => {
|
|
295
|
-
const [runtime] = (0,
|
|
296
|
-
(0,
|
|
315
|
+
const [runtime] = (0, import_react4.useState)(() => new VercelRSCRuntime(adapter));
|
|
316
|
+
(0, import_react4.useInsertionEffect)(() => {
|
|
297
317
|
runtime.adapter = adapter;
|
|
298
318
|
});
|
|
299
|
-
(0,
|
|
319
|
+
(0, import_react4.useEffect)(() => {
|
|
300
320
|
runtime.onAdapterUpdated();
|
|
301
321
|
});
|
|
302
322
|
return runtime;
|
|
303
323
|
};
|
|
304
324
|
|
|
305
325
|
// src/ui/use-chat/useVercelUseChatRuntime.tsx
|
|
306
|
-
var
|
|
326
|
+
var import_react10 = require("react");
|
|
307
327
|
|
|
308
328
|
// src/ui/use-chat/VercelUseChatRuntime.tsx
|
|
309
|
-
var
|
|
329
|
+
var import_react9 = require("@assistant-ui/react");
|
|
310
330
|
|
|
311
331
|
// src/ui/use-chat/VercelUseChatThreadRuntime.tsx
|
|
312
|
-
var
|
|
332
|
+
var import_react8 = require("@assistant-ui/react");
|
|
313
333
|
var import_zustand2 = require("zustand");
|
|
314
334
|
|
|
315
335
|
// src/ui/getVercelAIMessage.tsx
|
|
@@ -333,11 +353,11 @@ var sliceMessagesUntil = (messages, messageId) => {
|
|
|
333
353
|
};
|
|
334
354
|
|
|
335
355
|
// src/ui/utils/useVercelAIComposerSync.tsx
|
|
336
|
-
var
|
|
337
|
-
var
|
|
356
|
+
var import_react5 = require("@assistant-ui/react");
|
|
357
|
+
var import_react6 = require("react");
|
|
338
358
|
var useVercelAIComposerSync = (vercel) => {
|
|
339
|
-
const { useComposer } = (0,
|
|
340
|
-
(0,
|
|
359
|
+
const { useComposer } = (0, import_react5.useThreadContext)();
|
|
360
|
+
(0, import_react6.useEffect)(() => {
|
|
341
361
|
useComposer.setState({
|
|
342
362
|
value: vercel.input,
|
|
343
363
|
setValue: vercel.setInput
|
|
@@ -346,7 +366,7 @@ var useVercelAIComposerSync = (vercel) => {
|
|
|
346
366
|
};
|
|
347
367
|
|
|
348
368
|
// src/ui/utils/useVercelAIThreadSync.tsx
|
|
349
|
-
var
|
|
369
|
+
var import_react7 = require("react");
|
|
350
370
|
var getIsRunning = (vercel) => {
|
|
351
371
|
if ("isLoading" in vercel) return vercel.isLoading;
|
|
352
372
|
return vercel.status === "in_progress";
|
|
@@ -371,6 +391,12 @@ var vercelToThreadMessage2 = (messages, status) => {
|
|
|
371
391
|
role: "user",
|
|
372
392
|
content: [{ type: "text", text: firstMessage.content }]
|
|
373
393
|
};
|
|
394
|
+
case "system":
|
|
395
|
+
return {
|
|
396
|
+
...common,
|
|
397
|
+
role: "system",
|
|
398
|
+
content: [{ type: "text", text: firstMessage.content }]
|
|
399
|
+
};
|
|
374
400
|
case "data":
|
|
375
401
|
case "assistant": {
|
|
376
402
|
const res = {
|
|
@@ -406,8 +432,9 @@ var vercelToThreadMessage2 = (messages, status) => {
|
|
|
406
432
|
return res;
|
|
407
433
|
}
|
|
408
434
|
default:
|
|
435
|
+
const _unsupported = firstMessage.role;
|
|
409
436
|
throw new Error(
|
|
410
|
-
`
|
|
437
|
+
`You have a message with an unsupported role. The role ${_unsupported} is not supported.`
|
|
411
438
|
);
|
|
412
439
|
}
|
|
413
440
|
};
|
|
@@ -440,12 +467,14 @@ var shallowArrayEqual = (a, b) => {
|
|
|
440
467
|
};
|
|
441
468
|
var useVercelAIThreadSync = (vercel, updateData) => {
|
|
442
469
|
const isRunning = getIsRunning(vercel);
|
|
443
|
-
const converter = (0,
|
|
444
|
-
(0,
|
|
470
|
+
const converter = (0, import_react7.useMemo)(() => new ThreadMessageConverter(), []);
|
|
471
|
+
(0, import_react7.useEffect)(() => {
|
|
445
472
|
const lastMessageId = vercel.messages.at(-1)?.id;
|
|
446
473
|
const convertCallback = (messages2, cache) => {
|
|
447
|
-
const status =
|
|
448
|
-
|
|
474
|
+
const status = {
|
|
475
|
+
type: lastMessageId === messages2[0].id && isRunning ? "in_progress" : "done"
|
|
476
|
+
};
|
|
477
|
+
if (cache && shallowArrayEqual(cache.content, messages2) && (cache.role !== "assistant" || cache.status.type === status.type))
|
|
449
478
|
return cache;
|
|
450
479
|
return vercelToThreadMessage2(messages2, status);
|
|
451
480
|
};
|
|
@@ -459,10 +488,16 @@ var useVercelAIThreadSync = (vercel, updateData) => {
|
|
|
459
488
|
};
|
|
460
489
|
|
|
461
490
|
// src/ui/use-chat/VercelUseChatThreadRuntime.tsx
|
|
462
|
-
var { MessageRepository } =
|
|
491
|
+
var { MessageRepository } = import_react8.INTERNAL;
|
|
463
492
|
var hasUpcomingMessage = (isRunning, messages) => {
|
|
464
493
|
return isRunning && messages[messages.length - 1]?.role !== "assistant";
|
|
465
494
|
};
|
|
495
|
+
var CAPABILITIES2 = Object.freeze({
|
|
496
|
+
edit: true,
|
|
497
|
+
reload: true,
|
|
498
|
+
cancel: true,
|
|
499
|
+
copy: true
|
|
500
|
+
});
|
|
466
501
|
var VercelUseChatThreadRuntime = class {
|
|
467
502
|
constructor(vercel) {
|
|
468
503
|
this.vercel = vercel;
|
|
@@ -474,6 +509,7 @@ var VercelUseChatThreadRuntime = class {
|
|
|
474
509
|
repository = new MessageRepository();
|
|
475
510
|
assistantOptimisticId = null;
|
|
476
511
|
useVercel;
|
|
512
|
+
capabilities = CAPABILITIES2;
|
|
477
513
|
messages = [];
|
|
478
514
|
isRunning = false;
|
|
479
515
|
getBranches(messageId) {
|
|
@@ -566,13 +602,13 @@ var VercelUseChatThreadRuntime = class {
|
|
|
566
602
|
useVercelAIComposerSync(vercel);
|
|
567
603
|
return null;
|
|
568
604
|
};
|
|
569
|
-
addToolResult(toolCallId, result) {
|
|
605
|
+
addToolResult({ toolCallId, result }) {
|
|
570
606
|
this.vercel.addToolResult({ toolCallId, result });
|
|
571
607
|
}
|
|
572
608
|
};
|
|
573
609
|
|
|
574
610
|
// src/ui/use-chat/VercelUseChatRuntime.tsx
|
|
575
|
-
var { ProxyConfigProvider: ProxyConfigProvider2, BaseAssistantRuntime: BaseAssistantRuntime2 } =
|
|
611
|
+
var { ProxyConfigProvider: ProxyConfigProvider2, BaseAssistantRuntime: BaseAssistantRuntime2 } = import_react9.INTERNAL;
|
|
576
612
|
var VercelUseChatRuntime = class extends BaseAssistantRuntime2 {
|
|
577
613
|
_proxyConfigProvider = new ProxyConfigProvider2();
|
|
578
614
|
constructor(vercel) {
|
|
@@ -606,25 +642,31 @@ var VercelUseChatRuntime = class extends BaseAssistantRuntime2 {
|
|
|
606
642
|
|
|
607
643
|
// src/ui/use-chat/useVercelUseChatRuntime.tsx
|
|
608
644
|
var useVercelUseChatRuntime = (chatHelpers) => {
|
|
609
|
-
const [runtime] = (0,
|
|
610
|
-
(0,
|
|
645
|
+
const [runtime] = (0, import_react10.useState)(() => new VercelUseChatRuntime(chatHelpers));
|
|
646
|
+
(0, import_react10.useInsertionEffect)(() => {
|
|
611
647
|
runtime.vercel = chatHelpers;
|
|
612
648
|
});
|
|
613
|
-
(0,
|
|
649
|
+
(0, import_react10.useEffect)(() => {
|
|
614
650
|
runtime.onVercelUpdated();
|
|
615
651
|
});
|
|
616
652
|
return runtime;
|
|
617
653
|
};
|
|
618
654
|
|
|
619
655
|
// src/ui/use-assistant/useVercelUseAssistantRuntime.tsx
|
|
620
|
-
var
|
|
656
|
+
var import_react12 = require("react");
|
|
621
657
|
|
|
622
658
|
// src/ui/use-assistant/VercelUseAssistantRuntime.tsx
|
|
623
|
-
var
|
|
659
|
+
var import_react11 = require("@assistant-ui/react");
|
|
624
660
|
|
|
625
661
|
// src/ui/use-assistant/VercelUseAssistantThreadRuntime.tsx
|
|
626
662
|
var import_zustand3 = require("zustand");
|
|
627
663
|
var EMPTY_BRANCHES2 = Object.freeze([]);
|
|
664
|
+
var CAPABILITIES3 = Object.freeze({
|
|
665
|
+
edit: false,
|
|
666
|
+
reload: false,
|
|
667
|
+
cancel: false,
|
|
668
|
+
copy: true
|
|
669
|
+
});
|
|
628
670
|
var VercelUseAssistantThreadRuntime = class {
|
|
629
671
|
constructor(vercel) {
|
|
630
672
|
this.vercel = vercel;
|
|
@@ -633,6 +675,7 @@ var VercelUseAssistantThreadRuntime = class {
|
|
|
633
675
|
}));
|
|
634
676
|
}
|
|
635
677
|
_subscriptions = /* @__PURE__ */ new Set();
|
|
678
|
+
capabilities = CAPABILITIES3;
|
|
636
679
|
useVercel;
|
|
637
680
|
messages = [];
|
|
638
681
|
isRunning = false;
|
|
@@ -680,7 +723,7 @@ var VercelUseAssistantThreadRuntime = class {
|
|
|
680
723
|
vm.push({
|
|
681
724
|
id: "__optimistic__result",
|
|
682
725
|
createdAt: /* @__PURE__ */ new Date(),
|
|
683
|
-
status: "in_progress",
|
|
726
|
+
status: { type: "in_progress" },
|
|
684
727
|
role: "assistant",
|
|
685
728
|
content: [{ type: "text", text: "" }]
|
|
686
729
|
});
|
|
@@ -703,7 +746,7 @@ var VercelUseAssistantThreadRuntime = class {
|
|
|
703
746
|
};
|
|
704
747
|
|
|
705
748
|
// src/ui/use-assistant/VercelUseAssistantRuntime.tsx
|
|
706
|
-
var { ProxyConfigProvider: ProxyConfigProvider3, BaseAssistantRuntime: BaseAssistantRuntime3 } =
|
|
749
|
+
var { ProxyConfigProvider: ProxyConfigProvider3, BaseAssistantRuntime: BaseAssistantRuntime3 } = import_react11.INTERNAL;
|
|
707
750
|
var hasUpcomingMessage2 = (isRunning, messages) => {
|
|
708
751
|
return isRunning && messages[messages.length - 1]?.role !== "assistant";
|
|
709
752
|
};
|
|
@@ -738,13 +781,13 @@ var VercelUseAssistantRuntime = class extends BaseAssistantRuntime3 {
|
|
|
738
781
|
|
|
739
782
|
// src/ui/use-assistant/useVercelUseAssistantRuntime.tsx
|
|
740
783
|
var useVercelUseAssistantRuntime = (assistantHelpers) => {
|
|
741
|
-
const [runtime] = (0,
|
|
784
|
+
const [runtime] = (0, import_react12.useState)(
|
|
742
785
|
() => new VercelUseAssistantRuntime(assistantHelpers)
|
|
743
786
|
);
|
|
744
|
-
(0,
|
|
787
|
+
(0, import_react12.useInsertionEffect)(() => {
|
|
745
788
|
runtime.vercel = assistantHelpers;
|
|
746
789
|
});
|
|
747
|
-
(0,
|
|
790
|
+
(0, import_react12.useEffect)(() => {
|
|
748
791
|
runtime.onVercelUpdated();
|
|
749
792
|
});
|
|
750
793
|
return runtime;
|