@tutti-os/agent-gui 0.0.14 → 0.0.16

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 (69) hide show
  1. package/dist/AgentMentionSearchController-DqssJ2-b.d.ts +218 -0
  2. package/dist/agent-conversation/index.d.ts +4 -2
  3. package/dist/agent-conversation/index.js +5 -4
  4. package/dist/agent-conversation/index.js.map +1 -1
  5. package/dist/agent-message-center/index.d.ts +3 -2
  6. package/dist/agent-message-center/index.js +547 -287
  7. package/dist/agent-message-center/index.js.map +1 -1
  8. package/dist/app/renderer/agentactivity.css +177 -17
  9. package/dist/{chunk-GZHQPPK2.js → chunk-267VY3EJ.js} +130 -43
  10. package/dist/chunk-267VY3EJ.js.map +1 -0
  11. package/dist/{chunk-KEKPOVQD.js → chunk-CABHBFYH.js} +2 -2
  12. package/dist/{chunk-HSXDSFKB.js → chunk-EKATXC3W.js} +2 -2
  13. package/dist/{chunk-RLPVFX7V.js → chunk-FJYH2ZPX.js} +196 -322
  14. package/dist/chunk-FJYH2ZPX.js.map +1 -0
  15. package/dist/{chunk-ASAZDEQE.js → chunk-GWR6WGZY.js} +72 -22
  16. package/dist/chunk-GWR6WGZY.js.map +1 -0
  17. package/dist/{chunk-YXSO4ITT.js → chunk-HIREVEZM.js} +1 -1
  18. package/dist/chunk-HIREVEZM.js.map +1 -0
  19. package/dist/{chunk-VDNMTW2E.js → chunk-IXIGWLQY.js} +1 -1
  20. package/dist/chunk-IXIGWLQY.js.map +1 -0
  21. package/dist/{chunk-ZO3SZCIX.js → chunk-JNGYJ7GM.js} +6 -3
  22. package/dist/chunk-JNGYJ7GM.js.map +1 -0
  23. package/dist/{chunk-MU2LODEV.js → chunk-KWPL3JYS.js} +131 -13
  24. package/dist/chunk-KWPL3JYS.js.map +1 -0
  25. package/dist/{chunk-WME2V26J.js → chunk-LW2S255I.js} +21 -36
  26. package/dist/chunk-LW2S255I.js.map +1 -0
  27. package/dist/{chunk-3YZX5EUC.js → chunk-LWRYYGPZ.js} +610 -480
  28. package/dist/chunk-LWRYYGPZ.js.map +1 -0
  29. package/dist/{chunk-GEXHKJK5.js → chunk-MUZMBEFO.js} +35 -17
  30. package/dist/chunk-MUZMBEFO.js.map +1 -0
  31. package/dist/chunk-O5TUTXHT.js +196 -0
  32. package/dist/chunk-O5TUTXHT.js.map +1 -0
  33. package/dist/{chunk-FSTZDNRM.js → chunk-SIDWRR5I.js} +281 -183
  34. package/dist/chunk-SIDWRR5I.js.map +1 -0
  35. package/dist/context-mention-palette/index.d.ts +11 -170
  36. package/dist/context-mention-palette/index.js +7 -6
  37. package/dist/context-mention-provider.d.ts +6 -1
  38. package/dist/context-mention-provider.js +1 -1
  39. package/dist/i18n/index.d.ts +277 -179
  40. package/dist/i18n/index.js +1 -1
  41. package/dist/index.d.ts +56 -3
  42. package/dist/index.js +2706 -1700
  43. package/dist/index.js.map +1 -1
  44. package/dist/workbench/contribution.d.ts +7 -1
  45. package/dist/workbench/contribution.js +6 -4
  46. package/dist/workbench/index.d.ts +5 -2
  47. package/dist/workbench/index.js +6 -4
  48. package/dist/workbench/launch.d.ts +2 -0
  49. package/dist/workbench/launch.js +2 -2
  50. package/dist/workbench/state.d.ts +3 -2
  51. package/dist/workbench/state.js +1 -1
  52. package/dist/workbench/types.d.ts +3 -0
  53. package/dist/workbench/types.js +1 -1
  54. package/dist/workspace-agent-generated-files.js +2 -2
  55. package/dist/{workspaceLinkActions-BlLN8Pvz.d.ts → workspaceLinkActions-Mjktl_Be.d.ts} +3 -0
  56. package/package.json +15 -13
  57. package/dist/chunk-3YZX5EUC.js.map +0 -1
  58. package/dist/chunk-ASAZDEQE.js.map +0 -1
  59. package/dist/chunk-FSTZDNRM.js.map +0 -1
  60. package/dist/chunk-GEXHKJK5.js.map +0 -1
  61. package/dist/chunk-GZHQPPK2.js.map +0 -1
  62. package/dist/chunk-MU2LODEV.js.map +0 -1
  63. package/dist/chunk-RLPVFX7V.js.map +0 -1
  64. package/dist/chunk-VDNMTW2E.js.map +0 -1
  65. package/dist/chunk-WME2V26J.js.map +0 -1
  66. package/dist/chunk-YXSO4ITT.js.map +0 -1
  67. package/dist/chunk-ZO3SZCIX.js.map +0 -1
  68. /package/dist/{chunk-KEKPOVQD.js.map → chunk-CABHBFYH.js.map} +0 -0
  69. /package/dist/{chunk-HSXDSFKB.js.map → chunk-EKATXC3W.js.map} +0 -0
@@ -1,191 +1,14 @@
1
+ import {
2
+ getOptionalAgentHostApi,
3
+ useOptionalAgentHostApi
4
+ } from "./chunk-O5TUTXHT.js";
1
5
  import {
2
6
  useTranslation
3
- } from "./chunk-FSTZDNRM.js";
7
+ } from "./chunk-SIDWRR5I.js";
4
8
  import {
5
9
  resolveAgentWorkspaceFileVisualKind
6
10
  } from "./chunk-PJP5BUU6.js";
7
11
 
