@tutti-os/agent-gui 0.0.40 → 0.0.42
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/{AgentMessageMarkdown-GDgLA-im.d.ts → AgentMessageMarkdown-Cts0dAIm.d.ts} +1 -0
- package/dist/agent-conversation/index.d.ts +1 -1
- package/dist/agent-conversation/index.js +4 -4
- package/dist/agent-message-center/index.js +6 -6
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/app/renderer/agentactivity.css +524 -14
- package/dist/{chunk-UUM2GZXH.js → chunk-3PVSIL3H.js} +4 -4
- package/dist/{chunk-RE3AHBX6.js → chunk-3WZWZHAJ.js} +2 -2
- package/dist/{chunk-Y2DQJPTL.js → chunk-42WP3P5C.js} +2 -2
- package/dist/{chunk-Y5SE2XMU.js → chunk-5LVFYNIP.js} +5 -2
- package/dist/{chunk-Y5SE2XMU.js.map → chunk-5LVFYNIP.js.map} +1 -1
- package/dist/{chunk-EQ4RSPQE.js → chunk-5U4SXENC.js} +4 -4
- package/dist/{chunk-R7XH3C4Y.js → chunk-5UD2YEBX.js} +153 -36
- package/dist/chunk-5UD2YEBX.js.map +1 -0
- package/dist/{chunk-WJPEKD3F.js → chunk-LKOPLDPM.js} +5 -1
- package/dist/chunk-LKOPLDPM.js.map +1 -0
- package/dist/{chunk-WC34LVH6.js → chunk-OLZP2EFK.js} +230 -45
- package/dist/chunk-OLZP2EFK.js.map +1 -0
- package/dist/{chunk-DO7D7OOL.js → chunk-XTFRVACA.js} +23 -15
- package/dist/chunk-XTFRVACA.js.map +1 -0
- package/dist/context-mention-palette/index.js +5 -5
- package/dist/i18n/index.d.ts +4 -0
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +12 -2
- package/dist/index.js +1640 -1282
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.d.ts +4 -0
- package/dist/workbench/contribution.js +1 -1
- package/dist/workbench/index.d.ts +10 -3
- package/dist/workbench/index.js +1 -1
- package/dist/workspace-agent-generated-files.js +2 -2
- package/package.json +12 -12
- package/dist/chunk-DO7D7OOL.js.map +0 -1
- package/dist/chunk-R7XH3C4Y.js.map +0 -1
- package/dist/chunk-WC34LVH6.js.map +0 -1
- package/dist/chunk-WJPEKD3F.js.map +0 -1
- /package/dist/{chunk-UUM2GZXH.js.map → chunk-3PVSIL3H.js.map} +0 -0
- /package/dist/{chunk-RE3AHBX6.js.map → chunk-3WZWZHAJ.js.map} +0 -0
- /package/dist/{chunk-Y2DQJPTL.js.map → chunk-42WP3P5C.js.map} +0 -0
- /package/dist/{chunk-EQ4RSPQE.js.map → chunk-5U4SXENC.js.map} +0 -0
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
} from "./chunk-22L4VWUR.js";
|
|
19
19
|
import {
|
|
20
20
|
agentGuiDockIconUrls,
|
|
21
|
+
clampAgentGUIConversationRailWidthPx,
|
|
21
22
|
resolveAgentGUIExpandedWindowFrame,
|
|
22
23
|
shouldAutoCollapseAgentGUIConversationRail
|
|
23
24
|
} from "./chunk-Q75AK47T.js";
|
|
@@ -29,59 +30,123 @@ import {
|
|
|
29
30
|
} from "@tutti-os/workbench-surface";
|
|
30
31
|
|
|
31
32
|
// workbench/header.ts
|
|
32
|
-
import {
|
|
33
|
-
|
|
33
|
+
import {
|
|
34
|
+
createElement
|
|
35
|
+
} from "react";
|
|
36
|
+
import {
|
|
37
|
+
Button,
|
|
38
|
+
PanelIcon,
|
|
39
|
+
Tooltip,
|
|
40
|
+
TooltipContent,
|
|
41
|
+
TooltipProvider,
|
|
42
|
+
TooltipTrigger,
|
|
43
|
+
cn
|
|
44
|
+
} from "@tutti-os/ui-system";
|
|
34
45
|
import { CreateChatIcon } from "@tutti-os/ui-system/icons";
|
|
35
|
-
var headerChromeIconButtonClassName = "
|
|
36
|
-
var
|
|
46
|
+
var headerChromeIconButtonClassName = "agent-gui-workbench-header__icon-button";
|
|
47
|
+
var conversationRailToggleButtonClassName = "agent-gui-workbench-header__icon-button agent-gui-workbench-header__rail-toggle";
|
|
48
|
+
var headerChromeIconClassName = "agent-gui-workbench-header__icon";
|
|
37
49
|
function AgentGuiWorkbenchHeader({
|
|
38
50
|
className,
|
|
39
51
|
copy,
|
|
40
|
-
defaultActions,
|
|
52
|
+
defaultActions: _defaultActions,
|
|
53
|
+
displayMode,
|
|
54
|
+
iconUrl,
|
|
41
55
|
isConversationRailAutoCollapsed,
|
|
42
56
|
isConversationRailCollapsed,
|
|
57
|
+
conversationRailWidthPx,
|
|
43
58
|
conversationTitle,
|
|
44
|
-
iconUrl,
|
|
45
59
|
onCreateConversation,
|
|
46
60
|
onToggleConversationRail,
|
|
47
61
|
title,
|
|
62
|
+
windowActions,
|
|
48
63
|
...headerProps
|
|
49
64
|
}) {
|
|
50
65
|
const toggleLabel = isConversationRailCollapsed ? copy.expandConversationRail : copy.collapseConversationRail;
|
|
51
66
|
const appTitle = title?.trim() || copy.fallbackAgentLabel;
|
|
52
67
|
const sessionTitle = conversationTitle?.trim() || "";
|
|
68
|
+
const safeDisplayMode = displayMode ?? "floating";
|
|
69
|
+
const safeWindowActions = windowActions ?? {
|
|
70
|
+
close: () => void 0,
|
|
71
|
+
minimize: () => void 0,
|
|
72
|
+
toggleDisplayMode: () => void 0
|
|
73
|
+
};
|
|
74
|
+
const displayModeLabel = safeDisplayMode === "fullscreen" ? copy.restore ?? "Restore" : copy.maximize ?? "Maximize";
|
|
75
|
+
const headerStyle = {
|
|
76
|
+
...headerProps.style ?? {},
|
|
77
|
+
...typeof conversationRailWidthPx === "number" && Number.isFinite(conversationRailWidthPx) ? {
|
|
78
|
+
"--agent-gui-workbench-header-rail-width": `${Math.round(conversationRailWidthPx)}px`
|
|
79
|
+
} : {}
|
|
80
|
+
};
|
|
53
81
|
return createElement(
|
|
54
82
|
"header",
|
|
55
83
|
{
|
|
56
84
|
...headerProps,
|
|
57
|
-
className: cn(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
85
|
+
className: cn("agent-gui-workbench-header", className),
|
|
86
|
+
"data-agent-gui-workbench-header": "true",
|
|
87
|
+
"data-agent-gui-workbench-header-collapsed": isConversationRailCollapsed ? "true" : "false",
|
|
88
|
+
style: headerStyle
|
|
61
89
|
},
|
|
62
90
|
createElement(
|
|
63
91
|
"div",
|
|
64
|
-
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
className: "mr-1 size-4 shrink-0 rounded-[4px]",
|
|
69
|
-
"data-agent-gui-workbench-header-icon": "true",
|
|
70
|
-
draggable: false,
|
|
71
|
-
src: iconUrl
|
|
72
|
-
}) : null,
|
|
92
|
+
{
|
|
93
|
+
className: "agent-gui-workbench-header__primary",
|
|
94
|
+
"data-agent-gui-workbench-header-primary": "true"
|
|
95
|
+
},
|
|
73
96
|
createElement(
|
|
74
|
-
"
|
|
97
|
+
"div",
|
|
75
98
|
{
|
|
76
|
-
className: "
|
|
99
|
+
className: "agent-gui-workbench-header__traffic-lights",
|
|
100
|
+
onDoubleClick: (event) => event.stopPropagation(),
|
|
101
|
+
onPointerDown: (event) => event.stopPropagation()
|
|
77
102
|
},
|
|
78
|
-
|
|
103
|
+
createTrafficLightButton({
|
|
104
|
+
label: copy.close ?? "Close",
|
|
105
|
+
onClick: safeWindowActions.close,
|
|
106
|
+
testId: "agent-gui-window-close",
|
|
107
|
+
tone: "close"
|
|
108
|
+
}),
|
|
109
|
+
createTrafficLightButton({
|
|
110
|
+
label: copy.minimize ?? "Minimize",
|
|
111
|
+
onClick: safeWindowActions.minimize,
|
|
112
|
+
testId: "agent-gui-window-minimize",
|
|
113
|
+
tone: "minimize"
|
|
114
|
+
}),
|
|
115
|
+
createTrafficLightButton({
|
|
116
|
+
label: displayModeLabel,
|
|
117
|
+
onClick: safeWindowActions.toggleDisplayMode,
|
|
118
|
+
pressed: safeDisplayMode === "fullscreen",
|
|
119
|
+
testId: "agent-gui-window-toggle-display-mode",
|
|
120
|
+
tone: "maximize"
|
|
121
|
+
})
|
|
122
|
+
),
|
|
123
|
+
createElement(
|
|
124
|
+
"div",
|
|
125
|
+
{
|
|
126
|
+
className: "agent-gui-workbench-header__agent-brand"
|
|
127
|
+
},
|
|
128
|
+
iconUrl ? createElement("img", {
|
|
129
|
+
alt: "",
|
|
130
|
+
"aria-hidden": true,
|
|
131
|
+
className: "agent-gui-workbench-header__agent-icon",
|
|
132
|
+
"data-agent-gui-workbench-header-icon": "true",
|
|
133
|
+
"data-testid": "agent-gui-window-title-icon",
|
|
134
|
+
draggable: false,
|
|
135
|
+
src: iconUrl
|
|
136
|
+
}) : null,
|
|
137
|
+
createElement(
|
|
138
|
+
"span",
|
|
139
|
+
{
|
|
140
|
+
className: "agent-gui-workbench-header__agent-name"
|
|
141
|
+
},
|
|
142
|
+
appTitle
|
|
143
|
+
)
|
|
79
144
|
),
|
|
80
145
|
createElement(
|
|
81
146
|
Button,
|
|
82
147
|
{
|
|
83
148
|
"aria-label": toggleLabel,
|
|
84
|
-
className:
|
|
149
|
+
className: conversationRailToggleButtonClassName,
|
|
85
150
|
"data-agent-gui-conversation-rail-auto-collapsed": isConversationRailAutoCollapsed ? "true" : void 0,
|
|
86
151
|
"data-agent-gui-conversation-rail-collapsed": isConversationRailCollapsed ? "true" : void 0,
|
|
87
152
|
"data-testid": "agent-gui-toggle-conversation-rail",
|
|
@@ -122,22 +187,59 @@ function AgentGuiWorkbenchHeader({
|
|
|
122
187
|
isConversationRailCollapsed && sessionTitle ? createElement(
|
|
123
188
|
"span",
|
|
124
189
|
{
|
|
125
|
-
className: "
|
|
190
|
+
className: "agent-gui-workbench-header__session-title"
|
|
126
191
|
},
|
|
127
|
-
|
|
192
|
+
createElement(
|
|
193
|
+
"span",
|
|
194
|
+
{
|
|
195
|
+
className: "agent-gui-workbench-header__title-text"
|
|
196
|
+
},
|
|
197
|
+
sessionTitle
|
|
198
|
+
)
|
|
128
199
|
) : null
|
|
129
200
|
),
|
|
130
|
-
createElement(
|
|
201
|
+
!isConversationRailCollapsed && sessionTitle ? createElement(
|
|
131
202
|
"div",
|
|
132
203
|
{
|
|
133
|
-
className: "
|
|
134
|
-
|
|
135
|
-
onPointerDown: (event) => event.stopPropagation()
|
|
204
|
+
className: "agent-gui-workbench-header__detail-title",
|
|
205
|
+
"data-testid": "agent-gui-window-detail-title"
|
|
136
206
|
},
|
|
137
|
-
|
|
138
|
-
|
|
207
|
+
createElement(
|
|
208
|
+
"span",
|
|
209
|
+
{
|
|
210
|
+
className: "agent-gui-workbench-header__title-text"
|
|
211
|
+
},
|
|
212
|
+
sessionTitle
|
|
213
|
+
)
|
|
214
|
+
) : null
|
|
139
215
|
);
|
|
140
216
|
}
|
|
217
|
+
function createTrafficLightButton(input) {
|
|
218
|
+
const button = createElement("button", {
|
|
219
|
+
"aria-label": input.label,
|
|
220
|
+
"aria-pressed": input.pressed,
|
|
221
|
+
className: "agent-gui-workbench-header__traffic-light",
|
|
222
|
+
"data-agent-gui-workbench-traffic-light": input.tone,
|
|
223
|
+
"data-testid": input.testId,
|
|
224
|
+
type: "button",
|
|
225
|
+
onClick: (event) => {
|
|
226
|
+
event.stopPropagation();
|
|
227
|
+
input.onClick();
|
|
228
|
+
},
|
|
229
|
+
onDoubleClick: (event) => event.stopPropagation(),
|
|
230
|
+
onPointerDown: (event) => event.stopPropagation()
|
|
231
|
+
});
|
|
232
|
+
return createElement(TooltipProvider, {
|
|
233
|
+
children: createElement(
|
|
234
|
+
Tooltip,
|
|
235
|
+
null,
|
|
236
|
+
createElement(TooltipTrigger, { asChild: true }, button),
|
|
237
|
+
createElement(TooltipContent, { side: "bottom" }, input.label)
|
|
238
|
+
),
|
|
239
|
+
delayDuration: 250,
|
|
240
|
+
skipDelayDuration: 0
|
|
241
|
+
});
|
|
242
|
+
}
|
|
141
243
|
|
|
142
244
|
// workbench/contribution.ts
|
|
143
245
|
var agentGuiWorkbenchDefaultNodeFrame = {
|
|
@@ -152,10 +254,14 @@ var AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT = "tutti:agent-gui-workbe
|
|
|
152
254
|
var AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT = "tutti:agent-gui-workbench-new-conversation";
|
|
153
255
|
var agentGuiWorkbenchDefaultCopy = {
|
|
154
256
|
collapseConversationRail: "Collapse conversation rail",
|
|
257
|
+
close: "Close",
|
|
155
258
|
expandConversationRail: "Expand conversation rail",
|
|
156
259
|
fallbackAgentLabel: "Agent",
|
|
260
|
+
maximize: "Maximize",
|
|
261
|
+
minimize: "Minimize",
|
|
157
262
|
newConversation: "New conversation",
|
|
158
|
-
nodeTitle: "Agent"
|
|
263
|
+
nodeTitle: "Agent",
|
|
264
|
+
restore: "Restore"
|
|
159
265
|
};
|
|
160
266
|
function createAgentGuiWorkbenchContribution(input) {
|
|
161
267
|
const nodeStateSource = createAgentGuiWorkbenchNodeStateSource({
|
|
@@ -200,8 +306,8 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
200
306
|
}
|
|
201
307
|
),
|
|
202
308
|
renderHeader: ({
|
|
203
|
-
defaultActions,
|
|
204
309
|
dragHandleProps,
|
|
310
|
+
displayMode,
|
|
205
311
|
externalNodeState,
|
|
206
312
|
instanceId,
|
|
207
313
|
isFocused,
|
|
@@ -219,6 +325,11 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
219
325
|
);
|
|
220
326
|
const isConversationRailAutoCollapsed = shouldAutoCollapseAgentGUIConversationRail(node.frame.width);
|
|
221
327
|
const isConversationRailCollapsed = nodeState.conversationRailCollapsed === true || isConversationRailAutoCollapsed;
|
|
328
|
+
const conversationRailWidthPx = clampAgentGUIConversationRailWidthPx(
|
|
329
|
+
nodeState.conversationRailWidthPx,
|
|
330
|
+
node.frame.width
|
|
331
|
+
);
|
|
332
|
+
const conversationTitle = input.resolveDockPopupTitle?.(workbenchState) ?? nodeState.lastActiveConversationTitle ?? null;
|
|
222
333
|
const persistConversationRailCollapsed = (collapsed) => {
|
|
223
334
|
nodeStateSource.writeNodeState({
|
|
224
335
|
instanceId,
|
|
@@ -257,12 +368,18 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
257
368
|
};
|
|
258
369
|
return createElement2(AgentGuiWorkbenchHeader, {
|
|
259
370
|
copy,
|
|
260
|
-
conversationTitle
|
|
261
|
-
|
|
371
|
+
conversationTitle,
|
|
372
|
+
conversationRailWidthPx,
|
|
373
|
+
displayMode,
|
|
262
374
|
iconUrl: agentGuiDockIconUrls[provider],
|
|
263
375
|
isConversationRailAutoCollapsed,
|
|
264
376
|
isConversationRailCollapsed,
|
|
265
377
|
title: providerTitle,
|
|
378
|
+
windowActions: {
|
|
379
|
+
close: windowActions.close,
|
|
380
|
+
minimize: windowActions.minimize,
|
|
381
|
+
toggleDisplayMode: windowActions.toggleDisplayMode
|
|
382
|
+
},
|
|
266
383
|
...dragHandleProps,
|
|
267
384
|
onCreateConversation: announceNewConversation,
|
|
268
385
|
onPointerDown: (event) => {
|
|
@@ -485,4 +602,4 @@ export {
|
|
|
485
602
|
resolveAgentGuiWorkbenchDefaultLaunchFrame,
|
|
486
603
|
resolveAgentGuiWorkbenchContributionCopy
|
|
487
604
|
};
|
|
488
|
-
//# sourceMappingURL=chunk-
|
|
605
|
+
//# sourceMappingURL=chunk-5UD2YEBX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../workbench/contribution.ts","../workbench/header.ts"],"sourcesContent":["import { createElement, type ReactNode } from \"react\";\nimport {\n getWorkbenchLayoutFrame,\n type WorkbenchContribution,\n type WorkbenchDockPreviewContent,\n type WorkbenchFrame,\n type WorkbenchHostDockEntry,\n type WorkbenchHostDockPopupItemInput,\n type WorkbenchHostLaunchRequest,\n type WorkbenchHostNodeBodyContext\n} from \"@tutti-os/workbench-surface\";\nimport {\n clampAgentGUIConversationRailWidthPx,\n resolveAgentGUIExpandedWindowFrame,\n shouldAutoCollapseAgentGUIConversationRail\n} from \"../agent-gui/agentGuiNode/model/agentGuiRailLayout.ts\";\nimport { agentGuiDockIconUrls } from \"../dockIcons.ts\";\nimport { AgentGuiWorkbenchHeader } from \"./header.ts\";\nimport {\n agentGuiWorkbenchDockEntryId,\n agentGuiWorkbenchProviderFromIdentifier,\n agentGuiWorkbenchTypeId,\n createAgentGuiWorkbenchLaunchDescriptor\n} from \"./launch.ts\";\nimport {\n agentGuiWorkbenchProviderFromInstanceId,\n createAgentGuiWorkbenchNodeStateSource,\n normalizeAgentGuiWorkbenchNodeState,\n normalizeAgentGuiWorkbenchState\n} from \"./state.ts\";\nimport {\n agentGuiWorkbenchProviderLabels,\n agentGuiWorkbenchProviders,\n isAgentGuiWorkbenchDefaultDockProvider,\n resolveAgentGuiWorkbenchProviderLabel\n} from \"./providerCatalog.ts\";\nimport type {\n AgentGuiWorkbenchNodeState,\n AgentGuiWorkbenchProvider,\n AgentGuiWorkbenchState\n} from \"./types.ts\";\n\nexport const agentGuiWorkbenchDefaultNodeFrame: WorkbenchFrame = {\n height: 560,\n width: 1040,\n x: 140,\n y: 48\n};\n\nexport const agentGuiWorkbenchDefaultUsableHeightRatio = 0.7;\nexport const agentGuiWorkbenchCompactVisibleAreaRatio = 0.9;\n\nexport const AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT =\n \"tutti:agent-gui-workbench-conversation-rail-toggle\";\n\nexport const AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT =\n \"tutti:agent-gui-workbench-new-conversation\";\n\nexport interface AgentGuiWorkbenchConversationRailToggleDetail {\n conversationRailCollapsed: boolean;\n instanceId: string;\n}\n\nexport interface AgentGuiWorkbenchNewConversationDetail {\n instanceId: string;\n}\n\nexport interface AgentGuiWorkbenchContributionCopy {\n collapseConversationRail: string;\n close: string;\n expandConversationRail: string;\n fallbackAgentLabel: string;\n maximize: string;\n minimize: string;\n newConversation: string;\n nodeTitle: string;\n restore: string;\n}\n\nexport type AgentGuiWorkbenchContributionCopyOverrides =\n Partial<AgentGuiWorkbenchContributionCopy>;\n\nexport const agentGuiWorkbenchDefaultCopy: AgentGuiWorkbenchContributionCopy = {\n collapseConversationRail: \"Collapse conversation rail\",\n close: \"Close\",\n expandConversationRail: \"Expand conversation rail\",\n fallbackAgentLabel: \"Agent\",\n maximize: \"Maximize\",\n minimize: \"Minimize\",\n newConversation: \"New conversation\",\n nodeTitle: \"Agent\",\n restore: \"Restore\"\n};\n\nexport interface AgentGuiWorkbenchRenderBodyHelpers {\n nodeTypeId: string;\n onStateChange(state: AgentGuiWorkbenchState): void;\n provider: AgentGuiWorkbenchProvider;\n}\n\nexport interface CreateAgentGuiWorkbenchContributionInput {\n copy?: AgentGuiWorkbenchContributionCopyOverrides;\n dockIconUrls?: Partial<Record<AgentGuiWorkbenchProvider, string>>;\n dockSectionId?: string;\n frame?: WorkbenchFrame;\n id?: string;\n renderBody(\n context: WorkbenchHostNodeBodyContext<\n AgentGuiWorkbenchState | null,\n unknown\n >,\n helpers: AgentGuiWorkbenchRenderBodyHelpers\n ): ReactNode;\n renderPreview?(\n context: WorkbenchHostNodeBodyContext<\n AgentGuiWorkbenchState | null,\n unknown\n >,\n helpers: AgentGuiWorkbenchRenderBodyHelpers\n ): ReactNode;\n renderMinimizedPreview(\n context: WorkbenchHostNodeBodyContext<\n AgentGuiWorkbenchState | null,\n unknown\n >,\n helpers: AgentGuiWorkbenchRenderBodyHelpers\n ): ReactNode;\n resolveDockPopupTitle?: (\n state: AgentGuiWorkbenchState | null\n ) => string | null;\n resolveDockEntryVisibility?: (\n provider: AgentGuiWorkbenchProvider\n ) => WorkbenchHostDockEntry[\"visibility\"];\n workspaceId: string;\n}\n\nexport function createAgentGuiWorkbenchContribution(\n input: CreateAgentGuiWorkbenchContributionInput\n): WorkbenchContribution {\n const nodeStateSource = createAgentGuiWorkbenchNodeStateSource({\n workspaceId: input.workspaceId\n });\n const frame = input.frame ?? agentGuiWorkbenchDefaultNodeFrame;\n const copy = resolveAgentGuiWorkbenchContributionCopy(input.copy);\n return {\n dockEntries: agentGuiWorkbenchProviders.map((provider, index) =>\n createAgentGuiWorkbenchDockEntry({\n label: agentGuiWorkbenchProviderLabels[provider],\n iconUrl:\n input.dockIconUrls?.[provider] ?? agentGuiDockIconUrls[provider],\n order: index,\n provider,\n renderPreview: input.renderPreview,\n resolveDockPopupTitle: input.resolveDockPopupTitle,\n sectionId: input.dockSectionId ?? \"agents\",\n visibility:\n input.resolveDockEntryVisibility?.(provider) ??\n (isAgentGuiWorkbenchDefaultDockProvider(provider)\n ? \"always\"\n : \"never\")\n })\n ),\n externalStateSource: nodeStateSource.externalStateSource,\n id: input.id ?? \"workspace-agent-gui\",\n nodes: [\n {\n frame,\n instance: { mode: \"multi\" },\n renderBody: (context) =>\n input.renderBody(\n context as WorkbenchHostNodeBodyContext<\n AgentGuiWorkbenchState | null,\n unknown\n >,\n {\n nodeTypeId: agentGuiWorkbenchTypeId,\n onStateChange: (state) => {\n nodeStateSource.writeNodeState({\n instanceId: context.instanceId,\n nodeId: context.node.id,\n state,\n typeId: agentGuiWorkbenchTypeId\n });\n },\n provider: agentGuiWorkbenchProviderFromInstanceId(\n context.instanceId\n )\n }\n ),\n renderHeader: ({\n dragHandleProps,\n displayMode,\n externalNodeState,\n instanceId,\n isFocused,\n node,\n surfaceSize,\n windowActions\n }) => {\n const provider = agentGuiWorkbenchProviderFromInstanceId(instanceId);\n const providerTitle = resolveAgentGuiWorkbenchProviderLabel(provider);\n const rawWorkbenchState = (externalNodeState ??\n node.data.runtimeNodeState) as\n | Partial<AgentGuiWorkbenchNodeState>\n | null\n | undefined;\n const workbenchState =\n normalizeAgentGuiWorkbenchState(rawWorkbenchState);\n const nodeState = normalizeAgentGuiWorkbenchNodeState(\n rawWorkbenchState,\n provider\n );\n const isConversationRailAutoCollapsed =\n shouldAutoCollapseAgentGUIConversationRail(node.frame.width);\n const isConversationRailCollapsed =\n nodeState.conversationRailCollapsed === true ||\n isConversationRailAutoCollapsed;\n const conversationRailWidthPx = clampAgentGUIConversationRailWidthPx(\n nodeState.conversationRailWidthPx,\n node.frame.width\n );\n const conversationTitle =\n input.resolveDockPopupTitle?.(workbenchState) ??\n nodeState.lastActiveConversationTitle ??\n null;\n const persistConversationRailCollapsed = (collapsed: boolean) => {\n nodeStateSource.writeNodeState({\n instanceId,\n nodeId: node.id,\n state: {\n ...workbenchState,\n conversationRailCollapsed: collapsed\n },\n typeId: agentGuiWorkbenchTypeId\n });\n };\n const announceConversationRailCollapsed = (collapsed: boolean) => {\n window.dispatchEvent(\n new CustomEvent<AgentGuiWorkbenchConversationRailToggleDetail>(\n AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT,\n {\n detail: {\n conversationRailCollapsed: collapsed,\n instanceId\n }\n }\n )\n );\n };\n const announceNewConversation = () => {\n window.dispatchEvent(\n new CustomEvent<AgentGuiWorkbenchNewConversationDetail>(\n AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT,\n {\n detail: {\n instanceId\n }\n }\n )\n );\n };\n\n return createElement(AgentGuiWorkbenchHeader, {\n copy,\n conversationTitle,\n conversationRailWidthPx,\n displayMode,\n iconUrl: agentGuiDockIconUrls[provider],\n isConversationRailAutoCollapsed,\n isConversationRailCollapsed,\n title: providerTitle,\n windowActions: {\n close: windowActions.close,\n minimize: windowActions.minimize,\n toggleDisplayMode: windowActions.toggleDisplayMode\n },\n ...dragHandleProps,\n onCreateConversation: announceNewConversation,\n onPointerDown: (event) => {\n dragHandleProps.onPointerDown?.(event);\n if (!isFocused) {\n windowActions.focus();\n }\n },\n onToggleConversationRail: (nextCollapsed) => {\n announceConversationRailCollapsed(nextCollapsed);\n if (\n isConversationRailCollapsed &&\n nextCollapsed === false &&\n node.displayMode !== \"fullscreen\"\n ) {\n const expandedFrame = resolveAgentGUIExpandedWindowFrame({\n conversationRailWidthPx: nodeState.conversationRailWidthPx,\n desktopSize: surfaceSize,\n height: node.frame.height,\n position: {\n x: node.frame.x,\n y: node.frame.y\n },\n width: node.frame.width\n });\n\n windowActions.resize({\n ...node.frame,\n height: expandedFrame.size.height,\n width: expandedFrame.size.width,\n x: expandedFrame.position.x,\n y: expandedFrame.position.y\n });\n }\n\n persistConversationRailCollapsed(nextCollapsed);\n }\n });\n },\n title: copy.nodeTitle,\n typeId: agentGuiWorkbenchTypeId,\n window: {\n closable: true,\n defaultOpen: false,\n minimizedDock: {\n kind: \"component\",\n providePreview: (item) =>\n createAgentGuiWorkbenchPreviewContent({\n item,\n renderPreview: input.renderMinimizedPreview,\n resolveDockPopupTitle: input.resolveDockPopupTitle\n })\n },\n minimizable: true\n }\n }\n ],\n onLaunchRequest: (request) => {\n if (request.typeId !== agentGuiWorkbenchTypeId) {\n return null;\n }\n\n const {\n activation,\n dockEntryId,\n instanceId: descriptorInstanceId,\n provider,\n reuseDockEntryNode,\n targetAgentSessionId\n } = createAgentGuiWorkbenchLaunchDescriptor(request);\n // Locate an already-open node currently showing this session (its launch\n // instanceId may differ from the session-keyed one, e.g. a conversation\n // started fresh as a draft) so we focus it instead of opening a duplicate.\n const existingInstanceId = targetAgentSessionId\n ? nodeStateSource.findInstanceIdByAgentSessionId(targetAgentSessionId)\n : null;\n const instanceId = existingInstanceId ?? descriptorInstanceId;\n const title = resolveAgentGuiWorkbenchProviderLabel(provider);\n if (targetAgentSessionId) {\n const previousState = nodeStateSource.readNodeState({\n instanceId,\n typeId: agentGuiWorkbenchTypeId\n });\n nodeStateSource.writeNodeState({\n instanceId,\n state: {\n ...normalizeAgentGuiWorkbenchState(previousState),\n ...(targetAgentSessionId\n ? { lastActiveAgentSessionId: targetAgentSessionId }\n : {})\n },\n typeId: agentGuiWorkbenchTypeId\n });\n }\n const defaultFrame = resolveAgentGuiWorkbenchDefaultLaunchFrame({\n frame,\n request\n });\n return {\n activation,\n defaultFrame,\n dockEntryId,\n framePolicy: isAgentGuiWorkbenchCompactVisibleFrame(defaultFrame, frame)\n ? \"absolute\"\n : \"cascade-same-type-centered\",\n instanceId,\n reuseDockEntryNode,\n title,\n typeId: agentGuiWorkbenchTypeId\n };\n }\n };\n}\n\nexport function resolveAgentGuiWorkbenchDefaultLaunchFrame(input: {\n frame: WorkbenchFrame;\n request: Pick<\n WorkbenchHostLaunchRequest,\n \"layoutConstraints\" | \"surfaceSize\"\n >;\n}): WorkbenchFrame {\n const layoutFrame = getWorkbenchLayoutFrame(\n input.request.surfaceSize,\n input.request.layoutConstraints\n );\n const defaultHeight = Math.round(\n layoutFrame.height * agentGuiWorkbenchDefaultUsableHeightRatio\n );\n const shouldUseCompactWidth = layoutFrame.width < input.frame.width;\n const shouldUseCompactHeight =\n layoutFrame.height <\n input.frame.height / agentGuiWorkbenchCompactVisibleAreaRatio;\n\n if (shouldUseCompactWidth || shouldUseCompactHeight) {\n const width = shouldUseCompactWidth\n ? Math.round(layoutFrame.width * agentGuiWorkbenchCompactVisibleAreaRatio)\n : input.frame.width;\n const height = Math.round(\n layoutFrame.height * agentGuiWorkbenchCompactVisibleAreaRatio\n );\n\n return {\n height,\n width,\n x: Math.round(layoutFrame.x + (layoutFrame.width - width) / 2),\n y: Math.round(layoutFrame.y + (layoutFrame.height - height) / 2)\n };\n }\n\n return {\n ...input.frame,\n height: defaultHeight\n };\n}\n\nfunction isAgentGuiWorkbenchCompactVisibleFrame(\n frame: WorkbenchFrame,\n defaultFrame: WorkbenchFrame\n): boolean {\n return frame.width !== defaultFrame.width || frame.x !== defaultFrame.x;\n}\n\nexport function resolveAgentGuiWorkbenchContributionCopy(\n copy?: AgentGuiWorkbenchContributionCopyOverrides\n): AgentGuiWorkbenchContributionCopy {\n return {\n ...agentGuiWorkbenchDefaultCopy,\n ...copy\n };\n}\n\nfunction createAgentGuiWorkbenchDockEntry(input: {\n iconUrl?: string;\n label: string;\n order: number;\n provider: AgentGuiWorkbenchProvider;\n renderPreview?: CreateAgentGuiWorkbenchContributionInput[\"renderPreview\"];\n resolveDockPopupTitle?: CreateAgentGuiWorkbenchContributionInput[\"resolveDockPopupTitle\"];\n sectionId: string;\n visibility: WorkbenchHostDockEntry[\"visibility\"];\n}): WorkbenchHostDockEntry {\n return {\n icon: createElement(\"img\", {\n alt: \"\",\n draggable: false,\n src: input.iconUrl\n }),\n iconSize: \"large\",\n id: agentGuiWorkbenchDockEntryId(input.provider),\n label: input.label,\n launchBehavior: \"enabled\",\n launchPayload: { provider: input.provider },\n matchNode: (node) =>\n node.data.typeId === agentGuiWorkbenchTypeId &&\n agentGuiWorkbenchProviderFromIdentifier(node.data.instanceId) ===\n input.provider,\n order: input.order,\n providePopupItemPreview: (item) =>\n input.renderPreview\n ? createAgentGuiWorkbenchPreviewContent({\n item,\n label: input.label,\n provider: input.provider,\n renderPreview: input.renderPreview,\n resolveDockPopupTitle: input.resolveDockPopupTitle\n })\n : null,\n resolvePopupItem: ({ externalNodeState }) => {\n const title =\n input.resolveDockPopupTitle?.(\n normalizeAgentGuiWorkbenchState(externalNodeState)\n ) ?? null;\n return {\n revision: `${input.provider}\\n${title ?? \"\"}`,\n title\n };\n },\n sectionId: input.sectionId,\n typeId: agentGuiWorkbenchTypeId,\n visibility: input.visibility\n };\n}\n\nfunction createAgentGuiWorkbenchPreviewContent(input: {\n item: WorkbenchHostDockPopupItemInput;\n label?: string;\n provider?: AgentGuiWorkbenchProvider;\n renderPreview: NonNullable<\n CreateAgentGuiWorkbenchContributionInput[\"renderPreview\"]\n >;\n resolveDockPopupTitle?: CreateAgentGuiWorkbenchContributionInput[\"resolveDockPopupTitle\"];\n}): WorkbenchDockPreviewContent {\n const { externalNodeState, node } = input.item;\n const state = normalizeAgentGuiWorkbenchState(externalNodeState);\n const title = input.resolveDockPopupTitle?.(state) ?? node.title;\n const provider =\n input.provider ??\n agentGuiWorkbenchProviderFromIdentifier(node.data.instanceId) ??\n agentGuiWorkbenchProviderFromInstanceId(node.data.instanceId);\n const label = input.label ?? resolveAgentGuiWorkbenchProviderLabel(provider);\n const lines = [label, state.lastActiveAgentSessionId].filter(\n (line): line is string => Boolean(line?.trim())\n );\n return {\n element: input.renderPreview(\n createAgentGuiWorkbenchPreviewBodyContext(input.item),\n {\n nodeTypeId: agentGuiWorkbenchTypeId,\n onStateChange: () => undefined,\n provider\n }\n ),\n kind: \"component\",\n revision: `${provider}\\n${title}\\n${lines.join(\"\\n\")}`\n };\n}\n\nfunction createAgentGuiWorkbenchPreviewBodyContext(\n input: WorkbenchHostDockPopupItemInput\n): WorkbenchHostNodeBodyContext<AgentGuiWorkbenchState | null, unknown> {\n return {\n activation: null,\n displayMode: input.node.displayMode,\n externalNodeState: input.externalNodeState as AgentGuiWorkbenchState | null,\n externalWorkspaceState: input.externalWorkspaceState,\n focus: () => undefined,\n host: input.host,\n instanceId: input.node.data.instanceId,\n instanceKey: input.node.data.instanceKey ?? null,\n isFocused: false,\n node: input.node,\n previewViewport: input.previewViewport,\n setNodeRuntimeState: () => undefined,\n setSnapshotNodeState: () => undefined\n };\n}\n","import {\n createElement,\n type CSSProperties,\n type HTMLAttributes,\n type ReactNode\n} from \"react\";\nimport type {\n WorkbenchDisplayMode,\n WorkbenchHostNodeHeaderWindowActions\n} from \"@tutti-os/workbench-surface\";\nimport {\n Button,\n PanelIcon,\n Tooltip,\n TooltipContent,\n TooltipProvider,\n TooltipTrigger,\n cn\n} from \"@tutti-os/ui-system\";\nimport { CreateChatIcon } from \"@tutti-os/ui-system/icons\";\n\nconst headerChromeIconButtonClassName =\n \"agent-gui-workbench-header__icon-button\";\n\nconst conversationRailToggleButtonClassName =\n \"agent-gui-workbench-header__icon-button agent-gui-workbench-header__rail-toggle\";\n\nconst headerChromeIconClassName = \"agent-gui-workbench-header__icon\";\n\nexport interface AgentGuiWorkbenchHeaderCopy {\n collapseConversationRail: string;\n close?: string;\n expandConversationRail: string;\n fallbackAgentLabel: string;\n maximize?: string;\n minimize?: string;\n newConversation: string;\n restore?: string;\n}\n\nexport interface AgentGuiWorkbenchHeaderProps extends HTMLAttributes<HTMLElement> {\n copy: AgentGuiWorkbenchHeaderCopy;\n defaultActions?: ReactNode;\n displayMode?: WorkbenchDisplayMode;\n iconUrl?: string;\n isConversationRailAutoCollapsed: boolean;\n isConversationRailCollapsed: boolean;\n conversationRailWidthPx?: number | null;\n conversationTitle?: string | null;\n onCreateConversation?: () => void;\n onToggleConversationRail: (nextCollapsed: boolean) => void;\n title?: string;\n windowActions?: Pick<\n WorkbenchHostNodeHeaderWindowActions,\n \"close\" | \"minimize\" | \"toggleDisplayMode\"\n >;\n}\n\nexport function AgentGuiWorkbenchHeader({\n className,\n copy,\n defaultActions: _defaultActions,\n displayMode,\n iconUrl,\n isConversationRailAutoCollapsed,\n isConversationRailCollapsed,\n conversationRailWidthPx,\n conversationTitle,\n onCreateConversation,\n onToggleConversationRail,\n title,\n windowActions,\n ...headerProps\n}: AgentGuiWorkbenchHeaderProps): ReactNode {\n const toggleLabel = isConversationRailCollapsed\n ? copy.expandConversationRail\n : copy.collapseConversationRail;\n const appTitle = title?.trim() || copy.fallbackAgentLabel;\n const sessionTitle = conversationTitle?.trim() || \"\";\n const safeDisplayMode = displayMode ?? \"floating\";\n const safeWindowActions = windowActions ?? {\n close: () => undefined,\n minimize: () => undefined,\n toggleDisplayMode: () => undefined\n };\n const displayModeLabel =\n safeDisplayMode === \"fullscreen\"\n ? (copy.restore ?? \"Restore\")\n : (copy.maximize ?? \"Maximize\");\n const headerStyle = {\n ...(headerProps.style ?? {}),\n ...(typeof conversationRailWidthPx === \"number\" &&\n Number.isFinite(conversationRailWidthPx)\n ? {\n \"--agent-gui-workbench-header-rail-width\": `${Math.round(conversationRailWidthPx)}px`\n }\n : {})\n } as CSSProperties;\n\n return createElement(\n \"header\",\n {\n ...headerProps,\n className: cn(\"agent-gui-workbench-header\", className),\n \"data-agent-gui-workbench-header\": \"true\",\n \"data-agent-gui-workbench-header-collapsed\": isConversationRailCollapsed\n ? \"true\"\n : \"false\",\n style: headerStyle\n },\n createElement(\n \"div\",\n {\n className: \"agent-gui-workbench-header__primary\",\n \"data-agent-gui-workbench-header-primary\": \"true\"\n },\n createElement(\n \"div\",\n {\n className: \"agent-gui-workbench-header__traffic-lights\",\n onDoubleClick: (event) => event.stopPropagation(),\n onPointerDown: (event) => event.stopPropagation()\n },\n createTrafficLightButton({\n label: copy.close ?? \"Close\",\n onClick: safeWindowActions.close,\n testId: \"agent-gui-window-close\",\n tone: \"close\"\n }),\n createTrafficLightButton({\n label: copy.minimize ?? \"Minimize\",\n onClick: safeWindowActions.minimize,\n testId: \"agent-gui-window-minimize\",\n tone: \"minimize\"\n }),\n createTrafficLightButton({\n label: displayModeLabel,\n onClick: safeWindowActions.toggleDisplayMode,\n pressed: safeDisplayMode === \"fullscreen\",\n testId: \"agent-gui-window-toggle-display-mode\",\n tone: \"maximize\"\n })\n ),\n createElement(\n \"div\",\n {\n className: \"agent-gui-workbench-header__agent-brand\"\n },\n iconUrl\n ? createElement(\"img\", {\n alt: \"\",\n \"aria-hidden\": true,\n className: \"agent-gui-workbench-header__agent-icon\",\n \"data-agent-gui-workbench-header-icon\": \"true\",\n \"data-testid\": \"agent-gui-window-title-icon\",\n draggable: false,\n src: iconUrl\n })\n : null,\n createElement(\n \"span\",\n {\n className: \"agent-gui-workbench-header__agent-name\"\n },\n appTitle\n )\n ),\n createElement(\n Button as never,\n {\n \"aria-label\": toggleLabel,\n className: conversationRailToggleButtonClassName,\n \"data-agent-gui-conversation-rail-auto-collapsed\":\n isConversationRailAutoCollapsed ? \"true\" : undefined,\n \"data-agent-gui-conversation-rail-collapsed\":\n isConversationRailCollapsed ? \"true\" : undefined,\n \"data-testid\": \"agent-gui-toggle-conversation-rail\",\n size: \"icon-sm\",\n title: toggleLabel,\n type: \"button\",\n variant: \"ghost\",\n onClick: (event) => {\n event.stopPropagation();\n onToggleConversationRail(!isConversationRailCollapsed);\n },\n onDoubleClick: (event) => event.stopPropagation(),\n onPointerDown: (event) => event.stopPropagation()\n },\n createElement(PanelIcon, { className: headerChromeIconClassName })\n ),\n isConversationRailCollapsed && onCreateConversation\n ? createElement(\n Button as never,\n {\n \"aria-label\": copy.newConversation,\n className: headerChromeIconButtonClassName,\n size: \"icon-sm\",\n title: copy.newConversation,\n type: \"button\",\n variant: \"ghost\",\n onClick: (event) => {\n event.stopPropagation();\n onCreateConversation();\n },\n onDoubleClick: (event) => event.stopPropagation(),\n onPointerDown: (event) => event.stopPropagation()\n },\n createElement(CreateChatIcon, {\n \"aria-hidden\": true,\n className: headerChromeIconClassName\n })\n )\n : null,\n isConversationRailCollapsed && sessionTitle\n ? createElement(\n \"span\",\n {\n className: \"agent-gui-workbench-header__session-title\"\n },\n createElement(\n \"span\",\n {\n className: \"agent-gui-workbench-header__title-text\"\n },\n sessionTitle\n )\n )\n : null\n ),\n !isConversationRailCollapsed && sessionTitle\n ? createElement(\n \"div\",\n {\n className: \"agent-gui-workbench-header__detail-title\",\n \"data-testid\": \"agent-gui-window-detail-title\"\n },\n createElement(\n \"span\",\n {\n className: \"agent-gui-workbench-header__title-text\"\n },\n sessionTitle\n )\n )\n : null\n );\n}\n\nfunction createTrafficLightButton(input: {\n label: string;\n onClick: () => void;\n pressed?: boolean;\n testId: string;\n tone: \"close\" | \"minimize\" | \"maximize\";\n}): ReactNode {\n const button = createElement(\"button\", {\n \"aria-label\": input.label,\n \"aria-pressed\": input.pressed,\n className: \"agent-gui-workbench-header__traffic-light\",\n \"data-agent-gui-workbench-traffic-light\": input.tone,\n \"data-testid\": input.testId,\n type: \"button\",\n onClick: (event) => {\n event.stopPropagation();\n input.onClick();\n },\n onDoubleClick: (event) => event.stopPropagation(),\n onPointerDown: (event) => event.stopPropagation()\n });\n\n return createElement(TooltipProvider, {\n children: createElement(\n Tooltip,\n null,\n createElement(TooltipTrigger, { asChild: true }, button),\n createElement(TooltipContent, { side: \"bottom\" }, input.label)\n ),\n delayDuration: 250,\n skipDelayDuration: 0\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,iBAAAA,sBAAqC;AAC9C;AAAA,EACE;AAAA,OAQK;;;ACVP;AAAA,EACE;AAAA,OAIK;AAKP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,sBAAsB;AAE/B,IAAM,kCACJ;AAEF,IAAM,wCACJ;AAEF,IAAM,4BAA4B;AA+B3B,SAAS,wBAAwB;AAAA,EACtC;AAAA,EACA;AAAA,EACA,gBAAgB;AAAA,EAChB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4C;AAC1C,QAAM,cAAc,8BAChB,KAAK,yBACL,KAAK;AACT,QAAM,WAAW,OAAO,KAAK,KAAK,KAAK;AACvC,QAAM,eAAe,mBAAmB,KAAK,KAAK;AAClD,QAAM,kBAAkB,eAAe;AACvC,QAAM,oBAAoB,iBAAiB;AAAA,IACzC,OAAO,MAAM;AAAA,IACb,UAAU,MAAM;AAAA,IAChB,mBAAmB,MAAM;AAAA,EAC3B;AACA,QAAM,mBACJ,oBAAoB,eACf,KAAK,WAAW,YAChB,KAAK,YAAY;AACxB,QAAM,cAAc;AAAA,IAClB,GAAI,YAAY,SAAS,CAAC;AAAA,IAC1B,GAAI,OAAO,4BAA4B,YACvC,OAAO,SAAS,uBAAuB,IACnC;AAAA,MACE,2CAA2C,GAAG,KAAK,MAAM,uBAAuB,CAAC;AAAA,IACnF,IACA,CAAC;AAAA,EACP;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,MACE,GAAG;AAAA,MACH,WAAW,GAAG,8BAA8B,SAAS;AAAA,MACrD,mCAAmC;AAAA,MACnC,6CAA6C,8BACzC,SACA;AAAA,MACJ,OAAO;AAAA,IACT;AAAA,IACA;AAAA,MACE;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,2CAA2C;AAAA,MAC7C;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,UACE,WAAW;AAAA,UACX,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAAA,UAChD,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAAA,QAClD;AAAA,QACA,yBAAyB;AAAA,UACvB,OAAO,KAAK,SAAS;AAAA,UACrB,SAAS,kBAAkB;AAAA,UAC3B,QAAQ;AAAA,UACR,MAAM;AAAA,QACR,CAAC;AAAA,QACD,yBAAyB;AAAA,UACvB,OAAO,KAAK,YAAY;AAAA,UACxB,SAAS,kBAAkB;AAAA,UAC3B,QAAQ;AAAA,UACR,MAAM;AAAA,QACR,CAAC;AAAA,QACD,yBAAyB;AAAA,UACvB,OAAO;AAAA,UACP,SAAS,kBAAkB;AAAA,UAC3B,SAAS,oBAAoB;AAAA,UAC7B,QAAQ;AAAA,UACR,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,UACE,WAAW;AAAA,QACb;AAAA,QACA,UACI,cAAc,OAAO;AAAA,UACnB,KAAK;AAAA,UACL,eAAe;AAAA,UACf,WAAW;AAAA,UACX,wCAAwC;AAAA,UACxC,eAAe;AAAA,UACf,WAAW;AAAA,UACX,KAAK;AAAA,QACP,CAAC,IACD;AAAA,QACJ;AAAA,UACE;AAAA,UACA;AAAA,YACE,WAAW;AAAA,UACb;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,UACE,cAAc;AAAA,UACd,WAAW;AAAA,UACX,mDACE,kCAAkC,SAAS;AAAA,UAC7C,8CACE,8BAA8B,SAAS;AAAA,UACzC,eAAe;AAAA,UACf,MAAM;AAAA,UACN,OAAO;AAAA,UACP,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS,CAAC,UAAU;AAClB,kBAAM,gBAAgB;AACtB,qCAAyB,CAAC,2BAA2B;AAAA,UACvD;AAAA,UACA,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAAA,UAChD,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAAA,QAClD;AAAA,QACA,cAAc,WAAW,EAAE,WAAW,0BAA0B,CAAC;AAAA,MACnE;AAAA,MACA,+BAA+B,uBAC3B;AAAA,QACE;AAAA,QACA;AAAA,UACE,cAAc,KAAK;AAAA,UACnB,WAAW;AAAA,UACX,MAAM;AAAA,UACN,OAAO,KAAK;AAAA,UACZ,MAAM;AAAA,UACN,SAAS;AAAA,UACT,SAAS,CAAC,UAAU;AAClB,kBAAM,gBAAgB;AACtB,iCAAqB;AAAA,UACvB;AAAA,UACA,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAAA,UAChD,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAAA,QAClD;AAAA,QACA,cAAc,gBAAgB;AAAA,UAC5B,eAAe;AAAA,UACf,WAAW;AAAA,QACb,CAAC;AAAA,MACH,IACA;AAAA,MACJ,+BAA+B,eAC3B;AAAA,QACE;AAAA,QACA;AAAA,UACE,WAAW;AAAA,QACb;AAAA,QACA;AAAA,UACE;AAAA,UACA;AAAA,YACE,WAAW;AAAA,UACb;AAAA,UACA;AAAA,QACF;AAAA,MACF,IACA;AAAA,IACN;AAAA,IACA,CAAC,+BAA+B,eAC5B;AAAA,MACE;AAAA,MACA;AAAA,QACE,WAAW;AAAA,QACX,eAAe;AAAA,MACjB;AAAA,MACA;AAAA,QACE;AAAA,QACA;AAAA,UACE,WAAW;AAAA,QACb;AAAA,QACA;AAAA,MACF;AAAA,IACF,IACA;AAAA,EACN;AACF;AAEA,SAAS,yBAAyB,OAMpB;AACZ,QAAM,SAAS,cAAc,UAAU;AAAA,IACrC,cAAc,MAAM;AAAA,IACpB,gBAAgB,MAAM;AAAA,IACtB,WAAW;AAAA,IACX,0CAA0C,MAAM;AAAA,IAChD,eAAe,MAAM;AAAA,IACrB,MAAM;AAAA,IACN,SAAS,CAAC,UAAU;AAClB,YAAM,gBAAgB;AACtB,YAAM,QAAQ;AAAA,IAChB;AAAA,IACA,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAAA,IAChD,eAAe,CAAC,UAAU,MAAM,gBAAgB;AAAA,EAClD,CAAC;AAED,SAAO,cAAc,iBAAiB;AAAA,IACpC,UAAU;AAAA,MACR;AAAA,MACA;AAAA,MACA,cAAc,gBAAgB,EAAE,SAAS,KAAK,GAAG,MAAM;AAAA,MACvD,cAAc,gBAAgB,EAAE,MAAM,SAAS,GAAG,MAAM,KAAK;AAAA,IAC/D;AAAA,IACA,eAAe;AAAA,IACf,mBAAmB;AAAA,EACrB,CAAC;AACH;;;AD9OO,IAAM,oCAAoD;AAAA,EAC/D,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,GAAG;AAAA,EACH,GAAG;AACL;AAEO,IAAM,4CAA4C;AAClD,IAAM,2CAA2C;AAEjD,IAAM,qDACX;AAEK,IAAM,6CACX;AA0BK,IAAM,+BAAkE;AAAA,EAC7E,0BAA0B;AAAA,EAC1B,OAAO;AAAA,EACP,wBAAwB;AAAA,EACxB,oBAAoB;AAAA,EACpB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB,WAAW;AAAA,EACX,SAAS;AACX;AA4CO,SAAS,oCACd,OACuB;AACvB,QAAM,kBAAkB,uCAAuC;AAAA,IAC7D,aAAa,MAAM;AAAA,EACrB,CAAC;AACD,QAAM,QAAQ,MAAM,SAAS;AAC7B,QAAM,OAAO,yCAAyC,MAAM,IAAI;AAChE,SAAO;AAAA,IACL,aAAa,2BAA2B;AAAA,MAAI,CAAC,UAAU,UACrD,iCAAiC;AAAA,QAC/B,OAAO,gCAAgC,QAAQ;AAAA,QAC/C,SACE,MAAM,eAAe,QAAQ,KAAK,qBAAqB,QAAQ;AAAA,QACjE,OAAO;AAAA,QACP;AAAA,QACA,eAAe,MAAM;AAAA,QACrB,uBAAuB,MAAM;AAAA,QAC7B,WAAW,MAAM,iBAAiB;AAAA,QAClC,YACE,MAAM,6BAA6B,QAAQ,MAC1C,uCAAuC,QAAQ,IAC5C,WACA;AAAA,MACR,CAAC;AAAA,IACH;AAAA,IACA,qBAAqB,gBAAgB;AAAA,IACrC,IAAI,MAAM,MAAM;AAAA,IAChB,OAAO;AAAA,MACL;AAAA,QACE;AAAA,QACA,UAAU,EAAE,MAAM,QAAQ;AAAA,QAC1B,YAAY,CAAC,YACX,MAAM;AAAA,UACJ;AAAA,UAIA;AAAA,YACE,YAAY;AAAA,YACZ,eAAe,CAAC,UAAU;AACxB,8BAAgB,eAAe;AAAA,gBAC7B,YAAY,QAAQ;AAAA,gBACpB,QAAQ,QAAQ,KAAK;AAAA,gBACrB;AAAA,gBACA,QAAQ;AAAA,cACV,CAAC;AAAA,YACH;AAAA,YACA,UAAU;AAAA,cACR,QAAQ;AAAA,YACV;AAAA,UACF;AAAA,QACF;AAAA,QACF,cAAc,CAAC;AAAA,UACb;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,MAAM;AACJ,gBAAM,WAAW,wCAAwC,UAAU;AACnE,gBAAM,gBAAgB,sCAAsC,QAAQ;AACpE,gBAAM,oBAAqB,qBACzB,KAAK,KAAK;AAIZ,gBAAM,iBACJ,gCAAgC,iBAAiB;AACnD,gBAAM,YAAY;AAAA,YAChB;AAAA,YACA;AAAA,UACF;AACA,gBAAM,kCACJ,2CAA2C,KAAK,MAAM,KAAK;AAC7D,gBAAM,8BACJ,UAAU,8BAA8B,QACxC;AACF,gBAAM,0BAA0B;AAAA,YAC9B,UAAU;AAAA,YACV,KAAK,MAAM;AAAA,UACb;AACA,gBAAM,oBACJ,MAAM,wBAAwB,cAAc,KAC5C,UAAU,+BACV;AACF,gBAAM,mCAAmC,CAAC,cAAuB;AAC/D,4BAAgB,eAAe;AAAA,cAC7B;AAAA,cACA,QAAQ,KAAK;AAAA,cACb,OAAO;AAAA,gBACL,GAAG;AAAA,gBACH,2BAA2B;AAAA,cAC7B;AAAA,cACA,QAAQ;AAAA,YACV,CAAC;AAAA,UACH;AACA,gBAAM,oCAAoC,CAAC,cAAuB;AAChE,mBAAO;AAAA,cACL,IAAI;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,QAAQ;AAAA,oBACN,2BAA2B;AAAA,oBAC3B;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AACA,gBAAM,0BAA0B,MAAM;AACpC,mBAAO;AAAA,cACL,IAAI;AAAA,gBACF;AAAA,gBACA;AAAA,kBACE,QAAQ;AAAA,oBACN;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AAAA,UACF;AAEA,iBAAOC,eAAc,yBAAyB;AAAA,YAC5C;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA,SAAS,qBAAqB,QAAQ;AAAA,YACtC;AAAA,YACA;AAAA,YACA,OAAO;AAAA,YACP,eAAe;AAAA,cACb,OAAO,cAAc;AAAA,cACrB,UAAU,cAAc;AAAA,cACxB,mBAAmB,cAAc;AAAA,YACnC;AAAA,YACA,GAAG;AAAA,YACH,sBAAsB;AAAA,YACtB,eAAe,CAAC,UAAU;AACxB,8BAAgB,gBAAgB,KAAK;AACrC,kBAAI,CAAC,WAAW;AACd,8BAAc,MAAM;AAAA,cACtB;AAAA,YACF;AAAA,YACA,0BAA0B,CAAC,kBAAkB;AAC3C,gDAAkC,aAAa;AAC/C,kBACE,+BACA,kBAAkB,SAClB,KAAK,gBAAgB,cACrB;AACA,sBAAM,gBAAgB,mCAAmC;AAAA,kBACvD,yBAAyB,UAAU;AAAA,kBACnC,aAAa;AAAA,kBACb,QAAQ,KAAK,MAAM;AAAA,kBACnB,UAAU;AAAA,oBACR,GAAG,KAAK,MAAM;AAAA,oBACd,GAAG,KAAK,MAAM;AAAA,kBAChB;AAAA,kBACA,OAAO,KAAK,MAAM;AAAA,gBACpB,CAAC;AAED,8BAAc,OAAO;AAAA,kBACnB,GAAG,KAAK;AAAA,kBACR,QAAQ,cAAc,KAAK;AAAA,kBAC3B,OAAO,cAAc,KAAK;AAAA,kBAC1B,GAAG,cAAc,SAAS;AAAA,kBAC1B,GAAG,cAAc,SAAS;AAAA,gBAC5B,CAAC;AAAA,cACH;AAEA,+CAAiC,aAAa;AAAA,YAChD;AAAA,UACF,CAAC;AAAA,QACH;AAAA,QACA,OAAO,KAAK;AAAA,QACZ,QAAQ;AAAA,QACR,QAAQ;AAAA,UACN,UAAU;AAAA,UACV,aAAa;AAAA,UACb,eAAe;AAAA,YACb,MAAM;AAAA,YACN,gBAAgB,CAAC,SACf,sCAAsC;AAAA,cACpC;AAAA,cACA,eAAe,MAAM;AAAA,cACrB,uBAAuB,MAAM;AAAA,YAC/B,CAAC;AAAA,UACL;AAAA,UACA,aAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF;AAAA,IACA,iBAAiB,CAAC,YAAY;AAC5B,UAAI,QAAQ,WAAW,yBAAyB;AAC9C,eAAO;AAAA,MACT;AAEA,YAAM;AAAA,QACJ;AAAA,QACA;AAAA,QACA,YAAY;AAAA,QACZ;AAAA,QACA;AAAA,QACA;AAAA,MACF,IAAI,wCAAwC,OAAO;AAInD,YAAM,qBAAqB,uBACvB,gBAAgB,+BAA+B,oBAAoB,IACnE;AACJ,YAAM,aAAa,sBAAsB;AACzC,YAAM,QAAQ,sCAAsC,QAAQ;AAC5D,UAAI,sBAAsB;AACxB,cAAM,gBAAgB,gBAAgB,cAAc;AAAA,UAClD;AAAA,UACA,QAAQ;AAAA,QACV,CAAC;AACD,wBAAgB,eAAe;AAAA,UAC7B;AAAA,UACA,OAAO;AAAA,YACL,GAAG,gCAAgC,aAAa;AAAA,YAChD,GAAI,uBACA,EAAE,0BAA0B,qBAAqB,IACjD,CAAC;AAAA,UACP;AAAA,UACA,QAAQ;AAAA,QACV,CAAC;AAAA,MACH;AACA,YAAM,eAAe,2CAA2C;AAAA,QAC9D;AAAA,QACA;AAAA,MACF,CAAC;AACD,aAAO;AAAA,QACL;AAAA,QACA;AAAA,QACA;AAAA,QACA,aAAa,uCAAuC,cAAc,KAAK,IACnE,aACA;AAAA,QACJ;AAAA,QACA;AAAA,QACA;AAAA,QACA,QAAQ;AAAA,MACV;AAAA,IACF;AAAA,EACF;AACF;AAEO,SAAS,2CAA2C,OAMxC;AACjB,QAAM,cAAc;AAAA,IAClB,MAAM,QAAQ;AAAA,IACd,MAAM,QAAQ;AAAA,EAChB;AACA,QAAM,gBAAgB,KAAK;AAAA,IACzB,YAAY,SAAS;AAAA,EACvB;AACA,QAAM,wBAAwB,YAAY,QAAQ,MAAM,MAAM;AAC9D,QAAM,yBACJ,YAAY,SACZ,MAAM,MAAM,SAAS;AAEvB,MAAI,yBAAyB,wBAAwB;AACnD,UAAM,QAAQ,wBACV,KAAK,MAAM,YAAY,QAAQ,wCAAwC,IACvE,MAAM,MAAM;AAChB,UAAM,SAAS,KAAK;AAAA,MAClB,YAAY,SAAS;AAAA,IACvB;AAEA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,GAAG,KAAK,MAAM,YAAY,KAAK,YAAY,QAAQ,SAAS,CAAC;AAAA,MAC7D,GAAG,KAAK,MAAM,YAAY,KAAK,YAAY,SAAS,UAAU,CAAC;AAAA,IACjE;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG,MAAM;AAAA,IACT,QAAQ;AAAA,EACV;AACF;AAEA,SAAS,uCACP,OACA,cACS;AACT,SAAO,MAAM,UAAU,aAAa,SAAS,MAAM,MAAM,aAAa;AACxE;AAEO,SAAS,yCACd,MACmC;AACnC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AACF;AAEA,SAAS,iCAAiC,OASf;AACzB,SAAO;AAAA,IACL,MAAMA,eAAc,OAAO;AAAA,MACzB,KAAK;AAAA,MACL,WAAW;AAAA,MACX,KAAK,MAAM;AAAA,IACb,CAAC;AAAA,IACD,UAAU;AAAA,IACV,IAAI,6BAA6B,MAAM,QAAQ;AAAA,IAC/C,OAAO,MAAM;AAAA,IACb,gBAAgB;AAAA,IAChB,eAAe,EAAE,UAAU,MAAM,SAAS;AAAA,IAC1C,WAAW,CAAC,SACV,KAAK,KAAK,WAAW,2BACrB,wCAAwC,KAAK,KAAK,UAAU,MAC1D,MAAM;AAAA,IACV,OAAO,MAAM;AAAA,IACb,yBAAyB,CAAC,SACxB,MAAM,gBACF,sCAAsC;AAAA,MACpC;AAAA,MACA,OAAO,MAAM;AAAA,MACb,UAAU,MAAM;AAAA,MAChB,eAAe,MAAM;AAAA,MACrB,uBAAuB,MAAM;AAAA,IAC/B,CAAC,IACD;AAAA,IACN,kBAAkB,CAAC,EAAE,kBAAkB,MAAM;AAC3C,YAAM,QACJ,MAAM;AAAA,QACJ,gCAAgC,iBAAiB;AAAA,MACnD,KAAK;AACP,aAAO;AAAA,QACL,UAAU,GAAG,MAAM,QAAQ;AAAA,EAAK,SAAS,EAAE;AAAA,QAC3C;AAAA,MACF;AAAA,IACF;AAAA,IACA,WAAW,MAAM;AAAA,IACjB,QAAQ;AAAA,IACR,YAAY,MAAM;AAAA,EACpB;AACF;AAEA,SAAS,sCAAsC,OAQf;AAC9B,QAAM,EAAE,mBAAmB,KAAK,IAAI,MAAM;AAC1C,QAAM,QAAQ,gCAAgC,iBAAiB;AAC/D,QAAM,QAAQ,MAAM,wBAAwB,KAAK,KAAK,KAAK;AAC3D,QAAM,WACJ,MAAM,YACN,wCAAwC,KAAK,KAAK,UAAU,KAC5D,wCAAwC,KAAK,KAAK,UAAU;AAC9D,QAAM,QAAQ,MAAM,SAAS,sCAAsC,QAAQ;AAC3E,QAAM,QAAQ,CAAC,OAAO,MAAM,wBAAwB,EAAE;AAAA,IACpD,CAAC,SAAyB,QAAQ,MAAM,KAAK,CAAC;AAAA,EAChD;AACA,SAAO;AAAA,IACL,SAAS,MAAM;AAAA,MACb,0CAA0C,MAAM,IAAI;AAAA,MACpD;AAAA,QACE,YAAY;AAAA,QACZ,eAAe,MAAM;AAAA,QACrB;AAAA,MACF;AAAA,IACF;AAAA,IACA,MAAM;AAAA,IACN,UAAU,GAAG,QAAQ;AAAA,EAAK,KAAK;AAAA,EAAK,MAAM,KAAK,IAAI,CAAC;AAAA,EACtD;AACF;AAEA,SAAS,0CACP,OACsE;AACtE,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,aAAa,MAAM,KAAK;AAAA,IACxB,mBAAmB,MAAM;AAAA,IACzB,wBAAwB,MAAM;AAAA,IAC9B,OAAO,MAAM;AAAA,IACb,MAAM,MAAM;AAAA,IACZ,YAAY,MAAM,KAAK,KAAK;AAAA,IAC5B,aAAa,MAAM,KAAK,KAAK,eAAe;AAAA,IAC5C,WAAW;AAAA,IACX,MAAM,MAAM;AAAA,IACZ,iBAAiB,MAAM;AAAA,IACvB,qBAAqB,MAAM;AAAA,IAC3B,sBAAsB,MAAM;AAAA,EAC9B;AACF;","names":["createElement","createElement"]}
|
|
@@ -146,6 +146,8 @@ var en = {
|
|
|
146
146
|
close: "Close",
|
|
147
147
|
confirm: "Confirm",
|
|
148
148
|
copy: "Copy",
|
|
149
|
+
copying: "Copying...",
|
|
150
|
+
copyFailed: "Copy failed",
|
|
149
151
|
create: "Create",
|
|
150
152
|
cut: "Cut",
|
|
151
153
|
delete: "Delete",
|
|
@@ -2557,6 +2559,8 @@ var zhCN = {
|
|
|
2557
2559
|
close: "\u5173\u95ED",
|
|
2558
2560
|
confirm: "\u786E\u8BA4",
|
|
2559
2561
|
copy: "\u590D\u5236",
|
|
2562
|
+
copying: "\u590D\u5236\u4E2D...",
|
|
2563
|
+
copyFailed: "\u590D\u5236\u5931\u8D25",
|
|
2560
2564
|
create: "\u521B\u5EFA",
|
|
2561
2565
|
cut: "\u526A\u5207",
|
|
2562
2566
|
delete: "\u5220\u9664",
|
|
@@ -4936,4 +4940,4 @@ export {
|
|
|
4936
4940
|
AgentGuiI18nProvider,
|
|
4937
4941
|
useTranslation
|
|
4938
4942
|
};
|
|
4939
|
-
//# sourceMappingURL=chunk-
|
|
4943
|
+
//# sourceMappingURL=chunk-LKOPLDPM.js.map
|