@frontera-sdk/chat-ui 1.52.18 → 1.52.20

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.
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { ChevronLeftIcon } from './chunk-CWAOLMFS.js';
3
3
  import { Sheet, SheetContent, SheetHeader, SheetTitle, SheetTrigger } from './chunk-T5SANYSX.js';
4
- import { useIsMobile, useTranslation } from './chunk-I5NAI7HP.js';
4
+ import { useIsMobile, useTranslation } from './chunk-AVSAEPHS.js';
5
5
  import { ToolCallItem, ProcessorIcon } from './chunk-QBV7MAFV.js';
6
6
  import { toolKindVerb, getToolMeta, Shimmer, Collapse, ToolGroupReasoningItem, SkillToolItem, DeviceDesktopIcon, WorldSearchIcon, FileTextIcon, useStreamdownPlugins, CircleXIcon, STREAMDOWN_LINK_SAFETY, Folder1Icon, AppIconFrame, AppIcon, Collapsible, CollapsibleTrigger, CollapsibleContent, SquareArrowTopRightIcon, Icon } from './chunk-PKNEC4LJ.js';
7
7
  import { ChevronDownMediumIcon, Button, Skeleton, buttonVariants } from './chunk-UWKO24VT.js';
@@ -7861,9 +7861,9 @@ var require_cronstrue_i18n = __commonJS({
7861
7861
  return values.shift();
7862
7862
  });
7863
7863
  };
7864
- StringUtilities2.containsAny = function(text, searchStrings) {
7864
+ StringUtilities2.containsAny = function(text2, searchStrings) {
7865
7865
  return searchStrings.some(function(c2) {
7866
- return text.indexOf(c2) > -1;
7866
+ return text2.indexOf(c2) > -1;
7867
7867
  });
7868
7868
  };
7869
7869
  return StringUtilities2;
@@ -10892,6 +10892,95 @@ function useUpdateArtifact(artifactId) {
10892
10892
  };
10893
10893
  }
10894
10894
 
10895
+ // ../chat/src/ui/chat/decision-signals.ts
10896
+ function getNeedsConnect(part) {
10897
+ const output = part.output;
10898
+ if (!output || output.error !== "needs_connect") return null;
10899
+ return output.needsConnect ?? null;
10900
+ }
10901
+ function getNeedsApproval(part) {
10902
+ const output = part.output;
10903
+ if (!output || output.error !== "needs_approval") return null;
10904
+ return output.needsApproval ?? null;
10905
+ }
10906
+ function getNeedsWorkspaceOAuthClient(part) {
10907
+ const output = part.output;
10908
+ if (!output || output.error !== "needs_workspace_oauth_client") return null;
10909
+ if (!output.kind || !output.providerId || !output.workspaceId) return null;
10910
+ return {
10911
+ kind: output.kind,
10912
+ providerId: output.providerId,
10913
+ workspaceId: output.workspaceId,
10914
+ requiredSecrets: output.requiredSecrets ?? [],
10915
+ setupGuideUrl: output.setupGuideUrl ?? null,
10916
+ setupGuideTitle: output.setupGuideTitle ?? null
10917
+ };
10918
+ }
10919
+ function getNeedsInboundSecrets(part) {
10920
+ const output = part.output;
10921
+ if (!output) return null;
10922
+ if (typeof output.retryTool === "string") {
10923
+ if (!output.kind || !output.workspaceId || !Array.isArray(output.requiredSecrets)) {
10924
+ return null;
10925
+ }
10926
+ return {
10927
+ // A Data Source or MCP server has no install; the subject name is the
10928
+ // correlation handle the Continue event carries.
10929
+ installId: output.kind,
10930
+ kind: output.kind,
10931
+ inboundVaultPrefix: output.inboundVaultPrefix ?? null,
10932
+ workspaceId: output.workspaceId,
10933
+ requiredSecrets: output.requiredSecrets,
10934
+ retryTool: output.retryTool
10935
+ };
10936
+ }
10937
+ if (output.error !== "needs_inbound_secrets") return null;
10938
+ if (!output.installId || !output.kind || !output.workspaceId || !Array.isArray(output.requiredSecrets)) {
10939
+ return null;
10940
+ }
10941
+ return {
10942
+ installId: output.installId,
10943
+ kind: output.kind,
10944
+ inboundVaultPrefix: output.inboundVaultPrefix ?? null,
10945
+ workspaceId: output.workspaceId,
10946
+ requiredSecrets: output.requiredSecrets,
10947
+ retryTool: "verify_install"
10948
+ };
10949
+ }
10950
+ function getOAuthAuthorize(part) {
10951
+ const output = part.output;
10952
+ if (!output || output.success !== true) return null;
10953
+ const a2 = output.authorize;
10954
+ if (!a2?.kind || !a2.providerId || !a2.installId || !a2.authUrl) return null;
10955
+ return {
10956
+ kind: a2.kind,
10957
+ providerId: a2.providerId,
10958
+ installId: a2.installId,
10959
+ authUrl: a2.authUrl
10960
+ };
10961
+ }
10962
+ var CONFIRMATION_STATUSES = /* @__PURE__ */ new Set(["pending", "confirmed", "cancelled", "expired"]);
10963
+ var text = (value) => typeof value === "string" && value.trim() ? value : null;
10964
+ function getPersonConfirmation(part) {
10965
+ if (part.type !== "data-person-confirmation") return null;
10966
+ const data = part.data;
10967
+ if (!data || typeof data !== "object") return null;
10968
+ const id = text(data.id);
10969
+ const summary = text(data.summary);
10970
+ const status = data.status;
10971
+ if (!id || !summary || typeof status !== "string" || !CONFIRMATION_STATUSES.has(status)) return null;
10972
+ return {
10973
+ id,
10974
+ summary,
10975
+ details: text(data.details),
10976
+ confirmLabel: text(data.confirmLabel),
10977
+ cancelLabel: text(data.cancelLabel),
10978
+ status,
10979
+ expiresAt: text(data.expiresAt),
10980
+ answeredAt: text(data.answeredAt)
10981
+ };
10982
+ }
10983
+
10895
10984
  // ../chat/src/lib/message-utils.ts
