@tutti-os/agent-gui 0.0.21 → 0.0.23

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.
@@ -10,7 +10,7 @@ import {
10
10
  resolveWorkspaceFileLinkAction,
11
11
  resolveWorkspaceFilePathCandidate,
12
12
  resolveWorkspaceLinkAction
13
- } from "./chunk-BMGCH4JC.js";
13
+ } from "./chunk-7Q3JKSQ5.js";
14
14
  import {
15
15
  attrsToMentionItem,
16
16
  createAgentFileMentionExtension,
@@ -4663,7 +4663,7 @@ import {
4663
4663
  useMemo,
4664
4664
  useState as useState5
4665
4665
  } from "react";
4666
- import { AlertTriangle, ChevronRight as ChevronRight3, Info } from "lucide-react";
4666
+ import { ChevronRight as ChevronRight3, LoaderCircle } from "lucide-react";
4667
4667
  import { CheckIcon, CopyIcon } from "@tutti-os/ui-system/icons";
4668
4668
 
4669
4669
  // app/renderer/components/ui/button.tsx
@@ -6084,7 +6084,8 @@ import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
6084
6084
  function WorkspaceAgentSessionThinkingDisclosure({
6085
6085
  thinking,
6086
6086
  label,
6087
- onLinkClick
6087
+ onLinkClick,
6088
+ previewMode = false
6088
6089
  }) {
6089
6090
  "use memo";
6090
6091
  const [expanded, setExpanded] = useState3(false);
@@ -6153,7 +6154,8 @@ function WorkspaceAgentSessionThinkingDisclosure({
6153
6154
  content: thinking.body,
6154
6155
  onLinkClick,
6155
6156
  className: "text-[11px] text-[var(--text-secondary)] opacity-92 [&_p]:mb-1",
6156
- enableImageZoom: true
6157
+ enableImageZoom: true,
6158
+ previewMode
6157
6159
  }
6158
6160
  ) }) })
6159
6161
  ] });
