@tutti-os/agent-gui 0.0.15 → 0.0.17

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 (50) hide show
  1. package/dist/AgentMentionSearchController-DqssJ2-b.d.ts +218 -0
  2. package/dist/agent-conversation/index.d.ts +3 -1
  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 +6 -2
  6. package/dist/agent-message-center/index.js +714 -291
  7. package/dist/agent-message-center/index.js.map +1 -1
  8. package/dist/app/renderer/agentactivity.css +176 -8
  9. package/dist/{chunk-KJPMZ7G5.js → chunk-65YMY2M3.js} +43 -17
  10. package/dist/chunk-65YMY2M3.js.map +1 -0
  11. package/dist/{chunk-OFGXNXYT.js → chunk-CDTTIUPL.js} +2 -2
  12. package/dist/{chunk-EK5RDKG7.js → chunk-GWR6WGZY.js} +21 -11
  13. package/dist/chunk-GWR6WGZY.js.map +1 -0
  14. package/dist/{chunk-H4HT3FE6.js → chunk-HVOPJU2K.js} +40 -30
  15. package/dist/chunk-HVOPJU2K.js.map +1 -0
  16. package/dist/{chunk-7CBJJNX6.js → chunk-JNGYJ7GM.js} +2 -2
  17. package/dist/{chunk-7CBJJNX6.js.map → chunk-JNGYJ7GM.js.map} +1 -1
  18. package/dist/{chunk-YKDFQADM.js → chunk-K44WER5Z.js} +177 -332
  19. package/dist/chunk-K44WER5Z.js.map +1 -0
  20. package/dist/{chunk-U4F3COKL.js → chunk-KHTIC52P.js} +83 -115
  21. package/dist/chunk-KHTIC52P.js.map +1 -0
  22. package/dist/chunk-O5TUTXHT.js +196 -0
  23. package/dist/chunk-O5TUTXHT.js.map +1 -0
  24. package/dist/{chunk-XHQGCP7A.js → chunk-OJ5WX7SZ.js} +2 -2
  25. package/dist/{chunk-SVOGXWFJ.js → chunk-VNAQ6QFE.js} +562 -468
  26. package/dist/chunk-VNAQ6QFE.js.map +1 -0
  27. package/dist/{chunk-2CA4NPP3.js → chunk-VO2TZNKV.js} +10 -7
  28. package/dist/{chunk-2CA4NPP3.js.map → chunk-VO2TZNKV.js.map} +1 -1
  29. package/dist/context-mention-palette/index.d.ts +5 -104
  30. package/dist/context-mention-palette/index.js +6 -5
  31. package/dist/i18n/index.d.ts +42 -16
  32. package/dist/i18n/index.js +1 -1
  33. package/dist/index.d.ts +22 -2
  34. package/dist/index.js +2002 -1329
  35. package/dist/index.js.map +1 -1
  36. package/dist/workbench/contribution.js +2 -2
  37. package/dist/workbench/index.d.ts +2 -1
  38. package/dist/workbench/index.js +2 -2
  39. package/dist/workbench/launch.js +1 -1
  40. package/dist/workspace-agent-generated-files.js +2 -2
  41. package/package.json +12 -12
  42. package/dist/agentFileMentionExtension-CM1c9bqk.d.ts +0 -86
  43. package/dist/chunk-EK5RDKG7.js.map +0 -1
  44. package/dist/chunk-H4HT3FE6.js.map +0 -1
  45. package/dist/chunk-KJPMZ7G5.js.map +0 -1
  46. package/dist/chunk-SVOGXWFJ.js.map +0 -1
  47. package/dist/chunk-U4F3COKL.js.map +0 -1
  48. package/dist/chunk-YKDFQADM.js.map +0 -1
  49. /package/dist/{chunk-OFGXNXYT.js.map → chunk-CDTTIUPL.js.map} +0 -0
  50. /package/dist/{chunk-XHQGCP7A.js.map → chunk-OJ5WX7SZ.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-KJPMZ7G5.js";
7
+ } from "./chunk-65YMY2M3.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)) {
@@ -681,19 +522,35 @@ function isDirectAgentGeneratedImagePath(path) {
681
522
  if (!isAbsoluteLocalPath(path)) {
682
523
  return false;
683
524
  }
684
- const segments = path.split("/").filter(Boolean);
685
- const stateRootIndex = segments.findIndex(
686
- (segment) => segment === ".tutti" || segment === ".tutti-dev"
687
- );
688
- if (stateRootIndex < 0) {
525
+ const statePath = getTuttiStatePathSegments(path);
526
+ if (!statePath) {
689
527
  return false;
690
528
  }
691
- const statePath = segments.slice(stateRootIndex);
692
529
  if (statePath[1] !== "agent" || statePath[2] !== "runs" || !statePath.includes("generated_images")) {
693
530
  return false;
694
531
  }
695
532
  return /\.(?:png|jpe?g|gif|webp|bmp)$/i.test(path);
696
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
+ }
697
554
 
698
555
  // shared/streamingMarkdownTailStabilizer.ts
699
556
  var DEFAULT_MAX_TAIL_CHARS = 4096;
@@ -999,7 +856,7 @@ function clearStreamingVisibleTextTimer(timerRef) {
999
856
  }
1000
857
 
1001
858
  // shared/AgentMessageMarkdown.tsx
1002
- 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";
1003
860
  var COLLAPSED_LINE_LIMIT = 8;
1004
861
  var APPROX_CHARS_PER_LINE = 34;
1005
862
  var DEFERRED_LONG_MARKDOWN_CHAR_THRESHOLD = 4096;
@@ -1022,7 +879,7 @@ var MARKDOWN_SANITIZE_SCHEMA = {
1022
879
  }
1023
880
  };
