@tutti-os/agent-gui 0.0.20 → 0.0.22

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.
Files changed (34) hide show
  1. package/dist/agent-conversation/index.d.ts +4 -2
  2. package/dist/agent-conversation/index.js +3 -3
  3. package/dist/agent-message-center/index.d.ts +3 -2
  4. package/dist/agent-message-center/index.js +176 -158
  5. package/dist/agent-message-center/index.js.map +1 -1
  6. package/dist/{agentConversationVM-D09Aw-Ei.d.ts → agentConversationVM-BVe64P2E.d.ts} +0 -4
  7. package/dist/app/renderer/agentactivity.css +40 -8
  8. package/dist/{chunk-IEBWFP7O.js → chunk-222YHU5Z.js} +1 -1
  9. package/dist/chunk-222YHU5Z.js.map +1 -0
  10. package/dist/{chunk-5H4ISRJQ.js → chunk-64FJGJ3F.js} +31 -17
  11. package/dist/chunk-64FJGJ3F.js.map +1 -0
  12. package/dist/{chunk-7THDJWRR.js → chunk-6TRWLMRE.js} +76 -66
  13. package/dist/chunk-6TRWLMRE.js.map +1 -0
  14. package/dist/{chunk-DIBNU26G.js → chunk-KRKC3XXB.js} +253 -125
  15. package/dist/chunk-KRKC3XXB.js.map +1 -0
  16. package/dist/{chunk-7IFIA3DC.js → chunk-UUGCUPYW.js} +2 -10
  17. package/dist/chunk-UUGCUPYW.js.map +1 -0
  18. package/dist/{chunk-XHJQNUH4.js → chunk-ZWYHKGQ7.js} +4 -6
  19. package/dist/chunk-ZWYHKGQ7.js.map +1 -0
  20. package/dist/context-mention-palette/index.js +2 -2
  21. package/dist/index.d.ts +1 -25
  22. package/dist/index.js +967 -467
  23. package/dist/index.js.map +1 -1
  24. package/dist/plan-decision-ops.d.ts +1 -1
  25. package/dist/workbench/contribution.d.ts +1 -1
  26. package/dist/workbench/contribution.js +1 -1
  27. package/dist/workbench/index.js +1 -1
  28. package/package.json +12 -12
  29. package/dist/chunk-5H4ISRJQ.js.map +0 -1
  30. package/dist/chunk-7IFIA3DC.js.map +0 -1
  31. package/dist/chunk-7THDJWRR.js.map +0 -1
  32. package/dist/chunk-DIBNU26G.js.map +0 -1
  33. package/dist/chunk-IEBWFP7O.js.map +0 -1
  34. package/dist/chunk-XHJQNUH4.js.map +0 -1
@@ -10,7 +10,7 @@ import {
10
10
  resolveWorkspaceFileLinkAction,
11
11
  resolveWorkspaceFilePathCandidate,
12
12
  resolveWorkspaceLinkAction
13
- } from "./chunk-7THDJWRR.js";
13
+ } from "./chunk-6TRWLMRE.js";
14
14
  import {
15
15
  attrsToMentionItem,
16
16
  createAgentFileMentionExtension,
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  getOptionalAgentActivityRuntime,
26
26
  useOptionalAgentHostApi
27
- } from "./chunk-IEBWFP7O.js";
27
+ } from "./chunk-222YHU5Z.js";
28
28
  import {
29
29
  workspaceAgentProviderLabel
30
30
  } from "./chunk-TYGL25EL.js";
@@ -4368,17 +4368,13 @@ function projectUserMessageContentParts(message, turnId, workspaceId) {
4368
4368
  body: "",
4369
4369
  contentKind: "image-grid",
4370
4370
  images: imageBlocks.map((image, index) => ({
4371
- id: image.assetId || image.path || image.uri || image.attachmentId || `${message.id}:image:0:${index}`,
4371
+ id: image.attachmentId || `${message.id}:image:0:${index}`,
4372
4372
  workspaceId: image.workspaceId,
4373
4373
  agentSessionId: image.agentSessionId,
4374
4374
  attachmentId: image.attachmentId,
4375
4375
  mimeType: image.mimeType,
4376
4376
  name: image.name,
4377
- data: image.data,
4378
- path: image.path,
4379
- uri: image.uri,
4380
- uploadStatus: image.uploadStatus,
4381
- assetId: image.assetId
4377
+ data: image.data
4382
4378
  })),
4383
4379
  occurredAtUnixMs: message.occurredAtUnixMs ?? null,
4384
4380
  sourceTimelineItems: message.sourceTimelineItems
@@ -4452,11 +4448,7 @@ function userPromptContentBlocks(message, fallbackWorkspaceId) {
4452
4448
  attachmentId: typeof block.attachmentId === "string" && block.attachmentId.trim() ? block.attachmentId.trim() : null,
4453
4449
  mimeType,
4454
4450
  name: typeof block.name === "string" && block.name.trim() ? block.name.trim() : null,
4455
- data: typeof block.data === "string" && block.data.trim() ? block.data.trim() : null,
4456
- path: typeof block.path === "string" && block.path.trim() ? block.path.trim() : null,
4457
- uri: typeof block.uri === "string" && block.uri.trim() ? block.uri.trim() : null,
4458
- uploadStatus: typeof block.uploadStatus === "string" && block.uploadStatus.trim() ? block.uploadStatus.trim() : null,
4459
- assetId: typeof block.assetId === "string" && block.assetId.trim() ? block.assetId.trim() : null
4451
+ data: typeof block.data === "string" && block.data.trim() ? block.data.trim() : null
4460
4452
  }
4461
4453
  ];
4462
4454
  });
@@ -4669,7 +4661,7 @@ import {
4669
4661
  useMemo,
4670
4662
  useState as useState5
4671
4663
  } from "react";
4672
- import { AlertTriangle, ChevronRight as ChevronRight3, Info } from "lucide-react";
4664
+ import { ChevronRight as ChevronRight3 } from "lucide-react";
4673
4665
  import { CheckIcon, CopyIcon } from "@tutti-os/ui-system/icons";
