@tutti-os/agent-gui 0.0.21 → 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-CGYkOuOP.d.ts → agentConversationVM-BVe64P2E.d.ts} +0 -1
  7. package/dist/app/renderer/agentactivity.css +40 -8
  8. package/dist/{chunk-CCI6EK5W.js → chunk-222YHU5Z.js} +1 -1
  9. package/dist/chunk-222YHU5Z.js.map +1 -0
  10. package/dist/{chunk-2BGUS7DE.js → chunk-64FJGJ3F.js} +31 -17
  11. package/dist/chunk-64FJGJ3F.js.map +1 -0
  12. package/dist/{chunk-BMGCH4JC.js → chunk-6TRWLMRE.js} +76 -66
  13. package/dist/chunk-6TRWLMRE.js.map +1 -0
  14. package/dist/{chunk-4NGM7NFL.js → chunk-KRKC3XXB.js} +253 -116
  15. package/dist/chunk-KRKC3XXB.js.map +1 -0
  16. package/dist/{chunk-WP7ZZ56R.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 -16
  22. package/dist/index.js +967 -455
  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-2BGUS7DE.js.map +0 -1
  30. package/dist/chunk-4NGM7NFL.js.map +0 -1
  31. package/dist/chunk-BMGCH4JC.js.map +0 -1
  32. package/dist/chunk-CCI6EK5W.js.map +0 -1
  33. package/dist/chunk-WP7ZZ56R.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-BMGCH4JC.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-CCI6EK5W.js";
27
+ } from "./chunk-222YHU5Z.js";
28
28
  import {
29
29
  workspaceAgentProviderLabel
30
30
  } from "./chunk-TYGL25EL.js";
@@ -4368,14 +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.path || 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
4377
+ data: image.data
4379
4378
  })),
4380
4379
  occurredAtUnixMs: message.occurredAtUnixMs ?? null,
4381
4380
  sourceTimelineItems: message.sourceTimelineItems
@@ -4449,8 +4448,7 @@ function userPromptContentBlocks(message, fallbackWorkspaceId) {
4449
4448
  attachmentId: typeof block.attachmentId === "string" && block.attachmentId.trim() ? block.attachmentId.trim() : null,
4450
4449
  mimeType,
4451
4450
  name: typeof block.name === "string" && block.name.trim() ? block.name.trim() : null,
4452
- data: typeof block.data === "string" && block.data.trim() ? block.data.trim() : null,
4453
- path: typeof block.path === "string" && block.path.trim() ? block.path.trim() : null
4451
+ data: typeof block.data === "string" && block.data.trim() ? block.data.trim() : null
4454
4452
  }
4455
4453
  ];
4456
4454
  });
@@ -4663,7 +4661,7 @@ import {
4663
4661
  useMemo,
4664
4662
  useState as useState5
4665
4663
  } from "react";
4666
- import { AlertTriangle, ChevronRight as ChevronRight3, Info } from "lucide-react";
4664
+ import { ChevronRight as ChevronRight3 } from "lucide-react";
4667
4665
  import { CheckIcon, CopyIcon } from "@tutti-os/ui-system/icons";
4668
4666
 
4669
4667
  // app/renderer/components/ui/button.tsx
@@ -6084,7 +6082,8 @@ import { jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
6084
6082
  function WorkspaceAgentSessionThinkingDisclosure({
6085
6083
  thinking,
6086
6084
  label,
6087
- onLinkClick
6085
+ onLinkClick,
6086
+ previewMode = false
6088
6087
  }) {
6089
6088
  "use memo";
6090
6089
  const [expanded, setExpanded] = useState3(false);
@@ -6153,7 +6152,8 @@ function WorkspaceAgentSessionThinkingDisclosure({
6153
6152
  content: thinking.body,
6154
6153
  onLinkClick,
6155
6154
  className: "text-[11px] text-[var(--text-secondary)] opacity-92 [&_p]:mb-1",
6156
- enableImageZoom: true
6155
+ enableImageZoom: true,
6156
+ previewMode
6157
6157
  }
6158
6158
  ) }) })
6159
6159
  ] });