10896
10985
  var ARTIFACT_TOOL_FORMAT = {
10897
10986
  createDocument: "markdown",
@@ -11206,12 +11295,19 @@ function computeMessageParts(parts) {
11206
11295
  }
11207
11296
  } else if (part.type === "reasoning") {
11208
11297
  currentSteps.push({ type: "reasoning", part, index });
11209
- } else if (part.type === "step-start") ; else if (typeof part.type === "string" && part.type.startsWith("data-")) ; else if (part.type === "artifact") {
11298
+ } else if (part.type === "step-start") ; else if (typeof part.type === "string" && part.type.startsWith("data-")) {
11299
+ const confirmation = getPersonConfirmation(part);
11300
+ if (confirmation) {
11301
+ flushSteps();
11302
+ result.push({ kind: "person-confirmation", confirmation, index });
11303
+ return;
11304
+ }
11305
+ } else if (part.type === "artifact") {
11210
11306
  flushSteps();
11211
11307
  result.push({ kind: "artifact", part, index });
11212
11308
  } else if (part.type === "text") {
11213
- const text = typeof part.text === "string" ? part.text : "";
11214
- if (!text.trim()) return;
11309
+ const text2 = typeof part.text === "string" ? part.text : "";
11310
+ if (!text2.trim()) return;
11215
11311
  flushSteps();
11216
11312
  result.push({ kind: "text", part, index });
11217
11313
  } else {
@@ -12129,9 +12225,9 @@ function summarizeRoutineTrigger(routine, options = {}) {
12129
12225
  if (routine.triggerType === "event") {
12130
12226
  return { kind: "event", text: options.locale === "id" ? "Dijeda \xB7 Pemicu lama tidak tersedia" : "Paused \xB7 Legacy trigger unavailable", timezone: null };
12131
12227
  }
12132
- const text = routine.cronExpression ? describeCronInWords(routine.cronExpression, options.locale ?? "en") : "";
12228
+ const text2 = routine.cronExpression ? describeCronInWords(routine.cronExpression, options.locale ?? "en") : "";
12133
12229
  const timezone = routine.timezone && routine.timezone !== (options.viewerTimezone ?? routine.timezone) ? routine.timezone : null;
12134
- return { kind: "schedule", text, timezone };
12230
+ return { kind: "schedule", text: text2, timezone };
12135
12231
  }
12136
12232
  function formatRunDuration(ms) {
12137
12233
  if (ms == null || ms < 0) return null;
@@ -13121,12 +13217,13 @@ function useSessionPendingStatuses(sessionId) {
13121
13217
  }
13122
13218
  });
