@assistant-ui/react 0.5.55 → 0.5.57

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
@@ -341,9 +341,9 @@ type ExternalStoreAdapterBase<T> = {
341
341
  onEdit?: ((message: AppendMessage) => Promise<void>) | undefined;
342
342
  onReload?: ((parentId: string | null) => Promise<void>) | undefined;
343
343
  onCancel?: (() => Promise<void>) | undefined;
344
- onNewThread?: (() => Promise<void> | void) | undefined;
345
344
  onAddToolResult?: ((options: AddToolResultOptions) => Promise<void> | void) | undefined;
346
- onSwitchThread?: ((threadId: string | null) => Promise<void> | void) | undefined;
345
+ onSwitchToThread?: ((threadId: string) => Promise<void> | void) | undefined;
346
+ onSwitchToNewThread?: (() => Promise<void> | void) | undefined;
347
347
  onSpeak?: ((message: ThreadMessage) => SpeechSynthesisAdapter.Utterance) | undefined;
348
348
  convertMessage?: ExternalStoreMessageConverter<T> | undefined;
349
349
  adapters?: {
@@ -603,7 +603,8 @@ type AssistantRuntime = ThreadRuntimeWithSubscribe & {
603
603
  /**
604
604
  * @deprecated Use `switchToNewThread` instead. This will be removed in 0.6.0.
605
605
  */
606
- switchToThread: (threadId: string | null) => void;
606
+ switchToThread(threadId: null): void;
607
+ switchToThread(threadId: string): void;
607
608
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
608
609
  };
609
610
 
@@ -618,9 +619,13 @@ type TextContentPartProviderProps = {
618
619
  declare const TextContentPartProvider: FC<PropsWithChildren<TextContentPartProviderProps>>;
619
620
 
620
621
  type AssistantActionsState = Readonly<{
621
- switchToThread: (threadId: string | null) => void;
622
+ /**
623
+ * @deprecated Use `switchToNewThread` instead. This will be removed in 0.6.0.
624
+ */
625
+ switchToThread(threadId: null): void;
626
+ switchToThread(threadId: string): void;
627
+ switchToNewThread: () => void;
622
628
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
623
- getRuntime: () => AssistantRuntime;
624
629
  }>;
625
630
 
626
631
  type AssistantToolUIsState = Readonly<{
@@ -695,43 +700,49 @@ declare const useToolUIsStore: {
695
700
  };
696
701
  declare const useAssistantActions: {
697
702
  (): Readonly<{
698
- switchToThread: (threadId: string | null) => void;
703
+ switchToThread(threadId: null): void;
704
+ switchToThread(threadId: string): void;
705
+ switchToNewThread: () => void;
699
706
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
700
- getRuntime: () => AssistantRuntime;
701
707
  }>;
702
708
  <TSelected>(selector: (state: Readonly<{
703
- switchToThread: (threadId: string | null) => void;
709
+ switchToThread(threadId: null): void;
710
+ switchToThread(threadId: string): void;
711
+ switchToNewThread: () => void;
704
712
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
705
- getRuntime: () => AssistantRuntime;
706
713
  }>) => TSelected): TSelected;
707
714
  (options: {
708
715
  optional: true;
709
716
  }): Readonly<{
710
- switchToThread: (threadId: string | null) => void;
717
+ switchToThread(threadId: null): void;
718
+ switchToThread(threadId: string): void;
719
+ switchToNewThread: () => void;
711
720
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
712
- getRuntime: () => AssistantRuntime;
713
721
  }> | null;
714
722
  <TSelected>(options: {
715
723
  optional: true;
716
724
  selector?: (state: Readonly<{
717
- switchToThread: (threadId: string | null) => void;
725
+ switchToThread(threadId: null): void;
726
+ switchToThread(threadId: string): void;
727
+ switchToNewThread: () => void;
718
728
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
719
- getRuntime: () => AssistantRuntime;
720
729
  }>) => TSelected;
721
730
  }): TSelected | null;
722
731
  };
723
732
  declare const useAssistantActionsStore: {
724
733
  (): ReadonlyStore<Readonly<{
725
- switchToThread: (threadId: string | null) => void;
734
+ switchToThread(threadId: null): void;
735
+ switchToThread(threadId: string): void;
736
+ switchToNewThread: () => void;
726
737
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
727
- getRuntime: () => AssistantRuntime;
728
738
  }>>;
729
739
  (options: {
730
740
  optional: true;
731
741
  }): ReadonlyStore<Readonly<{
732
- switchToThread: (threadId: string | null) => void;
742
+ switchToThread(threadId: null): void;
743
+ switchToThread(threadId: string): void;
744
+ switchToNewThread: () => void;
733
745
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
734
- getRuntime: () => AssistantRuntime;
735
746
  }>> | null;
736
747
  };
737
748
 
@@ -910,6 +921,7 @@ declare const useThreadComposer: {
910
921
  type: "thread";
911
922
  value: string;
912
923
  setValue: (value: string) => void;
924
+ attachmentAccept: string;
913
925
  attachments: readonly ThreadComposerAttachment[];
914
926
  addAttachment: (file: File) => void;
915
927
  removeAttachment: (attachmentId: string) => void;
@@ -928,6 +940,7 @@ declare const useThreadComposer: {
928
940
  type: "thread";
929
941
  value: string;
930
942
  setValue: (value: string) => void;
943
+ attachmentAccept: string;
931
944
  attachments: readonly ThreadComposerAttachment[];
932
945
  addAttachment: (file: File) => void;
933
946
  removeAttachment: (attachmentId: string) => void;
@@ -948,6 +961,7 @@ declare const useThreadComposer: {
948
961
  type: "thread";
949
962
  value: string;
950
963
  setValue: (value: string) => void;
964
+ attachmentAccept: string;
951
965
  attachments: readonly ThreadComposerAttachment[];
952
966
  addAttachment: (file: File) => void;
953
967
  removeAttachment: (attachmentId: string) => void;
@@ -968,6 +982,7 @@ declare const useThreadComposer: {
968
982
  type: "thread";
969
983
  value: string;
970
984
  setValue: (value: string) => void;
985
+ attachmentAccept: string;
971
986
  attachments: readonly ThreadComposerAttachment[];
972
987
  addAttachment: (file: File) => void;
973
988
  removeAttachment: (attachmentId: string) => void;
@@ -989,6 +1004,7 @@ declare const useThreadComposerStore: {
989
1004
  type: "thread";
990
1005
  value: string;
991
1006
  setValue: (value: string) => void;
1007
+ attachmentAccept: string;
992
1008
  attachments: readonly ThreadComposerAttachment[];
993
1009
  addAttachment: (file: File) => void;
994
1010
  removeAttachment: (attachmentId: string) => void;
@@ -1009,6 +1025,7 @@ declare const useThreadComposerStore: {
1009
1025
  type: "thread";
1010
1026
  value: string;
1011
1027
  setValue: (value: string) => void;
1028
+ attachmentAccept: string;
1012
1029
  attachments: readonly ThreadComposerAttachment[];
1013
1030
  addAttachment: (file: File) => void;
1014
1031
  removeAttachment: (attachmentId: string) => void;
@@ -1383,6 +1400,7 @@ declare const useComposer: {
1383
1400
  type: "thread";
1384
1401
  value: string;
1385
1402
  setValue: (value: string) => void;
1403
+ attachmentAccept: string;
1386
1404
  attachments: readonly ThreadComposerAttachment[];
1387
1405
  addAttachment: (file: File) => void;
1388
1406
  removeAttachment: (attachmentId: string) => void;
@@ -1413,6 +1431,7 @@ declare const useComposer: {
1413
1431
  type: "thread";
1414
1432
  value: string;
1415
1433
  setValue: (value: string) => void;
1434
+ attachmentAccept: string;
1416
1435
  attachments: readonly ThreadComposerAttachment[];
1417
1436
  addAttachment: (file: File) => void;
1418
1437
  removeAttachment: (attachmentId: string) => void;
@@ -1445,6 +1464,7 @@ declare const useComposer: {
1445
1464
  type: "thread";
1446
1465
  value: string;
1447
1466
  setValue: (value: string) => void;
1467
+ attachmentAccept: string;
1448
1468
  attachments: readonly ThreadComposerAttachment[];
1449
1469
  addAttachment: (file: File) => void;
1450
1470
  removeAttachment: (attachmentId: string) => void;
@@ -1477,6 +1497,7 @@ declare const useComposer: {
1477
1497
  type: "thread";
1478
1498
  value: string;
1479
1499
  setValue: (value: string) => void;
1500
+ attachmentAccept: string;
1480
1501
  attachments: readonly ThreadComposerAttachment[];
1481
1502
  addAttachment: (file: File) => void;
1482
1503
  removeAttachment: (attachmentId: string) => void;
@@ -1510,6 +1531,7 @@ declare const useComposerStore: {
1510
1531
  type: "thread";
1511
1532
  value: string;
1512
1533
  setValue: (value: string) => void;
1534
+ attachmentAccept: string;
1513
1535
  attachments: readonly ThreadComposerAttachment[];
1514
1536
  addAttachment: (file: File) => void;
1515
1537
  removeAttachment: (attachmentId: string) => void;
@@ -1542,6 +1564,7 @@ declare const useComposerStore: {
1542
1564
  type: "thread";
1543
1565
  value: string;
1544
1566
  setValue: (value: string) => void;
1567
+ attachmentAccept: string;
1545
1568
  attachments: readonly ThreadComposerAttachment[];
1546
1569
  addAttachment: (file: File) => void;
1547
1570
  removeAttachment: (attachmentId: string) => void;
@@ -1564,6 +1587,7 @@ type ThreadComposerState = Readonly<{
1564
1587
  value: string;
1565
1588
  /** @deprecated Use `setText` instead. */
1566
1589
  setValue: (value: string) => void;
1590
+ attachmentAccept: string;
1567
1591
  attachments: readonly ThreadComposerAttachment[];
1568
1592
  addAttachment: (file: File) => void;
1569
1593
  removeAttachment: (attachmentId: string) => void;
@@ -1587,6 +1611,9 @@ type CreateAppendMessage = string | {
1587
1611
  };
1588
1612
  declare const useAppendMessage: () => (message: CreateAppendMessage) => void;
1589
1613
 
1614
+ /**
1615
+ * @deprecated Use `useRuntimeActions().switchToNewThread()` instead. This will be removed in 0.6.0.
1616
+ */
1590
1617
  declare const useSwitchToNewThread: () => () => void;
1591
1618
 
1592
1619
  type AssistantToolProps<TArgs extends Record<string, unknown>, TResult> = Tool<TArgs, TResult> & {
package/dist/index.d.ts CHANGED
@@ -341,9 +341,9 @@ type ExternalStoreAdapterBase<T> = {
341
341
  onEdit?: ((message: AppendMessage) => Promise<void>) | undefined;
342
342
  onReload?: ((parentId: string | null) => Promise<void>) | undefined;
343
343
  onCancel?: (() => Promise<void>) | undefined;
344
- onNewThread?: (() => Promise<void> | void) | undefined;
345
344
  onAddToolResult?: ((options: AddToolResultOptions) => Promise<void> | void) | undefined;
346
- onSwitchThread?: ((threadId: string | null) => Promise<void> | void) | undefined;
345
+ onSwitchToThread?: ((threadId: string) => Promise<void> | void) | undefined;
346
+ onSwitchToNewThread?: (() => Promise<void> | void) | undefined;
347
347
  onSpeak?: ((message: ThreadMessage) => SpeechSynthesisAdapter.Utterance) | undefined;
348
348
  convertMessage?: ExternalStoreMessageConverter<T> | undefined;
349
349
  adapters?: {
@@ -603,7 +603,8 @@ type AssistantRuntime = ThreadRuntimeWithSubscribe & {
603
603
  /**
604
604
  * @deprecated Use `switchToNewThread` instead. This will be removed in 0.6.0.
605
605
  */
606
- switchToThread: (threadId: string | null) => void;
606
+ switchToThread(threadId: null): void;
607
+ switchToThread(threadId: string): void;
607
608
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
608
609
  };
609
610
 
@@ -618,9 +619,13 @@ type TextContentPartProviderProps = {
618
619
  declare const TextContentPartProvider: FC<PropsWithChildren<TextContentPartProviderProps>>;
619
620
 
620
621
  type AssistantActionsState = Readonly<{
621
- switchToThread: (threadId: string | null) => void;
622
+ /**
623
+ * @deprecated Use `switchToNewThread` instead. This will be removed in 0.6.0.
624
+ */
625
+ switchToThread(threadId: null): void;
626
+ switchToThread(threadId: string): void;
627
+ switchToNewThread: () => void;
622
628
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
623
- getRuntime: () => AssistantRuntime;
624
629
  }>;
625
630
 
626
631
  type AssistantToolUIsState = Readonly<{
@@ -695,43 +700,49 @@ declare const useToolUIsStore: {
695
700
  };
696
701
  declare const useAssistantActions: {
697
702
  (): Readonly<{
698
- switchToThread: (threadId: string | null) => void;
703
+ switchToThread(threadId: null): void;
704
+ switchToThread(threadId: string): void;
705
+ switchToNewThread: () => void;
699
706
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
700
- getRuntime: () => AssistantRuntime;
701
707
  }>;
702
708
  <TSelected>(selector: (state: Readonly<{
703
- switchToThread: (threadId: string | null) => void;
709
+ switchToThread(threadId: null): void;
710
+ switchToThread(threadId: string): void;
711
+ switchToNewThread: () => void;
704
712
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
705
- getRuntime: () => AssistantRuntime;
706
713
  }>) => TSelected): TSelected;
707
714
  (options: {
708
715
  optional: true;
709
716
  }): Readonly<{
710
- switchToThread: (threadId: string | null) => void;
717
+ switchToThread(threadId: null): void;
718
+ switchToThread(threadId: string): void;
719
+ switchToNewThread: () => void;
711
720
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
712
- getRuntime: () => AssistantRuntime;
713
721
  }> | null;
714
722
  <TSelected>(options: {
715
723
  optional: true;
716
724
  selector?: (state: Readonly<{
717
- switchToThread: (threadId: string | null) => void;
725
+ switchToThread(threadId: null): void;
726
+ switchToThread(threadId: string): void;
727
+ switchToNewThread: () => void;
718
728
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
719
- getRuntime: () => AssistantRuntime;
720
729
  }>) => TSelected;
721
730
  }): TSelected | null;
722
731
  };
723
732
  declare const useAssistantActionsStore: {
724
733
  (): ReadonlyStore<Readonly<{
725
- switchToThread: (threadId: string | null) => void;
734
+ switchToThread(threadId: null): void;
735
+ switchToThread(threadId: string): void;
736
+ switchToNewThread: () => void;
726
737
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
727
- getRuntime: () => AssistantRuntime;
728
738
  }>>;
729
739
  (options: {
730
740
  optional: true;
731
741
  }): ReadonlyStore<Readonly<{
732
- switchToThread: (threadId: string | null) => void;
742
+ switchToThread(threadId: null): void;
743
+ switchToThread(threadId: string): void;
744
+ switchToNewThread: () => void;
733
745
  registerModelConfigProvider: (provider: ModelConfigProvider) => Unsubscribe;
734
- getRuntime: () => AssistantRuntime;
735
746
  }>> | null;
736
747
  };
737
748
 
@@ -910,6 +921,7 @@ declare const useThreadComposer: {
910
921
  type: "thread";
911
922
  value: string;
912
923
  setValue: (value: string) => void;
924
+ attachmentAccept: string;
913
925
  attachments: readonly ThreadComposerAttachment[];
914
926
  addAttachment: (file: File) => void;
915
927
  removeAttachment: (attachmentId: string) => void;
@@ -928,6 +940,7 @@ declare const useThreadComposer: {
928
940
  type: "thread";
929
941
  value: string;
930
942
  setValue: (value: string) => void;
943
+ attachmentAccept: string;
931
944
  attachments: readonly ThreadComposerAttachment[];
932
945
  addAttachment: (file: File) => void;
933
946
  removeAttachment: (attachmentId: string) => void;
@@ -948,6 +961,7 @@ declare const useThreadComposer: {
948
961
  type: "thread";
949
962
  value: string;
950
963
  setValue: (value: string) => void;
964
+ attachmentAccept: string;
951
965
  attachments: readonly ThreadComposerAttachment[];
952
966
  addAttachment: (file: File) => void;
953
967
  removeAttachment: (attachmentId: string) => void;
@@ -968,6 +982,7 @@ declare const useThreadComposer: {
968
982
  type: "thread";
969
983
  value: string;
970
984
  setValue: (value: string) => void;
985
+ attachmentAccept: string;
971
986
  attachments: readonly ThreadComposerAttachment[];
972
987
  addAttachment: (file: File) => void;
973
988
  removeAttachment: (attachmentId: string) => void;
@@ -989,6 +1004,7 @@ declare const useThreadComposerStore: {
989
1004
  type: "thread";
990
1005
  value: string;
991
1006
  setValue: (value: string) => void;
1007
+ attachmentAccept: string;
992
1008
  attachments: readonly ThreadComposerAttachment[];
993
1009
  addAttachment: (file: File) => void;
994
1010
  removeAttachment: (attachmentId: string) => void;
@@ -1009,6 +1025,7 @@ declare const useThreadComposerStore: {
1009
1025
  type: "thread";
1010
1026
  value: string;
1011
1027
  setValue: (value: string) => void;
1028
+ attachmentAccept: string;
1012
1029
  attachments: readonly ThreadComposerAttachment[];
1013
1030
  addAttachment: (file: File) => void;
1014
1031
  removeAttachment: (attachmentId: string) => void;
@@ -1383,6 +1400,7 @@ declare const useComposer: {
1383
1400
  type: "thread";
1384
1401
  value: string;
1385
1402
  setValue: (value: string) => void;
1403
+ attachmentAccept: string;
1386
1404
  attachments: readonly ThreadComposerAttachment[];
1387
1405
  addAttachment: (file: File) => void;
1388
1406
  removeAttachment: (attachmentId: string) => void;
@@ -1413,6 +1431,7 @@ declare const useComposer: {
1413
1431
  type: "thread";
1414
1432
  value: string;
1415
1433
  setValue: (value: string) => void;
1434
+ attachmentAccept: string;
1416
1435
  attachments: readonly ThreadComposerAttachment[];
1417
1436
  addAttachment: (file: File) => void;
1418
1437
  removeAttachment: (attachmentId: string) => void;
@@ -1445,6 +1464,7 @@ declare const useComposer: {
1445
1464
  type: "thread";
1446
1465
  value: string;
1447
1466
  setValue: (value: string) => void;
1467
+ attachmentAccept: string;
1448
1468
  attachments: readonly ThreadComposerAttachment[];
1449
1469
  addAttachment: (file: File) => void;
1450
1470
  removeAttachment: (attachmentId: string) => void;
@@ -1477,6 +1497,7 @@ declare const useComposer: {
1477
1497
  type: "thread";
1478
1498
  value: string;
1479
1499
  setValue: (value: string) => void;
1500
+ attachmentAccept: string;
1480
1501
  attachments: readonly ThreadComposerAttachment[];
1481
1502
  addAttachment: (file: File) => void;
1482
1503
  removeAttachment: (attachmentId: string) => void;
@@ -1510,6 +1531,7 @@ declare const useComposerStore: {
1510
1531
  type: "thread";
1511
1532
  value: string;
1512
1533
  setValue: (value: string) => void;
1534
+ attachmentAccept: string;
1513
1535
  attachments: readonly ThreadComposerAttachment[];
1514
1536
  addAttachment: (file: File) => void;
1515
1537
  removeAttachment: (attachmentId: string) => void;
@@ -1542,6 +1564,7 @@ declare const useComposerStore: {
1542
1564
  type: "thread";
1543
1565
  value: string;
1544
1566
  setValue: (value: string) => void;
1567
+ attachmentAccept: string;
1545
1568
  attachments: readonly ThreadComposerAttachment[];
1546
1569
  addAttachment: (file: File) => void;
1547
1570
  removeAttachment: (attachmentId: string) => void;
@@ -1564,6 +1587,7 @@ type ThreadComposerState = Readonly<{
1564
1587
  value: string;
1565
1588
  /** @deprecated Use `setText` instead. */
1566
1589
  setValue: (value: string) => void;
1590
+ attachmentAccept: string;
1567
1591
  attachments: readonly ThreadComposerAttachment[];
1568
1592
  addAttachment: (file: File) => void;
1569
1593
  removeAttachment: (attachmentId: string) => void;
@@ -1587,6 +1611,9 @@ type CreateAppendMessage = string | {
1587
1611
  };
1588
1612
  declare const useAppendMessage: () => (message: CreateAppendMessage) => void;
1589
1613
 
1614
+ /**
1615
+ * @deprecated Use `useRuntimeActions().switchToNewThread()` instead. This will be removed in 0.6.0.
1616
+ */
1590
1617
  declare const useSwitchToNewThread: () => () => void;
1591
1618
 
1592
1619
  type AssistantToolProps<TArgs extends Record<string, unknown>, TResult> = Tool<TArgs, TResult> & {
package/dist/index.js CHANGED
@@ -157,6 +157,7 @@ var makeThreadComposerStore = (useThreadRuntime2) => {
157
157
  setValue(value) {
158
158
  get().setText(value);
159
159
  },
160
+ attachmentAccept: runtime.composer.attachmentAccept,
160
161
  attachments: runtime.composer.attachments,
161
162
  addAttachment: (file) => {
162
163
  useThreadRuntime2.getState().composer.addAttachment(file);
@@ -1835,23 +1836,24 @@ var ExternalStoreRuntime = (_class9 = class extends BaseAssistantRuntime {
1835
1836
  return this._proxyConfigProvider.registerModelConfigProvider(provider);
1836
1837
  }
1837
1838
  async switchToNewThread() {
1838
- if (!this.store.onNewThread)
1839
+ if (!this.store.onSwitchToNewThread)
1839
1840
  throw new Error("Runtime does not support switching to new threads.");
1840
1841
  this.thread = new ExternalStoreThreadRuntime({
1841
- messages: [],
1842
- onNew: this.store.onNew
1842
+ ...this.store,
1843
+ messages: []
1843
1844
  });
1844
- await this.store.onNewThread();
1845
+ await this.store.onSwitchToNewThread();
1845
1846
  }
1846
1847
  async switchToThread(threadId) {
1847
1848
  if (threadId !== null) {
1848
- if (!this.store.onSwitchThread)
1849
+ if (!this.store.onSwitchToThread)
1849
1850
  throw new Error("Runtime does not support switching threads.");
1850
1851
  this.thread = new ExternalStoreThreadRuntime({
1851
- messages: [],
1852
- onNew: this.store.onNew
1852
+ ...this.store,
1853
+ messages: []
1854
+ // ignore messages until rerender
1853
1855
  });
1854
- this.store.onSwitchThread(threadId);
1856
+ this.store.onSwitchToThread(threadId);
1855
1857
  } else {
1856
1858
  this.switchToNewThread();
1857
1859
  }
@@ -2266,10 +2268,11 @@ var ThreadProvider = ({
2266
2268
  );
2267
2269
  }
2268
2270
  const composerState = context.useComposer.getState();
2269
- if (thread.composer.isEmpty !== composerState.isEmpty || thread.composer.text !== composerState.text || thread.composer.attachments !== composerState.attachments || state.capabilities.cancel !== composerState.canCancel) {
2271
+ if (thread.composer.isEmpty !== composerState.isEmpty || thread.composer.text !== composerState.text || thread.composer.attachmentAccept !== composerState.attachmentAccept || thread.composer.attachments !== composerState.attachments || state.capabilities.cancel !== composerState.canCancel) {
2270
2272
  writableStore(context.useComposer).setState({
2271
2273
  isEmpty: thread.composer.isEmpty,
2272
2274
  text: thread.composer.text,
2275
+ attachmentAccept: thread.composer.attachmentAccept,
2273
2276
  attachments: thread.composer.attachments,
2274
2277
  canCancel: state.capabilities.cancel
2275
2278
  });
@@ -2298,6 +2301,7 @@ var ThreadProvider = ({
2298
2301
  var makeAssistantActionsStore = (runtimeRef) => _zustand.create.call(void 0,
2299
2302
  () => Object.freeze({
2300
2303
  switchToThread: () => runtimeRef.current.switchToThread(null),
2304
+ switchToNewThread: () => runtimeRef.current.switchToNewThread(),
2301
2305
  registerModelConfigProvider: (provider) => runtimeRef.current.registerModelConfigProvider(provider),
2302
2306
  getRuntime: () => runtimeRef.current
2303
2307
  })
@@ -2441,7 +2445,7 @@ var useSwitchToNewThread = () => {
2441
2445
  const assistantActionsStore = useAssistantActionsStore();
2442
2446
  const threadComposerStore = useThreadComposerStore();
2443
2447
  const switchToNewThread = _react.useCallback.call(void 0, () => {
2444
- assistantActionsStore.getState().switchToThread(null);
2448
+ assistantActionsStore.getState().switchToNewThread();
2445
2449
  threadComposerStore.getState().focus();
2446
2450
  }, [assistantActionsStore, threadComposerStore]);
2447
2451
  return switchToNewThread;
@@ -2504,13 +2508,13 @@ var makeAssistantToolUI = (tool) => {
2504
2508
  // src/model-config/useAssistantInstructions.tsx
2505
2509
 
2506
2510
  var useAssistantInstructions = (instruction) => {
2507
- const runtimeStore = useAssistantRuntimeStore();
2511
+ const actionsStore = useAssistantActionsStore();
2508
2512
  _react.useEffect.call(void 0, () => {
2509
2513
  const config = {
2510
2514
  system: instruction
2511
2515
  };
2512
- return runtimeStore.getState().registerModelConfigProvider({ getModelConfig: () => config });
2513
- }, [runtimeStore, instruction]);
2516
+ return actionsStore.getState().registerModelConfigProvider({ getModelConfig: () => config });
2517
+ }, [actionsStore, instruction]);
2514
2518
  };
2515
2519
 
2516
2520
  // src/primitive-hooks/actionBar/useActionBarCopy.tsx
@@ -2740,10 +2744,10 @@ var useComposerSend = () => {
2740
2744
  var useComposerAddAttachment = () => {
2741
2745
  const disabled = useComposer((c) => !c.isEditing);
2742
2746
  const threadComposerStore = useThreadComposerStore();
2743
- const threadRuntimeStore = useThreadRuntimeStore();
2747
+ const threadRuntimeStore = useThreadComposerStore();
2744
2748
  const callback = _react.useCallback.call(void 0, () => {
2745
2749
  const { addAttachment } = threadComposerStore.getState();
2746
- const { attachmentAccept } = threadRuntimeStore.getState().composer;
2750
+ const { attachmentAccept } = threadRuntimeStore.getState();
2747
2751
  const input = document.createElement("input");
2748
2752
  input.type = "file";
2749
2753
  if (attachmentAccept !== "*") {