@assistant-ui/react-ai-sdk 0.5.1 → 0.5.3

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 CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _assistant_ui_react from '@assistant-ui/react';
2
- import { AppendMessage, ReactThreadRuntime, ThreadMessage, Unsubscribe, ModelConfigProvider, INTERNAL, AddToolResultOptions } from '@assistant-ui/react';
2
+ import { AppendMessage, ThreadMessage, ReactThreadRuntime, Unsubscribe, AddToolResultOptions, ModelConfigProvider, INTERNAL } from '@assistant-ui/react';
3
3
  import { ReactNode } from 'react';
4
4
  import { useChat, useAssistant } from 'ai/react';
5
5
  import { Message } from 'ai';
@@ -16,53 +16,28 @@ type RSCMessageConverter<T> = {
16
16
  };
17
17
  type VercelRSCAdapterBase<T> = {
18
18
  messages: T[];
19
- append: (message: AppendMessage) => Promise<void>;
19
+ onNew?: (message: AppendMessage) => Promise<void>;
20
+ onEdit?: ((message: AppendMessage) => Promise<void>) | undefined;
21
+ onReload?: ((parentId: string | null) => Promise<void>) | undefined;
22
+ convertMessage?: ((message: T) => VercelRSCMessage) | undefined;
23
+ /**
24
+ * @deprecated Use `onNew` instead. This will be removed in 0.6.0.
25
+ */
26
+ append?: (message: AppendMessage) => Promise<void>;
27
+ /**
28
+ * @deprecated Use `onEdit` instead. This will be removed in 0.6.0.
29
+ */
20
30
  edit?: ((message: AppendMessage) => Promise<void>) | undefined;
31
+ /**
32
+ * @deprecated Use `onReload` instead. This will be removed in 0.6.0.
33
+ */
21
34
  reload?: ((parentId: string | null) => Promise<void>) | undefined;
22
- convertMessage?: ((message: T) => VercelRSCMessage) | undefined;
23
35
  };
24
36
  type VercelRSCAdapter<T = VercelRSCMessage> = VercelRSCAdapterBase<T> & (T extends VercelRSCMessage ? object : RSCMessageConverter<T>);
25
37
 
26
- declare class VercelRSCThreadRuntime<T extends WeakKey = VercelRSCMessage> implements ReactThreadRuntime {
27
- adapter: VercelRSCAdapter<T>;
28
- private useAdapter;
29
- readonly capabilities: Readonly<{
30
- edit: false;
31
- reload: false;
32
- cancel: false;
33
- copy: false;
34
- }>;
35
- private _subscriptions;
36
- isRunning: boolean;
37
- messages: ThreadMessage[];
38
- constructor(adapter: VercelRSCAdapter<T>);
39
- private withRunning;
40
- getBranches(): readonly string[];
41
- switchToBranch(): void;
42
- append(message: AppendMessage): Promise<void>;
43
- startRun(parentId: string | null): Promise<void>;
44
- cancelRun(): void;
45
- subscribe(callback: () => void): Unsubscribe;
46
- onAdapterUpdated(): void;
47
- private updateData;
48
- unstable_synchronizer: () => null;
49
- addToolResult(): void;
50
- }
51
-
52
- declare const BaseAssistantRuntime$2: typeof INTERNAL.BaseAssistantRuntime;
53
- declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$2<VercelRSCThreadRuntime<T>> {
54
- private readonly _proxyConfigProvider;
55
- constructor(adapter: VercelRSCAdapter<T>);
56
- set adapter(adapter: VercelRSCAdapter<T>);
57
- onAdapterUpdated(): void;
58
- getModelConfig(): _assistant_ui_react.ModelConfig;
59
- registerModelConfigProvider(provider: ModelConfigProvider): () => void;
60
- switchToThread(): void;
61
- }
62
-
63
- declare const useVercelRSCRuntime: <T extends WeakKey>(adapter: VercelRSCAdapter<T>) => VercelRSCRuntime<T>;
38
+ declare const useVercelRSCRuntime: <T extends WeakKey>(adapter: VercelRSCAdapter<T>) => _assistant_ui_react.ExternalStoreRuntime;
64
39
 