1024
881
  var EMPTY_WORKSPACE_APP_ICONS = [];
1025
- var MarkdownLinkContext = createContext3(false);
882
+ var MarkdownLinkContext = createContext(false);
1026
883
  function AgentMessageMarkdown({
1027
884
  content,
1028
885
  onLinkClick,
@@ -1046,7 +903,7 @@ function AgentMessageMarkdown({
1046
903
  maxCharsPerSecond: STREAMING_MARKDOWN_MAX_CHARS_PER_SECOND,
1047
904
  trailingFlushChars: STREAMING_MARKDOWN_TAIL_FLUSH_CHARS
1048
905
  });
1049
- const stabilizedContent = useMemo2(
906
+ const stabilizedContent = useMemo(
1050
907
  () => stabilizeStreamingMarkdownTail(visibleContent, {
1051
908
  streaming
1052
909
  }).content,
@@ -1060,11 +917,11 @@ function AgentMessageMarkdown({
1060
917
  const shouldCollapse = collapsible && isLikelyLongerThanLineLimit(stabilizedContent);
1061
918
  const isCollapsed = shouldCollapse && !isExpanded;
1062
919
  const ContainerTag = inline ? "span" : "div";
1063
- const contentSignature = useMemo2(
920
+ const contentSignature = useMemo(
1064
921
  () => hashMarkdownProfilerContent(stabilizedContent),
1065
922
  [stabilizedContent]
1066
923
  );
1067
- const normalizedContent = useMemo2(
924
+ const normalizedContent = useMemo(
1068
925
  () => linkBareLocalAbsolutePaths(
1069
926
  normalizeMentionMarkdownLinks(
1070
927
  normalizePlainIssueMentionTitle ? normalizePlainIssueMentionTitleContent(
@@ -1121,9 +978,9 @@ function AgentMessageMarkdown({
1121
978
  },
1122
979
  [handleLinkClick]
1123
980
  );
1124
- const markdownComponents = useMemo2(
981
+ const markdownComponents = useMemo(
1125
982
  () => ({
1126
- a: (props) => /* @__PURE__ */ jsx4(
983
+ a: (props) => /* @__PURE__ */ jsx2(
1127
984
  MarkdownLink,
1128
985
  {
1129
986
  ...props,
@@ -1131,7 +988,7 @@ function AgentMessageMarkdown({
1131
988
  workspaceAppIcons
1132
989
  }
1133
990
  ),
1134
- code: (props) => /* @__PURE__ */ jsx4(
991
+ code: (props) => /* @__PURE__ */ jsx2(
1135
992
  MarkdownCode,
1136
993
  {
1137
994
  ...props,
@@ -1141,8 +998,8 @@ function AgentMessageMarkdown({
1141
998
  )
1142
999
  }
1143
1000
  ),
1144
- img: (props) => /* @__PURE__ */ jsx4(MarkdownImage, { ...props, enableZoom: enableImageZoom }),
1145
- p: (props) => /* @__PURE__ */ jsx4(MarkdownParagraph, { ...props, inline }),
1001
+ img: (props) => /* @__PURE__ */ jsx2(MarkdownImage, { ...props, enableZoom: enableImageZoom }),
1002
+ p: (props) => /* @__PURE__ */ jsx2(MarkdownParagraph, { ...props, inline }),
1146
1003
  ul: MarkdownUnorderedList,
1147
1004
  ol: MarkdownOrderedList,
1148
1005
  li: MarkdownListItem
@@ -1162,7 +1019,7 @@ function AgentMessageMarkdown({
1162
1019
  className: "flex w-full min-w-0 flex-col items-start gap-1",
1163
1020
  "data-workspace-agent-markdown-shell": "true",
1164
1021
  children: [
1165
- /* @__PURE__ */ jsx4(
1022
+ /* @__PURE__ */ jsx2(
1166
1023
  ContainerTag,
1167
1024
  {
1168
1025
  className: cn(
@@ -1193,13 +1050,13 @@ function AgentMessageMarkdown({
1193
1050
  "data-agent-mention-only": isMentionOnly ? "true" : void 0,
1194
1051
  "data-collapsed": isCollapsed ? "true" : "false",
1195
1052
  onClickCapture: handleAnchorClickCapture,
1196
- children: markdownRenderReady ? streaming ? /* @__PURE__ */ jsx4(
1053
+ children: markdownRenderReady ? streaming ? /* @__PURE__ */ jsx2(
1197
1054
  StreamingMarkdownBlocks,
1198
1055
  {
1199
1056
  content: normalizedContent,
1200
1057
  components: markdownComponents
1201
1058
  }
1202
- ) : /* @__PURE__ */ jsx4(
1059
+ ) : /* @__PURE__ */ jsx2(
1203
1060
  ReactMarkdown,
1204
1061
  {
1205
1062
  remarkPlugins: [remarkGfm],
@@ -1208,7 +1065,7 @@ function AgentMessageMarkdown({
1208
1065
  components: markdownComponents,
1209
1066
  children: normalizedContent
1210
1067
  }
1211
- ) : /* @__PURE__ */ jsx4(
1068
+ ) : /* @__PURE__ */ jsx2(
1212
1069
  "div",
1213
1070
  {
1214
1071
  className: "whitespace-pre-wrap [overflow-wrap:anywhere]",
@@ -1218,7 +1075,7 @@ function AgentMessageMarkdown({
1218
1075
  )
1219
1076
  }
1220
1077
  ),
1221
- shouldCollapse && !isExpanded ? /* @__PURE__ */ jsx4(
1078
+ shouldCollapse && !isExpanded ? /* @__PURE__ */ jsx2(
1222
1079
  "button",
1223
1080
  {
1224
1081
  type: "button",
@@ -1235,11 +1092,11 @@ function StreamingMarkdownBlocks({
1235
1092
  content,
1236
1093
  components
1237
1094
  }) {
1238
- const blocks = useMemo2(
1095
+ const blocks = useMemo(
1239
1096
  () => splitStreamingMarkdownBlocks(content),
1240
1097
  [content]
1241
1098
  );
1242
- return /* @__PURE__ */ jsx4(Fragment2, { children: blocks.map((block, index) => /* @__PURE__ */ jsx4(
1099
+ return /* @__PURE__ */ jsx2(Fragment2, { children: blocks.map((block, index) => /* @__PURE__ */ jsx2(
1243
1100
  MemoizedMarkdownBlock,
1244
1101
  {
1245
1102
  content: block.content,
@@ -1252,7 +1109,7 @@ var MemoizedMarkdownBlock = memo(function MemoizedMarkdownBlock2({
1252
1109
  content,
1253
1110
  components
1254
1111
  }) {
1255
- return /* @__PURE__ */ jsx4(
1112
+ return /* @__PURE__ */ jsx2(
1256
1113
  ReactMarkdown,
1257
1114
  {
1258
1115
  remarkPlugins: [remarkGfm],
@@ -1435,7 +1292,7 @@ function MarkdownLink({
1435
1292
  t("agentHost.agentGui.workspaceAppFactoryMentionFallback")
1436
1293
  ) : null;
1437
1294
  if (mention) {
1438
- return /* @__PURE__ */ jsx4(
1295
+ return /* @__PURE__ */ jsx2(
1439
1296
  MentionLink,
1440
1297
  {
1441
1298
  ...props,
@@ -1450,7 +1307,7 @@ function MarkdownLink({
1450
1307
  textFromReactNode(props.children)
1451
1308
  ) : null;
1452
1309
  if (fileMention) {
1453
- return /* @__PURE__ */ jsx4(
1310
+ return /* @__PURE__ */ jsx2(
1454
1311
  WorkspaceFileMentionLink,
1455
1312
  {
1456
1313
  ...props,
@@ -1460,7 +1317,7 @@ function MarkdownLink({
1460
1317
  }
1461
1318
  );
1462
1319
  }
1463
- return /* @__PURE__ */ jsx4(MarkdownLinkContext.Provider, { value: true, children: /* @__PURE__ */ jsx4(
1320
+ return /* @__PURE__ */ jsx2(MarkdownLinkContext.Provider, { value: true, children: /* @__PURE__ */ jsx2(
1464
1321
  "a",
1465
1322
  {
1466
1323
  ...props,
@@ -1571,8 +1428,8 @@ function WorkspaceFileMentionLink({
1571
1428
  activateMarkdownLinkFromKey(event, mention.href, onLinkClick);
1572
1429
  },
1573
1430
  children: [
1574
- /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__icon", "aria-hidden": "true" }),
1575
- /* @__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 })
1576
1433
  ]
1577
1434
  }
1578
1435
  );
@@ -1585,69 +1442,73 @@ function MentionLink({
1585
1442
  ...props
1586
1443
  }) {
1587
1444
  "use memo";
1588
- return /* @__PURE__ */ jsxs2(
1589
- "a",
1590
- {
1591
- ...props,
1592
- className: cn(
1593
- "tsh-agent-object-token tsh-agent-object-token--entity",
1594
- props.className
1595
- ),
1596
- "data-agent-file-mention": "true",
1597
- "data-agent-link-href": href,
1598
- "data-agent-mention-icon-url": mention.iconUrl,
1599
- "data-agent-mention-href": href,
1600
- "data-agent-mention-kind": mention.kind,
1601
- "aria-label": mention.label,
1602
- role: "link",
1603
- tabIndex: 0,
1604
- onClick: (event) => {
1605
- activateMarkdownLink(event, href, onLinkClick);
1606
- },
1607
- onPointerDown: (event) => {
1608
- activateMarkdownLinkFromPointer(event, href, onLinkClick);
1609
- },
1610
- onKeyDown: (event) => {
1611
- activateMarkdownLinkFromKey(event, href, onLinkClick);
1612
- },
1613
- children: [
1614
- mention.kind === "workspace-app" || mention.kind === "workspace-app-bundle" ? /* @__PURE__ */ jsx4(
1615
- "span",
1616
- {
1617
- className: "grid h-4 w-4 shrink-0 place-items-center overflow-hidden rounded-[4px] bg-block",
1618
- "aria-hidden": "true",
1619
- "data-agent-mention-app-icon": "true",
1620
- "data-workspace-app-icon": "true",
1621
- children: mention.iconUrl ? /* @__PURE__ */ jsx4(
1622
- "img",
1623
- {
1624
- src: mention.iconUrl,
1625
- alt: "",
1626
- className: "h-full w-full object-cover",
1627
- decoding: "async",
1628
- loading: "lazy",
1629
- draggable: false
1630
- }
1631
- ) : /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__kind-icon h-4 w-4" })
1632
- }
1633
- ) : /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__kind", "aria-hidden": "true", children: /* @__PURE__ */ jsx4(
1634
- "span",
1635
- {
1636
- className: "tsh-agent-object-token__kind-icon",
1637
- "aria-hidden": "true"
1638
- }
1639
- ) }),
1640
- mention.kind === "session" ? /* @__PURE__ */ jsxs2("span", { className: "tsh-agent-object-token__main", children: [
1641
- /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__participant", children: mention.participant }),
1642
- mention.summary ? /* @__PURE__ */ jsxs2("span", { className: "tsh-agent-object-token__summary", children: [
1643
- " ",
1644
- mention.summary
1645
- ] }) : null
1646
- ] }) : /* @__PURE__ */ jsx4("span", { className: "tsh-agent-object-token__main", children: mention.label }),
1647
- mention.kind === "workspace-app-bundle" && mention.fileCount != null && mention.fileCount >= 0 ? /* @__PURE__ */ jsx4("span", { className: "shrink-0 tabular-nums text-[var(--text-secondary)]", children: mention.fileCount }) : null
1648
- ]
1649
- }
1650
- );
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
+ ] }) });
1651
1512
  }
1652
1513
  function MarkdownCode({
1653
1514
  node: _node,
@@ -1658,13 +1519,13 @@ function MarkdownCode({
1658
1519
  ...props
1659
1520
  }) {
1660
1521
  "use memo";
1661
- const isInsideLink = useContext3(MarkdownLinkContext);
1522
+ const isInsideLink = useContext(MarkdownLinkContext);
1662
1523
  const text = textFromReactNode(children).trim();
1663
1524
  const isLinkablePath = !isInsideLink && onLinkClick && !className && (isLocalAbsolutePath(text) || isHttpUrl(text) || workspaceFileLinksEnabled && isLikelyWorkspaceRelativeFilePath(text));
1664
1525
  if (isLinkablePath) {
1665
- return /* @__PURE__ */ jsx4(PathLink, { href: text, onLinkClick, children });
1526
+ return /* @__PURE__ */ jsx2(PathLink, { href: text, onLinkClick, children });
1666
1527
  }
1667
- return /* @__PURE__ */ jsx4("code", { ...props, className, children });
1528
+ return /* @__PURE__ */ jsx2("code", { ...props, className, children });
1668
1529
  }
1669
1530
  var cachedMarkdownImages = /* @__PURE__ */ new Map();
1670
1531
  var CACHED_MARKDOWN_IMAGE_REVOKE_DELAY_MS = 250;
@@ -1678,7 +1539,7 @@ function MarkdownImage({
1678
1539
  }) {
1679
1540
  "use memo";
1680
1541
  const { t } = useTranslation();
1681
- const isInsideLink = useContext3(MarkdownLinkContext);
1542
+ const isInsideLink = useContext(MarkdownLinkContext);
1682
1543
  const agentHostApi = useOptionalAgentHostApi() ?? getOptionalAgentHostApi();
1683
1544
  const workspacePath = typeof src === "string" && isLocalAbsolutePath(src) ? src.trim() : null;
1684
1545
  const readWorkspaceImage = workspacePath ? agentHostApi?.workspace?.readFile : void 0;
@@ -1754,9 +1615,9 @@ function MarkdownImage({
1754
1615
  }, [canReadWorkspaceImage, workspacePath]);
1755
1616
  if (!workspacePath || !readWorkspaceImage) {
1756
1617
  if (!shouldEnableZoom) {
1757
- return /* @__PURE__ */ jsx4("img", { ...props, src: resolvedSrc, alt, className });
1618
+ return /* @__PURE__ */ jsx2("img", { ...props, src: resolvedSrc, alt, className });
1758
1619
  }
1759
- return /* @__PURE__ */ jsx4(
1620
+ return /* @__PURE__ */ jsx2(
1760
1621
  ZoomableImage,
1761
1622
  {
1762
1623
  ...props,
@@ -1769,7 +1630,7 @@ function MarkdownImage({
1769
1630
  }
1770
1631
  if (state?.status === "ready") {
1771
1632
  if (!shouldEnableZoom) {
1772
- return /* @__PURE__ */ jsx4(
1633
+ return /* @__PURE__ */ jsx2(
1773
1634
  "img",
1774
1635
  {
1775
1636
  ...props,
@@ -1782,7 +1643,7 @@ function MarkdownImage({
1782
1643
  }
1783
1644
  );
1784
1645
  }
1785
- return /* @__PURE__ */ jsx4(
1646
+ return /* @__PURE__ */ jsx2(
1786
1647
  ZoomableImage,
1787
1648
  {
1788
1649
  ...props,
@@ -1796,7 +1657,7 @@ function MarkdownImage({
1796
1657
  }
1797
1658
  );
1798
1659
  }
1799
- 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", {
1800
1661
  message: state.detail ?? ""
1801
1662
  }) : t("agentHost.workspaceFileManager.previewLoading") });
1802
1663
  }
@@ -1820,7 +1681,7 @@ function MarkdownUnorderedList({
1820
1681
  ...props
1821
1682
  }) {
1822
1683
  "use memo";
1823
- return /* @__PURE__ */ jsx4(
1684
+ return /* @__PURE__ */ jsx2(
1824
1685
  "ul",
1825
1686
  {
1826
1687
  ...props,
@@ -1838,7 +1699,7 @@ function MarkdownOrderedList({
1838
1699
  ...props
1839
1700
  }) {
1840
1701
  "use memo";
1841
- return /* @__PURE__ */ jsx4(
1702
+ return /* @__PURE__ */ jsx2(
1842
1703
  "ol",
1843
1704
  {
1844
1705
  ...props,
@@ -1856,7 +1717,7 @@ function MarkdownListItem({
1856
1717
  ...props
1857
1718
  }) {
1858
1719
  "use memo";
1859
- return /* @__PURE__ */ jsx4("li", { ...props, style: { ...MARKDOWN_LIST_ITEM_STYLE, ...style } });
1720
+ return /* @__PURE__ */ jsx2("li", { ...props, style: { ...MARKDOWN_LIST_ITEM_STYLE, ...style } });
1860
1721
  }
1861
1722
  function MarkdownParagraph({
1862
1723
  node: _node,
@@ -1865,9 +1726,9 @@ function MarkdownParagraph({
1865
1726
  }) {
1866
1727
  "use memo";
1867
1728
  if (inline) {
1868
- return /* @__PURE__ */ jsx4("span", { ...props });
1729
+ return /* @__PURE__ */ jsx2("span", { ...props });
1869
1730
  }
1870
- return /* @__PURE__ */ jsx4("p", { ...props });
1731
+ return /* @__PURE__ */ jsx2("p", { ...props });
1871
1732
  }
1872
1733
  function isLocalAbsolutePath(path) {
1873
1734
  const candidate = path.trim();
@@ -2094,8 +1955,8 @@ function parseMentionLink(href, rawLabel, workspaceAppIcons = [], appFactoryFall
2094
1955
  return null;
2095
1956
  }
2096
1957
  const resource = url.hostname.trim().toLowerCase();
2097
- const kind = resource === "agent-session" ? "session" : resource === "workspace-app" ? "workspace-app" : resource === "workspace-app-bundle" ? "workspace-app-bundle" : resource === "workspace-app-factory" ? "workspace-app-factory" : resource === "workspace-issue" ? "workspace-issue" : resource;
2098
- if (kind !== "session" && kind !== "workspace-app" && kind !== "workspace-app-bundle" && 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") {
2099
1960
  return null;
2100
1961
  }
2101
1962
  if (hasLegacyMentionQueryParams(url)) {
@@ -2124,12 +1985,12 @@ function parseMentionLink(href, rawLabel, workspaceAppIcons = [], appFactoryFall
2124
1985
  summary: ""
2125
1986
  };
2126
1987
  }
2127
- if (kind === "workspace-app-bundle") {
1988
+ if (kind === "workspace-reference") {
2128
1989
  return {
2129
1990
  kind,
2130
1991
  label,
2131
1992
  iconUrl: url.searchParams.get("icon")?.trim() || void 0,
2132
- fileCount: bundleFileCountFromParam(url.searchParams.get("files")),
1993
+ fileCount: referenceFileCountFromParam(url.searchParams.get("count")),
2133
1994
  participant: label,
2134
1995
  summary: ""
2135
1996
  };
@@ -2150,16 +2011,12 @@ function parseMentionLink(href, rawLabel, workspaceAppIcons = [], appFactoryFall
2150
2011
  summary: sessionLabel.summary
2151
2012
  };
2152
2013
  }
2153
- function bundleFileCountFromParam(value) {
2014
+ function referenceFileCountFromParam(value) {
2154
2015
  if (!value) {
2155
2016
  return void 0;
2156
2017
  }
2157
- try {
2158
- const parsed = JSON.parse(value);
2159
- return Array.isArray(parsed) ? parsed.length : void 0;
2160
- } catch {
2161
- return void 0;
2162
- }
2018
+ const parsed = Number.parseInt(value.trim(), 10);
2019
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : void 0;
2163
2020
  }
2164
2021
  function hasLegacyMentionQueryParams(url) {
2165
2022
  return [...url.searchParams.keys()].some(
@@ -2246,7 +2103,7 @@ function PathLink({
2246
2103
  onLinkClick
2247
2104
  }) {
2248
2105
  "use memo";
2249
- return /* @__PURE__ */ jsx4(
2106
+ return /* @__PURE__ */ jsx2(
2250
2107
  "a",
2251
2108
  {
2252
2109
  className: "cursor-pointer",
@@ -2320,7 +2177,7 @@ import {
2320
2177
  useAnimation,
2321
2178
  useReducedMotion
2322
2179
  } from "framer-motion";
2323
- import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
2180
+ import { jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
2324
2181
  var DOT_TRANSITION = {
2325
2182
  times: [0, 0.1, 0.1, 0.2, 0.5, 0.6, 0.6, 0.7],
2326
2183
  duration: 1.5
@@ -2408,7 +2265,7 @@ var MessageSquareMoreIcon = forwardRef(
2408
2265
  },
2409
2266
  [onMouseLeave, stopAnimation]
2410
2267
  );
2411
- return /* @__PURE__ */ jsx5(
2268
+ return /* @__PURE__ */ jsx3(
2412
2269
  "div",
2413
2270
  {
2414
2271
  className: cn("inline-flex items-center justify-center", className),
@@ -2428,8 +2285,8 @@ var MessageSquareMoreIcon = forwardRef(
2428
2285
  width: size,
2429
2286
  xmlns: "http://www.w3.org/2000/svg",
2430
2287
  children: [
2431
- /* @__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" }),
2432
- /* @__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(
2433
2290
  motion.path,
2434
2291
  {
2435
2292
  animate: controls,
@@ -2438,7 +2295,7 @@ var MessageSquareMoreIcon = forwardRef(
2438
2295
  variants: DOT_VARIANTS
2439
2296
  }
2440
2297
  ),
2441
- /* @__PURE__ */ jsx5(
2298
+ /* @__PURE__ */ jsx3(
2442
2299
  motion.path,
2443
2300
  {
2444
2301
  animate: controls,
@@ -2447,7 +2304,7 @@ var MessageSquareMoreIcon = forwardRef(
2447
2304
  variants: DOT_VARIANTS
2448
2305
  }
2449
2306
  ),
2450
- /* @__PURE__ */ jsx5(
2307
+ /* @__PURE__ */ jsx3(
2451
2308
  motion.path,
2452
2309
  {
2453
2310
  animate: controls,
@@ -2473,7 +2330,7 @@ import {
2473
2330
  useRef as useRef3,
2474
2331
  useState as useState3
2475
2332
  } from "react";
2476
- import { jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
2333
+ import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
2477
2334
  var MIN_THUMB_HEIGHT = 24;
2478
2335
  function CustomScrollbar({
2479
2336
  getViewport,
@@ -2635,7 +2492,7 @@ function CustomScrollbar({
2635
2492
  resizeObserver?.disconnect();
2636
2493
  };
2637
2494
  }, [getViewport, syncKey, syncScrollbarState]);
2638
- return /* @__PURE__ */ jsx6(
2495
+ return /* @__PURE__ */ jsx4(
2639
2496
  "div",
2640
2497
  {
2641
2498
  ref: trackRef,
@@ -2645,7 +2502,7 @@ function CustomScrollbar({
2645
2502
  "data-testid": testId,
2646
2503
  "aria-hidden": "true",
2647
2504
  onMouseDown: handleTrackMouseDown,
2648
- children: /* @__PURE__ */ jsx6(
2505
+ children: /* @__PURE__ */ jsx4(
2649
2506
  "div",
2650
2507
  {
2651
2508
  className: cn("tsh-custom-scrollbar__thumb", thumbClassName),
@@ -2682,7 +2539,7 @@ var CustomScrollArea = forwardRef2(function CustomScrollArea2({
2682
2539
  className
2683
2540
  ),
2684
2541
  children: [
2685
- /* @__PURE__ */ jsx6(
2542
+ /* @__PURE__ */ jsx4(
2686
2543
  "div",
2687
2544
  {
2688
2545
  ref: setRefs(viewportRef, forwardedRef),
@@ -2694,7 +2551,7 @@ var CustomScrollArea = forwardRef2(function CustomScrollArea2({
2694
2551
  children
2695
2552
  }
2696
2553
  ),
2697
- /* @__PURE__ */ jsx6(
2554
+ /* @__PURE__ */ jsx4(
2698
2555
  CustomScrollbar,
2699
2556
  {
2700
2557
  getViewport,
@@ -2725,18 +2582,6 @@ function clamp(value, min, max) {
2725
2582
 
2726
2583
  export {
2727
2584
  cn,
2728
- AgentActivityRuntimeProvider,
2729
- useAgentActivityRuntime,
2730
- useOptionalAgentActivityRuntime,
2731
- useAgentActivitySnapshot,
2732
- getAgentActivityRuntime,
2733
- getOptionalAgentActivityRuntime,
2734
- resetAgentActivityRuntimeForTests,
2735
- setAgentActivityRuntimeForTests,
2736
- AgentActivityHostProvider,
2737
- useAgentHostApi,
2738
- useOptionalAgentHostApi,
2739
- getOptionalAgentHostApi,
2740
2585
  extractAgentMcpToolTarget,
2741
2586
  normalizeAskUserQuestions,
2742
2587
  resolveWorkspaceFilePathCandidate,
@@ -2748,4 +2593,4 @@ export {
2748
2593
  CustomScrollArea,
2749
2594
  MessageSquareMoreIcon
2750
2595
  };
2751
- //# sourceMappingURL=chunk-YKDFQADM.js.map
2596
+ //# sourceMappingURL=chunk-K44WER5Z.js.map