@assistant-ui/react 0.5.58 → 0.5.60

Sign up to get free protection for your applications and to get access to all the features.
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;"use client";
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;"use client";
2
2
 
3
3
 
4
4
 
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- var _chunkCWAZOKEWjs = require('./chunk-CWAZOKEW.js');
13
+ var _chunkJ2V7Y7JXjs = require('./chunk-J2V7Y7JX.js');
14
14
 
15
15
 
16
16
  var _chunkDCHYNTHIjs = require('./chunk-DCHYNTHI.js');
@@ -244,7 +244,9 @@ var makeThreadActionStore = (runtimeStore) => {
244
244
  append: (message) => runtimeStore.getState().append(message),
245
245
  cancelRun: () => runtimeStore.getState().cancelRun(),
246
246
  addToolResult: (options) => runtimeStore.getState().addToolResult(options),
247
- speak: (messageId) => runtimeStore.getState().speak(messageId)
247
+ speak: (messageId) => runtimeStore.getState().speak(messageId),
248
+ submitFeedback: ({ messageId, type }) => runtimeStore.getState().submitFeedback({ messageId, type }),
249
+ getModelConfig: () => runtimeStore.getState().getModelConfig()
248
250
  })
249
251
  );
250
252
  };
@@ -395,7 +397,7 @@ var ThreadRuntimeComposer = (_class2 = class {
395
397
  var ProxyConfigProvider = (_class3 = class {constructor() { _class3.prototype.__init6.call(this); }
396
398
  __init6() {this._providers = /* @__PURE__ */ new Set()}
397
399
  getModelConfig() {
398
- return _chunkCWAZOKEWjs.mergeModelConfigs.call(void 0, this._providers);
400
+ return _chunkJ2V7Y7JXjs.mergeModelConfigs.call(void 0, this._providers);
399
401
  }
400
402
  registerModelConfigProvider(provider) {
401
403
  this._providers.add(provider);
@@ -774,7 +776,10 @@ var useSmooth = (state, smooth = false) => {
774
776
  const {
775
777
  part: { text }
776
778
  } = state;
777
- const id = useMessage((m) => m.message.id);
779
+ const id = useMessage({
780
+ optional: true,
781
+ selector: (m) => m.message.id
782
+ });
778
783
  const idRef = _react.useRef.call(void 0, id);
779
784
  const [displayedText, setDisplayedText] = _react.useState.call(void 0, text);
780
785
  const smoothStatusStore = useSmoothStatusStore({ optional: true });
@@ -1074,14 +1079,14 @@ function streamPartDecoderStream() {
1074
1079
  controller.enqueue(decodeStreamPart(chunk));
1075
1080
  }
1076
1081
  });
1077
- return new (0, _chunkCWAZOKEWjs.PipeableTransformStream)((readable) => {
1082
+ return new (0, _chunkJ2V7Y7JXjs.PipeableTransformStream)((readable) => {
1078
1083
  return readable.pipeThrough(new TextDecoderStream()).pipeThrough(chunkByLineStream()).pipeThrough(decodeStream);
1079
1084
  });
1080
1085
  }
1081
1086
 
1082
1087
  // src/runtimes/edge/streams/utils/index.ts
1083
1088
  var streamUtils = {
1084
- streamPartEncoderStream: _chunkCWAZOKEWjs.streamPartEncoderStream,
1089
+ streamPartEncoderStream: _chunkJ2V7Y7JXjs.streamPartEncoderStream,
1085
1090
  streamPartDecoderStream
1086
1091
  };
1087
1092
 
@@ -1190,8 +1195,8 @@ var EdgeChatAdapter = class {
1190
1195
  credentials: _nullishCoalesce(this.options.credentials, () => ( "same-origin")),
1191
1196
  body: JSON.stringify({
1192
1197
  system: config.system,
1193
- messages: _chunkCWAZOKEWjs.toCoreMessages.call(void 0, messages),
1194
- tools: config.tools ? _chunkCWAZOKEWjs.toLanguageModelTools.call(void 0, config.tools) : [],
1198
+ messages: _chunkJ2V7Y7JXjs.toCoreMessages.call(void 0, messages),
1199
+ tools: config.tools ? _chunkJ2V7Y7JXjs.toLanguageModelTools.call(void 0, config.tools) : [],
1195
1200
  ...config.callSettings,
1196
1201
  ...config.config,
1197
1202
  ...this.options.body
@@ -1201,7 +1206,7 @@ var EdgeChatAdapter = class {
1201
1206
  if (result.status !== 200) {
1202
1207
  throw new Error(`Status ${result.status}: ${await result.text()}`);
1203
1208
  }
1204
- const stream = result.body.pipeThrough(streamPartDecoderStream()).pipeThrough(assistantDecoderStream()).pipeThrough(_chunkCWAZOKEWjs.toolResultStream.call(void 0, config.tools, abortSignal)).pipeThrough(_chunkCWAZOKEWjs.runResultStream.call(void 0, ));
1209
+ const stream = result.body.pipeThrough(streamPartDecoderStream()).pipeThrough(assistantDecoderStream()).pipeThrough(_chunkJ2V7Y7JXjs.toolResultStream.call(void 0, config.tools, abortSignal)).pipeThrough(_chunkJ2V7Y7JXjs.runResultStream.call(void 0, ));
1205
1210
  let update;
1206
1211
  for await (update of asAsyncIterable(stream)) {
1207
1212
  yield update;
@@ -1255,7 +1260,8 @@ var LocalThreadRuntime = (_class6 = class {
1255
1260
  cancel: true,
1256
1261
  unstable_copy: true,
1257
1262
  speak: false,
1258
- attachments: false
1263
+ attachments: false,
1264
+ feedback: false
1259
1265
  }}
1260
1266
 
1261
1267
  __init18() {this.isDisabled = false}
@@ -1266,6 +1272,9 @@ var LocalThreadRuntime = (_class6 = class {
1266
1272
  this,
1267
1273
  this.notifySubscribers.bind(this)
1268
1274
  )}
1275
+ getModelConfig() {
1276
+ return this.configProvider.getModelConfig();
1277
+ }
1269
1278
 
1270
1279
  get options() {
1271
1280
  return this._options;
@@ -1284,6 +1293,11 @@ var LocalThreadRuntime = (_class6 = class {
1284
1293
  this.capabilities.attachments = canAttach;
1285
1294
  hasUpdates = true;
1286
1295
  }
1296
+ const canFeedback = _optionalChain([options, 'access', _41 => _41.adapters, 'optionalAccess', _42 => _42.feedback]) !== void 0;
1297
+ if (this.capabilities.feedback !== canFeedback) {
1298
+ this.capabilities.feedback = canFeedback;
1299
+ hasUpdates = true;
1300
+ }
1287
1301
  if (hasUpdates) this.notifySubscribers();
1288
1302
  }
1289
1303
  getBranches(messageId) {
@@ -1321,18 +1335,18 @@ var LocalThreadRuntime = (_class6 = class {
1321
1335
  }
1322
1336
  async performRoundtrip(parentId, message) {
1323
1337
  const messages = this.repository.getMessages();
1324
- _optionalChain([this, 'access', _41 => _41.abortController, 'optionalAccess', _42 => _42.abort, 'call', _43 => _43()]);
1338
+ _optionalChain([this, 'access', _43 => _43.abortController, 'optionalAccess', _44 => _44.abort, 'call', _45 => _45()]);
1325
1339
  this.abortController = new AbortController();
1326
1340
  const initialContent = message.content;
1327
- const initialRoundtrips = _optionalChain([message, 'access', _44 => _44.metadata, 'optionalAccess', _45 => _45.roundtrips]);
1328
- const initalCustom = _optionalChain([message, 'access', _46 => _46.metadata, 'optionalAccess', _47 => _47.custom]);
1341
+ const initialRoundtrips = _optionalChain([message, 'access', _46 => _46.metadata, 'optionalAccess', _47 => _47.roundtrips]);
1342
+ const initalCustom = _optionalChain([message, 'access', _48 => _48.metadata, 'optionalAccess', _49 => _49.custom]);
1329
1343
  const updateMessage = (m) => {
1330
1344
  message = {
1331
1345
  ...message,
1332
1346
  ...m.content ? { content: [...initialContent, ..._nullishCoalesce(m.content, () => ( []))] } : void 0,
1333
1347
  status: _nullishCoalesce(m.status, () => ( message.status)),
1334
1348
  // TODO deprecated, remove in v0.6
1335
- ..._optionalChain([m, 'access', _48 => _48.metadata, 'optionalAccess', _49 => _49.roundtrips]) ? {
1349
+ ..._optionalChain([m, 'access', _50 => _50.metadata, 'optionalAccess', _51 => _51.roundtrips]) ? {
1336
1350
  roundtrips: [
1337
1351
  ..._nullishCoalesce(initialRoundtrips, () => ( [])),
1338
1352
  ...m.metadata.roundtrips
@@ -1347,7 +1361,7 @@ var LocalThreadRuntime = (_class6 = class {
1347
1361
  ...m.metadata.roundtrips
1348
1362
  ]
1349
1363
  } : void 0,
1350
- ..._optionalChain([m, 'access', _50 => _50.metadata, 'optionalAccess', _51 => _51.custom]) ? {
1364
+ ..._optionalChain([m, 'access', _52 => _52.metadata, 'optionalAccess', _53 => _53.custom]) ? {
1351
1365
  custom: { ..._nullishCoalesce(initalCustom, () => ( {})), ...m.metadata.custom }
1352
1366
  } : void 0
1353
1367
  }
@@ -1357,7 +1371,7 @@ var LocalThreadRuntime = (_class6 = class {
1357
1371
  this.notifySubscribers();
1358
1372
  };
1359
1373
  const maxToolRoundtrips = _nullishCoalesce(this.options.maxToolRoundtrips, () => ( 1));
1360
- const toolRoundtrips = _nullishCoalesce(_optionalChain([message, 'access', _52 => _52.metadata, 'optionalAccess', _53 => _53.roundtrips, 'optionalAccess', _54 => _54.length]), () => ( 0));
1374
+ const toolRoundtrips = _nullishCoalesce(_optionalChain([message, 'access', _54 => _54.metadata, 'optionalAccess', _55 => _55.roundtrips, 'optionalAccess', _56 => _56.length]), () => ( 0));
1361
1375
  if (toolRoundtrips > maxToolRoundtrips) {
1362
1376
  updateMessage({
1363
1377
  status: {
@@ -1456,7 +1470,7 @@ var LocalThreadRuntime = (_class6 = class {
1456
1470
  // TODO lift utterance state to thread runtime
1457
1471
 
1458
1472
  speak(messageId) {
1459
- const adapter = _optionalChain([this, 'access', _55 => _55.options, 'access', _56 => _56.adapters, 'optionalAccess', _57 => _57.speech]);
1473
+ const adapter = _optionalChain([this, 'access', _57 => _57.options, 'access', _58 => _58.adapters, 'optionalAccess', _59 => _59.speech]);
1460
1474
  if (!adapter) throw new Error("Speech adapter not configured");
1461
1475
  const { message } = this.repository.getMessage(messageId);
1462
1476
  if (this._utterance) {
@@ -1472,6 +1486,12 @@ var LocalThreadRuntime = (_class6 = class {
1472
1486
  this._utterance = utterance;
1473
1487
  return this._utterance;
1474
1488
  }
1489
+ submitFeedback({ messageId, type }) {
1490
+ const adapter = _optionalChain([this, 'access', _60 => _60.options, 'access', _61 => _61.adapters, 'optionalAccess', _62 => _62.feedback]);
1491
+ if (!adapter) throw new Error("Feedback adapter not configured");
1492
+ const { message } = this.repository.getMessage(messageId);
1493
+ adapter.submit({ message, type });
1494
+ }
1475
1495
  export() {
1476
1496
  return this.repository.export();
1477
1497
  }
@@ -1520,7 +1540,7 @@ var LocalRuntime = class extends BaseAssistantRuntime {
1520
1540
  const messages = fromCoreMessages(initialMessages);
1521
1541
  this.thread.import({
1522
1542
  messages: messages.map((m, idx) => ({
1523
- parentId: _nullishCoalesce(_optionalChain([messages, 'access', _58 => _58[idx - 1], 'optionalAccess', _59 => _59.id]), () => ( null)),
1543
+ parentId: _nullishCoalesce(_optionalChain([messages, 'access', _63 => _63[idx - 1], 'optionalAccess', _64 => _64.id]), () => ( null)),
1524
1544
  message: m
1525
1545
  }))
1526
1546
  });
@@ -1649,9 +1669,13 @@ var getThreadMessageText = (message) => {
1649
1669
 
1650
1670
  // src/runtimes/external-store/ExternalStoreThreadRuntime.tsx
1651
1671
  var hasUpcomingMessage = (isRunning, messages) => {
1652
- return isRunning && _optionalChain([messages, 'access', _60 => _60[messages.length - 1], 'optionalAccess', _61 => _61.role]) !== "assistant";
1672
+ return isRunning && _optionalChain([messages, 'access', _65 => _65[messages.length - 1], 'optionalAccess', _66 => _66.role]) !== "assistant";
1653
1673
  };
1654
1674
  var ExternalStoreThreadRuntime = (_class8 = class {
1675
+ constructor(configProvider, store) {;_class8.prototype.__init21.call(this);_class8.prototype.__init22.call(this);_class8.prototype.__init23.call(this);_class8.prototype.__init24.call(this);_class8.prototype.__init25.call(this);_class8.prototype.__init26.call(this);_class8.prototype.__init27.call(this);
1676
+ this.configProvider = configProvider;
1677
+ this.store = store;
1678
+ }
1655
1679
  __init21() {this._subscriptions = /* @__PURE__ */ new Set()}
1656
1680
  __init22() {this.repository = new MessageRepository()}
1657
1681
  __init23() {this.assistantOptimisticId = null}
@@ -1662,7 +1686,8 @@ var ExternalStoreThreadRuntime = (_class8 = class {
1662
1686
  cancel: false,
1663
1687
  unstable_copy: false,
1664
1688
  speak: false,
1665
- attachments: false
1689
+ attachments: false,
1690
+ feedback: false
1666
1691
  }}
1667
1692
  get capabilities() {
1668
1693
  return this._capabilities;
@@ -1676,9 +1701,6 @@ var ExternalStoreThreadRuntime = (_class8 = class {
1676
1701
  this,
1677
1702
  this.notifySubscribers.bind(this)
1678
1703
  )}
1679
- constructor(store) {;_class8.prototype.__init21.call(this);_class8.prototype.__init22.call(this);_class8.prototype.__init23.call(this);_class8.prototype.__init24.call(this);_class8.prototype.__init25.call(this);_class8.prototype.__init26.call(this);_class8.prototype.__init27.call(this);
1680
- this.store = store;
1681
- }
1682
1704
  get store() {
1683
1705
  return this._store;
1684
1706
  }
@@ -1695,11 +1717,12 @@ var ExternalStoreThreadRuntime = (_class8 = class {
1695
1717
  reload: this._store.onReload !== void 0,
1696
1718
  cancel: this._store.onCancel !== void 0,
1697
1719
  speak: this._store.onSpeak !== void 0,
1698
- unstable_copy: _optionalChain([this, 'access', _65 => _65._store, 'access', _66 => _66.unstable_capabilities, 'optionalAccess', _67 => _67.copy]) !== false,
1720
+ unstable_copy: _optionalChain([this, 'access', _70 => _70._store, 'access', _71 => _71.unstable_capabilities, 'optionalAccess', _72 => _72.copy]) !== false,
1699
1721
  // default true
1700
- attachments: !!_optionalChain([this, 'access', _68 => _68.store, 'access', _69 => _69.adapters, 'optionalAccess', _70 => _70.attachments])
1722
+ attachments: !!_optionalChain([this, 'access', _73 => _73.store, 'access', _74 => _74.adapters, 'optionalAccess', _75 => _75.attachments]),
1723
+ feedback: !!_optionalChain([this, 'access', _76 => _76.store, 'access', _77 => _77.adapters, 'optionalAccess', _78 => _78.feedback])
1701
1724
  };
1702
- this.composer.setAttachmentAdapter(_optionalChain([this, 'access', _71 => _71._store, 'access', _72 => _72.adapters, 'optionalAccess', _73 => _73.attachments]));
1725
+ this.composer.setAttachmentAdapter(_optionalChain([this, 'access', _79 => _79._store, 'access', _80 => _80.adapters, 'optionalAccess', _81 => _81.attachments]));
1703
1726
  if (oldStore) {
1704
1727
  if (oldStore.convertMessage !== store.convertMessage) {
1705
1728
  this.converter = new ThreadMessageConverter();
@@ -1725,7 +1748,7 @@ var ExternalStoreThreadRuntime = (_class8 = class {
1725
1748
  for (let i = 0; i < messages.length; i++) {
1726
1749
  const message = messages[i];
1727
1750
  const parent = messages[i - 1];
1728
- this.repository.addOrUpdateMessage(_nullishCoalesce(_optionalChain([parent, 'optionalAccess', _74 => _74.id]), () => ( null)), message);
1751
+ this.repository.addOrUpdateMessage(_nullishCoalesce(_optionalChain([parent, 'optionalAccess', _82 => _82.id]), () => ( null)), message);
1729
1752
  }
1730
1753
  if (this.assistantOptimisticId) {
1731
1754
  this.repository.deleteMessage(this.assistantOptimisticId);
@@ -1733,7 +1756,7 @@ var ExternalStoreThreadRuntime = (_class8 = class {
1733
1756
  }
1734
1757
  if (hasUpcomingMessage(isRunning, messages)) {
1735
1758
  this.assistantOptimisticId = this.repository.appendOptimisticMessage(
1736
- _nullishCoalesce(_optionalChain([messages, 'access', _75 => _75.at, 'call', _76 => _76(-1), 'optionalAccess', _77 => _77.id]), () => ( null)),
1759
+ _nullishCoalesce(_optionalChain([messages, 'access', _83 => _83.at, 'call', _84 => _84(-1), 'optionalAccess', _85 => _85.id]), () => ( null)),
1737
1760
  {
1738
1761
  role: "assistant",
1739
1762
  content: []
@@ -1741,11 +1764,14 @@ var ExternalStoreThreadRuntime = (_class8 = class {
1741
1764
  );
1742
1765
  }
1743
1766
  this.repository.resetHead(
1744
- _nullishCoalesce(_nullishCoalesce(this.assistantOptimisticId, () => ( _optionalChain([messages, 'access', _78 => _78.at, 'call', _79 => _79(-1), 'optionalAccess', _80 => _80.id]))), () => ( null))
1767
+ _nullishCoalesce(_nullishCoalesce(this.assistantOptimisticId, () => ( _optionalChain([messages, 'access', _86 => _86.at, 'call', _87 => _87(-1), 'optionalAccess', _88 => _88.id]))), () => ( null))
1745
1768
  );
1746
1769
  this.messages = this.repository.getMessages();
1747
1770
  this.notifySubscribers();
1748
1771
  }
1772
+ getModelConfig() {
1773
+ return this.configProvider.getModelConfig();
1774
+ }
1749
1775
  notifySubscribers() {
1750
1776
  for (const callback of this._subscriptions) callback();
1751
1777
  }
@@ -1759,7 +1785,7 @@ var ExternalStoreThreadRuntime = (_class8 = class {
1759
1785
  this.updateMessages(this.repository.getMessages());
1760
1786
  }
1761
1787
  async append(message) {
1762
- if (message.parentId !== (_nullishCoalesce(_optionalChain([this, 'access', _81 => _81.messages, 'access', _82 => _82.at, 'call', _83 => _83(-1), 'optionalAccess', _84 => _84.id]), () => ( null)))) {
1788
+ if (message.parentId !== (_nullishCoalesce(_optionalChain([this, 'access', _89 => _89.messages, 'access', _90 => _90.at, 'call', _91 => _91(-1), 'optionalAccess', _92 => _92.id]), () => ( null)))) {
1763
1789
  if (!this._store.onEdit)
1764
1790
  throw new Error("Runtime does not support editing messages.");
1765
1791
  await this._store.onEdit(message);
@@ -1782,7 +1808,7 @@ var ExternalStoreThreadRuntime = (_class8 = class {
1782
1808
  }
1783
1809
  let messages = this.repository.getMessages();
1784
1810
  const previousMessage = messages[messages.length - 1];
1785
- if (_optionalChain([previousMessage, 'optionalAccess', _85 => _85.role]) === "user" && previousMessage.id === _optionalChain([messages, 'access', _86 => _86.at, 'call', _87 => _87(-1), 'optionalAccess', _88 => _88.id])) {
1811
+ if (_optionalChain([previousMessage, 'optionalAccess', _93 => _93.role]) === "user" && previousMessage.id === _optionalChain([messages, 'access', _94 => _94.at, 'call', _95 => _95(-1), 'optionalAccess', _96 => _96.id])) {
1786
1812
  this.repository.deleteMessage(previousMessage.id);
1787
1813
  if (!this.composer.text.trim()) {
1788
1814
  this.composer.setText(getThreadMessageText(previousMessage));
@@ -1806,22 +1832,30 @@ var ExternalStoreThreadRuntime = (_class8 = class {
1806
1832
  const { message } = this.repository.getMessage(messageId);
1807
1833
  return this._store.onSpeak(message);
1808
1834
  }
1835
+ submitFeedback({ messageId, type }) {
1836
+ const adapter = _optionalChain([this, 'access', _97 => _97._store, 'access', _98 => _98.adapters, 'optionalAccess', _99 => _99.feedback]);
1837
+ if (!adapter) throw new Error("Feedback adapter not configured");
1838
+ const { message } = this.repository.getMessage(messageId);
1839
+ adapter.submit({ message, type });
1840
+ }
1809
1841
  subscribe(callback) {
1810
1842
  this._subscriptions.add(callback);
1811
1843
  return () => this._subscriptions.delete(callback);
1812
1844
  }
1813
1845
  __init27() {this.updateMessages = (messages) => {
1814
- _optionalChain([this, 'access', _89 => _89._store, 'access', _90 => _90.setMessages, 'optionalCall', _91 => _91(
1846
+ _optionalChain([this, 'access', _100 => _100._store, 'access', _101 => _101.setMessages, 'optionalCall', _102 => _102(
1815
1847
  messages.flatMap(getExternalStoreMessage).filter((m) => m != null)
1816
1848
  )]);
1817
1849
  }}
1818
1850
  }, _class8);
1819
1851
 
1820
1852
  // src/runtimes/external-store/ExternalStoreRuntime.tsx
1821
- var ExternalStoreRuntime = (_class9 = class extends BaseAssistantRuntime {
1822
- __init28() {this._proxyConfigProvider = new ProxyConfigProvider()}
1853
+ var ExternalStoreRuntime = class extends BaseAssistantRuntime {
1854
+
1823
1855
  constructor(store) {
1824
- super(new ExternalStoreThreadRuntime(store));_class9.prototype.__init28.call(this);;
1856
+ const provider = new ProxyConfigProvider();
1857
+ super(new ExternalStoreThreadRuntime(provider, store));
1858
+ this._proxyConfigProvider = provider;
1825
1859
  }
1826
1860
  get store() {
1827
1861
  return this.thread.store;
@@ -1838,7 +1872,7 @@ var ExternalStoreRuntime = (_class9 = class extends BaseAssistantRuntime {
1838
1872
  async switchToNewThread() {
1839
1873
  if (!this.store.onSwitchToNewThread)
1840
1874
  throw new Error("Runtime does not support switching to new threads.");
1841
- this.thread = new ExternalStoreThreadRuntime({
1875
+ this.thread = new ExternalStoreThreadRuntime(this._proxyConfigProvider, {
1842
1876
  ...this.store,
1843
1877
  messages: []
1844
1878
  });
@@ -1848,7 +1882,7 @@ var ExternalStoreRuntime = (_class9 = class extends BaseAssistantRuntime {
1848
1882
  if (threadId !== null) {
1849
1883
  if (!this.store.onSwitchToThread)
1850
1884
  throw new Error("Runtime does not support switching threads.");
1851
- this.thread = new ExternalStoreThreadRuntime({
1885
+ this.thread = new ExternalStoreThreadRuntime(this._proxyConfigProvider, {
1852
1886
  ...this.store,
1853
1887
  messages: []
1854
1888
  // ignore messages until rerender
@@ -1858,7 +1892,7 @@ var ExternalStoreRuntime = (_class9 = class extends BaseAssistantRuntime {
1858
1892
  this.switchToNewThread();
1859
1893
  }
1860
1894
  }
1861
- }, _class9);
1895
+ };
1862
1896
 
1863
1897
  // src/runtimes/external-store/useExternalStoreRuntime.tsx
1864
1898
 
@@ -2026,18 +2060,18 @@ var DangerousInBrowserAdapter = class {
2026
2060
  this.options = options;
2027
2061
  }
2028
2062
  async *run({ messages, abortSignal, config }) {
2029
- const res = await _chunkCWAZOKEWjs.getEdgeRuntimeStream.call(void 0, {
2063
+ const res = await _chunkJ2V7Y7JXjs.getEdgeRuntimeStream.call(void 0, {
2030
2064
  options: this.options,
2031
2065
  abortSignal,
2032
2066
  requestData: {
2033
2067
  system: config.system,
2034
- messages: _chunkCWAZOKEWjs.toCoreMessages.call(void 0, messages),
2035
- tools: config.tools ? _chunkCWAZOKEWjs.toLanguageModelTools.call(void 0, config.tools) : [],
2068
+ messages: _chunkJ2V7Y7JXjs.toCoreMessages.call(void 0, messages),
2069
+ tools: config.tools ? _chunkJ2V7Y7JXjs.toLanguageModelTools.call(void 0, config.tools) : [],
2036
2070
  ...config.callSettings,
2037
2071
  ...config.config
2038
2072
  }
2039
2073
  });
2040
- const stream = res.pipeThrough(_chunkCWAZOKEWjs.toolResultStream.call(void 0, config.tools, abortSignal)).pipeThrough(_chunkCWAZOKEWjs.runResultStream.call(void 0, ));
2074
+ const stream = res.pipeThrough(_chunkJ2V7Y7JXjs.toolResultStream.call(void 0, config.tools, abortSignal)).pipeThrough(_chunkJ2V7Y7JXjs.runResultStream.call(void 0, ));
2041
2075
  for await (const update of asAsyncIterable(stream)) {
2042
2076
  yield update;
2043
2077
  }
@@ -2095,8 +2129,8 @@ var WebSpeechSynthesisAdapter = class {
2095
2129
  };
2096
2130
 
2097
2131
  // src/runtimes/attachment/SimpleImageAttachmentAdapter.ts
2098
- var SimpleImageAttachmentAdapter = (_class10 = class {constructor() { _class10.prototype.__init29.call(this); }
2099
- __init29() {this.accept = "image/*"}
2132
+ var SimpleImageAttachmentAdapter = (_class9 = class {constructor() { _class9.prototype.__init28.call(this); }
2133
+ __init28() {this.accept = "image/*"}
2100
2134
  async add(state) {
2101
2135
  return {
2102
2136
  id: state.file.name,
@@ -2118,7 +2152,7 @@ var SimpleImageAttachmentAdapter = (_class10 = class {constructor() { _class10.p
2118
2152
  }
2119
2153
  async remove() {
2120
2154
  }
2121
- }, _class10);
2155
+ }, _class9);
2122
2156
  var getFileDataURL = (file) => new Promise((resolve, reject) => {
2123
2157
  const reader = new FileReader();
2124
2158
  reader.onload = () => resolve(reader.result);
@@ -2127,8 +2161,8 @@ var getFileDataURL = (file) => new Promise((resolve, reject) => {
2127
2161
  });
2128
2162
 
2129
2163
  // src/runtimes/attachment/SimpleTextAttachmentAdapter.ts
2130
- var SimpleTextAttachmentAdapter = (_class11 = class {constructor() { _class11.prototype.__init30.call(this); }
2131
- __init30() {this.accept = "text/plain,text/html,text/markdown,text/csv,text/xml,text/json,text/css"}
2164
+ var SimpleTextAttachmentAdapter = (_class10 = class {constructor() { _class10.prototype.__init29.call(this); }
2165
+ __init29() {this.accept = "text/plain,text/html,text/markdown,text/csv,text/xml,text/json,text/css"}
2132
2166
  async add(state) {
2133
2167
  return {
2134
2168
  id: state.file.name,
@@ -2152,7 +2186,7 @@ ${await getFileText(attachment.file)}
2152
2186
  }
2153
2187
  async remove() {
2154
2188
  }
2155
- }, _class11);
2189
+ }, _class10);
2156
2190
  var getFileText = (file) => new Promise((resolve, reject) => {
2157
2191
  const reader = new FileReader();
2158
2192
  reader.onload = () => resolve(reader.result);
@@ -2425,14 +2459,14 @@ var { useComposer, useComposerStore } = createContextStoreHook(
2425
2459
  var toAppendMessage = (useThreadMessages2, message) => {
2426
2460
  if (typeof message === "string") {
2427
2461
  return {
2428
- parentId: _nullishCoalesce(_optionalChain([useThreadMessages2, 'access', _92 => _92.getState, 'call', _93 => _93(), 'access', _94 => _94.at, 'call', _95 => _95(-1), 'optionalAccess', _96 => _96.id]), () => ( null)),
2462
+ parentId: _nullishCoalesce(_optionalChain([useThreadMessages2, 'access', _103 => _103.getState, 'call', _104 => _104(), 'access', _105 => _105.at, 'call', _106 => _106(-1), 'optionalAccess', _107 => _107.id]), () => ( null)),
2429
2463
  role: "user",
2430
2464
  content: [{ type: "text", text: message }],
2431
2465
  attachments: []
2432
2466
  };
2433
2467
  }
2434
2468
  return {
2435
- parentId: _nullishCoalesce(_nullishCoalesce(message.parentId, () => ( _optionalChain([useThreadMessages2, 'access', _97 => _97.getState, 'call', _98 => _98(), 'access', _99 => _99.at, 'call', _100 => _100(-1), 'optionalAccess', _101 => _101.id]))), () => ( null)),
2469
+ parentId: _nullishCoalesce(_nullishCoalesce(message.parentId, () => ( _optionalChain([useThreadMessages2, 'access', _108 => _108.getState, 'call', _109 => _109(), 'access', _110 => _110.at, 'call', _111 => _111(-1), 'optionalAccess', _112 => _112.id]))), () => ( null)),
2436
2470
  role: _nullishCoalesce(message.role, () => ( "user")),
2437
2471
  content: message.content,
2438
2472
  attachments: _nullishCoalesce(message.attachments, () => ( []))
@@ -2490,7 +2524,7 @@ var useAssistantTool = (tool) => {
2490
2524
  const unsub2 = render ? toolUIsStore.getState().setToolUI(toolName, render) : void 0;
2491
2525
  return () => {
2492
2526
  unsub1();
2493
- _optionalChain([unsub2, 'optionalCall', _102 => _102()]);
2527
+ _optionalChain([unsub2, 'optionalCall', _113 => _113()]);
2494
2528
  };
2495
2529
  }, [assistantActionsStore, toolUIsStore, tool]);
2496
2530
  };
@@ -2668,6 +2702,38 @@ var useActionBarStopSpeaking = () => {
2668
2702
  return callback;
2669
2703
  };
2670
2704
 
2705
+ // src/primitive-hooks/actionBar/useActionBarFeedbackPositive.tsx
2706
+
2707
+ var useActionBarFeedbackPositive = () => {
2708
+ const threadActions = useThreadActions();
2709
+ const messageStore = useMessageStore();
2710
+ const messageUtilsStore = useMessageUtilsStore();
2711
+ const callback = _react.useCallback.call(void 0, () => {
2712
+ threadActions.submitFeedback({
2713
+ messageId: messageStore.getState().message.id,
2714
+ type: "positive"
2715
+ });
2716
+ messageUtilsStore.getState().setSubmittedFeedback("positive");
2717
+ }, [messageStore, messageUtilsStore, threadActions]);
2718
+ return callback;
2719
+ };
2720
+
2721
+ // src/primitive-hooks/actionBar/useActionBarFeedbackNegative.tsx
2722
+
2723
+ var useActionBarFeedbackNegative = () => {
2724
+ const threadActions = useThreadActions();
2725
+ const messageStore = useMessageStore();
2726
+ const messageUtilsStore = useMessageUtilsStore();
2727
+ const callback = _react.useCallback.call(void 0, () => {
2728
+ threadActions.submitFeedback({
2729
+ messageId: messageStore.getState().message.id,
2730
+ type: "negative"
2731
+ });
2732
+ messageUtilsStore.getState().setSubmittedFeedback("negative");
2733
+ }, [messageStore, messageUtilsStore, threadActions]);
2734
+ return callback;
2735
+ };
2736
+
2671
2737
  // src/primitive-hooks/branchPicker/useBranchPickerCount.tsx
2672
2738
  var useBranchPickerCount = () => {
2673
2739
  const branchCount = useMessage((s) => s.branches.length);
@@ -2775,7 +2841,7 @@ var useComposerAddAttachment = () => {
2775
2841
  input.accept = attachmentAccept;
2776
2842
  }
2777
2843
  input.onchange = (e) => {
2778
- const file = _optionalChain([e, 'access', _103 => _103.target, 'access', _104 => _104.files, 'optionalAccess', _105 => _105[0]]);
2844
+ const file = _optionalChain([e, 'access', _114 => _114.target, 'access', _115 => _115.files, 'optionalAccess', _116 => _116[0]]);
2779
2845
  if (!file) return;
2780
2846
  addAttachment(file);
2781
2847
  };
@@ -2827,7 +2893,7 @@ var useMessageIf = (props) => {
2827
2893
  const messageUtilsStore = useMessageUtilsStore();
2828
2894
  return useCombinedStore(
2829
2895
  [messageStore, messageUtilsStore],
2830
- ({ message, branches, isLast }, { isCopied, isHovering, isSpeaking }) => {
2896
+ ({ message, branches, isLast }, { isCopied, isHovering, isSpeaking, submittedFeedback }) => {
2831
2897
  if (props.hasBranches === true && branches.length < 2) return false;
2832
2898
  if (props.user && message.role !== "user") return false;
2833
2899
  if (props.assistant && message.role !== "assistant") return false;
@@ -2841,6 +2907,8 @@ var useMessageIf = (props) => {
2841
2907
  return false;
2842
2908
  if (props.hasAttachments === false && message.role === "user" && !!message.attachments.length)
2843
2909
  return false;
2910
+ if (props.submittedFeedback !== void 0 && submittedFeedback !== props.submittedFeedback)
2911
+ return false;
2844
2912
  return true;
2845
2913
  }
2846
2914
  );
@@ -2912,6 +2980,8 @@ var actionBar_exports = {};
2912
2980
  _chunkDCHYNTHIjs.__export.call(void 0, actionBar_exports, {
2913
2981
  Copy: () => ActionBarPrimitiveCopy,
2914
2982
  Edit: () => ActionBarPrimitiveEdit,
2983
+ FeedbackNegative: () => ActionBarPrimitiveFeedbackNegative,
2984
+ FeedbackPositive: () => ActionBarPrimitiveFeedbackPositive,
2915
2985
  Reload: () => ActionBarPrimitiveReload,
2916
2986
  Root: () => ActionBarPrimitiveRoot,
2917
2987
  Speak: () => ActionBarPrimitiveSpeak,
@@ -2965,10 +3035,34 @@ var ActionBarPrimitiveRoot = _react.forwardRef.call(void 0, ({ hideWhenRunning,
2965
3035
  });
2966
3036
  ActionBarPrimitiveRoot.displayName = "ActionBarPrimitive.Root";
2967
3037
 
3038
+ // src/primitives/actionBar/ActionBarCopy.tsx
3039
+
3040
+ var _primitive = require('@radix-ui/primitive');
3041
+
3042
+
3043
+ var ActionBarPrimitiveCopy = _react.forwardRef.call(void 0, ({ copiedDuration, onClick, disabled, ...props }, forwardedRef) => {
3044
+ const isCopied = useMessageUtils((u) => u.isCopied);
3045
+ const callback = useActionBarCopy({ copiedDuration });
3046
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3047
+ _reactprimitive.Primitive.button,
3048
+ {
3049
+ type: "button",
3050
+ ...isCopied ? { "data-copied": "true" } : {},
3051
+ ...props,
3052
+ ref: forwardedRef,
3053
+ disabled: disabled || !callback,
3054
+ onClick: _primitive.composeEventHandlers.call(void 0, onClick, () => {
3055
+ _optionalChain([callback, 'optionalCall', _117 => _117()]);
3056
+ })
3057
+ }
3058
+ );
3059
+ });
3060
+ ActionBarPrimitiveCopy.displayName = "ActionBarPrimitive.Copy";
3061
+
2968
3062
  // src/utils/createActionButton.tsx
2969
3063
 
2970
3064
 
2971
- var _primitive = require('@radix-ui/primitive');
3065
+
2972
3066
 
2973
3067
  var createActionButton = (displayName, useActionButton, forwardProps = []) => {
2974
3068
  const ActionButton = _react.forwardRef.call(void 0, (props, forwardedRef) => {
@@ -2990,7 +3084,7 @@ var createActionButton = (displayName, useActionButton, forwardProps = []) => {
2990
3084
  ref: forwardedRef,
2991
3085
  disabled: primitiveProps.disabled || !callback,
2992
3086
  onClick: _primitive.composeEventHandlers.call(void 0, primitiveProps.onClick, () => {
2993
- _optionalChain([callback, 'optionalCall', _106 => _106()]);
3087
+ _optionalChain([callback, 'optionalCall', _118 => _118()]);
2994
3088
  })
2995
3089
  }
2996
3090
  );
@@ -2999,13 +3093,6 @@ var createActionButton = (displayName, useActionButton, forwardProps = []) => {
2999
3093
  return ActionButton;
3000
3094
  };
3001
3095
 
3002
- // src/primitives/actionBar/ActionBarCopy.tsx
3003
- var ActionBarPrimitiveCopy = createActionButton(
3004
- "ActionBarPrimitive.Copy",
3005
- useActionBarCopy,
3006
- ["copiedDuration"]
3007
- );
3008
-
3009
3096
  // src/primitives/actionBar/ActionBarReload.tsx
3010
3097
  var ActionBarPrimitiveReload = createActionButton(
3011
3098
  "ActionBarPrimitive.Reload",
@@ -3046,13 +3133,65 @@ var ActionBarPrimitiveStopSpeaking = _react.forwardRef.call(void 0, (props, ref)
3046
3133
  ...props,
3047
3134
  ref,
3048
3135
  onClick: _primitive.composeEventHandlers.call(void 0, props.onClick, () => {
3049
- _optionalChain([callback, 'optionalCall', _107 => _107()]);
3136
+ _optionalChain([callback, 'optionalCall', _119 => _119()]);
3050
3137
  })
3051
3138
  }
3052
3139
  );
3053
3140
  });
3054
3141
  ActionBarPrimitiveStopSpeaking.displayName = "ActionBarPrimitive.StopSpeaking";
3055
3142
 
3143
+ // src/primitives/actionBar/ActionBarFeedbackPositive.tsx
3144
+
3145
+
3146
+
3147
+
3148
+ var ActionBarPrimitiveFeedbackPositive = _react.forwardRef.call(void 0, ({ onClick, disabled, ...props }, forwardedRef) => {
3149
+ const isSubmitted = useMessageUtils(
3150
+ (u) => u.submittedFeedback === "positive"
3151
+ );
3152
+ const callback = useActionBarFeedbackPositive();
3153
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3154
+ _reactprimitive.Primitive.button,
3155
+ {
3156
+ type: "button",
3157
+ ...isSubmitted ? { "data-submitted": "true" } : {},
3158
+ ...props,
3159
+ ref: forwardedRef,
3160
+ disabled: disabled || !callback,
3161
+ onClick: _primitive.composeEventHandlers.call(void 0, onClick, () => {
3162
+ _optionalChain([callback, 'optionalCall', _120 => _120()]);
3163
+ })
3164
+ }
3165
+ );
3166
+ });
3167
+ ActionBarPrimitiveFeedbackPositive.displayName = "ActionBarPrimitive.FeedbackPositive";
3168
+
3169
+ // src/primitives/actionBar/ActionBarFeedbackNegative.tsx
3170
+
3171
+
3172
+
3173
+
3174
+ var ActionBarPrimitiveFeedbackNegative = _react.forwardRef.call(void 0, ({ onClick, disabled, ...props }, forwardedRef) => {
3175
+ const isSubmitted = useMessageUtils(
3176
+ (u) => u.submittedFeedback === "negative"
3177
+ );
3178
+ const callback = useActionBarFeedbackNegative();
3179
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
3180
+ _reactprimitive.Primitive.button,
3181
+ {
3182
+ type: "button",
3183
+ ...isSubmitted ? { "data-submitted": "true" } : {},
3184
+ ...props,
3185
+ ref: forwardedRef,
3186
+ disabled: disabled || !callback,
3187
+ onClick: _primitive.composeEventHandlers.call(void 0, onClick, () => {
3188
+ _optionalChain([callback, 'optionalCall', _121 => _121()]);
3189
+ })
3190
+ }
3191
+ );
3192
+ });
3193
+ ActionBarPrimitiveFeedbackNegative.displayName = "ActionBarPrimitive.FeedbackNegative";
3194
+
3056
3195
  // src/primitives/assistantModal/index.ts
3057
3196
  var assistantModal_exports = {};
3058
3197
  _chunkDCHYNTHIjs.__export.call(void 0, assistantModal_exports, {
@@ -3281,9 +3420,9 @@ var useIsHoveringRef = () => {
3281
3420
  );
3282
3421
  return useManagedRef(callbackRef);
3283
3422
  };
3284
- var MessagePrimitiveRoot = _react.forwardRef.call(void 0, (props, forwardRef30) => {
3423
+ var MessagePrimitiveRoot = _react.forwardRef.call(void 0, (props, forwardRef33) => {
3285
3424
  const isHoveringRef = useIsHoveringRef();
3286
- const ref = _reactcomposerefs.useComposedRefs.call(void 0, forwardRef30, isHoveringRef);
3425
+ const ref = _reactcomposerefs.useComposedRefs.call(void 0, forwardRef33, isHoveringRef);
3287
3426
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _reactprimitive.Primitive.div, { ...props, ref });
3288
3427
  });
3289
3428
  MessagePrimitiveRoot.displayName = "MessagePrimitive.Root";
@@ -3336,7 +3475,7 @@ var getContentPartState = ({ message }, useContentPart2, partIndex) => {
3336
3475
  part = EMPTY_CONTENT;
3337
3476
  }
3338
3477
  const status = toContentPartStatus(message, partIndex, part);
3339
- const currentState = _optionalChain([useContentPart2, 'optionalAccess', _108 => _108.getState, 'call', _109 => _109()]);
3478
+ const currentState = _optionalChain([useContentPart2, 'optionalAccess', _122 => _122.getState, 'call', _123 => _123()]);
3340
3479
  if (currentState && currentState.part === part && currentState.status === status)
3341
3480
  return null;
3342
3481
  return Object.freeze({ part, status });
@@ -3492,7 +3631,7 @@ var MessageContentPartImpl = ({
3492
3631
  };
3493
3632
  var MessageContentPart = _react.memo.call(void 0,
3494
3633
  MessageContentPartImpl,
3495
- (prev, next) => prev.partIndex === next.partIndex && _optionalChain([prev, 'access', _110 => _110.components, 'optionalAccess', _111 => _111.Text]) === _optionalChain([next, 'access', _112 => _112.components, 'optionalAccess', _113 => _113.Text]) && _optionalChain([prev, 'access', _114 => _114.components, 'optionalAccess', _115 => _115.Image]) === _optionalChain([next, 'access', _116 => _116.components, 'optionalAccess', _117 => _117.Image]) && _optionalChain([prev, 'access', _118 => _118.components, 'optionalAccess', _119 => _119.UI]) === _optionalChain([next, 'access', _120 => _120.components, 'optionalAccess', _121 => _121.UI]) && _optionalChain([prev, 'access', _122 => _122.components, 'optionalAccess', _123 => _123.tools]) === _optionalChain([next, 'access', _124 => _124.components, 'optionalAccess', _125 => _125.tools])
3634
+ (prev, next) => prev.partIndex === next.partIndex && _optionalChain([prev, 'access', _124 => _124.components, 'optionalAccess', _125 => _125.Text]) === _optionalChain([next, 'access', _126 => _126.components, 'optionalAccess', _127 => _127.Text]) && _optionalChain([prev, 'access', _128 => _128.components, 'optionalAccess', _129 => _129.Image]) === _optionalChain([next, 'access', _130 => _130.components, 'optionalAccess', _131 => _131.Image]) && _optionalChain([prev, 'access', _132 => _132.components, 'optionalAccess', _133 => _133.UI]) === _optionalChain([next, 'access', _134 => _134.components, 'optionalAccess', _135 => _135.UI]) && _optionalChain([prev, 'access', _136 => _136.components, 'optionalAccess', _137 => _137.tools]) === _optionalChain([next, 'access', _138 => _138.components, 'optionalAccess', _139 => _139.tools])
3496
3635
  );
3497
3636
  var MessagePrimitiveContent = ({
3498
3637
  components
@@ -3518,7 +3657,7 @@ var AttachmentContext = _react.createContext.call(void 0,
3518
3657
  );
3519
3658
  function useAttachmentContext(options) {
3520
3659
  const context = _react.useContext.call(void 0, AttachmentContext);
3521
- if (!_optionalChain([options, 'optionalAccess', _126 => _126.optional]) && !context)
3660
+ if (!_optionalChain([options, 'optionalAccess', _140 => _140.optional]) && !context)
3522
3661
  throw new Error(
3523
3662
  "This component must be used within a ComposerPrimitive.Attachments or MessagePrimitive.Attachments component."
3524
3663
  );
@@ -3564,7 +3703,7 @@ var getAttachment = ({ message }, useAttachment2, partIndex) => {
3564
3703
  const attachments = message.attachments;
3565
3704
  const attachment = attachments[partIndex];
3566
3705
  if (!attachment) return null;
3567
- const currentState = _optionalChain([useAttachment2, 'optionalAccess', _127 => _127.getState, 'call', _128 => _128()]);
3706
+ const currentState = _optionalChain([useAttachment2, 'optionalAccess', _141 => _141.getState, 'call', _142 => _142()]);
3568
3707
  if (currentState && currentState.attachment === attachment) return null;
3569
3708
  return Object.freeze({ attachment });
3570
3709
  };
@@ -3607,11 +3746,11 @@ var getComponent = (components, attachment) => {
3607
3746
  const type = attachment.type;
3608
3747
  switch (type) {
3609
3748
  case "image":
3610
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _129 => _129.Image]), () => ( _optionalChain([components, 'optionalAccess', _130 => _130.Attachment])));
3749
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _143 => _143.Image]), () => ( _optionalChain([components, 'optionalAccess', _144 => _144.Attachment])));
3611
3750
  case "document":
3612
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _131 => _131.Document]), () => ( _optionalChain([components, 'optionalAccess', _132 => _132.Attachment])));
3751
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _145 => _145.Document]), () => ( _optionalChain([components, 'optionalAccess', _146 => _146.Attachment])));
3613
3752
  case "file":
3614
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _133 => _133.File]), () => ( _optionalChain([components, 'optionalAccess', _134 => _134.Attachment])));
3753
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _147 => _147.File]), () => ( _optionalChain([components, 'optionalAccess', _148 => _148.Attachment])));
3615
3754
  default:
3616
3755
  const _exhaustiveCheck = type;
3617
3756
  throw new Error(`Unknown attachment type: ${_exhaustiveCheck}`);
@@ -3629,7 +3768,7 @@ var MessageAttachmentImpl = ({ components, attachmentIndex }) => {
3629
3768
  };
3630
3769
  var MessageAttachment = _react.memo.call(void 0,
3631
3770
  MessageAttachmentImpl,
3632
- (prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _135 => _135.components, 'optionalAccess', _136 => _136.Image]) === _optionalChain([next, 'access', _137 => _137.components, 'optionalAccess', _138 => _138.Image]) && _optionalChain([prev, 'access', _139 => _139.components, 'optionalAccess', _140 => _140.Document]) === _optionalChain([next, 'access', _141 => _141.components, 'optionalAccess', _142 => _142.Document]) && _optionalChain([prev, 'access', _143 => _143.components, 'optionalAccess', _144 => _144.File]) === _optionalChain([next, 'access', _145 => _145.components, 'optionalAccess', _146 => _146.File]) && _optionalChain([prev, 'access', _147 => _147.components, 'optionalAccess', _148 => _148.Attachment]) === _optionalChain([next, 'access', _149 => _149.components, 'optionalAccess', _150 => _150.Attachment])
3771
+ (prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _149 => _149.components, 'optionalAccess', _150 => _150.Image]) === _optionalChain([next, 'access', _151 => _151.components, 'optionalAccess', _152 => _152.Image]) && _optionalChain([prev, 'access', _153 => _153.components, 'optionalAccess', _154 => _154.Document]) === _optionalChain([next, 'access', _155 => _155.components, 'optionalAccess', _156 => _156.Document]) && _optionalChain([prev, 'access', _157 => _157.components, 'optionalAccess', _158 => _158.File]) === _optionalChain([next, 'access', _159 => _159.components, 'optionalAccess', _160 => _160.File]) && _optionalChain([prev, 'access', _161 => _161.components, 'optionalAccess', _162 => _162.Attachment]) === _optionalChain([next, 'access', _163 => _163.components, 'optionalAccess', _164 => _164.Attachment])
3633
3772
  );
3634
3773
  var MessagePrimitiveAttachments = ({ components }) => {
3635
3774
  const attachmentsCount = useMessage(({ message }) => {
@@ -3737,7 +3876,7 @@ var ComposerPrimitiveInput = _react.forwardRef.call(void 0,
3737
3876
  const { isRunning } = threadStore.getState();
3738
3877
  if (!isRunning) {
3739
3878
  e.preventDefault();
3740
- _optionalChain([textareaRef, 'access', _151 => _151.current, 'optionalAccess', _152 => _152.closest, 'call', _153 => _153("form"), 'optionalAccess', _154 => _154.requestSubmit, 'call', _155 => _155()]);
3879
+ _optionalChain([textareaRef, 'access', _165 => _165.current, 'optionalAccess', _166 => _166.closest, 'call', _167 => _167("form"), 'optionalAccess', _168 => _168.requestSubmit, 'call', _169 => _169()]);
3741
3880
  }
3742
3881
  }
3743
3882
  };
@@ -3805,7 +3944,7 @@ var ComposerPrimitiveAddAttachment = createActionButton(
3805
3944
  var getAttachment2 = ({ attachments }, useAttachment2, partIndex) => {
3806
3945
  const attachment = attachments[partIndex];
3807
3946
  if (!attachment) return null;
3808
- const currentState = _optionalChain([useAttachment2, 'optionalAccess', _156 => _156.getState, 'call', _157 => _157()]);
3947
+ const currentState = _optionalChain([useAttachment2, 'optionalAccess', _170 => _170.getState, 'call', _171 => _171()]);
3809
3948
  if (currentState && currentState.attachment === attachment) return null;
3810
3949
  return Object.freeze({ attachment });
3811
3950
  };
@@ -3845,11 +3984,11 @@ var getComponent2 = (components, attachment) => {
3845
3984
  const type = attachment.type;
3846
3985
  switch (type) {
3847
3986
  case "image":
3848
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _158 => _158.Image]), () => ( _optionalChain([components, 'optionalAccess', _159 => _159.Attachment])));
3987
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _172 => _172.Image]), () => ( _optionalChain([components, 'optionalAccess', _173 => _173.Attachment])));
3849
3988
  case "document":
3850
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _160 => _160.Document]), () => ( _optionalChain([components, 'optionalAccess', _161 => _161.Attachment])));
3989
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _174 => _174.Document]), () => ( _optionalChain([components, 'optionalAccess', _175 => _175.Attachment])));
3851
3990
  case "file":
3852
- return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _162 => _162.File]), () => ( _optionalChain([components, 'optionalAccess', _163 => _163.Attachment])));
3991
+ return _nullishCoalesce(_optionalChain([components, 'optionalAccess', _176 => _176.File]), () => ( _optionalChain([components, 'optionalAccess', _177 => _177.Attachment])));
3853
3992
  default:
3854
3993
  const _exhaustiveCheck = type;
3855
3994
  throw new Error(`Unknown attachment type: ${_exhaustiveCheck}`);
@@ -3867,7 +4006,7 @@ var ComposerAttachmentImpl = ({ components, attachmentIndex }) => {
3867
4006
  };
3868
4007
  var ComposerAttachment = _react.memo.call(void 0,
3869
4008
  ComposerAttachmentImpl,
3870
- (prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _164 => _164.components, 'optionalAccess', _165 => _165.Image]) === _optionalChain([next, 'access', _166 => _166.components, 'optionalAccess', _167 => _167.Image]) && _optionalChain([prev, 'access', _168 => _168.components, 'optionalAccess', _169 => _169.Document]) === _optionalChain([next, 'access', _170 => _170.components, 'optionalAccess', _171 => _171.Document]) && _optionalChain([prev, 'access', _172 => _172.components, 'optionalAccess', _173 => _173.File]) === _optionalChain([next, 'access', _174 => _174.components, 'optionalAccess', _175 => _175.File]) && _optionalChain([prev, 'access', _176 => _176.components, 'optionalAccess', _177 => _177.Attachment]) === _optionalChain([next, 'access', _178 => _178.components, 'optionalAccess', _179 => _179.Attachment])
4009
+ (prev, next) => prev.attachmentIndex === next.attachmentIndex && _optionalChain([prev, 'access', _178 => _178.components, 'optionalAccess', _179 => _179.Image]) === _optionalChain([next, 'access', _180 => _180.components, 'optionalAccess', _181 => _181.Image]) && _optionalChain([prev, 'access', _182 => _182.components, 'optionalAccess', _183 => _183.Document]) === _optionalChain([next, 'access', _184 => _184.components, 'optionalAccess', _185 => _185.Document]) && _optionalChain([prev, 'access', _186 => _186.components, 'optionalAccess', _187 => _187.File]) === _optionalChain([next, 'access', _188 => _188.components, 'optionalAccess', _189 => _189.File]) && _optionalChain([prev, 'access', _190 => _190.components, 'optionalAccess', _191 => _191.Attachment]) === _optionalChain([next, 'access', _192 => _192.components, 'optionalAccess', _193 => _193.Attachment])
3871
4010
  );
3872
4011
  var ComposerPrimitiveAttachments = ({ components }) => {
3873
4012
  const attachmentsCount = useThreadComposer((s) => s.attachments.length);
@@ -4126,7 +4265,7 @@ var makeMessageUtilsStore = () => _zustand.create.call(void 0, (set) => {
4126
4265
  },
4127
4266
  isSpeaking: false,
4128
4267
  stopSpeaking: () => {
4129
- _optionalChain([utterance, 'optionalAccess', _180 => _180.cancel, 'call', _181 => _181()]);
4268
+ _optionalChain([utterance, 'optionalAccess', _194 => _194.cancel, 'call', _195 => _195()]);
4130
4269
  },
4131
4270
  addUtterance: (utt) => {
4132
4271
  utterance = utt;
@@ -4134,6 +4273,10 @@ var makeMessageUtilsStore = () => _zustand.create.call(void 0, (set) => {
4134
4273
  utt.onEnd(() => {
4135
4274
  set({ isSpeaking: false });
4136
4275
  });
4276
+ },
4277
+ submittedFeedback: null,
4278
+ setSubmittedFeedback: (feedback) => {
4279
+ set({ submittedFeedback: feedback });
4137
4280
  }
4138
4281
  };
4139
4282
  });
@@ -4141,15 +4284,15 @@ var makeMessageUtilsStore = () => _zustand.create.call(void 0, (set) => {
4141
4284
  // src/context/providers/MessageProvider.tsx
4142
4285
 
4143
4286
  var getIsLast = (messages, message) => {
4144
- return _optionalChain([messages, 'access', _182 => _182[messages.length - 1], 'optionalAccess', _183 => _183.id]) === message.id;
4287
+ return _optionalChain([messages, 'access', _196 => _196[messages.length - 1], 'optionalAccess', _197 => _197.id]) === message.id;
4145
4288
  };
4146
4289
  var getMessageState = (messages, getBranches, useMessage2, messageIndex) => {
4147
- const parentId = _nullishCoalesce(_optionalChain([messages, 'access', _184 => _184[messageIndex - 1], 'optionalAccess', _185 => _185.id]), () => ( null));
4290
+ const parentId = _nullishCoalesce(_optionalChain([messages, 'access', _198 => _198[messageIndex - 1], 'optionalAccess', _199 => _199.id]), () => ( null));
4148
4291
  const message = messages[messageIndex];
4149
4292
  if (!message) return null;
4150
4293
  const isLast = getIsLast(messages, message);
4151
4294
  const branches = getBranches(message.id);
4152
- const currentState = _optionalChain([useMessage2, 'optionalAccess', _186 => _186.getState, 'call', _187 => _187()]);
4295
+ const currentState = _optionalChain([useMessage2, 'optionalAccess', _200 => _200.getState, 'call', _201 => _201()]);
4153
4296
  if (currentState && currentState.message === message && currentState.parentId === parentId && currentState.branches === branches && currentState.isLast === isLast)
4154
4297
  return null;
4155
4298
  return Object.freeze({
@@ -4310,7 +4453,7 @@ var ThreadConfigProvider = ({
4310
4453
  }) => {
4311
4454
  const hasAssistant = !!useAssistantRuntimeStore({ optional: true });
4312
4455
  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 });
4313
- if (!_optionalChain([config, 'optionalAccess', _188 => _188.runtime])) return configProvider;
4456
+ if (!_optionalChain([config, 'optionalAccess', _202 => _202.runtime])) return configProvider;
4314
4457
  if (hasAssistant) {
4315
4458
  throw new Error(
4316
4459
  "You provided a runtime to <Thread> while simulataneously using <AssistantRuntimeProvider>. This is not allowed."
@@ -4328,6 +4471,8 @@ ThreadConfigProvider.displayName = "ThreadConfigProvider";
4328
4471
 
4329
4472
 
4330
4473
 
4474
+
4475
+
4331
4476
  var _lucidereact = require('lucide-react');
4332
4477
 
4333
4478
  var useAllowCopy = (ensureCapability = false) => {
@@ -4345,11 +4490,24 @@ var useAllowReload = (ensureCapability = false) => {
4345
4490
  const reloadSupported = useThread((t) => t.capabilities.reload);
4346
4491
  return allowReload && (!ensureCapability || reloadSupported);
4347
4492
  };
4493
+ var useAllowFeedbackPositive = (ensureCapability = false) => {
4494
+ const { assistantMessage: { allowFeedbackPositive = true } = {} } = useThreadConfig();
4495
+ const feedbackSupported = useThread((t) => t.capabilities.feedback);
4496
+ return allowFeedbackPositive && (!ensureCapability || feedbackSupported);
4497
+ };
4498
+ var useAllowFeedbackNegative = (ensureCapability = false) => {
4499
+ const { assistantMessage: { allowFeedbackNegative = true } = {} } = useThreadConfig();
4500
+ const feedbackSupported = useThread((t) => t.capabilities.feedback);
4501
+ return allowFeedbackNegative && (!ensureCapability || feedbackSupported);
4502
+ };
4348
4503
  var AssistantActionBar = () => {
4349
4504
  const allowCopy = useAllowCopy(true);
4350
4505
  const allowReload = useAllowReload(true);
4351
4506
  const allowSpeak = useAllowSpeak(true);
4352
- if (!allowCopy && !allowReload && !allowSpeak) return null;
4507
+ const allowFeedbackPositive = useAllowFeedbackPositive(true);
4508
+ const allowFeedbackNegative = useAllowFeedbackNegative(true);
4509
+ if (!allowCopy && !allowReload && !allowSpeak && !allowFeedbackPositive && !allowFeedbackNegative)
4510
+ return null;
4353
4511
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
4354
4512
  AssistantActionBarRoot,
4355
4513
  {
@@ -4359,7 +4517,9 @@ var AssistantActionBar = () => {
4359
4517
  children: [
4360
4518
  allowSpeak && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AssistantActionBarSpeechControl, {}),
4361
4519
  allowCopy && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AssistantActionBarCopy, {}),
4362
- allowReload && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AssistantActionBarReload, {})
4520
+ allowReload && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AssistantActionBarReload, {}),
4521
+ allowFeedbackPositive && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AssistantActionBarFeedbackPositive, {}),
4522
+ allowFeedbackNegative && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, AssistantActionBarFeedbackNegative, {})
4363
4523
  ]
4364
4524
  }
4365
4525
  );
@@ -4416,16 +4576,58 @@ var AssistantActionBarReload = _react.forwardRef.call(void 0, (props, ref) => {
4416
4576
  } = {}
4417
4577
  } = useThreadConfig();
4418
4578
  const allowReload = useAllowReload();
4419
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, actionBar_exports.Reload, { disabled: !allowReload, asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipIconButton, { tooltip, ...props, ref, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.RefreshCwIcon, {}) }) });
4579
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, actionBar_exports.Reload, { disabled: !allowReload, asChild: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipIconButton, { tooltip, ...props, ref, children: _nullishCoalesce(props.children, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.RefreshCwIcon, {}))) }) });
4420
4580
  });
4421
4581
  AssistantActionBarReload.displayName = "AssistantActionBarReload";
4582
+ var AssistantActionBarFeedbackPositive = _react.forwardRef.call(void 0, (props, ref) => {
4583
+ const {
4584
+ strings: {
4585
+ assistantMessage: {
4586
+ feedback: { positive: { tooltip = "Good response" } = {} } = {}
4587
+ } = {}
4588
+ } = {}
4589
+ } = useThreadConfig();
4590
+ const allowFeedbackPositive = useAllowFeedbackPositive();
4591
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4592
+ actionBar_exports.FeedbackPositive,
4593
+ {
4594
+ disabled: !allowFeedbackPositive,
4595
+ className: "aui-assistant-action-bar-feedback-positive",
4596
+ asChild: true,
4597
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipIconButton, { tooltip, ...props, ref, children: _nullishCoalesce(props.children, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ThumbsUpIcon, {}))) })
4598
+ }
4599
+ );
4600
+ });
4601
+ AssistantActionBarFeedbackPositive.displayName = "AssistantActionBarFeedbackPositive";
4602
+ var AssistantActionBarFeedbackNegative = _react.forwardRef.call(void 0, (props, ref) => {
4603
+ const {
4604
+ strings: {
4605
+ assistantMessage: {
4606
+ feedback: { negative: { tooltip = "Bad response" } = {} } = {}
4607
+ } = {}
4608
+ } = {}
4609
+ } = useThreadConfig();
4610
+ const allowFeedbackNegative = useAllowFeedbackNegative();
4611
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
4612
+ actionBar_exports.FeedbackNegative,
4613
+ {
4614
+ disabled: !allowFeedbackNegative,
4615
+ className: "aui-assistant-action-bar-feedback-negative",
4616
+ asChild: true,
4617
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, TooltipIconButton, { tooltip, ...props, ref, children: _nullishCoalesce(props.children, () => ( /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _lucidereact.ThumbsDownIcon, {}))) })
4618
+ }
4619
+ );
4620
+ });
4621
+ AssistantActionBarFeedbackNegative.displayName = "AssistantActionBarFeedbackNegative";
4422
4622
  var exports = {
4423
4623
  Root: AssistantActionBarRoot,
4424
4624
  Reload: AssistantActionBarReload,
4425
4625
  Copy: AssistantActionBarCopy,
4426
4626
  Speak: AssistantActionBarSpeak,
4427
4627
  StopSpeaking: AssistantActionBarStopSpeaking,
4428
- SpeechControl: AssistantActionBarSpeechControl
4628
+ SpeechControl: AssistantActionBarSpeechControl,
4629
+ FeedbackPositive: AssistantActionBarFeedbackPositive,
4630
+ FeedbackNegative: AssistantActionBarFeedbackNegative
4429
4631
  };
4430
4632
  var assistant_action_bar_default = Object.assign(
4431
4633
  AssistantActionBar,
@@ -4579,7 +4781,7 @@ var AssistantMessageContent = _react.forwardRef.call(void 0, ({ components: comp
4579
4781
  {
4580
4782
  components: {
4581
4783
  ...componentsProp,
4582
- Text: _nullishCoalesce(_nullishCoalesce(_optionalChain([componentsProp, 'optionalAccess', _189 => _189.Text]), () => ( components.Text)), () => ( content_part_default.Text)),
4784
+ Text: _nullishCoalesce(_nullishCoalesce(_optionalChain([componentsProp, 'optionalAccess', _203 => _203.Text]), () => ( components.Text)), () => ( content_part_default.Text)),
4583
4785
  tools: toolsComponents
4584
4786
  }
4585
4787
  }
@@ -4722,7 +4924,7 @@ var ComposerAttachments = ({ components }) => {
4722
4924
  {
4723
4925
  components: {
4724
4926
  ...components,
4725
- Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _190 => _190.Attachment]), () => ( composer_attachment_default))
4927
+ Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _204 => _204.Attachment]), () => ( composer_attachment_default))
4726
4928
  }
4727
4929
  }
4728
4930
  ) });
@@ -4854,7 +5056,7 @@ var ThreadWelcomeSuggestion = ({
4854
5056
  };
4855
5057
  var ThreadWelcomeSuggestions = () => {
4856
5058
  const { welcome: { suggestions } = {} } = useThreadConfig();
4857
- return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestionContainer, { children: _optionalChain([suggestions, 'optionalAccess', _191 => _191.map, 'call', _192 => _192((suggestion, idx) => {
5059
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestionContainer, { children: _optionalChain([suggestions, 'optionalAccess', _205 => _205.map, 'call', _206 => _206((suggestion, idx) => {
4858
5060
  const key = `${suggestion.prompt}-${idx}`;
4859
5061
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ThreadWelcomeSuggestion, { suggestion }, key);
4860
5062
  })]) });
@@ -4953,7 +5155,7 @@ var UserMessageContent = _react.forwardRef.call(void 0,
4953
5155
  {
4954
5156
  components: {
4955
5157
  ...components,
4956
- Text: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _193 => _193.Text]), () => ( content_part_default.Text))
5158
+ Text: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _207 => _207.Text]), () => ( content_part_default.Text))
4957
5159
  }
4958
5160
  }
4959
5161
  ) });
@@ -4971,7 +5173,7 @@ var UserMessageAttachments = ({
4971
5173
  {
4972
5174
  components: {
4973
5175
  ...components,
4974
- Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _194 => _194.Attachment]), () => ( user_message_attachment_default))
5176
+ Attachment: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _208 => _208.Attachment]), () => ( user_message_attachment_default))
4975
5177
  }
4976
5178
  }
4977
5179
  ) }) });
@@ -5072,10 +5274,10 @@ var ThreadMessages = ({ components, ...rest }) => {
5072
5274
  thread_exports.Messages,
5073
5275
  {
5074
5276
  components: {
5075
- UserMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _195 => _195.UserMessage]), () => ( user_message_default)),
5076
- EditComposer: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _196 => _196.EditComposer]), () => ( edit_composer_default)),
5077
- AssistantMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _197 => _197.AssistantMessage]), () => ( assistant_message_default)),
5078
- SystemMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _198 => _198.SystemMessage]), () => ( SystemMessage))
5277
+ UserMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _209 => _209.UserMessage]), () => ( user_message_default)),
5278
+ EditComposer: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _210 => _210.EditComposer]), () => ( edit_composer_default)),
5279
+ AssistantMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _211 => _211.AssistantMessage]), () => ( assistant_message_default)),
5280
+ SystemMessage: _nullishCoalesce(_optionalChain([components, 'optionalAccess', _212 => _212.SystemMessage]), () => ( SystemMessage))
5079
5281
  },
5080
5282
  ...rest
5081
5283
  }
@@ -5293,5 +5495,7 @@ var assistant_modal_default = Object.assign(AssistantModal, exports13);
5293
5495
 
5294
5496
 
5295
5497
 
5296
- 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.BranchPicker = branch_picker_default; exports.BranchPickerPrimitive = branchPicker_exports; exports.Composer = composer_default; exports.ComposerAttachment = composer_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.ExternalStoreRuntime = ExternalStoreRuntime; 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 = user_message_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 = _chunkCWAZOKEWjs.toCoreMessage; exports.toCoreMessages = _chunkCWAZOKEWjs.toCoreMessages; exports.toLanguageModelMessages = _chunkCWAZOKEWjs.toLanguageModelMessages; exports.toLanguageModelTools = _chunkCWAZOKEWjs.toLanguageModelTools; exports.useActionBarCopy = useActionBarCopy; exports.useActionBarEdit = useActionBarEdit; 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.useComposerSend = useComposerSend; exports.useComposerStore = useComposerStore; exports.useContentPart = useContentPart; exports.useContentPartContext = useContentPartContext; exports.useContentPartDisplay = useContentPartDisplay; exports.useContentPartImage = useContentPartImage; 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.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;
5498
+
5499
+
5500
+ 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.BranchPicker = branch_picker_default; exports.BranchPickerPrimitive = branchPicker_exports; exports.Composer = composer_default; exports.ComposerAttachment = composer_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.ExternalStoreRuntime = ExternalStoreRuntime; 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 = user_message_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 = _chunkJ2V7Y7JXjs.toCoreMessage; exports.toCoreMessages = _chunkJ2V7Y7JXjs.toCoreMessages; exports.toLanguageModelMessages = _chunkJ2V7Y7JXjs.toLanguageModelMessages; exports.toLanguageModelTools = _chunkJ2V7Y7JXjs.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.useComposerSend = useComposerSend; exports.useComposerStore = useComposerStore; exports.useContentPart = useContentPart; exports.useContentPartContext = useContentPartContext; exports.useContentPartDisplay = useContentPartDisplay; exports.useContentPartImage = useContentPartImage; 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.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;
5297
5501
  //# sourceMappingURL=index.js.map