65
- declare const getVercelRSCMessage: <T>(message: ThreadMessage) => T | undefined;
40
+ declare const getVercelRSCMessage: (message: ThreadMessage) => unknown;
66
41
 
67
42
  declare class VercelUseChatThreadRuntime implements ReactThreadRuntime {
68
43
  vercel: ReturnType<typeof useChat>;
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _assistant_ui_react from '@assistant-ui/react';
2
- import { AppendMessage, ReactThreadRuntime, ThreadMessage, Unsubscribe, ModelConfigProvider, INTERNAL, AddToolResultOptions } from '@assistant-ui/react';
2
+ import { AppendMessage, ThreadMessage, ReactThreadRuntime, Unsubscribe, AddToolResultOptions, ModelConfigProvider, INTERNAL } from '@assistant-ui/react';
3
3
  import { ReactNode } from 'react';
4
4
  import { useChat, useAssistant } from 'ai/react';
5
5
  import { Message } from 'ai';
@@ -16,53 +16,28 @@ type RSCMessageConverter<T> = {
16
16
  };
17
17
  type VercelRSCAdapterBase<T> = {
18
18
  messages: T[];
19
- append: (message: AppendMessage) => Promise<void>;
19
+ onNew?: (message: AppendMessage) => Promise<void>;
20
+ onEdit?: ((message: AppendMessage) => Promise<void>) | undefined;
21
+ onReload?: ((parentId: string | null) => Promise<void>) | undefined;
22
+ convertMessage?: ((message: T) => VercelRSCMessage) | undefined;
23
+ /**
24
+ * @deprecated Use `onNew` instead. This will be removed in 0.6.0.
25
+ */
26
+ append?: (message: AppendMessage) => Promise<void>;
27
+ /**
28
+ * @deprecated Use `onEdit` instead. This will be removed in 0.6.0.
29
+ */
20
30
  edit?: ((message: AppendMessage) => Promise<void>) | undefined;
31
+ /**
32
+ * @deprecated Use `onReload` instead. This will be removed in 0.6.0.
33
+ */
21
34
  reload?: ((parentId: string | null) => Promise<void>) | undefined;
22
- convertMessage?: ((message: T) => VercelRSCMessage) | undefined;
23
35
  };
24
36
  type VercelRSCAdapter<T = VercelRSCMessage> = VercelRSCAdapterBase<T> & (T extends VercelRSCMessage ? object : RSCMessageConverter<T>);
25
37
 
26
- declare class VercelRSCThreadRuntime<T extends WeakKey = VercelRSCMessage> implements ReactThreadRuntime {
27
- adapter: VercelRSCAdapter<T>;
28
- private useAdapter;
29
- readonly capabilities: Readonly<{
30
- edit: false;
31
- reload: false;
32
- cancel: false;
33
- copy: false;
34
- }>;
35
- private _subscriptions;
36
- isRunning: boolean;
37
- messages: ThreadMessage[];
38
- constructor(adapter: VercelRSCAdapter<T>);
39
- private withRunning;
40
- getBranches(): readonly string[];
41
- switchToBranch(): void;
42
- append(message: AppendMessage): Promise<void>;
43
- startRun(parentId: string | null): Promise<void>;
44
- cancelRun(): void;
45
- subscribe(callback: () => void): Unsubscribe;
46
- onAdapterUpdated(): void;
47
- private updateData;
48
- unstable_synchronizer: () => null;
49
- addToolResult(): void;
50
- }
51
-
52
- declare const BaseAssistantRuntime$2: typeof INTERNAL.BaseAssistantRuntime;
53
- declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$2<VercelRSCThreadRuntime<T>> {
54
- private readonly _proxyConfigProvider;
55
- constructor(adapter: VercelRSCAdapter<T>);
56
- set adapter(adapter: VercelRSCAdapter<T>);
57
- onAdapterUpdated(): void;
58
- getModelConfig(): _assistant_ui_react.ModelConfig;
59
- registerModelConfigProvider(provider: ModelConfigProvider): () => void;
60
- switchToThread(): void;
61
- }
62
-
63
- declare const useVercelRSCRuntime: <T extends WeakKey>(adapter: VercelRSCAdapter<T>) => VercelRSCRuntime<T>;
38
+ declare const useVercelRSCRuntime: <T extends WeakKey>(adapter: VercelRSCAdapter<T>) => _assistant_ui_react.ExternalStoreRuntime;
64
39
 
65
- declare const getVercelRSCMessage: <T>(message: ThreadMessage) => T | undefined;
40
+ declare const getVercelRSCMessage: (message: ThreadMessage) => unknown;
66
41
 
67
42
  declare class VercelUseChatThreadRuntime implements ReactThreadRuntime {
68
43
  vercel: ReturnType<typeof useChat>;
package/dist/index.js CHANGED
@@ -29,39 +29,7 @@ __export(src_exports, {
29
29
  module.exports = __toCommonJS(src_exports);
30
30
 
31
31
  // src/rsc/useVercelRSCRuntime.tsx
32
- var import_react4 = require("react");
33
-
34
- // src/rsc/VercelRSCRuntime.tsx
35
- var import_react3 = require("@assistant-ui/react");
36
-
37
- // src/rsc/VercelRSCThreadRuntime.tsx
38
- var import_react2 = require("@assistant-ui/react");
39
- var import_zustand = require("zustand");
40
-
41
- // src/rsc/useVercelRSCSync.tsx
42
- var import_react = require("react");
43
-
44
- // src/utils/ThreadMessageConverter.ts
45
- var ThreadMessageConverter = class {
46
- cache = /* @__PURE__ */ new WeakMap();
47
- convertMessages(messages, converter, keyMapper = (key) => key) {
48
- return messages.map((m) => {
49
- const key = keyMapper(m);
50
- const cached = this.cache.get(key);
51
- const newMessage = converter(m, cached);
52
- this.cache.set(key, newMessage);
53
- return newMessage;
54
- });
55
- }
56
- };
57
-
58
- // src/rsc/getVercelRSCMessage.tsx
59
- var symbolInnerRSCMessage = Symbol("innerVercelRSCMessage");
60
- var getVercelRSCMessage = (message) => {
61
- return message[symbolInnerRSCMessage];
62
- };
63
-
64
- // src/rsc/useVercelRSCSync.tsx
32
+ var import_react = require("@assistant-ui/react");
65
33
  var vercelToThreadMessage = (converter, rawMessage) => {
66
34
  const message = converter(rawMessage);
67
35
  return {
@@ -69,152 +37,43 @@ var vercelToThreadMessage = (converter, rawMessage) => {
69
37
  role: message.role,
70
38
  content: [{ type: "ui", display: message.display }],
71
39
  createdAt: message.createdAt ?? /* @__PURE__ */ new Date(),
72
- ...{ status: { type: "complete", reason: "unknown" } },
73
- [symbolInnerRSCMessage]: rawMessage
40
+ ...{ status: { type: "complete", reason: "unknown" } }
74
41
  };
75
42
  };
76
- var useVercelRSCSync = (adapter, updateData) => {
77
- const [converter, convertCallback] = (0, import_react.useMemo)(() => {
78
- const rscConverter = adapter.convertMessage ?? ((m) => m);
79
- const convertCallback2 = (m, cache) => {
80
- if (cache) return cache;
81
- return vercelToThreadMessage(rscConverter, m);
82
- };
83
- return [new ThreadMessageConverter(), convertCallback2];
84
- }, [adapter.convertMessage]);
85
- (0, import_react.useEffect)(() => {
86
- updateData(converter.convertMessages(adapter.messages, convertCallback));
87
- }, [updateData, converter, convertCallback, adapter.messages]);
88
- };
89
-
90
- // src/rsc/VercelRSCThreadRuntime.tsx
91
- var { ProxyConfigProvider } = import_react2.INTERNAL;
92
- var EMPTY_BRANCHES = Object.freeze([]);
93
- var CAPABILITIES = Object.freeze({
94
- edit: false,
95
- reload: false,
96
- cancel: false,
97
- copy: false
98
- });
99
- var VercelRSCThreadRuntime = class {
100
- constructor(adapter) {
101
- this.adapter = adapter;
102
- this.useAdapter = (0, import_zustand.create)(() => ({
103
- adapter
104
- }));
105
- }
106
- useAdapter;
107
- capabilities = CAPABILITIES;
108
- _subscriptions = /* @__PURE__ */ new Set();
109
- isRunning = false;
110
- messages = [];
111
- withRunning = (callback) => {
112
- this.isRunning = true;
113
- return callback.finally(() => {
114
- this.isRunning = false;
115
- });
116
- };
117
- getBranches() {
118
- return EMPTY_BRANCHES;
119
- }
120
- switchToBranch() {
121
- throw new Error(
122
- "Branch switching is not supported by VercelRSCAssistantProvider."
123
- );
124
- }
125
- async append(message) {
126
- if (message.role !== "user")
127
- throw new Error(
128
- "Only appending user messages are supported in VercelRSCRuntime. This is likely an internal bug in assistant-ui."
129
- );
130
- if (message.parentId !== (this.messages.at(-1)?.id ?? null)) {
131
- if (!this.adapter.edit)
132
- throw new Error(
133
- "Message editing is not enabled, please provide an edit callback to VercelRSCAssistantProvider."
134
- );
135
- await this.withRunning(this.adapter.edit(message));
136
- } else {
137
- await this.withRunning(this.adapter.append(message));
138
- }
139
- }
140
- async startRun(parentId) {
141
- if (!this.adapter.reload)
142
- throw new Error(
143
- "Message reloading is not enabled, please provide a reload callback to VercelRSCAssistantProvider."
144
- );
145
- await this.withRunning(this.adapter.reload(parentId));
146
- }
147
- cancelRun() {
148
- throw new Error("VercelRSCRuntime does not support cancelling runs.");
149
- }
150
- subscribe(callback) {
151
- this._subscriptions.add(callback);
152
- return () => this._subscriptions.delete(callback);
153
- }
154
- onAdapterUpdated() {
155
- if (this.useAdapter.getState().adapter !== this.adapter) {
156
- this.useAdapter.setState({ adapter: this.adapter });
157
- }
158
- }
159
- updateData = (messages) => {
160
- this.messages = messages;
161
- for (const callback of this._subscriptions) callback();
162
- };
163
- unstable_synchronizer = () => {
164
- const { adapter } = this.useAdapter();
165
- useVercelRSCSync(adapter, this.updateData);
166
- return null;
43
+ var useVercelRSCRuntime = (adapter) => {
44
+ const onNew = adapter.onNew ?? adapter.append;
45
+ if (!onNew)
46
+ throw new Error("You must pass a onNew function to useVercelRSCRuntime");
47
+ const eAdapter = {
48
+ messages: adapter.messages,
49
+ onNew,
50
+ onEdit: adapter.onEdit ?? adapter.edit,
51
+ onReload: adapter.onReload ?? adapter.reload,
52
+ convertMessage: (m) => vercelToThreadMessage(
53
+ adapter.convertMessage ?? ((m2) => m2),
54
+ m
55
+ )
167
56
  };
168
- addToolResult() {
169
- throw new Error("VercelRSCRuntime does not support adding tool results");
170
- }
171
- };
172
-
173
- // src/rsc/VercelRSCRuntime.tsx
174
- var { BaseAssistantRuntime } = import_react3.INTERNAL;
175
- var VercelRSCRuntime = class extends BaseAssistantRuntime {
176
- _proxyConfigProvider = new ProxyConfigProvider();
177
- constructor(adapter) {
178
- super(new VercelRSCThreadRuntime(adapter));
179
- }
180
- set adapter(adapter) {
181
- this.thread.adapter = adapter;
182
- }
183
- onAdapterUpdated() {
184
- return this.thread.onAdapterUpdated();
185
- }
186
- getModelConfig() {
187
- return this._proxyConfigProvider.getModelConfig();
188
- }
189
- registerModelConfigProvider(provider) {
190
- return this._proxyConfigProvider.registerModelConfigProvider(provider);
191
- }
192
- switchToThread() {
193
- throw new Error("VercelRSCRuntime does not support switching threads");
194
- }
57
+ const runtime = (0, import_react.useExternalStoreRuntime)(eAdapter);
58
+ return runtime;
195
59
  };
196
60
 
197
- // src/rsc/useVercelRSCRuntime.tsx
198
- var useVercelRSCRuntime = (adapter) => {
199
- const [runtime] = (0, import_react4.useState)(() => new VercelRSCRuntime(adapter));
200
- (0, import_react4.useInsertionEffect)(() => {
201
- runtime.adapter = adapter;
202
- });
203
- (0, import_react4.useEffect)(() => {
204
- runtime.onAdapterUpdated();
205
- });
206
- return runtime;
61
+ // src/rsc/getVercelRSCMessage.tsx
62
+ var import_react2 = require("@assistant-ui/react");
63
+ var symbolInnerRSCMessage = Symbol("innerVercelRSCMessage");
64
+ var getVercelRSCMessage = (message) => {
65
+ return (0, import_react2.getExternalStoreMessage)(message);
207
66
  };
208
67
 
209
68
  // src/ui/use-chat/useVercelUseChatRuntime.tsx
210
- var import_react10 = require("react");
69
+ var import_react8 = require("react");
211
70
 
212
71
  // src/ui/use-chat/VercelUseChatRuntime.tsx
213
- var import_react9 = require("@assistant-ui/react");
72
+ var import_react7 = require("@assistant-ui/react");
214
73
 
215
74
  // src/ui/use-chat/VercelUseChatThreadRuntime.tsx
216
- var import_react8 = require("@assistant-ui/react");
217
- var import_zustand2 = require("zustand");
75
+ var import_react6 = require("@assistant-ui/react");
76
+ var import_zustand = require("zustand");
218
77
 
219
78
  // src/ui/getVercelAIMessage.tsx
220
79
  var symbolInnerAIMessage = Symbol("innerVercelAIUIMessage");
@@ -237,11 +96,11 @@ var sliceMessagesUntil = (messages, messageId) => {
237
96
  };
238
97
 
239
98
  // src/ui/utils/useVercelAIComposerSync.tsx
240
- var import_react5 = require("@assistant-ui/react");
241
- var import_react6 = require("react");
99
+ var import_react3 = require("@assistant-ui/react");
100
+ var import_react4 = require("react");
242
101
  var useVercelAIComposerSync = (vercel) => {
243
- const { useComposer } = (0, import_react5.useThreadContext)();
244
- (0, import_react6.useEffect)(() => {
102
+ const { useComposer } = (0, import_react3.useThreadContext)();
103
+ (0, import_react4.useEffect)(() => {
245
104
  useComposer.setState({
246
105
  value: vercel.input,
247
106
  setValue: vercel.setInput
@@ -250,7 +109,23 @@ var useVercelAIComposerSync = (vercel) => {
250
109
  };
251
110
 
252
111
  // src/ui/utils/useVercelAIThreadSync.tsx
253
- var import_react7 = require("react");
112
+ var import_react5 = require("react");
113
+
114
+ // src/utils/ThreadMessageConverter.ts
115
+ var ThreadMessageConverter = class {
116
+ cache = /* @__PURE__ */ new WeakMap();
117
+ convertMessages(messages, converter, keyMapper = (key) => key) {
118
+ return messages.map((m) => {
119
+ const key = keyMapper(m);
120
+ const cached = this.cache.get(key);
121
+ const newMessage = converter(m, cached);
122
+ this.cache.set(key, newMessage);
123
+ return newMessage;
124
+ });
125
+ }
126
+ };
127
+
128
+ // src/ui/utils/useVercelAIThreadSync.tsx
254
129
  var getIsRunning = (vercel) => {
255
130
  if ("isLoading" in vercel) return vercel.isLoading;
256
131
  return vercel.status === "in_progress";
@@ -352,8 +227,8 @@ var shallowArrayEqual = (a, b) => {
352
227
  };
353
228
  var useVercelAIThreadSync = (vercel, updateData) => {
354
229
  const isRunning = getIsRunning(vercel);
355
- const converter = (0, import_react7.useMemo)(() => new ThreadMessageConverter(), []);
356
- (0, import_react7.useEffect)(() => {
230
+ const converter = (0, import_react5.useMemo)(() => new ThreadMessageConverter(), []);
231
+ (0, import_react5.useEffect)(() => {
357
232
  const lastMessageId = vercel.messages.at(-1)?.id;
358
233
  const convertCallback = (messages2, cache) => {
359
234
  const status = lastMessageId === messages2[0].id && isRunning ? {
@@ -376,11 +251,11 @@ var useVercelAIThreadSync = (vercel, updateData) => {
376
251
  };
377
252
 
378
253
  // src/ui/use-chat/VercelUseChatThreadRuntime.tsx
379
- var { MessageRepository } = import_react8.INTERNAL;
254
+ var { MessageRepository } = import_react6.INTERNAL;
380
255
  var hasUpcomingMessage = (isRunning, messages) => {
381
256
  return isRunning && messages[messages.length - 1]?.role !== "assistant";
382
257
  };
383
- var CAPABILITIES2 = Object.freeze({
258
+ var CAPABILITIES = Object.freeze({
384
259
  edit: true,
385
260
  reload: true,
386
261
  cancel: true,
@@ -389,7 +264,7 @@ var CAPABILITIES2 = Object.freeze({
389
264
  var VercelUseChatThreadRuntime = class {
390
265
  constructor(vercel) {
391
266
  this.vercel = vercel;
392
- this.useVercel = (0, import_zustand2.create)(() => ({
267
+ this.useVercel = (0, import_zustand.create)(() => ({
393
268
  vercel
394
269
  }));
395
270
  }
@@ -397,7 +272,7 @@ var VercelUseChatThreadRuntime = class {
397
272
  repository = new MessageRepository();
398
273
  assistantOptimisticId = null;
399
274
  useVercel;
400
- capabilities = CAPABILITIES2;
275
+ capabilities = CAPABILITIES;
401
276
  messages = [];
402
277
  isRunning = false;
403
278
  getBranches(messageId) {
@@ -477,7 +352,7 @@ var VercelUseChatThreadRuntime = class {
477
352
  vm.at(-1)?.id ?? null,
478
353
  {
479
354
  role: "assistant",
480
- content: [{ type: "text", text: "" }]
355
+ content: []
481
356
  }
482
357
  );
483
358
  }
@@ -500,9 +375,9 @@ var VercelUseChatThreadRuntime = class {
500
375
  };
501
376
 
502
377
  // src/ui/use-chat/VercelUseChatRuntime.tsx
503
- var { ProxyConfigProvider: ProxyConfigProvider2, BaseAssistantRuntime: BaseAssistantRuntime2 } = import_react9.INTERNAL;
504
- var VercelUseChatRuntime = class extends BaseAssistantRuntime2 {
505
- _proxyConfigProvider = new ProxyConfigProvider2();
378
+ var { ProxyConfigProvider, BaseAssistantRuntime } = import_react7.INTERNAL;
379
+ var VercelUseChatRuntime = class extends BaseAssistantRuntime {
380
+ _proxyConfigProvider = new ProxyConfigProvider();
506
381
  constructor(vercel) {
507
382
  super(new VercelUseChatThreadRuntime(vercel));
508
383
  }
@@ -534,26 +409,26 @@ var VercelUseChatRuntime = class extends BaseAssistantRuntime2 {
534
409
 
535
410
  // src/ui/use-chat/useVercelUseChatRuntime.tsx
536
411
  var useVercelUseChatRuntime = (chatHelpers) => {
537
- const [runtime] = (0, import_react10.useState)(() => new VercelUseChatRuntime(chatHelpers));
538
- (0, import_react10.useInsertionEffect)(() => {
412
+ const [runtime] = (0, import_react8.useState)(() => new VercelUseChatRuntime(chatHelpers));
413
+ (0, import_react8.useInsertionEffect)(() => {
539
414
  runtime.vercel = chatHelpers;
540
415
  });
541
- (0, import_react10.useEffect)(() => {
416
+ (0, import_react8.useEffect)(() => {
542
417
  runtime.onVercelUpdated();
543
418
  });
544
419
  return runtime;
545
420
  };
546
421
 
547
422
  // src/ui/use-assistant/useVercelUseAssistantRuntime.tsx
548
- var import_react12 = require("react");
423
+ var import_react10 = require("react");
549
424
 
550
425
  // src/ui/use-assistant/VercelUseAssistantRuntime.tsx
551
- var import_react11 = require("@assistant-ui/react");
426
+ var import_react9 = require("@assistant-ui/react");
552
427
 
553
428
  // src/ui/use-assistant/VercelUseAssistantThreadRuntime.tsx
554
- var import_zustand3 = require("zustand");
555
- var EMPTY_BRANCHES2 = Object.freeze([]);
556
- var CAPABILITIES3 = Object.freeze({
429
+ var import_zustand2 = require("zustand");
430
+ var EMPTY_BRANCHES = Object.freeze([]);
431
+ var CAPABILITIES2 = Object.freeze({
557
432
  edit: false,
558
433
  reload: false,
559
434
  cancel: false,
@@ -562,17 +437,17 @@ var CAPABILITIES3 = Object.freeze({
562
437
  var VercelUseAssistantThreadRuntime = class {
563
438
  constructor(vercel) {
564
439
  this.vercel = vercel;
565
- this.useVercel = (0, import_zustand3.create)(() => ({
440
+ this.useVercel = (0, import_zustand2.create)(() => ({
566
441
  vercel
567
442
  }));
568
443
  }
569
444
  _subscriptions = /* @__PURE__ */ new Set();
570
- capabilities = CAPABILITIES3;
445
+ capabilities = CAPABILITIES2;
571
446
  useVercel;
572
447
  messages = [];
573
448
  isRunning = false;
574
449
  getBranches() {
575
- return EMPTY_BRANCHES2;
450
+ return EMPTY_BRANCHES;
576
451
  }
577
452
  switchToBranch() {
578
453
  throw new Error(
@@ -621,7 +496,7 @@ var VercelUseAssistantThreadRuntime = class {
621
496
  createdAt: /* @__PURE__ */ new Date(),
622
497
  status: { type: "running" },
623
498
  role: "assistant",
624
- content: [{ type: "text", text: "" }]
499
+ content: []
625
500
  });
626
501
  }
627
502
  this.messages = vm;
@@ -642,12 +517,12 @@ var VercelUseAssistantThreadRuntime = class {
642
517
  };
643
518
 
644
519
  // src/ui/use-assistant/VercelUseAssistantRuntime.tsx
645
- var { ProxyConfigProvider: ProxyConfigProvider3, BaseAssistantRuntime: BaseAssistantRuntime3 } = import_react11.INTERNAL;
520
+ var { ProxyConfigProvider: ProxyConfigProvider2, BaseAssistantRuntime: BaseAssistantRuntime2 } = import_react9.INTERNAL;
646
521
  var hasUpcomingMessage2 = (isRunning, messages) => {
647
522
  return isRunning && messages[messages.length - 1]?.role !== "assistant";
648
523
  };
649
- var VercelUseAssistantRuntime = class extends BaseAssistantRuntime3 {
650
- _proxyConfigProvider = new ProxyConfigProvider3();
524
+ var VercelUseAssistantRuntime = class extends BaseAssistantRuntime2 {
525
+ _proxyConfigProvider = new ProxyConfigProvider2();
651
526
  constructor(vercel) {
652
527
  super(new VercelUseAssistantThreadRuntime(vercel));
653
528
  }
@@ -677,13 +552,13 @@ var VercelUseAssistantRuntime = class extends BaseAssistantRuntime3 {
677
552
 
678
553
  // src/ui/use-assistant/useVercelUseAssistantRuntime.tsx
679
554
  var useVercelUseAssistantRuntime = (assistantHelpers) => {
680
- const [runtime] = (0, import_react12.useState)(
555
+ const [runtime] = (0, import_react10.useState)(
681
556
  () => new VercelUseAssistantRuntime(assistantHelpers)
682
557
  );
683
- (0, import_react12.useInsertionEffect)(() => {
558
+ (0, import_react10.useInsertionEffect)(() => {
684
559
  runtime.vercel = assistantHelpers;
685
560
  });
686
- (0, import_react12.useEffect)(() => {
561
+ (0, import_react10.useEffect)(() => {
687
562
  runtime.onVercelUpdated();
688
563
  });
689
564
  return runtime;