@@ -6234,6 +6236,7 @@ function AgentThinkingDisclosure({
6234
6236
  thinking,
6235
6237
  label,
6236
6238
  onLinkClick,
6239
+ previewMode = false,
6237
6240
  showRawTimelineJson = false,
6238
6241
  rawTimelineJsonLabel = ""
6239
6242
  }) {
@@ -6244,7 +6247,8 @@ function AgentThinkingDisclosure({
6244
6247
  {
6245
6248
  thinking,
6246
6249
  label,
6247
- onLinkClick
6250
+ onLinkClick,
6251
+ previewMode
6248
6252
  }
6249
6253
  ),
6250
6254
  showRawTimelineJson && rawTimelineJsonLabel ? /* @__PURE__ */ jsx10(
@@ -6315,6 +6319,7 @@ function AgentMessageBlock({
6315
6319
  onAuthLogin,
6316
6320
  availableSkills,
6317
6321
  workspaceAppIcons,
6322
+ previewMode = false,
6318
6323
  showRawTimelineJson = false,
6319
6324
  rawTimelineJsonLabel = ""
6320
6325
  }) {
@@ -6363,6 +6368,7 @@ function AgentMessageBlock({
6363
6368
  thinking,
6364
6369
  label: thinkingLabel,
6365
6370
  onLinkClick: handleLinkClick,
6371
+ previewMode,
6366
6372
  showRawTimelineJson,
6367
6373
  rawTimelineJsonLabel
6368
6374
  },
@@ -6405,7 +6411,8 @@ function AgentMessageBlock({
6405
6411
  workspaceRoot,
6406
6412
  basePath,
6407
6413
  onLinkAction,
6408
- workspaceAppIcons
6414
+ workspaceAppIcons,
6415
+ previewMode
6409
6416
  }
6410
6417
  ) : /* @__PURE__ */ jsx12(
6411
6418
  AgentMessageMarkdown,
@@ -6421,6 +6428,7 @@ function AgentMessageBlock({
6421
6428
  workspaceAppIcons,
6422
6429
  deferLongContentRender: true,
6423
6430
  enableImageZoom: true,
6431
+ previewMode,
6424
6432
  streaming: message.statusKind === "working"
6425
6433
  }
6426
6434
  );
@@ -6513,7 +6521,7 @@ function AgentUserImageGrid({
6513
6521
  }) {
6514
6522
  "use memo";
6515
6523
  const images = message.images ?? [];
6516
- const loadedImages = useAgentMessageImageSources(images);
6524
+ const { loadingIds, sources: loadedImages } = useAgentMessageImageSources(images);
6517
6525
  const columnCount = Math.min(Math.max(images.length, 1), 4);
6518
6526
  return /* @__PURE__ */ jsx12(
6519
6527
  "div",
@@ -6522,6 +6530,7 @@ function AgentUserImageGrid({
6522
6530
  style: { gridTemplateColumns: `repeat(${columnCount}, 80px)` },
6523
6531
  children: images.map((image) => {
6524
6532
  const src = loadedImages.get(image.id) ?? imageDataUrl(image);
6533
+ const loading = !src && loadingIds.has(image.id);
6525
6534
  return /* @__PURE__ */ jsx12(
6526
6535
  "div",
6527
6536
  {
@@ -6534,6 +6543,20 @@ function AgentUserImageGrid({
6534
6543
  className: "size-full object-cover",
6535
6544
  draggable: false
6536
6545
  }
6546
+ ) : loading ? /* @__PURE__ */ jsx12(
6547
+ "div",
6548
+ {
6549
+ className: "flex size-full items-center justify-center bg-[color-mix(in_srgb,var(--text-primary)_6%,transparent)]",
6550
+ "data-testid": "agent-gui-message-image-loading",
6551
+ children: /* @__PURE__ */ jsx12(
6552
+ LoaderCircle,
6553
+ {
6554
+ "aria-hidden": "true",
6555
+ className: "size-5 animate-spin text-[color-mix(in_srgb,var(--text-primary)_45%,transparent)]",
6556
+ strokeWidth: 2
6557
+ }
6558
+ )
6559
+ }
6537
6560
  ) : /* @__PURE__ */ jsx12("div", { className: "size-full animate-pulse bg-[color-mix(in_srgb,var(--text-primary)_8%,transparent)]" })
6538
6561
  },
6539
6562
  image.id
@@ -6545,6 +6568,7 @@ function AgentUserImageGrid({
6545
6568
  function useAgentMessageImageSources(images) {
6546
6569
  const runtime = getOptionalAgentActivityRuntime();
6547
6570
  const [sources, setSources] = useState5(() => /* @__PURE__ */ new Map());
6571
+ const [loadingIds, setLoadingIds] = useState5(() => /* @__PURE__ */ new Set());
6548
6572
  const missingImages = useMemo(
6549
6573
  () => images.filter(
6550
6574
  (image) => !imageDataUrl(image) && !sources.has(image.id) && image.workspaceId && image.agentSessionId && (image.attachmentId || image.path)
@@ -6571,6 +6595,14 @@ function useAgentMessageImageSources(images) {
6571
6595
  if (!readImage) {
6572
6596
  continue;
6573
6597
  }
6598
+ setLoadingIds((current) => {
6599
+ if (current.has(image.id)) {
6600
+ return current;
6601
+ }
6602
+ const next = new Set(current);
6603
+ next.add(image.id);
6604
+ return next;
6605
+ });
6574
6606
  void readImage.then((attachment) => {
6575
6607
  if (canceled) {
6576
6608
  return;
@@ -6587,13 +6619,25 @@ function useAgentMessageImageSources(images) {
6587
6619
  return next;
6588
6620
  });
6589
6621
  }).catch(() => {
6622
+ }).finally(() => {
6623
+ if (canceled) {
6624
+ return;
6625
+ }
6626
+ setLoadingIds((current) => {
6627
+ if (!current.has(image.id)) {
6628
+ return current;
6629
+ }
6630
+ const next = new Set(current);
6631
+ next.delete(image.id);
6632
+ return next;
6633
+ });
6590
6634
  });
6591
6635
  }
6592
6636
  return () => {
6593
6637
  canceled = true;
6594
6638
  };
6595
6639
  }, [missingImages, runtime]);
6596
- return sources;
6640
+ return { loadingIds, sources };
6597
6641
  }
6598
6642
  function imageDataUrl(image) {
6599
6643
  const data = image.data?.trim() ?? "";
@@ -6610,26 +6654,14 @@ function AgentSystemNoticeMessage({
6610
6654
  const notice = message.systemNotice;
6611
6655
  const detail = notice?.detail?.trim() ?? "";
6612
6656
  const isWarning = notice?.severity === "warning" || notice?.severity === "error";
6613
- const Icon = isWarning ? AlertTriangle : Info;
6614
6657
  return /* @__PURE__ */ jsx12(
6615
6658
  "section",
6616
6659
  {
6617
6660
  role: isWarning ? "status" : void 0,
6618
6661
  className: "box-border w-full min-w-0 rounded-[8px] border border-[color-mix(in_srgb,var(--state-warning)_14%,transparent)] bg-[color-mix(in_srgb,var(--background-fronted)_100%,var(--state-warning)_6%)] p-3 text-[13px] leading-5 text-[var(--text-primary)]",
6619
- children: /* @__PURE__ */ jsxs7("div", { className: "flex min-w-0 items-start gap-2", children: [
6620
- /* @__PURE__ */ jsx12(
6621
- Icon,
6622
- {
6623
- size: 15,
6624
- strokeWidth: 2.1,
6625
- "aria-hidden": "true",
6626
- className: "mt-0.5 shrink-0 text-[var(--state-warning)]"
6627
- }
6628
- ),
6629
- /* @__PURE__ */ jsxs7("div", { className: "min-w-0 flex-1", children: [
6630
- /* @__PURE__ */ jsx12("div", { className: "font-medium text-[var(--text-primary)]", children: systemNoticeTitle(message) }),
6631
- detail ? /* @__PURE__ */ jsx12(AgentMessageDetailsDisclosure, { detail, className: "mt-1" }) : null
6632
- ] })
6662
+ children: /* @__PURE__ */ jsxs7("div", { className: "min-w-0", children: [
6663
+ /* @__PURE__ */ jsx12("div", { className: "font-medium text-[var(--text-primary)]", children: systemNoticeTitle(message) }),
6664
+ detail ? /* @__PURE__ */ jsx12(AgentMessageDetailsDisclosure, { detail, className: "mt-1" }) : null
6633
6665
  ] })
6634
6666
  }
6635
6667
  );
@@ -6639,7 +6671,8 @@ function AgentPlanCardMessage({
6639
6671
  workspaceRoot,
6640
6672
  basePath,
6641
6673
  onLinkAction,
6642
- workspaceAppIcons
6674
+ workspaceAppIcons,
6675
+ previewMode = false
6643
6676
  }) {
6644
6677
  "use memo";
6645
6678
  return /* @__PURE__ */ jsx12(AgentPlanCard, { copyText: message.body, children: /* @__PURE__ */ jsx12(
@@ -6655,7 +6688,8 @@ function AgentPlanCardMessage({
6655
6688
  },
6656
6689
  workspaceAppIcons,
6657
6690
  deferLongContentRender: true,
6658
- enableImageZoom: true
6691
+ enableImageZoom: true,
6692
+ previewMode
6659
6693
  }
6660
6694
  ) });
6661
6695
  }
@@ -8076,8 +8110,7 @@ function getWebFetchRenderData(call, maxContentLength = 3e3) {
8076
8110
  contentText(call.output?.content),
8077
8111
  stringValue8(call.output?.output),
8078
8112
  stringValue8(call.output?.content),
8079
- stringValue8(call.output?.stdout),
8080
- nonEmpty(call.summary)
8113
+ stringValue8(call.output?.stdout)
8081
8114
  );
8082
8115
  return {
8083
8116
  url,
@@ -9368,7 +9401,11 @@ function lineClassName(line) {
9368
9401
  }
9369
9402
 
9370
9403
  // shared/agentConversation/components/tool-renderers/agentToolContentShared.tsx
9371
- import { useState as useState8 } from "react";
9404
+ import {
9405
+ createContext,
9406
+ useContext,
9407
+ useState as useState8
9408
+ } from "react";
9372
9409
  import { ChevronDown as ChevronDown5, ChevronRight as ChevronRight5 } from "lucide-react";
9373
9410
 
9374
9411
  // shared/agentConversation/components/tool-renderers/AgentReadContent.tsx
@@ -9456,6 +9493,14 @@ function languageForPath3(path) {
9456
9493
 
9457
9494
  // shared/agentConversation/components/tool-renderers/agentToolContentShared.tsx
9458
9495
  import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
9496
+ var AgentToolPreviewModeContext = createContext(false);
9497
+ function AgentToolPreviewModeProvider({
9498
+ children,
9499
+ previewMode
9500
+ }) {
9501
+ "use memo";
9502
+ return /* @__PURE__ */ jsx26(AgentToolPreviewModeContext.Provider, { value: previewMode, children });
9503
+ }
9459
9504
  function ToolSection({
9460
9505
  title,
9461
9506
  children
@@ -9472,9 +9517,12 @@ function ToolSection({
9472
9517
  function ToolMarkdownBlock({
9473
9518
  content,
9474
9519
  onLinkClick,
9475
- collapsible = false
9520
+ collapsible = false,
9521
+ previewMode
9476
9522
  }) {
9477
9523
  "use memo";
9524
+ const contextPreviewMode = useContext(AgentToolPreviewModeContext);
9525
+ const effectivePreviewMode = previewMode ?? contextPreviewMode;
9478
9526
  const normalized = content.trim();
9479
9527
  if (!normalized) {
9480
9528
  return null;
@@ -9486,6 +9534,7 @@ function ToolMarkdownBlock({
9486
9534
  onLinkClick,
9487
9535
  collapsible,
9488
9536
  enableImageZoom: true,
9537
+ previewMode: effectivePreviewMode,
9489
9538
  className: "workspace-agents-status-panel__detail-tool-markdown [&_ol]:text-[var(--text-secondary)] [&_ul]:text-[var(--text-secondary)]"
9490
9539
  }
9491
9540
  );
@@ -9496,9 +9545,13 @@ function AgentDefaultToolContent({
9496
9545
  }) {
9497
9546
  "use memo";
9498
9547
  const fallbackText = getToolFallbackText(call);
9499
- const inputText = fallbackText.input;
9500
- const outputText = fallbackText.output;
9501
- const errorText = fallbackText.error;
9548
+ const inputText = dedupeToolSectionContent(fallbackText.input);
9549
+ const outputText = dedupeToolSectionContent(fallbackText.output, inputText);
9550
+ const errorText = dedupeToolSectionContent(
9551
+ fallbackText.error,
9552
+ inputText,
9553
+ outputText
9554
+ );
9502
9555
  const detail = dedupeToolSummary(
9503
9556
  call.summary.trim(),
9504
9557
  inputText,
@@ -9733,16 +9786,20 @@ function rawPayloadJson(value) {
9733
9786
  }
9734
9787
  }
9735
9788
  function dedupeToolSummary(summary, ...otherValues) {
9736
- const normalizedSummary = summary.trim();
9737
- if (!normalizedSummary) {
9789
+ return dedupeToolSectionContent(summary, ...otherValues);
9790
+ }
9791
+ function dedupeToolSectionContent(content, ...previousValues) {
9792
+ const normalizedContent = content?.trim() ?? "";
9793
+ if (!normalizedContent) {
9738
9794
  return "";
9739
9795
  }
9740
- const duplicate = otherValues.some(
9741
- (value) => normalizeWhitespace(value) === normalizeWhitespace(normalizedSummary)
9796
+ const contentKey = normalizeToolSectionContent(normalizedContent);
9797
+ const duplicate = previousValues.some(
9798
+ (value) => normalizeToolSectionContent(value) === contentKey
9742
9799
  );
9743
- return duplicate ? "" : normalizedSummary;
9800
+ return duplicate ? "" : normalizedContent;
9744
9801
  }
9745
- function normalizeWhitespace(value) {
9802
+ function normalizeToolSectionContent(value) {
9746
9803
  return (value ?? "").trim().replace(/\s+/g, " ");
9747
9804
  }
9748
9805
 
@@ -10312,6 +10369,10 @@ function AgentMcpToolContent({
10312
10369
  "use memo";
10313
10370
  const payload = normalizeMcpPayload(call);
10314
10371
  const specialized = renderRegisteredMcp(payload);
10372
+ const visibleText = dedupeToolSectionContent(
10373
+ payload.text,
10374
+ payload.inputSummary
10375
+ );
10315
10376
  return /* @__PURE__ */ jsxs25("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10316
10377
  payload.server || payload.tool ? /* @__PURE__ */ jsx35(ToolSection, { title: translate("agentHost.agentTool.details.mcp"), children: /* @__PURE__ */ jsx35(
10317
10378
  ToolMarkdownBlock,
@@ -10330,10 +10391,10 @@ function AgentMcpToolContent({
10330
10391
  onLinkClick
10331
10392
  }
10332
10393
  ) }) : null,
10333
- specialized ? /* @__PURE__ */ jsx35(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: specialized }) : payload.text ? /* @__PURE__ */ jsx35(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: /* @__PURE__ */ jsx35(
10394
+ specialized ? /* @__PURE__ */ jsx35(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: specialized }) : visibleText ? /* @__PURE__ */ jsx35(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: /* @__PURE__ */ jsx35(
10334
10395
  ToolMarkdownBlock,
10335
10396
  {
10336
- content: payload.text,
10397
+ content: visibleText,
10337
10398
  onLinkClick,
10338
10399
  collapsible: true
10339
10400
  }
@@ -10387,7 +10448,11 @@ function AgentSearchContent({
10387
10448
 
10388
10449
  ${translate("agentHost.agentTool.details.scope")}: ${search.scope}`.trim() : search.query;
10389
10450
  const resultFiles = withStableOccurrenceKeys(search.files, "file");
10390
- const outputLines = withStableOccurrenceKeys(search.lines, "line");
10451
+ const visibleOutput = dedupeToolSectionContent(search.output, queryText);
10452
+ const outputLines = withStableOccurrenceKeys(
10453
+ visibleOutput.split("\n").filter(Boolean),
10454
+ "line"
10455
+ );
10391
10456
  return /* @__PURE__ */ jsxs26("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10392
10457
  queryText ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.query"), children: /* @__PURE__ */ jsx37(ToolMarkdownBlock, { content: queryText, onLinkClick }) }) : null,
10393
10458
  (search.mode === "files_with_matches" || search.mode === "list_files") && search.files.length > 0 ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.results"), children: /* @__PURE__ */ jsx37("div", { className: "workspace-agents-status-panel__detail-tool-result-list overflow-hidden rounded-[8px] border border-[var(--line-2)] bg-[var(--transparency-block)]", children: resultFiles.map(({ key, value: file, isFirst }) => /* @__PURE__ */ jsx37(
@@ -10398,7 +10463,7 @@ ${translate("agentHost.agentTool.details.scope")}: ${search.scope}`.trim() : sea
10398
10463
  },
10399
10464
  key
10400
10465
  )) }) }) : null,
10401
- search.mode === "content" && search.output ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: /* @__PURE__ */ jsx37("pre", { className: "max-h-[320px] overflow-auto rounded-[8px] border border-[var(--line-2)] bg-[var(--transparency-block)] px-3 py-2 text-[11px] leading-5 text-[var(--text-primary)]", children: outputLines.map(({ key, value: line }) => /* @__PURE__ */ jsx37(
10466
+ search.mode === "content" && visibleOutput ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: /* @__PURE__ */ jsx37("pre", { className: "max-h-[320px] overflow-auto rounded-[8px] border border-[var(--line-2)] bg-[var(--transparency-block)] px-3 py-2 text-[11px] leading-5 text-[var(--text-primary)]", children: outputLines.map(({ key, value: line }) => /* @__PURE__ */ jsx37(
10402
10467
  "div",
10403
10468
  {
10404
10469
  className: line.includes(":") ? "text-[var(--text-primary)]" : "text-[var(--text-tertiary)]",
@@ -10407,11 +10472,11 @@ ${translate("agentHost.agentTool.details.scope")}: ${search.scope}`.trim() : sea
10407
10472
  key
10408
10473
  )) }) }) : null,
10409
10474
  search.mode === "count" ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.results"), children: /* @__PURE__ */ jsx37("div", { className: "inline-flex rounded-full border border-[var(--line-2)] bg-[var(--transparency-block)] px-2.5 py-1 text-[11px] text-[var(--text-tertiary)]", children: search.output || "0" }) }) : null,
10410
- (search.mode === "files_with_matches" || search.mode === "list_files" || search.mode === "count") && search.files.length === 0 && !search.output && !search.error ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.results"), children: /* @__PURE__ */ jsx37("div", { className: "text-[11px] italic text-[var(--text-tertiary)]", children: translate("agentHost.agentTool.details.noMatches") }) }) : null,
10411
- search.mode === "unknown" && search.output ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: /* @__PURE__ */ jsx37(
10475
+ (search.mode === "files_with_matches" || search.mode === "list_files" || search.mode === "count") && search.files.length === 0 && !visibleOutput && !search.error ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.results"), children: /* @__PURE__ */ jsx37("div", { className: "text-[11px] italic text-[var(--text-tertiary)]", children: translate("agentHost.agentTool.details.noMatches") }) }) : null,
10476
+ search.mode === "unknown" && visibleOutput ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: /* @__PURE__ */ jsx37(
10412
10477
  ToolMarkdownBlock,
10413
10478
  {
10414
- content: search.output,
10479
+ content: visibleOutput,
10415
10480
  onLinkClick,
10416
10481
  collapsible: true
10417
10482
  }
@@ -10680,28 +10745,49 @@ function AgentWebFetchContent({
10680
10745
  }) {
10681
10746
  "use memo";
10682
10747
  const web = getWebFetchRenderData(call);
10683
- if (!web.url && !web.visibleContent) {
10748
+ const urlText = web.url && web.domain && web.domain !== web.url ? `${web.domain}
10749
+
10750
+ ${web.url}` : web.url;
10751
+ const visibleContent = dedupeToolSectionContent(
10752
+ web.visibleContent,
10753
+ web.url,
10754
+ web.domain,
10755
+ urlText
10756
+ );
10757
+ const fallbackText = getToolFallbackText(call);
10758
+ const errorText = dedupeToolSectionContent(
10759
+ fallbackText.error,
10760
+ urlText,
10761
+ visibleContent
10762
+ );
10763
+ if (!web.url && !visibleContent && !errorText) {
10684
10764
  return null;
10685
10765
  }
10686
10766
  return /* @__PURE__ */ jsxs32("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10687
10767
  web.url ? /* @__PURE__ */ jsx43(ToolSection, { title: translate("agentHost.agentTool.details.url"), children: /* @__PURE__ */ jsx43(
10688
10768
  ToolMarkdownBlock,
10689
10769
  {
10690
- content: web.domain && web.domain !== web.url ? `${web.domain}
10691
-
10692
- ${web.url}` : web.url,
10770
+ content: urlText ?? "",
10693
10771
  onLinkClick
10694
10772
  }
10695
10773
  ) }) : null,
10696
- web.visibleContent ? /* @__PURE__ */ jsx43(ToolSection, { title: translate("agentHost.agentTool.details.content"), children: /* @__PURE__ */ jsx43(
10774
+ visibleContent ? /* @__PURE__ */ jsx43(ToolSection, { title: translate("agentHost.agentTool.details.content"), children: /* @__PURE__ */ jsx43(
10697
10775
  ToolMarkdownBlock,
10698
10776
  {
10699
- content: web.visibleContent,
10777
+ content: visibleContent,
10700
10778
  onLinkClick,
10701
10779
  collapsible: true
10702
10780
  }
10703
10781
  ) }) : null,
10704
- web.isTruncated ? /* @__PURE__ */ jsx43("div", { className: "text-[10px] italic text-[var(--text-tertiary)]", children: translate("agentHost.agentTool.details.contentTruncated") }) : null
10782
+ web.isTruncated ? /* @__PURE__ */ jsx43("div", { className: "text-[10px] italic text-[var(--text-tertiary)]", children: translate("agentHost.agentTool.details.contentTruncated") }) : null,
10783
+ errorText ? /* @__PURE__ */ jsx43(ToolSection, { title: translate("agentHost.agentTool.details.error"), children: /* @__PURE__ */ jsx43(
10784
+ ToolMarkdownBlock,
10785
+ {
10786
+ content: errorText,
10787
+ onLinkClick,
10788
+ collapsible: true
10789
+ }
10790
+ ) }) : null
10705
10791
  ] });
10706
10792
  }
10707
10793
 
@@ -10717,24 +10803,21 @@ function AgentWebSearchContent({
10717
10803
  const queries = web.queries;
10718
10804
  const outputText = web.output;
10719
10805
  const links = normalizeLinks(call.output?.links, outputText);
10720
- const summary = extractSummary(outputText) ?? (call.summary.trim() || null);
10721
- const visibleSummary = summary ? summary.slice(0, MAX_SUMMARY_LENGTH) : null;
10806
+ const queryText = webSearchQueryText(web.query, queries);
10807
+ const summary = extractSummary(outputText);
10808
+ const visibleSummary = dedupeToolSectionContent(
10809
+ summary ? summary.slice(0, MAX_SUMMARY_LENGTH) : null,
10810
+ queryText,
10811
+ links.map((link) => `${link.domain} ${link.title}`).join("\n")
10812
+ );
10722
10813
  const hasRenderableContent = Boolean(
10723
- web.query || queries.length > 0 || links.length > 0 || visibleSummary || web.error
10814
+ queryText || links.length > 0 || visibleSummary || web.error
10724
10815
  );
10725
10816
  if (!hasRenderableContent) {
10726
10817
  return null;
10727
10818
  }
10728
10819
  return /* @__PURE__ */ jsxs33("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10729
- web.query ? /* @__PURE__ */ jsx44(ToolSection, { title: translate("agentHost.agentTool.details.query"), children: /* @__PURE__ */ jsx44(ToolMarkdownBlock, { content: web.query, onLinkClick }) }) : null,
10730
- queries.length > 0 ? /* @__PURE__ */ jsx44(ToolSection, { title: translate("agentHost.agentTool.details.results"), children: /* @__PURE__ */ jsx44("div", { className: "workspace-agents-status-panel__detail-tool-result-list overflow-hidden rounded-[8px] border border-[var(--line-2)] bg-[var(--transparency-block)]", children: queries.map((candidate, index) => /* @__PURE__ */ jsx44(
10731
- "div",
10732
- {
10733
- className: `px-3 py-2 font-[var(--tsh-font-mono)] text-[11px] text-[var(--text-primary)] ${index > 0 ? "border-t border-[var(--line-2)]" : ""}`,
10734
- children: candidate
10735
- },
10736
- `${candidate}:${queries.length}`
10737
- )) }) }) : null,
10820
+ queryText ? /* @__PURE__ */ jsx44(ToolSection, { title: translate("agentHost.agentTool.details.query"), children: /* @__PURE__ */ jsx44(ToolMarkdownBlock, { content: queryText, onLinkClick }) }) : null,
10738
10821
  links.length > 0 ? /* @__PURE__ */ jsx44(ToolSection, { title: translate("agentHost.agentTool.details.results"), children: /* @__PURE__ */ jsx44("div", { className: "workspace-agents-status-panel__detail-tool-result-list overflow-hidden rounded-[8px] border border-[var(--line-2)] bg-[var(--transparency-block)]", children: links.map((link, index) => /* @__PURE__ */ jsxs33(
10739
10822
  "a",
10740
10823
  {
@@ -10768,6 +10851,13 @@ function AgentWebSearchContent({
10768
10851
  ) }) : null
10769
10852
  ] });
10770
10853
  }
10854
+ function webSearchQueryText(query, queries) {
10855
+ const candidates = queries.length > 0 ? queries : query ? [query] : [];
10856
+ const deduped = [
10857
+ ...new Set(candidates.map((value) => value.trim()).filter(Boolean))
10858
+ ];
10859
+ return deduped.length > 0 ? deduped.join("\n") : null;
10860
+ }
10771
10861
  function normalizeLinks(value, output) {
10772
10862
  const explicitLinks = arrayValue8(value)?.map(optionRecord).filter(
10773
10863
  (candidate) => candidate !== null
@@ -10905,46 +10995,69 @@ function AgentWriteContent({
10905
10995
  import { jsx as jsx46 } from "react/jsx-runtime";
10906
10996
  function AgentExpandedToolContent({
10907
10997
  call,
10908
- onLinkClick
10998
+ onLinkClick,
10999
+ previewMode = false
10909
11000
  }) {
10910
11001
  "use memo";
11002
+ const props = { call, onLinkClick, previewMode };
11003
+ let content;
10911
11004
  switch (call.rendererKind) {
10912
11005
  case "approval":
10913
- return /* @__PURE__ */ jsx46(AgentApprovalContent, { call, onLinkClick });
11006
+ content = /* @__PURE__ */ jsx46(AgentApprovalContent, { ...props });
11007
+ break;
10914
11008
  case "plan-enter":
10915
11009
  case "plan-exit":
10916
- return /* @__PURE__ */ jsx46(AgentPlanModeContent, { call, onLinkClick });
11010
+ content = /* @__PURE__ */ jsx46(AgentPlanModeContent, { ...props });
11011
+ break;
10917
11012
  case "ask-user":
10918
- return /* @__PURE__ */ jsx46(AgentAskUserQuestionContent, { call, onLinkClick });
11013
+ content = /* @__PURE__ */ jsx46(AgentAskUserQuestionContent, { ...props });
11014
+ break;
10919
11015
  case "task":
10920
- return /* @__PURE__ */ jsx46(AgentTaskContent, { call, onLinkClick });
11016
+ content = /* @__PURE__ */ jsx46(AgentTaskContent, { ...props });
11017
+ break;
10921
11018
  case "read":
10922
- return /* @__PURE__ */ jsx46(AgentReadContent, { call, onLinkClick });
11019
+ content = /* @__PURE__ */ jsx46(AgentReadContent, { ...props });
11020
+ break;
10923
11021
  case "write":
10924
- return /* @__PURE__ */ jsx46(AgentWriteContent, { call, onLinkClick });
11022
+ content = /* @__PURE__ */ jsx46(AgentWriteContent, { ...props });
11023
+ break;
10925
11024
  case "edit":
10926
- return /* @__PURE__ */ jsx46(AgentEditContent, { call, onLinkClick });
11025
+ content = /* @__PURE__ */ jsx46(AgentEditContent, { ...props });
11026
+ break;
10927
11027
  case "bash":
10928
- return /* @__PURE__ */ jsx46(AgentBashContent, { call, onLinkClick });
11028
+ content = /* @__PURE__ */ jsx46(AgentBashContent, { ...props });
11029
+ break;
10929
11030
  case "search":
10930
- return /* @__PURE__ */ jsx46(AgentSearchContent, { call, onLinkClick });
11031
+ content = /* @__PURE__ */ jsx46(AgentSearchContent, { ...props });
11032
+ break;
10931
11033
  case "web-search":
10932
- return /* @__PURE__ */ jsx46(AgentWebSearchContent, { call, onLinkClick });
11034
+ content = /* @__PURE__ */ jsx46(AgentWebSearchContent, { ...props });
11035
+ break;
10933
11036
  case "web-fetch":
10934
- return /* @__PURE__ */ jsx46(AgentWebFetchContent, { call, onLinkClick });
11037
+ content = /* @__PURE__ */ jsx46(AgentWebFetchContent, { ...props });
11038
+ break;
10935
11039
  case "image-generation":
10936
- return /* @__PURE__ */ jsx46(AgentImageGenerationContent, { call, onLinkClick });
11040
+ content = /* @__PURE__ */ jsx46(AgentImageGenerationContent, { ...props });
11041
+ break;
10937
11042
  case "todo-write":
10938
- return /* @__PURE__ */ jsx46(AgentTodoWriteContent, { call, onLinkClick });
11043
+ content = /* @__PURE__ */ jsx46(AgentTodoWriteContent, { ...props });
11044
+ break;
10939
11045
  case "tool-search":
10940
- return /* @__PURE__ */ jsx46(AgentToolSearchContent, { call, onLinkClick });
11046
+ content = /* @__PURE__ */ jsx46(AgentToolSearchContent, { ...props });
11047
+ break;
10941
11048
  case "skill":
10942
- return /* @__PURE__ */ jsx46(AgentSkillContent, { call, onLinkClick });
11049
+ content = /* @__PURE__ */ jsx46(AgentSkillContent, { ...props });
11050
+ break;
10943
11051
  case "mcp":
10944
- return /* @__PURE__ */ jsx46(AgentMcpToolContent, { call, onLinkClick });
11052
+ content = /* @__PURE__ */ jsx46(AgentMcpToolContent, { ...props });
11053
+ break;
10945
11054
  default:
10946
- return /* @__PURE__ */ jsx46(AgentDefaultToolContent, { call, onLinkClick });
11055
+ content = /* @__PURE__ */ jsx46(AgentDefaultToolContent, { ...props });
11056
+ }
11057
+ if (!content) {
11058
+ return null;
10947
11059
  }
11060
+ return /* @__PURE__ */ jsx46(AgentToolPreviewModeProvider, { previewMode, children: content });
10948
11061
  }
10949
11062
 
10950
11063
  // shared/agentConversation/components/AgentAskUserQuestionCard.tsx
@@ -10952,6 +11065,7 @@ import { jsx as jsx47, jsxs as jsxs35 } from "react/jsx-runtime";
10952
11065
  function AgentAskUserQuestionCard({
10953
11066
  call,
10954
11067
  onLinkClick,
11068
+ previewMode = false,
10955
11069
  defaultExpanded,
10956
11070
  nonCollapsible
10957
11071
  }) {
@@ -10972,8 +11086,22 @@ function AgentAskUserQuestionCard({
10972
11086
  }
10973
11087
  ) : /* @__PURE__ */ jsx47("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx47(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
10974
11088
  !hasDetail && call.summary ? /* @__PURE__ */ jsx47("div", { className: "workspace-agents-status-panel__detail-tool-summary", children: call.summary }) : null,
10975
- hasDetail && pinned ? /* @__PURE__ */ jsx47(AgentExpandedToolContent, { call, onLinkClick }) : null,
10976
- hasDetail && !pinned ? /* @__PURE__ */ jsx47(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx47(AgentExpandedToolContent, { call, onLinkClick }) }) : null
11089
+ hasDetail && pinned ? /* @__PURE__ */ jsx47(
11090
+ AgentExpandedToolContent,
11091
+ {
11092
+ call,
11093
+ onLinkClick,
11094
+ previewMode
11095
+ }
11096
+ ) : null,
11097
+ hasDetail && !pinned ? /* @__PURE__ */ jsx47(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx47(
11098
+ AgentExpandedToolContent,
11099
+ {
11100
+ call,
11101
+ onLinkClick,
11102
+ previewMode
11103
+ }
11104
+ ) }) : null
10977
11105
  ] });
10978
11106
  }
10979
11107
 
@@ -10981,14 +11109,22 @@ function AgentAskUserQuestionCard({
10981
11109
  import { jsx as jsx48, jsxs as jsxs36 } from "react/jsx-runtime";
10982
11110
  function AgentEnterPlanModeCard({
10983
11111
  call,
10984
- onLinkClick
11112
+ onLinkClick,
11113
+ previewMode = false
10985
11114
  }) {
10986
11115
  "use memo";
10987
11116
  const hasDetail = hasAgentToolContent(call);
10988
11117
  return /* @__PURE__ */ jsxs36("div", { className: "workspace-agents-status-panel__detail-tool-row workspace-agents-status-panel__detail-tool-row--plan-enter", children: [
10989
11118
  /* @__PURE__ */ jsx48("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx48(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
10990
11119
  !hasDetail && call.summary ? /* @__PURE__ */ jsx48("div", { className: "workspace-agents-status-panel__detail-tool-summary", children: call.summary }) : null,
10991
- hasDetail ? /* @__PURE__ */ jsx48(AgentExpandedToolContent, { call, onLinkClick }) : null
11120
+ hasDetail ? /* @__PURE__ */ jsx48(
11121
+ AgentExpandedToolContent,
11122
+ {
11123
+ call,
11124
+ onLinkClick,
11125
+ previewMode
11126
+ }
11127
+ ) : null
10992
11128
  ] });
10993
11129
  }
10994
11130
 
@@ -10996,14 +11132,22 @@ function AgentEnterPlanModeCard({
10996
11132
  import { jsx as jsx49, jsxs as jsxs37 } from "react/jsx-runtime";
10997
11133
  function AgentExitPlanModeCard({
10998
11134
  call,
10999
- onLinkClick
11135
+ onLinkClick,
11136
+ previewMode = false
11000
11137
  }) {
11001
11138
  "use memo";
11002
11139
  const hasDetail = hasAgentToolContent(call);
11003
11140
  return /* @__PURE__ */ jsxs37("div", { className: "workspace-agents-status-panel__detail-tool-row workspace-agents-status-panel__detail-tool-row--plan-exit", children: [
11004
11141
  /* @__PURE__ */ jsx49("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx49(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
11005
11142
  !hasDetail && call.summary ? /* @__PURE__ */ jsx49("div", { className: "workspace-agents-status-panel__detail-tool-summary", children: call.summary }) : null,
11006
- hasDetail ? /* @__PURE__ */ jsx49(AgentExpandedToolContent, { call, onLinkClick }) : null
11143
+ hasDetail ? /* @__PURE__ */ jsx49(
11144
+ AgentExpandedToolContent,
11145
+ {
11146
+ call,
11147
+ onLinkClick,
11148
+ previewMode
11149
+ }
11150
+ ) : null
11007
11151
  ] });
11008
11152
  }
11009
11153
 
@@ -11013,6 +11157,7 @@ import { jsx as jsx50, jsxs as jsxs38 } from "react/jsx-runtime";
11013
11157
  function AgentTaskCallCard({
11014
11158
  call,
11015
11159
  onLinkClick,
11160
+ previewMode = false,
11016
11161
  defaultExpanded,
11017
11162
  nonCollapsible
11018
11163
  }) {
@@ -11035,8 +11180,22 @@ function AgentTaskCallCard({
11035
11180
  }
11036
11181
  ) : /* @__PURE__ */ jsx50("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx50(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
11037
11182
  !hasDetail && call.summary ? /* @__PURE__ */ jsx50("div", { className: "workspace-agents-status-panel__detail-tool-summary", children: call.summary }) : null,
11038
- hasDetail && pinned ? /* @__PURE__ */ jsx50(AgentExpandedToolContent, { call, onLinkClick }) : null,
11039
- hasDetail && !pinned ? /* @__PURE__ */ jsx50(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx50(AgentExpandedToolContent, { call, onLinkClick }) }) : null
11183
+ hasDetail && pinned ? /* @__PURE__ */ jsx50(
11184
+ AgentExpandedToolContent,
11185
+ {
11186
+ call,
11187
+ onLinkClick,
11188
+ previewMode
11189
+ }
11190
+ ) : null,
11191
+ hasDetail && !pinned ? /* @__PURE__ */ jsx50(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx50(
11192
+ AgentExpandedToolContent,
11193
+ {
11194
+ call,
11195
+ onLinkClick,
11196
+ previewMode
11197
+ }
11198
+ ) }) : null
11040
11199
  ] });
11041
11200
  }
11042
11201
  function taskCallAriaLabel(call) {
@@ -11053,6 +11212,7 @@ import { jsx as jsx51, jsxs as jsxs39 } from "react/jsx-runtime";
11053
11212
  function AgentToolCallCard({
11054
11213
  call,
11055
11214
  onLinkClick,
11215
+ previewMode = false,
11056
11216
  defaultExpanded = false,
11057
11217
  nonCollapsible = false,
11058
11218
  variantClassName
@@ -11081,8 +11241,22 @@ function AgentToolCallCard({
11081
11241
  children: /* @__PURE__ */ jsx51(AgentToolCallHeader, { call, expanded, hasDetail: true })
11082
11242
  }
11083
11243
  ) : /* @__PURE__ */ jsx51("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx51(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
11084
- hasDetail && nonCollapsible ? /* @__PURE__ */ jsx51(AgentExpandedToolContent, { call, onLinkClick }) : null,
11085
- hasDetail && !nonCollapsible ? /* @__PURE__ */ jsx51(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx51(AgentExpandedToolContent, { call, onLinkClick }) }) : null
11244
+ hasDetail && nonCollapsible ? /* @__PURE__ */ jsx51(
11245
+ AgentExpandedToolContent,
11246
+ {
11247
+ call,
11248
+ onLinkClick,
11249
+ previewMode
11250
+ }
11251
+ ) : null,
11252
+ hasDetail && !nonCollapsible ? /* @__PURE__ */ jsx51(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx51(
11253
+ AgentExpandedToolContent,
11254
+ {
11255
+ call,
11256
+ onLinkClick,
11257
+ previewMode
11258
+ }
11259
+ ) }) : null
11086
11260
  ]
11087
11261
  }
11088
11262
  );
@@ -11102,6 +11276,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11102
11276
  label,
11103
11277
  thinkingLabel,
11104
11278
  onLinkClick,
11279
+ previewMode = false,
11105
11280
  expanded,
11106
11281
  expansionKey,
11107
11282
  onExpandedChange,
@@ -11126,6 +11301,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11126
11301
  return renderToolCard(
11127
11302
  singleCall,
11128
11303
  onLinkClick,
11304
+ previewMode,
11129
11305
  showRawTimelineJson,
11130
11306
  rawTimelineJsonLabel
11131
11307
  );
@@ -11177,6 +11353,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11177
11353
  thinking: entry.thinking,
11178
11354
  label: thinkingLabel,
11179
11355
  onLinkClick,
11356
+ previewMode,
11180
11357
  showRawTimelineJson,
11181
11358
  rawTimelineJsonLabel
11182
11359
  }
@@ -11190,6 +11367,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11190
11367
  children: renderToolCard(
11191
11368
  entry.call,
11192
11369
  onLinkClick,
11370
+ previewMode,
11193
11371
  showRawTimelineJson,
11194
11372
  rawTimelineJsonLabel
11195
11373
  )
@@ -11236,8 +11414,8 @@ function renderToolCountLabel(label) {
11236
11414
  function formatInlineStatusLabel3(label) {
11237
11415
  return /^[\sA-Z]+[a-z]+$/.test(label) ? label.toLowerCase() : label;
11238
11416
  }
11239
- function renderToolCard(call, onLinkClick, showRawTimelineJson = false, rawTimelineJsonLabel = "") {
11240
- const props = { call, onLinkClick };
11417
+ function renderToolCard(call, onLinkClick, previewMode = false, showRawTimelineJson = false, rawTimelineJsonLabel = "") {
11418
+ const props = { call, onLinkClick, previewMode };
11241
11419
  let card;
11242
11420
  switch (call.rendererKind) {
11243
11421
  case "plan-enter":
@@ -11597,6 +11775,7 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11597
11775
  onAuthLogin,
11598
11776
  availableSkills,
11599
11777
  workspaceAppIcons,
11778
+ previewMode = false,
11600
11779
  showRawTimelineJson = false,
11601
11780
  toolGroupExpanded,
11602
11781
  toolGroupExpansionKey,
@@ -11629,6 +11808,7 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11629
11808
  onAuthLogin,
11630
11809
  availableSkills,
11631
11810
  workspaceAppIcons,
11811
+ previewMode,
11632
11812
  thinkingLabel: labels.thinkingLabel,
11633
11813
  showRawTimelineJson,
11634
11814
  rawTimelineJsonLabel: labels.rawTimelineJson
@@ -11642,6 +11822,7 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11642
11822
  label: labels.toolCallsLabel,
11643
11823
  thinkingLabel: labels.thinkingLabel,
11644
11824
  onLinkClick: handleLinkClick,
11825
+ previewMode,
11645
11826
  showRawTimelineJson,
11646
11827
  rawTimelineJsonLabel: labels.rawTimelineJson,
11647
11828
  expanded: row.grouped ? toolGroupExpanded : void 0,
@@ -11656,7 +11837,8 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11656
11837
  row,
11657
11838
  workspaceRoot,
11658
11839
  label: labels.turnSummary,
11659
- onLinkAction
11840
+ onLinkAction,
11841
+ previewMode
11660
11842
  }
11661
11843
  );
11662
11844
  case "processing":
@@ -11802,7 +11984,7 @@ function areAgentTranscriptViewPropsEqual(previous, next) {
11802
11984
  return transcriptConversationRenderInputEquals(
11803
11985
  previous.conversation,
11804
11986
  next.conversation
11805
- ) && previous.onLinkAction === next.onLinkAction && previous.onAuthLogin === next.onAuthLogin && previous.availableSkills === next.availableSkills && previous.workspaceAppIcons === next.workspaceAppIcons && previous.showRawTimelineJson === next.showRawTimelineJson && transcriptLabelsEqual(previous.labels, next.labels);
11987
+ ) && previous.onLinkAction === next.onLinkAction && previous.onAuthLogin === next.onAuthLogin && previous.availableSkills === next.availableSkills && previous.workspaceAppIcons === next.workspaceAppIcons && previous.previewMode === next.previewMode && previous.showRawTimelineJson === next.showRawTimelineJson && transcriptLabelsEqual(previous.labels, next.labels);
11806
11988
  }
11807
11989
  var AgentTranscriptView = memo3(function AgentTranscriptView2({
11808
11990
  conversation,
@@ -11810,6 +11992,7 @@ var AgentTranscriptView = memo3(function AgentTranscriptView2({
11810
11992
  onAuthLogin,
11811
11993
  availableSkills,
11812
11994
  workspaceAppIcons,
11995
+ previewMode = false,
11813
11996
  showRawTimelineJson = false,
11814
11997
  labels
11815
11998
  }) {
@@ -11901,6 +12084,7 @@ var AgentTranscriptView = memo3(function AgentTranscriptView2({
11901
12084
  onAuthLogin,
11902
12085
  availableSkills,
11903
12086
  workspaceAppIcons,
12087
+ previewMode,
11904
12088
  showRawTimelineJson,
11905
12089
  toolGroupExpanded: row.kind === "tool-group" ? expandedToolRows[rowKey] === true : void 0,
11906
12090
  toolGroupExpansionKey: row.kind === "tool-group" ? rowKey : void 0,
@@ -12026,6 +12210,7 @@ var AgentConversationFlow = memo4(function AgentConversationFlow2({
12026
12210
  onAuthLogin,
12027
12211
  availableSkills,
12028
12212
  workspaceAppIcons,
12213
+ previewMode = false,
12029
12214
  showRawTimelineJson = false,
12030
12215
  labels
12031
12216
  }) {
@@ -12044,6 +12229,7 @@ var AgentConversationFlow = memo4(function AgentConversationFlow2({
12044
12229
  onAuthLogin,
12045
12230
  availableSkills,
12046
12231
  workspaceAppIcons,
12232
+ previewMode,
12047
12233
  labels,
12048
12234
  showRawTimelineJson
12049
12235
  }
@@ -12080,7 +12266,6 @@ function useProjectedAgentConversation({
12080
12266
 
12081
12267
  export {
12082
12268
  Button,
12083
- buildCanonicalWorkspaceAgentDetailView,
12084
12269
  buildWorkspaceAgentSessionDetailViewModel,
12085
12270
  projectAgentConversationVM,
12086
12271
  reconcileProjectedAgentConversationVM,
@@ -12097,4 +12282,4 @@ export {
12097
12282
  AgentConversationFlow,
12098
12283
  useProjectedAgentConversation
12099
12284
  };
12100
- //# sourceMappingURL=chunk-4NGM7NFL.js.map
12285
+ //# sourceMappingURL=chunk-MQAGIHYM.js.map