13123
13219
  }
13124
- function useSessionPendingApprovals(sessionId) {
13220
+ function useSessionPendingApprovals(sessionId, options = {}) {
13125
13221
  const client = useClient();
13126
13222
  return useQuery({
13127
13223
  queryKey: [...appsKeys.all, "pending-approvals", sessionId],
13128
13224
  enabled: !!sessionId,
13129
13225
  refetchInterval: 2e3,
13226
+ refetchIntervalInBackground: !!options.pollInBackground,
13130
13227
  queryFn: async () => {
13131
13228
  const { data, error } = await client.v1.sessions[sessionId].pending.get();
13132
13229
  if (error) throw error;
@@ -15654,10 +15751,10 @@ var STATUSES = /* @__PURE__ */ new Set([
15654
15751
  ]);
15655
15752
  function parseMaybeJson(value) {
15656
15753
  if (typeof value !== "string") return value;
15657
- const text = value.trim();
15658
- if (!text.startsWith("{")) return value;
15754
+ const text2 = value.trim();
15755
+ if (!text2.startsWith("{")) return value;
15659
15756
  try {
15660
- return JSON.parse(text);
15757
+ return JSON.parse(text2);
15661
15758
  } catch {
15662
15759
  return value;
15663
15760
  }
@@ -15693,74 +15790,6 @@ function desktopAccessCardKind(signal) {
15693
15790
  return null;
15694
15791
  }
15695
15792
  }
15696
-
15697
- // ../chat/src/ui/chat/decision-signals.ts
15698
- function getNeedsConnect(part) {
15699
- const output = part.output;
15700
- if (!output || output.error !== "needs_connect") return null;
15701
- return output.needsConnect ?? null;
15702
- }
15703
- function getNeedsApproval(part) {
15704
- const output = part.output;
15705
- if (!output || output.error !== "needs_approval") return null;
15706
- return output.needsApproval ?? null;
15707
- }
15708
- function getNeedsWorkspaceOAuthClient(part) {
15709
- const output = part.output;
15710
- if (!output || output.error !== "needs_workspace_oauth_client") return null;
15711
- if (!output.kind || !output.providerId || !output.workspaceId) return null;
15712
- return {
15713
- kind: output.kind,
15714
- providerId: output.providerId,
15715
- workspaceId: output.workspaceId,
15716
- requiredSecrets: output.requiredSecrets ?? [],
15717
- setupGuideUrl: output.setupGuideUrl ?? null,
15718
- setupGuideTitle: output.setupGuideTitle ?? null
15719
- };
15720
- }
15721
- function getNeedsInboundSecrets(part) {
15722
- const output = part.output;
15723
- if (!output) return null;
15724
- if (typeof output.retryTool === "string") {
15725
- if (!output.kind || !output.workspaceId || !Array.isArray(output.requiredSecrets)) {
15726
- return null;
15727
- }
15728
- return {
15729
- // A Data Source or MCP server has no install; the subject name is the
15730
- // correlation handle the Continue event carries.
15731
- installId: output.kind,
15732
- kind: output.kind,
15733
- inboundVaultPrefix: output.inboundVaultPrefix ?? null,
15734
- workspaceId: output.workspaceId,
15735
- requiredSecrets: output.requiredSecrets,
15736
- retryTool: output.retryTool
15737
- };
15738
- }
15739
- if (output.error !== "needs_inbound_secrets") return null;
15740
- if (!output.installId || !output.kind || !output.workspaceId || !Array.isArray(output.requiredSecrets)) {
15741
- return null;
15742
- }
15743
- return {
15744
- installId: output.installId,
15745
- kind: output.kind,
15746
- inboundVaultPrefix: output.inboundVaultPrefix ?? null,
15747
- workspaceId: output.workspaceId,
15748
- requiredSecrets: output.requiredSecrets,
15749
- retryTool: "verify_install"
15750
- };
15751
- }
15752
- function getOAuthAuthorize(part) {
15753
- const output = part.output;
15754
- if (!output || output.success !== true) return null;
15755
- const a2 = output.authorize;
15756
- if (!a2?.kind || !a2.providerId || !a2.installId || !a2.authUrl) return null;
15757
- return {
15758
- kind: a2.kind,
15759
- providerId: a2.providerId,
15760
- installId: a2.installId,
15761
- authUrl: a2.authUrl
15762
- };
15763
- }
15764
15793
  function MessageDecisionCards({
15765
15794
  messageId,
15766
15795
  items,
@@ -18625,12 +18654,12 @@ function ImageGenPlaceholder({
18625
18654
  }
18626
18655
  var GENERATED_IMAGE_TOOLS = /* @__PURE__ */ new Set(["createImage", "createInfographic"]);
18627
18656
  var REDACTED_REASONING = "[REDACTED]";
18628
- function hasVisibleReasoningText(text) {
18629
- if (typeof text !== "string") return false;
18657
+ function hasVisibleReasoningText(text2) {
18658
+ if (typeof text2 !== "string") return false;
18630
18659
  const nonWhitespace = /\S/g;
18631
18660
  let match;
18632
- while (match = nonWhitespace.exec(text)) {
18633
- if (text.startsWith(REDACTED_REASONING, match.index)) {
18661
+ while (match = nonWhitespace.exec(text2)) {
18662
+ if (text2.startsWith(REDACTED_REASONING, match.index)) {
18634
18663
  nonWhitespace.lastIndex = match.index + REDACTED_REASONING.length;
18635
18664
  continue;
18636
18665
  }
@@ -18638,10 +18667,10 @@ function hasVisibleReasoningText(text) {
18638
18667
  }
18639
18668
  return false;
18640
18669
  }
18641
- function passagesByUrl(text) {
18670
+ function passagesByUrl(text2) {
18642
18671
  const out = /* @__PURE__ */ new Map();
18643
- if (typeof text !== "string" || !text) return out;
18644
- for (const section of text.split(/\n\n---\n\n/)) {
18672
+ if (typeof text2 !== "string" || !text2) return out;
18673
+ for (const section of text2.split(/\n\n---\n\n/)) {
18645
18674
  const match = /^Source \[\d+\]\(([^)]+)\):[^\n]*\n([\s\S]*)$/.exec(section.trim());
18646
18675
  if (!match) continue;
18647
18676
  const [, url, body] = match;
@@ -18872,12 +18901,12 @@ var MessageStepsGroup = memo(function MessageStepsGroup2({
18872
18901
  ).length;
18873
18902
  const renderStepItem = (item) => {
18874
18903
  if (item.type === "reasoning") {
18875
- const text = item.part.text;
18876
- if (!hasVisibleReasoningText(text)) return null;
18904
+ const text2 = item.part.text;
18905
+ if (!hasVisibleReasoningText(text2)) return null;
18877
18906
  return /* @__PURE__ */ jsx(
18878
18907
  ToolGroupReasoningItem,
18879
18908
  {
18880
- text,
18909
+ text: text2,
18881
18910
  isStreaming: item.part.state === "streaming"
18882
18911
  },
18883
18912
  `${messageId}-r-${item.index}`
@@ -18886,12 +18915,12 @@ var MessageStepsGroup = memo(function MessageStepsGroup2({
18886
18915
  if (getToolName(item.part) === "think") {
18887
18916
  const thinkInput = getToolInput(item.part);
18888
18917
  const thinkOutput = getToolOutput(item.part);
18889
- const text = thinkInput?.thought ?? thinkOutput?.thought;
18890
- if (!hasVisibleReasoningText(text)) return null;
18918
+ const text2 = thinkInput?.thought ?? thinkOutput?.thought;
18919
+ if (!hasVisibleReasoningText(text2)) return null;
18891
18920
  return /* @__PURE__ */ jsx(
18892
18921
  ToolGroupReasoningItem,
18893
18922
  {
18894
- text,
18923
+ text: text2,
18895
18924
  isStreaming: getToolState(item.part) === "input-streaming"
18896
18925
  },
18897
18926
  `${messageId}-r-${item.index}`
@@ -19984,7 +20013,7 @@ function walkSlide(doc, win = window) {
19984
20013
  const hasBg = solidBg || !!grad && grad.alpha > 0.02;
19985
20014
  const bw = parseFloat(s2.borderWidth) || 0;
19986
20015
  const fullBorder = bw >= 1 && !TRANSPARENT(s2.borderColor);
19987
- const text = (el.textContent || "").replace(/\s+/g, " ").trim();
20016
+ const text2 = (el.textContent || "").replace(/\s+/g, " ").trim();
19988
20017
  if (hasBg || fullBorder) {
19989
20018
  out.elements.push({
19990
20019
  type: "shape",
@@ -20008,7 +20037,7 @@ function walkSlide(doc, win = window) {
20008
20037
  out.elements.push({ type: "shape", shape: "rect", ...bar, fill: rgbToHex(col), opacity: 1 });
20009
20038
  }
20010
20039
  }
20011
- if (text && !hasBlockTextChild(el)) {
20040
+ if (text2 && !hasBlockTextChild(el)) {
20012
20041
  Array.from(el.children).forEach((c2) => {
20013
20042
  if (!(c2.textContent || "").trim()) visit(c2);
20014
20043
  });
@@ -20030,7 +20059,7 @@ function walkSlide(doc, win = window) {
20030
20059
  tx = tr.x;
20031
20060
  }
20032
20061
  const isHeading = fs >= 40;
20033
- const nowrap = singleLine || !/\s/.test(text) || isHeading;
20062
+ const nowrap = singleLine || !/\s/.test(text2) || isHeading;
20034
20063
  if (nowrap) {
20035
20064
  const pad2 = Math.round(fs * 0.7 + (tr ? tr.w : tw) * 0.18);
20036
20065
  if (align === "center") {
@@ -37474,16 +37503,16 @@ var SPAN_STYLE = {
37474
37503
  whiteSpace: "pre"
37475
37504
  };
37476
37505
  var MEASUREMENT_SPAN_ID = "recharts_measurement_span";
37477
- function createCacheKey(text, style) {
37506
+ function createCacheKey(text2, style) {
37478
37507
  var fontSize = style.fontSize || "";
37479
37508
  var fontFamily = style.fontFamily || "";
37480
37509
  var fontWeight = style.fontWeight || "";
37481
37510
  var fontStyle = style.fontStyle || "";
37482
37511
  var letterSpacing = style.letterSpacing || "";
37483
37512
  var textTransform = style.textTransform || "";
37484
- return "".concat(text, "|").concat(fontSize, "|").concat(fontFamily, "|").concat(fontWeight, "|").concat(fontStyle, "|").concat(letterSpacing, "|").concat(textTransform);
37513
+ return "".concat(text2, "|").concat(fontSize, "|").concat(fontFamily, "|").concat(fontWeight, "|").concat(fontStyle, "|").concat(letterSpacing, "|").concat(textTransform);
37485
37514
  }
37486
- var measureTextWithDOM = (text, style) => {
37515
+ var measureTextWithDOM = (text2, style) => {
37487
37516
  try {
37488
37517
  var measurementSpan = document.getElementById(MEASUREMENT_SPAN_ID);
37489
37518
  if (!measurementSpan) {
@@ -37493,7 +37522,7 @@ var measureTextWithDOM = (text, style) => {
37493
37522
  document.body.appendChild(measurementSpan);
37494
37523
  }
37495
37524
  Object.assign(measurementSpan.style, SPAN_STYLE, style);
37496
- measurementSpan.textContent = "".concat(text);
37525
+ measurementSpan.textContent = "".concat(text2);
37497
37526
  var rect = measurementSpan.getBoundingClientRect();
37498
37527
  return {
37499
37528
  width: rect.width,
@@ -37506,23 +37535,23 @@ var measureTextWithDOM = (text, style) => {
37506
37535
  };
37507
37536
  }
37508
37537
  };
37509
- var getStringSize = function getStringSize2(text) {
37538
+ var getStringSize = function getStringSize2(text2) {
37510
37539
  var style = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
37511
- if (text === void 0 || text === null || Global.isSsr) {
37540
+ if (text2 === void 0 || text2 === null || Global.isSsr) {
37512
37541
  return {
37513
37542
  width: 0,
37514
37543
  height: 0
37515
37544
  };
37516
37545
  }
37517
37546
  if (!currentConfig.enableCache) {
37518
- return measureTextWithDOM(text, style);
37547
+ return measureTextWithDOM(text2, style);
37519
37548
  }
37520
- var cacheKey = createCacheKey(text, style);
37549
+ var cacheKey = createCacheKey(text2, style);
37521
37550
  var cachedResult = stringCache.get(cacheKey);
37522
37551
  if (cachedResult) {
37523
37552
  return cachedResult;
37524
37553
  }
37525
- var result = measureTextWithDOM(text, style);
37554
+ var result = measureTextWithDOM(text2, style);
37526
37555
  stringCache.set(cacheKey, result);
37527
37556
  return result;
37528
37557
  };
@@ -37848,8 +37877,8 @@ var calculate = (words, lineWidth, spaceWidth, scaleToFit) => words.reduce((resu
37848
37877
  }, []);
37849
37878
  var findLongestLine = (words) => words.reduce((a2, b) => a2.width > b.width ? a2 : b);
37850
37879
  var suffix = "\u2026";
37851
- var checkOverflow = (text, index, breakAll, style, maxLines, lineWidth, spaceWidth, scaleToFit) => {
37852
- var tempText = text.slice(0, index);
37880
+ var checkOverflow = (text2, index, breakAll, style, maxLines, lineWidth, spaceWidth, scaleToFit) => {
37881
+ var tempText = text2.slice(0, index);
37853
37882
  var words = calculateWordWidths({
37854
37883
  breakAll,
37855
37884
  style,
@@ -37865,7 +37894,7 @@ var checkOverflow = (text, index, breakAll, style, maxLines, lineWidth, spaceWid
37865
37894
  var calculateWordsByLines = (_ref3, initialWordsWithComputedWith, spaceWidth, lineWidth, scaleToFit) => {
37866
37895
  var maxLines = _ref3.maxLines, children = _ref3.children, style = _ref3.style, breakAll = _ref3.breakAll;
37867
37896
  var shouldLimitLines = isNumber(maxLines);
37868
- var text = String(children);
37897
+ var text2 = String(children);
37869
37898
  var originalResult = calculate(initialWordsWithComputedWith, lineWidth, spaceWidth, scaleToFit);
37870
37899
  if (!shouldLimitLines || scaleToFit) {
37871
37900
  return originalResult;
@@ -37875,14 +37904,14 @@ var calculateWordsByLines = (_ref3, initialWordsWithComputedWith, spaceWidth, li
37875
37904
  return originalResult;
37876
37905
  }
37877
37906
  var start = 0;
37878
- var end = text.length - 1;
37907
+ var end = text2.length - 1;
37879
37908
  var iterations = 0;
37880
37909
  var trimmedResult;
37881
- while (start <= end && iterations <= text.length - 1) {
37910
+ while (start <= end && iterations <= text2.length - 1) {
37882
37911
  var middle = Math.floor((start + end) / 2);
37883
37912
  var prev = middle - 1;
37884
- var _checkOverflow = checkOverflow(text, prev, breakAll, style, maxLines, lineWidth, spaceWidth, scaleToFit), _checkOverflow2 = _slicedToArray14(_checkOverflow, 2), doesPrevOverflow = _checkOverflow2[0], result = _checkOverflow2[1];
37885
- var _checkOverflow3 = checkOverflow(text, middle, breakAll, style, maxLines, lineWidth, spaceWidth, scaleToFit), _checkOverflow4 = _slicedToArray14(_checkOverflow3, 1), doesMiddleOverflow = _checkOverflow4[0];
37913
+ var _checkOverflow = checkOverflow(text2, prev, breakAll, style, maxLines, lineWidth, spaceWidth, scaleToFit), _checkOverflow2 = _slicedToArray14(_checkOverflow, 2), doesPrevOverflow = _checkOverflow2[0], result = _checkOverflow2[1];
37914
+ var _checkOverflow3 = checkOverflow(text2, middle, breakAll, style, maxLines, lineWidth, spaceWidth, scaleToFit), _checkOverflow4 = _slicedToArray14(_checkOverflow3, 1), doesMiddleOverflow = _checkOverflow4[0];
37886
37915
  if (!doesPrevOverflow && !doesMiddleOverflow) {
37887
37916
  start = middle + 1;
37888
37917
  }
@@ -52148,4 +52177,4 @@ react-is/cjs/react-is.development.js:
52148
52177
  *)
52149
52178
  */
52150
52179
 
52151
- export { AGENT_AVATAR_SIZE, ActionMenu, AgentRoutineForm, AgentsProvider, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, ArrowRightIcon, ArrowUpIcon, ArrowsShowIcon, ArtifactActionsMenu, AudioIcon, BookIcon, ChatImageLightbox, CircleCheckIcon, CitationViewerContext, ConnectRunnerContext, DotGrid1x3HorizontalTightIcon, DropdownMenu2 as DropdownMenu, DropdownMenuTrigger2 as DropdownMenuTrigger, ExclamationCircleIcon, EyeOpenIcon, EyeSlashIcon, FileDownloadIcon2 as FileDownloadIcon, FilePdfIcon2 as FilePdfIcon, FileThumbnail, GridSpinner, ImageResultsGallery, Images1Icon2 as Images1Icon, Input, Label, LayoutDashboardIcon, LayoutGrid1Icon, LoaderIcon, MarkdownRenderer, MessageDecisionCards, MessageStepsGroup, MobileScreenSheet, PanelEdgeRing, PluginProvider, ShieldCheckIcon, SlidesWideIcon2 as SlidesWideIcon, SourceFavicon, SpreadsheetIcon, StudioDisplayIcon, StyledDropdownMenuContent, StyledDropdownMenuItem, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, VideoIcon, WorkspaceProvider, WorldIcon, ZoomableImage, agentRoutineKeys, appsKeys, artifactCategory, artifactFormatIcon, artifactFormatSubtitle, authFetch, avatarMotionForStream, buildTenantUrlAbsolute, canvasId, dedup, dedupeImageResults, errorText, exportDocumentPdf, extractCitationsFromSteps, extractDomain, extractImagesFromSteps, formatFileSize, getBearerHeadersForApi, getDocumentStreamArtifacts, getFileCategory, getMessageCreatedAtMs, getMessageDisplayTimestampValue, getSdkDarkMode, getToolErrorText, getToolInput, getToolName, getToolOutput, getToolState, isApprovalRequested, isRequestHumanTool, isToolPart, processMessageParts, renderPluginBlock, requestPaneFocus, resolveArtifactIconFormat, resolveBearerHeaders, resolvePluginLanguage, resolveSourceDisplay, setSdkConversationPath, setSdkDarkMode, sourceKind, subscribeSdkDarkMode, tableToCsv, tableToMarkdown, tableToXlsx, treatyErrorMessage, unwrap, unwrapData, unwrapDataDeep, useAgentConnectionStatus, useAgentHistorySource, useAgentPanelStore, useAgentRoster, useArtifact, useArtifactFileBytes, useArtifactFileObjectUrl, useArtifactPreviewFileObjectUrl, useArtifactStore, useArtifactVersion, useArtifactVersionPreviewFileObjectUrl, useArtifactVersions, useArtifacts, useBasePath, useBrand, useCanvasStore, useCatalog, useChatCapabilities, useChatCapabilityEnabled, useChatOptInEnabled, useChatOverviewStore, useCitationViewer, useClient, useConnectRunner, useConversationDesktopStatus, useDownloadArtifact, useInstalls, useKeyboardInset, useOptionalAgentsContext, useOptionalWorkspaceContext, usePaneFocusStore, usePathname2 as usePathname, usePlugins, useRestoreArtifactVersion, useRevokeGrant, useRouter2 as useRouter, useSession, useSessionPendingApprovals, useSourcesEnrichment, useStartUserConnect, useUpdateArtifact, useUpsertGrant, useWorkspaceContext, useWorkspaceSlug };
52180
+ export { AGENT_AVATAR_SIZE, ActionMenu, AgentRoutineForm, AgentsProvider, AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, ArrowRightIcon, ArrowUpIcon, ArrowsShowIcon, ArtifactActionsMenu, AudioIcon, BookIcon, ChatImageLightbox, CircleCheckIcon, CitationViewerContext, ConnectRunnerContext, DecisionCard, DotGrid1x3HorizontalTightIcon, DropdownMenu2 as DropdownMenu, DropdownMenuTrigger2 as DropdownMenuTrigger, ExclamationCircleIcon, EyeOpenIcon, EyeSlashIcon, FileDownloadIcon2 as FileDownloadIcon, FilePdfIcon2 as FilePdfIcon, FileThumbnail, GridSpinner, ImageResultsGallery, Images1Icon2 as Images1Icon, Input, Label, LayoutDashboardIcon, LayoutGrid1Icon, LoaderIcon, MarkdownRenderer, MessageDecisionCards, MessageStepsGroup, MobileScreenSheet, PanelEdgeRing, PluginProvider, ShieldCheckIcon, SlidesWideIcon2 as SlidesWideIcon, SourceFavicon, SpreadsheetIcon, StudioDisplayIcon, StyledDropdownMenuContent, StyledDropdownMenuItem, Textarea, Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, VideoIcon, WorkspaceProvider, WorldIcon, ZoomableImage, agentRoutineKeys, appsKeys, artifactCategory, artifactFormatIcon, artifactFormatSubtitle, authFetch, avatarMotionForStream, buildTenantUrlAbsolute, canvasId, dedup, dedupeImageResults, errorText, exportDocumentPdf, extractCitationsFromSteps, extractDomain, extractImagesFromSteps, formatDecisionTime, formatFileSize, formatRelativeTime, getBearerHeadersForApi, getDocumentStreamArtifacts, getFileCategory, getMessageCreatedAtMs, getMessageDisplayTimestampValue, getPersonConfirmation, getSdkDarkMode, getToolErrorText, getToolInput, getToolName, getToolOutput, getToolState, isApprovalRequested, isRequestHumanTool, isToolPart, processMessageParts, renderPluginBlock, requestPaneFocus, resolveArtifactIconFormat, resolveBearerHeaders, resolvePluginLanguage, resolveSourceDisplay, setSdkConversationPath, setSdkDarkMode, sourceKind, subscribeSdkDarkMode, tableToCsv, tableToMarkdown, tableToXlsx, treatyErrorMessage, unwrap, unwrapData, unwrapDataDeep, useAgentConnectionStatus, useAgentHistorySource, useAgentPanelStore, useAgentRoster, useArtifact, useArtifactFileBytes, useArtifactFileObjectUrl, useArtifactPreviewFileObjectUrl, useArtifactStore, useArtifactVersion, useArtifactVersionPreviewFileObjectUrl, useArtifactVersions, useArtifacts, useBasePath, useBrand, useCanvasStore, useCatalog, useChatCapabilities, useChatCapabilityEnabled, useChatOptInEnabled, useChatOverviewStore, useCitationViewer, useClient, useConnectRunner, useConversationDesktopStatus, useDownloadArtifact, useInstalls, useKeyboardInset, useOptionalAgentsContext, useOptionalWorkspaceContext, usePaneFocusStore, usePathname2 as usePathname, usePlugins, useRestoreArtifactVersion, useRevokeGrant, useRouter2 as useRouter, useSession, useSessionPendingApprovals, useSourcesEnrichment, useStartUserConnect, useUpdateArtifact, useUpsertGrant, useWorkspaceContext, useWorkspaceSlug };