8
- // agentActivityRuntime.tsx
9
- import {
10
- createContext,
11
- useContext,
12
- useSyncExternalStore
13
- } from "react";
14
- import { jsx } from "react/jsx-runtime";
15
- var AgentActivityRuntimeContext = createContext(
16
- null
17
- );
18
- var currentAgentActivityRuntime = null;
19
- function AgentActivityRuntimeProvider({
20
- children,
21
- runtime
22
- }) {
23
- currentAgentActivityRuntime = runtime ?? null;
24
- return /* @__PURE__ */ jsx(AgentActivityRuntimeContext.Provider, { value: runtime ?? null, children });
25
- }
26
- function useAgentActivityRuntime() {
27
- const runtime = useContext(AgentActivityRuntimeContext) ?? getTestAgentActivityRuntime();
28
- if (!runtime) {
29
- throw new Error(
30
- "AgentActivityRuntimeProvider is missing an AgentActivityRuntime instance."
31
- );
32
- }
33
- return runtime;
34
- }
35
- function useOptionalAgentActivityRuntime() {
36
- return useContext(AgentActivityRuntimeContext) ?? getTestAgentActivityRuntime();
37
- }
38
- function useAgentActivitySnapshot(workspaceId) {
39
- const runtime = useAgentActivityRuntime();
40
- const normalizedWorkspaceId = workspaceId.trim();
41
- return useSyncExternalStore(
42
- (listener) => runtime.subscribe(normalizedWorkspaceId, listener),
43
- () => runtime.getSnapshot(normalizedWorkspaceId),
44
- () => runtime.getSnapshot(normalizedWorkspaceId)
45
- );
46
- }
47
- function getAgentActivityRuntime() {
48
- const runtime = getExplicitWindowTestAgentActivityRuntime() ?? currentAgentActivityRuntime ?? getTestAgentActivityRuntime();
49
- if (!runtime) {
50
- throw new Error(
51
- "AgentActivityRuntimeProvider is missing an AgentActivityRuntime instance."
52
- );
53
- }
54
- return runtime;
55
- }
56
- function getOptionalAgentActivityRuntime() {
57
- return getExplicitWindowTestAgentActivityRuntime() ?? currentAgentActivityRuntime ?? getTestAgentActivityRuntime();
58
- }
59
- function resetAgentActivityRuntimeForTests() {
60
- if (process.env.NODE_ENV === "test") {
61
- currentAgentActivityRuntime = null;
62
- }
63
- }
64
- function setAgentActivityRuntimeForTests(runtime) {
65
- if (process.env.NODE_ENV === "test") {
66
- currentAgentActivityRuntime = runtime;
67
- }
68
- }
69
- function getTestAgentActivityRuntime() {
70
- if (process.env.NODE_ENV !== "test") {
71
- return null;
72
- }
73
- if (typeof window === "undefined") {
74
- return null;
75
- }
76
- const explicitRuntime = getExplicitWindowTestAgentActivityRuntime();
77
- if (explicitRuntime) {
78
- return explicitRuntime;
79
- }
80
- if (currentAgentActivityRuntime) {
81
- return currentAgentActivityRuntime;
82
- }
83
- const testRuntime = window.agentActivityRuntime;
84
- return testRuntime ?? null;
85
- }
86
- function getExplicitWindowTestAgentActivityRuntime() {
87
- if (process.env.NODE_ENV !== "test" || typeof window === "undefined") {
88
- return null;
89
- }
90
- const testDescriptor = Object.getOwnPropertyDescriptor(
91
- window,
92
- "agentActivityRuntime"
93
- );
94
- if (!testDescriptor || !("value" in testDescriptor)) {
95
- return null;
96
- }
97
- return testDescriptor.value ?? null;
98
- }
99
-
100
- // agentActivityHost.tsx
101
- import {
102
- createContext as createContext2,
103
- useContext as useContext2,
104
- useMemo
105
- } from "react";
106
-
107
- // host/agentHostApi.ts
108
- function toAgentHostRuntimeApi(hostApi) {
109
- return {
110
- account: hostApi.account,
111
- agentGuiBatch: hostApi.agentGuiBatch ?? {},
112
- clipboard: hostApi.clipboard,
113
- debug: hostApi.debug,
114
- filesystem: hostApi.filesystem,
115
- meta: hostApi.meta,
116
- onHostEvent: hostApi.onHostEvent,
117
- runtime: hostApi.runtime,
118
- userProjects: hostApi.userProjects,
119
- workspace: hostApi.workspace,
120
- workspaceAgentProbes: hostApi.workspaceAgentProbes
121
- };
122
- }
123
-
124
- // agentActivityHost.tsx
125
- import { jsx as jsx2 } from "react/jsx-runtime";
126
- var AgentActivityHostContext = createContext2(
127
- null
128
- );
129
- var currentAgentHostApi = null;
130
- function AgentActivityHostProvider({
131
- agentActivityRuntime,
132
- agentHostApi,
133
- children
134
- }) {
135
- const resolvedAgentHostApi = useMemo(
136
- () => agentHostApi ? toAgentHostRuntimeApi(agentHostApi) : null,
137
- [agentHostApi]
138
- );
139
- currentAgentHostApi = resolvedAgentHostApi;
140
- return /* @__PURE__ */ jsx2(AgentActivityRuntimeProvider, { runtime: agentActivityRuntime, children: /* @__PURE__ */ jsx2(AgentActivityHostContext.Provider, { value: resolvedAgentHostApi, children }) });
141
- }
142
- function useAgentHostApi() {
143
- const agentHostApi = useContext2(AgentActivityHostContext) ?? getTestAgentHostApi();
144
- if (!agentHostApi) {
145
- throw new Error(
146
- "AgentActivityHostProvider is missing an agentHostApi instance."
147
- );
148
- }
149
- return agentHostApi;
150
- }
151
- function useOptionalAgentHostApi() {
152
- return useContext2(AgentActivityHostContext) ?? getTestAgentHostApi();
153
- }
154
- function getOptionalAgentHostApi() {
155
- return getExplicitWindowTestAgentHostApi() ?? currentAgentHostApi ?? getTestAgentHostApi();
156
- }
157
- function getTestAgentHostApi() {
158
- if (process.env.NODE_ENV !== "test") {
159
- return null;
160
- }
161
- if (typeof window === "undefined") {
162
- return null;
163
- }
164
- const explicitAgentHostApi = getExplicitWindowTestAgentHostApi();
165
- if (explicitAgentHostApi) {
166
- return explicitAgentHostApi;
167
- }
168
- if (currentAgentHostApi) {
169
- return currentAgentHostApi;
170
- }
171
- const testAgentHostApi = window.agentHostApi;
172
- return testAgentHostApi ? toAgentHostRuntimeApi(testAgentHostApi) : null;
173
- }
174
- function getExplicitWindowTestAgentHostApi() {
175
- if (process.env.NODE_ENV !== "test" || typeof window === "undefined") {
176
- return null;
177
- }
178
- const testDescriptor = Object.getOwnPropertyDescriptor(
179
- window,
180
- "agentHostApi"
181
- );
182
- if (!testDescriptor || !("value" in testDescriptor)) {
183
- return null;
184
- }
185
- const testAgentHostApi = testDescriptor.value;
186
- return testAgentHostApi ? toAgentHostRuntimeApi(testAgentHostApi) : null;
187
- }
188
-
189
12
  // shared/agentMcpToolTarget.ts
