@tutti-os/agent-gui 0.0.17 → 0.0.19
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 → AgentMentionSearchController-2Vjvmzh3.d.ts} +0 -1
- package/dist/agent-conversation/index.d.ts +1 -1
- package/dist/agent-conversation/index.js +5 -5
- package/dist/agent-message-center/index.d.ts +1 -1
- package/dist/agent-message-center/index.js +5 -5
- package/dist/{chunk-O5TUTXHT.js → chunk-222YHU5Z.js} +1 -1
- package/dist/chunk-222YHU5Z.js.map +1 -0
- package/dist/{chunk-VNAQ6QFE.js → chunk-5BVKJM77.js} +37 -15
- package/dist/chunk-5BVKJM77.js.map +1 -0
- package/dist/{chunk-VO2TZNKV.js → chunk-B727YDVW.js} +5 -5
- package/dist/{chunk-OJ5WX7SZ.js → chunk-B7DTDZVT.js} +2 -2
- package/dist/{chunk-CDTTIUPL.js → chunk-F7XLV7M3.js} +2 -2
- package/dist/{chunk-65YMY2M3.js → chunk-GLDKFIWM.js} +7 -3
- package/dist/chunk-GLDKFIWM.js.map +1 -0
- package/dist/{chunk-K44WER5Z.js → chunk-HFL5WGRF.js} +33 -49
- package/dist/chunk-HFL5WGRF.js.map +1 -0
- package/dist/{chunk-HIREVEZM.js → chunk-JM24HADP.js} +1 -1
- package/dist/chunk-JM24HADP.js.map +1 -0
- package/dist/{chunk-HVOPJU2K.js → chunk-SY3ES2SA.js} +5 -5
- package/dist/{chunk-KHTIC52P.js → chunk-XAQQN6MP.js} +51 -185
- package/dist/chunk-XAQQN6MP.js.map +1 -0
- package/dist/{chunk-GWR6WGZY.js → chunk-XHJQNUH4.js} +41 -28
- package/dist/chunk-XHJQNUH4.js.map +1 -0
- package/dist/context-mention-palette/index.d.ts +2 -2
- package/dist/context-mention-palette/index.js +7 -7
- package/dist/context-mention-provider.d.ts +4 -40
- package/dist/context-mention-provider.js +1 -1
- package/dist/i18n/index.d.ts +6 -2
- package/dist/i18n/index.js +1 -1
- package/dist/index.d.ts +15 -4
- package/dist/index.js +277 -78
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.d.ts +1 -0
- package/dist/workbench/contribution.js +1 -1
- package/dist/workbench/index.js +1 -1
- package/dist/workspace-agent-generated-files.js +2 -2
- package/dist/{workspaceLinkActions-Mjktl_Be.d.ts → workspaceLinkActions-CqWZaCY4.d.ts} +1 -0
- package/package.json +12 -12
- package/dist/chunk-65YMY2M3.js.map +0 -1
- package/dist/chunk-GWR6WGZY.js.map +0 -1
- package/dist/chunk-HIREVEZM.js.map +0 -1
- package/dist/chunk-K44WER5Z.js.map +0 -1
- package/dist/chunk-KHTIC52P.js.map +0 -1
- package/dist/chunk-O5TUTXHT.js.map +0 -1
- package/dist/chunk-VNAQ6QFE.js.map +0 -1
- /package/dist/{chunk-VO2TZNKV.js.map → chunk-B727YDVW.js.map} +0 -0
- /package/dist/{chunk-OJ5WX7SZ.js.map → chunk-B7DTDZVT.js.map} +0 -0
- /package/dist/{chunk-CDTTIUPL.js.map → chunk-F7XLV7M3.js.map} +0 -0
- /package/dist/{chunk-HVOPJU2K.js.map → chunk-SY3ES2SA.js.map} +0 -0
|
@@ -152,6 +152,7 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
152
152
|
});
|
|
153
153
|
const frame = input.frame ?? agentGuiWorkbenchDefaultNodeFrame;
|
|
154
154
|
const copy = resolveAgentGuiWorkbenchContributionCopy(input.copy);
|
|
155
|
+
const renderMinimizedPreview = input.renderMinimizedPreview;
|
|
155
156
|
return {
|
|
156
157
|
dockEntries: agentGuiWorkbenchProviders.map(
|
|
157
158
|
(provider, index) => createAgentGuiWorkbenchDockEntry({
|
|
@@ -289,7 +290,14 @@ function createAgentGuiWorkbenchContribution(input) {
|
|
|
289
290
|
window: {
|
|
290
291
|
closable: true,
|
|
291
292
|
defaultOpen: false,
|
|
292
|
-
minimizedDock: {
|
|
293
|
+
minimizedDock: renderMinimizedPreview ? {
|
|
294
|
+
kind: "component",
|
|
295
|
+
providePreview: (item) => createAgentGuiWorkbenchPreviewContent({
|
|
296
|
+
item,
|
|
297
|
+
renderPreview: renderMinimizedPreview,
|
|
298
|
+
resolveDockPopupTitle: input.resolveDockPopupTitle
|
|
299
|
+
})
|
|
300
|
+
} : {
|
|
293
301
|
kind: "snapshot"
|
|
294
302
|
},
|
|
295
303
|
minimizable: true
|
|
@@ -390,32 +398,13 @@ function createAgentGuiWorkbenchDockEntry(input) {
|
|
|
390
398
|
launchPayload: { provider: input.provider },
|
|
391
399
|
matchNode: (node) => node.data.typeId === agentGuiWorkbenchTypeId && agentGuiWorkbenchProviderFromIdentifier(node.data.instanceId) === input.provider,
|
|
392
400
|
order: input.order,
|
|
393
|
-
providePopupItemPreview: (item) => {
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
const lines = [input.label, state.lastActiveAgentSessionId].filter(
|
|
401
|
-
(line) => Boolean(line?.trim())
|
|
402
|
-
);
|
|
403
|
-
const revision = `${input.provider}
|
|
404
|
-
${title}
|
|
405
|
-
${lines.join("\n")}`;
|
|
406
|
-
return {
|
|
407
|
-
element: input.renderPreview(
|
|
408
|
-
createAgentGuiWorkbenchPreviewBodyContext(item),
|
|
409
|
-
{
|
|
410
|
-
nodeTypeId: agentGuiWorkbenchTypeId,
|
|
411
|
-
onStateChange: () => void 0,
|
|
412
|
-
provider: input.provider
|
|
413
|
-
}
|
|
414
|
-
),
|
|
415
|
-
kind: "component",
|
|
416
|
-
revision
|
|
417
|
-
};
|
|
418
|
-
},
|
|
401
|
+
providePopupItemPreview: (item) => input.renderPreview ? createAgentGuiWorkbenchPreviewContent({
|
|
402
|
+
item,
|
|
403
|
+
label: input.label,
|
|
404
|
+
provider: input.provider,
|
|
405
|
+
renderPreview: input.renderPreview,
|
|
406
|
+
resolveDockPopupTitle: input.resolveDockPopupTitle
|
|
407
|
+
}) : null,
|
|
419
408
|
resolvePopupItem: ({ externalNodeState }) => {
|
|
420
409
|
const title = input.resolveDockPopupTitle?.(
|
|
421
410
|
normalizeAgentGuiWorkbenchState(externalNodeState)
|
|
@@ -431,6 +420,30 @@ ${title ?? ""}`,
|
|
|
431
420
|
visibility: input.visibility
|
|
432
421
|
};
|
|
433
422
|
}
|
|
423
|
+
function createAgentGuiWorkbenchPreviewContent(input) {
|
|
424
|
+
const { externalNodeState, node } = input.item;
|
|
425
|
+
const state = normalizeAgentGuiWorkbenchState(externalNodeState);
|
|
426
|
+
const title = input.resolveDockPopupTitle?.(state) ?? node.title;
|
|
427
|
+
const provider = input.provider ?? agentGuiWorkbenchProviderFromIdentifier(node.data.instanceId) ?? agentGuiWorkbenchProviderFromInstanceId(node.data.instanceId);
|
|
428
|
+
const label = input.label ?? resolveAgentGuiWorkbenchProviderLabel(provider);
|
|
429
|
+
const lines = [label, state.lastActiveAgentSessionId].filter(
|
|
430
|
+
(line) => Boolean(line?.trim())
|
|
431
|
+
);
|
|
432
|
+
return {
|
|
433
|
+
element: input.renderPreview(
|
|
434
|
+
createAgentGuiWorkbenchPreviewBodyContext(input.item),
|
|
435
|
+
{
|
|
436
|
+
nodeTypeId: agentGuiWorkbenchTypeId,
|
|
437
|
+
onStateChange: () => void 0,
|
|
438
|
+
provider
|
|
439
|
+
}
|
|
440
|
+
),
|
|
441
|
+
kind: "component",
|
|
442
|
+
revision: `${provider}
|
|
443
|
+
${title}
|
|
444
|
+
${lines.join("\n")}`
|
|
445
|
+
};
|
|
446
|
+
}
|
|
434
447
|
function createAgentGuiWorkbenchPreviewBodyContext(input) {
|
|
435
448
|
return {
|
|
436
449
|
activation: null,
|
|
@@ -460,4 +473,4 @@ export {
|
|
|
460
473
|
resolveAgentGuiWorkbenchDefaultLaunchFrame,
|
|
461
474
|
resolveAgentGuiWorkbenchContributionCopy
|
|
462
475
|
};
|
|
463
|
-
//# sourceMappingURL=chunk-
|
|
476
|
+
//# sourceMappingURL=chunk-XHJQNUH4.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 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 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 const renderMinimizedPreview = input.renderMinimizedPreview;\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: renderMinimizedPreview\n ? {\n kind: \"component\",\n providePreview: (item) =>\n createAgentGuiWorkbenchPreviewContent({\n item,\n renderPreview: renderMinimizedPreview,\n resolveDockPopupTitle: input.resolveDockPopupTitle\n })\n }\n : {\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 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 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"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { f as AgentMentionSearchState, A as AgentContextMentionItem, a as AgentMentionBrowseCategory, b as AgentMentionFilterId, d as AgentMentionGroupId } from '../AgentMentionSearchController-
|
|
2
|
-
export { c as AgentMentionGroup, e as AgentMentionSearchController } from '../AgentMentionSearchController-
|
|
1
|
+
import { f as AgentMentionSearchState, A as AgentContextMentionItem, a as AgentMentionBrowseCategory, b as AgentMentionFilterId, d as AgentMentionGroupId } from '../AgentMentionSearchController-2Vjvmzh3.js';
|
|
2
|
+
export { c as AgentMentionGroup, e as AgentMentionSearchController } from '../AgentMentionSearchController-2Vjvmzh3.js';
|
|
3
3
|
export { AGENT_CONTEXT_MENTION_PROVIDER_IDS, AgentContextMentionInsertResult, AgentContextMentionProvider, AgentContextMentionProviderId, AgentContextMentionQueryInput } from '../context-mention-provider.js';
|
|
4
4
|
import '@tutti-os/ui-rich-text/at-panel';
|
|
5
5
|
import '@tutti-os/ui-rich-text/types';
|
|
@@ -4,20 +4,20 @@ import {
|
|
|
4
4
|
AgentMentionSearchController,
|
|
5
5
|
flattenAgentMentionPaletteEntries,
|
|
6
6
|
groupStartKeys
|
|
7
|
-
} from "../chunk-
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
7
|
+
} from "../chunk-5BVKJM77.js";
|
|
8
|
+
import "../chunk-B7DTDZVT.js";
|
|
9
|
+
import "../chunk-F7XLV7M3.js";
|
|
10
10
|
import "../chunk-MTFSQWZ6.js";
|
|
11
11
|
import "../chunk-IBIMGLCD.js";
|
|
12
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-XAQQN6MP.js";
|
|
13
13
|
import "../chunk-XJ34OIEQ.js";
|
|
14
|
-
import "../chunk-
|
|
14
|
+
import "../chunk-222YHU5Z.js";
|
|
15
15
|
import "../chunk-TYGL25EL.js";
|
|
16
16
|
import {
|
|
17
17
|
AGENT_CONTEXT_MENTION_PROVIDER_IDS
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-JM24HADP.js";
|
|
19
19
|
import "../chunk-GCBDIQDX.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-GLDKFIWM.js";
|
|
21
21
|
import "../chunk-LUGELG5V.js";
|
|
22
22
|
import "../chunk-PJP5BUU6.js";
|
|
23
23
|
export {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RichTextTriggerProvider, RichTextTriggerQueryInput } from '@tutti-os/ui-rich-text/types';
|
|
1
|
+
import { RichTextTriggerProvider, RichTextTriggerInsertResult, RichTextTriggerQueryInput } from '@tutti-os/ui-rich-text/types';
|
|
2
2
|
import { TuttiExternalAtProviderId } from '@tutti-os/workspace-external-core/contracts';
|
|
3
3
|
|
|
4
4
|
declare const AGENT_CONTEXT_MENTION_PROVIDER_IDS: {
|
|
@@ -12,45 +12,9 @@ type AgentContextMentionProviderId = TuttiExternalAtProviderId;
|
|
|
12
12
|
type AgentContextMentionQueryInput = RichTextTriggerQueryInput & {
|
|
13
13
|
trigger: "@";
|
|
14
14
|
};
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
agentIconUrl?: string;
|
|
18
|
-
iconUrl?: string;
|
|
19
|
-
thumbnailUrl?: string;
|
|
20
|
-
subtitle?: string;
|
|
21
|
-
description?: string;
|
|
22
|
-
participant?: string;
|
|
23
|
-
status?: string;
|
|
24
|
-
statusDataStatus?: string;
|
|
25
|
-
statusLabel?: string;
|
|
26
|
-
statusPulse?: string;
|
|
27
|
-
userAvatarPlaceholderUrl?: string;
|
|
28
|
-
/**
|
|
29
|
-
* 应用是否能够提供产物文件(reference)。"true" 表示支持,缺省/其它值表示不支持。
|
|
30
|
-
* 仅用于 @ 面板行末尾「查看产物文件」入口的展示判断,不持久化到 mention 节点。
|
|
31
|
-
*/
|
|
32
|
-
referencesListSupported?: string;
|
|
33
|
-
}
|
|
34
|
-
type AgentContextMentionInsertResult = {
|
|
35
|
-
kind: "mention";
|
|
36
|
-
mention: {
|
|
37
|
-
entityId: string;
|
|
38
|
-
label: string;
|
|
39
|
-
scope?: Readonly<Record<string, string>>;
|
|
40
|
-
presentation?: AgentContextMentionPresentation;
|
|
41
|
-
};
|
|
42
|
-
} | {
|
|
43
|
-
kind: "markdown-link";
|
|
44
|
-
label: string;
|
|
45
|
-
href: string;
|
|
46
|
-
} | {
|
|
47
|
-
kind: "text";
|
|
48
|
-
text: string;
|
|
49
|
-
};
|
|
50
|
-
type AgentContextMentionProvider<TItem = any> = Omit<RichTextTriggerProvider<TItem>, "toInsertResult"> & {
|
|
15
|
+
type AgentContextMentionInsertResult = RichTextTriggerInsertResult;
|
|
16
|
+
type AgentContextMentionProvider<TItem = any> = Omit<RichTextTriggerProvider<TItem>, "trigger"> & {
|
|
51
17
|
trigger: "@";
|
|
52
|
-
toInsertResult: (item: TItem) => AgentContextMentionInsertResult;
|
|
53
|
-
getItemIconUrl?: (item: TItem) => string | null | undefined | Promise<string | null | undefined>;
|
|
54
18
|
};
|
|
55
19
|
|
|
56
|
-
export { AGENT_CONTEXT_MENTION_PROVIDER_IDS, type AgentContextMentionInsertResult, type
|
|
20
|
+
export { AGENT_CONTEXT_MENTION_PROVIDER_IDS, type AgentContextMentionInsertResult, type AgentContextMentionProvider, type AgentContextMentionProviderId, type AgentContextMentionQueryInput };
|
package/dist/i18n/index.d.ts
CHANGED
|
@@ -471,6 +471,7 @@ declare const agentGuiI18nResources: {
|
|
|
471
471
|
readonly slashStatusContextUnavailable: "Context usage unavailable";
|
|
472
472
|
readonly slashStatusLimitsUnavailable: "Rate limits unavailable from this agent";
|
|
473
473
|
readonly usageChipLabel: "Context {{percent}}%";
|
|
474
|
+
readonly usageTooltipLabel: "Context usage";
|
|
474
475
|
readonly usagePopoverTitle: "Plan usage";
|
|
475
476
|
readonly usageContextWindowLabel: "Context window";
|
|
476
477
|
readonly usageTokensLabel: "Tokens";
|
|
@@ -624,6 +625,7 @@ declare const agentGuiI18nResources: {
|
|
|
624
625
|
readonly sectionEarlier: "Earlier";
|
|
625
626
|
readonly projectSectionEdit: "New session";
|
|
626
627
|
readonly projectSectionMoreActions: "Project actions";
|
|
628
|
+
readonly projectSectionViewFiles: "Open folder";
|
|
627
629
|
readonly projectRailCreateProject: "New project";
|
|
628
630
|
readonly projectRailLinkExistingProject: "Link existing project folder";
|
|
629
631
|
readonly removeProject: "Remove";
|
|
@@ -768,7 +770,7 @@ declare const agentGuiI18nResources: {
|
|
|
768
770
|
readonly referenceWorkspaceFiles: "Reference workspace files";
|
|
769
771
|
readonly referencePicker: {
|
|
770
772
|
readonly clearFilter: "Clear filter";
|
|
771
|
-
readonly confirm: "Use
|
|
773
|
+
readonly confirm: "Use references";
|
|
772
774
|
readonly emptyDirectory: "This folder is empty.";
|
|
773
775
|
readonly emptyPreview: "Select a file to see details";
|
|
774
776
|
readonly emptySearch: "No matching files or folders.";
|
|
@@ -2846,6 +2848,7 @@ declare const agentGuiI18nResources: {
|
|
|
2846
2848
|
readonly slashStatusContextUnavailable: "上下文用量不可用";
|
|
2847
2849
|
readonly slashStatusLimitsUnavailable: "当前 Agent 未提供额度限制";
|
|
2848
2850
|
readonly usageChipLabel: "上下文 {{percent}}%";
|
|
2851
|
+
readonly usageTooltipLabel: "上下文用量";
|
|
2849
2852
|
readonly usagePopoverTitle: "计划用量";
|
|
2850
2853
|
readonly usageContextWindowLabel: "上下文窗口";
|
|
2851
2854
|
readonly usageTokensLabel: "Token 用量";
|
|
@@ -2999,6 +3002,7 @@ declare const agentGuiI18nResources: {
|
|
|
2999
3002
|
readonly sectionEarlier: "更早";
|
|
3000
3003
|
readonly projectSectionEdit: "新建会话";
|
|
3001
3004
|
readonly projectSectionMoreActions: "项目操作";
|
|
3005
|
+
readonly projectSectionViewFiles: "打开文件夹";
|
|
3002
3006
|
readonly projectRailCreateProject: "新建项目";
|
|
3003
3007
|
readonly projectRailLinkExistingProject: "关联已有项目文件";
|
|
3004
3008
|
readonly removeProject: "移除";
|
|
@@ -3143,7 +3147,7 @@ declare const agentGuiI18nResources: {
|
|
|
3143
3147
|
readonly referenceWorkspaceFiles: "引用空间文件";
|
|
3144
3148
|
readonly referencePicker: {
|
|
3145
3149
|
readonly clearFilter: "清除筛选";
|
|
3146
|
-
readonly confirm: "
|
|
3150
|
+
readonly confirm: "引用文件";
|
|
3147
3151
|
readonly emptyDirectory: "当前目录为空";
|
|
3148
3152
|
readonly emptyPreview: "选择一个文件查看详情";
|
|
3149
3153
|
readonly emptySearch: "没有匹配的文件或文件夹";
|
package/dist/i18n/index.js
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -7,9 +7,9 @@ import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
|
|
|
7
7
|
import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
|
|
8
8
|
import { ReferenceLocateTarget, WorkspaceFileReferenceAdapter, WorkspaceFileReference } from '@tutti-os/workspace-file-reference/contracts';
|
|
9
9
|
import { ReferenceSourceAggregator } from '@tutti-os/workspace-file-reference/core';
|
|
10
|
-
import { W as WorkspaceLinkAction } from './workspaceLinkActions-
|
|
11
|
-
import { A as AgentContextMentionItem } from './AgentMentionSearchController-
|
|
12
|
-
export { p as preloadAgentMentionBrowse } from './AgentMentionSearchController-
|
|
10
|
+
import { W as WorkspaceLinkAction } from './workspaceLinkActions-CqWZaCY4.js';
|
|
11
|
+
import { A as AgentContextMentionItem } from './AgentMentionSearchController-2Vjvmzh3.js';
|
|
12
|
+
export { p as preloadAgentMentionBrowse } from './AgentMentionSearchController-2Vjvmzh3.js';
|
|
13
13
|
import { AgentContextMentionProvider } from './context-mention-provider.js';
|
|
14
14
|
export { AGENT_CONTEXT_MENTION_PROVIDER_IDS, AgentContextMentionProviderId } from './context-mention-provider.js';
|
|
15
15
|
import { A as AgentMessageMarkdownWorkspaceAppIcon } from './AgentMessageMarkdown-DeYPURtF.js';
|
|
@@ -293,6 +293,16 @@ interface AgentActivityRuntimeReadSessionAttachmentInput {
|
|
|
293
293
|
attachmentId: string;
|
|
294
294
|
workspaceId: string;
|
|
295
295
|
}
|
|
296
|
+
type AgentActivityRuntimePromptContentBlock = AgentActivitySendInput["content"][number] & {
|
|
297
|
+
url?: string;
|
|
298
|
+
};
|
|
299
|
+
interface AgentActivityRuntimeUploadPromptContentInput {
|
|
300
|
+
content: AgentActivityRuntimePromptContentBlock[];
|
|
301
|
+
workspaceId: string;
|
|
302
|
+
}
|
|
303
|
+
interface AgentActivityRuntimeUploadPromptContentResult {
|
|
304
|
+
content: AgentActivityRuntimePromptContentBlock[];
|
|
305
|
+
}
|
|
296
306
|
interface AgentActivityRuntimeSessionAttachment {
|
|
297
307
|
attachmentId: string;
|
|
298
308
|
mimeType: string;
|
|
@@ -317,6 +327,7 @@ interface AgentActivityRuntime {
|
|
|
317
327
|
/** @deprecated Use ensureSessionSynchronized. */
|
|
318
328
|
retainSessionEvents(input: AgentActivityRuntimeRetainSessionEventsInput): () => void;
|
|
319
329
|
sendInput(input: AgentActivitySendInput): Promise<AgentActivitySession>;
|
|
330
|
+
uploadPromptContent?(input: AgentActivityRuntimeUploadPromptContentInput): Promise<AgentActivityRuntimeUploadPromptContentResult>;
|
|
320
331
|
readSessionAttachment?(input: AgentActivityRuntimeReadSessionAttachmentInput): Promise<AgentActivityRuntimeSessionAttachment>;
|
|
321
332
|
setSessionPinned(input: AgentActivityRuntimeSetSessionPinnedInput): Promise<AgentActivitySession>;
|
|
322
333
|
trackSettingsProjectChange?(input: AgentActivityRuntimeTrackSettingsProjectChangeInput): Promise<void>;
|
|
@@ -849,4 +860,4 @@ interface AgentActivityHostProviderProps extends PropsWithChildren {
|
|
|
849
860
|
}
|
|
850
861
|
declare function AgentActivityHostProvider({ agentActivityRuntime, agentHostApi, children }: AgentActivityHostProviderProps): JSX.Element;
|
|
851
862
|
|
|
852
|
-
export { AgentActivityHostProvider, type AgentActivityHostProviderProps, type AgentActivityRuntime, type AgentActivityRuntimeListSessionMessagesInput, AgentActivityRuntimeProvider, type AgentActivityRuntimeProviderProps, type AgentActivityRuntimeRetainSessionEventsInput, type AgentActivityRuntimeSetSessionPinnedInput, type AgentActivityRuntimeUpdateSessionSettingsInput, type AgentActivityRuntimeWarmupOpenclawGatewayInput, type AgentActivitySnapshotProjection, AgentContextMentionProvider, AgentGUI, type AgentGUIProps, AgentGuiI18nLocale, type AgentHostApi, type AgentHostInputApi, type AgentHostRuntimeApi, type AgentProbeProvider, type AgentProbeSnapshot, type AgentProviderProbeListInput, type AgentProviderProbeListResult, type AgentUsageQuota, type AgentUsageSnapshot, agentGuiDockIconUrl, agentGuiDockIconUrls, agentHostSnapshotFromAgentActivitySnapshot, buildAgentActivitySnapshotProjection, getAgentActivityRuntime, getOptionalAgentActivityRuntime, projectCoreSessionStatus, resetAgentActivityRuntimeForTests, resolveAgentGUIExpandedWindowFrame, setAgentActivityRuntimeForTests, shouldAutoCollapseAgentGUIConversationRail, useAgentActivityRuntime, useAgentActivitySnapshot, useOptionalAgentActivityRuntime };
|
|
863
|
+
export { AgentActivityHostProvider, type AgentActivityHostProviderProps, type AgentActivityRuntime, type AgentActivityRuntimeListSessionMessagesInput, type AgentActivityRuntimePromptContentBlock, AgentActivityRuntimeProvider, type AgentActivityRuntimeProviderProps, type AgentActivityRuntimeRetainSessionEventsInput, type AgentActivityRuntimeSetSessionPinnedInput, type AgentActivityRuntimeUpdateSessionSettingsInput, type AgentActivityRuntimeUploadPromptContentInput, type AgentActivityRuntimeUploadPromptContentResult, type AgentActivityRuntimeWarmupOpenclawGatewayInput, type AgentActivitySnapshotProjection, AgentContextMentionProvider, AgentGUI, type AgentGUIProps, AgentGuiI18nLocale, type AgentHostApi, type AgentHostInputApi, type AgentHostRuntimeApi, type AgentProbeProvider, type AgentProbeSnapshot, type AgentProviderProbeListInput, type AgentProviderProbeListResult, type AgentUsageQuota, type AgentUsageSnapshot, agentGuiDockIconUrl, agentGuiDockIconUrls, agentHostSnapshotFromAgentActivitySnapshot, buildAgentActivitySnapshotProjection, getAgentActivityRuntime, getOptionalAgentActivityRuntime, projectCoreSessionStatus, resetAgentActivityRuntimeForTests, resolveAgentGUIExpandedWindowFrame, setAgentActivityRuntimeForTests, shouldAutoCollapseAgentGUIConversationRail, useAgentActivityRuntime, useAgentActivitySnapshot, useOptionalAgentActivityRuntime };
|