4674
4666
 
4675
4667
  // app/renderer/components/ui/button.tsx
@@ -6090,7 +6082,8 @@ import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
6090
6082
  function WorkspaceAgentSessionThinkingDisclosure({
6091
6083
  thinking,
6092
6084
  label,
6093
- onLinkClick
6085
+ onLinkClick,
6086
+ previewMode = false
6094
6087
  }) {
6095
6088
  "use memo";
6096
6089
  const [expanded, setExpanded] = useState3(false);
@@ -6159,7 +6152,8 @@ function WorkspaceAgentSessionThinkingDisclosure({
6159
6152
  content: thinking.body,
6160
6153
  onLinkClick,
6161
6154
  className: "text-[11px] text-[var(--text-secondary)] opacity-92 [&_p]:mb-1",
6162
- enableImageZoom: true
6155
+ enableImageZoom: true,
6156
+ previewMode
6163
6157
  }
6164
6158
  ) }) })
6165
6159
  ] });
@@ -6240,6 +6234,7 @@ function AgentThinkingDisclosure({
6240
6234
  thinking,
6241
6235
  label,
6242
6236
  onLinkClick,
6237
+ previewMode = false,
6243
6238
  showRawTimelineJson = false,
6244
6239
  rawTimelineJsonLabel = ""
6245
6240
  }) {
@@ -6250,7 +6245,8 @@ function AgentThinkingDisclosure({
6250
6245
  {
6251
6246
  thinking,
6252
6247
  label,
6253
- onLinkClick
6248
+ onLinkClick,
6249
+ previewMode
6254
6250
  }
6255
6251
  ),
6256
6252
  showRawTimelineJson && rawTimelineJsonLabel ? /* @__PURE__ */ jsx10(
@@ -6321,6 +6317,7 @@ function AgentMessageBlock({
6321
6317
  onAuthLogin,
6322
6318
  availableSkills,
6323
6319
  workspaceAppIcons,
6320
+ previewMode = false,
6324
6321
  showRawTimelineJson = false,
6325
6322
  rawTimelineJsonLabel = ""
6326
6323
  }) {
@@ -6369,6 +6366,7 @@ function AgentMessageBlock({
6369
6366
  thinking,
6370
6367
  label: thinkingLabel,
6371
6368
  onLinkClick: handleLinkClick,
6369
+ previewMode,
6372
6370
  showRawTimelineJson,
6373
6371
  rawTimelineJsonLabel
6374
6372
  },
@@ -6411,7 +6409,8 @@ function AgentMessageBlock({
6411
6409
  workspaceRoot,
6412
6410
  basePath,
6413
6411
  onLinkAction,
6414
- workspaceAppIcons
6412
+ workspaceAppIcons,
6413
+ previewMode
6415
6414
  }
6416
6415
  ) : /* @__PURE__ */ jsx12(
6417
6416
  AgentMessageMarkdown,
@@ -6427,6 +6426,7 @@ function AgentMessageBlock({
6427
6426
  workspaceAppIcons,
6428
6427
  deferLongContentRender: true,
6429
6428
  enableImageZoom: true,
6429
+ previewMode,
6430
6430
  streaming: message.statusKind === "working"
6431
6431
  }
6432
6432
  );
@@ -6553,34 +6553,21 @@ function useAgentMessageImageSources(images) {
6553
6553
  const [sources, setSources] = useState5(() => /* @__PURE__ */ new Map());
6554
6554
  const missingImages = useMemo(
6555
6555
  () => images.filter(
6556
- (image) => !imageDataUrl(image) && !sources.has(image.id) && image.workspaceId && image.agentSessionId && (image.attachmentId || image.path || image.uri)
6556
+ (image) => !imageDataUrl(image) && !sources.has(image.id) && image.workspaceId && image.agentSessionId && image.attachmentId
6557
6557
  ),
6558
6558
  [images, sources]
6559
6559
  );
6560
6560
  useEffect4(() => {
6561
- if (!runtime?.readSessionAttachment && !runtime?.readPromptAsset || missingImages.length === 0) {
6561
+ if (!runtime?.readSessionAttachment || missingImages.length === 0) {
6562
6562
  return;
6563
6563
  }
6564
6564
  let canceled = false;
6565
6565
  for (const image of missingImages) {
6566
- const readImage = image.attachmentId ? runtime.readSessionAttachment?.({
6566
+ void runtime.readSessionAttachment({
6567
6567
  workspaceId: image.workspaceId ?? "",
6568
6568
  agentSessionId: image.agentSessionId,
6569
6569
  attachmentId: image.attachmentId ?? ""
6570
- }) : runtime.readPromptAsset?.({
6571
- workspaceId: image.workspaceId ?? "",
6572
- agentSessionId: image.agentSessionId,
6573
- assetId: image.assetId,
6574
- mimeType: image.mimeType,
6575
- name: image.name,
6576
- path: image.path,
6577
- uri: image.uri,
6578
- uploadStatus: image.uploadStatus
6579
- });
6580
- if (!readImage) {
6581
- continue;
6582
- }
6583
- void readImage.then((attachment) => {
6570
+ }).then((attachment) => {
6584
6571
  if (canceled) {
6585
6572
  return;
6586
6573
  }
@@ -6619,26 +6606,14 @@ function AgentSystemNoticeMessage({
6619
6606
  const notice = message.systemNotice;
6620
6607
  const detail = notice?.detail?.trim() ?? "";
6621
6608
  const isWarning = notice?.severity === "warning" || notice?.severity === "error";
6622
- const Icon = isWarning ? AlertTriangle : Info;
6623
6609
  return /* @__PURE__ */ jsx12(
6624
6610
  "section",
6625
6611
  {
6626
6612
  role: isWarning ? "status" : void 0,
6627
6613
  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)]",
6628
- children: /* @__PURE__ */ jsxs7("div", { className: "flex min-w-0 items-start gap-2", children: [
6629
- /* @__PURE__ */ jsx12(
6630
- Icon,
6631
- {
6632
- size: 15,
6633
- strokeWidth: 2.1,
6634
- "aria-hidden": "true",
6635
- className: "mt-0.5 shrink-0 text-[var(--state-warning)]"
6636
- }
6637
- ),
6638
- /* @__PURE__ */ jsxs7("div", { className: "min-w-0 flex-1", children: [
6639
- /* @__PURE__ */ jsx12("div", { className: "font-medium text-[var(--text-primary)]", children: systemNoticeTitle(message) }),
6640
- detail ? /* @__PURE__ */ jsx12(AgentMessageDetailsDisclosure, { detail, className: "mt-1" }) : null
6641
- ] })
6614
+ children: /* @__PURE__ */ jsxs7("div", { className: "min-w-0", children: [
6615
+ /* @__PURE__ */ jsx12("div", { className: "font-medium text-[var(--text-primary)]", children: systemNoticeTitle(message) }),
6616
+ detail ? /* @__PURE__ */ jsx12(AgentMessageDetailsDisclosure, { detail, className: "mt-1" }) : null
6642
6617
  ] })
6643
6618
  }
6644
6619
  );
@@ -6648,7 +6623,8 @@ function AgentPlanCardMessage({
6648
6623
  workspaceRoot,
6649
6624
  basePath,
6650
6625
  onLinkAction,
6651
- workspaceAppIcons
6626
+ workspaceAppIcons,
6627
+ previewMode = false
6652
6628
  }) {
6653
6629
  "use memo";
6654
6630
  return /* @__PURE__ */ jsx12(AgentPlanCard, { copyText: message.body, children: /* @__PURE__ */ jsx12(
@@ -6664,7 +6640,8 @@ function AgentPlanCardMessage({
6664
6640
  },
6665
6641
  workspaceAppIcons,
6666
6642
  deferLongContentRender: true,
6667
- enableImageZoom: true
6643
+ enableImageZoom: true,
6644
+ previewMode
6668
6645
  }
6669
6646
  ) });
6670
6647
  }
@@ -8085,8 +8062,7 @@ function getWebFetchRenderData(call, maxContentLength = 3e3) {
8085
8062
  contentText(call.output?.content),
8086
8063
  stringValue8(call.output?.output),
8087
8064
  stringValue8(call.output?.content),
8088
- stringValue8(call.output?.stdout),
8089
- nonEmpty(call.summary)
8065
+ stringValue8(call.output?.stdout)
8090
8066
  );
8091
8067
  return {
8092
8068
  url,
@@ -9377,7 +9353,11 @@ function lineClassName(line) {
9377
9353
  }
9378
9354
 
9379
9355
  // shared/agentConversation/components/tool-renderers/agentToolContentShared.tsx
9380
- import { useState as useState8 } from "react";
9356
+ import {
9357
+ createContext,
9358
+ useContext,
9359
+ useState as useState8
9360
+ } from "react";
9381
9361
  import { ChevronDown as ChevronDown5, ChevronRight as ChevronRight5 } from "lucide-react";
9382
9362
 
9383
9363
  // shared/agentConversation/components/tool-renderers/AgentReadContent.tsx
@@ -9465,6 +9445,14 @@ function languageForPath3(path) {
9465
9445
 
9466
9446
  // shared/agentConversation/components/tool-renderers/agentToolContentShared.tsx
9467
9447
  import { jsx as jsx26, jsxs as jsxs18 } from "react/jsx-runtime";
9448
+ var AgentToolPreviewModeContext = createContext(false);
9449
+ function AgentToolPreviewModeProvider({
9450
+ children,
9451
+ previewMode
9452
+ }) {
9453
+ "use memo";
9454
+ return /* @__PURE__ */ jsx26(AgentToolPreviewModeContext.Provider, { value: previewMode, children });
9455
+ }
9468
9456
  function ToolSection({
9469
9457
  title,
9470
9458
  children
@@ -9481,9 +9469,12 @@ function ToolSection({
9481
9469
  function ToolMarkdownBlock({
9482
9470
  content,
9483
9471
  onLinkClick,
9484
- collapsible = false
9472
+ collapsible = false,
9473
+ previewMode
9485
9474
  }) {
9486
9475
  "use memo";
9476
+ const contextPreviewMode = useContext(AgentToolPreviewModeContext);
9477
+ const effectivePreviewMode = previewMode ?? contextPreviewMode;
9487
9478
  const normalized = content.trim();
9488
9479
  if (!normalized) {
9489
9480
  return null;
@@ -9495,6 +9486,7 @@ function ToolMarkdownBlock({
9495
9486
  onLinkClick,
9496
9487
  collapsible,
9497
9488
  enableImageZoom: true,
9489
+ previewMode: effectivePreviewMode,
9498
9490
  className: "workspace-agents-status-panel__detail-tool-markdown [&_ol]:text-[var(--text-secondary)] [&_ul]:text-[var(--text-secondary)]"
9499
9491
  }
9500
9492
  );
@@ -9505,9 +9497,13 @@ function AgentDefaultToolContent({
9505
9497
  }) {
9506
9498
  "use memo";
9507
9499
  const fallbackText = getToolFallbackText(call);
9508
- const inputText = fallbackText.input;
9509
- const outputText = fallbackText.output;
9510
- const errorText = fallbackText.error;
9500
+ const inputText = dedupeToolSectionContent(fallbackText.input);
9501
+ const outputText = dedupeToolSectionContent(fallbackText.output, inputText);
9502
+ const errorText = dedupeToolSectionContent(
9503
+ fallbackText.error,
9504
+ inputText,
9505
+ outputText
9506
+ );
9511
9507
  const detail = dedupeToolSummary(
9512
9508
  call.summary.trim(),
9513
9509
  inputText,
@@ -9742,16 +9738,20 @@ function rawPayloadJson(value) {
9742
9738
  }
9743
9739
  }
9744
9740
  function dedupeToolSummary(summary, ...otherValues) {
9745
- const normalizedSummary = summary.trim();
9746
- if (!normalizedSummary) {
9741
+ return dedupeToolSectionContent(summary, ...otherValues);
9742
+ }
9743
+ function dedupeToolSectionContent(content, ...previousValues) {
9744
+ const normalizedContent = content?.trim() ?? "";
9745
+ if (!normalizedContent) {
9747
9746
  return "";
9748
9747
  }
9749
- const duplicate = otherValues.some(
9750
- (value) => normalizeWhitespace(value) === normalizeWhitespace(normalizedSummary)
9748
+ const contentKey = normalizeToolSectionContent(normalizedContent);
9749
+ const duplicate = previousValues.some(
9750
+ (value) => normalizeToolSectionContent(value) === contentKey
9751
9751
  );
9752
- return duplicate ? "" : normalizedSummary;
9752
+ return duplicate ? "" : normalizedContent;
9753
9753
  }
9754
- function normalizeWhitespace(value) {
9754
+ function normalizeToolSectionContent(value) {
9755
9755
  return (value ?? "").trim().replace(/\s+/g, " ");
9756
9756
  }
9757
9757
 
@@ -10321,6 +10321,10 @@ function AgentMcpToolContent({
10321
10321
  "use memo";
10322
10322
  const payload = normalizeMcpPayload(call);
10323
10323
  const specialized = renderRegisteredMcp(payload);
10324
+ const visibleText = dedupeToolSectionContent(
10325
+ payload.text,
10326
+ payload.inputSummary
10327
+ );
10324
10328
  return /* @__PURE__ */ jsxs25("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10325
10329
  payload.server || payload.tool ? /* @__PURE__ */ jsx35(ToolSection, { title: translate("agentHost.agentTool.details.mcp"), children: /* @__PURE__ */ jsx35(
10326
10330
  ToolMarkdownBlock,
@@ -10339,10 +10343,10 @@ function AgentMcpToolContent({
10339
10343
  onLinkClick
10340
10344
  }
10341
10345
  ) }) : null,
10342
- 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(
10346
+ 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(
10343
10347
  ToolMarkdownBlock,
10344
10348
  {
10345
- content: payload.text,
10349
+ content: visibleText,
10346
10350
  onLinkClick,
10347
10351
  collapsible: true
10348
10352
  }
@@ -10396,7 +10400,11 @@ function AgentSearchContent({
10396
10400
 
10397
10401
  ${translate("agentHost.agentTool.details.scope")}: ${search.scope}`.trim() : search.query;
10398
10402
  const resultFiles = withStableOccurrenceKeys(search.files, "file");
10399
- const outputLines = withStableOccurrenceKeys(search.lines, "line");
10403
+ const visibleOutput = dedupeToolSectionContent(search.output, queryText);
10404
+ const outputLines = withStableOccurrenceKeys(
10405
+ visibleOutput.split("\n").filter(Boolean),
10406
+ "line"
10407
+ );
10400
10408
  return /* @__PURE__ */ jsxs26("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10401
10409
  queryText ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.query"), children: /* @__PURE__ */ jsx37(ToolMarkdownBlock, { content: queryText, onLinkClick }) }) : null,
10402
10410
  (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(
@@ -10407,7 +10415,7 @@ ${translate("agentHost.agentTool.details.scope")}: ${search.scope}`.trim() : sea
10407
10415
  },
10408
10416
  key
10409
10417
  )) }) }) : null,
10410
- 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(
10418
+ 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(
10411
10419
  "div",
10412
10420
  {
10413
10421
  className: line.includes(":") ? "text-[var(--text-primary)]" : "text-[var(--text-tertiary)]",
@@ -10416,11 +10424,11 @@ ${translate("agentHost.agentTool.details.scope")}: ${search.scope}`.trim() : sea
10416
10424
  key
10417
10425
  )) }) }) : null,
10418
10426
  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,
10419
- (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,
10420
- search.mode === "unknown" && search.output ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: /* @__PURE__ */ jsx37(
10427
+ (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,
10428
+ search.mode === "unknown" && visibleOutput ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.output"), children: /* @__PURE__ */ jsx37(
10421
10429
  ToolMarkdownBlock,
10422
10430
  {
10423
- content: search.output,
10431
+ content: visibleOutput,
10424
10432
  onLinkClick,
10425
10433
  collapsible: true
10426
10434
  }
@@ -10689,28 +10697,49 @@ function AgentWebFetchContent({
10689
10697
  }) {
10690
10698
  "use memo";
10691
10699
  const web = getWebFetchRenderData(call);
10692
- if (!web.url && !web.visibleContent) {
10700
+ const urlText = web.url && web.domain && web.domain !== web.url ? `${web.domain}
10701
+
10702
+ ${web.url}` : web.url;
10703
+ const visibleContent = dedupeToolSectionContent(
10704
+ web.visibleContent,
10705
+ web.url,
10706
+ web.domain,
10707
+ urlText
10708
+ );
10709
+ const fallbackText = getToolFallbackText(call);
10710
+ const errorText = dedupeToolSectionContent(
10711
+ fallbackText.error,
10712
+ urlText,
10713
+ visibleContent
10714
+ );
10715
+ if (!web.url && !visibleContent && !errorText) {
10693
10716
  return null;
10694
10717
  }
10695
10718
  return /* @__PURE__ */ jsxs32("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10696
10719
  web.url ? /* @__PURE__ */ jsx43(ToolSection, { title: translate("agentHost.agentTool.details.url"), children: /* @__PURE__ */ jsx43(
10697
10720
  ToolMarkdownBlock,
10698
10721
  {
10699
- content: web.domain && web.domain !== web.url ? `${web.domain}
10700
-
10701
- ${web.url}` : web.url,
10722
+ content: urlText ?? "",
10702
10723
  onLinkClick
10703
10724
  }
10704
10725
  ) }) : null,
10705
- web.visibleContent ? /* @__PURE__ */ jsx43(ToolSection, { title: translate("agentHost.agentTool.details.content"), children: /* @__PURE__ */ jsx43(
10726
+ visibleContent ? /* @__PURE__ */ jsx43(ToolSection, { title: translate("agentHost.agentTool.details.content"), children: /* @__PURE__ */ jsx43(
10706
10727
  ToolMarkdownBlock,
10707
10728
  {
10708
- content: web.visibleContent,
10729
+ content: visibleContent,
10709
10730
  onLinkClick,
10710
10731
  collapsible: true
10711
10732
  }
10712
10733
  ) }) : null,
10713
- web.isTruncated ? /* @__PURE__ */ jsx43("div", { className: "text-[10px] italic text-[var(--text-tertiary)]", children: translate("agentHost.agentTool.details.contentTruncated") }) : null
10734
+ web.isTruncated ? /* @__PURE__ */ jsx43("div", { className: "text-[10px] italic text-[var(--text-tertiary)]", children: translate("agentHost.agentTool.details.contentTruncated") }) : null,
10735
+ errorText ? /* @__PURE__ */ jsx43(ToolSection, { title: translate("agentHost.agentTool.details.error"), children: /* @__PURE__ */ jsx43(
10736
+ ToolMarkdownBlock,
10737
+ {
10738
+ content: errorText,
10739
+ onLinkClick,
10740
+ collapsible: true
10741
+ }
10742
+ ) }) : null
10714
10743
  ] });
10715
10744
  }
10716
10745
 
@@ -10726,24 +10755,21 @@ function AgentWebSearchContent({
10726
10755
  const queries = web.queries;
10727
10756
  const outputText = web.output;
10728
10757
  const links = normalizeLinks(call.output?.links, outputText);
10729
- const summary = extractSummary(outputText) ?? (call.summary.trim() || null);
10730
- const visibleSummary = summary ? summary.slice(0, MAX_SUMMARY_LENGTH) : null;
10758
+ const queryText = webSearchQueryText(web.query, queries);
10759
+ const summary = extractSummary(outputText);
10760
+ const visibleSummary = dedupeToolSectionContent(
10761
+ summary ? summary.slice(0, MAX_SUMMARY_LENGTH) : null,
10762
+ queryText,
10763
+ links.map((link) => `${link.domain} ${link.title}`).join("\n")
10764
+ );
10731
10765
  const hasRenderableContent = Boolean(
10732
- web.query || queries.length > 0 || links.length > 0 || visibleSummary || web.error
10766
+ queryText || links.length > 0 || visibleSummary || web.error
10733
10767
  );
10734
10768
  if (!hasRenderableContent) {
10735
10769
  return null;
10736
10770
  }
10737
10771
  return /* @__PURE__ */ jsxs33("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10738
- web.query ? /* @__PURE__ */ jsx44(ToolSection, { title: translate("agentHost.agentTool.details.query"), children: /* @__PURE__ */ jsx44(ToolMarkdownBlock, { content: web.query, onLinkClick }) }) : null,
10739
- 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(
10740
- "div",
10741
- {
10742
- className: `px-3 py-2 font-[var(--tsh-font-mono)] text-[11px] text-[var(--text-primary)] ${index > 0 ? "border-t border-[var(--line-2)]" : ""}`,
10743
- children: candidate
10744
- },
10745
- `${candidate}:${queries.length}`
10746
- )) }) }) : null,
10772
+ queryText ? /* @__PURE__ */ jsx44(ToolSection, { title: translate("agentHost.agentTool.details.query"), children: /* @__PURE__ */ jsx44(ToolMarkdownBlock, { content: queryText, onLinkClick }) }) : null,
10747
10773
  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(
10748
10774
  "a",
10749
10775
  {
@@ -10777,6 +10803,13 @@ function AgentWebSearchContent({
10777
10803
  ) }) : null
10778
10804
  ] });
10779
10805
  }
10806
+ function webSearchQueryText(query, queries) {
10807
+ const candidates = queries.length > 0 ? queries : query ? [query] : [];
10808
+ const deduped = [
10809
+ ...new Set(candidates.map((value) => value.trim()).filter(Boolean))
10810
+ ];
10811
+ return deduped.length > 0 ? deduped.join("\n") : null;
10812
+ }
10780
10813
  function normalizeLinks(value, output) {
10781
10814
  const explicitLinks = arrayValue8(value)?.map(optionRecord).filter(
10782
10815
  (candidate) => candidate !== null
@@ -10914,46 +10947,69 @@ function AgentWriteContent({
10914
10947
  import { jsx as jsx46 } from "react/jsx-runtime";
10915
10948
  function AgentExpandedToolContent({
10916
10949
  call,
10917
- onLinkClick
10950
+ onLinkClick,
10951
+ previewMode = false
10918
10952
  }) {
10919
10953
  "use memo";
10954
+ const props = { call, onLinkClick, previewMode };
10955
+ let content;
10920
10956
  switch (call.rendererKind) {
10921
10957
  case "approval":
10922
- return /* @__PURE__ */ jsx46(AgentApprovalContent, { call, onLinkClick });
10958
+ content = /* @__PURE__ */ jsx46(AgentApprovalContent, { ...props });
10959
+ break;
10923
10960
  case "plan-enter":
10924
10961
  case "plan-exit":
10925
- return /* @__PURE__ */ jsx46(AgentPlanModeContent, { call, onLinkClick });
10962
+ content = /* @__PURE__ */ jsx46(AgentPlanModeContent, { ...props });
10963
+ break;
10926
10964
  case "ask-user":
10927
- return /* @__PURE__ */ jsx46(AgentAskUserQuestionContent, { call, onLinkClick });
10965
+ content = /* @__PURE__ */ jsx46(AgentAskUserQuestionContent, { ...props });
10966
+ break;
10928
10967
  case "task":
10929
- return /* @__PURE__ */ jsx46(AgentTaskContent, { call, onLinkClick });
10968
+ content = /* @__PURE__ */ jsx46(AgentTaskContent, { ...props });
10969
+ break;
10930
10970
  case "read":
10931
- return /* @__PURE__ */ jsx46(AgentReadContent, { call, onLinkClick });
10971
+ content = /* @__PURE__ */ jsx46(AgentReadContent, { ...props });
10972
+ break;
10932
10973
  case "write":
10933
- return /* @__PURE__ */ jsx46(AgentWriteContent, { call, onLinkClick });
10974
+ content = /* @__PURE__ */ jsx46(AgentWriteContent, { ...props });
10975
+ break;
10934
10976
  case "edit":
10935
- return /* @__PURE__ */ jsx46(AgentEditContent, { call, onLinkClick });
10977
+ content = /* @__PURE__ */ jsx46(AgentEditContent, { ...props });
10978
+ break;
10936
10979
  case "bash":
10937
- return /* @__PURE__ */ jsx46(AgentBashContent, { call, onLinkClick });
10980
+ content = /* @__PURE__ */ jsx46(AgentBashContent, { ...props });
10981
+ break;
10938
10982
  case "search":
10939
- return /* @__PURE__ */ jsx46(AgentSearchContent, { call, onLinkClick });
10983
+ content = /* @__PURE__ */ jsx46(AgentSearchContent, { ...props });
10984
+ break;
10940
10985
  case "web-search":
10941
- return /* @__PURE__ */ jsx46(AgentWebSearchContent, { call, onLinkClick });
10986
+ content = /* @__PURE__ */ jsx46(AgentWebSearchContent, { ...props });
10987
+ break;
10942
10988
  case "web-fetch":
10943
- return /* @__PURE__ */ jsx46(AgentWebFetchContent, { call, onLinkClick });
10989
+ content = /* @__PURE__ */ jsx46(AgentWebFetchContent, { ...props });
10990
+ break;
10944
10991
  case "image-generation":
10945
- return /* @__PURE__ */ jsx46(AgentImageGenerationContent, { call, onLinkClick });
10992
+ content = /* @__PURE__ */ jsx46(AgentImageGenerationContent, { ...props });
10993
+ break;
10946
10994
  case "todo-write":
10947
- return /* @__PURE__ */ jsx46(AgentTodoWriteContent, { call, onLinkClick });
10995
+ content = /* @__PURE__ */ jsx46(AgentTodoWriteContent, { ...props });
10996
+ break;
10948
10997
  case "tool-search":
10949
- return /* @__PURE__ */ jsx46(AgentToolSearchContent, { call, onLinkClick });
10998
+ content = /* @__PURE__ */ jsx46(AgentToolSearchContent, { ...props });
10999
+ break;
10950
11000
  case "skill":
10951
- return /* @__PURE__ */ jsx46(AgentSkillContent, { call, onLinkClick });
11001
+ content = /* @__PURE__ */ jsx46(AgentSkillContent, { ...props });
11002
+ break;
10952
11003
  case "mcp":
10953
- return /* @__PURE__ */ jsx46(AgentMcpToolContent, { call, onLinkClick });
11004
+ content = /* @__PURE__ */ jsx46(AgentMcpToolContent, { ...props });
11005
+ break;
10954
11006
  default:
10955
- return /* @__PURE__ */ jsx46(AgentDefaultToolContent, { call, onLinkClick });
11007
+ content = /* @__PURE__ */ jsx46(AgentDefaultToolContent, { ...props });
10956
11008
  }
11009
+ if (!content) {
11010
+ return null;
11011
+ }
11012
+ return /* @__PURE__ */ jsx46(AgentToolPreviewModeProvider, { previewMode, children: content });
10957
11013
  }
10958
11014
 
10959
11015
  // shared/agentConversation/components/AgentAskUserQuestionCard.tsx
@@ -10961,6 +11017,7 @@ import { jsx as jsx47, jsxs as jsxs35 } from "react/jsx-runtime";
10961
11017
  function AgentAskUserQuestionCard({
10962
11018
  call,
10963
11019
  onLinkClick,
11020
+ previewMode = false,
10964
11021
  defaultExpanded,
10965
11022
  nonCollapsible
10966
11023
  }) {
@@ -10981,8 +11038,22 @@ function AgentAskUserQuestionCard({
10981
11038
  }
10982
11039
  ) : /* @__PURE__ */ jsx47("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx47(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
10983
11040
  !hasDetail && call.summary ? /* @__PURE__ */ jsx47("div", { className: "workspace-agents-status-panel__detail-tool-summary", children: call.summary }) : null,
10984
- hasDetail && pinned ? /* @__PURE__ */ jsx47(AgentExpandedToolContent, { call, onLinkClick }) : null,
10985
- hasDetail && !pinned ? /* @__PURE__ */ jsx47(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx47(AgentExpandedToolContent, { call, onLinkClick }) }) : null
11041
+ hasDetail && pinned ? /* @__PURE__ */ jsx47(
11042
+ AgentExpandedToolContent,
11043
+ {
11044
+ call,
11045
+ onLinkClick,
11046
+ previewMode
11047
+ }
11048
+ ) : null,
11049
+ hasDetail && !pinned ? /* @__PURE__ */ jsx47(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx47(
11050
+ AgentExpandedToolContent,
11051
+ {
11052
+ call,
11053
+ onLinkClick,
11054
+ previewMode
11055
+ }
11056
+ ) }) : null
10986
11057
  ] });
10987
11058
  }
10988
11059
 
@@ -10990,14 +11061,22 @@ function AgentAskUserQuestionCard({
10990
11061
  import { jsx as jsx48, jsxs as jsxs36 } from "react/jsx-runtime";
10991
11062
  function AgentEnterPlanModeCard({
10992
11063
  call,
10993
- onLinkClick
11064
+ onLinkClick,
11065
+ previewMode = false
10994
11066
  }) {
10995
11067
  "use memo";
10996
11068
  const hasDetail = hasAgentToolContent(call);
10997
11069
  return /* @__PURE__ */ jsxs36("div", { className: "workspace-agents-status-panel__detail-tool-row workspace-agents-status-panel__detail-tool-row--plan-enter", children: [
10998
11070
  /* @__PURE__ */ jsx48("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx48(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
10999
11071
  !hasDetail && call.summary ? /* @__PURE__ */ jsx48("div", { className: "workspace-agents-status-panel__detail-tool-summary", children: call.summary }) : null,
11000
- hasDetail ? /* @__PURE__ */ jsx48(AgentExpandedToolContent, { call, onLinkClick }) : null
11072
+ hasDetail ? /* @__PURE__ */ jsx48(
11073
+ AgentExpandedToolContent,
11074
+ {
11075
+ call,
11076
+ onLinkClick,
11077
+ previewMode
11078
+ }
11079
+ ) : null
11001
11080
  ] });
11002
11081
  }
11003
11082
 
@@ -11005,14 +11084,22 @@ function AgentEnterPlanModeCard({
11005
11084
  import { jsx as jsx49, jsxs as jsxs37 } from "react/jsx-runtime";
11006
11085
  function AgentExitPlanModeCard({
11007
11086
  call,
11008
- onLinkClick
11087
+ onLinkClick,
11088
+ previewMode = false
11009
11089
  }) {
11010
11090
  "use memo";
11011
11091
  const hasDetail = hasAgentToolContent(call);
11012
11092
  return /* @__PURE__ */ jsxs37("div", { className: "workspace-agents-status-panel__detail-tool-row workspace-agents-status-panel__detail-tool-row--plan-exit", children: [
11013
11093
  /* @__PURE__ */ jsx49("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx49(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
11014
11094
  !hasDetail && call.summary ? /* @__PURE__ */ jsx49("div", { className: "workspace-agents-status-panel__detail-tool-summary", children: call.summary }) : null,
11015
- hasDetail ? /* @__PURE__ */ jsx49(AgentExpandedToolContent, { call, onLinkClick }) : null
11095
+ hasDetail ? /* @__PURE__ */ jsx49(
11096
+ AgentExpandedToolContent,
11097
+ {
11098
+ call,
11099
+ onLinkClick,
11100
+ previewMode
11101
+ }
11102
+ ) : null
11016
11103
  ] });
11017
11104
  }
11018
11105
 
@@ -11022,6 +11109,7 @@ import { jsx as jsx50, jsxs as jsxs38 } from "react/jsx-runtime";
11022
11109
  function AgentTaskCallCard({
11023
11110
  call,
11024
11111
  onLinkClick,
11112
+ previewMode = false,
11025
11113
  defaultExpanded,
11026
11114
  nonCollapsible
11027
11115
  }) {
@@ -11044,8 +11132,22 @@ function AgentTaskCallCard({
11044
11132
  }
11045
11133
  ) : /* @__PURE__ */ jsx50("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx50(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
11046
11134
  !hasDetail && call.summary ? /* @__PURE__ */ jsx50("div", { className: "workspace-agents-status-panel__detail-tool-summary", children: call.summary }) : null,
11047
- hasDetail && pinned ? /* @__PURE__ */ jsx50(AgentExpandedToolContent, { call, onLinkClick }) : null,
11048
- hasDetail && !pinned ? /* @__PURE__ */ jsx50(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx50(AgentExpandedToolContent, { call, onLinkClick }) }) : null
11135
+ hasDetail && pinned ? /* @__PURE__ */ jsx50(
11136
+ AgentExpandedToolContent,
11137
+ {
11138
+ call,
11139
+ onLinkClick,
11140
+ previewMode
11141
+ }
11142
+ ) : null,
11143
+ hasDetail && !pinned ? /* @__PURE__ */ jsx50(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx50(
11144
+ AgentExpandedToolContent,
11145
+ {
11146
+ call,
11147
+ onLinkClick,
11148
+ previewMode
11149
+ }
11150
+ ) }) : null
11049
11151
  ] });
11050
11152
  }
11051
11153
  function taskCallAriaLabel(call) {
@@ -11062,6 +11164,7 @@ import { jsx as jsx51, jsxs as jsxs39 } from "react/jsx-runtime";
11062
11164
  function AgentToolCallCard({
11063
11165
  call,
11064
11166
  onLinkClick,
11167
+ previewMode = false,
11065
11168
  defaultExpanded = false,
11066
11169
  nonCollapsible = false,
11067
11170
  variantClassName
@@ -11090,8 +11193,22 @@ function AgentToolCallCard({
11090
11193
  children: /* @__PURE__ */ jsx51(AgentToolCallHeader, { call, expanded, hasDetail: true })
11091
11194
  }
11092
11195
  ) : /* @__PURE__ */ jsx51("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx51(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
11093
- hasDetail && nonCollapsible ? /* @__PURE__ */ jsx51(AgentExpandedToolContent, { call, onLinkClick }) : null,
11094
- hasDetail && !nonCollapsible ? /* @__PURE__ */ jsx51(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx51(AgentExpandedToolContent, { call, onLinkClick }) }) : null
11196
+ hasDetail && nonCollapsible ? /* @__PURE__ */ jsx51(
11197
+ AgentExpandedToolContent,
11198
+ {
11199
+ call,
11200
+ onLinkClick,
11201
+ previewMode
11202
+ }
11203
+ ) : null,
11204
+ hasDetail && !nonCollapsible ? /* @__PURE__ */ jsx51(CollapsibleReveal, { expanded, children: /* @__PURE__ */ jsx51(
11205
+ AgentExpandedToolContent,
11206
+ {
11207
+ call,
11208
+ onLinkClick,
11209
+ previewMode
11210
+ }
11211
+ ) }) : null
11095
11212
  ]
11096
11213
  }
11097
11214
  );
@@ -11111,6 +11228,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11111
11228
  label,
11112
11229
  thinkingLabel,
11113
11230
  onLinkClick,
11231
+ previewMode = false,
11114
11232
  expanded,
11115
11233
  expansionKey,
11116
11234
  onExpandedChange,
@@ -11135,6 +11253,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11135
11253
  return renderToolCard(
11136
11254
  singleCall,
11137
11255
  onLinkClick,
11256
+ previewMode,
11138
11257
  showRawTimelineJson,
11139
11258
  rawTimelineJsonLabel
11140
11259
  );
@@ -11186,6 +11305,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11186
11305
  thinking: entry.thinking,
11187
11306
  label: thinkingLabel,
11188
11307
  onLinkClick,
11308
+ previewMode,
11189
11309
  showRawTimelineJson,
11190
11310
  rawTimelineJsonLabel
11191
11311
  }
@@ -11199,6 +11319,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11199
11319
  children: renderToolCard(
11200
11320
  entry.call,
11201
11321
  onLinkClick,
11322
+ previewMode,
11202
11323
  showRawTimelineJson,
11203
11324
  rawTimelineJsonLabel
11204
11325
  )
@@ -11245,8 +11366,8 @@ function renderToolCountLabel(label) {
11245
11366
  function formatInlineStatusLabel3(label) {
11246
11367
  return /^[\sA-Z]+[a-z]+$/.test(label) ? label.toLowerCase() : label;
11247
11368
  }
11248
- function renderToolCard(call, onLinkClick, showRawTimelineJson = false, rawTimelineJsonLabel = "") {
11249
- const props = { call, onLinkClick };
11369
+ function renderToolCard(call, onLinkClick, previewMode = false, showRawTimelineJson = false, rawTimelineJsonLabel = "") {
11370
+ const props = { call, onLinkClick, previewMode };
11250
11371
  let card;
11251
11372
  switch (call.rendererKind) {
11252
11373
  case "plan-enter":
@@ -11606,6 +11727,7 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11606
11727
  onAuthLogin,
11607
11728
  availableSkills,
11608
11729
  workspaceAppIcons,
11730
+ previewMode = false,
11609
11731
  showRawTimelineJson = false,
11610
11732
  toolGroupExpanded,
11611
11733
  toolGroupExpansionKey,
@@ -11638,6 +11760,7 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11638
11760
  onAuthLogin,
11639
11761
  availableSkills,
11640
11762
  workspaceAppIcons,
11763
+ previewMode,
11641
11764
  thinkingLabel: labels.thinkingLabel,
11642
11765
  showRawTimelineJson,
11643
11766
  rawTimelineJsonLabel: labels.rawTimelineJson
@@ -11651,6 +11774,7 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11651
11774
  label: labels.toolCallsLabel,
11652
11775
  thinkingLabel: labels.thinkingLabel,
11653
11776
  onLinkClick: handleLinkClick,
11777
+ previewMode,
11654
11778
  showRawTimelineJson,
11655
11779
  rawTimelineJsonLabel: labels.rawTimelineJson,
11656
11780
  expanded: row.grouped ? toolGroupExpanded : void 0,
@@ -11665,7 +11789,8 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11665
11789
  row,
11666
11790
  workspaceRoot,
11667
11791
  label: labels.turnSummary,
11668
- onLinkAction
11792
+ onLinkAction,
11793
+ previewMode
11669
11794
  }
11670
11795
  );
11671
11796
  case "processing":
@@ -11811,7 +11936,7 @@ function areAgentTranscriptViewPropsEqual(previous, next) {
11811
11936
  return transcriptConversationRenderInputEquals(
11812
11937
  previous.conversation,
11813
11938
  next.conversation
11814
- ) && 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);
11939
+ ) && 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);
11815
11940
  }
11816
11941
  var AgentTranscriptView = memo3(function AgentTranscriptView2({
11817
11942
  conversation,
@@ -11819,6 +11944,7 @@ var AgentTranscriptView = memo3(function AgentTranscriptView2({
11819
11944
  onAuthLogin,
11820
11945
  availableSkills,
11821
11946
  workspaceAppIcons,
11947
+ previewMode = false,
11822
11948
  showRawTimelineJson = false,
11823
11949
  labels
11824
11950
  }) {
@@ -11910,6 +12036,7 @@ var AgentTranscriptView = memo3(function AgentTranscriptView2({
11910
12036
  onAuthLogin,
11911
12037
  availableSkills,
11912
12038
  workspaceAppIcons,
12039
+ previewMode,
11913
12040
  showRawTimelineJson,
11914
12041
  toolGroupExpanded: row.kind === "tool-group" ? expandedToolRows[rowKey] === true : void 0,
11915
12042
  toolGroupExpansionKey: row.kind === "tool-group" ? rowKey : void 0,
@@ -12035,6 +12162,7 @@ var AgentConversationFlow = memo4(function AgentConversationFlow2({
12035
12162
  onAuthLogin,
12036
12163
  availableSkills,
12037
12164
  workspaceAppIcons,
12165
+ previewMode = false,
12038
12166
  showRawTimelineJson = false,
12039
12167
  labels
12040
12168
  }) {
@@ -12053,6 +12181,7 @@ var AgentConversationFlow = memo4(function AgentConversationFlow2({
12053
12181
  onAuthLogin,
12054
12182
  availableSkills,
12055
12183
  workspaceAppIcons,
12184
+ previewMode,
12056
12185
  labels,
12057
12186
  showRawTimelineJson
12058
12187
  }
@@ -12089,7 +12218,6 @@ function useProjectedAgentConversation({
12089
12218
 
12090
12219
  export {
12091
12220
  Button,
12092
- buildCanonicalWorkspaceAgentDetailView,
12093
12221
  buildWorkspaceAgentSessionDetailViewModel,
12094
12222
  projectAgentConversationVM,
12095
12223
  reconcileProjectedAgentConversationVM,
@@ -12106,4 +12234,4 @@ export {
12106
12234
  AgentConversationFlow,
12107
12235
  useProjectedAgentConversation
12108
12236
  };
12109
- //# sourceMappingURL=chunk-DIBNU26G.js.map
12237
+ //# sourceMappingURL=chunk-KRKC3XXB.js.map