@assistant-ui/react 0.5.81 → 0.5.82

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.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12; var _class13; var _class14; var _class15; var _class16; var _class17;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11; var _class12; var _class13; var _class14; var _class15; var _class16;
2
2
 
3
3
 
4
4
 
@@ -9,7 +9,7 @@
9
9
 
10
10
 
11
11
 
12
- var _chunkCYIFAX4Ujs = require('./chunk-CYIFAX4U.js');
12
+ var _chunkC6UZOY5Ajs = require('./chunk-C6UZOY5A.js');
13
13
 
14
14
 
15
15
  var _chunkPZ5AY32Cjs = require('./chunk-PZ5AY32C.js');
@@ -155,6 +155,15 @@ var {
155
155
  useViewport: useThreadViewport,
156
156
  useViewportStore: useThreadViewportStore
157
157
  } = createContextStoreHook(useThreadContext, "useViewport");
158
+ function useThreadModelConfig(options) {
159
+ const [, rerender] = _react.useState.call(void 0, {});
160
+ const runtime = useThreadRuntime(options);
161
+ _react.useEffect.call(void 0, () => {
162
+ return _optionalChain([runtime, 'optionalAccess', _5 => _5.unstable_on, 'call', _6 => _6("model-config-update", () => rerender({}))]);
163
+ }, [runtime]);
164
+ if (!runtime) return null;
165
+ return _optionalChain([runtime, 'optionalAccess', _7 => _7.getModelConfig, 'call', _8 => _8()]);
166
+ }
158
167
 
159
168
  // src/context/stores/ThreadViewport.tsx
160
169
 
@@ -294,6 +303,9 @@ var ContentPartRuntimeImpl = class {
294
303
  this.messageApi = messageApi;
295
304
  this.threadApi = threadApi;
296
305
  }
306
+ get path() {
307
+ return this.contentBinding.path;
308
+ }
297
309
  getState() {
298
310
  return this.contentBinding.getState();
299
311
  }
@@ -404,7 +416,7 @@ var { useComposer, useComposerStore } = createContextStoreHook(
404
416
  function useComposerRuntime(options) {
405
417
  const messageRuntime = useMessageRuntime({ optional: true });
406
418
  const threadRuntime = useThreadRuntime(options);
407
- return messageRuntime ? messageRuntime.composer : _nullishCoalesce(_optionalChain([threadRuntime, 'optionalAccess', _5 => _5.composer]), () => ( null));
419
+ return messageRuntime ? messageRuntime.composer : _nullishCoalesce(_optionalChain([threadRuntime, 'optionalAccess', _9 => _9.composer]), () => ( null));
408
420
  }
409
421
 
410
422
  // src/hooks/useAppendMessage.tsx
@@ -448,7 +460,7 @@ var useAssistantTool = (tool) => {
448
460
  const unsub2 = render ? toolUIsStore.getState().setToolUI(toolName, render) : void 0;
449
461
  return () => {
450
462
  unsub1();
451
- _optionalChain([unsub2, 'optionalCall', _6 => _6()]);
463
+ _optionalChain([unsub2, 'optionalCall', _10 => _10()]);
452
464
  };
453
465
  }, [assistantRuntime, toolUIsStore, tool]);
454
466
  };
@@ -500,64 +512,23 @@ var useAssistantInstructions = (instruction) => {
500
512
 
501
513
  // src/primitive-hooks/actionBar/useActionBarCopy.tsx
502
514
 
503
-
504
- // src/utils/combined/useCombinedStore.ts
505
-
506
-
507
- // src/utils/combined/createCombinedStore.ts
508
-
509
- var createCombinedStore = (stores) => {
510
- const subscribe = (callback) => {
511
- const unsubscribes = stores.map((store) => store.subscribe(callback));
512
- return () => {
513
- for (const unsub of unsubscribes) {
514
- unsub();
515
- }
516
- };
517
- };
518
- return (selector) => {
519
- const getSnapshot = () => selector(...stores.map((store) => store.getState()));
520
- return _react.useSyncExternalStore.call(void 0, subscribe, getSnapshot, getSnapshot);
521
- };
522
- };
523
-
524
- // src/utils/combined/useCombinedStore.ts
525
- var useCombinedStore = (stores, selector) => {
526
- const useCombined = _react.useMemo.call(void 0, () => createCombinedStore(stores), stores);
527
- return useCombined(selector);
528
- };
529
-
530
- // src/utils/getThreadMessageText.tsx
531
- var getThreadMessageText = (message) => {
532
- const textParts = message.content.filter(
533
- (part) => part.type === "text"
534
- );
535
- return textParts.map((part) => part.text).join("\n\n");
536
- };
537
-
538
- // src/primitive-hooks/actionBar/useActionBarCopy.tsx
539
515
  var useActionBarCopy = ({
540
516
  copiedDuration = 3e3
541
517
  } = {}) => {
542
518
  const messageRuntime = useMessageRuntime();
543
519
  const composerRuntime = useComposerRuntime();
544
- const messageUtilsStore = useMessageUtilsStore();
545
- const hasCopyableContent = useCombinedStore(
546
- [messageRuntime, composerRuntime],
547
- (message, c) => {
548
- return !c.isEditing && (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c2) => c2.type === "text" && c2.text.length > 0);
549
- }
550
- );
520
+ const setIsCopied = useMessageUtils((s) => s.setIsCopied);
521
+ const hasCopyableContent = useMessage((message) => {
522
+ return (message.role !== "assistant" || message.status.type !== "running") && message.content.some((c) => c.type === "text" && c.text.length > 0);
523
+ });
551
524
  const callback = _react.useCallback.call(void 0, () => {
552
- const message = messageRuntime.getState();
553
- const { setIsCopied } = messageUtilsStore.getState();
554
525
  const { isEditing, text: composerValue } = composerRuntime.getState();
555
- const valueToCopy = isEditing ? composerValue : getThreadMessageText(message);
526
+ const valueToCopy = isEditing ? composerValue : messageRuntime.unstable_getCopyText();
556
527
  navigator.clipboard.writeText(valueToCopy).then(() => {
557
528
  setIsCopied(true);
558
529
  setTimeout(() => setIsCopied(false), copiedDuration);
559
530
  });
560
- }, [messageRuntime, messageUtilsStore, composerRuntime, copiedDuration]);
531
+ }, [messageRuntime, setIsCopied, composerRuntime, copiedDuration]);
561
532
  if (!hasCopyableContent) return null;
562
533
  return callback;
563
534
  };
@@ -576,6 +547,34 @@ var useActionBarEdit = () => {
576
547
 
577
548
  // src/primitive-hooks/actionBar/useActionBarReload.tsx
578
549
 
550
+
551
+ // src/utils/combined/useCombinedStore.ts
552
+
553
+
554
+ // src/utils/combined/createCombinedStore.ts
555
+
556
+ var createCombinedStore = (stores) => {
557
+ const subscribe = (callback) => {
558
+ const unsubscribes = stores.map((store) => store.subscribe(callback));
559
+ return () => {
560
+ for (const unsub of unsubscribes) {
561
+ unsub();
562
+ }
563
+ };
564
+ };
565
+ return (selector) => {
566
+ const getSnapshot = () => selector(...stores.map((store) => store.getState()));
567
+ return _react.useSyncExternalStore.call(void 0, subscribe, getSnapshot, getSnapshot);
568
+ };
569
+ };
570
+
571
+ // src/utils/combined/useCombinedStore.ts
572
+ var useCombinedStore = (stores, selector) => {
573
+ const useCombined = _react.useMemo.call(void 0, () => createCombinedStore(stores), stores);
574
+ return useCombined(selector);
575
+ };
576
+
577
+ // src/primitive-hooks/actionBar/useActionBarReload.tsx
579
578
  var useActionBarReload = () => {
580
579
  const messageRuntime = useMessageRuntime();
581
580
  const threadRuntime = useThreadRuntime();
@@ -723,7 +722,7 @@ var useComposerAddAttachment = () => {
723
722
  input.accept = attachmentAccept;
724
723
  }
725
724
  input.onchange = (e) => {
726
- const file = _optionalChain([e, 'access', _7 => _7.target, 'access', _8 => _8.files, 'optionalAccess', _9 => _9[0]]);
725
+ const file = _optionalChain([e, 'access', _11 => _11.target, 'access', _12 => _12.files, 'optionalAccess', _13 => _13[0]]);
727
726
  if (!file) return;
728
727
  composerRuntime.addAttachment(file);
729
728
  };
@@ -799,7 +798,7 @@ var useMessageIf = (props) => {
799
798
  return false;
800
799
  if (props.hasContent === true && content.length === 0) return false;
801
800
  if (props.hasContent === false && content.length > 0) return false;
802
- if (props.submittedFeedback !== void 0 && (_nullishCoalesce(_optionalChain([submittedFeedback, 'optionalAccess', _10 => _10.type]), () => ( null))) !== props.submittedFeedback)
801
+ if (props.submittedFeedback !== void 0 && (_nullishCoalesce(_optionalChain([submittedFeedback, 'optionalAccess', _14 => _14.type]), () => ( null))) !== props.submittedFeedback)
803
802
  return false;
804
803
  return true;
805
804
  }
@@ -933,7 +932,7 @@ var ActionBarPrimitiveCopy = _react.forwardRef.call(void 0, ({ copiedDuration, o
933
932
  ref: forwardedRef,
934
933
  disabled: disabled || !callback,
935
934
  onClick: _primitive.composeEventHandlers.call(void 0, onClick, () => {
936
- _optionalChain([callback, 'optionalCall', _11 => _11()]);
935
+ _optionalChain([callback, 'optionalCall', _15 => _15()]);
937
936
  })
938
937
  }
939
938
  );
@@ -965,7 +964,7 @@ var createActionButton = (displayName, useActionButton, forwardProps = []) => {
965
964
  ref: forwardedRef,
966
965
  disabled: primitiveProps.disabled || !callback,
967
966
  onClick: _primitive.composeEventHandlers.call(void 0, primitiveProps.onClick, () => {
968
- _optionalChain([callback, 'optionalCall', _12 => _12()]);
967
+ _optionalChain([callback, 'optionalCall', _16 => _16()]);
969
968
  })
970
969
  }
971
970
  );
@@ -1014,7 +1013,7 @@ var ActionBarPrimitiveStopSpeaking = _react.forwardRef.call(void 0, (props, ref)
1014
1013
  ...props,
1015
1014
  ref,
1016
1015
  onClick: _primitive.composeEventHandlers.call(void 0, props.onClick, () => {
1017
- _optionalChain([callback, 'optionalCall', _13 => _13()]);
1016
+ _optionalChain([callback, 'optionalCall', _17 => _17()]);
1018
1017
  })
1019
1018
  }
1020
1019
  );
@@ -1028,7 +1027,7 @@ ActionBarPrimitiveStopSpeaking.displayName = "ActionBarPrimitive.StopSpeaking";
1028
1027
 
1029
1028
  var ActionBarPrimitiveFeedbackPositive = _react.forwardRef.call(void 0, ({ onClick, disabled, ...props }, forwardedRef) => {
1030
1029
  const isSubmitted = useMessage(
1031
- (u) => _optionalChain([u, 'access', _14 => _14.submittedFeedback, 'optionalAccess', _15 => _15.type]) === "positive"
1030
+ (u) => _optionalChain([u, 'access', _18 => _18.submittedFeedback, 'optionalAccess', _19 => _19.type]) === "positive"
1032
1031
  );
1033
1032
  const callback = useActionBarFeedbackPositive();
1034
1033
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1040,7 +1039,7 @@ var ActionBarPrimitiveFeedbackPositive = _react.forwardRef.call(void 0, ({ onCli
1040
1039
  ref: forwardedRef,
1041
1040
  disabled: disabled || !callback,
1042
1041
  onClick: _primitive.composeEventHandlers.call(void 0, onClick, () => {
1043
- _optionalChain([callback, 'optionalCall', _16 => _16()]);
1042
+ _optionalChain([callback, 'optionalCall', _20 => _20()]);
1044
1043
  })
1045
1044
  }
1046
1045
  );
@@ -1054,7 +1053,7 @@ ActionBarPrimitiveFeedbackPositive.displayName = "ActionBarPrimitive.FeedbackPos
1054
1053
 
1055
1054
  var ActionBarPrimitiveFeedbackNegative = _react.forwardRef.call(void 0, ({ onClick, disabled, ...props }, forwardedRef) => {
1056
1055
  const isSubmitted = useMessage(
1057
- (u) => _optionalChain([u, 'access', _17 => _17.submittedFeedback, 'optionalAccess', _18 => _18.type]) === "negative"
1056
+ (u) => _optionalChain([u, 'access', _21 => _21.submittedFeedback, 'optionalAccess', _22 => _22.type]) === "negative"
1058
1057
  );
1059
1058
  const callback = useActionBarFeedbackNegative();
1060
1059
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
@@ -1066,7 +1065,7 @@ var ActionBarPrimitiveFeedbackNegative = _react.forwardRef.call(void 0, ({ onCli
1066
1065
  ref: forwardedRef,
1067
1066
  disabled: disabled || !callback,
1068
1067
  onClick: _primitive.composeEventHandlers.call(void 0, onClick, () => {
1069
- _optionalChain([callback, 'optionalCall', _19 => _19()]);
1068
+ _optionalChain([callback, 'optionalCall', _23 => _23()]);
1070
1069
  })
1071
1070
  }
1072
1071
  );
@@ -1224,7 +1223,7 @@ var AttachmentContext = _react.createContext.call(void 0,
1224
1223
  );
1225
1224
  function useAttachmentContext(options) {
1226
1225
  const context = _react.useContext.call(void 0, AttachmentContext);
1227
- if (!_optionalChain([options, 'optionalAccess', _20 => _20.optional]) && !context)
1226
+ if (!_optionalChain([options, 'optionalAccess', _24 => _24.optional]) && !context)
1228
1227
  throw new Error(
1229
1228
  "This component must be used within a ComposerPrimitive.Attachments or MessagePrimitive.Attachments component."
1230
1229
  );
@@ -1505,7 +1504,7 @@ var withSmoothContextProvider = (Component) => {
1505
1504
  };
1506
1505
  function useSmoothContext(options) {
1507
1506
  const context = _react.useContext.call(void 0, SmoothContext);
1508
- if (!_optionalChain([options, 'optionalAccess', _21 => _21.optional]) && !context)
1507
+ if (!_optionalChain([options, 'optionalAccess', _25 => _25.optional]) && !context)
1509
1508
  throw new Error(
1510
1509
  "This component must be used within a SmoothContextProvider."
1511
1510
  );
@@ -1655,11 +1654,22 @@ var ContentPartPrimitiveInProgress = ({ children }) => {
1655
1654
  };
1656
1655
  ContentPartPrimitiveInProgress.displayName = "ContentPartPrimitive.InProgress";
1657
1656
 
1657
+ // src/utils/getThreadMessageText.tsx
1658
+ var getThreadMessageText = (message) => {
1659
+ const textParts = message.content.filter(
1660
+ (part) => part.type === "text"
1661
+ );
1662
+ return textParts.map((part) => part.text).join("\n\n");
1663
+ };
1664
+
1658
1665
  // src/api/AttachmentRuntime.ts
1659
1666
  var AttachmentRuntimeImpl = class {
1660
1667
  constructor(_core) {
1661
1668
  this._core = _core;
1662
1669
  }
1670
+ get path() {
1671
+ return this._core.path;
1672
+ }
1663
1673
  getState() {
1664
1674
  return this._core.getState();
1665
1675
  }
@@ -1715,7 +1725,7 @@ var BaseSubject = (_class2 = class {constructor() { _class2.prototype.__init5.ca
1715
1725
  if (this._connection) return;
1716
1726
  this._connection = this._connect();
1717
1727
  } else {
1718
- _optionalChain([this, 'access', _22 => _22._connection, 'optionalCall', _23 => _23()]);
1728
+ _optionalChain([this, 'access', _26 => _26._connection, 'optionalCall', _27 => _27()]);
1719
1729
  this._connection = void 0;
1720
1730
  }
1721
1731
  }
@@ -1738,6 +1748,9 @@ var LazyMemoizeSubject = (_class3 = class extends BaseSubject {
1738
1748
  super();_class3.prototype.__init6.call(this);_class3.prototype.__init7.call(this);;
1739
1749
  this.binding = binding;
1740
1750
  }
1751
+ get path() {
1752
+ return this.binding.path;
1753
+ }
1741
1754
  __init6() {this._previousStateDirty = true}
1742
1755
 
1743
1756
  __init7() {this.getState = () => {
@@ -1784,6 +1797,9 @@ var ShallowMemoizeSubject = (_class4 = class extends BaseSubject {
1784
1797
  throw new Error("Entry not available in the store");
1785
1798
  this._previousState = state;
1786
1799
  }
1800
+ get path() {
1801
+ return this.binding.path;
1802
+ }
1787
1803
 
1788
1804
  __init8() {this.getState = () => {
1789
1805
  if (!this.isConnected) this._syncState();
@@ -1814,42 +1830,45 @@ var EMPTY_ARRAY = Object.freeze([]);
1814
1830
  var getThreadComposerState = (runtime) => {
1815
1831
  return Object.freeze({
1816
1832
  type: "thread",
1817
- isEditing: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _24 => _24.isEditing]), () => ( false)),
1818
- canCancel: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _25 => _25.canCancel]), () => ( false)),
1819
- isEmpty: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _26 => _26.isEmpty]), () => ( true)),
1820
- text: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _27 => _27.text]), () => ( "")),
1821
- attachments: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _28 => _28.attachments]), () => ( EMPTY_ARRAY)),
1822
- value: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _29 => _29.text]), () => ( "")),
1823
- setValue: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _30 => _30.setText, 'access', _31 => _31.bind, 'call', _32 => _32(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1824
- setText: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _33 => _33.setText, 'access', _34 => _34.bind, 'call', _35 => _35(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1833
+ isEditing: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _28 => _28.isEditing]), () => ( false)),
1834
+ canCancel: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _29 => _29.canCancel]), () => ( false)),
1835
+ isEmpty: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _30 => _30.isEmpty]), () => ( true)),
1836
+ text: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _31 => _31.text]), () => ( "")),
1837
+ attachments: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _32 => _32.attachments]), () => ( EMPTY_ARRAY)),
1838
+ value: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _33 => _33.text]), () => ( "")),
1839
+ setValue: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _34 => _34.setText, 'access', _35 => _35.bind, 'call', _36 => _36(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1840
+ setText: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _37 => _37.setText, 'access', _38 => _38.bind, 'call', _39 => _39(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1825
1841
  // edit: beginEdit,
1826
- send: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _36 => _36.send, 'access', _37 => _37.bind, 'call', _38 => _38(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1827
- cancel: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _39 => _39.cancel, 'access', _40 => _40.bind, 'call', _41 => _41(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1828
- reset: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _42 => _42.reset, 'access', _43 => _43.bind, 'call', _44 => _44(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1829
- addAttachment: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _45 => _45.addAttachment, 'access', _46 => _46.bind, 'call', _47 => _47(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1830
- removeAttachment: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _48 => _48.removeAttachment, 'access', _49 => _49.bind, 'call', _50 => _50(runtime)]), () => ( METHOD_NOT_SUPPORTED))
1842
+ send: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _40 => _40.send, 'access', _41 => _41.bind, 'call', _42 => _42(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1843
+ cancel: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _43 => _43.cancel, 'access', _44 => _44.bind, 'call', _45 => _45(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1844
+ reset: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _46 => _46.reset, 'access', _47 => _47.bind, 'call', _48 => _48(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1845
+ addAttachment: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _49 => _49.addAttachment, 'access', _50 => _50.bind, 'call', _51 => _51(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1846
+ removeAttachment: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _52 => _52.removeAttachment, 'access', _53 => _53.bind, 'call', _54 => _54(runtime)]), () => ( METHOD_NOT_SUPPORTED))
1831
1847
  });
1832
1848
  };
1833
1849
  var getEditComposerState = (runtime, beginEdit) => {
1834
1850
  return Object.freeze({
1835
1851
  type: "edit",
1836
- isEditing: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _51 => _51.isEditing]), () => ( false)),
1837
- canCancel: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _52 => _52.canCancel]), () => ( false)),
1838
- isEmpty: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _53 => _53.isEmpty]), () => ( true)),
1839
- text: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _54 => _54.text]), () => ( "")),
1840
- attachments: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _55 => _55.attachments]), () => ( EMPTY_ARRAY)),
1841
- value: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _56 => _56.text]), () => ( "")),
1842
- setValue: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _57 => _57.setText, 'access', _58 => _58.bind, 'call', _59 => _59(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1843
- setText: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _60 => _60.setText, 'access', _61 => _61.bind, 'call', _62 => _62(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1852
+ isEditing: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _55 => _55.isEditing]), () => ( false)),
1853
+ canCancel: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _56 => _56.canCancel]), () => ( false)),
1854
+ isEmpty: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _57 => _57.isEmpty]), () => ( true)),
1855
+ text: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _58 => _58.text]), () => ( "")),
1856
+ attachments: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _59 => _59.attachments]), () => ( EMPTY_ARRAY)),
1857
+ value: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _60 => _60.text]), () => ( "")),
1858
+ setValue: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _61 => _61.setText, 'access', _62 => _62.bind, 'call', _63 => _63(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1859
+ setText: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _64 => _64.setText, 'access', _65 => _65.bind, 'call', _66 => _66(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1844
1860
  edit: beginEdit,
1845
- send: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _63 => _63.send, 'access', _64 => _64.bind, 'call', _65 => _65(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1846
- cancel: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _66 => _66.cancel, 'access', _67 => _67.bind, 'call', _68 => _68(runtime)]), () => ( METHOD_NOT_SUPPORTED))
1861
+ send: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _67 => _67.send, 'access', _68 => _68.bind, 'call', _69 => _69(runtime)]), () => ( METHOD_NOT_SUPPORTED)),
1862
+ cancel: _nullishCoalesce(_optionalChain([runtime, 'optionalAccess', _70 => _70.cancel, 'access', _71 => _71.bind, 'call', _72 => _72(runtime)]), () => ( METHOD_NOT_SUPPORTED))
1847
1863
  });
