@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.
- package/dist/AgentMentionSearchController-DqssJ2-b.d.ts +218 -0
- package/dist/agent-conversation/index.d.ts +3 -1
- package/dist/agent-conversation/index.js +5 -4
- package/dist/agent-conversation/index.js.map +1 -1
- package/dist/agent-message-center/index.d.ts +6 -2
- package/dist/agent-message-center/index.js +714 -291
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/app/renderer/agentactivity.css +176 -8
- package/dist/{chunk-KJPMZ7G5.js → chunk-65YMY2M3.js} +43 -17
- package/dist/chunk-65YMY2M3.js.map +1 -0
- package/dist/{chunk-OFGXNXYT.js → chunk-CDTTIUPL.js} +2 -2
- package/dist/{chunk-EK5RDKG7.js → chunk-GWR6WGZY.js} +21 -11
- package/dist/chunk-GWR6WGZY.js.map +1 -0
- package/dist/{chunk-H4HT3FE6.js → chunk-HVOPJU2K.js} +40 -30
- package/dist/chunk-HVOPJU2K.js.map +1 -0
- package/dist/{chunk-7CBJJNX6.js → chunk-JNGYJ7GM.js} +2 -2
- package/dist/{chunk-7CBJJNX6.js.map → chunk-JNGYJ7GM.js.map} +1 -1
- package/dist/{chunk-YKDFQADM.js → chunk-K44WER5Z.js} +177 -332
- package/dist/chunk-K44WER5Z.js.map +1 -0
- package/dist/{chunk-U4F3COKL.js → chunk-KHTIC52P.js} +83 -115
- package/dist/chunk-KHTIC52P.js.map +1 -0
- package/dist/chunk-O5TUTXHT.js +196 -0
- package/dist/chunk-O5TUTXHT.js.map +1 -0
- package/dist/{chunk-XHQGCP7A.js → chunk-OJ5WX7SZ.js} +2 -2
- package/dist/{chunk-SVOGXWFJ.js → chunk-VNAQ6QFE.js} +562 -468
- package/dist/chunk-VNAQ6QFE.js.map +1 -0
- package/dist/{chunk-2CA4NPP3.js → chunk-VO2TZNKV.js} +10 -7
- package/dist/{chunk-2CA4NPP3.js.map → chunk-VO2TZNKV.js.map} +1 -1
- package/dist/context-mention-palette/index.d.ts +5 -104
- package/dist/context-mention-palette/index.js +6 -5
- package/dist/i18n/index.d.ts +42 -16
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +22 -2
- package/dist/index.js +2002 -1329
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.js +2 -2
- package/dist/workbench/index.d.ts +2 -1
- package/dist/workbench/index.js +2 -2
- package/dist/workbench/launch.js +1 -1
- package/dist/workspace-agent-generated-files.js +2 -2
- package/package.json +12 -12
- package/dist/agentFileMentionExtension-CM1c9bqk.d.ts +0 -86
- package/dist/chunk-EK5RDKG7.js.map +0 -1
- package/dist/chunk-H4HT3FE6.js.map +0 -1
- package/dist/chunk-KJPMZ7G5.js.map +0 -1
- package/dist/chunk-SVOGXWFJ.js.map +0 -1
- package/dist/chunk-U4F3COKL.js.map +0 -1
- package/dist/chunk-YKDFQADM.js.map +0 -1
- /package/dist/{chunk-OFGXNXYT.js.map → chunk-CDTTIUPL.js.map} +0 -0
- /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-
|
|
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
|
|
188
|
+
createContext,
|
|
366
189
|
startTransition as startTransition2,
|
|
367
190
|
useCallback,
|
|
368
191
|
useEffect as useEffect2,
|
|
369
|
-
useContext
|
|
192
|
+
useContext,
|
|
370
193
|
memo,
|
|
371
|
-
useMemo
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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
|
-
|
|
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
|
|
685
|
-
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
920
|
+
const contentSignature = useMemo(
|
|
1064
921
|
() => hashMarkdownProfilerContent(stabilizedContent),
|
|
1065
922
|
[stabilizedContent]
|
|
1066
923
|
);
|
|
1067
|
-
const normalizedContent =
|
|
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 =
|
|
981
|
+
const markdownComponents = useMemo(
|
|
1125
982
|
() => ({
|
|
1126
|
-
a: (props) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
1145
|
-
p: (props) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
1053
|
+
children: markdownRenderReady ? streaming ? /* @__PURE__ */ jsx2(
|
|
1197
1054
|
StreamingMarkdownBlocks,
|
|
1198
1055
|
{
|
|
1199
1056
|
content: normalizedContent,
|
|
1200
1057
|
components: markdownComponents
|
|
1201
1058
|
}
|
|
1202
|
-
) : /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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 =
|
|
1095
|
+
const blocks = useMemo(
|
|
1239
1096
|
() => splitStreamingMarkdownBlocks(content),
|
|
1240
1097
|
[content]
|
|
1241
1098
|
);
|
|
1242
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1575
|
-
/* @__PURE__ */
|
|
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
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
props
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
"
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
"
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
"
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1643
|
-
|
|
1644
|
-
mention.
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
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 =
|
|
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__ */
|
|
1526
|
+
return /* @__PURE__ */ jsx2(PathLink, { href: text, onLinkClick, children });
|
|
1666
1527
|
}
|
|
1667
|
-
return /* @__PURE__ */
|
|
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 =
|
|
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__ */
|
|
1618
|
+
return /* @__PURE__ */ jsx2("img", { ...props, src: resolvedSrc, alt, className });
|
|
1758
1619
|
}
|
|
1759
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1729
|
+
return /* @__PURE__ */ jsx2("span", { ...props });
|
|
1869
1730
|
}
|
|
1870
|
-
return /* @__PURE__ */
|
|
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-
|
|
2098
|
-
if (kind !== "session" && kind !== "workspace-app" && kind !== "workspace-
|
|
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-
|
|
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:
|
|
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
|
|
2014
|
+
function referenceFileCountFromParam(value) {
|
|
2154
2015
|
if (!value) {
|
|
2155
2016
|
return void 0;
|
|
2156
2017
|
}
|
|
2157
|
-
|
|
2158
|
-
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
2432
|
-
/* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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-
|
|
2596
|
+
//# sourceMappingURL=chunk-K44WER5Z.js.map
|