@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.
- package/dist/AgentMentionSearchController-DqssJ2-b.d.ts +218 -0
- package/dist/agent-conversation/index.d.ts +4 -2
- 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 +3 -2
- package/dist/agent-message-center/index.js +547 -287
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/app/renderer/agentactivity.css +177 -17
- package/dist/{chunk-GZHQPPK2.js → chunk-267VY3EJ.js} +130 -43
- package/dist/chunk-267VY3EJ.js.map +1 -0
- package/dist/{chunk-KEKPOVQD.js → chunk-CABHBFYH.js} +2 -2
- package/dist/{chunk-HSXDSFKB.js → chunk-EKATXC3W.js} +2 -2
- package/dist/{chunk-RLPVFX7V.js → chunk-FJYH2ZPX.js} +196 -322
- package/dist/chunk-FJYH2ZPX.js.map +1 -0
- package/dist/{chunk-ASAZDEQE.js → chunk-GWR6WGZY.js} +72 -22
- package/dist/chunk-GWR6WGZY.js.map +1 -0
- package/dist/{chunk-YXSO4ITT.js → chunk-HIREVEZM.js} +1 -1
- package/dist/chunk-HIREVEZM.js.map +1 -0
- package/dist/{chunk-VDNMTW2E.js → chunk-IXIGWLQY.js} +1 -1
- package/dist/chunk-IXIGWLQY.js.map +1 -0
- package/dist/{chunk-ZO3SZCIX.js → chunk-JNGYJ7GM.js} +6 -3
- package/dist/chunk-JNGYJ7GM.js.map +1 -0
- package/dist/{chunk-MU2LODEV.js → chunk-KWPL3JYS.js} +131 -13
- package/dist/chunk-KWPL3JYS.js.map +1 -0
- package/dist/{chunk-WME2V26J.js → chunk-LW2S255I.js} +21 -36
- package/dist/chunk-LW2S255I.js.map +1 -0
- package/dist/{chunk-3YZX5EUC.js → chunk-LWRYYGPZ.js} +610 -480
- package/dist/chunk-LWRYYGPZ.js.map +1 -0
- package/dist/{chunk-GEXHKJK5.js → chunk-MUZMBEFO.js} +35 -17
- package/dist/chunk-MUZMBEFO.js.map +1 -0
- package/dist/chunk-O5TUTXHT.js +196 -0
- package/dist/chunk-O5TUTXHT.js.map +1 -0
- package/dist/{chunk-FSTZDNRM.js → chunk-SIDWRR5I.js} +281 -183
- package/dist/chunk-SIDWRR5I.js.map +1 -0
- package/dist/context-mention-palette/index.d.ts +11 -170
- package/dist/context-mention-palette/index.js +7 -6
- package/dist/context-mention-provider.d.ts +6 -1
- package/dist/context-mention-provider.js +1 -1
- package/dist/i18n/index.d.ts +277 -179
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +56 -3
- package/dist/index.js +2706 -1700
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.d.ts +7 -1
- package/dist/workbench/contribution.js +6 -4
- package/dist/workbench/index.d.ts +5 -2
- package/dist/workbench/index.js +6 -4
- package/dist/workbench/launch.d.ts +2 -0
- package/dist/workbench/launch.js +2 -2
- package/dist/workbench/state.d.ts +3 -2
- package/dist/workbench/state.js +1 -1
- package/dist/workbench/types.d.ts +3 -0
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.js +2 -2
- package/dist/{workspaceLinkActions-BlLN8Pvz.d.ts → workspaceLinkActions-Mjktl_Be.d.ts} +3 -0
- package/package.json +15 -13
- package/dist/chunk-3YZX5EUC.js.map +0 -1
- package/dist/chunk-ASAZDEQE.js.map +0 -1
- package/dist/chunk-FSTZDNRM.js.map +0 -1
- package/dist/chunk-GEXHKJK5.js.map +0 -1
- package/dist/chunk-GZHQPPK2.js.map +0 -1
- package/dist/chunk-MU2LODEV.js.map +0 -1
- package/dist/chunk-RLPVFX7V.js.map +0 -1
- package/dist/chunk-VDNMTW2E.js.map +0 -1
- package/dist/chunk-WME2V26J.js.map +0 -1
- package/dist/chunk-YXSO4ITT.js.map +0 -1
- package/dist/chunk-ZO3SZCIX.js.map +0 -1
- /package/dist/{chunk-KEKPOVQD.js.map → chunk-CABHBFYH.js.map} +0 -0
- /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-
|
|
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
|
|
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)) {
|
|
@@ -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
|
|
679
|
-
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
920
|
+
const contentSignature = useMemo(
|
|
1058
921
|
() => hashMarkdownProfilerContent(stabilizedContent),
|
|
1059
922
|
[stabilizedContent]
|
|
1060
923
|
);
|
|
1061
|
-
const normalizedContent =
|
|
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 =
|
|
981
|
+
const markdownComponents = useMemo(
|
|
1119
982
|
() => ({
|
|
1120
|
-
a: (props) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
1139
|
-
p: (props) => /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
1053
|
+
children: markdownRenderReady ? streaming ? /* @__PURE__ */ jsx2(
|
|
1191
1054
|
StreamingMarkdownBlocks,
|
|
1192
1055
|
{
|
|
1193
1056
|
content: normalizedContent,
|
|
1194
1057
|
components: markdownComponents
|
|
1195
1058
|
}
|
|
1196
|
-
) : /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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 =
|
|
1095
|
+
const blocks = useMemo(
|
|
1233
1096
|
() => splitStreamingMarkdownBlocks(content),
|
|
1234
1097
|
[content]
|
|
1235
1098
|
);
|
|
1236
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1569
|
-
/* @__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 })
|
|
1570
1433
|
]
|
|
1571
1434
|
}
|
|
1572
1435
|
);
|
|
@@ -1579,68 +1442,73 @@ function MentionLink({
|
|
|
1579
1442
|
...props
|
|
1580
1443
|
}) {
|
|
1581
1444
|
"use memo";
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
props
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
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
|
-
mention.
|
|
1639
|
-
|
|
1640
|
-
|
|
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__ */
|
|
1526
|
+
return /* @__PURE__ */ jsx2(PathLink, { href: text, onLinkClick, children });
|
|
1658
1527
|
}
|
|
1659
|
-
return /* @__PURE__ */
|
|
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 =
|
|
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__ */
|
|
1618
|
+
return /* @__PURE__ */ jsx2("img", { ...props, src: resolvedSrc, alt, className });
|
|
1750
1619
|
}
|
|
1751
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
1729
|
+
return /* @__PURE__ */ jsx2("span", { ...props });
|
|
1861
1730
|
}
|
|
1862
|
-
return /* @__PURE__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
2403
|
-
/* @__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(
|
|
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__ */
|
|
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__ */
|
|
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
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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__ */
|
|
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-
|
|
2596
|
+
//# sourceMappingURL=chunk-FJYH2ZPX.js.map
|