1848
1864
  };
1849
1865
  var ComposerRuntimeImpl = class {
1850
1866
  constructor(_core) {
1851
1867
  this._core = _core;
1852
1868
  }
1869
+ get path() {
1870
+ return this._core.path;
1871
+ }
1853
1872
  /**
1854
1873
  * @deprecated Use `getState().isEditing` instead. This will be removed in 0.6.0.
1855
1874
  */
@@ -1935,23 +1954,28 @@ var ComposerRuntimeImpl = class {
1935
1954
  }
1936
1955
  };
1937
1956
  var ThreadComposerRuntimeImpl = class extends ComposerRuntimeImpl {
1957
+ get path() {
1958
+ return this._core.path;
1959
+ }
1938
1960
  get type() {
1939
1961
  return "thread";
1940
1962
  }
1941
1963
 
1942
1964
  constructor(core) {
1943
1965
  const stateBinding = new LazyMemoizeSubject({
1966
+ path: core.path,
1944
1967
  getState: () => getThreadComposerState(core.getState()),
1945
1968
  subscribe: (callback) => core.subscribe(callback)
1946
1969
  });
1947
1970
  super({
1971
+ path: core.path,
1948
1972
  getState: () => core.getState(),
1949
1973
  subscribe: (callback) => stateBinding.subscribe(callback)
1950
1974
  });
1951
1975
  this._getState = stateBinding.getState.bind(stateBinding);
1952
1976
  }
1953
1977
  get attachments() {
1954
- return _nullishCoalesce(_optionalChain([this, 'access', _69 => _69.getState, 'call', _70 => _70(), 'optionalAccess', _71 => _71.attachments]), () => ( EMPTY_ARRAY));
1978
+ return _nullishCoalesce(_optionalChain([this, 'access', _73 => _73.getState, 'call', _74 => _74(), 'optionalAccess', _75 => _75.attachments]), () => ( EMPTY_ARRAY));
1955
1979
  }
1956
1980
  getState() {
1957
1981
  return this._getState();
@@ -1959,6 +1983,12 @@ var ThreadComposerRuntimeImpl = class extends ComposerRuntimeImpl {
1959
1983
  getAttachmentByIndex(idx) {
1960
1984
  return new ThreadComposerAttachmentRuntimeImpl(
1961
1985
  new ShallowMemoizeSubject({
1986
+ path: {
1987
+ ...this.path,
1988
+ attachmentSource: "thread-composer",
1989
+ attachmentSelector: { type: "index", index: idx },
1990
+ ref: this.path.ref + `${this.path.ref}.attachments[${idx}]`
1991
+ },
1962
1992
  getState: () => {
1963
1993
  const attachments = this.getState().attachments;
1964
1994
  const attachment = attachments[idx];
@@ -1978,16 +2008,21 @@ var ThreadComposerRuntimeImpl = class extends ComposerRuntimeImpl {
1978
2008
  var EditComposerRuntimeImpl = class extends ComposerRuntimeImpl {
1979
2009
  constructor(core, _beginEdit) {
1980
2010
  const stateBinding = new LazyMemoizeSubject({
2011
+ path: core.path,
1981
2012
  getState: () => getEditComposerState(core.getState(), this._beginEdit),
1982
2013
  subscribe: (callback) => core.subscribe(callback)
1983
2014
  });
1984
2015
  super({
2016
+ path: core.path,
1985
2017
  getState: () => core.getState(),
1986
2018
  subscribe: (callback) => stateBinding.subscribe(callback)
1987
2019
  });
1988
2020
  this._beginEdit = _beginEdit;
1989
2021
  this._getState = stateBinding.getState.bind(stateBinding);
1990
2022
  }
2023
+ get path() {
2024
+ return this._core.path;
2025
+ }
1991
2026
  get type() {
1992
2027
  return "edit";
1993
2028
  }
@@ -2007,6 +2042,12 @@ var EditComposerRuntimeImpl = class extends ComposerRuntimeImpl {
2007
2042
  getAttachmentByIndex(idx) {
2008
2043
  return new EditComposerAttachmentRuntimeImpl(
2009
2044
  new ShallowMemoizeSubject({
2045
+ path: {
2046
+ ...this.path,
2047
+ attachmentSource: "edit-composer",
2048
+ attachmentSelector: { type: "index", index: idx },
2049
+ ref: this.path.ref + `${this.path.ref}.attachments[${idx}]`
2050
+ },
2010
2051
  getState: () => {
2011
2052
  const attachments = this.getState().attachments;
2012
2053
  const attachment = attachments[idx];
@@ -2030,6 +2071,9 @@ var NestedSubscriptionSubject = class extends BaseSubject {
2030
2071
  super();
2031
2072
  this.binding = binding;
2032
2073
  }
2074
+ get path() {
2075
+ return this.binding.path;
2076
+ }
2033
2077
  getState() {
2034
2078
  return this.binding.getState();
2035
2079
  }
@@ -2041,19 +2085,19 @@ var NestedSubscriptionSubject = class extends BaseSubject {
2041
2085
  this.notifySubscribers();
2042
2086
  };
2043
2087
  let lastState = this.binding.getState();
2044
- let innerUnsubscribe = _optionalChain([lastState, 'optionalAccess', _72 => _72.subscribe, 'call', _73 => _73(callback)]);
2088
+ let innerUnsubscribe = _optionalChain([lastState, 'optionalAccess', _76 => _76.subscribe, 'call', _77 => _77(callback)]);
2045
2089
  const onRuntimeUpdate = () => {
2046
2090
  const newState = this.binding.getState();
2047
2091
  if (newState === lastState) return;
2048
2092
  lastState = newState;
2049
- _optionalChain([innerUnsubscribe, 'optionalCall', _74 => _74()]);
2050
- innerUnsubscribe = _optionalChain([this, 'access', _75 => _75.binding, 'access', _76 => _76.getState, 'call', _77 => _77(), 'optionalAccess', _78 => _78.subscribe, 'call', _79 => _79(callback)]);
2093
+ _optionalChain([innerUnsubscribe, 'optionalCall', _78 => _78()]);
2094
+ innerUnsubscribe = _optionalChain([this, 'access', _79 => _79.binding, 'access', _80 => _80.getState, 'call', _81 => _81(), 'optionalAccess', _82 => _82.subscribe, 'call', _83 => _83(callback)]);
2051
2095
  callback();
2052
2096
  };
2053
2097
  const outerUnsubscribe = this.outerSubscribe(onRuntimeUpdate);
2054
2098
  return () => {
2055
- _optionalChain([outerUnsubscribe, 'optionalCall', _80 => _80()]);
2056
- _optionalChain([innerUnsubscribe, 'optionalCall', _81 => _81()]);
2099
+ _optionalChain([outerUnsubscribe, 'optionalCall', _84 => _84()]);
2100
+ _optionalChain([innerUnsubscribe, 'optionalCall', _85 => _85()]);
2057
2101
  };
2058
2102
  }
2059
2103
  };
@@ -2092,18 +2136,27 @@ var getContentPartState = (message, partIndex) => {
2092
2136
  const status = toContentPartStatus(message, partIndex, part);
2093
2137
  return Object.freeze({ ...part, part, status });
2094
2138
  };
2095
- var MessageRuntimeImpl = (_class5 = class {
2096
- constructor(_core, _threadBinding) {;_class5.prototype.__init9.call(this);
2139
+ var MessageRuntimeImpl = class {
2140
+ constructor(_core, _threadBinding) {
2097
2141
  this._core = _core;
2098
2142
  this._threadBinding = _threadBinding;
2143
+ this.composer = new EditComposerRuntimeImpl(
2144
+ new NestedSubscriptionSubject({
2145
+ path: {
2146
+ ...this.path,
2147
+ ref: this.path.ref + `${this.path.ref}.composer`,
2148
+ composerSource: "edit"
2149
+ },
2150
+ getState: () => this._threadBinding.getState().getEditComposer(this._core.getState().id),
2151
+ subscribe: (callback) => this._threadBinding.subscribe(callback)
2152
+ }),
2153
+ () => this._threadBinding.getState().beginEdit(this._core.getState().id)
2154
+ );
2099
2155
  }
2100
- __init9() {this.composer = new EditComposerRuntimeImpl(
2101
- new NestedSubscriptionSubject({
2102
- getState: () => this._threadBinding.getState().getEditComposer(this._core.getState().id),
2103
- subscribe: (callback) => this._threadBinding.subscribe(callback)
2104
- }),
2105
- () => this._threadBinding.getState().beginEdit(this._core.getState().id)
2106
- )}
2156
+ get path() {
2157
+ return this._core.path;
2158
+ }
2159
+
2107
2160
  getState() {
2108
2161
  return this._core.getState();
2109
2162
  }
@@ -2123,7 +2176,7 @@ var MessageRuntimeImpl = (_class5 = class {
2123
2176
  const state = this._core.getState();
2124
2177
  if (!state) throw new Error("Message is not available");
2125
2178
  const thread = this._threadBinding.getState();
2126
- if (_optionalChain([thread, 'access', _82 => _82.speech, 'optionalAccess', _83 => _83.messageId]) === state.id) {
2179
+ if (_optionalChain([thread, 'access', _86 => _86.speech, 'optionalAccess', _87 => _87.messageId]) === state.id) {
2127
2180
  this._threadBinding.getState().stopSpeaking();
2128
2181
  } else {
2129
2182
  throw new Error("Message is not being spoken");
@@ -2159,13 +2212,21 @@ var MessageRuntimeImpl = (_class5 = class {
2159
2212
  if (!targetBranch) throw new Error("Branch not found");
2160
2213
  this._threadBinding.getState().switchToBranch(targetBranch);
2161
2214
  }
2215
+ unstable_getCopyText() {
2216
+ return getThreadMessageText(this.getState());
2217
+ }
2162
2218
  subscribe(callback) {
2163
2219
  return this._core.subscribe(callback);
2164
2220
  }
2165
2221
  getContentPartByIndex(idx) {
2166
- if (idx < 0) throw new Error("Message index must be >= 0");
2222
+ if (idx < 0) throw new Error("Content part index must be >= 0");
2167
2223
  return new ContentPartRuntimeImpl(
2168
2224
  new ShallowMemoizeSubject({
2225
+ path: {
2226
+ ...this.path,
2227
+ ref: this.path.ref + `${this.path.ref}.content[${idx}]`,
2228
+ contentPartSelector: { type: "index", index: idx }
2229
+ },
2169
2230
  getState: () => {
2170
2231
  return getContentPartState(this.getState(), idx);
2171
2232
  },
@@ -2175,12 +2236,40 @@ var MessageRuntimeImpl = (_class5 = class {
2175
2236
  this._threadBinding
2176
2237
  );
2177
2238
  }
2239
+ getContentPartByToolCallId(toolCallId) {
2240
+ return new ContentPartRuntimeImpl(
2241
+ new ShallowMemoizeSubject({
2242
+ path: {
2243
+ ...this.path,
2244
+ ref: this.path.ref + `${this.path.ref}.content[toolCallId=${JSON.stringify(toolCallId)}]`,
2245
+ contentPartSelector: { type: "toolCallId", toolCallId }
2246
+ },
2247
+ getState: () => {
2248
+ const state = this._core.getState();
2249
+ const idx = state.content.findIndex(
2250
+ (part) => part.type === "tool-call" && part.toolCallId === toolCallId
2251
+ );
2252
+ if (idx === -1) return SKIP_UPDATE;
2253
+ return getContentPartState(state, idx);
2254
+ },
2255
+ subscribe: (callback) => this._core.subscribe(callback)
2256
+ }),
2257
+ this._core,
2258
+ this._threadBinding
2259
+ );
2260
+ }
2178
2261
  getAttachmentByIndex(idx) {
2179
2262
  return new MessageAttachmentRuntimeImpl(
2180
2263
  new ShallowMemoizeSubject({
2264
+ path: {
2265
+ ...this.path,
2266
+ ref: this.path.ref + `${this.path.ref}.attachments[${idx}]`,
2267
+ attachmentSource: "message",
2268
+ attachmentSelector: { type: "index", index: idx }
2269
+ },
2181
2270
  getState: () => {
2182
2271
  const attachments = this.getState().attachments;
2183
- const attachment = _optionalChain([attachments, 'optionalAccess', _84 => _84[idx]]);
2272
+ const attachment = _optionalChain([attachments, 'optionalAccess', _88 => _88[idx]]);
2184
2273
  if (!attachment) return SKIP_UPDATE;
2185
2274
  return {
2186
2275
  ...attachment,
@@ -2192,7 +2281,7 @@ var MessageRuntimeImpl = (_class5 = class {
2192
2281
  })
2193
2282
  );
2194
2283
  }
2195
- }, _class5);
2284
+ };
2196
2285
 
2197
2286
  // src/primitives/message/MessageContent.tsx
2198
2287
 
@@ -2263,7 +2352,7 @@ var MessageContentPartImpl = ({
2263
2352
  };
2264
2353
  var MessageContentPart = _react.memo.call(void 0,
2265
2354
  MessageContentPartImpl,
2266
- (prev, next) => prev.partIndex === next.partIndex && _optionalChain([prev, 'access', _85 => _85.components, 'optionalAccess', _86 => _86.Text]) === _optionalChain([next, 'access', _87 => _87.components, 'optionalAccess', _88 => _88.Text]) && _optionalChain([prev, 'access', _89 => _89.components, 'optionalAccess', _90 => _90.Image]) === _optionalChain([next, 'access', _91 => _91.components, 'optionalAccess', _92 => _92.Image]) && _optionalChain([prev, 'access', _93 => _93.components, 'optionalAccess', _94 => _94.UI]) === _optionalChain([next, 'access', _95 => _95.components, 'optionalAccess', _96 => _96.UI]) && _optionalChain([prev, 'access', _97 => _97.components, 'optionalAccess', _98 => _98.tools]) === _optionalChain([next, 'access', _99 => _99.components, 'optionalAccess', _100 => _100.tools])
2355
+ (prev, next) => prev.partIndex === next.partIndex && _optionalChain([prev, 'access', _89 => _89.components, 'optionalAccess', _90 => _90.Text]) === _optionalChain([next, 'access', _91 => _91.components, 'optionalAccess', _92 => _92.Text]) && _optionalChain([prev, 'access', _93 => _93.components, 'optionalAccess', _94 => _94.Image]) === _optionalChain([next, 'access', _95 => _95.components, 'optionalAccess', _96 => _96.Image]) && _optionalChain([prev, 'access', _97 => _97.components, 'optionalAccess', _98 => _98.UI]) === _optionalChain([next, 'access', _99 => _99.components, 'optionalAccess', _100 => _100.UI]) && _optionalChain([prev, 'access', _101 => _101.components, 'optionalAccess', _102 => _102.tools]) === _optionalChain([next, 'access', _103 => _103.components, 'optionalAccess', _104 => _104.tools])
2267
2356
  );
2268
2357
  var MessagePrimitiveContent = ({
2269
2358
  components
@@ -2329,11 +2418,11 @@ var getComponent = (components, attachment) => {
2329
2418
  const type = attachment.type;
2330
2419
  switch (type) {
2331
2420
  case "image":
2332
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _101 => _101.Image]), () => ( _optionalChain([components, 'optionalAccess', _102 => _102.Attachment])));
2421
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _105 => _105.Image]), () => ( _optionalChain([components, 'optionalAccess', _106 => _106.Attachment])));
2333
2422
  case "document":
2334
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _103 => _103.Document]), () => ( _optionalChain([components, 'optionalAccess', _104 => _104.Attachment])));
2423
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _107 => _107.Document]), () => ( _optionalChain([components, 'optionalAccess', _108 => _108.Attachment])));
2335
2424
  case "file":
2336
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _105 => _105.File]), () => ( _optionalChain([components, 'optionalAccess', _106 => _106.Attachment])));
2425
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _109 => _109.File]), () => ( _optionalChain([components, 'optionalAccess', _110 => _110.Attachment])));
2337
2426
  default:
2338
2427
  const _exhaustiveCheck = type;
2339
2428
  throw new Error(`Unknown attachment type: ${_exhaustiveCheck}`);
@@ -2356,7 +2445,7 @@ var MessageAttachmentImpl = ({ components, attachmentIndex }) => {
2356
2445
  };
2357
2446
  var MessageAttachment = _react.memo.call(void 0,
2358
2447
  MessageAttachmentImpl,
2359
- (prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _107 => _107.components, 'optionalAccess', _108 => _108.Image]) === _optionalChain([next, 'access', _109 => _109.components, 'optionalAccess', _110 => _110.Image]) && _optionalChain([prev, 'access', _111 => _111.components, 'optionalAccess', _112 => _112.Document]) === _optionalChain([next, 'access', _113 => _113.components, 'optionalAccess', _114 => _114.Document]) && _optionalChain([prev, 'access', _115 => _115.components, 'optionalAccess', _116 => _116.File]) === _optionalChain([next, 'access', _117 => _117.components, 'optionalAccess', _118 => _118.File]) && _optionalChain([prev, 'access', _119 => _119.components, 'optionalAccess', _120 => _120.Attachment]) === _optionalChain([next, 'access', _121 => _121.components, 'optionalAccess', _122 => _122.Attachment])
2448
+ (prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _111 => _111.components, 'optionalAccess', _112 => _112.Image]) === _optionalChain([next, 'access', _113 => _113.components, 'optionalAccess', _114 => _114.Image]) && _optionalChain([prev, 'access', _115 => _115.components, 'optionalAccess', _116 => _116.Document]) === _optionalChain([next, 'access', _117 => _117.components, 'optionalAccess', _118 => _118.Document]) && _optionalChain([prev, 'access', _119 => _119.components, 'optionalAccess', _120 => _120.File]) === _optionalChain([next, 'access', _121 => _121.components, 'optionalAccess', _122 => _122.File]) && _optionalChain([prev, 'access', _123 => _123.components, 'optionalAccess', _124 => _124.Attachment]) === _optionalChain([next, 'access', _125 => _125.components, 'optionalAccess', _126 => _126.Attachment])
2360
2449
  );
2361
2450
  var MessagePrimitiveAttachments = ({ components }) => {
2362
2451
  const attachmentsCount = useMessage(({ message }) => {
@@ -2482,7 +2571,7 @@ var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
2482
2571
  const { isRunning } = threadRuntime.getState();
2483
2572
  if (!isRunning) {
2484
2573
  e.preventDefault();
2485
- _optionalChain([textareaRef, 'access', _123 => _123.current, 'optionalAccess', _124 => _124.closest, 'call', _125 => _125("form"), 'optionalAccess', _126 => _126.requestSubmit, 'call', _127 => _127()]);
2574
+ _optionalChain([textareaRef, 'access', _127 => _127.current, 'optionalAccess', _128 => _128.closest, 'call', _129 => _129("form"), 'optionalAccess', _130 => _130.requestSubmit, 'call', _131 => _131()]);
2486
2575
  }
2487
2576
  }
2488
2577
  };
@@ -2556,11 +2645,11 @@ var getComponent2 = (components, attachment) => {
2556
2645
  const type = attachment.type;
2557
2646
  switch (type) {
2558
2647
  case "image":
2559
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _128 => _128.Image]), () => ( _optionalChain([components, 'optionalAccess', _129 => _129.Attachment])));
2648
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _132 => _132.Image]), () => ( _optionalChain([components, 'optionalAccess', _133 => _133.Attachment])));
2560
2649
  case "document":
2561
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _130 => _130.Document]), () => ( _optionalChain([components, 'optionalAccess', _131 => _131.Attachment])));
2650
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _134 => _134.Document]), () => ( _optionalChain([components, 'optionalAccess', _135 => _135.Attachment])));
2562
2651
  case "file":
2563
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _132 => _132.File]), () => ( _optionalChain([components, 'optionalAccess', _133 => _133.Attachment])));
2652
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _136 => _136.File]), () => ( _optionalChain([components, 'optionalAccess', _137 => _137.Attachment])));
2564
2653
  default:
