@tutti-os/agent-gui 0.0.40 → 0.0.41
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 +298 -21
- 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-WJPEKD3F.js → chunk-LKOPLDPM.js} +5 -1
- package/dist/chunk-LKOPLDPM.js.map +1 -0
- package/dist/{chunk-DO7D7OOL.js → chunk-MUJYJDZH.js} +11 -10
- package/dist/chunk-MUJYJDZH.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-R7XH3C4Y.js → chunk-QIPMH6XO.js} +135 -35
- package/dist/chunk-QIPMH6XO.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 +136 -102
- 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,115 @@ import {
|
|
|
29
30
|
} from "@tutti-os/workbench-surface";
|
|
30
31
|
|
|
31
32
|
// workbench/header.ts
|
|
32
|
-
import {
|
|
33
|
+
import {
|
|
34
|
+
createElement
|
|
35
|
+
} from "react";
|
|
33
36
|
import { Button, PanelIcon, cn } from "@tutti-os/ui-system";
|
|
34
37
|
import { CreateChatIcon } from "@tutti-os/ui-system/icons";
|
|
35
|
-
var headerChromeIconButtonClassName = "
|
|
36
|
-
var
|
|
38
|
+
var headerChromeIconButtonClassName = "agent-gui-workbench-header__icon-button";
|
|
39
|
+
var conversationRailToggleButtonClassName = "agent-gui-workbench-header__icon-button agent-gui-workbench-header__rail-toggle";
|
|
40
|
+
var headerChromeIconClassName = "agent-gui-workbench-header__icon";
|
|
37
41
|
function AgentGuiWorkbenchHeader({
|
|
38
42
|
className,
|
|
39
43
|
copy,
|
|
40
|
-
defaultActions,
|
|
44
|
+
defaultActions: _defaultActions,
|
|
45
|
+
displayMode,
|
|
46
|
+
iconUrl,
|
|
41
47
|
isConversationRailAutoCollapsed,
|
|
42
48
|
isConversationRailCollapsed,
|
|
49
|
+
conversationRailWidthPx,
|
|
43
50
|
conversationTitle,
|
|
44
|
-
iconUrl,
|
|
45
51
|
onCreateConversation,
|
|
46
52
|
onToggleConversationRail,
|
|
47
53
|
title,
|
|
54
|
+
windowActions,
|
|
48
55
|
...headerProps
|
|
49
56
|
}) {
|
|
50
57
|
const toggleLabel = isConversationRailCollapsed ? copy.expandConversationRail : copy.collapseConversationRail;
|
|
51
58
|
const appTitle = title?.trim() || copy.fallbackAgentLabel;
|
|
52
59
|
const sessionTitle = conversationTitle?.trim() || "";
|
|
60
|
+
const safeDisplayMode = displayMode ?? "floating";
|
|
61
|
+
const safeWindowActions = windowActions ?? {
|
|
62
|
+
close: () => void 0,
|
|
63
|
+
minimize: () => void 0,
|
|
64
|
+
toggleDisplayMode: () => void 0
|
|
65
|
+
};
|
|
66
|
+
const displayModeLabel = safeDisplayMode === "fullscreen" ? copy.restore ?? "Restore" : copy.maximize ?? "Maximize";
|
|
67
|
+
const headerStyle = {
|
|
68
|
+
...headerProps.style ?? {},
|
|
69
|
+
...typeof conversationRailWidthPx === "number" && Number.isFinite(conversationRailWidthPx) ? {
|
|
70
|
+
"--agent-gui-workbench-header-rail-width": `${Math.round(conversationRailWidthPx)}px`
|
|
71
|
+
} : {}
|
|
72
|
+
};
|
|
53
73
|
return createElement(
|
|
54
74
|
"header",
|
|
55
75
|
{
|
|
56
76
|
...headerProps,
|
|
57
|
-
className: cn(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
77
|
+
className: cn("agent-gui-workbench-header", className),
|
|
78
|
+
"data-agent-gui-workbench-header": "true",
|
|
79
|
+
"data-agent-gui-workbench-header-collapsed": isConversationRailCollapsed ? "true" : "false",
|
|
80
|
+
style: headerStyle
|
|
61
81
|
},
|
|
62
82
|
createElement(
|
|
63
83
|
"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,
|
|
84
|
+
{
|
|
85
|
+
className: "agent-gui-workbench-header__primary",
|
|
86
|
+
"data-agent-gui-workbench-header-primary": "true"
|
|
87
|
+
},
|
|
73
88
|
createElement(
|
|
74
|
-
"
|
|
89
|
+
"div",
|
|
75
90
|
{
|
|
76
|
-
className: "
|
|
91
|
+
className: "agent-gui-workbench-header__traffic-lights",
|
|
92
|
+
onDoubleClick: (event) => event.stopPropagation(),
|
|
93
|
+
onPointerDown: (event) => event.stopPropagation()
|
|
77
94
|
},
|
|
78
|
-
|
|
95
|
+
createTrafficLightButton({
|
|
96
|
+
label: copy.close ?? "Close",
|
|
97
|
+
onClick: safeWindowActions.close,
|
|
98
|
+
testId: "agent-gui-window-close",
|
|
99
|
+
tone: "close"
|
|
100
|
+
}),
|
|
101
|
+
createTrafficLightButton({
|
|
102
|
+
label: copy.minimize ?? "Minimize",
|
|
103
|
+
onClick: safeWindowActions.minimize,
|
|
104
|
+
testId: "agent-gui-window-minimize",
|
|
105
|
+
tone: "minimize"
|
|
106
|
+
}),
|
|
107
|
+
createTrafficLightButton({
|
|
108
|
+
label: displayModeLabel,
|
|
109
|
+
onClick: safeWindowActions.toggleDisplayMode,
|
|
110
|
+
pressed: safeDisplayMode === "fullscreen",
|
|
111
|
+
testId: "agent-gui-window-toggle-display-mode",
|
|
112
|
+
tone: "maximize"
|
|
113
|
+
})
|
|
114
|
+
),
|
|
115
|
+
createElement(
|
|
116
|
+
"div",
|
|
117
|
+
{
|
|
118
|
+
className: "agent-gui-workbench-header__agent-brand"
|
|
119
|
+
},
|
|
120
|
+
iconUrl ? createElement("img", {
|
|
121
|
+
alt: "",
|
|
122
|
+
"aria-hidden": true,
|
|
123
|
+
className: "agent-gui-workbench-header__agent-icon",
|
|
124
|
+
"data-agent-gui-workbench-header-icon": "true",
|
|
125
|
+
"data-testid": "agent-gui-window-title-icon",
|
|
126
|
+
draggable: false,
|
|
127
|
+
src: iconUrl
|
|
128
|
+
}) : null,
|
|
129
|
+
createElement(
|
|
130
|
+
"span",
|
|
131
|
+
{
|
|
132
|
+
className: "agent-gui-workbench-header__agent-name"
|
|
133
|
+
},
|
|
134
|
+
appTitle
|
|
135
|
+
)
|
|
79
136
|
),
|
|
80
137
|
createElement(
|
|
81
138
|
Button,
|
|
82
139
|
{
|
|
83
140
|
"aria-label": toggleLabel,
|
|
84
|
-
className:
|
|
141
|
+
className: conversationRailToggleButtonClassName,
|
|
85
142
|
"data-agent-gui-conversation-rail-auto-collapsed": isConversationRailAutoCollapsed ? "true" : void 0,
|
|
86
143
|
"data-agent-gui-conversation-rail-collapsed": isConversationRailCollapsed ? "true" : void 0,
|
|
87
144
|
"data-testid": "agent-gui-toggle-conversation-rail",
|
|
@@ -122,22 +179,50 @@ function AgentGuiWorkbenchHeader({
|
|
|
122
179
|
isConversationRailCollapsed && sessionTitle ? createElement(
|
|
123
180
|
"span",
|
|
124
181
|
{
|
|
125
|
-
className: "
|
|
182
|
+
className: "agent-gui-workbench-header__session-title"
|
|
126
183
|
},
|
|
127
|
-
|
|
184
|
+
createElement(
|
|
185
|
+
"span",
|
|
186
|
+
{
|
|
187
|
+
className: "agent-gui-workbench-header__title-text"
|
|
188
|
+
},
|
|
189
|
+
sessionTitle
|
|
190
|
+
)
|
|
128
191
|
) : null
|
|
129
192
|
),
|
|
130
|
-
createElement(
|
|
193
|
+
!isConversationRailCollapsed && sessionTitle ? createElement(
|
|
131
194
|
"div",
|
|
132
195
|
{
|
|
133
|
-
className: "
|
|
134
|
-
|
|
135
|
-
onPointerDown: (event) => event.stopPropagation()
|
|
196
|
+
className: "agent-gui-workbench-header__detail-title",
|
|
197
|
+
"data-testid": "agent-gui-window-detail-title"
|
|
136
198
|
},
|
|
137
|
-
|
|
138
|
-
|
|
199
|
+
createElement(
|
|
200
|
+
"span",
|
|
201
|
+
{
|
|
202
|
+
className: "agent-gui-workbench-header__title-text"
|
|
203
|
+
},
|
|
204
|
+
sessionTitle
|
|
205
|
+
)
|
|
206
|
+
) : null
|
|
139
207
|
);
|
|
140
208
|
}
|
|
209
|
+
function createTrafficLightButton(input) {
|
|
210
|
+
return createElement("button", {
|
|
211
|
+
"aria-label": input.label,
|
|
212
|
+
"aria-pressed": input.pressed,
|
|
213
|
+
className: "agent-gui-workbench-header__traffic-light",
|
|
214
|
+
"data-agent-gui-workbench-traffic-light": input.tone,
|
|
215
|
+
"data-testid": input.testId,
|
|
216
|
+
title: input.label,
|
|
217
|
+
type: "button",
|
|
218
|
+
onClick: (event) => {
|
|
219
|
+
event.stopPropagation();
|
|
220
|
+
input.onClick();
|
|
221
|
+
},
|
|
222
|
+
onDoubleClick: (event) => event.stopPropagation(),
|
|
223
|
+
onPointerDown: (event) => event.stopPropagation()
|
|
224
|
+
});
|
|
225
|
+
}
|
|
141
226
|
|
|
142
227
|
// workbench/contribution.ts
|
|
143
228
|
var agentGuiWorkbenchDefaultNodeFrame = {
|
|
@@ -152,10 +237,14 @@ var AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT = "tutti:agent-gui-workbe
|
|
|
152
237
|
var AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT = "tutti:agent-gui-workbench-new-conversation";
|
|
153
238
|
var agentGuiWorkbenchDefaultCopy = {
|
|
154
239
|
collapseConversationRail: "Collapse conversation rail",
|
|
240
|
+
close: "Close",
|
|
155
241
|
expandConversationRail: "Expand conversation rail",
|
|
156
242
|
fallbackAgentLabel: "Agent",
|
|
243
|
+
maximize: "Maximize",
|
|
244
|
+
minimize: "Minimize",
|
|
157
245
|
newConversation: "New conversation",
|
|
158
|
-
nodeTitle: "Agent"
|
|
246
|
+
nodeTitle: "Agent",
|
|
247
|
+
restore: "Restore"
|
|
159
248
|
};
|
|
160
249
|
function createAgentGuiWorkbenchContribution(input) {
|
|
161
250
|
const nodeStateSource = createAgentGuiWorkbenchNodeStateSource({
|
|
@@ -200,8 +289,8 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
200
289
|
}
|
|
201
290
|
),
|
|
202
291
|
renderHeader: ({
|
|
203
|
-
defaultActions,
|
|
204
292
|
dragHandleProps,
|
|
293
|
+
displayMode,
|
|
205
294
|
externalNodeState,
|
|
206
295
|
instanceId,
|
|
207
296
|
isFocused,
|
|
@@ -219,6 +308,11 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
219
308
|
);
|
|
220
309
|
const isConversationRailAutoCollapsed = shouldAutoCollapseAgentGUIConversationRail(node.frame.width);
|
|
221
310
|
const isConversationRailCollapsed = nodeState.conversationRailCollapsed === true || isConversationRailAutoCollapsed;
|
|
311
|
+
const conversationRailWidthPx = clampAgentGUIConversationRailWidthPx(
|
|
312
|
+
nodeState.conversationRailWidthPx,
|
|
313
|
+
node.frame.width
|
|
314
|
+
);
|
|
315
|
+
const conversationTitle = input.resolveDockPopupTitle?.(workbenchState) ?? nodeState.lastActiveConversationTitle ?? null;
|
|
222
316
|
const persistConversationRailCollapsed = (collapsed) => {
|
|
223
317
|
nodeStateSource.writeNodeState({
|
|
224
318
|
instanceId,
|
|
@@ -257,12 +351,18 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
257
351
|
};
|
|
258
352
|
return createElement2(AgentGuiWorkbenchHeader, {
|
|
259
353
|
copy,
|
|
260
|
-
conversationTitle
|
|
261
|
-
|
|
354
|
+
conversationTitle,
|
|
355
|
+
conversationRailWidthPx,
|
|
356
|
+
displayMode,
|
|
262
357
|
iconUrl: agentGuiDockIconUrls[provider],
|
|
263
358
|
isConversationRailAutoCollapsed,
|
|
264
359
|
isConversationRailCollapsed,
|
|
265
360
|
title: providerTitle,
|
|
361
|
+
windowActions: {
|
|
362
|
+
close: windowActions.close,
|
|
363
|
+
minimize: windowActions.minimize,
|
|
364
|
+
toggleDisplayMode: windowActions.toggleDisplayMode
|
|
365
|
+
},
|
|
266
366
|
...dragHandleProps,
|
|
267
367
|
onCreateConversation: announceNewConversation,
|
|
268
368
|
onPointerDown: (event) => {
|
|
@@ -485,4 +585,4 @@ export {
|
|
|
485
585
|
resolveAgentGuiWorkbenchDefaultLaunchFrame,
|
|
486
586
|
resolveAgentGuiWorkbenchContributionCopy
|
|
487
587
|
};
|
|
488
|
-
//# sourceMappingURL=chunk-
|
|
588
|
+
//# sourceMappingURL=chunk-QIPMH6XO.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 { Button, PanelIcon, cn } 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 return 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 title: input.label,\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"],"mappings":"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","names":["createElement","createElement"]}
|
|
@@ -4,12 +4,12 @@ import {
|
|
|
4
4
|
AgentMentionSearchController,
|
|
5
5
|
flattenAgentMentionPaletteEntries,
|
|
6
6
|
groupStartKeys
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-5U4SXENC.js";
|
|
8
|
+
import "../chunk-5LVFYNIP.js";
|
|
9
|
+
import "../chunk-42WP3P5C.js";
|
|
10
10
|
import "../chunk-MTFSQWZ6.js";
|
|
11
11
|
import "../chunk-IBIMGLCD.js";
|
|
12
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-3WZWZHAJ.js";
|
|
13
13
|
import "../chunk-Y35GDLP2.js";
|
|
14
14
|
import "../chunk-TXXWUG2J.js";
|
|
15
15
|
import "../chunk-TYGL25EL.js";
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
AGENT_CONTEXT_MENTION_PROVIDER_IDS
|
|
18
18
|
} from "../chunk-JM24HADP.js";
|
|
19
19
|
import "../chunk-GCBDIQDX.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-LKOPLDPM.js";
|
|
21
21
|
import "../chunk-LUGELG5V.js";
|
|
22
22
|
import "../chunk-PJP5BUU6.js";
|
|
23
23
|
export {
|
package/dist/i18n/index.d.ts
CHANGED
|
@@ -18,6 +18,8 @@ declare const agentGuiI18nResources: {
|
|
|
18
18
|
readonly close: "Close";
|
|
19
19
|
readonly confirm: "Confirm";
|
|
20
20
|
readonly copy: "Copy";
|
|
21
|
+
readonly copying: "Copying...";
|
|
22
|
+
readonly copyFailed: "Copy failed";
|
|
21
23
|
readonly create: "Create";
|
|
22
24
|
readonly cut: "Cut";
|
|
23
25
|
readonly delete: "Delete";
|
|
@@ -2415,6 +2417,8 @@ declare const agentGuiI18nResources: {
|
|
|
2415
2417
|
readonly close: "关闭";
|
|
2416
2418
|
readonly confirm: "确认";
|
|
2417
2419
|
readonly copy: "复制";
|
|
2420
|
+
readonly copying: "复制中...";
|
|
2421
|
+
readonly copyFailed: "复制失败";
|
|
2418
2422
|
readonly create: "创建";
|
|
2419
2423
|
readonly cut: "剪切";
|
|
2420
2424
|
readonly delete: "删除";
|
package/dist/i18n/index.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ import * as react from 'react';
|
|
|
5
5
|
import { PropsWithChildren, JSX } from 'react';
|
|
6
6
|
import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
|
|
7
7
|
import { n as AgentProvider, c as AgentGUIProviderTargetRef, f as AgentHostAgentSessionComposerSettings, d as AgentHostActivateAgentSessionResult, l as AgentHostUpdateAgentSessionSettingsResult, j as AgentHostAgentSessionState, k as AgentHostUnactivateAgentSessionResult, A as AgentGUINodeData, P as Point, b as AgentGUIProviderTarget, N as NodeFrame, a as AgentGUIProvider } from './types-xMz0lJWt.js';
|
|
8
|
-
import { h as AgentProbeSnapshot, A as AgentGUINodeViewModel, f as AgentMessageMarkdownWorkspaceAppIcon, c as AgentHostInputApi } from './AgentMessageMarkdown-
|
|
9
|
-
export { b as AgentHostApi, d as AgentHostRuntimeApi, e as AgentHostSelectFilesInput, g as AgentProbeProvider, i as AgentProviderProbeListInput, j as AgentProviderProbeListResult, k as AgentUsageQuota, l as AgentUsageSnapshot, P as PersistWriteResult, R as ReadWorkspaceAgentReadStateInput, W as WorkspaceAgentReadStateSnapshot, m as WriteWorkspaceAgentReadStateInput } from './AgentMessageMarkdown-
|
|
8
|
+
import { h as AgentProbeSnapshot, A as AgentGUINodeViewModel, f as AgentMessageMarkdownWorkspaceAppIcon, c as AgentHostInputApi } from './AgentMessageMarkdown-Cts0dAIm.js';
|
|
9
|
+
export { b as AgentHostApi, d as AgentHostRuntimeApi, e as AgentHostSelectFilesInput, g as AgentProbeProvider, i as AgentProviderProbeListInput, j as AgentProviderProbeListResult, k as AgentUsageQuota, l as AgentUsageSnapshot, P as PersistWriteResult, R as ReadWorkspaceAgentReadStateInput, W as WorkspaceAgentReadStateSnapshot, m as WriteWorkspaceAgentReadStateInput } from './AgentMessageMarkdown-Cts0dAIm.js';
|
|
10
10
|
import { ReferenceLocateTarget, WorkspaceFileReferenceAdapter, WorkspaceFileReference } from '@tutti-os/workspace-file-reference/contracts';
|
|
11
11
|
import { ReferenceSourceAggregator } from '@tutti-os/workspace-file-reference/core';
|
|
12
12
|
import { W as WorkspaceLinkAction } from './workspaceLinkActions-C6POH38D.js';
|
|
@@ -346,6 +346,15 @@ interface WorkspaceDesktopAgentProbesState {
|
|
|
346
346
|
}
|
|
347
347
|
type WorkspaceDesktopAgentProbeDemandChange = (provider: AgentProvider | null, sourceId?: string) => void;
|
|
348
348
|
|
|
349
|
+
interface AgentGUIComposerDefaults {
|
|
350
|
+
model?: string;
|
|
351
|
+
permissionModeId?: string;
|
|
352
|
+
reasoningEffort?: string;
|
|
353
|
+
}
|
|
354
|
+
interface AgentGUIRememberComposerDefaultsInput {
|
|
355
|
+
provider: AgentGUINodeData["provider"];
|
|
356
|
+
defaults: AgentGUIComposerDefaults | null;
|
|
357
|
+
}
|
|
349
358
|
interface AgentGUIOpenSessionRequest {
|
|
350
359
|
agentSessionId: string;
|
|
351
360
|
sequence: number;
|
|
@@ -430,6 +439,7 @@ interface AgentGUINodeProps {
|
|
|
430
439
|
onClose: () => void;
|
|
431
440
|
onResize: (frame: NodeFrame) => void;
|
|
432
441
|
onUpdateNode: (updater: (current: AgentGUINodeData) => AgentGUINodeData) => void;
|
|
442
|
+
onRememberComposerDefaults?: (input: AgentGUIRememberComposerDefaultsInput) => void | Promise<void>;
|
|
433
443
|
isMaximized?: boolean;
|
|
434
444
|
isActive: boolean;
|
|
435
445
|
composerFocusRequestSequence?: number | null;
|