@tutti-os/agent-gui 0.0.5 → 0.0.7
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/agent-message-center/index.d.ts +1 -0
- package/dist/agent-message-center/index.js +119 -32
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/app/renderer/agentactivity.css +28 -0
- package/dist/{chunk-C63Z2JWT.js → chunk-4RB33ETE.js} +81 -12
- package/dist/chunk-4RB33ETE.js.map +1 -0
- package/dist/{chunk-7ICAFTA2.js → chunk-DHOAJJ3K.js} +2 -2
- package/dist/{chunk-F55LU7IJ.js → chunk-VBNWIBNV.js} +15 -7
- package/dist/chunk-VBNWIBNV.js.map +1 -0
- package/dist/{chunk-BHCCGKOP.js → chunk-ZAVQMGAX.js} +5 -1
- package/dist/chunk-ZAVQMGAX.js.map +1 -0
- package/dist/i18n/index.d.ts +4 -0
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +306 -143
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.d.ts +3 -1
- package/dist/workbench/contribution.js +3 -1
- package/dist/workbench/index.js +1 -1
- package/dist/workspace-agent-generated-files.js +2 -2
- package/package.json +10 -10
- package/dist/chunk-BHCCGKOP.js.map +0 -1
- package/dist/chunk-C63Z2JWT.js.map +0 -1
- package/dist/chunk-F55LU7IJ.js.map +0 -1
- /package/dist/{chunk-7ICAFTA2.js.map → chunk-DHOAJJ3K.js.map} +0 -0
|
@@ -3,6 +3,30 @@
|
|
|
3
3
|
|
|
4
4
|
/* Restored agent activity renderer styles from the TSH desktop source during the GUI migration. */
|
|
5
5
|
|
|
6
|
+
[data-agent-gui-preview="true"] {
|
|
7
|
+
pointer-events: none !important;
|
|
8
|
+
user-select: none;
|
|
9
|
+
-webkit-user-select: none;
|
|
10
|
+
cursor: default !important;
|
|
11
|
+
caret-color: transparent;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
[data-agent-gui-preview="true"],
|
|
15
|
+
[data-agent-gui-preview="true"] *,
|
|
16
|
+
[data-agent-gui-preview="true"] *::before,
|
|
17
|
+
[data-agent-gui-preview="true"] *::after {
|
|
18
|
+
animation: none !important;
|
|
19
|
+
transition: none !important;
|
|
20
|
+
scroll-behavior: auto !important;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
[data-agent-gui-preview="true"] *,
|
|
24
|
+
[data-agent-gui-preview="true"] *::before,
|
|
25
|
+
[data-agent-gui-preview="true"] *::after {
|
|
26
|
+
caret-color: transparent !important;
|
|
27
|
+
cursor: default !important;
|
|
28
|
+
}
|
|
29
|
+
|
|
6
30
|
.workspace-agents-status-panel__detail-tool-code,
|
|
7
31
|
.workspace-agents-status-panel__detail-tool-terminal,
|
|
8
32
|
.workspace-agents-status-panel__detail-tool-diff,
|
|
@@ -3652,6 +3676,7 @@ aside.workspace-agents-status-panel
|
|
|
3652
3676
|
--agent-conversation-user-text: var(--text-primary);
|
|
3653
3677
|
--agent-conversation-user-bg: var(--agent-gui-surface-muted);
|
|
3654
3678
|
--agent-gui-detail-padding-x: 28px;
|
|
3679
|
+
--agent-gui-detail-flow-max-width: 1280px;
|
|
3655
3680
|
width: 100%;
|
|
3656
3681
|
height: 100%;
|
|
3657
3682
|
container: agent-gui-node / inline-size;
|
|
@@ -4993,7 +5018,10 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
4993
5018
|
bottom: 0;
|
|
4994
5019
|
z-index: 4;
|
|
4995
5020
|
display: grid;
|
|
5021
|
+
align-self: center;
|
|
5022
|
+
box-sizing: border-box;
|
|
4996
5023
|
gap: 0;
|
|
5024
|
+
width: min(100%, var(--agent-gui-detail-flow-max-width));
|
|
4997
5025
|
margin-top: auto;
|
|
4998
5026
|
padding-top: 0;
|
|
4999
5027
|
background: transparent;
|
|
@@ -103,6 +103,7 @@ var agentGuiWorkbenchDefaultNodeFrame = {
|
|
|
103
103
|
y: 48
|
|
104
104
|
};
|
|
105
105
|
var agentGuiWorkbenchDefaultUsableHeightRatio = 0.7;
|
|
106
|
+
var agentGuiWorkbenchCompactVisibleAreaRatio = 0.9;
|
|
106
107
|
var AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT = "nextop:agent-gui-workbench-conversation-rail-toggle";
|
|
107
108
|
var agentGuiWorkbenchDefaultCopy = {
|
|
108
109
|
collapseConversationRail: "Collapse conversation rail",
|
|
@@ -123,6 +124,7 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
123
124
|
iconUrl: input.dockIconUrls?.[provider] ?? agentGuiDockIconUrls[provider],
|
|
124
125
|
order: index,
|
|
125
126
|
provider,
|
|
127
|
+
renderPreview: input.renderPreview,
|
|
126
128
|
sectionId: input.dockSectionId ?? "agents",
|
|
127
129
|
visibility: input.resolveDockEntryVisibility?.(provider) ?? (isAgentGuiWorkbenchDefaultDockProvider(provider) ? "always" : "never")
|
|
128
130
|
})
|
|
@@ -270,14 +272,15 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
270
272
|
typeId: agentGuiWorkbenchTypeId
|
|
271
273
|
});
|
|
272
274
|
}
|
|
275
|
+
const defaultFrame = resolveAgentGuiWorkbenchDefaultLaunchFrame({
|
|
276
|
+
frame,
|
|
277
|
+
request
|
|
278
|
+
});
|
|
273
279
|
return {
|
|
274
280
|
activation,
|
|
275
|
-
defaultFrame
|
|
276
|
-
frame,
|
|
277
|
-
request
|
|
278
|
-
}),
|
|
281
|
+
defaultFrame,
|
|
279
282
|
dockEntryId,
|
|
280
|
-
framePolicy: "cascade-same-type-centered",
|
|
283
|
+
framePolicy: isAgentGuiWorkbenchCompactVisibleFrame(defaultFrame, frame) ? "absolute" : "cascade-same-type-centered",
|
|
281
284
|
instanceId,
|
|
282
285
|
reuseDockEntryNode,
|
|
283
286
|
title,
|
|
@@ -291,13 +294,31 @@ function resolveAgentGuiWorkbenchDefaultLaunchFrame(input) {
|
|
|
291
294
|
input.request.surfaceSize,
|
|
292
295
|
input.request.layoutConstraints
|
|
293
296
|
);
|
|
297
|
+
const defaultHeight = Math.round(
|
|
298
|
+
layoutFrame.height * agentGuiWorkbenchDefaultUsableHeightRatio
|
|
299
|
+
);
|
|
300
|
+
if (layoutFrame.width < input.frame.width || layoutFrame.height < input.frame.height) {
|
|
301
|
+
const width = Math.round(
|
|
302
|
+
layoutFrame.width * agentGuiWorkbenchCompactVisibleAreaRatio
|
|
303
|
+
);
|
|
304
|
+
const height = Math.round(
|
|
305
|
+
layoutFrame.height * agentGuiWorkbenchCompactVisibleAreaRatio
|
|
306
|
+
);
|
|
307
|
+
return {
|
|
308
|
+
height,
|
|
309
|
+
width,
|
|
310
|
+
x: Math.round(layoutFrame.x + (layoutFrame.width - width) / 2),
|
|
311
|
+
y: Math.round(layoutFrame.y + (layoutFrame.height - height) / 2)
|
|
312
|
+
};
|
|
313
|
+
}
|
|
294
314
|
return {
|
|
295
315
|
...input.frame,
|
|
296
|
-
height:
|
|
297
|
-
layoutFrame.height * agentGuiWorkbenchDefaultUsableHeightRatio
|
|
298
|
-
)
|
|
316
|
+
height: defaultHeight
|
|
299
317
|
};
|
|
300
318
|
}
|
|
319
|
+
function isAgentGuiWorkbenchCompactVisibleFrame(frame, defaultFrame) {
|
|
320
|
+
return frame.width !== defaultFrame.width || frame.x !== defaultFrame.x;
|
|
321
|
+
}
|
|
301
322
|
function resolveAgentGuiWorkbenchContributionCopy(copy) {
|
|
302
323
|
return {
|
|
303
324
|
...agentGuiWorkbenchDefaultCopy,
|
|
@@ -318,9 +339,40 @@ function createAgentGuiWorkbenchDockEntry(input) {
|
|
|
318
339
|
launchPayload: { provider: input.provider },
|
|
319
340
|
matchNode: (node) => node.data.typeId === agentGuiWorkbenchTypeId && agentGuiWorkbenchProviderFromIdentifier(node.data.instanceId) === input.provider,
|
|
320
341
|
order: input.order,
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
342
|
+
providePopupItemPreview: (item) => {
|
|
343
|
+
if (!input.renderPreview) {
|
|
344
|
+
return null;
|
|
345
|
+
}
|
|
346
|
+
const { externalNodeState, node } = item;
|
|
347
|
+
const state = externalNodeState ?? {};
|
|
348
|
+
const title = resolveAgentGuiWorkbenchDockPopupTitle(externalNodeState) ?? node.title;
|
|
349
|
+
const lines = [input.label, state.lastActiveAgentSessionId].filter(
|
|
350
|
+
(line) => Boolean(line?.trim())
|
|
351
|
+
);
|
|
352
|
+
const revision = `${input.provider}
|
|
353
|
+
${title}
|
|
354
|
+
${lines.join("\n")}`;
|
|
355
|
+
return {
|
|
356
|
+
element: input.renderPreview(
|
|
357
|
+
createAgentGuiWorkbenchPreviewBodyContext(item),
|
|
358
|
+
{
|
|
359
|
+
nodeTypeId: agentGuiWorkbenchTypeId,
|
|
360
|
+
onStateChange: () => void 0,
|
|
361
|
+
provider: input.provider
|
|
362
|
+
}
|
|
363
|
+
),
|
|
364
|
+
kind: "component",
|
|
365
|
+
revision
|
|
366
|
+
};
|
|
367
|
+
},
|
|
368
|
+
resolvePopupItem: ({ externalNodeState }) => {
|
|
369
|
+
const title = resolveAgentGuiWorkbenchDockPopupTitle(externalNodeState);
|
|
370
|
+
return {
|
|
371
|
+
revision: `${input.provider}
|
|
372
|
+
${title ?? ""}`,
|
|
373
|
+
title
|
|
374
|
+
};
|
|
375
|
+
},
|
|
324
376
|
sectionId: input.sectionId,
|
|
325
377
|
typeId: agentGuiWorkbenchTypeId,
|
|
326
378
|
visibility: input.visibility
|
|
@@ -330,15 +382,32 @@ function resolveAgentGuiWorkbenchDockPopupTitle(state) {
|
|
|
330
382
|
const title = state?.lastActiveConversationTitle;
|
|
331
383
|
return typeof title === "string" && title.trim() ? title.trim() : null;
|
|
332
384
|
}
|
|
385
|
+
function createAgentGuiWorkbenchPreviewBodyContext(input) {
|
|
386
|
+
return {
|
|
387
|
+
activation: null,
|
|
388
|
+
displayMode: input.node.displayMode,
|
|
389
|
+
externalNodeState: input.externalNodeState,
|
|
390
|
+
externalWorkspaceState: input.externalWorkspaceState,
|
|
391
|
+
focus: () => void 0,
|
|
392
|
+
host: input.host,
|
|
393
|
+
instanceId: input.node.data.instanceId,
|
|
394
|
+
instanceKey: input.node.data.instanceKey ?? null,
|
|
395
|
+
isFocused: false,
|
|
396
|
+
node: input.node,
|
|
397
|
+
setNodeRuntimeState: () => void 0,
|
|
398
|
+
setSnapshotNodeState: () => void 0
|
|
399
|
+
};
|
|
400
|
+
}
|
|
333
401
|
|
|
334
402
|
export {
|
|
335
403
|
AgentGuiWorkbenchHeader,
|
|
336
404
|
agentGuiWorkbenchDefaultNodeFrame,
|
|
337
405
|
agentGuiWorkbenchDefaultUsableHeightRatio,
|
|
406
|
+
agentGuiWorkbenchCompactVisibleAreaRatio,
|
|
338
407
|
AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT,
|
|
339
408
|
agentGuiWorkbenchDefaultCopy,
|
|
340
409
|
createAgentGuiWorkbenchContribution,
|
|
341
410
|
resolveAgentGuiWorkbenchDefaultLaunchFrame,
|
|
342
411
|
resolveAgentGuiWorkbenchContributionCopy
|
|
343
412
|
};
|
|
344
|
-
//# sourceMappingURL=chunk-
|
|
413
|
+
//# sourceMappingURL=chunk-4RB33ETE.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 WorkbenchFrame,\n type WorkbenchHostDockEntry,\n type WorkbenchHostDockPopupItemInput,\n type WorkbenchHostLaunchRequest,\n type WorkbenchHostNodeBodyContext\n} from \"@tutti-os/workbench-surface\";\nimport {\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 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 \"nextop:agent-gui-workbench-conversation-rail-toggle\";\n\nexport interface AgentGuiWorkbenchConversationRailToggleDetail {\n conversationRailCollapsed: boolean;\n instanceId: string;\n}\n\nexport interface AgentGuiWorkbenchContributionCopy {\n collapseConversationRail: string;\n expandConversationRail: string;\n fallbackAgentLabel: string;\n nodeTitle: string;\n}\n\nexport type AgentGuiWorkbenchContributionCopyOverrides =\n Partial<AgentGuiWorkbenchContributionCopy>;\n\nexport const agentGuiWorkbenchDefaultCopy: AgentGuiWorkbenchContributionCopy = {\n collapseConversationRail: \"Collapse conversation rail\",\n expandConversationRail: \"Expand conversation rail\",\n fallbackAgentLabel: \"Agent\",\n nodeTitle: \"Agent\"\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 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\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 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 state,\n typeId: agentGuiWorkbenchTypeId\n });\n },\n provider: agentGuiWorkbenchProviderFromInstanceId(\n context.instanceId\n )\n }\n ),\n renderHeader: ({\n defaultActions,\n dragHandleProps,\n externalNodeState,\n instanceId,\n isFocused,\n node,\n surfaceSize,\n windowActions\n }) => {\n const provider = agentGuiWorkbenchProviderFromInstanceId(instanceId);\n const title = resolveAgentGuiWorkbenchProviderLabel(provider);\n const workbenchState = normalizeAgentGuiWorkbenchState(\n externalNodeState ?? node.data.runtimeNodeState\n );\n const nodeState = normalizeAgentGuiWorkbenchNodeState(\n workbenchState,\n provider\n );\n const isConversationRailAutoCollapsed =\n shouldAutoCollapseAgentGUIConversationRail(node.frame.width);\n const isConversationRailCollapsed =\n nodeState.conversationRailCollapsed === true ||\n isConversationRailAutoCollapsed;\n const persistConversationRailCollapsed = (collapsed: boolean) => {\n nodeStateSource.writeNodeState({\n instanceId,\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\n return createElement(AgentGuiWorkbenchHeader, {\n copy,\n defaultActions,\n isConversationRailAutoCollapsed,\n isConversationRailCollapsed,\n title,\n ...dragHandleProps,\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: \"snapshot\"\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,\n provider,\n reuseDockEntryNode,\n targetAgentSessionId\n } = createAgentGuiWorkbenchLaunchDescriptor(request);\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 ...(previousState ?? normalizeAgentGuiWorkbenchState(null)),\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\n if (\n layoutFrame.width < input.frame.width ||\n layoutFrame.height < input.frame.height\n ) {\n const width = Math.round(\n layoutFrame.width * agentGuiWorkbenchCompactVisibleAreaRatio\n );\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 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 if (!input.renderPreview) {\n return null;\n }\n const { externalNodeState, node } = item;\n const state =\n (externalNodeState as\n | Partial<\n AgentGuiWorkbenchState & { conversationCount?: number | null }\n >\n | null\n | undefined) ?? {};\n const title =\n resolveAgentGuiWorkbenchDockPopupTitle(externalNodeState) ?? node.title;\n const lines = [input.label, state.lastActiveAgentSessionId].filter(\n (line): line is string => Boolean(line?.trim())\n );\n const revision = `${input.provider}\\n${title}\\n${lines.join(\"\\n\")}`;\n return {\n element: input.renderPreview(\n createAgentGuiWorkbenchPreviewBodyContext(item),\n {\n nodeTypeId: agentGuiWorkbenchTypeId,\n onStateChange: () => undefined,\n provider: input.provider\n }\n ),\n kind: \"component\",\n revision\n };\n },\n resolvePopupItem: ({ externalNodeState }) => {\n const title = resolveAgentGuiWorkbenchDockPopupTitle(externalNodeState);\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 resolveAgentGuiWorkbenchDockPopupTitle(state: unknown): string | null {\n const title = (state as Partial<AgentGuiWorkbenchState> | null)\n ?.lastActiveConversationTitle;\n return typeof title === \"string\" && title.trim() ? title.trim() : null;\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 setNodeRuntimeState: () => undefined,\n setSnapshotNodeState: () => undefined\n };\n}\n","import { createElement, type HTMLAttributes, type ReactNode } from \"react\";\nimport { Button, PanelIcon, cn } from \"@tutti-os/ui-system\";\n\nexport interface AgentGuiWorkbenchHeaderCopy {\n collapseConversationRail: string;\n expandConversationRail: string;\n fallbackAgentLabel: string;\n}\n\nexport interface AgentGuiWorkbenchHeaderProps extends HTMLAttributes<HTMLElement> {\n copy: AgentGuiWorkbenchHeaderCopy;\n defaultActions?: ReactNode;\n isConversationRailAutoCollapsed: boolean;\n isConversationRailCollapsed: boolean;\n onToggleConversationRail: (nextCollapsed: boolean) => void;\n title?: string;\n}\n\nexport function AgentGuiWorkbenchHeader({\n className,\n copy,\n defaultActions,\n isConversationRailAutoCollapsed,\n isConversationRailCollapsed,\n onToggleConversationRail,\n title,\n ...headerProps\n}: AgentGuiWorkbenchHeaderProps): ReactNode {\n const toggleLabel = isConversationRailCollapsed\n ? copy.expandConversationRail\n : copy.collapseConversationRail;\n\n return createElement(\n \"header\",\n {\n ...headerProps,\n className: cn(\n \"flex h-full min-h-0 items-center justify-between gap-3 bg-[var(--background-panel)] px-2 pl-3\",\n className\n )\n },\n createElement(\n \"div\",\n { className: \"flex min-w-0 items-center gap-2\" },\n createElement(\n \"span\",\n {\n className:\n \"min-w-0 truncate text-[13px] font-semibold leading-5 text-[var(--text-primary)]\"\n },\n title?.trim() || copy.fallbackAgentLabel\n ),\n createElement(\n Button as never,\n {\n \"aria-label\": toggleLabel,\n className: \"cursor-pointer rounded-md\",\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: \"size-[18px]\" })\n )\n ),\n createElement(\n \"div\",\n {\n className: \"flex flex-none items-center gap-1\",\n onDoubleClick: (event) => event.stopPropagation(),\n onPointerDown: (event) => event.stopPropagation()\n },\n defaultActions\n )\n );\n}\n"],"mappings":"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","names":["createElement","createElement"]}
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
import {
|
|
9
9
|
translate,
|
|
10
10
|
translateInUiLanguage
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-ZAVQMGAX.js";
|
|
12
12
|
|
|
13
13
|
// shared/workspaceAgentStatusNormalizer.ts
|
|
14
14
|
var FAILED_STATUS_TOKENS = /* @__PURE__ */ new Set(["failed", "error"]);
|
|
@@ -918,4 +918,4 @@ export {
|
|
|
918
918
|
resolveWorkspaceAgentActivityStatus,
|
|
919
919
|
resolveWorkspaceAgentActivityTitle
|
|
920
920
|
};
|
|
921
|
-
//# sourceMappingURL=chunk-
|
|
921
|
+
//# sourceMappingURL=chunk-DHOAJJ3K.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
translate,
|
|
3
3
|
useTranslation
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-ZAVQMGAX.js";
|
|
5
5
|
import {
|
|
6
6
|
resolveAgentWorkspaceFileVisualKind
|
|
7
7
|
} from "./chunk-PJP5BUU6.js";
|
|
@@ -246,7 +246,8 @@ function approvalOptionDisplayLabel(option, intent = {}) {
|
|
|
246
246
|
const label = option.label.trim();
|
|
247
247
|
const specificTranslationKey = approvalOptionSpecificTranslationKey(
|
|
248
248
|
idToken,
|
|
249
|
-
label
|
|
249
|
+
label,
|
|
250
|
+
intent
|
|
250
251
|
);
|
|
251
252
|
if (specificTranslationKey) {
|
|
252
253
|
return translate(specificTranslationKey);
|
|
@@ -261,7 +262,7 @@ function approvalOptionDisplayLabel(option, intent = {}) {
|
|
|
261
262
|
if ((idToken === "allowonce" || kindToken === "allowonce") && isGenericAllowOnceLabel(label)) {
|
|
262
263
|
return translate("agentHost.agentGui.approvalOptions.allowOnce");
|
|
263
264
|
}
|
|
264
|
-
if ((idToken === "allowalways" || idToken === "allowall") && isGenericApprovalLabel(label)) {
|
|
265
|
+
if ((idToken === "allowalways" || idToken === "allowall" || kindToken === "allowalways") && isGenericApprovalLabel(label)) {
|
|
265
266
|
return translate("agentHost.agentGui.approvalOptions.allowAlways");
|
|
266
267
|
}
|
|
267
268
|
if (idToken === "rejectalways" || kindToken === "rejectalways") {
|
|
@@ -289,9 +290,15 @@ function approvalOptionVisualPresentation(option, intent = {}) {
|
|
|
289
290
|
function normalizeApprovalOptionToken(value) {
|
|
290
291
|
return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "");
|
|
291
292
|
}
|
|
292
|
-
function approvalOptionSpecificTranslationKey(token, label) {
|
|
293
|
+
function approvalOptionSpecificTranslationKey(token, label, intent = {}) {
|
|
293
294
|
const labelToken = normalizeApprovalOptionToken(label);
|
|
294
295
|
switch (token) {
|
|
296
|
+
case "approved":
|
|
297
|
+
return isGenericAllowOnceLabel(label) ? "agentHost.agentGui.approvalOptions.allowOnce" : null;
|
|
298
|
+
case "approvedforsession":
|
|
299
|
+
return labelToken === "allowforthissession" ? "agentHost.agentGui.approvalOptions.allowForSession" : null;
|
|
300
|
+
case "approvedalways":
|
|
301
|
+
return isGenericApprovalLabel(label) ? "agentHost.agentGui.approvalOptions.allowAlways" : null;
|
|
295
302
|
case "bypasspermissions":
|
|
296
303
|
return "agentHost.agentGui.approvalOptions.bypassPermissions";
|
|
297
304
|
case "auto":
|
|
@@ -300,6 +307,8 @@ function approvalOptionSpecificTranslationKey(token, label) {
|
|
|
300
307
|
return "agentHost.agentGui.approvalOptions.acceptEdits";
|
|
301
308
|
case "default":
|
|
302
309
|
return labelToken === "yesandmanuallyapproveedits" ? "agentHost.agentGui.approvalOptions.manualApproval" : null;
|
|
310
|
+
case "cancel":
|
|
311
|
+
return !intent.feedback && labelToken === "cancel" ? "common.cancel" : null;
|
|
303
312
|
default:
|
|
304
313
|
return null;
|
|
305
314
|
}
|
|
@@ -336,7 +345,7 @@ function approvalOptionCommandPrefix(label) {
|
|
|
336
345
|
}
|
|
337
346
|
function isGenericApprovalLabel(label) {
|
|
338
347
|
const token = normalizeApprovalOptionToken(label);
|
|
339
|
-
return token === "" || token === "allowalways" || token === "allowall" || token === "alwaysallow" || token === "yesanddontaskagain";
|
|
348
|
+
return token === "" || token === "allowalways" || token === "allowall" || token === "alwaysallow" || token === "allowanddontaskagain" || token === "yesanddontaskagain";
|
|
340
349
|
}
|
|
341
350
|
function isGenericAllowOnceLabel(label) {
|
|
342
351
|
const token = normalizeApprovalOptionToken(label);
|
|
@@ -3464,7 +3473,6 @@ export {
|
|
|
3464
3473
|
isPromptRequestIdTitle,
|
|
3465
3474
|
AgentInteractivePromptSurface,
|
|
3466
3475
|
user_avatar_placeholder_default,
|
|
3467
|
-
normalizeWorkspaceAgentActivityDisplayStatus,
|
|
3468
3476
|
workspaceAgentActivityStatusLabel
|
|
3469
3477
|
};
|
|
3470
|
-
//# sourceMappingURL=chunk-
|
|
3478
|
+
//# sourceMappingURL=chunk-VBNWIBNV.js.map
|