@assistant-ui/react-ai-sdk 0.2.1 → 0.2.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
@@ -31,8 +31,8 @@ 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$1: typeof INTERNAL.BaseAssistantRuntime;
35
- declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$1<VercelRSCThreadRuntime<T>> {
34
+ declare const BaseAssistantRuntime$2: typeof INTERNAL.BaseAssistantRuntime;
35
+ declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$2<VercelRSCThreadRuntime<T>> {
36
36
  private readonly _proxyConfigProvider;
37
37
  constructor(adapter: VercelRSCAdapter<T>);
38
38
  set adapter(adapter: VercelRSCAdapter<T>);
@@ -65,27 +65,15 @@ declare const useVercelRSCRuntime: <T extends WeakKey>(adapter: VercelRSCAdapter
65
65
 
66
66
  declare const getVercelRSCMessage: <T>(message: ThreadMessage) => T | undefined;
67
67
 
68
- type VercelHelpers = ReturnType<typeof useChat> | UseAssistantHelpers;
69
-
70
- declare const BaseAssistantRuntime: typeof INTERNAL.BaseAssistantRuntime;
71
- declare class VercelAIRuntime extends BaseAssistantRuntime<VercelAIThreadRuntime> {
72
- private readonly _proxyConfigProvider;
73
- constructor(vercel: VercelHelpers);
74
- set vercel(vercel: VercelHelpers);
75
- onVercelUpdated(): void;
76
- getModelConfig(): _assistant_ui_react.ModelConfig;
77
- registerModelConfigProvider(provider: ModelConfigProvider): () => void;
78
- switchToThread(threadId: string | null): void;
79
- }
80
- declare class VercelAIThreadRuntime implements ReactThreadRuntime {
81
- vercel: VercelHelpers;
68
+ declare class VercelUseChatThreadRuntime implements ReactThreadRuntime {
69
+ vercel: ReturnType<typeof useChat>;
82
70
  private _subscriptions;
83
71
  private repository;
84
72
  private assistantOptimisticId;
85
73
  private useVercel;
86
74
  messages: ThreadMessage[];
87
75
  isRunning: boolean;
88
- constructor(vercel: VercelHelpers);
76
+ constructor(vercel: ReturnType<typeof useChat>);
89
77
  getBranches(messageId: string): string[];
90
78
  switchToBranch(branchId: string): void;
91
79
  append(message: AppendMessage): Promise<void>;
@@ -99,9 +87,50 @@ declare class VercelAIThreadRuntime implements ReactThreadRuntime {
99
87
  addToolResult(toolCallId: string, result: any): void;
100
88
  }
101
89
 
102
- declare const useVercelUseChatRuntime: (chatHelpers: ReturnType<typeof useChat>) => VercelAIRuntime;
90
+ declare const BaseAssistantRuntime$1: typeof INTERNAL.BaseAssistantRuntime;
91
+ declare class VercelUseChatRuntime extends BaseAssistantRuntime$1<VercelUseChatThreadRuntime> {
92
+ private readonly _proxyConfigProvider;
93
+ constructor(vercel: ReturnType<typeof useChat>);
94
+ set vercel(vercel: ReturnType<typeof useChat>);
95
+ onVercelUpdated(): void;
96
+ getModelConfig(): _assistant_ui_react.ModelConfig;
97
+ registerModelConfigProvider(provider: ModelConfigProvider): () => void;
98
+ switchToThread(threadId: string | null): void;
99
+ }
100
+
101
+ declare const useVercelUseChatRuntime: (chatHelpers: ReturnType<typeof useChat>) => VercelUseChatRuntime;
102
+
103
+ declare class VercelUseAssistantThreadRuntime implements ReactThreadRuntime {
104
+ vercel: UseAssistantHelpers;
105
+ private _subscriptions;
106
+ private useVercel;
107
+ messages: readonly ThreadMessage[];
108
+ isRunning: boolean;
109
+ constructor(vercel: UseAssistantHelpers);
110
+ getBranches(): readonly string[];
111
+ switchToBranch(): void;
112
+ append(message: AppendMessage): Promise<void>;
113
+ startRun(): Promise<void>;
114
+ cancelRun(): void;
115
+ subscribe(callback: () => void): Unsubscribe;
116
+ onVercelUpdated(): void;
117
+ private updateData;
118
+ unstable_synchronizer: () => null;
119
+ addToolResult(): void;
120
+ }
121
+
122
+ declare const BaseAssistantRuntime: typeof INTERNAL.BaseAssistantRuntime;
123
+ declare class VercelUseAssistantRuntime extends BaseAssistantRuntime<VercelUseAssistantThreadRuntime> {
124
+ private readonly _proxyConfigProvider;
125
+ constructor(vercel: UseAssistantHelpers);
126
+ set vercel(vercel: UseAssistantHelpers);
127
+ onVercelUpdated(): void;
128
+ getModelConfig(): _assistant_ui_react.ModelConfig;
129
+ registerModelConfigProvider(provider: ModelConfigProvider): () => void;
130
+ switchToThread(threadId: string | null): void;
131
+ }
103
132
 
104
- declare const useVercelUseAssistantRuntime: (assistantHelpers: UseAssistantHelpers) => VercelAIRuntime;
133
+ declare const useVercelUseAssistantRuntime: (assistantHelpers: UseAssistantHelpers) => VercelUseAssistantRuntime;
105
134
 
106
135
  declare const getVercelAIMessage: (message: ThreadMessage) => Message[] | undefined;
107
136
 
package/dist/index.d.ts CHANGED
@@ -31,8 +31,8 @@ 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$1: typeof INTERNAL.BaseAssistantRuntime;
35
- declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$1<VercelRSCThreadRuntime<T>> {
34
+ declare const BaseAssistantRuntime$2: typeof INTERNAL.BaseAssistantRuntime;
35
+ declare class VercelRSCRuntime<T extends WeakKey = VercelRSCMessage> extends BaseAssistantRuntime$2<VercelRSCThreadRuntime<T>> {
36
36
  private readonly _proxyConfigProvider;
37
37
  constructor(adapter: VercelRSCAdapter<T>);
38
38
  set adapter(adapter: VercelRSCAdapter<T>);
@@ -65,27 +65,15 @@ declare const useVercelRSCRuntime: <T extends WeakKey>(adapter: VercelRSCAdapter
65
65
 
66
66
  declare const getVercelRSCMessage: <T>(message: ThreadMessage) => T | undefined;
67
67
 
68
- type VercelHelpers = ReturnType<typeof useChat> | UseAssistantHelpers;
69
-
70
- declare const BaseAssistantRuntime: typeof INTERNAL.BaseAssistantRuntime;
71
- declare class VercelAIRuntime extends BaseAssistantRuntime<VercelAIThreadRuntime> {
72
- private readonly _proxyConfigProvider;
73
- constructor(vercel: VercelHelpers);
74
- set vercel(vercel: VercelHelpers);
75
- onVercelUpdated(): void;
76
- getModelConfig(): _assistant_ui_react.ModelConfig;
77
- registerModelConfigProvider(provider: ModelConfigProvider): () => void;
78
- switchToThread(threadId: string | null): void;
79
- }
80
- declare class VercelAIThreadRuntime implements ReactThreadRuntime {
81
- vercel: VercelHelpers;
68
+ declare class VercelUseChatThreadRuntime implements ReactThreadRuntime {
69
+ vercel: ReturnType<typeof useChat>;
82
70
  private _subscriptions;
83
71
  private repository;
84
72
  private assistantOptimisticId;
85
73
  private useVercel;
86
74
  messages: ThreadMessage[];
87
75
  isRunning: boolean;
88
- constructor(vercel: VercelHelpers);
76
+ constructor(vercel: ReturnType<typeof useChat>);
89
77
  getBranches(messageId: string): string[];
90
78
  switchToBranch(branchId: string): void;
91
79
  append(message: AppendMessage): Promise<void>;
@@ -99,9 +87,50 @@ declare class VercelAIThreadRuntime implements ReactThreadRuntime {
99
87
  addToolResult(toolCallId: string, result: any): void;
100
88
  }
101
89
 
102
- declare const useVercelUseChatRuntime: (chatHelpers: ReturnType<typeof useChat>) => VercelAIRuntime;
90
+ declare const BaseAssistantRuntime$1: typeof INTERNAL.BaseAssistantRuntime;
91
+ declare class VercelUseChatRuntime extends BaseAssistantRuntime$1<VercelUseChatThreadRuntime> {
92
+ private readonly _proxyConfigProvider;
93
+ constructor(vercel: ReturnType<typeof useChat>);
94
+ set vercel(vercel: ReturnType<typeof useChat>);
95
+ onVercelUpdated(): void;
96
+ getModelConfig(): _assistant_ui_react.ModelConfig;
97
+ registerModelConfigProvider(provider: ModelConfigProvider): () => void;
98
+ switchToThread(threadId: string | null): void;
99
+ }
100
+
101
+ declare const useVercelUseChatRuntime: (chatHelpers: ReturnType<typeof useChat>) => VercelUseChatRuntime;
102
+
103
+ declare class VercelUseAssistantThreadRuntime implements ReactThreadRuntime {
104
+ vercel: UseAssistantHelpers;
105
+ private _subscriptions;
106
+ private useVercel;
107
+ messages: readonly ThreadMessage[];
108
+ isRunning: boolean;
109
+ constructor(vercel: UseAssistantHelpers);
110
+ getBranches(): readonly string[];
111
+ switchToBranch(): void;
112
+ append(message: AppendMessage): Promise<void>;
113
+ startRun(): Promise<void>;
114
+ cancelRun(): void;
115
+ subscribe(callback: () => void): Unsubscribe;
116
+ onVercelUpdated(): void;
117
+ private updateData;
118
+ unstable_synchronizer: () => null;
119
+ addToolResult(): void;
120
+ }
121
+
122
+ declare const BaseAssistantRuntime: typeof INTERNAL.BaseAssistantRuntime;
123
+ declare class VercelUseAssistantRuntime extends BaseAssistantRuntime<VercelUseAssistantThreadRuntime> {
124
+ private readonly _proxyConfigProvider;
125
+ constructor(vercel: UseAssistantHelpers);
126
+ set vercel(vercel: UseAssistantHelpers);
127
+ onVercelUpdated(): void;
128
+ getModelConfig(): _assistant_ui_react.ModelConfig;
129
+ registerModelConfigProvider(provider: ModelConfigProvider): () => void;
130
+ switchToThread(threadId: string | null): void;
131
+ }
103
132
 
104
- declare const useVercelUseAssistantRuntime: (assistantHelpers: UseAssistantHelpers) => VercelAIRuntime;
133
+ declare const useVercelUseAssistantRuntime: (assistantHelpers: UseAssistantHelpers) => VercelUseAssistantRuntime;
105
134
 
106
135
  declare const getVercelAIMessage: (message: ThreadMessage) => Message[] | undefined;
107
136
 
package/dist/index.js CHANGED
@@ -303,9 +303,12 @@ var useVercelRSCRuntime = (adapter) => {
303
303
  };
304
304
 
305
305
  // src/ui/use-chat/useVercelUseChatRuntime.tsx
306
- var import_react8 = require("react");
306
+ var import_react9 = require("react");
307
+
308
+ // src/ui/use-chat/VercelUseChatRuntime.tsx
309
+ var import_react8 = require("@assistant-ui/react");
307
310
 
308
- // src/ui/VercelAIRuntime.tsx
311
+ // src/ui/use-chat/VercelUseChatThreadRuntime.tsx
309
312
  var import_react7 = require("@assistant-ui/react");
310
313
  var import_zustand2 = require("zustand");
311
314
 
@@ -368,27 +371,43 @@ var vercelToThreadMessage2 = (messages, status) => {
368
371
  role: "user",
369
372
  content: [{ type: "text", text: firstMessage.content }]
370
373
  };
371
- case "assistant":
372
- return {
374
+ case "data":
375
+ case "assistant": {
376
+ const res = {
373
377
  ...common,
374
378
  role: "assistant",
375
- content: messages.flatMap((message) => [
376
- ...message.content ? [{ type: "text", text: message.content }] : [],
377
- ...message.toolInvocations?.map(
378
- (t) => ({
379
- type: "tool-call",
380
- toolName: t.toolName,
381
- toolCallId: t.toolCallId,
382
- args: t.args,
383
- result: "result" in t ? t.result : void 0
384
- })
385
- ) ?? []
386
- ]),
379
+ content: messages.flatMap((message) => {
380
+ return [
381
+ ...message.content ? [{ type: "text", text: message.content }] : [],
382
+ ...message.toolInvocations?.map(
383
+ (t) => ({
384
+ type: "tool-call",
385
+ toolName: t.toolName,
386
+ toolCallId: t.toolCallId,
387
+ args: t.args,
388
+ result: "result" in t ? t.result : void 0
389
+ })
390
+ ) ?? [],
391
+ ...typeof message.data === "object" && !Array.isArray(message.data) && message.data?.["type"] === "tool-call" ? [message.data] : []
392
+ ];
393
+ }),
387
394
  status
388
395
  };
396
+ for (const message of messages) {
397
+ if (typeof message.data === "object" && !Array.isArray(message.data) && message.data?.["type"] === "tool-result") {
398
+ const toolCallId = message.data["toolCallId"];
399
+ const toolContent = res.content.find(
400
+ (c) => c.type === "tool-call" && c.toolCallId === toolCallId
401
+ );
402
+ if (!toolContent) throw new Error("Tool call not found");
403
+ toolContent.result = message.data["result"];
404
+ }
405
+ }
406
+ return res;
407
+ }
389
408
  default:
390
409
  throw new Error(
391
- `You have a message with an unsupported role. The role ${firstMessage.role} is not supported.`
410
+ `123 You have a message with an unsupported role. The role ${firstMessage.role} is not supported.`
392
411
  );
393
412
  }
394
413
  };
@@ -397,7 +416,7 @@ var chunkedMessages = (messages) => {
397
416
  const chunks = [];
398
417
  let currentChunk = [];
399
418
  for (const message of messages) {
400
- if (message.role === "assistant") {
419
+ if (message.role === "assistant" || message.role === "data") {
401
420
  currentChunk.push(message);
402
421
  } else {
403
422
  if (hasItems(currentChunk)) {
@@ -439,40 +458,12 @@ var useVercelAIThreadSync = (vercel, updateData) => {
439
458
  }, [updateData, isRunning, vercel.messages, converter]);
440
459
  };
441
460
 
442
- // src/ui/VercelAIRuntime.tsx
443
- var { ProxyConfigProvider: ProxyConfigProvider2, MessageRepository, BaseAssistantRuntime: BaseAssistantRuntime2 } = import_react7.INTERNAL;
461
+ // src/ui/use-chat/VercelUseChatThreadRuntime.tsx
462
+ var { MessageRepository } = import_react7.INTERNAL;
444
463
  var hasUpcomingMessage = (isRunning, messages) => {
445
464
  return isRunning && messages[messages.length - 1]?.role !== "assistant";
446
465
  };
447
- var VercelAIRuntime = class extends BaseAssistantRuntime2 {
448
- _proxyConfigProvider = new ProxyConfigProvider2();
449
- constructor(vercel) {
450
- super(new VercelAIThreadRuntime(vercel));
451
- }
452
- set vercel(vercel) {
453
- this.thread.vercel = vercel;
454
- }
455
- onVercelUpdated() {
456
- return this.thread.onVercelUpdated();
457
- }
458
- getModelConfig() {
459
- return this._proxyConfigProvider.getModelConfig();
460
- }
461
- registerModelConfigProvider(provider) {
462
- return this._proxyConfigProvider.registerModelConfigProvider(provider);
463
- }
464
- switchToThread(threadId) {
465
- if (threadId) {
466
- throw new Error("VercelAIRuntime does not yet support switching threads");
467
- }
468
- this.thread.vercel.messages = [];
469
- this.thread.vercel.input = "";
470
- this.thread.vercel.setMessages([]);
471
- this.thread.vercel.setInput("");
472
- this.thread = new VercelAIThreadRuntime(this.thread.vercel);
473
- }
474
- };
475
- var VercelAIThreadRuntime = class {
466
+ var VercelUseChatThreadRuntime = class {
476
467
  constructor(vercel) {
477
468
  this.vercel = vercel;
478
469
  this.useVercel = (0, import_zustand2.create)(() => ({
@@ -494,7 +485,9 @@ var VercelAIThreadRuntime = class {
494
485
  }
495
486
  async append(message) {
496
487
  if (message.content.length !== 1 || message.content[0]?.type !== "text")
497
- throw new Error("Only text content is supported by Vercel AI SDK.");
488
+ throw new Error(
489
+ "Only text content is supported by VercelUseChatRuntime."
490
+ );
498
491
  const newMessages = sliceMessagesUntil(
499
492
  this.vercel.messages,
500
493
  message.parentId
@@ -506,14 +499,9 @@ var VercelAIThreadRuntime = class {
506
499
  });
507
500
  }
508
501
  async startRun(parentId) {
509
- const reloadMaybe = "reload" in this.vercel ? this.vercel.reload : void 0;
510
- if (!reloadMaybe)
511
- throw new Error(
512
- "Reload is not supported by Vercel AI SDK's useAssistant."
513
- );
514
502
  const newMessages = sliceMessagesUntil(this.vercel.messages, parentId);
515
503
  this.vercel.setMessages(newMessages);
516
- await reloadMaybe();
504
+ await this.vercel.reload();
517
505
  }
518
506
  cancelRun() {
519
507
  const previousMessage = this.vercel.messages.at(-1);
@@ -579,33 +567,184 @@ var VercelAIThreadRuntime = class {
579
567
  return null;
580
568
  };
581
569
  addToolResult(toolCallId, result) {
582
- if (!("addToolResult" in this.vercel)) {
583
- throw new Error("VercelAIRuntime does not support adding tool results");
584
- }
585
570
  this.vercel.addToolResult({ toolCallId, result });
586
571
  }
587
572
  };
588
573
 
574
+ // src/ui/use-chat/VercelUseChatRuntime.tsx
575
+ var { ProxyConfigProvider: ProxyConfigProvider2, BaseAssistantRuntime: BaseAssistantRuntime2 } = import_react8.INTERNAL;
576
+ var VercelUseChatRuntime = class extends BaseAssistantRuntime2 {
577
+ _proxyConfigProvider = new ProxyConfigProvider2();
578
+ constructor(vercel) {
579
+ super(new VercelUseChatThreadRuntime(vercel));
580
+ }
581
+ set vercel(vercel) {
582
+ this.thread.vercel = vercel;
583
+ }
584
+ onVercelUpdated() {
585
+ return this.thread.onVercelUpdated();
586
+ }
587
+ getModelConfig() {
588
+ return this._proxyConfigProvider.getModelConfig();
589
+ }
590
+ registerModelConfigProvider(provider) {
591
+ return this._proxyConfigProvider.registerModelConfigProvider(provider);
592
+ }
593
+ switchToThread(threadId) {
594
+ if (threadId) {
595
+ throw new Error(
596
+ "VercelAIRuntime does not yet support switching threads."
597
+ );
598
+ }
599
+ this.thread.vercel.messages = [];
600
+ this.thread.vercel.input = "";
601
+ this.thread.vercel.setMessages([]);
602
+ this.thread.vercel.setInput("");
603
+ this.thread = new VercelUseChatThreadRuntime(this.thread.vercel);
604
+ }
605
+ };
606
+
589
607
  // src/ui/use-chat/useVercelUseChatRuntime.tsx
590
608
  var useVercelUseChatRuntime = (chatHelpers) => {
591
- const [runtime] = (0, import_react8.useState)(() => new VercelAIRuntime(chatHelpers));
592
- (0, import_react8.useInsertionEffect)(() => {
609
+ const [runtime] = (0, import_react9.useState)(() => new VercelUseChatRuntime(chatHelpers));
610
+ (0, import_react9.useInsertionEffect)(() => {
593
611
  runtime.vercel = chatHelpers;
594
612
  });
595
- (0, import_react8.useEffect)(() => {
613
+ (0, import_react9.useEffect)(() => {
596
614
  runtime.onVercelUpdated();
597
615
  });
598
616
  return runtime;
599
617
  };
600
618
 
601
619
  // src/ui/use-assistant/useVercelUseAssistantRuntime.tsx
602
- var import_react9 = require("react");
620
+ var import_react11 = require("react");
621
+
622
+ // src/ui/use-assistant/VercelUseAssistantRuntime.tsx
623
+ var import_react10 = require("@assistant-ui/react");
624
+
625
+ // src/ui/use-assistant/VercelUseAssistantThreadRuntime.tsx
626
+ var import_zustand3 = require("zustand");
627
+ var EMPTY_BRANCHES2 = Object.freeze([]);
628
+ var VercelUseAssistantThreadRuntime = class {
629
+ constructor(vercel) {
630
+ this.vercel = vercel;
631
+ this.useVercel = (0, import_zustand3.create)(() => ({
632
+ vercel
633
+ }));
634
+ }
635
+ _subscriptions = /* @__PURE__ */ new Set();
636
+ useVercel;
637
+ messages = [];
638
+ isRunning = false;
639
+ getBranches() {
640
+ return EMPTY_BRANCHES2;
641
+ }
642
+ switchToBranch() {
643
+ throw new Error(
644
+ "VercelUseAssistantRuntime does not support switching branches."
645
+ );
646
+ }
647
+ async append(message) {
648
+ if (message.content.length !== 1 || message.content[0]?.type !== "text")
649
+ throw new Error("VercelUseAssistantRuntime only supports text content.");
650
+ if (message.parentId !== (this.messages.at(-1)?.id ?? null))
651
+ throw new Error(
652
+ "VercelUseAssistantRuntime does not support editing messages."
653
+ );
654
+ await this.vercel.append({
655
+ role: "user",
656
+ content: message.content[0].text
657
+ });
658
+ }
659
+ async startRun() {
660
+ throw new Error("VercelUseAssistantRuntime does not support reloading.");
661
+ }
662
+ cancelRun() {
663
+ const previousMessage = this.vercel.messages.at(-1);
664
+ this.vercel.stop();
665
+ if (previousMessage?.role === "user") {
666
+ this.vercel.setInput(previousMessage.content);
667
+ }
668
+ }
669
+ subscribe(callback) {
670
+ this._subscriptions.add(callback);
671
+ return () => this._subscriptions.delete(callback);
672
+ }
673
+ onVercelUpdated() {
674
+ if (this.useVercel.getState().vercel !== this.vercel) {
675
+ this.useVercel.setState({ vercel: this.vercel });
676
+ }
677
+ }
678
+ updateData = (isRunning, vm) => {
679
+ if (hasUpcomingMessage2(isRunning, vm)) {
680
+ vm.push({
681
+ id: "__optimistic__result",
682
+ createdAt: /* @__PURE__ */ new Date(),
683
+ status: "in_progress",
684
+ role: "assistant",
685
+ content: [{ type: "text", text: "" }]
686
+ });
687
+ }
688
+ this.messages = vm;
689
+ this.isRunning = isRunning;
690
+ for (const callback of this._subscriptions) callback();
691
+ };
692
+ unstable_synchronizer = () => {
693
+ const { vercel } = this.useVercel();
694
+ useVercelAIThreadSync(vercel, this.updateData);
695
+ useVercelAIComposerSync(vercel);
696
+ return null;
697
+ };
698
+ addToolResult() {
699
+ throw new Error(
700
+ "VercelUseAssistantRuntime does not support adding tool results."
701
+ );
702
+ }
703
+ };
704
+
705
+ // src/ui/use-assistant/VercelUseAssistantRuntime.tsx
706
+ var { ProxyConfigProvider: ProxyConfigProvider3, BaseAssistantRuntime: BaseAssistantRuntime3 } = import_react10.INTERNAL;
707
+ var hasUpcomingMessage2 = (isRunning, messages) => {
708
+ return isRunning && messages[messages.length - 1]?.role !== "assistant";
709
+ };
710
+ var VercelUseAssistantRuntime = class extends BaseAssistantRuntime3 {
711
+ _proxyConfigProvider = new ProxyConfigProvider3();
712
+ constructor(vercel) {
713
+ super(new VercelUseAssistantThreadRuntime(vercel));
714
+ }
715
+ set vercel(vercel) {
716
+ this.thread.vercel = vercel;
717
+ }
718
+ onVercelUpdated() {
719
+ return this.thread.onVercelUpdated();
720
+ }
721
+ getModelConfig() {
722
+ return this._proxyConfigProvider.getModelConfig();
723
+ }
724
+ registerModelConfigProvider(provider) {
725
+ return this._proxyConfigProvider.registerModelConfigProvider(provider);
726
+ }
727
+ switchToThread(threadId) {
728
+ if (threadId) {
729
+ throw new Error("VercelAIRuntime does not yet support switching threads");
730
+ }
731
+ this.thread.vercel.messages = [];
732
+ this.thread.vercel.input = "";
733
+ this.thread.vercel.setMessages([]);
734
+ this.thread.vercel.setInput("");
735
+ this.thread = new VercelUseAssistantThreadRuntime(this.thread.vercel);
736
+ }
737
+ };
738
+
739
+ // src/ui/use-assistant/useVercelUseAssistantRuntime.tsx
603
740
  var useVercelUseAssistantRuntime = (assistantHelpers) => {
604
- const [runtime] = (0, import_react9.useState)(() => new VercelAIRuntime(assistantHelpers));
605
- (0, import_react9.useInsertionEffect)(() => {
741
+ const [runtime] = (0, import_react11.useState)(
742
+ () => new VercelUseAssistantRuntime(assistantHelpers)
743
+ );
744
+ (0, import_react11.useInsertionEffect)(() => {
606
745
  runtime.vercel = assistantHelpers;
607
746
  });
608
- (0, import_react9.useEffect)(() => {
747
+ (0, import_react11.useEffect)(() => {
609
748
  runtime.onVercelUpdated();
610
749
  });
611
750
  return runtime;