@tutti-os/agent-gui 0.0.144 → 0.0.146
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/README.md +6 -0
- package/dist/{AgentRichTextReadonly-QIQCYZAG.js → AgentRichTextReadonly-GZSB6LJS.js} +3 -3
- package/dist/agent-conversation/index.d.ts +36 -2
- package/dist/agent-conversation/index.js +5 -3
- package/dist/agent-conversation/index.js.map +1 -1
- package/dist/agent-gui.js +7 -7
- package/dist/app/renderer/agentactivity.css +41 -16
- package/dist/{chunk-4V3QEPKX.js → chunk-3CZYC2YN.js} +427 -59
- package/dist/chunk-3CZYC2YN.js.map +1 -0
- package/dist/{chunk-Z2J3NPPX.js → chunk-4WSWPMV7.js} +121 -480
- package/dist/chunk-4WSWPMV7.js.map +1 -0
- package/dist/{chunk-O764HQNF.js → chunk-E27CQCLN.js} +1 -1
- package/dist/chunk-E27CQCLN.js.map +1 -0
- package/dist/{chunk-5ZZMG4ZB.js → chunk-HMSN264L.js} +2 -2
- package/dist/{chunk-N2NZASIS.js → chunk-JNC4FCUV.js} +2 -2
- package/dist/{chunk-TJW5NWWH.js → chunk-RBY6GQ2Q.js} +2 -2
- package/dist/{chunk-JME2T7T7.js → chunk-ZF65NZ4B.js} +16 -9
- package/dist/chunk-ZF65NZ4B.js.map +1 -0
- package/dist/context-mention-palette/index.js +3 -3
- package/dist/index.d.ts +9 -1
- package/dist/index.js +10 -8
- package/dist/index.js.map +1 -1
- package/dist/mention-search.js +2 -2
- package/dist/workbench/contribution.js +1 -1
- package/dist/workbench/index.d.ts +2 -1
- package/dist/workbench/index.js +1 -1
- package/package.json +13 -13
- package/dist/chunk-4V3QEPKX.js.map +0 -1
- package/dist/chunk-JME2T7T7.js.map +0 -1
- package/dist/chunk-O764HQNF.js.map +0 -1
- package/dist/chunk-Z2J3NPPX.js.map +0 -1
- /package/dist/{AgentRichTextReadonly-QIQCYZAG.js.map → AgentRichTextReadonly-GZSB6LJS.js.map} +0 -0
- /package/dist/{chunk-5ZZMG4ZB.js.map → chunk-HMSN264L.js.map} +0 -0
- /package/dist/{chunk-N2NZASIS.js.map → chunk-JNC4FCUV.js.map} +0 -0
- /package/dist/{chunk-TJW5NWWH.js.map → chunk-RBY6GQ2Q.js.map} +0 -0
package/README.md
CHANGED
|
@@ -93,6 +93,12 @@ AgentGUI's built-in Handoff menu. The helper owns mention serialization and the
|
|
|
93
93
|
trailing rich-text caret space; hosts continue to own destination selection and
|
|
94
94
|
window launch behavior.
|
|
95
95
|
|
|
96
|
+
Hosts that copy a session reference without launching a handoff must use
|
|
97
|
+
`createAgentSessionMarkdownLink`. This is the same canonical serializer used by
|
|
98
|
+
AgentGUI's Copy as reference action. Pass `withAtPrefix: true` when the copied
|
|
99
|
+
value should paste back into Agent and room-chat composers as an `@` session
|
|
100
|
+
mention; unlike the handoff helper, it does not append a trailing caret space.
|
|
101
|
+
|
|
96
102
|
## Boundary Rule
|
|
97
103
|
|
|
98
104
|
`AgentActivity*` types from `@tutti-os/agent-activity-core` are the canonical
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AgentRichTextReadonly
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
3
|
+
} from "./chunk-JNC4FCUV.js";
|
|
4
|
+
import "./chunk-E27CQCLN.js";
|
|
5
5
|
import "./chunk-5QPOMKMQ.js";
|
|
6
6
|
import "./chunk-FGLQZ6I4.js";
|
|
7
7
|
import "./chunk-ZVYUTXQJ.js";
|
|
@@ -16,4 +16,4 @@ import "./chunk-QMMWKQOT.js";
|
|
|
16
16
|
export {
|
|
17
17
|
AgentRichTextReadonly
|
|
18
18
|
};
|
|
19
|
-
//# sourceMappingURL=AgentRichTextReadonly-
|
|
19
|
+
//# sourceMappingURL=AgentRichTextReadonly-GZSB6LJS.js.map
|
|
@@ -3,8 +3,8 @@ import { ReactNode, JSX } from 'react';
|
|
|
3
3
|
import { c as AgentConversationVM, g as WorkspaceLinkAction, f as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-DWEy7jzx.js';
|
|
4
4
|
export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityCard, e as WorkspaceAgentActivityTimelineItem, h as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-DWEy7jzx.js';
|
|
5
5
|
import { d as AgentGUIProviderSkillOption, h as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-D3f1yiEL.js';
|
|
6
|
+
import { AgentActivityMessage } from '@tutti-os/agent-activity-core';
|
|
6
7
|
import '@tutti-os/workspace-issue-manager/core';
|
|
7
|
-
import '@tutti-os/agent-activity-core';
|
|
8
8
|
import '../types-DVmB_kyD.js';
|
|
9
9
|
import '@tutti-os/workspace-user-project/contracts';
|
|
10
10
|
|
|
@@ -81,4 +81,38 @@ declare function useProjectedAgentConversation({ conversation, detail, avoidGrou
|
|
|
81
81
|
avoidGroupingEdits?: boolean;
|
|
82
82
|
}): AgentConversationVM | null;
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
type AgentGUIConversationCopyAction = "copy-markdown" | "copy-reference";
|
|
85
|
+
interface AgentGUIConversationCopyLabels {
|
|
86
|
+
file: string;
|
|
87
|
+
image: string;
|
|
88
|
+
mentionPrefix: string;
|
|
89
|
+
/** Template for the collapsed-interim summary; contains `{{count}}`. */
|
|
90
|
+
previousMessages: string;
|
|
91
|
+
}
|
|
92
|
+
interface AgentGUIConversationAttachment {
|
|
93
|
+
data: string;
|
|
94
|
+
mimeType: string;
|
|
95
|
+
name?: string;
|
|
96
|
+
}
|
|
97
|
+
/** Hydrates a local workspace image path into base64 bytes at copy time. */
|
|
98
|
+
type AgentGUIConversationLocalImageReader = (input: {
|
|
99
|
+
path: string;
|
|
100
|
+
mimeType: string | null;
|
|
101
|
+
}) => Promise<AgentGUIConversationAttachment>;
|
|
102
|
+
interface AgentGUIConversationSerializedTranscript {
|
|
103
|
+
/** Hydrated variant for the text/html flavor: images embed as data URIs. */
|
|
104
|
+
hydratedMarkdown: string;
|
|
105
|
+
/** Lean variant for text/plain: short image references, never base64. */
|
|
106
|
+
markdown: string;
|
|
107
|
+
/** Hydratable images left unembedded (oversized or failed reads). */
|
|
108
|
+
omittedImages: number;
|
|
109
|
+
}
|
|
110
|
+
declare function serializeAgentConversationForClipboard(input: {
|
|
111
|
+
labels: AgentGUIConversationCopyLabels;
|
|
112
|
+
messages: readonly AgentActivityMessage[];
|
|
113
|
+
readAttachment?: (attachmentId: string) => Promise<AgentGUIConversationAttachment>;
|
|
114
|
+
readLocalImage?: AgentGUIConversationLocalImageReader;
|
|
115
|
+
title: string;
|
|
116
|
+
}): Promise<AgentGUIConversationSerializedTranscript>;
|
|
117
|
+
|
|
118
|
+
export { AgentConversationFlow, AgentConversationVM, type AgentGUIConversationAttachment, type AgentGUIConversationCopyAction, type AgentGUIConversationCopyLabels, type AgentGUIConversationLocalImageReader, type AgentGUIConversationSerializedTranscript, AgentTranscriptSkeleton, AgentTranscriptView, WorkspaceAgentSessionDetail, WorkspaceAgentSessionDetailViewModel, projectAgentConversationVM, reconcileProjectedAgentConversationVM, serializeAgentConversationForClipboard, useProjectedAgentConversation };
|
|
@@ -5,13 +5,14 @@ import {
|
|
|
5
5
|
buildWorkspaceAgentSessionDetailViewModel,
|
|
6
6
|
projectAgentConversationVM,
|
|
7
7
|
reconcileProjectedAgentConversationVM,
|
|
8
|
+
serializeAgentConversationForClipboard,
|
|
8
9
|
useProjectedAgentConversation
|
|
9
|
-
} from "../chunk-
|
|
10
|
-
import "../chunk-
|
|
10
|
+
} from "../chunk-3CZYC2YN.js";
|
|
11
|
+
import "../chunk-JNC4FCUV.js";
|
|
11
12
|
import "../chunk-FM42UN2J.js";
|
|
12
13
|
import "../chunk-XJ34OIEQ.js";
|
|
13
14
|
import "../chunk-JDVP33S5.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-E27CQCLN.js";
|
|
15
16
|
import "../chunk-5QPOMKMQ.js";
|
|
16
17
|
import "../chunk-FGLQZ6I4.js";
|
|
17
18
|
import "../chunk-MX2NPLCN.js";
|
|
@@ -86,6 +87,7 @@ export {
|
|
|
86
87
|
buildWorkspaceAgentSessionDetailViewModel,
|
|
87
88
|
projectAgentConversationVM,
|
|
88
89
|
reconcileProjectedAgentConversationVM,
|
|
90
|
+
serializeAgentConversationForClipboard,
|
|
89
91
|
useProjectedAgentConversation
|
|
90
92
|
};
|
|
91
93
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../shared/WorkspaceAgentSessionDetail.tsx"],"sourcesContent":["import { useMemo, type JSX } from \"react\";\nimport type { WorkspaceLinkAction } from \"../contexts/workspace/presentation/renderer/actions/workspaceLinkActions\";\nimport { translate } from \"../i18n/index\";\nimport { AgentConversationFlow } from \"./agentConversation/components/AgentConversationFlow\";\nimport { useProjectedAgentConversation } from \"./agentConversation/projection/useProjectedAgentConversation\";\nimport type { WorkspaceAgentSessionDetailViewModel } from \"./workspaceAgentSessionDetailViewModel\";\n\ninterface WorkspaceAgentSessionDetailProps {\n detail: WorkspaceAgentSessionDetailViewModel;\n avoidGroupingEdits?: boolean;\n isLoading: boolean;\n timelineItemCount: number;\n onLinkAction?: (action: WorkspaceLinkAction) => void;\n toolCallsLabel: (count: number) => string;\n thinkingLabel?: string;\n loadingLabel?: string;\n rawTimelineJsonLabel?: string;\n showRawTimelineJson?: boolean;\n}\n\nexport function WorkspaceAgentSessionDetail({\n detail,\n avoidGroupingEdits = false,\n isLoading,\n timelineItemCount,\n onLinkAction,\n toolCallsLabel,\n thinkingLabel = translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n loadingLabel = translate(\"common.loading\"),\n rawTimelineJsonLabel,\n showRawTimelineJson = false\n}: WorkspaceAgentSessionDetailProps): JSX.Element {\n const conversation = useProjectedAgentConversation({\n detail,\n avoidGroupingEdits\n });\n const showLoadingSkeleton =\n detail.turns.length === 0 &&\n (isLoading ||\n detail.activity.status === \"waiting\" ||\n detail.activity.status === \"working\");\n const emptySummary =\n detail.activity.latestActivitySummary ||\n (timelineItemCount > 0\n ? translate(\"agentHost.workspaceAgentSessionDetailEmptyWithTimeline\")\n : translate(\"agentHost.workspaceAgentSessionDetailEmptyNoTimeline\"));\n const flowLabels = useMemo(\n () => ({\n thinkingLabel,\n toolCallsLabel,\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\"),\n rawTimelineJson: rawTimelineJsonLabel\n }),\n [rawTimelineJsonLabel, thinkingLabel, toolCallsLabel]\n );\n const emptyState = useMemo(\n () => (\n <div className=\"workspace-agents-status-panel__detail-empty\">\n {emptySummary}\n </div>\n ),\n [emptySummary]\n );\n\n return (\n <div className=\"workspace-agents-status-panel__detail\">\n <AgentConversationFlow\n conversation={detail.turns.length > 0 ? conversation : null}\n isLoading={showLoadingSkeleton}\n loadingLabel={loadingLabel}\n empty={emptyState}\n onLinkAction={onLinkAction}\n showRawTimelineJson={showRawTimelineJson}\n labels={flowLabels}\n />\n </div>\n );\n}\n\nexport function WorkspaceAgentSessionDetailSkeleton({\n loading = true,\n loadingLabel = translate(\"common.loading\")\n}: {\n loading?: boolean;\n loadingLabel?: string;\n}): JSX.Element {\n const flowLabels = useMemo(\n () => ({\n thinkingLabel: translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n toolCallsLabel: (count: number) =>\n translate(\"agentHost.workspaceAgentSessionDetailToolCalls\", { count }),\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\")\n }),\n []\n );\n\n if (!loading) {\n return <></>;\n }\n\n return (\n <div\n className=\"workspace-agents-status-panel__detail-skeleton\"\n data-testid=\"workspace-agents-status-panel-detail-skeleton\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n >\n <AgentConversationFlow\n conversation={null}\n isLoading\n loadingLabel={loadingLabel}\n loadingTestId=\"workspace-agents-status-panel-detail-skeleton\"\n empty={null}\n labels={flowLabels}\n />\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../shared/WorkspaceAgentSessionDetail.tsx"],"sourcesContent":["import { useMemo, type JSX } from \"react\";\nimport type { WorkspaceLinkAction } from \"../contexts/workspace/presentation/renderer/actions/workspaceLinkActions\";\nimport { translate } from \"../i18n/index\";\nimport { AgentConversationFlow } from \"./agentConversation/components/AgentConversationFlow\";\nimport { useProjectedAgentConversation } from \"./agentConversation/projection/useProjectedAgentConversation\";\nimport type { WorkspaceAgentSessionDetailViewModel } from \"./workspaceAgentSessionDetailViewModel\";\n\ninterface WorkspaceAgentSessionDetailProps {\n detail: WorkspaceAgentSessionDetailViewModel;\n avoidGroupingEdits?: boolean;\n isLoading: boolean;\n timelineItemCount: number;\n onLinkAction?: (action: WorkspaceLinkAction) => void;\n toolCallsLabel: (count: number) => string;\n thinkingLabel?: string;\n loadingLabel?: string;\n rawTimelineJsonLabel?: string;\n showRawTimelineJson?: boolean;\n}\n\nexport function WorkspaceAgentSessionDetail({\n detail,\n avoidGroupingEdits = false,\n isLoading,\n timelineItemCount,\n onLinkAction,\n toolCallsLabel,\n thinkingLabel = translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n loadingLabel = translate(\"common.loading\"),\n rawTimelineJsonLabel,\n showRawTimelineJson = false\n}: WorkspaceAgentSessionDetailProps): JSX.Element {\n const conversation = useProjectedAgentConversation({\n detail,\n avoidGroupingEdits\n });\n const showLoadingSkeleton =\n detail.turns.length === 0 &&\n (isLoading ||\n detail.activity.status === \"waiting\" ||\n detail.activity.status === \"working\");\n const emptySummary =\n detail.activity.latestActivitySummary ||\n (timelineItemCount > 0\n ? translate(\"agentHost.workspaceAgentSessionDetailEmptyWithTimeline\")\n : translate(\"agentHost.workspaceAgentSessionDetailEmptyNoTimeline\"));\n const flowLabels = useMemo(\n () => ({\n thinkingLabel,\n toolCallsLabel,\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\"),\n rawTimelineJson: rawTimelineJsonLabel\n }),\n [rawTimelineJsonLabel, thinkingLabel, toolCallsLabel]\n );\n const emptyState = useMemo(\n () => (\n <div className=\"workspace-agents-status-panel__detail-empty\">\n {emptySummary}\n </div>\n ),\n [emptySummary]\n );\n\n return (\n <div className=\"workspace-agents-status-panel__detail\">\n <AgentConversationFlow\n conversation={detail.turns.length > 0 ? conversation : null}\n isLoading={showLoadingSkeleton}\n loadingLabel={loadingLabel}\n empty={emptyState}\n onLinkAction={onLinkAction}\n showRawTimelineJson={showRawTimelineJson}\n labels={flowLabels}\n />\n </div>\n );\n}\n\nexport function WorkspaceAgentSessionDetailSkeleton({\n loading = true,\n loadingLabel = translate(\"common.loading\")\n}: {\n loading?: boolean;\n loadingLabel?: string;\n}): JSX.Element {\n const flowLabels = useMemo(\n () => ({\n thinkingLabel: translate(\"agentHost.workspaceAgentSessionDetailThinking\"),\n toolCallsLabel: (count: number) =>\n translate(\"agentHost.workspaceAgentSessionDetailToolCalls\", { count }),\n processing: translate(\"agentHost.agentGui.processing\"),\n turnSummary: translate(\"agentHost.agentGui.turnSummary\")\n }),\n []\n );\n\n if (!loading) {\n return <></>;\n }\n\n return (\n <div\n className=\"workspace-agents-status-panel__detail-skeleton\"\n data-testid=\"workspace-agents-status-panel-detail-skeleton\"\n role=\"status\"\n aria-busy=\"true\"\n aria-label={loadingLabel}\n >\n <AgentConversationFlow\n conversation={null}\n isLoading\n loadingLabel={loadingLabel}\n loadingTestId=\"workspace-agents-status-panel-detail-skeleton\"\n empty={null}\n labels={flowLabels}\n />\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,eAAyB;AA0D5B,SAyCK,UAzCL;AAtCC,SAAS,4BAA4B;AAAA,EAC1C;AAAA,EACA,qBAAqB;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,gBAAgB,UAAU,+CAA+C;AAAA,EACzE,eAAe,UAAU,gBAAgB;AAAA,EACzC;AAAA,EACA,sBAAsB;AACxB,GAAkD;AAChD,QAAM,eAAe,8BAA8B;AAAA,IACjD;AAAA,IACA;AAAA,EACF,CAAC;AACD,QAAM,sBACJ,OAAO,MAAM,WAAW,MACvB,aACC,OAAO,SAAS,WAAW,aAC3B,OAAO,SAAS,WAAW;AAC/B,QAAM,eACJ,OAAO,SAAS,0BACf,oBAAoB,IACjB,UAAU,wDAAwD,IAClE,UAAU,sDAAsD;AACtE,QAAM,aAAa;AAAA,IACjB,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,YAAY,UAAU,+BAA+B;AAAA,MACrD,aAAa,UAAU,gCAAgC;AAAA,MACvD,iBAAiB;AAAA,IACnB;AAAA,IACA,CAAC,sBAAsB,eAAe,cAAc;AAAA,EACtD;AACA,QAAM,aAAa;AAAA,IACjB,MACE,oBAAC,SAAI,WAAU,+CACZ,wBACH;AAAA,IAEF,CAAC,YAAY;AAAA,EACf;AAEA,SACE,oBAAC,SAAI,WAAU,yCACb;AAAA,IAAC;AAAA;AAAA,MACC,cAAc,OAAO,MAAM,SAAS,IAAI,eAAe;AAAA,MACvD,WAAW;AAAA,MACX;AAAA,MACA,OAAO;AAAA,MACP;AAAA,MACA;AAAA,MACA,QAAQ;AAAA;AAAA,EACV,GACF;AAEJ;","names":[]}
|
package/dist/agent-gui.js
CHANGED
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AgentGUI
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-4WSWPMV7.js";
|
|
4
4
|
import "./chunk-A4WCTHWS.js";
|
|
5
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-ZF65NZ4B.js";
|
|
6
6
|
import "./chunk-TUWQV2MC.js";
|
|
7
7
|
import "./chunk-MHOYBRCY.js";
|
|
8
8
|
import "./chunk-Q2WMHYIB.js";
|
|
9
9
|
import "./chunk-5HIF53K5.js";
|
|
10
10
|
import "./chunk-R2ZADXRB.js";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-3CZYC2YN.js";
|
|
12
|
+
import "./chunk-JNC4FCUV.js";
|
|
13
13
|
import "./chunk-FM42UN2J.js";
|
|
14
14
|
import "./chunk-UP3ZDYTN.js";
|
|
15
|
-
import "./chunk-
|
|
15
|
+
import "./chunk-RBY6GQ2Q.js";
|
|
16
16
|
import "./chunk-66JZ7BQM.js";
|
|
17
17
|
import "./chunk-DXT4W2SU.js";
|
|
18
|
-
import "./chunk-
|
|
18
|
+
import "./chunk-HMSN264L.js";
|
|
19
19
|
import "./chunk-VMPA46ET.js";
|
|
20
20
|
import "./chunk-XJ34OIEQ.js";
|
|
21
21
|
import "./chunk-JDVP33S5.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-E27CQCLN.js";
|
|
23
23
|
import "./chunk-5QPOMKMQ.js";
|
|
24
24
|
import "./chunk-RMQREVJY.js";
|
|
25
25
|
import "./chunk-FGLQZ6I4.js";
|
|
@@ -4557,13 +4557,17 @@ aside.workspace-agents-status-panel
|
|
|
4557
4557
|
transition: none;
|
|
4558
4558
|
}
|
|
4559
4559
|
|
|
4560
|
-
.workbench-window:has(
|
|
4560
|
+
.workbench-window:has(
|
|
4561
|
+
> .workbench-window__header [data-agent-gui-workbench-header="true"]
|
|
4562
|
+
) {
|
|
4561
4563
|
--agent-gui-workbench-header-height: 44px;
|
|
4562
4564
|
|
|
4563
4565
|
grid-template-rows: minmax(0, 1fr);
|
|
4564
4566
|
}
|
|
4565
4567
|
|
|
4566
|
-
.workbench-window:has(
|
|
4568
|
+
.workbench-window:has(
|
|
4569
|
+
> .workbench-window__header [data-agent-gui-workbench-header="true"]
|
|
4570
|
+
)
|
|
4567
4571
|
.workbench-window__header {
|
|
4568
4572
|
position: absolute !important;
|
|
4569
4573
|
top: 0 !important;
|
|
@@ -4583,41 +4587,48 @@ aside.workspace-agents-status-panel
|
|
|
4583
4587
|
}
|
|
4584
4588
|
|
|
4585
4589
|
.workbench-window:has(
|
|
4586
|
-
.
|
|
4590
|
+
> .workbench-window__header
|
|
4591
|
+
.agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
|
|
4587
4592
|
)
|
|
4588
4593
|
.workbench-window__header {
|
|
4589
4594
|
cursor: grab !important;
|
|
4590
4595
|
}
|
|
4591
4596
|
|
|
4592
4597
|
.workbench-window:has(
|
|
4593
|
-
.
|
|
4598
|
+
> .workbench-window__header
|
|
4599
|
+
.agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
|
|
4594
4600
|
)
|
|
4595
4601
|
.workbench-window__header:active {
|
|
4596
4602
|
cursor: grabbing !important;
|
|
4597
4603
|
}
|
|
4598
4604
|
|
|
4599
4605
|
.workbench-window:has(
|
|
4600
|
-
.
|
|
4606
|
+
> .workbench-window__header
|
|
4607
|
+
.agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
|
|
4601
4608
|
)
|
|
4602
4609
|
.workbench-window__header {
|
|
4603
4610
|
z-index: calc(var(--z-panel) + 1);
|
|
4604
4611
|
}
|
|
4605
4612
|
|
|
4606
4613
|
.workbench-window:has(
|
|
4607
|
-
.
|
|
4614
|
+
> .workbench-window__header
|
|
4615
|
+
.agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
|
|
4608
4616
|
)
|
|
4609
4617
|
.agent-gui-workbench-header::after {
|
|
4610
4618
|
display: none;
|
|
4611
4619
|
}
|
|
4612
4620
|
|
|
4613
|
-
.workbench-window:has(
|
|
4621
|
+
.workbench-window:has(
|
|
4622
|
+
> .workbench-window__header [data-agent-gui-workbench-header="true"]
|
|
4623
|
+
)
|
|
4614
4624
|
.workbench-window__body {
|
|
4615
4625
|
grid-row: 1;
|
|
4616
4626
|
overflow: hidden;
|
|
4617
4627
|
}
|
|
4618
4628
|
|
|
4619
4629
|
.workbench-window:has(
|
|
4620
|
-
.
|
|
4630
|
+
> .workbench-window__header
|
|
4631
|
+
.agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
|
|
4621
4632
|
)
|
|
4622
4633
|
.workbench-window__body {
|
|
4623
4634
|
display: flex;
|
|
@@ -4680,7 +4691,9 @@ aside.workspace-agents-status-panel
|
|
|
4680
4691
|
overscroll-behavior: contain;
|
|
4681
4692
|
}
|
|
4682
4693
|
|
|
4683
|
-
.workbench-window:has(
|
|
4694
|
+
.workbench-window:has(
|
|
4695
|
+
> .workbench-window__header [data-agent-gui-workbench-header="true"]
|
|
4696
|
+
)
|
|
4684
4697
|
.agent-gui-node__provider-rail-panel {
|
|
4685
4698
|
padding-top: var(--agent-gui-workbench-header-height);
|
|
4686
4699
|
}
|
|
@@ -4689,22 +4702,30 @@ aside.workspace-agents-status-panel
|
|
|
4689
4702
|
breathing room on the inner rail, so the "All" tile sits at header + 2px. The
|
|
4690
4703
|
toolbar has no such wrapper, so fold the same 2px into its offset to keep the
|
|
4691
4704
|
search field top aligned with the provider tiles. */
|
|
4692
|
-
.workbench-window:has(
|
|
4705
|
+
.workbench-window:has(
|
|
4706
|
+
> .workbench-window__header [data-agent-gui-workbench-header="true"]
|
|
4707
|
+
)
|
|
4693
4708
|
.agent-gui-node__rail-toolbar {
|
|
4694
4709
|
padding-top: calc(var(--agent-gui-workbench-header-height) + 2px);
|
|
4695
4710
|
}
|
|
4696
4711
|
|
|
4697
|
-
.workbench-window:has(
|
|
4712
|
+
.workbench-window:has(
|
|
4713
|
+
> .workbench-window__header [data-agent-gui-workbench-header="true"]
|
|
4714
|
+
)
|
|
4698
4715
|
.agent-gui-node__detail-panel {
|
|
4699
4716
|
position: relative;
|
|
4700
4717
|
}
|
|
4701
4718
|
|
|
4702
|
-
.workbench-window:has(
|
|
4719
|
+
.workbench-window:has(
|
|
4720
|
+
> .workbench-window__header [data-agent-gui-workbench-header="true"]
|
|
4721
|
+
)
|
|
4703
4722
|
.agent-gui-node__detail {
|
|
4704
4723
|
padding-top: var(--agent-gui-workbench-header-height);
|
|
4705
4724
|
}
|
|
4706
4725
|
|
|
4707
|
-
.workbench-window:has(
|
|
4726
|
+
.workbench-window:has(
|
|
4727
|
+
> .workbench-window__header [data-agent-gui-workbench-header="true"]
|
|
4728
|
+
)
|
|
4708
4729
|
.agent-gui-node__timeline-with-composer {
|
|
4709
4730
|
padding-top: 20px;
|
|
4710
4731
|
}
|
|
@@ -5198,11 +5219,13 @@ aside.workspace-agents-status-panel
|
|
|
5198
5219
|
}
|
|
5199
5220
|
|
|
5200
5221
|
.workbench-window:has(
|
|
5201
|
-
.
|
|
5222
|
+
> .workbench-window__header
|
|
5223
|
+
.agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
|
|
5202
5224
|
)
|
|
5203
5225
|
.agent-gui-workbench-header__session-title,
|
|
5204
5226
|
.workbench-window:has(
|
|
5205
|
-
.
|
|
5227
|
+
> .workbench-window__header
|
|
5228
|
+
.agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
|
|
5206
5229
|
)
|
|
5207
5230
|
.agent-gui-workbench-header__detail-title {
|
|
5208
5231
|
box-sizing: border-box;
|
|
@@ -5478,7 +5501,9 @@ aside.workspace-agents-status-panel
|
|
|
5478
5501
|
);
|
|
5479
5502
|
}
|
|
5480
5503
|
|
|
5481
|
-
.workbench-window:has(
|
|
5504
|
+
.workbench-window:has(
|
|
5505
|
+
> .workbench-window__header [data-agent-gui-workbench-header="true"]
|
|
5506
|
+
)
|
|
5482
5507
|
.agent-gui-node__provider-rail-panel::after {
|
|
5483
5508
|
top: var(--agent-gui-workbench-header-height);
|
|
5484
5509
|
}
|