2565
2654
  const _exhaustiveCheck = type;
2566
2655
  throw new Error(`Unknown attachment type: ${_exhaustiveCheck}`);
@@ -2583,7 +2672,7 @@ var ComposerAttachmentImpl = ({ components, attachmentIndex }) => {
2583
2672
  };
2584
2673
  var ComposerAttachment = _react.memo.call(void 0,
2585
2674
  ComposerAttachmentImpl,
2586
- (prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _134 => _134.components, 'optionalAccess', _135 => _135.Image]) === _optionalChain([next, 'access', _136 => _136.components, 'optionalAccess', _137 => _137.Image]) && _optionalChain([prev, 'access', _138 => _138.components, 'optionalAccess', _139 => _139.Document]) === _optionalChain([next, 'access', _140 => _140.components, 'optionalAccess', _141 => _141.Document]) && _optionalChain([prev, 'access', _142 => _142.components, 'optionalAccess', _143 => _143.File]) === _optionalChain([next, 'access', _144 => _144.components, 'optionalAccess', _145 => _145.File]) && _optionalChain([prev, 'access', _146 => _146.components, 'optionalAccess', _147 => _147.Attachment]) === _optionalChain([next, 'access', _148 => _148.components, 'optionalAccess', _149 => _149.Attachment])
2675
+ (prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _138 => _138.components, 'optionalAccess', _139 => _139.Image]) === _optionalChain([next, 'access', _140 => _140.components, 'optionalAccess', _141 => _141.Image]) && _optionalChain([prev, 'access', _142 => _142.components, 'optionalAccess', _143 => _143.Document]) === _optionalChain([next, 'access', _144 => _144.components, 'optionalAccess', _145 => _145.Document]) && _optionalChain([prev, 'access', _146 => _146.components, 'optionalAccess', _147 => _147.File]) === _optionalChain([next, 'access', _148 => _148.components, 'optionalAccess', _149 => _149.File]) && _optionalChain([prev, 'access', _150 => _150.components, 'optionalAccess', _151 => _151.Attachment]) === _optionalChain([next, 'access', _152 => _152.components, 'optionalAccess', _153 => _153.Attachment])
2587
2676
  );
