@tutti-os/agent-gui 0.0.15 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AgentMentionSearchController-DqssJ2-b.d.ts +218 -0
- package/dist/agent-conversation/index.d.ts +3 -1
- package/dist/agent-conversation/index.js +5 -4
- package/dist/agent-conversation/index.js.map +1 -1
- package/dist/agent-message-center/index.d.ts +6 -2
- package/dist/agent-message-center/index.js +714 -291
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/app/renderer/agentactivity.css +176 -8
- package/dist/{chunk-KJPMZ7G5.js → chunk-65YMY2M3.js} +43 -17
- package/dist/chunk-65YMY2M3.js.map +1 -0
- package/dist/{chunk-OFGXNXYT.js → chunk-CDTTIUPL.js} +2 -2
- package/dist/{chunk-EK5RDKG7.js → chunk-GWR6WGZY.js} +21 -11
- package/dist/chunk-GWR6WGZY.js.map +1 -0
- package/dist/{chunk-H4HT3FE6.js → chunk-HVOPJU2K.js} +40 -30
- package/dist/chunk-HVOPJU2K.js.map +1 -0
- package/dist/{chunk-7CBJJNX6.js → chunk-JNGYJ7GM.js} +2 -2
- package/dist/{chunk-7CBJJNX6.js.map → chunk-JNGYJ7GM.js.map} +1 -1
- package/dist/{chunk-YKDFQADM.js → chunk-K44WER5Z.js} +177 -332
- package/dist/chunk-K44WER5Z.js.map +1 -0
- package/dist/{chunk-U4F3COKL.js → chunk-KHTIC52P.js} +83 -115
- package/dist/chunk-KHTIC52P.js.map +1 -0
- package/dist/chunk-O5TUTXHT.js +196 -0
- package/dist/chunk-O5TUTXHT.js.map +1 -0
- package/dist/{chunk-XHQGCP7A.js → chunk-OJ5WX7SZ.js} +2 -2
- package/dist/{chunk-SVOGXWFJ.js → chunk-VNAQ6QFE.js} +562 -468
- package/dist/chunk-VNAQ6QFE.js.map +1 -0
- package/dist/{chunk-2CA4NPP3.js → chunk-VO2TZNKV.js} +10 -7
- package/dist/{chunk-2CA4NPP3.js.map → chunk-VO2TZNKV.js.map} +1 -1
- package/dist/context-mention-palette/index.d.ts +5 -104
- package/dist/context-mention-palette/index.js +6 -5
- package/dist/i18n/index.d.ts +42 -16
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +22 -2
- package/dist/index.js +2002 -1329
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.js +2 -2
- package/dist/workbench/index.d.ts +2 -1
- package/dist/workbench/index.js +2 -2
- package/dist/workbench/launch.js +1 -1
- package/dist/workspace-agent-generated-files.js +2 -2
- package/package.json +12 -12
- package/dist/agentFileMentionExtension-CM1c9bqk.d.ts +0 -86
- package/dist/chunk-EK5RDKG7.js.map +0 -1
- package/dist/chunk-H4HT3FE6.js.map +0 -1
- package/dist/chunk-KJPMZ7G5.js.map +0 -1
- package/dist/chunk-SVOGXWFJ.js.map +0 -1
- package/dist/chunk-U4F3COKL.js.map +0 -1
- package/dist/chunk-YKDFQADM.js.map +0 -1
- /package/dist/{chunk-OFGXNXYT.js.map → chunk-CDTTIUPL.js.map} +0 -0
- /package/dist/{chunk-XHQGCP7A.js.map → chunk-OJ5WX7SZ.js.map} +0 -0
|
@@ -14,7 +14,7 @@ import {
|
|
|
14
14
|
} from "./chunk-MTFSQWZ6.js";
|
|
15
15
|
import {
|
|
16
16
|
translate
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-65YMY2M3.js";
|
|
18
18
|
|
|
19
19
|
// shared/managedAgentProviders.ts
|
|
20
20
|
function normalizeManagedAgentProvider(provider) {
|
|
@@ -113,4 +113,4 @@ export {
|
|
|
113
113
|
userAvatarPlaceholderUrl,
|
|
114
114
|
workspaceAgentActivityStatusLabel
|
|
115
115
|
};
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
116
|
+
//# sourceMappingURL=chunk-CDTTIUPL.js.map
|
|
@@ -3,7 +3,7 @@ import {
|
|
|
3
3
|
agentGuiWorkbenchProviderFromIdentifier,
|
|
4
4
|
agentGuiWorkbenchTypeId,
|
|
5
5
|
createAgentGuiWorkbenchLaunchDescriptor
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-JNGYJ7GM.js";
|
|
7
7
|
import {
|
|
8
8
|
agentGuiWorkbenchProviderFromInstanceId,
|
|
9
9
|
createAgentGuiWorkbenchNodeStateSource,
|
|
@@ -38,12 +38,15 @@ function AgentGuiWorkbenchHeader({
|
|
|
38
38
|
defaultActions,
|
|
39
39
|
isConversationRailAutoCollapsed,
|
|
40
40
|
isConversationRailCollapsed,
|
|
41
|
+
conversationTitle,
|
|
41
42
|
onCreateConversation,
|
|
42
43
|
onToggleConversationRail,
|
|
43
44
|
title,
|
|
44
45
|
...headerProps
|
|
45
46
|
}) {
|
|
46
47
|
const toggleLabel = isConversationRailCollapsed ? copy.expandConversationRail : copy.collapseConversationRail;
|
|
48
|
+
const appTitle = title?.trim() || copy.fallbackAgentLabel;
|
|
49
|
+
const sessionTitle = conversationTitle?.trim() || "";
|
|
47
50
|
return createElement(
|
|
48
51
|
"header",
|
|
49
52
|
{
|
|
@@ -55,13 +58,13 @@ function AgentGuiWorkbenchHeader({
|
|
|
55
58
|
},
|
|
56
59
|
createElement(
|
|
57
60
|
"div",
|
|
58
|
-
{ className: "flex min-w-0 items-center gap-1" },
|
|
61
|
+
{ className: "flex min-w-0 flex-1 items-center gap-1" },
|
|
59
62
|
createElement(
|
|
60
63
|
"span",
|
|
61
64
|
{
|
|
62
|
-
className: "
|
|
65
|
+
className: "shrink-0 truncate text-[13px] font-semibold leading-5 text-[var(--text-primary)]"
|
|
63
66
|
},
|
|
64
|
-
|
|
67
|
+
appTitle
|
|
65
68
|
),
|
|
66
69
|
createElement(
|
|
67
70
|
Button,
|
|
@@ -104,6 +107,13 @@ function AgentGuiWorkbenchHeader({
|
|
|
104
107
|
"aria-hidden": true,
|
|
105
108
|
className: "size-[16px]"
|
|
106
109
|
})
|
|
110
|
+
) : null,
|
|
111
|
+
isConversationRailCollapsed && sessionTitle ? createElement(
|
|
112
|
+
"span",
|
|
113
|
+
{
|
|
114
|
+
className: "min-w-0 max-w-[360px] flex-1 truncate text-[13px] font-semibold leading-5 text-[var(--text-primary)]"
|
|
115
|
+
},
|
|
116
|
+
sessionTitle
|
|
107
117
|
) : null
|
|
108
118
|
),
|
|
109
119
|
createElement(
|
|
@@ -189,12 +199,11 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
189
199
|
windowActions
|
|
190
200
|
}) => {
|
|
191
201
|
const provider = agentGuiWorkbenchProviderFromInstanceId(instanceId);
|
|
192
|
-
const
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
);
|
|
202
|
+
const providerTitle = resolveAgentGuiWorkbenchProviderLabel(provider);
|
|
203
|
+
const rawWorkbenchState = externalNodeState ?? node.data.runtimeNodeState;
|
|
204
|
+
const workbenchState = normalizeAgentGuiWorkbenchState(rawWorkbenchState);
|
|
196
205
|
const nodeState = normalizeAgentGuiWorkbenchNodeState(
|
|
197
|
-
|
|
206
|
+
rawWorkbenchState,
|
|
198
207
|
provider
|
|
199
208
|
);
|
|
200
209
|
const isConversationRailAutoCollapsed = shouldAutoCollapseAgentGUIConversationRail(node.frame.width);
|
|
@@ -237,10 +246,11 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
237
246
|
};
|
|
238
247
|
return createElement2(AgentGuiWorkbenchHeader, {
|
|
239
248
|
copy,
|
|
249
|
+
conversationTitle: isConversationRailCollapsed ? input.resolveDockPopupTitle?.(workbenchState) ?? nodeState.lastActiveConversationTitle ?? null : null,
|
|
240
250
|
defaultActions,
|
|
241
251
|
isConversationRailAutoCollapsed,
|
|
242
252
|
isConversationRailCollapsed,
|
|
243
|
-
title,
|
|
253
|
+
title: providerTitle,
|
|
244
254
|
...dragHandleProps,
|
|
245
255
|
onCreateConversation: announceNewConversation,
|
|
246
256
|
onPointerDown: (event) => {
|
|
@@ -450,4 +460,4 @@ export {
|
|
|
450
460
|
resolveAgentGuiWorkbenchDefaultLaunchFrame,
|
|
451
461
|
resolveAgentGuiWorkbenchContributionCopy
|
|
452
462
|
};
|
|
453
|
-
//# sourceMappingURL=chunk-
|
|
463
|
+
//# sourceMappingURL=chunk-GWR6WGZY.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 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 expandConversationRail: string;\n fallbackAgentLabel: string;\n newConversation: 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 newConversation: \"New conversation\",\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 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\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 defaultActions,\n dragHandleProps,\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 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: isConversationRailCollapsed\n ? (input.resolveDockPopupTitle?.(workbenchState) ??\n nodeState.lastActiveConversationTitle ??\n null)\n : null,\n defaultActions,\n isConversationRailAutoCollapsed,\n isConversationRailCollapsed,\n title: providerTitle,\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: \"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 ...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 if (!input.renderPreview) {\n return null;\n }\n const { externalNodeState, node } = item;\n const state = normalizeAgentGuiWorkbenchState(externalNodeState);\n const title = input.resolveDockPopupTitle?.(state) ?? 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 =\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 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\";\nimport { EditIcon } from \"@tutti-os/ui-system/icons\";\n\nexport interface AgentGuiWorkbenchHeaderCopy {\n collapseConversationRail: string;\n expandConversationRail: string;\n fallbackAgentLabel: string;\n newConversation: string;\n}\n\nexport interface AgentGuiWorkbenchHeaderProps extends HTMLAttributes<HTMLElement> {\n copy: AgentGuiWorkbenchHeaderCopy;\n defaultActions?: ReactNode;\n isConversationRailAutoCollapsed: boolean;\n isConversationRailCollapsed: boolean;\n conversationTitle?: string | null;\n onCreateConversation?: () => void;\n onToggleConversationRail: (nextCollapsed: boolean) => void;\n title?: string;\n}\n\nexport function AgentGuiWorkbenchHeader({\n className,\n copy,\n defaultActions,\n isConversationRailAutoCollapsed,\n isConversationRailCollapsed,\n conversationTitle,\n onCreateConversation,\n onToggleConversationRail,\n title,\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\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 flex-1 items-center gap-1\" },\n createElement(\n \"span\",\n {\n className:\n \"shrink-0 truncate text-[13px] font-semibold leading-5 text-[var(--text-primary)]\"\n },\n appTitle\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-xs\",\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 isConversationRailCollapsed && onCreateConversation\n ? createElement(\n Button as never,\n {\n \"aria-label\": copy.newConversation,\n className: \"cursor-pointer rounded-md\",\n size: \"icon-xs\",\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(EditIcon, {\n \"aria-hidden\": true,\n className: \"size-[16px]\"\n })\n )\n : null,\n isConversationRailCollapsed && sessionTitle\n ? createElement(\n \"span\",\n {\n className:\n \"min-w-0 max-w-[360px] flex-1 truncate text-[13px] font-semibold leading-5 text-[var(--text-primary)]\"\n },\n sessionTitle\n )\n : null\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"]}
|
|
@@ -6,29 +6,31 @@ import {
|
|
|
6
6
|
ZoomableImage,
|
|
7
7
|
cn,
|
|
8
8
|
extractAgentMcpToolTarget,
|
|
9
|
-
getOptionalAgentActivityRuntime,
|
|
10
9
|
normalizeAskUserQuestions,
|
|
11
10
|
resolveWorkspaceFileLinkAction,
|
|
12
11
|
resolveWorkspaceFilePathCandidate,
|
|
13
|
-
resolveWorkspaceLinkAction
|
|
14
|
-
|
|
15
|
-
} from "./chunk-YKDFQADM.js";
|
|
12
|
+
resolveWorkspaceLinkAction
|
|
13
|
+
} from "./chunk-K44WER5Z.js";
|
|
16
14
|
import {
|
|
17
15
|
attrsToMentionItem,
|
|
18
16
|
createAgentFileMentionExtension,
|
|
19
17
|
formatAgentMentionMarkdown,
|
|
20
18
|
mentionItemToAttrs,
|
|
21
19
|
parseAgentMentionMarkdown
|
|
22
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-KHTIC52P.js";
|
|
23
21
|
import {
|
|
24
22
|
isWorkspaceAgentSyntheticControlMessage
|
|
25
23
|
} from "./chunk-XJ34OIEQ.js";
|
|
24
|
+
import {
|
|
25
|
+
getOptionalAgentActivityRuntime,
|
|
26
|
+
useOptionalAgentHostApi
|
|
27
|
+
} from "./chunk-O5TUTXHT.js";
|
|
26
28
|
import {
|
|
27
29
|
workspaceAgentProviderLabel
|
|
28
30
|
} from "./chunk-TYGL25EL.js";
|
|
29
31
|
import {
|
|
30
32
|
translate
|
|
31
|
-
} from "./chunk-
|
|
33
|
+
} from "./chunk-65YMY2M3.js";
|
|
32
34
|
|
|
33
35
|
// shared/imageGenerationTool.ts
|
|
34
36
|
var KNOWN_IMAGE_GENERATION_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
@@ -5124,8 +5126,8 @@ function createParagraphFromText(text, options = {}) {
|
|
|
5124
5126
|
flushTextBuffer();
|
|
5125
5127
|
content.push({
|
|
5126
5128
|
type: "agentFileMention",
|
|
5127
|
-
// 转成规范 node attrs(如
|
|
5128
|
-
//
|
|
5129
|
+
// 转成规范 node attrs(如 workspace-reference 的 source/groupId/fileCount),
|
|
5130
|
+
// 否则只读回显里的 reference chip 拿不到文件数 → 不显示「N 个文件」角标。
|
|
5129
5131
|
attrs: mentionItemToAttrs(parsedMention.item)
|
|
5130
5132
|
});
|
|
5131
5133
|
index = parsedMention.end;
|
|
@@ -5178,28 +5180,25 @@ function plainTextToAgentRichTextInlineContent(text, options = {}) {
|
|
|
5178
5180
|
);
|
|
5179
5181
|
return paragraph.content ?? [];
|
|
5180
5182
|
}
|
|
5181
|
-
function agentRichTextDocToPromptText(doc
|
|
5183
|
+
function agentRichTextDocToPromptText(doc) {
|
|
5182
5184
|
if (doc.type !== "doc") {
|
|
5183
|
-
return nodeToPromptText(doc
|
|
5185
|
+
return nodeToPromptText(doc);
|
|
5184
5186
|
}
|
|
5185
5187
|
const blocks = doc.content ?? [];
|
|
5186
5188
|
if (blocks.length === 0) {
|
|
5187
5189
|
return "";
|
|
5188
5190
|
}
|
|
5189
|
-
return blocks.map((block) => nodeToPromptText(block
|
|
5191
|
+
return blocks.map((block) => nodeToPromptText(block)).join("\n");
|
|
5190
5192
|
}
|
|
5191
|
-
function editorToPromptText(editor
|
|
5192
|
-
return agentRichTextDocToPromptText(editor.getJSON()
|
|
5193
|
+
function editorToPromptText(editor) {
|
|
5194
|
+
return agentRichTextDocToPromptText(editor.getJSON());
|
|
5193
5195
|
}
|
|
5194
|
-
function nodeToPromptText(node
|
|
5196
|
+
function nodeToPromptText(node) {
|
|
5195
5197
|
if (node.type === "text") {
|
|
5196
5198
|
return node.text ?? "";
|
|
5197
5199
|
}
|
|
5198
5200
|
if (node.type === "agentFileMention") {
|
|
5199
|
-
return formatAgentMentionMarkdown(
|
|
5200
|
-
attrsToMentionItem(node.attrs ?? {}),
|
|
5201
|
-
mode
|
|
5202
|
-
);
|
|
5201
|
+
return formatAgentMentionMarkdown(attrsToMentionItem(node.attrs ?? {}));
|
|
5203
5202
|
}
|
|
5204
5203
|
if (node.type === "agentSkillToken") {
|
|
5205
5204
|
return typeof node.attrs?.trigger === "string" ? node.attrs.trigger : "";
|
|
@@ -5213,7 +5212,7 @@ function nodeToPromptText(node, mode) {
|
|
|
5213
5212
|
if (!node.content || node.content.length === 0) {
|
|
5214
5213
|
return "";
|
|
5215
5214
|
}
|
|
5216
|
-
return node.content.map((child) => nodeToPromptText(child
|
|
5215
|
+
return node.content.map((child) => nodeToPromptText(child)).join("");
|
|
5217
5216
|
}
|
|
5218
5217
|
|
|
5219
5218
|
// agent-gui/agentGuiNode/agentRichText/agentRichTextExtensions.ts
|
|
@@ -8021,9 +8020,8 @@ function getSearchRenderData(call) {
|
|
|
8021
8020
|
stringValue8(call.error?.aggregated_output),
|
|
8022
8021
|
stringValue8(call.error?.stdout),
|
|
8023
8022
|
stringValue8(call.error?.formatted_output),
|
|
8024
|
-
stringValue8(call.error?.message)
|
|
8025
|
-
|
|
8026
|
-
)
|
|
8023
|
+
stringValue8(call.error?.message)
|
|
8024
|
+
) ?? ""
|
|
8027
8025
|
};
|
|
8028
8026
|
}
|
|
8029
8027
|
function getWebSearchRenderData(call) {
|
|
@@ -8048,13 +8046,12 @@ function getWebSearchRenderData(call) {
|
|
|
8048
8046
|
stringValue8(call.output?.stdout),
|
|
8049
8047
|
stringValue8(call.output?.output),
|
|
8050
8048
|
stringValue8(call.output?.content),
|
|
8051
|
-
|
|
8052
|
-
),
|
|
8049
|
+
contentText(call.output?.content)
|
|
8050
|
+
) ?? "",
|
|
8053
8051
|
error: firstString4(
|
|
8054
8052
|
stringValue8(call.error?.message),
|
|
8055
|
-
stringValue8(call.error?.stdout)
|
|
8056
|
-
|
|
8057
|
-
)
|
|
8053
|
+
stringValue8(call.error?.stdout)
|
|
8054
|
+
) ?? ""
|
|
8058
8055
|
};
|
|
8059
8056
|
}
|
|
8060
8057
|
function getWebFetchRenderData(call, maxContentLength = 3e3) {
|
|
@@ -9560,8 +9557,9 @@ function hasAgentToolContent(call) {
|
|
|
9560
9557
|
return hasEditContent(call);
|
|
9561
9558
|
case "bash":
|
|
9562
9559
|
case "search":
|
|
9563
|
-
case "web-search":
|
|
9564
9560
|
return hasGenericStructuredContent(call);
|
|
9561
|
+
case "web-search":
|
|
9562
|
+
return hasWebSearchContent(call);
|
|
9565
9563
|
case "web-fetch":
|
|
9566
9564
|
return hasWebFetchContent(call) || hasGenericStructuredContent(call);
|
|
9567
9565
|
case "image-generation": {
|
|
@@ -9588,6 +9586,12 @@ function hasWebFetchContent(call) {
|
|
|
9588
9586
|
const web = getWebFetchRenderData(call);
|
|
9589
9587
|
return Boolean(web.url || web.visibleContent);
|
|
9590
9588
|
}
|
|
9589
|
+
function hasWebSearchContent(call) {
|
|
9590
|
+
const web = getWebSearchRenderData(call);
|
|
9591
|
+
return Boolean(
|
|
9592
|
+
web.query || web.queries.length > 0 || web.output.trim() || web.error || arrayValue8(call.output?.links)?.length
|
|
9593
|
+
);
|
|
9594
|
+
}
|
|
9591
9595
|
function hasReadContent(call) {
|
|
9592
9596
|
const file = objectValue6(call.output?.file);
|
|
9593
9597
|
return Boolean(
|
|
@@ -10699,10 +10703,16 @@ function AgentWebSearchContent({
|
|
|
10699
10703
|
"use memo";
|
|
10700
10704
|
const web = getWebSearchRenderData(call);
|
|
10701
10705
|
const queries = web.queries;
|
|
10702
|
-
const outputText = web.output
|
|
10706
|
+
const outputText = web.output;
|
|
10703
10707
|
const links = normalizeLinks(call.output?.links, outputText);
|
|
10704
10708
|
const summary = extractSummary(outputText) ?? (call.summary.trim() || null);
|
|
10705
10709
|
const visibleSummary = summary ? summary.slice(0, MAX_SUMMARY_LENGTH) : null;
|
|
10710
|
+
const hasRenderableContent = Boolean(
|
|
10711
|
+
web.query || queries.length > 0 || links.length > 0 || visibleSummary || web.error
|
|
10712
|
+
);
|
|
10713
|
+
if (!hasRenderableContent) {
|
|
10714
|
+
return null;
|
|
10715
|
+
}
|
|
10706
10716
|
return /* @__PURE__ */ jsxs33("div", { className: "workspace-agents-status-panel__detail-tool-body", children: [
|
|
10707
10717
|
web.query ? /* @__PURE__ */ jsx44(ToolSection, { title: translate("agentHost.agentTool.details.query"), children: /* @__PURE__ */ jsx44(ToolMarkdownBlock, { content: web.query, onLinkClick }) }) : null,
|
|
10708
10718
|
queries.length > 0 ? /* @__PURE__ */ jsx44(ToolSection, { title: translate("agentHost.agentTool.details.results"), children: /* @__PURE__ */ jsx44("div", { className: "workspace-agents-status-panel__detail-tool-result-list overflow-hidden rounded-[8px] border border-[var(--line-2)] bg-[var(--transparency-block)]", children: queries.map((candidate, index) => /* @__PURE__ */ jsx44(
|
|
@@ -12075,4 +12085,4 @@ export {
|
|
|
12075
12085
|
AgentConversationFlow,
|
|
12076
12086
|
useProjectedAgentConversation
|
|
12077
12087
|
};
|
|
12078
|
-
//# sourceMappingURL=chunk-
|
|
12088
|
+
//# sourceMappingURL=chunk-HVOPJU2K.js.map
|