190
13
  function extractAgentMcpToolTarget({
191
14
  input: rawInput,
@@ -362,13 +185,13 @@ function arrayValue(value) {
362
185
 
363
186
  // shared/AgentMessageMarkdown.tsx
364
187
  import {
365
- createContext as createContext3,
188
+ createContext,
366
189
  startTransition as startTransition2,
367
190
  useCallback,
368
191
  useEffect as useEffect2,
369
- useContext as useContext3,
192
+ useContext,
370
193
  memo,
371
- useMemo as useMemo2,
194
+ useMemo,
372
195
  useState as useState2
373
196
  } from "react";
374
197
 
@@ -386,7 +209,7 @@ function cn(...inputs) {
386
209
  }
387
210
 
388
211
  // app/renderer/components/ZoomableImage.tsx
389
- import { Fragment, jsx as jsx3, jsxs } from "react/jsx-runtime";
212
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
390
213
  function ZoomableImage({
391
214
  className,
392
215
  wrapElement = "div",
@@ -405,7 +228,7 @@ function ZoomableImage({
405
228
  )
406
229
  })
407
230
  ] });
408
- return /* @__PURE__ */ jsx3(
231
+ return /* @__PURE__ */ jsx(
409
232
  Zoom,
410
233
  {
411
234
  a11yNameButtonZoom: t("common.expandImage"),
@@ -414,7 +237,7 @@ function ZoomableImage({
414
237
  wrapElement,
415
238
  zoomMargin: 24,
416
239
  ZoomContent: renderZoomContent,
417
- children: /* @__PURE__ */ jsx3(
240
+ children: /* @__PURE__ */ jsx(
418
241
  "img",
419
242
  {
420
243
  ...props,
@@ -436,6 +259,13 @@ import {
436
259
  resolveWorkspaceImageMimeType,
437
260
  workspaceFileName as basenameWorkspacePath
438
261
  } from "@tutti-os/workspace-file-manager/services";
262
+ import {
263
+ Tooltip,
264
+ TooltipContent,
265
+ TooltipProvider,
266
+ TooltipTrigger,
267
+ useTextOverflow
268
+ } from "@tutti-os/ui-system/components";
439
269
 
440
270
  // shared/utils/websiteUrl.ts
441
271
  var ALLOWED_WEBSITE_PROTOCOLS = /* @__PURE__ */ new Set(["http:", "https:"]);
@@ -482,11 +312,22 @@ function resolveWorkspaceFilePathCandidate({
482
312
  basePath
483
313
  }) {
484
314
  const rawPath = decodeWorkspaceLinkPath(path.trim());
485
- const root = normalizeWorkspaceFilePath(workspaceRoot?.trim() ?? "");
486
- if (!rawPath || !root || isUrlLikeWorkspaceFilePath(rawPath)) {
315
+ if (!rawPath || isUrlLikeWorkspaceFilePath(rawPath)) {
487
316
  return null;
488
317
  }
489
318
  const normalizedPath = normalizeWorkspaceFilePath(rawPath);
319
+ if (isAbsoluteLocalPath(normalizedPath) && (isDirectAgentGeneratedImagePath(normalizedPath) || isDirectWorkspaceAppDataPath(normalizedPath))) {
320
+ const directoryPath = dirname(normalizedPath);
321
+ return {
322
+ path: normalizedPath,
323
+ directoryPath,
324
+ workspaceRoot: normalizeWorkspaceFilePath(workspaceRoot?.trim() ?? "") || directoryPath
325
+ };
326
+ }
327
+ const root = normalizeWorkspaceFilePath(workspaceRoot?.trim() ?? "");
328
+ if (!root) {
329
+ return null;
330
+ }
490
331
  const base = normalizeWorkspaceFilePath(basePath?.trim() || root);
491
332
  const resolvedPath = isAbsoluteLocalPath(normalizedPath) ? normalizedPath : normalizeWorkspaceFilePath(`${base}/${normalizedPath}`);
492
333
  if (!isInsideOrEqual(resolvedPath, root) && !isDirectAgentGeneratedImagePath(resolvedPath)) {
@@ -582,10 +423,16 @@ function resolveWorkspaceMentionLinkAction({
582
423
  };
583
424
  }
584
425
  if (url.hostname === "workspace-app") {
426
+ const messageId = url.searchParams.get("messageId")?.trim() || null;
427
+ const summaryTaskId = url.searchParams.get("summaryTaskId")?.trim() || null;
428
+ const conversationId = url.searchParams.get("conversationId")?.trim() || null;
585
429
  return {
586
430
  type: "open-workspace-app",
587
431
  workspaceId,
588
432
  appId: targetId,
433
+ ...messageId ? { messageId } : {},
434
+ ...summaryTaskId ? { summaryTaskId } : {},
435
+ ...conversationId ? { conversationId } : {},
589
436
  source
590
437
  };
591
438
  }
@@ -675,19 +522,35 @@ function isDirectAgentGeneratedImagePath(path) {
675
522
  if (!isAbsoluteLocalPath(path)) {
676
523
  return false;
677
524
  }
678
- const segments = path.split("/").filter(Boolean);
679
- const stateRootIndex = segments.findIndex(
680
- (segment) => segment === ".tutti" || segment === ".tutti-dev"
681
- );
682
- if (stateRootIndex < 0) {
525
+ const statePath = getTuttiStatePathSegments(path);
526
+ if (!statePath) {
683
527
  return false;
684
528
  }
685
- const statePath = segments.slice(stateRootIndex);
686
529
  if (statePath[1] !== "agent" || statePath[2] !== "runs" || !statePath.includes("generated_images")) {
687
530
  return false;
688
531
  }
689
532
  return /\.(?:png|jpe?g|gif|webp|bmp)$/i.test(path);
690
533
  }
534
+ function isDirectWorkspaceAppDataPath(path) {
535
+ if (!isAbsoluteLocalPath(path)) {
536
+ return false;
537
+ }
538
+ const statePath = getTuttiStatePathSegments(path);
539
+ if (!statePath) {
540
+ return false;
541
+ }
542
+ return statePath[1] === "apps" && statePath[2] === "workspaces" && statePath.length > 5;
543
+ }
544
+ function getTuttiStatePathSegments(path) {
545
+ const segments = path.split("/").filter(Boolean);
546
+ const stateRootIndex = segments.findIndex(
547
+ (segment) => segment === ".tutti" || segment === ".tutti-dev"
548
+ );
549
+ if (stateRootIndex < 0) {
550
+ return null;
551
+ }
552
+ return segments.slice(stateRootIndex);
553
+ }
691
554
 
692
555
  // shared/streamingMarkdownTailStabilizer.ts
693
556
  var DEFAULT_MAX_TAIL_CHARS = 4096;
@@ -993,7 +856,7 @@ function clearStreamingVisibleTextTimer(timerRef) {
993
856
  }
994
857
 
995
858
  // shared/AgentMessageMarkdown.tsx
996
- import { Fragment as Fragment2, jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
859
+ import { Fragment as Fragment2, jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
997
860
  var COLLAPSED_LINE_LIMIT = 8;
998
861
  var APPROX_CHARS_PER_LINE = 34;
999
862
  var DEFERRED_LONG_MARKDOWN_CHAR_THRESHOLD = 4096;
@@ -1016,7 +879,7 @@ var MARKDOWN_SANITIZE_SCHEMA = {
1016
879
  }
1017
880
  };
1018
881
  var EMPTY_WORKSPACE_APP_ICONS = [];
1019
- var MarkdownLinkContext = createContext3(false);
882
+ var MarkdownLinkContext = createContext(false);
1020
883
  function AgentMessageMarkdown({
1021
884
  content,
1022
885
  onLinkClick,
@@ -1040,7 +903,7 @@ function AgentMessageMarkdown({
1040
903
  maxCharsPerSecond: STREAMING_MARKDOWN_MAX_CHARS_PER_SECOND,
1041
904
  trailingFlushChars: STREAMING_MARKDOWN_TAIL_FLUSH_CHARS
1042
905
  });
1043
- const stabilizedContent = useMemo2(
906
+ const stabilizedContent = useMemo(
1044
907
  () => stabilizeStreamingMarkdownTail(visibleContent, {
1045
908
  streaming
1046
909
  }).content,
@@ -1054,11 +917,11 @@ function AgentMessageMarkdown({
1054
917
  const shouldCollapse = collapsible && isLikelyLongerThanLineLimit(stabilizedContent);
1055
918
  const isCollapsed = shouldCollapse && !isExpanded;
1056
919
  const ContainerTag = inline ? "span" : "div";
1057
- const contentSignature = useMemo2(
920
+ const contentSignature = useMemo(
1058
921
  () => hashMarkdownProfilerContent(stabilizedContent),
1059
922
  [stabilizedContent]
1060
923
  );
1061
- const normalizedContent = useMemo2(
924
+ const normalizedContent = useMemo(
1062
925
  () => linkBareLocalAbsolutePaths(
1063
926
  normalizeMentionMarkdownLinks(
1064
927
  normalizePlainIssueMentionTitle ? normalizePlainIssueMentionTitleContent(
@@ -1115,9 +978,9 @@ function AgentMessageMarkdown({
1115
978
  },
1116
979
  [handleLinkClick]
1117
980
  );
1118
- const markdownComponents = useMemo2(
981
+ const markdownComponents = useMemo(
1119
982
  () => ({
1120
- a: (props) => /* @__PURE__ */ jsx4(
983
+ a: (props) => /* @__PURE__ */ jsx2(
1121
984
  MarkdownLink,
1122
985
  {
1123
986
  ...props,
@@ -1125,7 +988,7 @@ function AgentMessageMarkdown({
1125
988
  workspaceAppIcons
1126
989
  }
1127
990
  ),
1128
- code: (props) => /* @__PURE__ */ jsx4(
991
+ code: (props) => /* @__PURE__ */ jsx2(
1129
992
  MarkdownCode,
1130
993
  {
1131
994
  ...props,
@@ -1135,8 +998,8 @@ function AgentMessageMarkdown({
1135
998
  )
1136
999
  }
1137
1000
  ),
1138
- img: (props) => /* @__PURE__ */ jsx4(MarkdownImage, { ...props, enableZoom: enableImageZoom }),
1139
- p: (props) => /* @__PURE__ */ jsx4(MarkdownParagraph, { ...props, inline }),
1001
+ img: (props) => /* @__PURE__ */ jsx2(MarkdownImage, { ...props, enableZoom: enableImageZoom }),
1002
+ p: (props) => /* @__PURE__ */ jsx2(MarkdownParagraph, { ...props, inline }),
1140
1003
  ul: MarkdownUnorderedList,
1141
1004
  ol: MarkdownOrderedList,
1142
1005
  li: MarkdownListItem
@@ -1156,7 +1019,7 @@ function AgentMessageMarkdown({
1156
1019
  className: "flex w-full min-w-0 flex-col items-start gap-1",
1157
1020
  "data-workspace-agent-markdown-shell": "true",
1158
1021
  children: [
1159
- /* @__PURE__ */ jsx4(
1022
+ /* @__PURE__ */ jsx2(
1160
1023
  ContainerTag,
1161
1024
  {
1162
1025
  className: cn(
@@ -1187,13 +1050,13 @@ function AgentMessageMarkdown({
1187
1050
  "data-agent-mention-only": isMentionOnly ? "true" : void 0,
1188
1051
  "data-collapsed": isCollapsed ? "true" : "false",
1189
1052
  onClickCapture: handleAnchorClickCapture,
1190
- children: markdownRenderReady ? streaming ? /* @__PURE__ */ jsx4(
1053
+ children: markdownRenderReady ? streaming ? /* @__PURE__ */ jsx2(
1191
1054
  StreamingMarkdownBlocks,
1192
1055
  {
1193
1056
  content: normalizedContent,
1194
1057
  components: markdownComponents
1195
1058
  }
1196
- ) : /* @__PURE__ */ jsx4(
1059
+ ) : /* @__PURE__ */ jsx2(
1197
1060
  ReactMarkdown,
1198
1061
  {
1199
1062
  remarkPlugins: [remarkGfm],
@@ -1202,7 +1065,7 @@ function AgentMessageMarkdown({
1202
1065
  components: markdownComponents,
1203
1066
  children: normalizedContent
1204
1067
  }
1205
- ) : /* @__PURE__ */ jsx4(
1068
+ ) : /* @__PURE__ */ jsx2(
1206
1069
  "div",
1207
1070
  {
1208
1071
  className: "whitespace-pre-wrap [overflow-wrap:anywhere]",
@@ -1212,7 +1075,7 @@ function AgentMessageMarkdown({
1212
1075
  )
1213
1076
  }
1214
1077
  ),
1215
- shouldCollapse && !isExpanded ? /* @__PURE__ */ jsx4(
1078
+ shouldCollapse && !isExpanded ? /* @__PURE__ */ jsx2(
1216
1079
  "button",
1217
1080
  {
1218
1081
  type: "button",
@@ -1229,11 +1092,11 @@ function StreamingMarkdownBlocks({
1229
1092
  content,
1230
1093
  components
1231
1094
  }) {
1232
- const blocks = useMemo2(
1095
+ const blocks = useMemo(
1233
1096
  () => splitStreamingMarkdownBlocks(content),
1234
1097
  [content]
1235
1098
  );
1236
- return /* @__PURE__ */ jsx4(Fragment2, { children: blocks.map((block, index) => /* @__PURE__ */ jsx4(
1099
+ return /* @__PURE__ */ jsx2(Fragment2, { children: blocks.map((block, index) => /* @__PURE__ */ jsx2(
1237
1100
  MemoizedMarkdownBlock,
1238
1101
  {
1239
1102
  content: block.content,
@@ -1246,7 +1109,7 @@ var MemoizedMarkdownBlock = memo(function MemoizedMarkdownBlock2({
1246
1109
  content,
1247
1110
  components
1248
1111
  }) {
1249
- return /* @__PURE__ */ jsx4(
1112
+ return /* @__PURE__ */ jsx2(
1250
1113
  ReactMarkdown,
1251
1114
  {
1252
1115
  remarkPlugins: [remarkGfm],
@@ -1429,7 +1292,7 @@ function MarkdownLink({
1429
1292
  t("agentHost.agentGui.workspaceAppFactoryMentionFallback")
1430
1293
  ) : null;
1431
1294
  if (mention) {
1432
- return /* @__PURE__ */ jsx4(
1295
+ return /* @__PURE__ */ jsx2(
1433
1296
  MentionLink,
1434
1297
  {
1435
1298
  ...props,
@@ -1444,7 +1307,7 @@ function MarkdownLink({
1444
1307
  textFromReactNode(props.children)
1445
1308
  ) : null;
1446
1309
  if (fileMention) {
1447
- return /* @__PURE__ */ jsx4(
1310
+ return /* @__PURE__ */ jsx2(
1448
1311
  WorkspaceFileMentionLink,
1449
1312
  {
1450
1313
  ...props,
@@ -1454,7 +1317,7 @@ function MarkdownLink({
1454
1317
  }
1455
1318
  );
1456
1319
  }
1457
- return /* @__PURE__ */ jsx4(MarkdownLinkContext.Provider, { value: true, children: /* @__PURE__ */ jsx4(
1320
+ return /* @__PURE__ */ jsx2(MarkdownLinkContext.Provider, { value: true, children: /* @__PURE__ */ jsx2(
1458
1321
  "a",
1459
1322
  {
1460
1323
  ...props,
@@ -1565,8 +1428,8 @@ function WorkspaceFileMentionLink({
1565
1428
  activateMarkdownLinkFromKey(event, mention.href, onLinkClick);
1566
1429
  },
1567
1430
  children: [
1568
- /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__icon", "aria-hidden": "true" }),
1569
- /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__main", children: mention.label })
1431
+ /* @__PURE__ */ jsx2("span", { className: "tsh-agent-object-token__icon", "aria-hidden": "true" }),
1432
+ /* @__PURE__ */ jsx2("span", { className: "tsh-agent-object-token__main", children: mention.label })
1570
1433
  ]
1571
1434
  }
1572
1435
  );
@@ -1579,68 +1442,73 @@ function MentionLink({
1579
1442
  ...props
1580
1443
  }) {
1581
1444
  "use memo";
1582
- return /* @__PURE__ */ jsxs2(
1583
- "a",
1584
- {
1585
- ...props,
1586
- className: cn(
1587
- "tsh-agent-object-token tsh-agent-object-token--entity",
1588
- props.className
1589
- ),
1590
- "data-agent-file-mention": "true",
1591
- "data-agent-link-href": href,
1592
- "data-agent-mention-icon-url": mention.iconUrl,
1593
- "data-agent-mention-href": href,
1594
- "data-agent-mention-kind": mention.kind,
1595
- "aria-label": mention.label,
1596
- role: "link",
1597
- tabIndex: 0,
1598
- onClick: (event) => {
1599
- activateMarkdownLink(event, href, onLinkClick);
1600
- },
1601
- onPointerDown: (event) => {
1602
- activateMarkdownLinkFromPointer(event, href, onLinkClick);
1603
- },
1604
- onKeyDown: (event) => {
1605
- activateMarkdownLinkFromKey(event, href, onLinkClick);
1606
- },
1607
- children: [
1608
- mention.kind === "workspace-app" ? /* @__PURE__ */ jsx4(
1609
- "span",
1610
- {
1611
- className: "grid h-4 w-4 shrink-0 place-items-center overflow-hidden rounded-[4px] bg-block",
1612
- "aria-hidden": "true",
1613
- "data-agent-mention-app-icon": "true",
1614
- "data-workspace-app-icon": "true",
1615
- children: mention.iconUrl ? /* @__PURE__ */ jsx4(
1616
- "img",
1617
- {
1618
- src: mention.iconUrl,
1619
- alt: "",
1620
- className: "h-full w-full object-cover",
1621
- decoding: "async",
1622
- loading: "lazy",
1623
- draggable: false
1624
- }
1625
- ) : /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__kind-icon h-4 w-4" })
1626
- }
1627
- ) : /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__kind", "aria-hidden": "true", children: /* @__PURE__ */ jsx4(
1628
- "span",
1629
- {
1630
- className: "tsh-agent-object-token__kind-icon",
1631
- "aria-hidden": "true"
1632
- }
1633
- ) }),
1634
- mention.kind === "session" ? /* @__PURE__ */ jsxs2("span", { className: "tsh-agent-object-token__main", children: [
1635
- /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__participant", children: mention.participant }),
1636
- mention.summary ? /* @__PURE__ */ jsxs2("span", { className: "tsh-agent-object-token__summary", children: [
1637
- " ",
1638
- mention.summary
1639
- ] }) : null
1640
- ] }) : /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__main", children: mention.label })
1641
- ]
1642
- }
1643
- );
1445
+ const tooltipText = mention.kind === "session" ? `${mention.participant}${mention.summary ? ` ${mention.summary}` : ""}`.trim() : mention.label;
1446
+ const { ref: mainRef, overflowing } = useTextOverflow(tooltipText);
1447
+ return /* @__PURE__ */ jsx2(TooltipProvider, { delayDuration: 200, children: /* @__PURE__ */ jsxs2(Tooltip, { children: [
1448
+ /* @__PURE__ */ jsx2(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxs2(
1449
+ "a",
1450
+ {
1451
+ ...props,
1452
+ className: cn(
1453
+ "tsh-agent-object-token tsh-agent-object-token--entity",
1454
+ props.className
1455
+ ),
1456
+ "data-agent-file-mention": "true",
1457
+ "data-agent-link-href": href,
1458
+ "data-agent-mention-icon-url": mention.iconUrl,
1459
+ "data-agent-mention-href": href,
1460
+ "data-agent-mention-kind": mention.kind,
1461
+ "aria-label": mention.label,
1462
+ role: "link",
1463
+ tabIndex: 0,
1464
+ onClick: (event) => {
1465
+ activateMarkdownLink(event, href, onLinkClick);
1466
+ },
1467
+ onPointerDown: (event) => {
1468
+ activateMarkdownLinkFromPointer(event, href, onLinkClick);
1469
+ },
1470
+ onKeyDown: (event) => {
1471
+ activateMarkdownLinkFromKey(event, href, onLinkClick);
1472
+ },
1473
+ children: [
1474
+ mention.kind === "workspace-app" || mention.kind === "workspace-reference" ? /* @__PURE__ */ jsx2(
1475
+ "span",
1476
+ {
1477
+ className: "grid h-4 w-4 shrink-0 place-items-center overflow-hidden rounded-[4px] bg-block",
1478
+ "aria-hidden": "true",
1479
+ "data-agent-mention-app-icon": "true",
1480
+ "data-workspace-app-icon": "true",
1481
+ children: mention.iconUrl ? /* @__PURE__ */ jsx2(
1482
+ "img",
1483
+ {
1484
+ src: mention.iconUrl,
1485
+ alt: "",
1486
+ className: "h-full w-full object-cover",
1487
+ decoding: "async",
1488
+ loading: "lazy",
1489
+ draggable: false
1490
+ }
1491
+ ) : /* @__PURE__ */ jsx2("span", { className: "tsh-agent-object-token__kind-icon h-4 w-4" })
1492
+ }
1493
+ ) : /* @__PURE__ */ jsx2("span", { className: "tsh-agent-object-token__kind", "aria-hidden": "true", children: /* @__PURE__ */ jsx2(
1494
+ "span",
1495
+ {
1496
+ className: "tsh-agent-object-token__kind-icon",
1497
+ "aria-hidden": "true"
1498
+ }
1499
+ ) }),
1500
+ mention.kind === "session" ? /* @__PURE__ */ jsxs2("span", { className: "tsh-agent-object-token__main", ref: mainRef, children: [
1501
+ /* @__PURE__ */ jsx2("span", { className: "tsh-agent-object-token__participant", children: mention.participant }),
1502
+ mention.summary ? /* @__PURE__ */ jsxs2("span", { className: "tsh-agent-object-token__summary", children: [
1503
+ " ",
1504
+ mention.summary
1505
+ ] }) : null
1506
+ ] }) : /* @__PURE__ */ jsx2("span", { className: "tsh-agent-object-token__main", ref: mainRef, children: mention.label })
1507
+ ]
1508
+ }
1509
+ ) }),
1510
+ overflowing ? /* @__PURE__ */ jsx2(TooltipContent, { className: "max-w-[min(420px,calc(100vw-32px))] whitespace-normal text-left [overflow-wrap:anywhere]", children: tooltipText }) : null
1511
+ ] }) });
1644
1512
  }
1645
1513
  function MarkdownCode({
1646
1514
  node: _node,
@@ -1651,12 +1519,13 @@ function MarkdownCode({
1651
1519
  ...props
1652
1520
  }) {
1653
1521
  "use memo";
1522
+ const isInsideLink = useContext(MarkdownLinkContext);
1654
1523
  const text = textFromReactNode(children).trim();
1655
- const isLinkablePath = onLinkClick && !className && (isLocalAbsolutePath(text) || isHttpUrl(text) || workspaceFileLinksEnabled && isLikelyWorkspaceRelativeFilePath(text));
1524
+ const isLinkablePath = !isInsideLink && onLinkClick && !className && (isLocalAbsolutePath(text) || isHttpUrl(text) || workspaceFileLinksEnabled && isLikelyWorkspaceRelativeFilePath(text));
1656
1525
  if (isLinkablePath) {
1657
- return /* @__PURE__ */ jsx4(PathLink, { href: text, onLinkClick, children });
1526
+ return /* @__PURE__ */ jsx2(PathLink, { href: text, onLinkClick, children });
1658
1527
  }
1659
- return /* @__PURE__ */ jsx4("code", { ...props, className, children });
1528
+ return /* @__PURE__ */ jsx2("code", { ...props, className, children });
1660
1529
  }
1661
1530
  var cachedMarkdownImages = /* @__PURE__ */ new Map();
1662
1531
  var CACHED_MARKDOWN_IMAGE_REVOKE_DELAY_MS = 250;
@@ -1670,7 +1539,7 @@ function MarkdownImage({
1670
1539
  }) {
1671
1540
  "use memo";
1672
1541
  const { t } = useTranslation();
1673
- const isInsideLink = useContext3(MarkdownLinkContext);
1542
+ const isInsideLink = useContext(MarkdownLinkContext);
1674
1543
  const agentHostApi = useOptionalAgentHostApi() ?? getOptionalAgentHostApi();
1675
1544
  const workspacePath = typeof src === "string" && isLocalAbsolutePath(src) ? src.trim() : null;
1676
1545
  const readWorkspaceImage = workspacePath ? agentHostApi?.workspace?.readFile : void 0;
@@ -1746,9 +1615,9 @@ function MarkdownImage({
1746
1615
  }, [canReadWorkspaceImage, workspacePath]);
1747
1616
  if (!workspacePath || !readWorkspaceImage) {
1748
1617
  if (!shouldEnableZoom) {
1749
- return /* @__PURE__ */ jsx4("img", { ...props, src: resolvedSrc, alt, className });
1618
+ return /* @__PURE__ */ jsx2("img", { ...props, src: resolvedSrc, alt, className });
1750
1619
  }
1751
- return /* @__PURE__ */ jsx4(
1620
+ return /* @__PURE__ */ jsx2(
1752
1621
  ZoomableImage,
1753
1622
  {
1754
1623
  ...props,
@@ -1761,7 +1630,7 @@ function MarkdownImage({
1761
1630
  }
1762
1631
  if (state?.status === "ready") {
1763
1632
  if (!shouldEnableZoom) {
1764
- return /* @__PURE__ */ jsx4(
1633
+ return /* @__PURE__ */ jsx2(
1765
1634
  "img",
1766
1635
  {
1767
1636
  ...props,
@@ -1774,7 +1643,7 @@ function MarkdownImage({
1774
1643
  }
1775
1644
  );
1776
1645
  }
1777
- return /* @__PURE__ */ jsx4(
1646
+ return /* @__PURE__ */ jsx2(
1778
1647
  ZoomableImage,
1779
1648
  {
1780
1649
  ...props,
@@ -1788,7 +1657,7 @@ function MarkdownImage({
1788
1657
  }
1789
1658
  );
1790
1659
  }
1791
- return /* @__PURE__ */ jsx4("span", { className: "flex min-h-[160px] w-full items-center justify-center rounded-[8px] border border-[var(--line-2)] bg-[var(--background-panel)] px-5 py-5 text-center text-[13px] leading-5 text-[var(--text-tertiary)]", children: state?.status === "error" ? state.reason === "unsupported" ? t("agentHost.workspaceFileManager.previewUnsupported") : t("agentHost.workspaceFileManager.previewReadFailed", {
1660
+ return /* @__PURE__ */ jsx2("span", { className: "flex min-h-[160px] w-full items-center justify-center rounded-[8px] border border-[var(--line-2)] bg-[var(--background-panel)] px-5 py-5 text-center text-[13px] leading-5 text-[var(--text-tertiary)]", children: state?.status === "error" ? state.reason === "unsupported" ? t("agentHost.workspaceFileManager.previewUnsupported") : t("agentHost.workspaceFileManager.previewReadFailed", {
1792
1661
  message: state.detail ?? ""
1793
1662
  }) : t("agentHost.workspaceFileManager.previewLoading") });
1794
1663
  }
@@ -1812,7 +1681,7 @@ function MarkdownUnorderedList({
1812
1681
  ...props
1813
1682
  }) {
1814
1683
  "use memo";
1815
- return /* @__PURE__ */ jsx4(
1684
+ return /* @__PURE__ */ jsx2(
1816
1685
  "ul",
1817
1686
  {
1818
1687
  ...props,
@@ -1830,7 +1699,7 @@ function MarkdownOrderedList({
1830
1699
  ...props
1831
1700
  }) {
1832
1701
  "use memo";
1833
- return /* @__PURE__ */ jsx4(
1702
+ return /* @__PURE__ */ jsx2(
1834
1703
  "ol",
1835
1704
  {
1836
1705
  ...props,
@@ -1848,7 +1717,7 @@ function MarkdownListItem({
1848
1717
  ...props
1849
1718
  }) {
1850
1719
  "use memo";
1851
- return /* @__PURE__ */ jsx4("li", { ...props, style: { ...MARKDOWN_LIST_ITEM_STYLE, ...style } });
1720
+ return /* @__PURE__ */ jsx2("li", { ...props, style: { ...MARKDOWN_LIST_ITEM_STYLE, ...style } });
1852
1721
  }
1853
1722
  function MarkdownParagraph({
1854
1723
  node: _node,
@@ -1857,9 +1726,9 @@ function MarkdownParagraph({
1857
1726
  }) {
1858
1727
  "use memo";
1859
1728
  if (inline) {
1860
- return /* @__PURE__ */ jsx4("span", { ...props });
1729
+ return /* @__PURE__ */ jsx2("span", { ...props });
1861
1730
  }
1862
- return /* @__PURE__ */ jsx4("p", { ...props });
1731
+ return /* @__PURE__ */ jsx2("p", { ...props });
1863
1732
  }
1864
1733
  function isLocalAbsolutePath(path) {
1865
1734
  const candidate = path.trim();
@@ -2086,8 +1955,8 @@ function parseMentionLink(href, rawLabel, workspaceAppIcons = [], appFactoryFall
2086
1955
  return null;
2087
1956
  }
2088
1957
  const resource = url.hostname.trim().toLowerCase();
2089
- const kind = resource === "agent-session" ? "session" : resource === "workspace-app" ? "workspace-app" : resource === "workspace-app-factory" ? "workspace-app-factory" : resource === "workspace-issue" ? "workspace-issue" : resource;
2090
- if (kind !== "session" && kind !== "workspace-app" && kind !== "workspace-app-factory" && kind !== "workspace-issue") {
1958
+ const kind = resource === "agent-session" ? "session" : resource === "workspace-app" ? "workspace-app" : resource === "workspace-reference" ? "workspace-reference" : resource === "workspace-app-factory" ? "workspace-app-factory" : resource === "workspace-issue" ? "workspace-issue" : resource;
1959
+ if (kind !== "session" && kind !== "workspace-app" && kind !== "workspace-reference" && kind !== "workspace-app-factory" && kind !== "workspace-issue") {
2091
1960
  return null;
2092
1961
  }
2093
1962
  if (hasLegacyMentionQueryParams(url)) {
@@ -2116,6 +1985,16 @@ function parseMentionLink(href, rawLabel, workspaceAppIcons = [], appFactoryFall
2116
1985
  summary: ""
2117
1986
  };
2118
1987
  }
1988
+ if (kind === "workspace-reference") {
1989
+ return {
1990
+ kind,
1991
+ label,
1992
+ iconUrl: url.searchParams.get("icon")?.trim() || void 0,
1993
+ fileCount: referenceFileCountFromParam(url.searchParams.get("count")),
1994
+ participant: label,
1995
+ summary: ""
1996
+ };
1997
+ }
2119
1998
  if (kind === "workspace-issue") {
2120
1999
  return {
2121
2000
  kind,
@@ -2132,6 +2011,13 @@ function parseMentionLink(href, rawLabel, workspaceAppIcons = [], appFactoryFall
2132
2011
  summary: sessionLabel.summary
2133
2012
  };
2134
2013
  }
2014
+ function referenceFileCountFromParam(value) {
2015
+ if (!value) {
2016
+ return void 0;
2017
+ }
2018
+ const parsed = Number.parseInt(value.trim(), 10);
2019
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : void 0;
2020
+ }
2135
2021
  function hasLegacyMentionQueryParams(url) {
2136
2022
  return [...url.searchParams.keys()].some(
2137
2023
  (key) => key === "appId" || key === "id" || key === "kind" || key === "link" || key === "provider" || key === "v" || key === "version" || key.startsWith("meta.")
@@ -2217,7 +2103,7 @@ function PathLink({
2217
2103
  onLinkClick
2218
2104
  }) {
2219
2105
  "use memo";
2220
- return /* @__PURE__ */ jsx4(
2106
+ return /* @__PURE__ */ jsx2(
2221
2107
  "a",
2222
2108
  {
2223
2109
  className: "cursor-pointer",
@@ -2291,7 +2177,7 @@ import {
2291
2177
  useAnimation,
2292
2178
  useReducedMotion
2293
2179
  } from "framer-motion";
2294
- import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
2180
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
2295
2181
  var DOT_TRANSITION = {
2296
2182
  times: [0, 0.1, 0.1, 0.2, 0.5, 0.6, 0.6, 0.7],
2297
2183
  duration: 1.5
@@ -2379,7 +2265,7 @@ var MessageSquareMoreIcon = forwardRef(
2379
2265
  },
2380
2266
  [onMouseLeave, stopAnimation]
2381
2267
  );
2382
- return /* @__PURE__ */ jsx5(
2268
+ return /* @__PURE__ */ jsx3(
2383
2269
  "div",
2384
2270
  {
2385
2271
  className: cn("inline-flex items-center justify-center", className),
@@ -2399,8 +2285,8 @@ var MessageSquareMoreIcon = forwardRef(
2399
2285
  width: size,
2400
2286
  xmlns: "http://www.w3.org/2000/svg",
2401
2287
  children: [
2402
- /* @__PURE__ */ jsx5("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" }),
2403
- /* @__PURE__ */ jsx5(
2288
+ /* @__PURE__ */ jsx3("path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z" }),
2289
+ /* @__PURE__ */ jsx3(
2404
2290
  motion.path,
2405
2291
  {
2406
2292
  animate: controls,
@@ -2409,7 +2295,7 @@ var MessageSquareMoreIcon = forwardRef(
2409
2295
  variants: DOT_VARIANTS
2410
2296
  }
2411
2297
  ),
2412
- /* @__PURE__ */ jsx5(
2298
+ /* @__PURE__ */ jsx3(
2413
2299
  motion.path,
2414
2300
  {
2415
2301
  animate: controls,
@@ -2418,7 +2304,7 @@ var MessageSquareMoreIcon = forwardRef(
2418
2304
  variants: DOT_VARIANTS
2419
2305
  }
2420
2306
  ),
2421
- /* @__PURE__ */ jsx5(
2307
+ /* @__PURE__ */ jsx3(
2422
2308
  motion.path,
2423
2309
  {
2424
2310
  animate: controls,
@@ -2444,7 +2330,7 @@ import {
2444
2330
  useRef as useRef3,
2445
2331
  useState as useState3
2446
2332
  } from "react";
2447
- import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
2333
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
2448
2334
  var MIN_THUMB_HEIGHT = 24;
2449
2335
  function CustomScrollbar({
2450
2336
  getViewport,
@@ -2606,7 +2492,7 @@ function CustomScrollbar({
2606
2492
  resizeObserver?.disconnect();
2607
2493
  };
2608
2494
  }, [getViewport, syncKey, syncScrollbarState]);
2609
- return /* @__PURE__ */ jsx6(
2495
+ return /* @__PURE__ */ jsx4(
2610
2496
  "div",
2611
2497
  {
2612
2498
  ref: trackRef,
@@ -2616,7 +2502,7 @@ function CustomScrollbar({
2616
2502
  "data-testid": testId,
2617
2503
  "aria-hidden": "true",
2618
2504
  onMouseDown: handleTrackMouseDown,
2619
- children: /* @__PURE__ */ jsx6(
2505
+ children: /* @__PURE__ */ jsx4(
2620
2506
  "div",
2621
2507
  {
2622
2508
  className: cn("tsh-custom-scrollbar__thumb", thumbClassName),
@@ -2653,7 +2539,7 @@ var CustomScrollArea = forwardRef2(function CustomScrollArea2({
2653
2539
  className
2654
2540
  ),
2655
2541
  children: [
2656
- /* @__PURE__ */ jsx6(
2542
+ /* @__PURE__ */ jsx4(
2657
2543
  "div",
2658
2544
  {
2659
2545
  ref: setRefs(viewportRef, forwardedRef),
@@ -2665,7 +2551,7 @@ var CustomScrollArea = forwardRef2(function CustomScrollArea2({
2665
2551
  children
2666
2552
  }
2667
2553
  ),
2668
- /* @__PURE__ */ jsx6(
2554
+ /* @__PURE__ */ jsx4(
2669
2555
  CustomScrollbar,
2670
2556
  {
2671
2557
  getViewport,
@@ -2696,18 +2582,6 @@ function clamp(value, min, max) {
2696
2582
 
2697
2583
  export {
2698
2584
  cn,
2699
- AgentActivityRuntimeProvider,
2700
- useAgentActivityRuntime,
2701
- useOptionalAgentActivityRuntime,
2702
- useAgentActivitySnapshot,
2703
- getAgentActivityRuntime,
2704
- getOptionalAgentActivityRuntime,
2705
- resetAgentActivityRuntimeForTests,
2706
- setAgentActivityRuntimeForTests,
2707
- AgentActivityHostProvider,
2708
- useAgentHostApi,
2709
- useOptionalAgentHostApi,
2710
- getOptionalAgentHostApi,
2711
2585
  extractAgentMcpToolTarget,
2712
2586
  normalizeAskUserQuestions,
2713
2587
  resolveWorkspaceFilePathCandidate,
@@ -2719,4 +2593,4 @@ export {
2719
2593
  CustomScrollArea,
2720
2594
  MessageSquareMoreIcon
2721
2595
  };
2722
- //# sourceMappingURL=chunk-RLPVFX7V.js.map
2596
+ //# sourceMappingURL=chunk-FJYH2ZPX.js.map