2588
2677
  var ComposerPrimitiveAttachments = ({ components }) => {
2589
2678
  const attachmentsCount = useComposer((s) => s.attachments.length);
@@ -2927,7 +3016,7 @@ var subscribeToMainThread = (runtime, callback) => {
2927
3016
  let first = true;
2928
3017
  let cleanup;
2929
3018
  const inner = () => {
2930
- _optionalChain([cleanup, 'optionalCall', _150 => _150()]);
3019
+ _optionalChain([cleanup, 'optionalCall', _154 => _154()]);
2931
3020
  cleanup = runtime.thread.subscribe(callback);
2932
3021
  if (!first) {
2933
3022
  callback();
@@ -2938,7 +3027,7 @@ var subscribeToMainThread = (runtime, callback) => {
2938
3027
  inner();
2939
3028
  return () => {
2940
3029
  unsubscribe();
2941
- _optionalChain([cleanup, 'optionalCall', _151 => _151()]);
3030
+ _optionalChain([cleanup, 'optionalCall', _155 => _155()]);
2942
3031
  };
2943
3032
  };
2944
3033
 
@@ -2946,8 +3035,8 @@ var subscribeToMainThread = (runtime, callback) => {
2946
3035
 
2947
3036
 
2948
3037
  // src/runtimes/core/BaseAssistantRuntimeCore.tsx
2949
- var BaseAssistantRuntimeCore = (_class6 = class {
2950
- constructor(_thread) {;_class6.prototype.__init10.call(this);_class6.prototype.__init11.call(this);
3038
+ var BaseAssistantRuntimeCore = (_class5 = class {
3039
+ constructor(_thread) {;_class5.prototype.__init9.call(this);_class5.prototype.__init10.call(this);
2951
3040
  this._thread = _thread;
2952
3041
  this._thread = _thread;
2953
3042
  }
@@ -2958,15 +3047,15 @@ var BaseAssistantRuntimeCore = (_class6 = class {
2958
3047
  this._thread = thread;
2959
3048
  this.subscriptionHandler();
2960
3049
  }
2961
- __init10() {this._subscriptions = /* @__PURE__ */ new Set()}
3050
+ __init9() {this._subscriptions = /* @__PURE__ */ new Set()}
2962
3051
  subscribe(callback) {
2963
3052
  this._subscriptions.add(callback);
2964
3053
  return () => this._subscriptions.delete(callback);
2965
3054
  }
2966
- __init11() {this.subscriptionHandler = () => {
3055
+ __init10() {this.subscriptionHandler = () => {
2967
3056
  for (const callback of this._subscriptions) callback();
2968
3057
  }}
2969
- }, _class6);
3058
+ }, _class5);
2970
3059
 
2971
3060
  // src/internal.ts
2972
3061
  var internal_exports = {};
@@ -2986,12 +3075,12 @@ _chunkPZ5AY32Cjs.__export.call(void 0, internal_exports, {
2986
3075
 
2987
3076
  // src/runtimes/composer/BaseComposerRuntimeCore.tsx
2988
3077
  var isAttachmentComplete = (a) => a.status.type === "complete";
2989
- var BaseComposerRuntimeCore = (_class7 = class {constructor() { _class7.prototype.__init12.call(this);_class7.prototype.__init13.call(this);_class7.prototype.__init14.call(this);_class7.prototype.__init15.call(this); }
2990
- __init12() {this.isEditing = true}
3078
+ var BaseComposerRuntimeCore = (_class6 = class {constructor() { _class6.prototype.__init11.call(this);_class6.prototype.__init12.call(this);_class6.prototype.__init13.call(this);_class6.prototype.__init14.call(this); }
3079
+ __init11() {this.isEditing = true}
2991
3080
  getAttachmentAccept() {
2992
- return _nullishCoalesce(_optionalChain([this, 'access', _152 => _152.getAttachmentAdapter, 'call', _153 => _153(), 'optionalAccess', _154 => _154.accept]), () => ( "*"));
3081
+ return _nullishCoalesce(_optionalChain([this, 'access', _156 => _156.getAttachmentAdapter, 'call', _157 => _157(), 'optionalAccess', _158 => _158.accept]), () => ( "*"));
2993
3082
  }
2994
- __init13() {this._attachments = []}
3083
+ __init12() {this._attachments = []}
2995
3084
  set attachments(value) {
2996
3085
  this._attachments = value;
2997
3086
  this.notifySubscribers();
@@ -3002,7 +3091,7 @@ var BaseComposerRuntimeCore = (_class7 = class {constructor() { _class7.prototyp
3002
3091
  get isEmpty() {
3003
3092
  return !this.text.trim() && !this.attachments.length;
3004
3093
  }
3005
- __init14() {this._text = ""}
3094
+ __init13() {this._text = ""}
3006
3095
  get text() {
3007
3096
  return this._text;
3008
3097
  }
@@ -3021,7 +3110,7 @@ var BaseComposerRuntimeCore = (_class7 = class {constructor() { _class7.prototyp
3021
3110
  this.attachments.map(async (a) => {
3022
3111
  if (isAttachmentComplete(a)) return a;
3023
3112
  const result = await adapter.send(a);
3024
- if (_optionalChain([result, 'access', _155 => _155.status, 'optionalAccess', _156 => _156.type]) !== "complete") {
3113
+ if (_optionalChain([result, 'access', _159 => _159.status, 'optionalAccess', _160 => _160.type]) !== "complete") {
3025
3114
  result.status = { type: "complete" };
3026
3115
  }
3027
3116
  return result;
@@ -3055,7 +3144,7 @@ var BaseComposerRuntimeCore = (_class7 = class {constructor() { _class7.prototyp
3055
3144
  this._attachments = this._attachments.toSpliced(index, 1);
3056
3145
  this.notifySubscribers();
3057
3146
  }
3058
- __init15() {this._subscriptions = /* @__PURE__ */ new Set()}
3147
+ __init14() {this._subscriptions = /* @__PURE__ */ new Set()}
3059
3148
  notifySubscribers() {
3060
3149
  for (const callback of this._subscriptions) callback();
3061
3150
  }
@@ -3063,16 +3152,16 @@ var BaseComposerRuntimeCore = (_class7 = class {constructor() { _class7.prototyp
3063
3152
  this._subscriptions.add(callback);
3064
3153
  return () => this._subscriptions.delete(callback);
3065
3154
  }
3066
- }, _class7);
3155
+ }, _class6);
3067
3156
 
3068
3157
  // src/runtimes/composer/DefaultThreadComposerRuntimeCore.tsx
3069
- var DefaultThreadComposerRuntimeCore = (_class8 = class extends BaseComposerRuntimeCore {
3158
+ var DefaultThreadComposerRuntimeCore = (_class7 = class extends BaseComposerRuntimeCore {
3070
3159
  constructor(runtime) {
3071
- super();_class8.prototype.__init16.call(this);;
3160
+ super();_class7.prototype.__init15.call(this);;
3072
3161
  this.runtime = runtime;
3073
3162
  this.connect();
3074
3163
  }
3075
- __init16() {this._canCancel = false}
3164
+ __init15() {this._canCancel = false}
3076
3165
  get canCancel() {
3077
3166
  return this._canCancel;
3078
3167
  }
@@ -3080,7 +3169,7 @@ var DefaultThreadComposerRuntimeCore = (_class8 = class extends BaseComposerRunt
3080
3169
  return super.attachments;
3081
3170
  }
3082
3171
  getAttachmentAdapter() {
3083
- return _optionalChain([this, 'access', _157 => _157.runtime, 'access', _158 => _158.adapters, 'optionalAccess', _159 => _159.attachments]);
3172
+ return _optionalChain([this, 'access', _161 => _161.runtime, 'access', _162 => _162.adapters, 'optionalAccess', _163 => _163.attachments]);
3084
3173
  }
3085
3174
  connect() {
3086
3175
  return this.runtime.subscribe(() => {
@@ -3093,27 +3182,41 @@ var DefaultThreadComposerRuntimeCore = (_class8 = class extends BaseComposerRunt
3093
3182
  async handleSend(message) {
3094
3183
  this.runtime.append({
3095
3184
  ...message,
3096
- parentId: _nullishCoalesce(_optionalChain([this, 'access', _160 => _160.runtime, 'access', _161 => _161.messages, 'access', _162 => _162.at, 'call', _163 => _163(-1), 'optionalAccess', _164 => _164.id]), () => ( null))
3185
+ parentId: _nullishCoalesce(_optionalChain([this, 'access', _164 => _164.runtime, 'access', _165 => _165.messages, 'access', _166 => _166.at, 'call', _167 => _167(-1), 'optionalAccess', _168 => _168.id]), () => ( null))
3097
3186
  });
3098
3187
  }
3099
3188
  async cancel() {
3100
3189
  this.runtime.cancelRun();
3101
3190
  }
3102
- }, _class8);
3191
+ }, _class7);
3103
3192
 
3104
3193
  // src/utils/ProxyConfigProvider.ts
3105
- var ProxyConfigProvider = (_class9 = class {constructor() { _class9.prototype.__init17.call(this); }
3106
- __init17() {this._providers = /* @__PURE__ */ new Set()}
3194
+ var ProxyConfigProvider = (_class8 = class {constructor() { _class8.prototype.__init16.call(this);_class8.prototype.__init17.call(this); }
3195
+ __init16() {this._providers = /* @__PURE__ */ new Set()}
3107
3196
  getModelConfig() {
3108
- return _chunkCYIFAX4Ujs.mergeModelConfigs.call(void 0, this._providers);
3197
+ return _chunkC6UZOY5Ajs.mergeModelConfigs.call(void 0, this._providers);
3109
3198
  }
3110
3199
  registerModelConfigProvider(provider) {
3111
3200
  this._providers.add(provider);
3201
+ const unsubscribe = _optionalChain([provider, 'access', _169 => _169.subscribe, 'optionalCall', _170 => _170(() => {
3202
+ this.notifySubscribers();
3203
+ })]);
3204
+ this.notifySubscribers();
3112
3205
  return () => {
3113
3206
  this._providers.delete(provider);
3207
+ _optionalChain([unsubscribe, 'optionalCall', _171 => _171()]);
3208
+ this.notifySubscribers();
3114
3209
  };
3115
3210
  }
3116
- }, _class9);
3211
+ __init17() {this._subscribers = /* @__PURE__ */ new Set()}
3212
+ notifySubscribers() {
3213
+ for (const callback of this._subscribers) callback();
3214
+ }
3215
+ subscribe(callback) {
3216
+ this._subscribers.add(callback);
3217
+ return () => this._subscribers.delete(callback);
3218
+ }
3219
+ }, _class8);
3117
3220
 
3118
3221
  // src/utils/idUtils.tsx
3119
3222
  var _nonsecure = require('nanoid/non-secure');
@@ -3180,7 +3283,7 @@ var findHead = (message) => {
3180
3283
  if ("current" in message) return message;
3181
3284
  return null;
3182
3285
  };
3183
- var MessageRepository = (_class10 = class {constructor() { _class10.prototype.__init18.call(this);_class10.prototype.__init19.call(this);_class10.prototype.__init20.call(this); }
3286
+ var MessageRepository = (_class9 = class {constructor() { _class9.prototype.__init18.call(this);_class9.prototype.__init19.call(this);_class9.prototype.__init20.call(this); }
3184
3287
  __init18() {this.messages = /* @__PURE__ */ new Map()}
3185
3288
  // message_id -> item
3186
3289
  __init19() {this.head = null}
@@ -3226,7 +3329,7 @@ var MessageRepository = (_class10 = class {constructor() { _class10.prototype.__
3226
3329
  }
3227
3330
  }
3228
3331
  getMessages() {
3229
- const messages2 = new Array(_nullishCoalesce(_optionalChain([this, 'access', _165 => _165.head, 'optionalAccess', _166 => _166.level]), () => ( 0)));
3332
+ const messages2 = new Array(_nullishCoalesce(_optionalChain([this, 'access', _172 => _172.head, 'optionalAccess', _173 => _173.level]), () => ( 0)));
3230
3333
  for (let current = this.head; current; current = current.prev) {
3231
3334
  messages2[current.level] = current.current;
3232
3335
  }
@@ -3264,7 +3367,7 @@ var MessageRepository = (_class10 = class {constructor() { _class10.prototype.__
3264
3367
  "MessageRepository(updateMessage): Message not found. This is likely an internal bug in assistant-ui."
3265
3368
  );
3266
3369
  return {
3267
- parentId: _nullishCoalesce(_optionalChain([message, 'access', _167 => _167.prev, 'optionalAccess', _168 => _168.current, 'access', _169 => _169.id]), () => ( null)),
3370
+ parentId: _nullishCoalesce(_optionalChain([message, 'access', _174 => _174.prev, 'optionalAccess', _175 => _175.current, 'access', _176 => _176.id]), () => ( null)),
3268
3371
  message: message.current
3269
3372
  };
3270
3373
  }
@@ -3348,11 +3451,11 @@ var MessageRepository = (_class10 = class {constructor() { _class10.prototype.__
3348
3451
  for (const [, message] of this.messages) {
3349
3452
  exportItems.push({
3350
3453
  message: message.current,
3351
- parentId: _nullishCoalesce(_optionalChain([message, 'access', _170 => _170.prev, 'optionalAccess', _171 => _171.current, 'access', _172 => _172.id]), () => ( null))
3454
+ parentId: _nullishCoalesce(_optionalChain([message, 'access', _177 => _177.prev, 'optionalAccess', _178 => _178.current, 'access', _179 => _179.id]), () => ( null))
3352
3455
  });
3353
3456
  }
3354
3457
  return {
3355
- headId: _nullishCoalesce(_optionalChain([this, 'access', _173 => _173.head, 'optionalAccess', _174 => _174.current, 'access', _175 => _175.id]), () => ( null)),
3458
+ headId: _nullishCoalesce(_optionalChain([this, 'access', _180 => _180.head, 'optionalAccess', _181 => _181.current, 'access', _182 => _182.id]), () => ( null)),
3356
3459
  messages: exportItems
3357
3460
  };
3358
3461
  }
@@ -3360,9 +3463,9 @@ var MessageRepository = (_class10 = class {constructor() { _class10.prototype.__
3360
3463
  for (const { message, parentId } of messages2) {
3361
3464
  this.addOrUpdateMessage(parentId, message);
3362
3465
  }
3363
- this.resetHead(_nullishCoalesce(_nullishCoalesce(headId, () => ( _optionalChain([messages2, 'access', _176 => _176.at, 'call', _177 => _177(-1), 'optionalAccess', _178 => _178.message, 'access', _179 => _179.id]))), () => ( null)));
3466
+ this.resetHead(_nullishCoalesce(_nullishCoalesce(headId, () => ( _optionalChain([messages2, 'access', _183 => _183.at, 'call', _184 => _184(-1), 'optionalAccess', _185 => _185.message, 'access', _186 => _186.id]))), () => ( null)));
3364
3467
  }
3365
- }, _class10);
3468
+ }, _class9);
3366
3469
 
3367
3470
  // src/ui/base/tooltip-icon-button.tsx
3368
3471
 
@@ -3464,7 +3567,7 @@ TooltipIconButton.displayName = "TooltipIconButton";
3464
3567
  var toAppendMessage = (messages2, message) => {
3465
3568
  if (typeof message === "string") {
3466
3569
  return {
3467
- parentId: _nullishCoalesce(_optionalChain([messages2, 'access', _180 => _180.at, 'call', _181 => _181(-1), 'optionalAccess', _182 => _182.id]), () => ( null)),
3570
+ parentId: _nullishCoalesce(_optionalChain([messages2, 'access', _187 => _187.at, 'call', _188 => _188(-1), 'optionalAccess', _189 => _189.id]), () => ( null)),
3468
3571
  role: "user",
3469
3572
  content: [{ type: "text", text: message }],
3470
3573
  attachments: []
@@ -3474,7 +3577,7 @@ var toAppendMessage = (messages2, message) => {
3474
3577
  return message;
3475
3578
  }
3476
3579
  return {
3477
- parentId: _nullishCoalesce(_nullishCoalesce(message.parentId, () => ( _optionalChain([messages2, 'access', _183 => _183.at, 'call', _184 => _184(-1), 'optionalAccess', _185 => _185.id]))), () => ( null)),
3580
+ parentId: _nullishCoalesce(_nullishCoalesce(message.parentId, () => ( _optionalChain([messages2, 'access', _190 => _190.at, 'call', _191 => _191(-1), 'optionalAccess', _192 => _192.id]))), () => ( null)),
3478
3581
  role: _nullishCoalesce(message.role, () => ( "user")),
3479
3582
  content: message.content,
3480
3583
  attachments: _nullishCoalesce(message.attachments, () => ( []))
@@ -3486,15 +3589,17 @@ var getThreadState = (runtime) => {
3486
3589
  threadId: runtime.threadId,
3487
3590
  capabilities: runtime.capabilities,
3488
3591
  isDisabled: runtime.isDisabled,
3489
- isRunning: _optionalChain([lastMessage, 'optionalAccess', _186 => _186.role]) !== "assistant" ? false : lastMessage.status.type === "running",
3592
+ isRunning: _optionalChain([lastMessage, 'optionalAccess', _193 => _193.role]) !== "assistant" ? false : lastMessage.status.type === "running",
3490
3593
  messages: runtime.messages,
3491
3594
  suggestions: runtime.suggestions,
3492
3595
  extras: runtime.extras,
3493
3596
  speech: runtime.speech
3494
3597
  });
3495
3598
  };
3496
- var ThreadRuntimeImpl = (_class11 = class {
3497
- // public path = "assistant.threads[main]"; // TODO
3599
+ var ThreadRuntimeImpl = (_class10 = class {
3600
+ get path() {
3601
+ return this._threadBinding.path;
3602
+ }
3498
3603
  /**
3499
3604
  * @deprecated Use `getState().threadId` instead. This will be removed in 0.6.0.
3500
3605
  */
@@ -3547,24 +3652,32 @@ var ThreadRuntimeImpl = (_class11 = class {
3547
3652
  return this._threadBinding.getState();
3548
3653
  }
3549
3654
 
3550
- constructor(threadBinding) {;_class11.prototype.__init21.call(this);_class11.prototype.__init22.call(this);
3655
+ constructor(threadBinding) {;_class10.prototype.__init21.call(this);
3551
3656
  const stateBinding = new LazyMemoizeSubject({
3657
+ path: threadBinding.path,
3552
3658
  getState: () => getThreadState(threadBinding.getState()),
3553
3659
  subscribe: (callback) => threadBinding.subscribe(callback)
3554
3660
  });
3555
3661
  this._threadBinding = {
3662
+ path: threadBinding.path,
3556
3663
  getState: () => threadBinding.getState(),
3557
3664
  getStateState: () => stateBinding.getState(),
3558
3665
  outerSubscribe: (callback) => threadBinding.outerSubscribe(callback),
3559
3666
  subscribe: (callback) => threadBinding.subscribe(callback)
3560
3667
  };
3668
+ this.composer = new ThreadComposerRuntimeImpl(
3669
+ new NestedSubscriptionSubject({
3670
+ path: {
3671
+ ...this.path,
3672
+ ref: this.path.ref + `${this.path.ref}.composer`,
3673
+ composerSource: "thread"
3674
+ },
3675
+ getState: () => this._threadBinding.getState().composer,
3676
+ subscribe: (callback) => this._threadBinding.subscribe(callback)
3677
+ })
3678
+ );
3561
3679
  }
3562
- __init21() {this.composer = new ThreadComposerRuntimeImpl(
3563
- new NestedSubscriptionSubject({
3564
- getState: () => this._threadBinding.getState().composer,
3565
- subscribe: (callback) => this._threadBinding.subscribe(callback)
3566
- })
3567
- )}
3680
+
3568
3681
  getState() {
3569
3682
  return this._threadBinding.getStateState();
3570
3683
  }
@@ -3642,37 +3755,67 @@ var ThreadRuntimeImpl = (_class11 = class {
3642
3755
  }
3643
3756
  getMesssageByIndex(idx) {
3644
3757
  if (idx < 0) throw new Error("Message index must be >= 0");
3758
+ return this._getMessageRuntime(
3759
+ {
3760
+ ...this.path,
3761
+ ref: this.path.ref + `${this.path.ref}.messages[${idx}]`,
3762
+ messageSelector: { type: "index", index: idx }
3763
+ },
3764
+ () => {
3765
+ const messages2 = this._threadBinding.getState().messages;
3766
+ const message = messages2[idx];
3767
+ if (!message) return void 0;
3768
+ return {
3769
+ message,
3770
+ parentId: _nullishCoalesce(_optionalChain([messages2, 'access', _194 => _194[idx - 1], 'optionalAccess', _195 => _195.id]), () => ( null))
3771
+ };
3772
+ }
3773
+ );
3774
+ }
3775
+ getMesssageById(messageId) {
3776
+ return this._getMessageRuntime(
3777
+ {
3778
+ ...this.path,
3779
+ ref: this.path.ref + `${this.path.ref}.messages[messageId=${JSON.stringify(messageId)}]`,
3780
+ messageSelector: { type: "messageId", messageId }
3781
+ },
3782
+ () => this._threadBinding.getState().getMessageById(messageId)
3783
+ );
3784
+ }
3785
+ _getMessageRuntime(path, callback) {
3645
3786
  return new MessageRuntimeImpl(
3646
3787
  new ShallowMemoizeSubject({
3788
+ path,
3647
3789
  getState: () => {
3648
- const { messages: messages2, speech: speechState } = this.getState();
3649
- const message = messages2[idx];
3650
- if (!message) return SKIP_UPDATE;
3790
+ const { message, parentId } = _nullishCoalesce(callback(), () => ( {}));
3791
+ const { messages: messages2, speech: speechState } = this._threadBinding.getState();
3792
+ if (!message || parentId === void 0) return SKIP_UPDATE;
3651
3793
  const thread = this._threadBinding.getState();
3652
3794
  const branches = thread.getBranches(message.id);
3653
3795
  const submittedFeedback = thread.getSubmittedFeedback(message.id);
3654
3796
  return {
3655
3797
  ...message,
3656
3798
  message,
3657
- isLast: idx === messages2.length - 1,
3658
- parentId: _nullishCoalesce(_optionalChain([messages2, 'access', _187 => _187[idx - 1], 'optionalAccess', _188 => _188.id]), () => ( null)),
3799
+ isLast: _optionalChain([messages2, 'access', _196 => _196.at, 'call', _197 => _197(-1), 'optionalAccess', _198 => _198.id]) === message.id,
3800
+ parentId,
3659
3801
  branches,
3660
3802
  branchNumber: branches.indexOf(message.id) + 1,
3661
3803
  branchCount: branches.length,
3662
- speech: _optionalChain([speechState, 'optionalAccess', _189 => _189.messageId]) === message.id ? speechState : void 0,
3804
+ speech: _optionalChain([speechState, 'optionalAccess', _199 => _199.messageId]) === message.id ? speechState : void 0,
3663
3805
  submittedFeedback
3664
3806
  };
3665
3807
  },
3666
- subscribe: (callback) => this._threadBinding.subscribe(callback)
3808
+ subscribe: (callback2) => this._threadBinding.subscribe(callback2)
3667
3809
  }),
3668
3810
  this._threadBinding
3669
3811
  );
3670
3812
  }
3671
- __init22() {this._eventListenerNestedSubscriptions = /* @__PURE__ */ new Map()}
3813
+ __init21() {this._eventListenerNestedSubscriptions = /* @__PURE__ */ new Map()}
3672
3814
  unstable_on(event, callback) {
3673
3815
  let subject = this._eventListenerNestedSubscriptions.get(event);
3674
3816
  if (!subject) {
3675
3817
  subject = new NestedSubscriptionSubject({
3818
+ path: this.path,
3676
3819
  getState: () => ({
3677
3820
  subscribe: (callback2) => this._threadBinding.getState().unstable_on(event, callback2)
3678
3821
  }),
@@ -3682,7 +3825,7 @@ var ThreadRuntimeImpl = (_class11 = class {
3682
3825
  }
3683
3826
  return subject.subscribe(callback);
3684
3827
  }
3685
- }, _class11);
3828
+ }, _class10);
3686
3829
 
3687
3830
  // src/api/AssistantRuntime.ts
3688
3831
  var AssistantRuntimeImpl = class _AssistantRuntimeImpl {
@@ -3702,16 +3845,19 @@ var AssistantRuntimeImpl = class _AssistantRuntimeImpl {
3702
3845
  registerModelConfigProvider(provider) {
3703
3846
  return this._core.registerModelConfigProvider(provider);
3704
3847
  }
3705
- // TODO events for thread switching
3706
3848
  /**
3707
3849
  * @deprecated Thread is now static and never gets updated. This will be removed in 0.6.0.
3708
3850
  */
3709
3851
  subscribe(callback) {
3710
3852
  return this._core.subscribe(callback);
3711
3853
  }
3712
- static createThreadRuntime(_core, CustomThreadRuntime = ThreadRuntimeImpl) {
3854
+ static createMainThreadRuntime(_core, CustomThreadRuntime = ThreadRuntimeImpl) {
3713
3855
  return new CustomThreadRuntime(
3714
3856
  new NestedSubscriptionSubject({
3857
+ path: {
3858
+ ref: "threads.main",
3859
+ threadSelector: { type: "main" }
3860
+ },
3715
3861
  getState: () => _core.thread,
3716
3862
  subscribe: (callback) => _core.subscribe(callback)
3717
3863
  })
@@ -3720,7 +3866,7 @@ var AssistantRuntimeImpl = class _AssistantRuntimeImpl {
3720
3866
  static create(_core, CustomThreadRuntime = ThreadRuntimeImpl) {
3721
3867
  return new _AssistantRuntimeImpl(
3722
3868
  _core,
3723
- _AssistantRuntimeImpl.createThreadRuntime(_core, CustomThreadRuntime)
3869
+ _AssistantRuntimeImpl.createMainThreadRuntime(_core, CustomThreadRuntime)
3724
3870
  );
3725
3871
  }
3726
3872
  };
@@ -3791,7 +3937,7 @@ var fromLanguageModelMessages = (lm, { mergeSteps }) => {
3791
3937
  });
3792
3938
  if (mergeSteps) {
3793
3939
  const previousMessage = messages2[messages2.length - 1];
3794
- if (_optionalChain([previousMessage, 'optionalAccess', _190 => _190.role]) === "assistant") {
3940
+ if (_optionalChain([previousMessage, 'optionalAccess', _200 => _200.role]) === "assistant") {
3795
3941
  previousMessage.content.push(...newContent);
3796
3942
  break;
3797
3943
  }
@@ -3804,7 +3950,7 @@ var fromLanguageModelMessages = (lm, { mergeSteps }) => {
3804
3950
  }
3805
3951
  case "tool": {
3806
3952
  const previousMessage = messages2[messages2.length - 1];
3807
- if (_optionalChain([previousMessage, 'optionalAccess', _191 => _191.role]) !== "assistant")
3953
+ if (_optionalChain([previousMessage, 'optionalAccess', _201 => _201.role]) !== "assistant")
3808
3954
  throw new Error(
3809
3955
  "A tool message must be preceded by an assistant message."
3810
3956
  );
@@ -3880,14 +4026,14 @@ function streamPartDecoderStream() {
3880
4026
  controller.enqueue(decodeStreamPart(chunk));
3881
4027
  }
3882
4028
  });
3883
- return new (0, _chunkCYIFAX4Ujs.PipeableTransformStream)((readable) => {
4029
+ return new (0, _chunkC6UZOY5Ajs.PipeableTransformStream)((readable) => {
3884
4030
  return readable.pipeThrough(new TextDecoderStream()).pipeThrough(chunkByLineStream()).pipeThrough(decodeStream);
3885
4031
  });
3886
4032
  }
3887
4033
 
3888
4034
  // src/runtimes/edge/streams/utils/index.ts
3889
4035
  var streamUtils = {
3890
- streamPartEncoderStream: _chunkCYIFAX4Ujs.streamPartEncoderStream,
4036
+ streamPartEncoderStream: _chunkC6UZOY5Ajs.streamPartEncoderStream,
3891
4037
  streamPartDecoderStream
3892
4038
  };
3893
4039
 
@@ -3934,7 +4080,7 @@ function assistantDecoderStream() {
3934
4080
  case "c" /* ToolCallDelta */: {
3935
4081
  const { toolCallId, argsTextDelta } = value;
3936
4082
  const toolName = toolCallNames.get(toolCallId);
3937
- if (_optionalChain([currentToolCall, 'optionalAccess', _192 => _192.id]) === toolCallId) {
4083
+ if (_optionalChain([currentToolCall, 'optionalAccess', _202 => _202.id]) === toolCallId) {
3938
4084
  currentToolCall.argsText += argsTextDelta;
3939
4085
  }
3940
4086
  controller.enqueue({
@@ -4035,8 +4181,8 @@ var EdgeChatAdapter = class {
4035
4181
  credentials: _nullishCoalesce(this.options.credentials, () => ( "same-origin")),
4036
4182
  body: JSON.stringify({
4037
4183
  system: config.system,
4038
- messages: _chunkCYIFAX4Ujs.toCoreMessages.call(void 0, messages2),
4039
- tools: config.tools ? _chunkCYIFAX4Ujs.toLanguageModelTools.call(void 0, config.tools) : [],
4184
+ messages: _chunkC6UZOY5Ajs.toCoreMessages.call(void 0, messages2),
4185
+ tools: config.tools ? _chunkC6UZOY5Ajs.toLanguageModelTools.call(void 0, config.tools) : [],
4040
4186
  ...config.callSettings,
4041
4187
  ...config.config,
4042
4188
  ...this.options.body
@@ -4046,7 +4192,7 @@ var EdgeChatAdapter = class {
4046
4192
  if (!result.ok) {
4047
4193
  throw new Error(`Status ${result.status}: ${await result.text()}`);
4048
4194
  }
4049
- const stream = result.body.pipeThrough(streamPartDecoderStream()).pipeThrough(assistantDecoderStream()).pipeThrough(_chunkCYIFAX4Ujs.toolResultStream.call(void 0, config.tools, abortSignal)).pipeThrough(_chunkCYIFAX4Ujs.runResultStream.call(void 0, ));
4195
+ const stream = result.body.pipeThrough(streamPartDecoderStream()).pipeThrough(assistantDecoderStream()).pipeThrough(_chunkC6UZOY5Ajs.toolResultStream.call(void 0, config.tools, abortSignal)).pipeThrough(_chunkC6UZOY5Ajs.runResultStream.call(void 0, ));
4050
4196
  let update;
4051
4197
  for await (update of asAsyncIterable(stream)) {
4052
4198
  yield update;
@@ -4078,7 +4224,7 @@ var useEdgeRuntime = (options) => {
4078
4224
  };
4079
4225
 
4080
4226
  // src/runtimes/local/shouldContinue.tsx
4081
- var shouldContinue = (result) => _optionalChain([result, 'access', _193 => _193.status, 'optionalAccess', _194 => _194.type]) === "requires-action" && result.status.reason === "tool-calls" && result.content.every((c) => c.type !== "tool-call" || !!c.result);
4227
+ var shouldContinue = (result) => _optionalChain([result, 'access', _203 => _203.status, 'optionalAccess', _204 => _204.type]) === "requires-action" && result.status.reason === "tool-calls" && result.content.every((c) => c.type !== "tool-call" || !!c.result);
4082
4228
 
4083
4229
  // src/runtimes/composer/DefaultEditComposerRuntimeCore.tsx
4084
4230
  var DefaultEditComposerRuntimeCore = class extends BaseComposerRuntimeCore {
@@ -4098,7 +4244,7 @@ var DefaultEditComposerRuntimeCore = class extends BaseComposerRuntimeCore {
4098
4244
  return true;
4099
4245
  }
4100
4246
  getAttachmentAdapter() {
4101
- return _optionalChain([this, 'access', _195 => _195.runtime, 'access', _196 => _196.adapters, 'optionalAccess', _197 => _197.attachments]);
4247
+ return _optionalChain([this, 'access', _205 => _205.runtime, 'access', _206 => _206.adapters, 'optionalAccess', _207 => _207.attachments]);
4102
4248
  }
4103
4249
 
4104
4250
 
@@ -4122,20 +4268,23 @@ var DefaultEditComposerRuntimeCore = class extends BaseComposerRuntimeCore {
4122
4268
  };
4123
4269
 
4124
4270
  // src/runtimes/core/BaseThreadRuntimeCore.tsx
4125
- var BaseThreadRuntimeCore = (_class12 = class {
4126
- constructor(configProvider) {;_class12.prototype.__init23.call(this);_class12.prototype.__init24.call(this);_class12.prototype.__init25.call(this);_class12.prototype.__init26.call(this);_class12.prototype.__init27.call(this);_class12.prototype.__init28.call(this);
4271
+ var BaseThreadRuntimeCore = (_class11 = class {
4272
+ constructor(configProvider) {;_class11.prototype.__init22.call(this);_class11.prototype.__init23.call(this);_class11.prototype.__init24.call(this);_class11.prototype.__init25.call(this);_class11.prototype.__init26.call(this);_class11.prototype.__init27.call(this);
4127
4273
  this.configProvider = configProvider;
4274
+ _optionalChain([this, 'access', _208 => _208.configProvider, 'access', _209 => _209.subscribe, 'optionalCall', _210 => _210(() => {
4275
+ this._notifyEventSubscribers("model-config-update");
4276
+ })]);
4128
4277
  }
4129
- __init23() {this._subscriptions = /* @__PURE__ */ new Set()}
4130
- __init24() {this.repository = new MessageRepository()}
4278
+ __init22() {this._subscriptions = /* @__PURE__ */ new Set()}
4279
+ __init23() {this.repository = new MessageRepository()}
4131
4280
  get messages() {
4132
4281
  return this.repository.getMessages();
4133
4282
  }
4134
- __init25() {this.composer = new DefaultThreadComposerRuntimeCore(this)}
4283
+ __init24() {this.composer = new DefaultThreadComposerRuntimeCore(this)}
4135
4284
  getModelConfig() {
4136
4285
  return this.configProvider.getModelConfig();
4137
4286
  }
4138
- __init26() {this._editComposers = /* @__PURE__ */ new Map()}
4287
+ __init25() {this._editComposers = /* @__PURE__ */ new Map()}
4139
4288
  getEditComposer(messageId) {
4140
4289
  return this._editComposers.get(messageId);
4141
4290
  }
@@ -4152,6 +4301,9 @@ var BaseThreadRuntimeCore = (_class12 = class {
4152
4301
  );
4153
4302
  this._notifySubscribers();
4154
4303
  }
4304
+ getMessageById(messageId) {
4305
+ return this.repository.getMessage(messageId);
4306
+ }
4155
4307
  getBranches(messageId) {
4156
4308
  return this.repository.getBranches(messageId);
4157
4309
  }
@@ -4171,12 +4323,12 @@ var BaseThreadRuntimeCore = (_class12 = class {
4171
4323
  this._subscriptions.add(callback);
4172
4324
  return () => this._subscriptions.delete(callback);
4173
4325
  }
4174
- __init27() {this._submittedFeedback = {}}
4326
+ __init26() {this._submittedFeedback = {}}
4175
4327
  getSubmittedFeedback(messageId) {
4176
4328
  return this._submittedFeedback[messageId];
4177
4329
  }
4178
4330
  submitFeedback({ messageId, type }) {
4179
- const adapter = _optionalChain([this, 'access', _198 => _198.adapters, 'optionalAccess', _199 => _199.feedback]);
4331
+ const adapter = _optionalChain([this, 'access', _211 => _211.adapters, 'optionalAccess', _212 => _212.feedback]);
4180
4332
  if (!adapter) throw new Error("Feedback adapter not configured");
4181
4333
  const { message } = this.repository.getMessage(messageId);
4182
4334
  adapter.submit({ message, type });
@@ -4186,11 +4338,11 @@ var BaseThreadRuntimeCore = (_class12 = class {
4186
4338
 
4187
4339
 
4188
4340
  speak(messageId) {
4189
- const adapter = _optionalChain([this, 'access', _200 => _200.adapters, 'optionalAccess', _201 => _201.speech]);
4341
+ const adapter = _optionalChain([this, 'access', _213 => _213.adapters, 'optionalAccess', _214 => _214.speech]);
4190
4342
  if (!adapter) throw new Error("Speech adapter not configured");
4191
4343
  const { message } = this.repository.getMessage(messageId);
4192
- _optionalChain([this, 'access', _202 => _202._stopSpeaking, 'optionalCall', _203 => _203()]);
4193
- const utterance = adapter.speak(message);
4344
+ _optionalChain([this, 'access', _215 => _215._stopSpeaking, 'optionalCall', _216 => _216()]);
4345
+ const utterance = adapter.speak(getThreadMessageText(message));
4194
4346
  const unsub = utterance.subscribe(() => {
4195
4347
  if (utterance.status.type === "ended") {
4196
4348
  this._stopSpeaking = void 0;
@@ -4221,7 +4373,7 @@ var BaseThreadRuntimeCore = (_class12 = class {
4221
4373
  this.repository.import(data);
4222
4374
  this._notifySubscribers();
4223
4375
  }
4224
- __init28() {this._eventSubscribers = /* @__PURE__ */ new Map()}
4376
+ __init27() {this._eventSubscribers = /* @__PURE__ */ new Map()}
4225
4377
  unstable_on(event, callback) {
4226
4378
  const subscribers = this._eventSubscribers.get(event);
4227
4379
  if (!subscribers) {
@@ -4234,12 +4386,12 @@ var BaseThreadRuntimeCore = (_class12 = class {
4234
4386
  subscribers2.delete(callback);
4235
4387
  };
4236
4388
  }
4237
- }, _class12);
4389
+ }, _class11);
4238
4390
 
4239
4391
  // src/runtimes/local/LocalThreadRuntimeCore.tsx
4240
- var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
4392
+ var LocalThreadRuntimeCore = (_class12 = class extends BaseThreadRuntimeCore {
4241
4393
  constructor(configProvider, adapter, { initialMessages, ...options }) {
4242
- super(configProvider);_class13.prototype.__init29.call(this);_class13.prototype.__init30.call(this);_class13.prototype.__init31.call(this);_class13.prototype.__init32.call(this);;
4394
+ super(configProvider);_class12.prototype.__init28.call(this);_class12.prototype.__init29.call(this);_class12.prototype.__init30.call(this);_class12.prototype.__init31.call(this);;
4243
4395
  this.adapter = adapter;
4244
4396
  this.threadId = generateId();
4245
4397
  this.options = options;
@@ -4252,7 +4404,7 @@ var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
4252
4404
  }
4253
4405
  }
4254
4406
  }
4255
- __init29() {this.capabilities = {
4407
+ __init28() {this.capabilities = {
4256
4408
  switchToBranch: true,
4257
4409
  edit: true,
4258
4410
  reload: true,
@@ -4262,10 +4414,10 @@ var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
4262
4414
  attachments: false,
4263
4415
  feedback: false
4264
4416
  }}
4265
- __init30() {this.abortController = null}
4417
+ __init29() {this.abortController = null}
4266
4418
 
4267
- __init31() {this.isDisabled = false}
4268
- __init32() {this.suggestions = []}
4419
+ __init30() {this.isDisabled = false}
4420
+ __init31() {this.suggestions = []}
4269
4421
  get adapters() {
4270
4422
  return this.options.adapters;
4271
4423
  }
@@ -4279,17 +4431,17 @@ var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
4279
4431
  set options({ initialMessages, ...options }) {
4280
4432
  this._options = options;
4281
4433
  let hasUpdates = false;
4282
- const canSpeak = _optionalChain([options, 'access', _204 => _204.adapters, 'optionalAccess', _205 => _205.speech]) !== void 0;
4434
+ const canSpeak = _optionalChain([options, 'access', _217 => _217.adapters, 'optionalAccess', _218 => _218.speech]) !== void 0;
4283
4435
  if (this.capabilities.speech !== canSpeak) {
4284
4436
  this.capabilities.speech = canSpeak;
4285
4437
  hasUpdates = true;
4286
4438
  }
4287
- const canAttach = _optionalChain([options, 'access', _206 => _206.adapters, 'optionalAccess', _207 => _207.attachments]) !== void 0;
4439
+ const canAttach = _optionalChain([options, 'access', _219 => _219.adapters, 'optionalAccess', _220 => _220.attachments]) !== void 0;
4288
4440
  if (this.capabilities.attachments !== canAttach) {
4289
4441
  this.capabilities.attachments = canAttach;
4290
4442
  hasUpdates = true;
4291
4443
  }
4292
- const canFeedback = _optionalChain([options, 'access', _208 => _208.adapters, 'optionalAccess', _209 => _209.feedback]) !== void 0;
4444
+ const canFeedback = _optionalChain([options, 'access', _221 => _221.adapters, 'optionalAccess', _222 => _222.feedback]) !== void 0;
4293
4445
  if (this.capabilities.feedback !== canFeedback) {
4294
4446
  this.capabilities.feedback = canFeedback;
4295
4447
  hasUpdates = true;
@@ -4325,13 +4477,13 @@ var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
4325
4477
  }
4326
4478
  async performRoundtrip(parentId, message) {
4327
4479
  const messages2 = this.repository.getMessages();
4328
- _optionalChain([this, 'access', _210 => _210.abortController, 'optionalAccess', _211 => _211.abort, 'call', _212 => _212()]);
4480
+ _optionalChain([this, 'access', _223 => _223.abortController, 'optionalAccess', _224 => _224.abort, 'call', _225 => _225()]);
4329
4481
  this.abortController = new AbortController();
4330
4482
  const initialContent = message.content;
4331
- const initialSteps = _optionalChain([message, 'access', _213 => _213.metadata, 'optionalAccess', _214 => _214.steps]);
4332
- const initalCustom = _optionalChain([message, 'access', _215 => _215.metadata, 'optionalAccess', _216 => _216.custom]);
4483
+ const initialSteps = _optionalChain([message, 'access', _226 => _226.metadata, 'optionalAccess', _227 => _227.steps]);
4484
+ const initalCustom = _optionalChain([message, 'access', _228 => _228.metadata, 'optionalAccess', _229 => _229.custom]);
4333
4485
  const updateMessage = (m) => {
4334
- const newSteps = _optionalChain([m, 'access', _217 => _217.metadata, 'optionalAccess', _218 => _218.steps]) || _optionalChain([m, 'access', _219 => _219.metadata, 'optionalAccess', _220 => _220.roundtrips]);
4486
+ const newSteps = _optionalChain([m, 'access', _230 => _230.metadata, 'optionalAccess', _231 => _231.steps]) || _optionalChain([m, 'access', _232 => _232.metadata, 'optionalAccess', _233 => _233.roundtrips]);
4335
4487
  const steps2 = newSteps ? [..._nullishCoalesce(initialSteps, () => ( [])), ...newSteps] : void 0;
4336
4488
  message = {
4337
4489
  ...message,
@@ -4343,7 +4495,7 @@ var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
4343
4495
  metadata: {
4344
4496
  ...message.metadata,
4345
4497
  ...steps2 ? { roundtrips: steps2, steps: steps2 } : void 0,
4346
- ..._optionalChain([m, 'access', _221 => _221.metadata, 'optionalAccess', _222 => _222.custom]) ? {
4498
+ ..._optionalChain([m, 'access', _234 => _234.metadata, 'optionalAccess', _235 => _235.custom]) ? {
4347
4499
  custom: { ..._nullishCoalesce(initalCustom, () => ( {})), ...m.metadata.custom }
4348
4500
  } : void 0
4349
4501
  }
@@ -4353,7 +4505,7 @@ var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
4353
4505
  this._notifySubscribers();
4354
4506
  };
4355
4507
  const maxSteps = this.options.maxSteps ? this.options.maxSteps : (_nullishCoalesce(this.options.maxToolRoundtrips, () => ( 1))) + 1;
4356
- const steps = _nullishCoalesce(_optionalChain([message, 'access', _223 => _223.metadata, 'optionalAccess', _224 => _224.steps, 'optionalAccess', _225 => _225.length]), () => ( 0));
4508
+ const steps = _nullishCoalesce(_optionalChain([message, 'access', _236 => _236.metadata, 'optionalAccess', _237 => _237.steps, 'optionalAccess', _238 => _238.length]), () => ( 0));
4357
4509
  if (steps >= maxSteps) {
4358
4510
  updateMessage({
4359
4511
  status: {
@@ -4405,7 +4557,7 @@ var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
4405
4557
  return message;
4406
4558
  }
4407
4559
  cancelRun() {
4408
- _optionalChain([this, 'access', _226 => _226.abortController, 'optionalAccess', _227 => _227.abort, 'call', _228 => _228()]);
4560
+ _optionalChain([this, 'access', _239 => _239.abortController, 'optionalAccess', _240 => _240.abort, 'call', _241 => _241()]);
4409
4561
  this.abortController = null;
4410
4562
  }
4411
4563
  addToolResult({
@@ -4441,7 +4593,7 @@ var LocalThreadRuntimeCore = (_class13 = class extends BaseThreadRuntimeCore {
4441
4593
  this.performRoundtrip(parentId, message);
4442
4594
  }
4443
4595
  }
4444
- }, _class13);
4596
+ }, _class12);
4445
4597
 
4446
4598
  // src/runtimes/local/LocalRuntimeCore.tsx
4447
4599
  var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
@@ -4477,7 +4629,7 @@ var LocalRuntimeCore = class extends BaseAssistantRuntimeCore {
4477
4629
  const messages2 = fromCoreMessages(initialMessages);
4478
4630
  this.thread.import({
4479
4631
  messages: messages2.map((m, idx) => ({
4480
- parentId: _nullishCoalesce(_optionalChain([messages2, 'access', _229 => _229[idx - 1], 'optionalAccess', _230 => _230.id]), () => ( null)),
4632
+ parentId: _nullishCoalesce(_optionalChain([messages2, 'access', _242 => _242[idx - 1], 'optionalAccess', _243 => _243.id]), () => ( null)),
4481
4633
  message: m
4482
4634
  }))
4483
4635
  });
@@ -4496,7 +4648,7 @@ var LocalRuntimeImpl = class _LocalRuntimeImpl extends AssistantRuntimeImpl {
4496
4648
  static create(_core) {
4497
4649
  return new _LocalRuntimeImpl(
4498
4650
  _core,
4499
- AssistantRuntimeImpl.createThreadRuntime(_core, ThreadRuntimeImpl)
4651
+ AssistantRuntimeImpl.createMainThreadRuntime(_core, ThreadRuntimeImpl)
4500
4652
  );
4501
4653
  }
4502
4654
  };
@@ -4519,8 +4671,8 @@ var getExternalStoreMessage = (message) => {
4519
4671
  };
4520
4672
 
4521
4673
  // src/runtimes/external-store/ThreadMessageConverter.ts
4522
- var ThreadMessageConverter = (_class14 = class {constructor() { _class14.prototype.__init33.call(this); }
4523
- __init33() {this.cache = /* @__PURE__ */ new WeakMap()}
4674
+ var ThreadMessageConverter = (_class13 = class {constructor() { _class13.prototype.__init32.call(this); }
4675
+ __init32() {this.cache = /* @__PURE__ */ new WeakMap()}
4524
4676
  convertMessages(messages2, converter) {
4525
4677
  return messages2.map((m, idx) => {
4526
4678
  const cached = this.cache.get(m);
@@ -4529,7 +4681,7 @@ var ThreadMessageConverter = (_class14 = class {constructor() { _class14.prototy
4529
4681
  return newMessage;
4530
4682
  });
4531
4683
  }
4532
- }, _class14);
4684
+ }, _class13);
4533
4685
 
4534
4686
  // src/runtimes/external-store/auto-status.tsx
4535
4687
  var AUTO_STATUS_RUNNING = Object.freeze({ type: "running" });
@@ -4617,11 +4769,11 @@ var fromThreadMessageLike = (like, fallbackId, fallbackStatus) => {
4617
4769
  // src/runtimes/external-store/ExternalStoreThreadRuntimeCore.tsx
4618
4770
  var EMPTY_ARRAY2 = Object.freeze([]);
4619
4771
  var hasUpcomingMessage = (isRunning, messages2) => {
4620
- return isRunning && _optionalChain([messages2, 'access', _231 => _231[messages2.length - 1], 'optionalAccess', _232 => _232.role]) !== "assistant";
4772
+ return isRunning && _optionalChain([messages2, 'access', _244 => _244[messages2.length - 1], 'optionalAccess', _245 => _245.role]) !== "assistant";
4621
4773
  };
4622
- var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntimeCore {
4623
- __init34() {this.assistantOptimisticId = null}
4624
- __init35() {this._capabilities = {
4774
+ var ExternalStoreThreadRuntimeCore = (_class14 = class extends BaseThreadRuntimeCore {
4775
+ __init33() {this.assistantOptimisticId = null}
4776
+ __init34() {this._capabilities = {
4625
4777
  switchToBranch: false,
4626
4778
  edit: false,
4627
4779
  reload: false,
@@ -4643,9 +4795,9 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntime
4643
4795
  get adapters() {
4644
4796
  return this._store.adapters;
4645
4797
  }
4646
- __init36() {this.suggestions = []}
4647
- __init37() {this.extras = void 0}
4648
- __init38() {this._converter = new ThreadMessageConverter()}
4798
+ __init35() {this.suggestions = []}
4799
+ __init36() {this.extras = void 0}
4800
+ __init37() {this._converter = new ThreadMessageConverter()}
4649
4801
 
4650
4802
  beginEdit(messageId) {
4651
4803
  if (!this.store.onEdit)
@@ -4653,7 +4805,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntime
4653
4805
  super.beginEdit(messageId);
4654
4806
  }
4655
4807
  constructor(configProvider, store) {
4656
- super(configProvider);_class15.prototype.__init34.call(this);_class15.prototype.__init35.call(this);_class15.prototype.__init36.call(this);_class15.prototype.__init37.call(this);_class15.prototype.__init38.call(this);_class15.prototype.__init39.call(this);;
4808
+ super(configProvider);_class14.prototype.__init33.call(this);_class14.prototype.__init34.call(this);_class14.prototype.__init35.call(this);_class14.prototype.__init36.call(this);_class14.prototype.__init37.call(this);_class14.prototype.__init38.call(this);;
4657
4809
  this.store = store;
4658
4810
  }
4659
4811
  get store() {
@@ -4673,11 +4825,11 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntime
4673
4825
  edit: this._store.onEdit !== void 0,
4674
4826
  reload: this._store.onReload !== void 0,
4675
4827
  cancel: this._store.onCancel !== void 0,
4676
- speech: _optionalChain([this, 'access', _236 => _236._store, 'access', _237 => _237.adapters, 'optionalAccess', _238 => _238.speech]) !== void 0,
4677
- unstable_copy: _optionalChain([this, 'access', _239 => _239._store, 'access', _240 => _240.unstable_capabilities, 'optionalAccess', _241 => _241.copy]) !== false,
4828
+ speech: _optionalChain([this, 'access', _249 => _249._store, 'access', _250 => _250.adapters, 'optionalAccess', _251 => _251.speech]) !== void 0,
4829
+ unstable_copy: _optionalChain([this, 'access', _252 => _252._store, 'access', _253 => _253.unstable_capabilities, 'optionalAccess', _254 => _254.copy]) !== false,
4678
4830
  // default true
4679
- attachments: !!_optionalChain([this, 'access', _242 => _242.store, 'access', _243 => _243.adapters, 'optionalAccess', _244 => _244.attachments]),
4680
- feedback: !!_optionalChain([this, 'access', _245 => _245.store, 'access', _246 => _246.adapters, 'optionalAccess', _247 => _247.feedback])
4831
+ attachments: !!_optionalChain([this, 'access', _255 => _255.store, 'access', _256 => _256.adapters, 'optionalAccess', _257 => _257.attachments]),
4832
+ feedback: !!_optionalChain([this, 'access', _258 => _258.store, 'access', _259 => _259.adapters, 'optionalAccess', _260 => _260.feedback])
4681
4833
  };
4682
4834
  if (oldStore) {
4683
4835
  if (oldStore.convertMessage !== store.convertMessage) {
@@ -4704,7 +4856,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntime
4704
4856
  for (let i = 0; i < messages2.length; i++) {
4705
4857
  const message = messages2[i];
4706
4858
  const parent = messages2[i - 1];
4707
- this.repository.addOrUpdateMessage(_nullishCoalesce(_optionalChain([parent, 'optionalAccess', _248 => _248.id]), () => ( null)), message);
4859
+ this.repository.addOrUpdateMessage(_nullishCoalesce(_optionalChain([parent, 'optionalAccess', _261 => _261.id]), () => ( null)), message);
4708
4860
  }
4709
4861
  if (this.assistantOptimisticId) {
4710
4862
  this.repository.deleteMessage(this.assistantOptimisticId);
@@ -4712,7 +4864,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntime
4712
4864
  }
4713
4865
  if (hasUpcomingMessage(isRunning, messages2)) {
4714
4866
  this.assistantOptimisticId = this.repository.appendOptimisticMessage(
4715
- _nullishCoalesce(_optionalChain([messages2, 'access', _249 => _249.at, 'call', _250 => _250(-1), 'optionalAccess', _251 => _251.id]), () => ( null)),
4867
+ _nullishCoalesce(_optionalChain([messages2, 'access', _262 => _262.at, 'call', _263 => _263(-1), 'optionalAccess', _264 => _264.id]), () => ( null)),
4716
4868
  {
4717
4869
  role: "assistant",
4718
4870
  content: []
@@ -4720,7 +4872,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntime
4720
4872
  );
4721
4873
  }
4722
4874
  this.repository.resetHead(
4723
- _nullishCoalesce(_nullishCoalesce(this.assistantOptimisticId, () => ( _optionalChain([messages2, 'access', _252 => _252.at, 'call', _253 => _253(-1), 'optionalAccess', _254 => _254.id]))), () => ( null))
4875
+ _nullishCoalesce(_nullishCoalesce(this.assistantOptimisticId, () => ( _optionalChain([messages2, 'access', _265 => _265.at, 'call', _266 => _266(-1), 'optionalAccess', _267 => _267.id]))), () => ( null))
4724
4876
  );
4725
4877
  this._messages = this.repository.getMessages();
4726
4878
  this._notifySubscribers();
@@ -4732,7 +4884,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntime
4732
4884
  this.updateMessages(this.repository.getMessages());
4733
4885
  }
4734
4886
  async append(message) {
4735
- if (message.parentId !== (_nullishCoalesce(_optionalChain([this, 'access', _255 => _255.messages, 'access', _256 => _256.at, 'call', _257 => _257(-1), 'optionalAccess', _258 => _258.id]), () => ( null)))) {
4887
+ if (message.parentId !== (_nullishCoalesce(_optionalChain([this, 'access', _268 => _268.messages, 'access', _269 => _269.at, 'call', _270 => _270(-1), 'optionalAccess', _271 => _271.id]), () => ( null)))) {
4736
4888
  if (!this._store.onEdit)
4737
4889
  throw new Error("Runtime does not support editing messages.");
4738
4890
  await this._store.onEdit(message);
@@ -4755,7 +4907,7 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntime
4755
4907
  }
4756
4908
  let messages2 = this.repository.getMessages();
4757
4909
  const previousMessage = messages2[messages2.length - 1];
4758
- if (_optionalChain([previousMessage, 'optionalAccess', _259 => _259.role]) === "user" && previousMessage.id === _optionalChain([messages2, 'access', _260 => _260.at, 'call', _261 => _261(-1), 'optionalAccess', _262 => _262.id])) {
4910
+ if (_optionalChain([previousMessage, 'optionalAccess', _272 => _272.role]) === "user" && previousMessage.id === _optionalChain([messages2, 'access', _273 => _273.at, 'call', _274 => _274(-1), 'optionalAccess', _275 => _275.id])) {
4759
4911
  this.repository.deleteMessage(previousMessage.id);
4760
4912
  if (!this.composer.text.trim()) {
4761
4913
  this.composer.setText(getThreadMessageText(previousMessage));
@@ -4773,12 +4925,12 @@ var ExternalStoreThreadRuntimeCore = (_class15 = class extends BaseThreadRuntime
4773
4925
  throw new Error("Runtime does not support tool results.");
4774
4926
  this._store.onAddToolResult(options);
4775
4927
  }
4776
- __init39() {this.updateMessages = (messages2) => {
4777
- _optionalChain([this, 'access', _263 => _263._store, 'access', _264 => _264.setMessages, 'optionalCall', _265 => _265(
4928
+ __init38() {this.updateMessages = (messages2) => {
4929
+ _optionalChain([this, 'access', _276 => _276._store, 'access', _277 => _277.setMessages, 'optionalCall', _278 => _278(
4778
4930
  messages2.flatMap(getExternalStoreMessage).filter((m) => m != null)
4779
4931
  )]);
4780
4932
  }}
4781
- }, _class15);
4933
+ }, _class14);
4782
4934
 
4783
4935
  // src/runtimes/external-store/ExternalStoreRuntimeCore.tsx
4784
4936
  var ExternalStoreRuntimeCore = class extends BaseAssistantRuntimeCore {
@@ -4994,18 +5146,18 @@ var DangerousInBrowserAdapter = class {
4994
5146
  this.options = options;
4995
5147
  }
4996
5148
  async *run({ messages: messages2, abortSignal, config }) {
4997
- const res = await _chunkCYIFAX4Ujs.getEdgeRuntimeStream.call(void 0, {
5149
+ const res = await _chunkC6UZOY5Ajs.getEdgeRuntimeStream.call(void 0, {
4998
5150
  options: this.options,
4999
5151
  abortSignal,
5000
5152
  requestData: {
5001
5153
  system: config.system,
5002
- messages: _chunkCYIFAX4Ujs.toCoreMessages.call(void 0, messages2),
5003
- tools: config.tools ? _chunkCYIFAX4Ujs.toLanguageModelTools.call(void 0, config.tools) : [],
5154
+ messages: _chunkC6UZOY5Ajs.toCoreMessages.call(void 0, messages2),
5155
+ tools: config.tools ? _chunkC6UZOY5Ajs.toLanguageModelTools.call(void 0, config.tools) : [],
5004
5156
  ...config.callSettings,
5005
5157
  ...config.config
5006
5158
  }
5007
5159
  });
5008
- const stream = res.pipeThrough(_chunkCYIFAX4Ujs.toolResultStream.call(void 0, config.tools, abortSignal)).pipeThrough(_chunkCYIFAX4Ujs.runResultStream.call(void 0, ));
5160
+ const stream = res.pipeThrough(_chunkC6UZOY5Ajs.toolResultStream.call(void 0, config.tools, abortSignal)).pipeThrough(_chunkC6UZOY5Ajs.runResultStream.call(void 0, ));
5009
5161
  for await (const update of asAsyncIterable(stream)) {
5010
5162
  yield update;
5011
5163
  }
@@ -5021,8 +5173,7 @@ var useDangerousInBrowserRuntime = (options) => {
5021
5173
 
5022
5174
  // src/runtimes/speech/WebSpeechSynthesisAdapter.ts
5023
5175
  var WebSpeechSynthesisAdapter = class {
5024
- speak(message) {
5025
- const text = getThreadMessageText(message);
5176
+ speak(text) {
5026
5177
  const utterance = new SpeechSynthesisUtterance(text);
5027
5178
  const subscribers = /* @__PURE__ */ new Set();
5028
5179
  const handleEnd = (reason, error) => {
@@ -5061,8 +5212,8 @@ var WebSpeechSynthesisAdapter = class {
5061
5212
  };
5062
5213
 
5063
5214
  // src/runtimes/attachment/SimpleImageAttachmentAdapter.ts
5064
- var SimpleImageAttachmentAdapter = (_class16 = class {constructor() { _class16.prototype.__init40.call(this); }
5065
- __init40() {this.accept = "image/*"}
5215
+ var SimpleImageAttachmentAdapter = (_class15 = class {constructor() { _class15.prototype.__init39.call(this); }
5216
+ __init39() {this.accept = "image/*"}
5066
5217
  async add(state) {
5067
5218
  return {
5068
5219
  id: state.file.name,
@@ -5087,7 +5238,7 @@ var SimpleImageAttachmentAdapter = (_class16 = class {constructor() { _class16.p
5087
5238
  }
5088
5239
  async remove() {
5089
5240
  }
5090
- }, _class16);
5241
+ }, _class15);
5091
5242
  var getFileDataURL = (file) => new Promise((resolve, reject) => {
5092
5243
  const reader = new FileReader();
5093
5244
  reader.onload = () => resolve(reader.result);
@@ -5096,8 +5247,8 @@ var getFileDataURL = (file) => new Promise((resolve, reject) => {
5096
5247
  });
5097
5248
 
5098
5249
  // src/runtimes/attachment/SimpleTextAttachmentAdapter.ts
5099
- var SimpleTextAttachmentAdapter = (_class17 = class {constructor() { _class17.prototype.__init41.call(this); }
5100
- __init41() {this.accept = "text/plain,text/html,text/markdown,text/csv,text/xml,text/json,text/css"}
5250
+ var SimpleTextAttachmentAdapter = (_class16 = class {constructor() { _class16.prototype.__init40.call(this); }
5251
+ __init40() {this.accept = "text/plain,text/html,text/markdown,text/csv,text/xml,text/json,text/css"}
5101
5252
  async add(state) {
5102
5253
  return {
5103
5254
  id: state.file.name,
@@ -5124,7 +5275,7 @@ ${await getFileText(attachment.file)}
5124
5275
  }
5125
5276
  async remove() {
5126
5277
  }
5127
- }, _class17);
5278
+ }, _class16);
5128
5279
  var getFileText = (file) => new Promise((resolve, reject) => {
5129
5280
  const reader = new FileReader();
5130
5281
  reader.onload = () => resolve(reader.result);
@@ -5225,7 +5376,7 @@ var ThreadConfigProvider = ({
5225
5376
  }) => {
5226
5377
  const hasAssistant = !!useAssistantRuntime({ optional: true });
5227
5378
  const configProvider = config && Object.keys(_nullishCoalesce(config, () => ( {}))).length > 0 ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadConfigContext.Provider, { value: config, children }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _jsxruntime.Fragment, { children });
5228
- if (!_optionalChain([config, 'optionalAccess', _266 => _266.runtime])) return configProvider;
5379
+ if (!_optionalChain([config, 'optionalAccess', _279 => _279.runtime])) return configProvider;
5229
5380
  if (hasAssistant) {
5230
5381
  throw new Error(
5231
5382
  "You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
@@ -5553,7 +5704,7 @@ var AssistantMessageContent = _react.forwardRef.call(void 0, ({ components: comp
5553
5704
  {
5554
5705
  components: {
5555
5706
  ...componentsProp,
5556
- Text: _nullishCoalesce(_nullishCoalesce(_optionalChain([componentsProp, 'optionalAccess', _267 => _267.Text]), () => ( components.Text)), () => ( content_part_default.Text)),
5707
+ Text: _nullishCoalesce(_nullishCoalesce(_optionalChain([componentsProp, 'optionalAccess', _280 => _280.Text]), () => ( components.Text)), () => ( content_part_default.Text)),
5557
5708
  tools: toolsComponents
5558
5709
  }
5559
5710
  }
@@ -5664,7 +5815,7 @@ var useAttachmentSrc = () => {
5664
5815
  const { file, src } = useAttachment((a) => {
5665
5816
  if (a.type !== "image") return {};
5666
5817
  if (a.file) return { file: a.file };
5667
- const src2 = _optionalChain([a, 'access', _268 => _268.content, 'optionalAccess', _269 => _269.filter, 'call', _270 => _270((c) => c.type === "image"), 'access', _271 => _271[0], 'optionalAccess', _272 => _272.image]);
5818
+ const src2 = _optionalChain([a, 'access', _281 => _281.content, 'optionalAccess', _282 => _282.filter, 'call', _283 => _283((c) => c.type === "image"), 'access', _284 => _284[0], 'optionalAccess', _285 => _285.image]);
5668
5819
  if (!src2) return {};
5669
5820
  return { src: src2 };
5670
5821
  });
@@ -5808,7 +5959,7 @@ var ComposerAttachments = ({ components }) => {
5808
5959
  {
5809
5960
  components: {
5810
5961
  ...components,
5811
- Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _273 => _273.Attachment]), () => ( attachment_default))
5962
+ Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _286 => _286.Attachment]), () => ( attachment_default))
5812
5963
  }
5813
5964
  }
5814
5965
  ) });
@@ -5936,7 +6087,7 @@ var ThreadWelcomeSuggestions = () => {
5936
6087
  const suggestions2 = useThread((t) => t.suggestions);
5937
6088
  const { welcome: { suggestions } = {} } = useThreadConfig();
5938
6089
  const finalSuggestions = suggestions2.length ? suggestions2 : suggestions;
5939
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestionContainer, { children: _optionalChain([finalSuggestions, 'optionalAccess', _274 => _274.map, 'call', _275 => _275((suggestion, idx) => {
6090
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestionContainer, { children: _optionalChain([finalSuggestions, 'optionalAccess', _287 => _287.map, 'call', _288 => _288((suggestion, idx) => {
5940
6091
  const key = `${suggestion.prompt}-${idx}`;
5941
6092
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestion, { suggestion }, key);
5942
6093
  })]) });
@@ -6014,7 +6165,7 @@ var UserMessageContent = _react.forwardRef.call(void 0, ({ components, ...props
6014
6165
  {
6015
6166
  components: {
6016
6167
  ...components,
6017
- Text: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _276 => _276.Text]), () => ( content_part_default.Text))
6168
+ Text: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _289 => _289.Text]), () => ( content_part_default.Text))
6018
6169
  }
6019
6170
  }
6020
6171
  ) });
@@ -6031,7 +6182,7 @@ var UserMessageAttachments = ({
6031
6182
  {
6032
6183
  components: {
6033
6184
  ...components,
6034
- Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _277 => _277.Attachment]), () => ( attachment_default))
6185
+ Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _290 => _290.Attachment]), () => ( attachment_default))
6035
6186
  }
6036
6187
  }
6037
6188
  ) }) });
@@ -6134,10 +6285,10 @@ var ThreadMessages = ({ components, unstable_flexGrowDiv: flexGrowDiv = true, ..
6134
6285
  thread_exports.Messages,
6135
6286
  {
6136
6287
  components: {
6137
- UserMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _278 => _278.UserMessage]), () => ( user_message_default)),
6138
- EditComposer: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _279 => _279.EditComposer]), () => ( edit_composer_default)),
6139
- AssistantMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _280 => _280.AssistantMessage]), () => ( assistant_message_default)),
6140
- SystemMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _281 => _281.SystemMessage]), () => ( SystemMessage))
6288
+ UserMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _291 => _291.UserMessage]), () => ( user_message_default)),
6289
+ EditComposer: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _292 => _292.EditComposer]), () => ( edit_composer_default)),
6290
+ AssistantMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _293 => _293.AssistantMessage]), () => ( assistant_message_default)),
6291
+ SystemMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _294 => _294.SystemMessage]), () => ( SystemMessage))
6141
6292
  },
6142
6293
  ...rest
6143
6294
  }
@@ -6148,7 +6299,7 @@ var ThreadMessages = ({ components, unstable_flexGrowDiv: flexGrowDiv = true, ..
6148
6299
  ThreadMessages.displayName = "ThreadMessages";
6149
6300
  var ThreadFollowupSuggestions = () => {
6150
6301
  const suggestions = useThread((t) => t.suggestions);
6151
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, thread_exports.If, { empty: false, running: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aui-thread-followup-suggestions", children: _optionalChain([suggestions, 'optionalAccess', _282 => _282.map, 'call', _283 => _283((suggestion, idx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6302
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, thread_exports.If, { empty: false, running: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "aui-thread-followup-suggestions", children: _optionalChain([suggestions, 'optionalAccess', _295 => _295.map, 'call', _296 => _296((suggestion, idx) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
6152
6303
  thread_exports.Suggestion,
6153
6304
  {
6154
6305
  className: "aui-thread-followup-suggestion",
@@ -6381,5 +6532,6 @@ var assistant_modal_default = Object.assign(AssistantModal, exports12);
6381
6532
 
6382
6533
 
6383
6534
 
6384
- exports.ActionBarPrimitive = actionBar_exports; exports.AssistantActionBar = assistant_action_bar_default; exports.AssistantMessage = assistant_message_default; exports.AssistantModal = assistant_modal_default; exports.AssistantModalPrimitive = assistantModal_exports; exports.AssistantRuntimeProvider = AssistantRuntimeProvider; exports.AttachmentPrimitive = attachment_exports; exports.AttachmentUI = attachment_default; exports.BranchPicker = branch_picker_default; exports.BranchPickerPrimitive = branchPicker_exports; exports.Composer = composer_default; exports.ComposerAttachment = attachment_default; exports.ComposerPrimitive = composer_exports; exports.CompositeAttachmentAdapter = CompositeAttachmentAdapter; exports.ContentPart = content_part_default; exports.ContentPartPrimitive = contentPart_exports; exports.EdgeChatAdapter = EdgeChatAdapter; exports.EditComposer = edit_composer_default; exports.INTERNAL = internal_exports; exports.MessagePrimitive = message_exports; exports.SimpleImageAttachmentAdapter = SimpleImageAttachmentAdapter; exports.SimpleTextAttachmentAdapter = SimpleTextAttachmentAdapter; exports.TextContentPartProvider = TextContentPartProvider; exports.Thread = thread_default; exports.ThreadConfigProvider = ThreadConfigProvider; exports.ThreadPrimitive = thread_exports; exports.ThreadWelcome = thread_welcome_default; exports.UserActionBar = user_action_bar_default; exports.UserMessage = user_message_default; exports.UserMessageAttachment = attachment_default; exports.WebSpeechSynthesisAdapter = WebSpeechSynthesisAdapter; exports.fromCoreMessage = fromCoreMessage; exports.fromCoreMessages = fromCoreMessages; exports.fromLanguageModelMessages = fromLanguageModelMessages; exports.fromLanguageModelTools = fromLanguageModelTools; exports.getExternalStoreMessage = getExternalStoreMessage; exports.makeAssistantTool = makeAssistantTool; exports.makeAssistantToolUI = makeAssistantToolUI; exports.streamUtils = streamUtils; exports.subscribeToMainThread = subscribeToMainThread; exports.toCoreMessage = _chunkCYIFAX4Ujs.toCoreMessage; exports.toCoreMessages = _chunkCYIFAX4Ujs.toCoreMessages; exports.toLanguageModelMessages = _chunkCYIFAX4Ujs.toLanguageModelMessages; exports.toLanguageModelTools = _chunkCYIFAX4Ujs.toLanguageModelTools; exports.useActionBarCopy = useActionBarCopy; exports.useActionBarEdit = useActionBarEdit; exports.useActionBarFeedbackNegative = useActionBarFeedbackNegative; exports.useActionBarFeedbackPositive = useActionBarFeedbackPositive; exports.useActionBarReload = useActionBarReload; exports.useActionBarSpeak = useActionBarSpeak; exports.useActionBarStopSpeaking = useActionBarStopSpeaking; exports.useAppendMessage = useAppendMessage; exports.useAssistantActions = useAssistantActions; exports.useAssistantActionsStore = useAssistantActionsStore; exports.useAssistantContext = useAssistantContext; exports.useAssistantInstructions = useAssistantInstructions; exports.useAssistantRuntime = useAssistantRuntime; exports.useAssistantRuntimeStore = useAssistantRuntimeStore; exports.useAssistantTool = useAssistantTool; exports.useAssistantToolUI = useAssistantToolUI; exports.useBranchPickerCount = useBranchPickerCount; exports.useBranchPickerNext = useBranchPickerNext; exports.useBranchPickerNumber = useBranchPickerNumber; exports.useBranchPickerPrevious = useBranchPickerPrevious; exports.useComposer = useComposer; exports.useComposerAddAttachment = useComposerAddAttachment; exports.useComposerCancel = useComposerCancel; exports.useComposerContext = useComposerContext; exports.useComposerIf = useComposerIf; exports.useComposerRuntime = useComposerRuntime; exports.useComposerSend = useComposerSend; exports.useComposerStore = useComposerStore; exports.useContentPart = useContentPart; exports.useContentPartContext = useContentPartContext; exports.useContentPartDisplay = useContentPartDisplay; exports.useContentPartImage = useContentPartImage; exports.useContentPartRuntime = useContentPartRuntime; exports.useContentPartStore = useContentPartStore; exports.useContentPartText = useContentPartText; exports.useDangerousInBrowserRuntime = useDangerousInBrowserRuntime; exports.useEdgeRuntime = useEdgeRuntime; exports.useEditComposer = useEditComposer; exports.useEditComposerStore = useEditComposerStore; exports.useExternalMessageConverter = useExternalMessageConverter; exports.useExternalStoreRuntime = useExternalStoreRuntime; exports.useLocalRuntime = useLocalRuntime; exports.useMessage = useMessage; exports.useMessageContext = useMessageContext; exports.useMessageIf = useMessageIf; exports.useMessageRuntime = useMessageRuntime; exports.useMessageStore = useMessageStore; exports.useMessageUtils = useMessageUtils; exports.useMessageUtilsStore = useMessageUtilsStore; exports.useSwitchToNewThread = useSwitchToNewThread; exports.useThread = useThread; exports.useThreadActions = useThreadActions; exports.useThreadActionsStore = useThreadActionsStore; exports.useThreadComposer = useThreadComposer; exports.useThreadComposerStore = useThreadComposerStore; exports.useThreadConfig = useThreadConfig; exports.useThreadContext = useThreadContext; exports.useThreadEmpty = useThreadEmpty; exports.useThreadIf = useThreadIf; exports.useThreadMessages = useThreadMessages; exports.useThreadMessagesStore = useThreadMessagesStore; exports.useThreadRuntime = useThreadRuntime; exports.useThreadRuntimeStore = useThreadRuntimeStore; exports.useThreadScrollToBottom = useThreadScrollToBottom; exports.useThreadStore = useThreadStore; exports.useThreadSuggestion = useThreadSuggestion; exports.useThreadViewport = useThreadViewport; exports.useThreadViewportStore = useThreadViewportStore; exports.useToolUIs = useToolUIs; exports.useToolUIsStore = useToolUIsStore;
6535
+
6536
+ exports.ActionBarPrimitive = actionBar_exports; exports.AssistantActionBar = assistant_action_bar_default; exports.AssistantMessage = assistant_message_default; exports.AssistantModal = assistant_modal_default; exports.AssistantModalPrimitive = assistantModal_exports; exports.AssistantRuntimeProvider = AssistantRuntimeProvider; exports.AttachmentPrimitive = attachment_exports; exports.AttachmentUI = attachment_default; exports.BranchPicker = branch_picker_default; exports.BranchPickerPrimitive = branchPicker_exports; exports.Composer = composer_default; exports.ComposerAttachment = attachment_default; exports.ComposerPrimitive = composer_exports; exports.CompositeAttachmentAdapter = CompositeAttachmentAdapter; exports.ContentPart = content_part_default; exports.ContentPartPrimitive = contentPart_exports; exports.EdgeChatAdapter = EdgeChatAdapter; exports.EditComposer = edit_composer_default; exports.INTERNAL = internal_exports; exports.MessagePrimitive = message_exports; exports.SimpleImageAttachmentAdapter = SimpleImageAttachmentAdapter; exports.SimpleTextAttachmentAdapter = SimpleTextAttachmentAdapter; exports.TextContentPartProvider = TextContentPartProvider; exports.Thread = thread_default; exports.ThreadConfigProvider = ThreadConfigProvider; exports.ThreadPrimitive = thread_exports; exports.ThreadWelcome = thread_welcome_default; exports.UserActionBar = user_action_bar_default; exports.UserMessage = user_message_default; exports.UserMessageAttachment = attachment_default; exports.WebSpeechSynthesisAdapter = WebSpeechSynthesisAdapter; exports.fromCoreMessage = fromCoreMessage; exports.fromCoreMessages = fromCoreMessages; exports.fromLanguageModelMessages = fromLanguageModelMessages; exports.fromLanguageModelTools = fromLanguageModelTools; exports.getExternalStoreMessage = getExternalStoreMessage; exports.makeAssistantTool = makeAssistantTool; exports.makeAssistantToolUI = makeAssistantToolUI; exports.streamUtils = streamUtils; exports.subscribeToMainThread = subscribeToMainThread; exports.toCoreMessage = _chunkC6UZOY5Ajs.toCoreMessage; exports.toCoreMessages = _chunkC6UZOY5Ajs.toCoreMessages; exports.toLanguageModelMessages = _chunkC6UZOY5Ajs.toLanguageModelMessages; exports.toLanguageModelTools = _chunkC6UZOY5Ajs.toLanguageModelTools; exports.useActionBarCopy = useActionBarCopy; exports.useActionBarEdit = useActionBarEdit; exports.useActionBarFeedbackNegative = useActionBarFeedbackNegative; exports.useActionBarFeedbackPositive = useActionBarFeedbackPositive; exports.useActionBarReload = useActionBarReload; exports.useActionBarSpeak = useActionBarSpeak; exports.useActionBarStopSpeaking = useActionBarStopSpeaking; exports.useAppendMessage = useAppendMessage; exports.useAssistantActions = useAssistantActions; exports.useAssistantActionsStore = useAssistantActionsStore; exports.useAssistantContext = useAssistantContext; exports.useAssistantInstructions = useAssistantInstructions; exports.useAssistantRuntime = useAssistantRuntime; exports.useAssistantRuntimeStore = useAssistantRuntimeStore; exports.useAssistantTool = useAssistantTool; exports.useAssistantToolUI = useAssistantToolUI; exports.useBranchPickerCount = useBranchPickerCount; exports.useBranchPickerNext = useBranchPickerNext; exports.useBranchPickerNumber = useBranchPickerNumber; exports.useBranchPickerPrevious = useBranchPickerPrevious; exports.useComposer = useComposer; exports.useComposerAddAttachment = useComposerAddAttachment; exports.useComposerCancel = useComposerCancel; exports.useComposerContext = useComposerContext; exports.useComposerIf = useComposerIf; exports.useComposerRuntime = useComposerRuntime; exports.useComposerSend = useComposerSend; exports.useComposerStore = useComposerStore; exports.useContentPart = useContentPart; exports.useContentPartContext = useContentPartContext; exports.useContentPartDisplay = useContentPartDisplay; exports.useContentPartImage = useContentPartImage; exports.useContentPartRuntime = useContentPartRuntime; exports.useContentPartStore = useContentPartStore; exports.useContentPartText = useContentPartText; exports.useDangerousInBrowserRuntime = useDangerousInBrowserRuntime; exports.useEdgeRuntime = useEdgeRuntime; exports.useEditComposer = useEditComposer; exports.useEditComposerStore = useEditComposerStore; exports.useExternalMessageConverter = useExternalMessageConverter; exports.useExternalStoreRuntime = useExternalStoreRuntime; exports.useLocalRuntime = useLocalRuntime; exports.useMessage = useMessage; exports.useMessageContext = useMessageContext; exports.useMessageIf = useMessageIf; exports.useMessageRuntime = useMessageRuntime; exports.useMessageStore = useMessageStore; exports.useMessageUtils = useMessageUtils; exports.useMessageUtilsStore = useMessageUtilsStore; exports.useSwitchToNewThread = useSwitchToNewThread; exports.useThread = useThread; exports.useThreadActions = useThreadActions; exports.useThreadActionsStore = useThreadActionsStore; exports.useThreadComposer = useThreadComposer; exports.useThreadComposerStore = useThreadComposerStore; exports.useThreadConfig = useThreadConfig; exports.useThreadContext = useThreadContext; exports.useThreadEmpty = useThreadEmpty; exports.useThreadIf = useThreadIf; exports.useThreadMessages = useThreadMessages; exports.useThreadMessagesStore = useThreadMessagesStore; exports.useThreadModelConfig = useThreadModelConfig; exports.useThreadRuntime = useThreadRuntime; exports.useThreadRuntimeStore = useThreadRuntimeStore; exports.useThreadScrollToBottom = useThreadScrollToBottom; exports.useThreadStore = useThreadStore; exports.useThreadSuggestion = useThreadSuggestion; exports.useThreadViewport = useThreadViewport; exports.useThreadViewportStore = useThreadViewportStore; exports.useToolUIs = useToolUIs; exports.useToolUIsStore = useToolUIsStore;
6385
6537
  //# sourceMappingURL=index.js.map