@tutti-os/agent-gui 0.0.15 → 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 +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 +2 -1
- 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 +144 -8
- package/dist/{chunk-H4HT3FE6.js → chunk-267VY3EJ.js} +40 -30
- package/dist/chunk-267VY3EJ.js.map +1 -0
- package/dist/{chunk-XHQGCP7A.js → chunk-CABHBFYH.js} +2 -2
- package/dist/{chunk-OFGXNXYT.js → chunk-EKATXC3W.js} +2 -2
- package/dist/{chunk-YKDFQADM.js → chunk-FJYH2ZPX.js} +177 -332
- package/dist/chunk-FJYH2ZPX.js.map +1 -0
- package/dist/{chunk-EK5RDKG7.js → chunk-GWR6WGZY.js} +21 -11
- package/dist/chunk-GWR6WGZY.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-U4F3COKL.js → chunk-KWPL3JYS.js} +83 -115
- package/dist/chunk-KWPL3JYS.js.map +1 -0
- package/dist/{chunk-2CA4NPP3.js → chunk-LW2S255I.js} +10 -7
- package/dist/{chunk-2CA4NPP3.js.map → chunk-LW2S255I.js.map} +1 -1
- package/dist/{chunk-SVOGXWFJ.js → chunk-LWRYYGPZ.js} +562 -468
- package/dist/chunk-LWRYYGPZ.js.map +1 -0
- package/dist/chunk-O5TUTXHT.js +196 -0
- package/dist/chunk-O5TUTXHT.js.map +1 -0
- package/dist/{chunk-KJPMZ7G5.js → chunk-SIDWRR5I.js} +39 -17
- package/dist/chunk-SIDWRR5I.js.map +1 -0
- 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 +38 -16
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +22 -2
- package/dist/index.js +1825 -1303
- 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-XHQGCP7A.js.map → chunk-CABHBFYH.js.map} +0 -0
- /package/dist/{chunk-OFGXNXYT.js.map → chunk-EKATXC3W.js.map} +0 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { AgentContextMentionProvider } from './context-mention-provider.js';
|
|
2
|
+
import { MentionPaletteState, MentionPaletteGroup } from '@tutti-os/ui-rich-text/at-panel';
|
|
3
|
+
|
|
4
|
+
type AgentFileMentionKind = "file" | "directory" | "unknown";
|
|
5
|
+
type AgentMentionFileNavigationAction = "agent-generated-folder" | "agent-generated-folder-back";
|
|
6
|
+
type AgentMentionScope = "my_sessions" | "collab_sessions";
|
|
7
|
+
/** workspace-reference 句柄的来源(与 daemon `reference list --source` 一致)。 */
|
|
8
|
+
type AgentMentionReferenceSource = "app" | "task";
|
|
9
|
+
interface AgentMentionFileItem {
|
|
10
|
+
kind: "file";
|
|
11
|
+
path: string;
|
|
12
|
+
href: string;
|
|
13
|
+
name: string;
|
|
14
|
+
entryKind: AgentFileMentionKind;
|
|
15
|
+
directoryPath: string;
|
|
16
|
+
score?: number;
|
|
17
|
+
thumbnailUrl?: string | null;
|
|
18
|
+
mentionNavigation?: AgentMentionFileNavigationAction;
|
|
19
|
+
childCount?: number;
|
|
20
|
+
}
|
|
21
|
+
interface AgentMentionSessionItem {
|
|
22
|
+
kind: "session";
|
|
23
|
+
href: string;
|
|
24
|
+
workspaceId: string;
|
|
25
|
+
targetId: string;
|
|
26
|
+
name: string;
|
|
27
|
+
title: string;
|
|
28
|
+
scope: AgentMentionScope;
|
|
29
|
+
initiatorName: string;
|
|
30
|
+
initiatorAvatarUrl?: string;
|
|
31
|
+
agentName: string;
|
|
32
|
+
status?: string;
|
|
33
|
+
inputPreview?: string;
|
|
34
|
+
summaryPreview?: string;
|
|
35
|
+
updatedAtUnixMs?: number;
|
|
36
|
+
}
|
|
37
|
+
interface AgentMentionWorkspaceIssueItem {
|
|
38
|
+
kind: "workspace-issue";
|
|
39
|
+
href: string;
|
|
40
|
+
workspaceId: string;
|
|
41
|
+
targetId: string;
|
|
42
|
+
topicId?: string;
|
|
43
|
+
name: string;
|
|
44
|
+
title: string;
|
|
45
|
+
creatorName?: string;
|
|
46
|
+
status?: string;
|
|
47
|
+
contentPreview?: string;
|
|
48
|
+
updatedAtUnixMs?: number;
|
|
49
|
+
}
|
|
50
|
+
interface AgentMentionWorkspaceAppItem {
|
|
51
|
+
kind: "workspace-app";
|
|
52
|
+
href: string;
|
|
53
|
+
workspaceId: string;
|
|
54
|
+
targetId: string;
|
|
55
|
+
appId: string;
|
|
56
|
+
name: string;
|
|
57
|
+
description?: string;
|
|
58
|
+
iconUrl?: string;
|
|
59
|
+
/** 应用是否能够提供产物文件(reference),决定 @ 面板行末尾是否展示「查看产物文件」入口。 */
|
|
60
|
+
referencesListSupported?: boolean;
|
|
61
|
+
}
|
|
62
|
+
interface AgentMentionWorkspaceReferenceItem {
|
|
63
|
+
kind: "workspace-reference";
|
|
64
|
+
href: string;
|
|
65
|
+
workspaceId: string;
|
|
66
|
+
/** URI path id:source=app 时为 appId,source=task 时为 topicId。 */
|
|
67
|
+
targetId: string;
|
|
68
|
+
source: AgentMentionReferenceSource;
|
|
69
|
+
/** 子级 id:app 子分组 / issueId。缺省表示整个 app / topic。 */
|
|
70
|
+
groupId?: string;
|
|
71
|
+
name: string;
|
|
72
|
+
iconUrl?: string;
|
|
73
|
+
/** 展示用文件数(来自 picker 节点 childCount);序列化不再展开文件。 */
|
|
74
|
+
fileCount: number;
|
|
75
|
+
}
|
|
76
|
+
interface AgentMentionWorkspaceAppFactoryItem {
|
|
77
|
+
kind: "workspace-app-factory";
|
|
78
|
+
href: string;
|
|
79
|
+
workspaceId: string;
|
|
80
|
+
targetId: string;
|
|
81
|
+
jobId: string;
|
|
82
|
+
name: string;
|
|
83
|
+
action?: string;
|
|
84
|
+
contextPath?: string;
|
|
85
|
+
}
|
|
86
|
+
type AgentContextMentionItem = AgentMentionFileItem | AgentMentionSessionItem | AgentMentionWorkspaceAppItem | AgentMentionWorkspaceReferenceItem | AgentMentionWorkspaceAppFactoryItem | AgentMentionWorkspaceIssueItem;
|
|
87
|
+
|
|
88
|
+
type AgentMentionProviderDiagnosticStatus = "success" | "timeout" | "error" | "missing";
|
|
89
|
+
interface AgentMentionProviderQueryDiagnostic {
|
|
90
|
+
durationMs: number;
|
|
91
|
+
errorKind?: string;
|
|
92
|
+
providerId: string;
|
|
93
|
+
resultCount: number;
|
|
94
|
+
status: AgentMentionProviderDiagnosticStatus;
|
|
95
|
+
}
|
|
96
|
+
interface AgentMentionSearchDiagnosticLog {
|
|
97
|
+
debounceMs: number;
|
|
98
|
+
durationMs: number;
|
|
99
|
+
errorKind?: string;
|
|
100
|
+
event: "agent_gui.mention_search";
|
|
101
|
+
filter: AgentMentionFilterId;
|
|
102
|
+
groupCount: number;
|
|
103
|
+
itemCount: number;
|
|
104
|
+
mode: "browse" | "results";
|
|
105
|
+
providerResults: AgentMentionProviderQueryDiagnostic[];
|
|
106
|
+
providerTimeoutMs: number;
|
|
107
|
+
queryLength: number;
|
|
108
|
+
requestId: number;
|
|
109
|
+
status: "ready" | "error";
|
|
110
|
+
workspaceId: string;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
type AgentMentionFilterId = "session" | "file" | "issue" | "app";
|
|
114
|
+
type AgentMentionGroupId = "apps" | "files" | "opened_files" | "agent_generated_files" | "my_sessions" | "collab_sessions" | "issues";
|
|
115
|
+
interface AgentMentionBrowseCategory {
|
|
116
|
+
id: AgentMentionFilterId;
|
|
117
|
+
label: string;
|
|
118
|
+
}
|
|
119
|
+
type AgentMentionGroup = MentionPaletteGroup<AgentContextMentionItem>;
|
|
120
|
+
type AgentMentionSearchState = MentionPaletteState<AgentContextMentionItem>;
|
|
121
|
+
interface AgentMentionSearchControllerOptions {
|
|
122
|
+
contextMentionProviders?: readonly AgentContextMentionProvider[];
|
|
123
|
+
debounceMs?: number;
|
|
124
|
+
fileLimit?: number;
|
|
125
|
+
issueLimit?: number;
|
|
126
|
+
browseCacheTtlMs?: number;
|
|
127
|
+
providerTimeoutMs?: number;
|
|
128
|
+
diagnosticInfoLogger?: (payload: AgentMentionSearchDiagnosticLog) => void;
|
|
129
|
+
diagnosticNow?: () => number;
|
|
130
|
+
diagnosticSlowThresholdMs?: number;
|
|
131
|
+
}
|
|
132
|
+
type Listener = (state: AgentMentionSearchState) => void;
|
|
133
|
+
declare class AgentMentionSearchController {
|
|
134
|
+
private readonly contextMentionProviders;
|
|
135
|
+
private readonly debounceMs;
|
|
136
|
+
private readonly fileLimit;
|
|
137
|
+
private readonly issueLimit;
|
|
138
|
+
private readonly browseCacheTtlMs;
|
|
139
|
+
private readonly providerTimeoutMs;
|
|
140
|
+
private readonly diagnosticInfoLogger;
|
|
141
|
+
private readonly diagnosticNow;
|
|
142
|
+
private readonly diagnosticSlowThresholdMs;
|
|
143
|
+
private readonly listeners;
|
|
144
|
+
private readonly expandedCounts;
|
|
145
|
+
private readonly totalCounts;
|
|
146
|
+
private timer;
|
|
147
|
+
private preloadCancel;
|
|
148
|
+
private pendingPreloadKey;
|
|
149
|
+
private requestId;
|
|
150
|
+
private disposed;
|
|
151
|
+
private activeWorkspaceId;
|
|
152
|
+
private currentUserId;
|
|
153
|
+
private currentFilter;
|
|
154
|
+
private currentQuery;
|
|
155
|
+
private currentSessionCwd;
|
|
156
|
+
private currentFileSearchLimit;
|
|
157
|
+
private currentIssueSearchLimit;
|
|
158
|
+
private agentGeneratedBrowsePath;
|
|
159
|
+
private rawGroups;
|
|
160
|
+
private state;
|
|
161
|
+
constructor(options: AgentMentionSearchControllerOptions);
|
|
162
|
+
subscribe(listener: Listener): () => void;
|
|
163
|
+
updateQuery(input: {
|
|
164
|
+
workspaceId: string;
|
|
165
|
+
currentUserId?: string | null;
|
|
166
|
+
query: string;
|
|
167
|
+
sessionCwd?: string | null;
|
|
168
|
+
}): void;
|
|
169
|
+
setFilter(filter: AgentMentionFilterId): void;
|
|
170
|
+
preloadBrowse(input: {
|
|
171
|
+
workspaceId: string;
|
|
172
|
+
currentUserId?: string | null;
|
|
173
|
+
sessionCwd?: string | null;
|
|
174
|
+
filter?: AgentMentionFilterId;
|
|
175
|
+
}): void;
|
|
176
|
+
private runBrowsePreload;
|
|
177
|
+
private cancelPendingPreload;
|
|
178
|
+
enterCategory(category: AgentMentionFilterId): void;
|
|
179
|
+
selectAgentGeneratedMentionItem(item: AgentContextMentionItem): boolean;
|
|
180
|
+
expandGroup(groupId: AgentMentionGroupId): void;
|
|
181
|
+
close(): void;
|
|
182
|
+
dispose(): void;
|
|
183
|
+
private startBrowseModeFetch;
|
|
184
|
+
private runSearch;
|
|
185
|
+
private runBrowseSearch;
|
|
186
|
+
private loadBrowseFetchResult;
|
|
187
|
+
private fetchBrowseResult;
|
|
188
|
+
private fetchFilterResult;
|
|
189
|
+
private queryProviderMentionItems;
|
|
190
|
+
private applyBrowseFetchResult;
|
|
191
|
+
private readBrowseCache;
|
|
192
|
+
private readBrowseCacheForBrowseInput;
|
|
193
|
+
private browseCacheKey;
|
|
194
|
+
private logBrowseCacheState;
|
|
195
|
+
private logLifecycle;
|
|
196
|
+
private providerIdsForDiagnostics;
|
|
197
|
+
private queryProviderMentionItemsById;
|
|
198
|
+
private logSearchDiagnostic;
|
|
199
|
+
private groupsFromRawGroups;
|
|
200
|
+
private emitBrowseState;
|
|
201
|
+
private canApply;
|
|
202
|
+
private clearTimer;
|
|
203
|
+
private resetExpandedCounts;
|
|
204
|
+
private resetSearchLimits;
|
|
205
|
+
private resetRawGroups;
|
|
206
|
+
private resetAgentGeneratedBrowsePath;
|
|
207
|
+
private resetTotalCounts;
|
|
208
|
+
private setState;
|
|
209
|
+
}
|
|
210
|
+
declare function preloadAgentMentionBrowse(input: {
|
|
211
|
+
workspaceId: string;
|
|
212
|
+
currentUserId?: string | null;
|
|
213
|
+
sessionCwd?: string | null;
|
|
214
|
+
contextMentionProviders?: readonly AgentContextMentionProvider[];
|
|
215
|
+
filter?: AgentMentionFilterId;
|
|
216
|
+
}): void;
|
|
217
|
+
|
|
218
|
+
export { type AgentContextMentionItem as A, type AgentMentionBrowseCategory as a, type AgentMentionFilterId as b, type AgentMentionGroup as c, type AgentMentionGroupId as d, AgentMentionSearchController as e, type AgentMentionSearchState as f, preloadAgentMentionBrowse as p };
|
|
@@ -11,9 +11,11 @@ import '@tutti-os/agent-activity-core';
|
|
|
11
11
|
interface AgentGUIProviderSkillOption {
|
|
12
12
|
name: string;
|
|
13
13
|
trigger: string;
|
|
14
|
-
sourceKind: "project" | "personal" | "bundled" | "plugin" | "system" | "tutti-injected";
|
|
14
|
+
sourceKind: "project" | "personal" | "bundled" | "plugin" | "system" | "tutti-injected" | "connector";
|
|
15
15
|
description?: string;
|
|
16
16
|
pluginName?: string;
|
|
17
|
+
path?: string;
|
|
18
|
+
kind?: "skill" | "connector";
|
|
17
19
|
}
|
|
18
20
|
|
|
19
21
|
interface AgentConversationFlowProps {
|
|
@@ -6,14 +6,15 @@ import {
|
|
|
6
6
|
projectAgentConversationVM,
|
|
7
7
|
reconcileProjectedAgentConversationVM,
|
|
8
8
|
useProjectedAgentConversation
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
11
|
-
import "../chunk-
|
|
9
|
+
} from "../chunk-267VY3EJ.js";
|
|
10
|
+
import "../chunk-FJYH2ZPX.js";
|
|
11
|
+
import "../chunk-KWPL3JYS.js";
|
|
12
12
|
import "../chunk-XJ34OIEQ.js";
|
|
13
|
+
import "../chunk-O5TUTXHT.js";
|
|
13
14
|
import "../chunk-TYGL25EL.js";
|
|
14
15
|
import {
|
|
15
16
|
translate
|
|
16
|
-
} from "../chunk-
|
|
17
|
+
} from "../chunk-SIDWRR5I.js";
|
|
17
18
|
import "../chunk-LUGELG5V.js";
|
|
18
19
|
import "../chunk-PJP5BUU6.js";
|
|
19
20
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../shared/WorkspaceAgentSessionDetail.tsx"],"sourcesContent":["import { useMemo, type JSX } from \"react\";\nimport type { WorkspaceLinkAction } from \"../contexts/workspace/presentation/renderer/actions/workspaceLinkActions\";\nimport { translate } from \"../i18n/index\";\nimport { AgentConversationFlow } from \"./agentConversation/components/AgentConversationFlow\";\nimport { useProjectedAgentConversation } from \"./agentConversation/projection/useProjectedAgentConversation\";\nimport type { WorkspaceAgentSessionDetailViewModel } from \"./workspaceAgentSessionDetailViewModel\";\n\ninterface WorkspaceAgentSessionDetailProps {\n detail: WorkspaceAgentSessionDetailViewModel;\n avoidGroupingEdits?: boolean;\n isLoading: boolean;\n timelineItemCount: number;\n onLinkAction?: (action: WorkspaceLinkAction) => void;\n toolCallsLabel: (count: number) => string;\n thinkingLabel?: string;\n loadingLabel?: string;\n rawTimelineJsonLabel?: string;\n showRawTimelineJson?: boolean;\n}\n\nexport function WorkspaceAgentSessionDetail({\n detail,\n avoidGroupingEdits = false,\n isLoading,\n timelineItemCount,\n onLinkAction,\n toolCallsLabel,\n thinkingLabel = translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n loadingLabel = translate(\"common.loading\"),\n rawTimelineJsonLabel,\n showRawTimelineJson = false\n}: WorkspaceAgentSessionDetailProps): JSX.Element {\n const conversation = useProjectedAgentConversation({\n detail,\n avoidGroupingEdits\n });\n const showLoadingSkeleton =\n detail.turns.length === 0 &&\n (isLoading ||\n detail.activity.status === \"waiting\" ||\n detail.activity.status === \"working\");\n const emptySummary =\n detail.activity.latestActivitySummary ||\n (timelineItemCount > 0\n ? translate(\"agentHost.workspaceAgentSessionDetailEmptyWithTimeline\")\n : translate(\"agentHost.workspaceAgentSessionDetailEmptyNoTimeline\"));\n const flowLabels = useMemo(\n () => ({\n thinkingLabel,\n toolCallsLabel,\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\"),\n rawTimelineJson: rawTimelineJsonLabel\n }),\n [rawTimelineJsonLabel, thinkingLabel, toolCallsLabel]\n );\n const emptyState = useMemo(\n () => (\n <div className=\"workspace-agents-status-panel__detail-empty\">\n {emptySummary}\n </div>\n ),\n [emptySummary]\n );\n\n return (\n <div className=\"workspace-agents-status-panel__detail\">\n <AgentConversationFlow\n conversation={detail.turns.length > 0 ? conversation : null}\n isLoading={showLoadingSkeleton}\n loadingLabel={loadingLabel}\n empty={emptyState}\n onLinkAction={onLinkAction}\n showRawTimelineJson={showRawTimelineJson}\n labels={flowLabels}\n />\n </div>\n );\n}\n\nexport function WorkspaceAgentSessionDetailSkeleton({\n loading = true,\n loadingLabel = translate(\"common.loading\")\n}: {\n loading?: boolean;\n loadingLabel?: string;\n}): JSX.Element {\n const flowLabels = useMemo(\n () => ({\n thinkingLabel: translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n toolCallsLabel: (count: number) =>\n translate(\"agentHost.workspaceAgentSessionDetailToolCalls\", { count }),\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\")\n }),\n []\n );\n\n if (!loading) {\n return <></>;\n }\n\n return (\n <div\n className=\"workspace-agents-status-panel__detail-skeleton\"\n data-testid=\"workspace-agents-status-panel-detail-skeleton\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n >\n <AgentConversationFlow\n conversation={null}\n isLoading\n loadingLabel={loadingLabel}\n loadingTestId=\"workspace-agents-status-panel-detail-skeleton\"\n empty={null}\n labels={flowLabels}\n />\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../shared/WorkspaceAgentSessionDetail.tsx"],"sourcesContent":["import { useMemo, type JSX } from \"react\";\nimport type { WorkspaceLinkAction } from \"../contexts/workspace/presentation/renderer/actions/workspaceLinkActions\";\nimport { translate } from \"../i18n/index\";\nimport { AgentConversationFlow } from \"./agentConversation/components/AgentConversationFlow\";\nimport { useProjectedAgentConversation } from \"./agentConversation/projection/useProjectedAgentConversation\";\nimport type { WorkspaceAgentSessionDetailViewModel } from \"./workspaceAgentSessionDetailViewModel\";\n\ninterface WorkspaceAgentSessionDetailProps {\n detail: WorkspaceAgentSessionDetailViewModel;\n avoidGroupingEdits?: boolean;\n isLoading: boolean;\n timelineItemCount: number;\n onLinkAction?: (action: WorkspaceLinkAction) => void;\n toolCallsLabel: (count: number) => string;\n thinkingLabel?: string;\n loadingLabel?: string;\n rawTimelineJsonLabel?: string;\n showRawTimelineJson?: boolean;\n}\n\nexport function WorkspaceAgentSessionDetail({\n detail,\n avoidGroupingEdits = false,\n isLoading,\n timelineItemCount,\n onLinkAction,\n toolCallsLabel,\n thinkingLabel = translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n loadingLabel = translate(\"common.loading\"),\n rawTimelineJsonLabel,\n showRawTimelineJson = false\n}: WorkspaceAgentSessionDetailProps): JSX.Element {\n const conversation = useProjectedAgentConversation({\n detail,\n avoidGroupingEdits\n });\n const showLoadingSkeleton =\n detail.turns.length === 0 &&\n (isLoading ||\n detail.activity.status === \"waiting\" ||\n detail.activity.status === \"working\");\n const emptySummary =\n detail.activity.latestActivitySummary ||\n (timelineItemCount > 0\n ? translate(\"agentHost.workspaceAgentSessionDetailEmptyWithTimeline\")\n : translate(\"agentHost.workspaceAgentSessionDetailEmptyNoTimeline\"));\n const flowLabels = useMemo(\n () => ({\n thinkingLabel,\n toolCallsLabel,\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\"),\n rawTimelineJson: rawTimelineJsonLabel\n }),\n [rawTimelineJsonLabel, thinkingLabel, toolCallsLabel]\n );\n const emptyState = useMemo(\n () => (\n <div className=\"workspace-agents-status-panel__detail-empty\">\n {emptySummary}\n </div>\n ),\n [emptySummary]\n );\n\n return (\n <div className=\"workspace-agents-status-panel__detail\">\n <AgentConversationFlow\n conversation={detail.turns.length > 0 ? conversation : null}\n isLoading={showLoadingSkeleton}\n loadingLabel={loadingLabel}\n empty={emptyState}\n onLinkAction={onLinkAction}\n showRawTimelineJson={showRawTimelineJson}\n labels={flowLabels}\n />\n </div>\n );\n}\n\nexport function WorkspaceAgentSessionDetailSkeleton({\n loading = true,\n loadingLabel = translate(\"common.loading\")\n}: {\n loading?: boolean;\n loadingLabel?: string;\n}): JSX.Element {\n const flowLabels = useMemo(\n () => ({\n thinkingLabel: translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n toolCallsLabel: (count: number) =>\n translate(\"agentHost.workspaceAgentSessionDetailToolCalls\", { count }),\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\")\n }),\n []\n );\n\n if (!loading) {\n return <></>;\n }\n\n return (\n <div\n className=\"workspace-agents-status-panel__detail-skeleton\"\n data-testid=\"workspace-agents-status-panel-detail-skeleton\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n >\n <AgentConversationFlow\n conversation={null}\n isLoading\n loadingLabel={loadingLabel}\n loadingTestId=\"workspace-agents-status-panel-detail-skeleton\"\n empty={null}\n labels={flowLabels}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,eAAyB;AA0D5B,SAyCK,UAzCL;AAtCC,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,UAAU,+CAA+C;AAAA,EACzE,eAAe,UAAU,gBAAgB;AAAA,EACzC;AAAA,EACA,sBAAsB;AACxB,GAAkD;AAChD,QAAM,eAAe,8BAA8B;AAAA,IACjD;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,sBACJ,OAAO,MAAM,WAAW,MACvB,aACC,OAAO,SAAS,WAAW,aAC3B,OAAO,SAAS,WAAW;AAC/B,QAAM,eACJ,OAAO,SAAS,0BACf,oBAAoB,IACjB,UAAU,wDAAwD,IAClE,UAAU,sDAAsD;AACtE,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,UAAU,+BAA+B;AAAA,MACrD,aAAa,UAAU,gCAAgC;AAAA,MACvD,iBAAiB;AAAA,IACnB;AAAA,IACA,CAAC,sBAAsB,eAAe,cAAc;AAAA,EACtD;AACA,QAAM,aAAa;AAAA,IACjB,MACE,oBAAC,SAAI,WAAU,+CACZ,wBACH;AAAA,IAEF,CAAC,YAAY;AAAA,EACf;AAEA,SACE,oBAAC,SAAI,WAAU,yCACb;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,OAAO,MAAM,SAAS,IAAI,eAAe;AAAA,MACvD,WAAW;AAAA,MACX;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,QAAQ;AAAA;AAAA,EACV,GACF;AAEJ;","names":[]}
|
|
@@ -81,6 +81,7 @@ interface WorkspaceAgentMessageCenterCardProps {
|
|
|
81
81
|
highlighted?: boolean;
|
|
82
82
|
interactive?: boolean;
|
|
83
83
|
isSubmitting: boolean;
|
|
84
|
+
lazySummary?: boolean;
|
|
84
85
|
onLinkAction?: (action: WorkspaceLinkAction) => void;
|
|
85
86
|
onOpenChat: (input: {
|
|
86
87
|
agentSessionId: string;
|
|
@@ -93,7 +94,7 @@ interface WorkspaceAgentMessageCenterCardProps {
|
|
|
93
94
|
requestId: string;
|
|
94
95
|
}) => void;
|
|
95
96
|
}
|
|
96
|
-
declare
|
|
97
|
+
declare const WorkspaceAgentMessageCenterCard: react.NamedExoticComponent<WorkspaceAgentMessageCenterCardProps>;
|
|
97
98
|
declare function buildWorkspaceAgentInteractivePromptLabels(t: ReturnType<typeof useTranslation>["t"], provider?: string): {
|
|
98
99
|
approvalLead: string;
|
|
99
100
|
planLead: string;
|