@@ -6234,6 +6234,7 @@ function AgentThinkingDisclosure({
6234
6234
  thinking,
6235
6235
  label,
6236
6236
  onLinkClick,
6237
+ previewMode = false,
6237
6238
  showRawTimelineJson = false,
6238
6239
  rawTimelineJsonLabel = ""
6239
6240
  }) {
@@ -6244,7 +6245,8 @@ function AgentThinkingDisclosure({
6244
6245
  {
6245
6246
  thinking,
6246
6247
  label,
6247
- onLinkClick
6248
+ onLinkClick,
6249
+ previewMode
6248
6250
  }
6249
6251
  ),
6250
6252
  showRawTimelineJson && rawTimelineJsonLabel ? /* @__PURE__ */ jsx10(
@@ -6315,6 +6317,7 @@ function AgentMessageBlock({
6315
6317
  onAuthLogin,
6316
6318
  availableSkills,
6317
6319
  workspaceAppIcons,
6320
+ previewMode = false,
6318
6321
  showRawTimelineJson = false,
6319
6322
  rawTimelineJsonLabel = ""
6320
6323
  }) {
@@ -6363,6 +6366,7 @@ function AgentMessageBlock({
6363
6366
  thinking,
6364
6367
  label: thinkingLabel,
6365
6368
  onLinkClick: handleLinkClick,
6369
+ previewMode,
6366
6370
  showRawTimelineJson,
6367
6371
  rawTimelineJsonLabel
6368
6372
  },
@@ -6405,7 +6409,8 @@ function AgentMessageBlock({
6405
6409
  workspaceRoot,
6406
6410
  basePath,
6407
6411
  onLinkAction,
6408
- workspaceAppIcons
6412
+ workspaceAppIcons,
6413
+ previewMode
6409
6414
  }
6410
6415
  ) : /* @__PURE__ */ jsx12(
6411
6416
  AgentMessageMarkdown,
@@ -6421,6 +6426,7 @@ function AgentMessageBlock({
6421
6426
  workspaceAppIcons,
6422
6427
  deferLongContentRender: true,
6423
6428
  enableImageZoom: true,
6429
+ previewMode,
6424
6430
  streaming: message.statusKind === "working"
6425
6431
  }
6426
6432
  );
@@ -6547,31 +6553,21 @@ function useAgentMessageImageSources(images) {
6547
6553
  const [sources, setSources] = useState5(() => /* @__PURE__ */ new Map());
6548
6554
  const missingImages = useMemo(
6549
6555
  () => images.filter(
6550
- (image) => !imageDataUrl(image) && !sources.has(image.id) && image.workspaceId && image.agentSessionId && (image.attachmentId || image.path)
6556
+ (image) => !imageDataUrl(image) && !sources.has(image.id) && image.workspaceId && image.agentSessionId && image.attachmentId
6551
6557
  ),
6552
6558
  [images, sources]
6553
6559
  );
6554
6560
  useEffect4(() => {
6555
- if (!runtime?.readSessionAttachment && !runtime?.readPromptAsset || missingImages.length === 0) {
6561
+ if (!runtime?.readSessionAttachment || missingImages.length === 0) {
6556
6562
  return;
6557
6563
  }
6558
6564
  let canceled = false;
6559
6565
  for (const image of missingImages) {
6560
- const readImage = image.attachmentId ? runtime.readSessionAttachment?.({
6566
+ void runtime.readSessionAttachment({
6561
6567
  workspaceId: image.workspaceId ?? "",
6562
6568
  agentSessionId: image.agentSessionId,
6563
6569
  attachmentId: image.attachmentId ?? ""
6564
- }) : runtime.readPromptAsset?.({
6565
- workspaceId: image.workspaceId ?? "",
6566
- agentSessionId: image.agentSessionId,
6567
- mimeType: image.mimeType,
6568
- name: image.name,
6569
- path: image.path
6570
- });
6571
- if (!readImage) {
6572
- continue;
6573
- }
6574
- void readImage.then((attachment) => {
6570
+ }).then((attachment) => {
6575
6571
  if (canceled) {
6576
6572
  return;
6577
6573
  }
@@ -6610,26 +6606,14 @@ function AgentSystemNoticeMessage({
6610
6606
  const notice = message.systemNotice;
6611
6607
  const detail = notice?.detail?.trim() ?? "";
6612
6608
  const isWarning = notice?.severity === "warning" || notice?.severity === "error";
6613
- const Icon = isWarning ? AlertTriangle : Info;
6614
6609
  return /* @__PURE__ */ jsx12(
6615
6610
  "section",
6616
6611
  {
6617
6612
  role: isWarning ? "status" : void 0,
6618
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)]",
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
- ] })
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
6633
6617
  ] })
6634
6618
  }
6635
6619
  );
@@ -6639,7 +6623,8 @@ function AgentPlanCardMessage({
6639
6623
  workspaceRoot,
6640
6624
  basePath,
6641
6625
  onLinkAction,
6642
- workspaceAppIcons
6626
+ workspaceAppIcons,
6627
+ previewMode = false
6643
6628
  }) {
6644
6629
  "use memo";
6645
6630
  return /* @__PURE__ */ jsx12(AgentPlanCard, { copyText: message.body, children: /* @__PURE__ */ jsx12(
@@ -6655,7 +6640,8 @@ function AgentPlanCardMessage({
6655
6640
  },
6656
6641
  workspaceAppIcons,
6657
6642
  deferLongContentRender: true,
6658
- enableImageZoom: true
6643
+ enableImageZoom: true,
6644
+ previewMode
6659
6645
  }
6660
6646
  ) });
6661
6647
  }
@@ -8076,8 +8062,7 @@ function getWebFetchRenderData(call, maxContentLength = 3e3) {
8076
8062
  contentText(call.output?.content),
8077
8063
  stringValue8(call.output?.output),
8078
8064
  stringValue8(call.output?.content),
8079
- stringValue8(call.output?.stdout),
8080
- nonEmpty(call.summary)
8065
+ stringValue8(call.output?.stdout)
8081
8066
  );
8082
8067
  return {
8083
8068
  url,
@@ -9368,7 +9353,11 @@ function lineClassName(line) {
9368
9353
  }
9369
9354
 
9370
9355
  // shared/agentConversation/components/tool-renderers/agentToolContentShared.tsx
9371
- import { useState as useState8 } from "react";
9356
+ import {
9357
+ createContext,
9358
+ useContext,
9359
+ useState as useState8
9360
+ } from "react";
9372
9361
  import { ChevronDown as ChevronDown5, ChevronRight as ChevronRight5 } from "lucide-react";
9373
9362
 
9374
9363
  // shared/agentConversation/components/tool-renderers/AgentReadContent.tsx
@@ -9456,6 +9445,14 @@ function languageForPath3(path) {
9456
9445
 
9457
9446
  // shared/agentConversation/components/tool-renderers/agentToolContentShared.tsx
9458
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
+ }
9459
9456
  function ToolSection({
9460
9457
  title,
9461
9458
  children
@@ -9472,9 +9469,12 @@ function ToolSection({
9472
9469
  function ToolMarkdownBlock({
9473
9470
  content,
9474
9471
  onLinkClick,
9475
- collapsible = false
9472
+ collapsible = false,
9473
+ previewMode
9476
9474
  }) {
9477
9475
  "use memo";
9476
+ const contextPreviewMode = useContext(AgentToolPreviewModeContext);
9477
+ const effectivePreviewMode = previewMode ?? contextPreviewMode;
9478
9478
  const normalized = content.trim();
9479
9479
  if (!normalized) {
9480
9480
  return null;
@@ -9486,6 +9486,7 @@ function ToolMarkdownBlock({
9486
9486
  onLinkClick,
9487
9487
  collapsible,
9488
9488
  enableImageZoom: true,
9489
+ previewMode: effectivePreviewMode,
9489
9490
  className: "workspace-agents-status-panel__detail-tool-markdown [&_ol]:text-[var(--text-secondary)] [&_ul]:text-[var(--text-secondary)]"
9490
9491
  }
9491
9492
  );
@@ -9496,9 +9497,13 @@ function AgentDefaultToolContent({
9496
9497
  }) {
9497
9498
  "use memo";
9498
9499
  const fallbackText = getToolFallbackText(call);
9499
- const inputText = fallbackText.input;
9500
- const outputText = fallbackText.output;
9501
- 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
+ );
9502
9507
  const detail = dedupeToolSummary(
9503
9508
  call.summary.trim(),
9504
9509
  inputText,
@@ -9733,16 +9738,20 @@ function rawPayloadJson(value) {
9733
9738
  }
9734
9739
  }
9735
9740
  function dedupeToolSummary(summary, ...otherValues) {
9736
- const normalizedSummary = summary.trim();
9737
- if (!normalizedSummary) {
9741
+ return dedupeToolSectionContent(summary, ...otherValues);
9742
+ }
9743
+ function dedupeToolSectionContent(content, ...previousValues) {
9744
+ const normalizedContent = content?.trim() ?? "";
9745
+ if (!normalizedContent) {
9738
9746
  return "";
9739
9747
  }
9740
- const duplicate = otherValues.some(
9741
- (value) => normalizeWhitespace(value) === normalizeWhitespace(normalizedSummary)
9748
+ const contentKey = normalizeToolSectionContent(normalizedContent);
9749
+ const duplicate = previousValues.some(
9750
+ (value) => normalizeToolSectionContent(value) === contentKey
9742
9751
  );
9743
- return duplicate ? "" : normalizedSummary;
9752
+ return duplicate ? "" : normalizedContent;
9744
9753
  }
9745
- function normalizeWhitespace(value) {
9754
+ function normalizeToolSectionContent(value) {
9746
9755
  return (value ?? "").trim().replace(/\s+/g, " ");
9747
9756
  }
9748
9757
 
@@ -10312,6 +10321,10 @@ function AgentMcpToolContent({
10312
10321
  "use memo";
10313
10322
  const payload = normalizeMcpPayload(call);
10314
10323
  const specialized = renderRegisteredMcp(payload);
10324
+ const visibleText = dedupeToolSectionContent(
10325
+ payload.text,
10326
+ payload.inputSummary
10327
+ );
10315
10328
  return /* @__PURE__ */ jsxs25("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10316
10329
  payload.server || payload.tool ? /* @__PURE__ */ jsx35(ToolSection, { title: translate("agentHost.agentTool.details.mcp"), children: /* @__PURE__ */ jsx35(
10317
10330
  ToolMarkdownBlock,
@@ -10330,10 +10343,10 @@ function AgentMcpToolContent({
10330
10343
  onLinkClick
10331
10344
  }
10332
10345
  ) }) : 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(
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(
10334
10347
  ToolMarkdownBlock,
10335
10348
  {
10336
- content: payload.text,
10349
+ content: visibleText,
10337
10350
  onLinkClick,
10338
10351
  collapsible: true
10339
10352
  }
@@ -10387,7 +10400,11 @@ function AgentSearchContent({
10387
10400
 
10388
10401
  ${translate("agentHost.agentTool.details.scope")}: ${search.scope}`.trim() : search.query;
10389
10402
  const resultFiles = withStableOccurrenceKeys(search.files, "file");
10390
- 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
+ );
10391
10408
  return /* @__PURE__ */ jsxs26("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10392
10409
  queryText ? /* @__PURE__ */ jsx37(ToolSection, { title: translate("agentHost.agentTool.details.query"), children: /* @__PURE__ */ jsx37(ToolMarkdownBlock, { content: queryText, onLinkClick }) }) : null,
10393
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(
@@ -10398,7 +10415,7 @@ ${translate("agentHost.agentTool.details.scope")}: ${search.scope}`.trim() : sea
10398
10415
  },
10399
10416
  key
10400
10417
  )) }) }) : 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(
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(
10402
10419
  "div",
10403
10420
  {
10404
10421
  className: line.includes(":") ? "text-[var(--text-primary)]" : "text-[var(--text-tertiary)]",
@@ -10407,11 +10424,11 @@ ${translate("agentHost.agentTool.details.scope")}: ${search.scope}`.trim() : sea
10407
10424
  key
10408
10425
  )) }) }) : null,
10409
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,
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(
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(
10412
10429
  ToolMarkdownBlock,
10413
10430
  {
10414
- content: search.output,
10431
+ content: visibleOutput,
10415
10432
  onLinkClick,
10416
10433
  collapsible: true
10417
10434
  }
@@ -10680,28 +10697,49 @@ function AgentWebFetchContent({
10680
10697
  }) {
10681
10698
  "use memo";
10682
10699
  const web = getWebFetchRenderData(call);
10683
- 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) {
10684
10716
  return null;
10685
10717
  }
10686
10718
  return /* @__PURE__ */ jsxs32("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
10687
10719
  web.url ? /* @__PURE__ */ jsx43(ToolSection, { title: translate("agentHost.agentTool.details.url"), children: /* @__PURE__ */ jsx43(
10688
10720
  ToolMarkdownBlock,
10689
10721
  {
10690
- content: web.domain && web.domain !== web.url ? `${web.domain}
10691
-
10692
- ${web.url}` : web.url,
10722
+ content: urlText ?? "",
10693
10723
  onLinkClick
10694
10724
  }
10695
10725
  ) }) : null,
10696
- 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(
10697
10727
  ToolMarkdownBlock,
10698
10728
  {
10699
- content: web.visibleContent,
10729
+ content: visibleContent,
10700
10730
  onLinkClick,
10701
10731
  collapsible: true
10702
10732
  }
10703
10733
  ) }) : null,
10704
- 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
10705
10743
  ] });
10706
10744
  }
10707
10745
 
@@ -10717,24 +10755,21 @@ function AgentWebSearchContent({
10717
10755
  const queries = web.queries;
10718
10756
  const outputText = web.output;
10719
10757
  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;
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
+ );
10722
10765
  const hasRenderableContent = Boolean(
10723
- web.query || queries.length > 0 || links.length > 0 || visibleSummary || web.error
10766
+ queryText || links.length > 0 || visibleSummary || web.error
10724
10767
  );
10725
10768
  if (!hasRenderableContent) {
10726
10769
  return null;
10727
10770
  }
10728
10771
  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,
10772
+ queryText ? /* @__PURE__ */ jsx44(ToolSection, { title: translate("agentHost.agentTool.details.query"), children: /* @__PURE__ */ jsx44(ToolMarkdownBlock, { content: queryText, onLinkClick }) }) : null,
10738
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(
10739
10774
  "a",
10740
10775
  {
@@ -10768,6 +10803,13 @@ function AgentWebSearchContent({
10768
10803
  ) }) : null
10769
10804
  ] });
10770
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
+ }
10771
10813
  function normalizeLinks(value, output) {
10772
10814
  const explicitLinks = arrayValue8(value)?.map(optionRecord).filter(
10773
10815
  (candidate) => candidate !== null
@@ -10905,46 +10947,69 @@ function AgentWriteContent({
10905
10947
  import { jsx as jsx46 } from "react/jsx-runtime";
10906
10948
  function AgentExpandedToolContent({
10907
10949
  call,
10908
- onLinkClick
10950
+ onLinkClick,
10951
+ previewMode = false
10909
10952
  }) {
10910
10953
  "use memo";
10954
+ const props = { call, onLinkClick, previewMode };
10955
+ let content;
10911
10956
  switch (call.rendererKind) {
10912
10957
  case "approval":
10913
- return /* @__PURE__ */ jsx46(AgentApprovalContent, { call, onLinkClick });
10958
+ content = /* @__PURE__ */ jsx46(AgentApprovalContent, { ...props });
10959
+ break;
10914
10960
  case "plan-enter":
10915
10961
  case "plan-exit":
10916
- return /* @__PURE__ */ jsx46(AgentPlanModeContent, { call, onLinkClick });
10962
+ content = /* @__PURE__ */ jsx46(AgentPlanModeContent, { ...props });
10963
+ break;
10917
10964
  case "ask-user":
10918
- return /* @__PURE__ */ jsx46(AgentAskUserQuestionContent, { call, onLinkClick });
10965
+ content = /* @__PURE__ */ jsx46(AgentAskUserQuestionContent, { ...props });
10966
+ break;
10919
10967
  case "task":
10920
- return /* @__PURE__ */ jsx46(AgentTaskContent, { call, onLinkClick });
10968
+ content = /* @__PURE__ */ jsx46(AgentTaskContent, { ...props });
10969
+ break;
10921
10970
  case "read":
10922
- return /* @__PURE__ */ jsx46(AgentReadContent, { call, onLinkClick });
10971
+ content = /* @__PURE__ */ jsx46(AgentReadContent, { ...props });
10972
+ break;
10923
10973
  case "write":
10924
- return /* @__PURE__ */ jsx46(AgentWriteContent, { call, onLinkClick });
10974
+ content = /* @__PURE__ */ jsx46(AgentWriteContent, { ...props });
10975
+ break;
10925
10976
  case "edit":
10926
- return /* @__PURE__ */ jsx46(AgentEditContent, { call, onLinkClick });
10977
+ content = /* @__PURE__ */ jsx46(AgentEditContent, { ...props });
10978
+ break;
10927
10979
  case "bash":
10928
- return /* @__PURE__ */ jsx46(AgentBashContent, { call, onLinkClick });
10980
+ content = /* @__PURE__ */ jsx46(AgentBashContent, { ...props });
10981
+ break;
10929
10982
  case "search":
10930
- return /* @__PURE__ */ jsx46(AgentSearchContent, { call, onLinkClick });
10983
+ content = /* @__PURE__ */ jsx46(AgentSearchContent, { ...props });
10984
+ break;
10931
10985
  case "web-search":
10932
- return /* @__PURE__ */ jsx46(AgentWebSearchContent, { call, onLinkClick });
10986
+ content = /* @__PURE__ */ jsx46(AgentWebSearchContent, { ...props });
10987
+ break;
10933
10988
  case "web-fetch":
10934
- return /* @__PURE__ */ jsx46(AgentWebFetchContent, { call, onLinkClick });
10989
+ content = /* @__PURE__ */ jsx46(AgentWebFetchContent, { ...props });
10990
+ break;
10935
10991
  case "image-generation":
10936
- return /* @__PURE__ */ jsx46(AgentImageGenerationContent, { call, onLinkClick });
10992
+ content = /* @__PURE__ */ jsx46(AgentImageGenerationContent, { ...props });
10993
+ break;
10937
10994
  case "todo-write":
10938
- return /* @__PURE__ */ jsx46(AgentTodoWriteContent, { call, onLinkClick });
10995
+ content = /* @__PURE__ */ jsx46(AgentTodoWriteContent, { ...props });
10996
+ break;
10939
10997
  case "tool-search":
10940
- return /* @__PURE__ */ jsx46(AgentToolSearchContent, { call, onLinkClick });
10998
+ content = /* @__PURE__ */ jsx46(AgentToolSearchContent, { ...props });
10999
+ break;
10941
11000
  case "skill":
10942
- return /* @__PURE__ */ jsx46(AgentSkillContent, { call, onLinkClick });
11001
+ content = /* @__PURE__ */ jsx46(AgentSkillContent, { ...props });
11002
+ break;
10943
11003
  case "mcp":
10944
- return /* @__PURE__ */ jsx46(AgentMcpToolContent, { call, onLinkClick });
11004
+ content = /* @__PURE__ */ jsx46(AgentMcpToolContent, { ...props });
11005
+ break;
10945
11006
  default:
10946
- return /* @__PURE__ */ jsx46(AgentDefaultToolContent, { call, onLinkClick });
11007
+ content = /* @__PURE__ */ jsx46(AgentDefaultToolContent, { ...props });
10947
11008
  }
11009
+ if (!content) {
11010
+ return null;
11011
+ }
11012
+ return /* @__PURE__ */ jsx46(AgentToolPreviewModeProvider, { previewMode, children: content });
10948
11013
  }
10949
11014
 
10950
11015
  // shared/agentConversation/components/AgentAskUserQuestionCard.tsx
@@ -10952,6 +11017,7 @@ import { jsx as jsx47, jsxs as jsxs35 } from "react/jsx-runtime";
10952
11017
  function AgentAskUserQuestionCard({
10953
11018
  call,
10954
11019
  onLinkClick,
11020
+ previewMode = false,
10955
11021
  defaultExpanded,
10956
11022
  nonCollapsible
10957
11023
  }) {
@@ -10972,8 +11038,22 @@ function AgentAskUserQuestionCard({
10972
11038
  }
10973
11039
  ) : /* @__PURE__ */ jsx47("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx47(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
10974
11040
  !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
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
10977
11057
  ] });
10978
11058
  }
10979
11059
 
@@ -10981,14 +11061,22 @@ function AgentAskUserQuestionCard({
10981
11061
  import { jsx as jsx48, jsxs as jsxs36 } from "react/jsx-runtime";
10982
11062
  function AgentEnterPlanModeCard({
10983
11063
  call,
10984
- onLinkClick
11064
+ onLinkClick,
11065
+ previewMode = false
10985
11066
  }) {
10986
11067
  "use memo";
10987
11068
  const hasDetail = hasAgentToolContent(call);
10988
11069
  return /* @__PURE__ */ jsxs36("div", { className: "workspace-agents-status-panel__detail-tool-row workspace-agents-status-panel__detail-tool-row--plan-enter", children: [
10989
11070
  /* @__PURE__ */ jsx48("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx48(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
10990
11071
  !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
11072
+ hasDetail ? /* @__PURE__ */ jsx48(
11073
+ AgentExpandedToolContent,
11074
+ {
11075
+ call,
11076
+ onLinkClick,
11077
+ previewMode
11078
+ }
11079
+ ) : null
10992
11080
  ] });
10993
11081
  }
10994
11082
 
@@ -10996,14 +11084,22 @@ function AgentEnterPlanModeCard({
10996
11084
  import { jsx as jsx49, jsxs as jsxs37 } from "react/jsx-runtime";
10997
11085
  function AgentExitPlanModeCard({
10998
11086
  call,
10999
- onLinkClick
11087
+ onLinkClick,
11088
+ previewMode = false
11000
11089
  }) {
11001
11090
  "use memo";
11002
11091
  const hasDetail = hasAgentToolContent(call);
11003
11092
  return /* @__PURE__ */ jsxs37("div", { className: "workspace-agents-status-panel__detail-tool-row workspace-agents-status-panel__detail-tool-row--plan-exit", children: [
11004
11093
  /* @__PURE__ */ jsx49("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx49(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
11005
11094
  !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
11095
+ hasDetail ? /* @__PURE__ */ jsx49(
11096
+ AgentExpandedToolContent,
11097
+ {
11098
+ call,
11099
+ onLinkClick,
11100
+ previewMode
11101
+ }
11102
+ ) : null
11007
11103
  ] });
11008
11104
  }
11009
11105
 
@@ -11013,6 +11109,7 @@ import { jsx as jsx50, jsxs as jsxs38 } from "react/jsx-runtime";
11013
11109
  function AgentTaskCallCard({
11014
11110
  call,
11015
11111
  onLinkClick,
11112
+ previewMode = false,
11016
11113
  defaultExpanded,
11017
11114
  nonCollapsible
11018
11115
  }) {
@@ -11035,8 +11132,22 @@ function AgentTaskCallCard({
11035
11132
  }
11036
11133
  ) : /* @__PURE__ */ jsx50("div", { className: "workspace-agents-status-panel__detail-tool-row-head", children: /* @__PURE__ */ jsx50(AgentToolCallHeader, { call, expanded: false, hasDetail: false }) }),
11037
11134
  !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
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
11040
11151
  ] });
11041
11152
  }
11042
11153
  function taskCallAriaLabel(call) {
@@ -11053,6 +11164,7 @@ import { jsx as jsx51, jsxs as jsxs39 } from "react/jsx-runtime";
11053
11164
  function AgentToolCallCard({
11054
11165
  call,
11055
11166
  onLinkClick,
11167
+ previewMode = false,
11056
11168
  defaultExpanded = false,
11057
11169
  nonCollapsible = false,
11058
11170
  variantClassName
@@ -11081,8 +11193,22 @@ function AgentToolCallCard({
11081
11193
  children: /* @__PURE__ */ jsx51(AgentToolCallHeader, { call, expanded, hasDetail: true })
11082
11194
  }
11083
11195
  ) : /* @__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
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
11086
11212
  ]
11087
11213
  }
11088
11214
  );
@@ -11102,6 +11228,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11102
11228
  label,
11103
11229
  thinkingLabel,
11104
11230
  onLinkClick,
11231
+ previewMode = false,
11105
11232
  expanded,
11106
11233
  expansionKey,
11107
11234
  onExpandedChange,
@@ -11126,6 +11253,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11126
11253
  return renderToolCard(
11127
11254
  singleCall,
11128
11255
  onLinkClick,
11256
+ previewMode,
11129
11257
  showRawTimelineJson,
11130
11258
  rawTimelineJsonLabel
11131
11259
  );
@@ -11177,6 +11305,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11177
11305
  thinking: entry.thinking,
11178
11306
  label: thinkingLabel,
11179
11307
  onLinkClick,
11308
+ previewMode,
11180
11309
  showRawTimelineJson,
11181
11310
  rawTimelineJsonLabel
11182
11311
  }
@@ -11190,6 +11319,7 @@ var AgentToolGroupRow = memo(function AgentToolGroupRow2({
11190
11319
  children: renderToolCard(
11191
11320
  entry.call,
11192
11321
  onLinkClick,
11322
+ previewMode,
11193
11323
  showRawTimelineJson,
11194
11324
  rawTimelineJsonLabel
11195
11325
  )
@@ -11236,8 +11366,8 @@ function renderToolCountLabel(label) {
11236
11366
  function formatInlineStatusLabel3(label) {
11237
11367
  return /^[\sA-Z]+[a-z]+$/.test(label) ? label.toLowerCase() : label;
11238
11368
  }
11239
- function renderToolCard(call, onLinkClick, showRawTimelineJson = false, rawTimelineJsonLabel = "") {
11240
- const props = { call, onLinkClick };
11369
+ function renderToolCard(call, onLinkClick, previewMode = false, showRawTimelineJson = false, rawTimelineJsonLabel = "") {
11370
+ const props = { call, onLinkClick, previewMode };
11241
11371
  let card;
11242
11372
  switch (call.rendererKind) {
11243
11373
  case "plan-enter":
@@ -11597,6 +11727,7 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11597
11727
  onAuthLogin,
11598
11728
  availableSkills,
11599
11729
  workspaceAppIcons,
11730
+ previewMode = false,
11600
11731
  showRawTimelineJson = false,
11601
11732
  toolGroupExpanded,
11602
11733
  toolGroupExpansionKey,
@@ -11629,6 +11760,7 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11629
11760
  onAuthLogin,
11630
11761
  availableSkills,
11631
11762
  workspaceAppIcons,
11763
+ previewMode,
11632
11764
  thinkingLabel: labels.thinkingLabel,
11633
11765
  showRawTimelineJson,
11634
11766
  rawTimelineJsonLabel: labels.rawTimelineJson
@@ -11642,6 +11774,7 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11642
11774
  label: labels.toolCallsLabel,
11643
11775
  thinkingLabel: labels.thinkingLabel,
11644
11776
  onLinkClick: handleLinkClick,
11777
+ previewMode,
11645
11778
  showRawTimelineJson,
11646
11779
  rawTimelineJsonLabel: labels.rawTimelineJson,
11647
11780
  expanded: row.grouped ? toolGroupExpanded : void 0,
@@ -11656,7 +11789,8 @@ var AgentTranscriptItemView = memo2(function AgentTranscriptItemView2({
11656
11789
  row,
11657
11790
  workspaceRoot,
11658
11791
  label: labels.turnSummary,
11659
- onLinkAction
11792
+ onLinkAction,
11793
+ previewMode
11660
11794
  }
11661
11795
  );
11662
11796
  case "processing":
@@ -11802,7 +11936,7 @@ function areAgentTranscriptViewPropsEqual(previous, next) {
11802
11936
  return transcriptConversationRenderInputEquals(
11803
11937
  previous.conversation,
11804
11938
  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);
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);
11806
11940
  }
11807
11941
  var AgentTranscriptView = memo3(function AgentTranscriptView2({
11808
11942
  conversation,
@@ -11810,6 +11944,7 @@ var AgentTranscriptView = memo3(function AgentTranscriptView2({
11810
11944
  onAuthLogin,
11811
11945
  availableSkills,
11812
11946
  workspaceAppIcons,
11947
+ previewMode = false,
11813
11948
  showRawTimelineJson = false,
11814
11949
  labels
11815
11950
  }) {
@@ -11901,6 +12036,7 @@ var AgentTranscriptView = memo3(function AgentTranscriptView2({
11901
12036
  onAuthLogin,
11902
12037
  availableSkills,
11903
12038
  workspaceAppIcons,
12039
+ previewMode,
11904
12040
  showRawTimelineJson,
11905
12041
  toolGroupExpanded: row.kind === "tool-group" ? expandedToolRows[rowKey] === true : void 0,
11906
12042
  toolGroupExpansionKey: row.kind === "tool-group" ? rowKey : void 0,
@@ -12026,6 +12162,7 @@ var AgentConversationFlow = memo4(function AgentConversationFlow2({
12026
12162
  onAuthLogin,
12027
12163
  availableSkills,
12028
12164
  workspaceAppIcons,
12165
+ previewMode = false,
12029
12166
  showRawTimelineJson = false,
12030
12167
  labels
12031
12168
  }) {
@@ -12044,6 +12181,7 @@ var AgentConversationFlow = memo4(function AgentConversationFlow2({
12044
12181
  onAuthLogin,
12045
12182
  availableSkills,
12046
12183
  workspaceAppIcons,
12184
+ previewMode,
12047
12185
  labels,
12048
12186
  showRawTimelineJson
12049
12187
  }
@@ -12080,7 +12218,6 @@ function useProjectedAgentConversation({
12080
12218
 
12081
12219
  export {
12082
12220
  Button,
12083
- buildCanonicalWorkspaceAgentDetailView,
12084
12221
  buildWorkspaceAgentSessionDetailViewModel,
12085
12222
  projectAgentConversationVM,
12086
12223
  reconcileProjectedAgentConversationVM,
@@ -12097,4 +12234,4 @@ export {
12097
12234
  AgentConversationFlow,
12098
12235
  useProjectedAgentConversation
12099
12236
  };
12100
- //# sourceMappingURL=chunk-4NGM7NFL.js.map
12237
+ //# sourceMappingURL=chunk-KRKC3XXB.js.map