@tutti-os/agent-gui 0.0.62 → 0.0.64

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.
Files changed (88) hide show
  1. package/dist/agent-conversation/index.d.ts +2 -2
  2. package/dist/agent-conversation/index.js +7 -7
  3. package/dist/agent-env/index.js +2 -1
  4. package/dist/agent-env/index.js.map +1 -1
  5. package/dist/agent-message-center/index.js +9 -9
  6. package/dist/{agentGuiNodeTypes-CC52zXAV.d.ts → agentGuiNodeTypes-CCjzXdTe.d.ts} +4 -1
  7. package/dist/app/renderer/agentactivity.css +38 -4
  8. package/dist/app/renderer/assets/icons/agents/agent-colorful.png +0 -0
  9. package/dist/app/renderer/assets/icons/agents/cursor-colorful.png +0 -0
  10. package/dist/app/renderer/assets/icons/agents/cursor-flat-filled.svg +3 -0
  11. package/dist/app/renderer/assets/icons/agents/cursor-rounded.png +0 -0
  12. package/dist/{chunk-IIVHPXAB.js → chunk-2IMBPRKV.js} +1 -1
  13. package/dist/chunk-2IMBPRKV.js.map +1 -0
  14. package/dist/{chunk-4UTWOSHP.js → chunk-3NSUJ7OF.js} +5 -1
  15. package/dist/chunk-3NSUJ7OF.js.map +1 -0
  16. package/dist/{chunk-SGXYVGQT.js → chunk-52VZ54WH.js} +5 -5
  17. package/dist/{chunk-CVSCZ3CK.js → chunk-76GTKO4Q.js} +7 -2
  18. package/dist/chunk-76GTKO4Q.js.map +1 -0
  19. package/dist/{chunk-G6UO6JVM.js → chunk-C465B7WK.js} +2 -2
  20. package/dist/{chunk-22L4VWUR.js → chunk-CKCUEHBW.js} +3 -1
  21. package/dist/chunk-CKCUEHBW.js.map +1 -0
  22. package/dist/{chunk-FRCIPTUD.js → chunk-ERWDRI3F.js} +8 -18
  23. package/dist/chunk-ERWDRI3F.js.map +1 -0
  24. package/dist/{chunk-6MUKWI6Z.js → chunk-F6GDUU4X.js} +167 -113
  25. package/dist/chunk-F6GDUU4X.js.map +1 -0
  26. package/dist/{chunk-FQQDBBNI.js → chunk-FLTLZGIN.js} +3 -3
  27. package/dist/{chunk-5WB3NGIN.js → chunk-FUJ73PTH.js} +29 -2
  28. package/dist/chunk-FUJ73PTH.js.map +1 -0
  29. package/dist/{chunk-RO6KQD3J.js → chunk-IIXCU2UU.js} +2 -2
  30. package/dist/{chunk-CA25GD5Q.js → chunk-MQ6RKXXW.js} +34 -4
  31. package/dist/chunk-MQ6RKXXW.js.map +1 -0
  32. package/dist/{chunk-NZN43XT5.js → chunk-PVVM7MZZ.js} +8 -6
  33. package/dist/chunk-PVVM7MZZ.js.map +1 -0
  34. package/dist/{chunk-V4JGVBUN.js → chunk-R2NGSPQS.js} +32 -1
  35. package/dist/chunk-R2NGSPQS.js.map +1 -0
  36. package/dist/{chunk-QC642RAG.js → chunk-RDRKIMAC.js} +15 -8
  37. package/dist/chunk-RDRKIMAC.js.map +1 -0
  38. package/dist/{chunk-ZUVEBW5T.js → chunk-TFPKI4XJ.js} +2 -2
  39. package/dist/{chunk-SW6JCJCO.js → chunk-TT2YJNEP.js} +3 -3
  40. package/dist/{chunk-K4UUEG7X.js → chunk-YFTQK2G4.js} +113 -34
  41. package/dist/chunk-YFTQK2G4.js.map +1 -0
  42. package/dist/{chunk-3KS22CG2.js → chunk-YUMHFZ5A.js} +3 -3
  43. package/dist/{chunk-7P6CUYQT.js → chunk-ZTZ6STJZ.js} +2 -2
  44. package/dist/context-mention-palette/index.js +8 -8
  45. package/dist/cursor-flat-filled-CL7N3BTZ.svg +3 -0
  46. package/dist/i18n/index.d.ts +33 -3
  47. package/dist/i18n/index.js +2 -2
  48. package/dist/index.d.ts +7 -5
  49. package/dist/index.js +666 -214
  50. package/dist/index.js.map +1 -1
  51. package/dist/queued-prompt-runtime.d.ts +2 -2
  52. package/dist/{types-DSc2ta3s.d.ts → types-BAPEle8b.d.ts} +3 -3
  53. package/dist/workbench/contribution.d.ts +10 -3
  54. package/dist/workbench/contribution.js +10 -8
  55. package/dist/workbench/index.d.ts +4 -2
  56. package/dist/workbench/index.js +11 -11
  57. package/dist/workbench/launch.d.ts +1 -1
  58. package/dist/workbench/launch.js +3 -3
  59. package/dist/workbench/providerCatalog.d.ts +2 -2
  60. package/dist/workbench/providerCatalog.js +1 -1
  61. package/dist/workbench/sessionTitle.d.ts +1 -1
  62. package/dist/workbench/sessionTitle.js +3 -3
  63. package/dist/workbench/state.d.ts +1 -1
  64. package/dist/workbench/state.js +3 -3
  65. package/dist/workbench/types.d.ts +3 -2
  66. package/dist/workbench/types.js +1 -1
  67. package/dist/workspace-agent-generated-files.js +3 -3
  68. package/package.json +12 -12
  69. package/dist/chunk-22L4VWUR.js.map +0 -1
  70. package/dist/chunk-4UTWOSHP.js.map +0 -1
  71. package/dist/chunk-5WB3NGIN.js.map +0 -1
  72. package/dist/chunk-6MUKWI6Z.js.map +0 -1
  73. package/dist/chunk-CA25GD5Q.js.map +0 -1
  74. package/dist/chunk-CVSCZ3CK.js.map +0 -1
  75. package/dist/chunk-FRCIPTUD.js.map +0 -1
  76. package/dist/chunk-IIVHPXAB.js.map +0 -1
  77. package/dist/chunk-K4UUEG7X.js.map +0 -1
  78. package/dist/chunk-NZN43XT5.js.map +0 -1
  79. package/dist/chunk-QC642RAG.js.map +0 -1
  80. package/dist/chunk-V4JGVBUN.js.map +0 -1
  81. /package/dist/{chunk-SGXYVGQT.js.map → chunk-52VZ54WH.js.map} +0 -0
  82. /package/dist/{chunk-G6UO6JVM.js.map → chunk-C465B7WK.js.map} +0 -0
  83. /package/dist/{chunk-FQQDBBNI.js.map → chunk-FLTLZGIN.js.map} +0 -0
  84. /package/dist/{chunk-RO6KQD3J.js.map → chunk-IIXCU2UU.js.map} +0 -0
  85. /package/dist/{chunk-ZUVEBW5T.js.map → chunk-TFPKI4XJ.js.map} +0 -0
  86. /package/dist/{chunk-SW6JCJCO.js.map → chunk-TT2YJNEP.js.map} +0 -0
  87. /package/dist/{chunk-3KS22CG2.js.map → chunk-YUMHFZ5A.js.map} +0 -0
  88. /package/dist/{chunk-7P6CUYQT.js.map → chunk-ZTZ6STJZ.js.map} +0 -0
@@ -1,6 +1,6 @@
1
- import { d as AgentGUIQueuedPromptVM } from './agentGuiNodeTypes-CC52zXAV.js';
1
+ import { d as AgentGUIQueuedPromptVM } from './agentGuiNodeTypes-CCjzXdTe.js';
2
2
  import '@tutti-os/agent-activity-core';
3
- import './types-DSc2ta3s.js';
3
+ import './types-BAPEle8b.js';
4
4
  import './workspaceAgentActivityListViewModel-DJvAqZso.js';
5
5
  import './agentConversationVM-DPAgUJlR.js';
6
6
  import '@tutti-os/workspace-user-project/contracts';
@@ -1,4 +1,4 @@
1
- type AgentHostAgentSessionProvider = "claude-code" | "codex" | "nexight" | "gemini" | "hermes" | "openclaw";
1
+ type AgentHostAgentSessionProvider = "claude-code" | "codex" | "cursor" | "nexight" | "gemini" | "hermes" | "openclaw";
2
2
  type AgentHostAgentSessionPermissionModeSemantic = "ask-before-write" | "accept-edits" | "locked-down" | "auto" | "full-access" | "unconfigurable";
3
3
  type AgentHostAgentSessionReasoningEffort = "minimal" | "low" | "medium" | "high" | "xhigh" | string;
4
4
  type AgentHostAgentSessionSpeed = "standard" | "fast" | string;
@@ -128,7 +128,7 @@ interface AgentHostAgentSessionCommand {
128
128
  inputHint?: string;
129
129
  }
130
130
 
131
- declare const AGENT_PROVIDERS: readonly ["claude-code", "codex", "nexight", "opencode", "gemini", "openclaw", "hermes"];
131
+ declare const AGENT_PROVIDERS: readonly ["claude-code", "codex", "cursor", "nexight", "opencode", "gemini", "openclaw", "hermes"];
132
132
  type AgentProvider = (typeof AGENT_PROVIDERS)[number];
133
133
 
134
134
  interface AgentGUINodeData {
@@ -147,7 +147,7 @@ interface AgentGUINodeData {
147
147
  composerOverridesByAgentTargetId?: Record<string, AgentHostAgentSessionComposerSettings | null> | null;
148
148
  composerOverridesByProvider?: Partial<Record<AgentGUIProvider, AgentHostAgentSessionComposerSettings | null>> | null;
149
149
  }
150
- type AgentGUIProvider = Extract<AgentProvider, "claude-code" | "codex" | "nexight" | "gemini" | "hermes" | "openclaw">;
150
+ type AgentGUIProvider = Extract<AgentProvider, "claude-code" | "codex" | "cursor" | "nexight" | "gemini" | "hermes" | "openclaw">;
151
151
  interface AgentGUIProviderTargetRef {
152
152
  kind: string;
153
153
  provider: AgentGUIProvider;
@@ -1,10 +1,11 @@
1
1
  import { ReactNode } from 'react';
2
2
  import { WorkbenchFrame, WorkbenchHostNodeBodyContext, WorkbenchHostLaunchRequest, WorkbenchHostDockEntry, WorkbenchContribution } from '@tutti-os/workbench-surface';
3
3
  import { AgentGuiWorkbenchProvider, AgentGuiWorkbenchState } from './types.js';
4
- import { e as AgentGUIProviderTarget, f as AgentGUIProviderTargetRef } from '../types-DSc2ta3s.js';
4
+ import { e as AgentGUIProviderTarget, f as AgentGUIProviderTargetRef } from '../types-BAPEle8b.js';
5
5
 
6
6
  declare const agentGuiWorkbenchDefaultNodeFrame: WorkbenchFrame;
7
- declare const agentGuiWorkbenchDefaultUsableHeightRatio = 0.7;
7
+ declare const agentGuiWorkbenchDefaultUsableWidthRatio = 0.8;
8
+ declare const agentGuiWorkbenchDefaultUsableHeightRatio = 0.9;
8
9
  declare const agentGuiWorkbenchCompactVisibleAreaRatio = 0.9;
9
10
  declare const agentGuiWorkbenchNewWindowCascadeOffset: {
10
11
  x: number;
@@ -20,6 +21,10 @@ interface AgentGuiWorkbenchConversationRailToggleDetail {
20
21
  interface AgentGuiWorkbenchNewConversationDetail {
21
22
  instanceId: string;
22
23
  }
24
+ interface AgentGuiWorkbenchConversationIdentity {
25
+ iconUrl?: string | null;
26
+ title: string | null;
27
+ }
23
28
  interface AgentGuiWorkbenchContributionCopy {
24
29
  collapseConversationRail: string;
25
30
  close: string;
@@ -53,6 +58,7 @@ interface CreateAgentGuiWorkbenchContributionInput {
53
58
  renderPreview?(context: WorkbenchHostNodeBodyContext<AgentGuiWorkbenchState | null, unknown>, helpers: AgentGuiWorkbenchRenderBodyHelpers): ReactNode;
54
59
  renderMinimizedPreview(context: WorkbenchHostNodeBodyContext<AgentGuiWorkbenchState | null, unknown>, helpers: AgentGuiWorkbenchRenderBodyHelpers): ReactNode;
55
60
  resolveDockPopupTitle?: (state: AgentGuiWorkbenchState | null) => string | null;
61
+ resolveDockPopupIdentity?: (state: AgentGuiWorkbenchState | null) => AgentGuiWorkbenchConversationIdentity | null;
56
62
  resolveDockLaunchPayload?: (input: {
57
63
  dockEntryId?: string | null;
58
64
  payload: unknown;
@@ -74,6 +80,7 @@ interface BuildAgentGuiDockEntriesInput {
74
80
  providerAvailability?: AgentGuiWorkbenchProviderAvailability;
75
81
  providerTargetsLoading?: boolean;
76
82
  renderPreview?: CreateAgentGuiWorkbenchContributionInput["renderPreview"];
83
+ resolveDockPopupIdentity?: CreateAgentGuiWorkbenchContributionInput["resolveDockPopupIdentity"];
77
84
  resolveDockPopupTitle?: CreateAgentGuiWorkbenchContributionInput["resolveDockPopupTitle"];
78
85
  sectionId?: string;
79
86
  targets?: readonly AgentGUIProviderTarget[] | null;
@@ -92,4 +99,4 @@ declare function resolveAgentGuiWorkbenchDefaultLaunchFrame(input: {
92
99
  }): WorkbenchFrame;
93
100
  declare function resolveAgentGuiWorkbenchContributionCopy(copy?: AgentGuiWorkbenchContributionCopyOverrides): AgentGuiWorkbenchContributionCopy;
94
101
 
95
- export { AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT, AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT, type AgentGuiWorkbenchContributionCopy, type AgentGuiWorkbenchContributionCopyOverrides, type AgentGuiWorkbenchConversationRailToggleDetail, type AgentGuiWorkbenchNewConversationDetail, type AgentGuiWorkbenchProviderAvailability, type AgentGuiWorkbenchRenderBodyHelpers, type BuildAgentGuiDockEntriesInput, type CreateAgentGuiWorkbenchContributionInput, agentGuiWorkbenchCompactVisibleAreaRatio, agentGuiWorkbenchDefaultCopy, agentGuiWorkbenchDefaultNodeFrame, agentGuiWorkbenchDefaultUsableHeightRatio, agentGuiWorkbenchNewWindowCascadeOffset, agentGuiWorkbenchProviderRailWidthPx, buildAgentGuiDockEntries, createAgentGuiWorkbenchContribution, resolveAgentGuiUnifiedDockLaunchPayload, resolveAgentGuiWorkbenchContributionCopy, resolveAgentGuiWorkbenchDefaultLaunchFrame };
102
+ export { AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT, AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT, type AgentGuiWorkbenchContributionCopy, type AgentGuiWorkbenchContributionCopyOverrides, type AgentGuiWorkbenchConversationIdentity, type AgentGuiWorkbenchConversationRailToggleDetail, type AgentGuiWorkbenchNewConversationDetail, type AgentGuiWorkbenchProviderAvailability, type AgentGuiWorkbenchRenderBodyHelpers, type BuildAgentGuiDockEntriesInput, type CreateAgentGuiWorkbenchContributionInput, agentGuiWorkbenchCompactVisibleAreaRatio, agentGuiWorkbenchDefaultCopy, agentGuiWorkbenchDefaultNodeFrame, agentGuiWorkbenchDefaultUsableHeightRatio, agentGuiWorkbenchDefaultUsableWidthRatio, agentGuiWorkbenchNewWindowCascadeOffset, agentGuiWorkbenchProviderRailWidthPx, buildAgentGuiDockEntries, createAgentGuiWorkbenchContribution, resolveAgentGuiUnifiedDockLaunchPayload, resolveAgentGuiWorkbenchContributionCopy, resolveAgentGuiWorkbenchDefaultLaunchFrame };
@@ -5,6 +5,7 @@ import {
5
5
  agentGuiWorkbenchDefaultCopy,
6
6
  agentGuiWorkbenchDefaultNodeFrame,
7
7
  agentGuiWorkbenchDefaultUsableHeightRatio,
8
+ agentGuiWorkbenchDefaultUsableWidthRatio,
8
9
  agentGuiWorkbenchNewWindowCascadeOffset,
9
10
  agentGuiWorkbenchProviderRailWidthPx,
10
11
  buildAgentGuiDockEntries,
@@ -12,14 +13,14 @@ import {
12
13
  resolveAgentGuiUnifiedDockLaunchPayload,
13
14
  resolveAgentGuiWorkbenchContributionCopy,
14
15
  resolveAgentGuiWorkbenchDefaultLaunchFrame
15
- } from "../chunk-K4UUEG7X.js";
16
- import "../chunk-NZN43XT5.js";
17
- import "../chunk-3KS22CG2.js";
18
- import "../chunk-IIVHPXAB.js";
19
- import "../chunk-22L4VWUR.js";
20
- import "../chunk-5WB3NGIN.js";
21
- import "../chunk-4UTWOSHP.js";
22
- import "../chunk-V4JGVBUN.js";
16
+ } from "../chunk-YFTQK2G4.js";
17
+ import "../chunk-PVVM7MZZ.js";
18
+ import "../chunk-YUMHFZ5A.js";
19
+ import "../chunk-2IMBPRKV.js";
20
+ import "../chunk-CKCUEHBW.js";
21
+ import "../chunk-FUJ73PTH.js";
22
+ import "../chunk-3NSUJ7OF.js";
23
+ import "../chunk-R2NGSPQS.js";
23
24
  export {
24
25
  AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT,
25
26
  AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT,
@@ -27,6 +28,7 @@ export {
27
28
  agentGuiWorkbenchDefaultCopy,
28
29
  agentGuiWorkbenchDefaultNodeFrame,
29
30
  agentGuiWorkbenchDefaultUsableHeightRatio,
31
+ agentGuiWorkbenchDefaultUsableWidthRatio,
30
32
  agentGuiWorkbenchNewWindowCascadeOffset,
31
33
  agentGuiWorkbenchProviderRailWidthPx,
32
34
  buildAgentGuiDockEntries,
@@ -6,7 +6,7 @@ import { HTMLAttributes, ReactNode } from 'react';
6
6
  import { WorkbenchDisplayMode, WorkbenchHostNodeHeaderWindowActions } from '@tutti-os/workbench-surface';
7
7
  export { AgentGuiSessionTitleFormatOptions, AgentGuiWorkbenchSessionTitleResult, ResolveAgentGuiWorkbenchSessionTitleInput, formatAgentGuiConversationPlainTitle, formatAgentGuiSessionPlainTitle, resolveAgentGuiWorkbenchSessionTitle } from './sessionTitle.js';
8
8
  export { AgentGuiWorkbenchComposerOverrides, AgentGuiWorkbenchNodeState, AgentGuiWorkbenchPrefillPromptPayload, AgentGuiWorkbenchProvider, AgentGuiWorkbenchState, AgentGuiWorkbenchWorkspaceState, agentGuiWorkbenchOpenSessionActivationType, agentGuiWorkbenchPrefillPromptActivationType } from './types.js';
9
- import '../types-DSc2ta3s.js';
9
+ import '../types-BAPEle8b.js';
10
10
  import '@tutti-os/agent-activity-core';
11
11
  import '../uiSettings-BQS9r2eo.js';
12
12
 
@@ -27,13 +27,15 @@ interface AgentGuiWorkbenchHeaderProps extends HTMLAttributes<HTMLElement> {
27
27
  isConversationRailAutoCollapsed: boolean;
28
28
  isConversationRailCollapsed: boolean;
29
29
  conversationRailWidthPx?: number | null;
30
+ conversationIconUrl?: string | null;
30
31
  providerRailWidthPx?: number | null;
31
32
  conversationTitle?: string | null;
33
+ nodeId: string;
32
34
  onCreateConversation?: () => void;
33
35
  onToggleConversationRail: (nextCollapsed: boolean) => void;
34
36
  title?: string;
35
37
  windowActions?: Pick<WorkbenchHostNodeHeaderWindowActions, "close" | "minimize" | "toggleDisplayMode">;
36
38
  }
37
- declare function AgentGuiWorkbenchHeader({ className, copy, defaultActions: _defaultActions, displayMode, isConversationRailAutoCollapsed, isConversationRailCollapsed, conversationRailWidthPx, providerRailWidthPx, conversationTitle, onCreateConversation, onToggleConversationRail, title, windowActions, ...headerProps }: AgentGuiWorkbenchHeaderProps): ReactNode;
39
+ declare function AgentGuiWorkbenchHeader({ className, copy, defaultActions: _defaultActions, displayMode, isConversationRailAutoCollapsed, isConversationRailCollapsed, conversationRailWidthPx, conversationIconUrl, providerRailWidthPx, conversationTitle, nodeId, onCreateConversation, onToggleConversationRail, title: _title, windowActions, ...headerProps }: AgentGuiWorkbenchHeaderProps): ReactNode;
38
40
 
39
41
  export { AgentGuiWorkbenchHeader, type AgentGuiWorkbenchHeaderCopy, type AgentGuiWorkbenchHeaderProps };
@@ -8,7 +8,7 @@ import {
8
8
  createAgentGuiWorkbenchContribution,
9
9
  resolveAgentGuiUnifiedDockLaunchPayload,
10
10
  resolveAgentGuiWorkbenchContributionCopy
11
- } from "../chunk-K4UUEG7X.js";
11
+ } from "../chunk-YFTQK2G4.js";
12
12
  import {
13
13
  agentGuiWorkbenchProviderFromInstanceId,
14
14
  areAgentGuiWorkbenchNodeStatesEqual,
@@ -18,7 +18,7 @@ import {
18
18
  normalizeAgentGuiWorkbenchNodeState,
19
19
  normalizeAgentGuiWorkbenchState,
20
20
  projectAgentGuiWorkbenchState
21
- } from "../chunk-NZN43XT5.js";
21
+ } from "../chunk-PVVM7MZZ.js";
22
22
  import {
23
23
  agentGuiWorkbenchDockEntryId,
24
24
  agentGuiWorkbenchDockIdentityFromIdentifier,
@@ -31,11 +31,11 @@ import {
31
31
  createAgentGuiWorkbenchInstanceId,
32
32
  createAgentGuiWorkbenchLaunchDescriptor,
33
33
  createAgentGuiWorkbenchSessionLaunchRequest
34
- } from "../chunk-3KS22CG2.js";
34
+ } from "../chunk-YUMHFZ5A.js";
35
35
  import {
36
36
  agentGuiWorkbenchOpenSessionActivationType,
37
37
  agentGuiWorkbenchPrefillPromptActivationType
38
- } from "../chunk-IIVHPXAB.js";
38
+ } from "../chunk-2IMBPRKV.js";
39
39
  import {
40
40
  agentGuiWorkbenchComingSoonProviders,
41
41
  agentGuiWorkbenchDefaultDockProviders,
@@ -48,17 +48,17 @@ import {
48
48
  isAgentGuiWorkbenchProvider,
49
49
  normalizeAgentGuiWorkbenchProvider,
50
50
  resolveAgentGuiWorkbenchProviderLabel
51
- } from "../chunk-22L4VWUR.js";
52
- import "../chunk-5WB3NGIN.js";
53
- import "../chunk-4UTWOSHP.js";
51
+ } from "../chunk-CKCUEHBW.js";
52
+ import "../chunk-FUJ73PTH.js";
53
+ import "../chunk-3NSUJ7OF.js";
54
54
  import {
55
55
  formatAgentGuiConversationPlainTitle,
56
56
  formatAgentGuiSessionPlainTitle,
57
57
  resolveAgentGuiWorkbenchSessionTitle
58
- } from "../chunk-G6UO6JVM.js";
59
- import "../chunk-CVSCZ3CK.js";
60
- import "../chunk-V4JGVBUN.js";
61
- import "../chunk-CA25GD5Q.js";
58
+ } from "../chunk-C465B7WK.js";
59
+ import "../chunk-76GTKO4Q.js";
60
+ import "../chunk-R2NGSPQS.js";
61
+ import "../chunk-MQ6RKXXW.js";
62
62
  import "../chunk-GCBDIQDX.js";
63
63
  export {
64
64
  AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT,
@@ -1,6 +1,6 @@
1
1
  import { WorkbenchHostLaunchRequest } from '@tutti-os/workbench-surface';
2
2
  import { agentGuiWorkbenchOpenSessionActivationType, AgentGuiWorkbenchPrefillPromptPayload, agentGuiWorkbenchPrefillPromptActivationType, AgentGuiWorkbenchProvider } from './types.js';
3
- import '../types-DSc2ta3s.js';
3
+ import '../types-BAPEle8b.js';
4
4
 
5
5
  type AgentGuiWorkbenchLaunchRequestInput = Pick<WorkbenchHostLaunchRequest, "payload" | "typeId"> & {
6
6
  dockEntryId?: string | null;
@@ -12,11 +12,11 @@ import {
12
12
  createAgentGuiWorkbenchSessionLaunchRequest,
13
13
  resolveAgentGuiWorkbenchLaunchDockEntryId,
14
14
  shouldReuseAgentGuiWorkbenchDockEntryNode
15
- } from "../chunk-3KS22CG2.js";
15
+ } from "../chunk-YUMHFZ5A.js";
16
16
  import {
17
17
  agentGuiWorkbenchPrefillPromptActivationType
18
- } from "../chunk-IIVHPXAB.js";
19
- import "../chunk-22L4VWUR.js";
18
+ } from "../chunk-2IMBPRKV.js";
19
+ import "../chunk-CKCUEHBW.js";
20
20
  export {
21
21
  agentGuiWorkbenchDockEntryId,
22
22
  agentGuiWorkbenchDockIdentityFromIdentifier,
@@ -1,7 +1,7 @@
1
1
  import { AgentGuiWorkbenchProvider } from './types.js';
2
- import '../types-DSc2ta3s.js';
2
+ import '../types-BAPEle8b.js';
3
3
 
4
- declare const agentGuiWorkbenchProviders: readonly ["claude-code", "codex", "nexight", "hermes", "gemini", "openclaw"];
4
+ declare const agentGuiWorkbenchProviders: readonly ["claude-code", "codex", "cursor", "nexight", "hermes", "gemini", "openclaw"];
5
5
  declare const agentGuiWorkbenchDefaultDockProviders: readonly ["codex", "claude-code"];
6
6
  declare const agentGuiWorkbenchDockSuppressedProviders: readonly ["hermes", "gemini"];
7
7
  declare const agentGuiWorkbenchComingSoonProviders: readonly ["nexight"];
@@ -10,7 +10,7 @@ import {
10
10
  isAgentGuiWorkbenchProvider,
11
11
  normalizeAgentGuiWorkbenchProvider,
12
12
  resolveAgentGuiWorkbenchProviderLabel
13
- } from "../chunk-22L4VWUR.js";
13
+ } from "../chunk-CKCUEHBW.js";
14
14
  export {
15
15
  agentGuiWorkbenchComingSoonProviders,
16
16
  agentGuiWorkbenchDefaultDockProviders,
@@ -1,7 +1,7 @@
1
1
  import { AgentActivitySnapshot } from '@tutti-os/agent-activity-core';
2
2
  import { U as UiLanguage } from '../uiSettings-BQS9r2eo.js';
3
3
  import { AgentGuiWorkbenchProvider } from './types.js';
4
- import '../types-DSc2ta3s.js';
4
+ import '../types-BAPEle8b.js';
5
5
 
6
6
  interface AgentGuiSessionTitleFormatOptions {
7
7
  fallbackAgentLabel?: string;
@@ -2,9 +2,9 @@ import {
2
2
  formatAgentGuiConversationPlainTitle,
3
3
  formatAgentGuiSessionPlainTitle,
4
4
  resolveAgentGuiWorkbenchSessionTitle
5
- } from "../chunk-G6UO6JVM.js";
6
- import "../chunk-CVSCZ3CK.js";
7
- import "../chunk-CA25GD5Q.js";
5
+ } from "../chunk-C465B7WK.js";
6
+ import "../chunk-76GTKO4Q.js";
7
+ import "../chunk-MQ6RKXXW.js";
8
8
  import "../chunk-GCBDIQDX.js";
9
9
  export {
10
10
  formatAgentGuiConversationPlainTitle,
@@ -1,6 +1,6 @@
1
1
  import { WorkbenchHostExternalStateSource, WorkbenchHostExternalStateLookupInput } from '@tutti-os/workbench-surface';
2
2
  import { AgentGuiWorkbenchProvider, AgentGuiWorkbenchNodeState, AgentGuiWorkbenchState, AgentGuiWorkbenchWorkspaceState } from './types.js';
3
- import '../types-DSc2ta3s.js';
3
+ import '../types-BAPEle8b.js';
4
4
 
5
5
  type AgentGuiWorkbenchStateLookupRequest = Pick<WorkbenchHostExternalStateLookupInput, "instanceId" | "typeId"> & Partial<Pick<WorkbenchHostExternalStateLookupInput, "nodeId">>;
6
6
  declare function createDefaultAgentGuiWorkbenchNodeState(provider?: AgentGuiWorkbenchProvider): AgentGuiWorkbenchNodeState;
@@ -7,9 +7,9 @@ import {
7
7
  normalizeAgentGuiWorkbenchNodeState,
8
8
  normalizeAgentGuiWorkbenchState,
9
9
  projectAgentGuiWorkbenchState
10
- } from "../chunk-NZN43XT5.js";
11
- import "../chunk-22L4VWUR.js";
12
- import "../chunk-4UTWOSHP.js";
10
+ } from "../chunk-PVVM7MZZ.js";
11
+ import "../chunk-CKCUEHBW.js";
12
+ import "../chunk-3NSUJ7OF.js";
13
13
  export {
14
14
  agentGuiWorkbenchProviderFromInstanceId,
15
15
  areAgentGuiWorkbenchNodeStatesEqual,
@@ -1,6 +1,6 @@
1
- import { f as AgentGUIProviderTargetRef } from '../types-DSc2ta3s.js';
1
+ import { f as AgentGUIProviderTargetRef } from '../types-BAPEle8b.js';
2
2
 
3
- type AgentGuiWorkbenchProvider = "claude-code" | "codex" | "nexight" | "gemini" | "hermes" | "openclaw";
3
+ type AgentGuiWorkbenchProvider = "claude-code" | "codex" | "cursor" | "nexight" | "gemini" | "hermes" | "openclaw";
4
4
  declare const agentGuiWorkbenchOpenSessionActivationType = "agent-gui:open-session";
5
5
  declare const agentGuiWorkbenchPrefillPromptActivationType = "agent-gui:prefill-prompt";
6
6
  interface AgentGuiWorkbenchPrefillPromptPayload {
@@ -41,6 +41,7 @@ interface AgentGuiWorkbenchState {
41
41
  conversationRailCollapsed?: boolean | null;
42
42
  conversationRailWidthPx?: number | null;
43
43
  lastActiveAgentSessionId: string | null;
44
+ lastActiveConversationTitle?: string | null;
44
45
  }
45
46
  interface AgentGuiWorkbenchWorkspaceState {
46
47
  workspaceId: string;
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  agentGuiWorkbenchOpenSessionActivationType,
3
3
  agentGuiWorkbenchPrefillPromptActivationType
4
- } from "../chunk-IIVHPXAB.js";
4
+ } from "../chunk-2IMBPRKV.js";
5
5
  export {
6
6
  agentGuiWorkbenchOpenSessionActivationType,
7
7
  agentGuiWorkbenchPrefillPromptActivationType
@@ -4,14 +4,14 @@ import {
4
4
  resolveWorkspaceAgentActivityStatus,
5
5
  resolveWorkspaceAgentActivityTitle,
6
6
  reuseWorkspaceAgentActivityListViewModelIfUnchanged
7
- } from "./chunk-7P6CUYQT.js";
7
+ } from "./chunk-ZTZ6STJZ.js";
8
8
  import "./chunk-IBIMGLCD.js";
9
9
  import "./chunk-Y35GDLP2.js";
10
10
  import {
11
11
  workspaceAgentProviderLabel
12
12
  } from "./chunk-TYGL25EL.js";
13
- import "./chunk-RO6KQD3J.js";
14
- import "./chunk-CA25GD5Q.js";
13
+ import "./chunk-IIXCU2UU.js";
14
+ import "./chunk-MQ6RKXXW.js";
15
15
  import "./chunk-GCBDIQDX.js";
16
16
  export {
17
17
  buildWorkspaceAgentActivityListViewModel,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutti-os/agent-gui",
3
- "version": "0.0.62",
3
+ "version": "0.0.64",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
@@ -94,17 +94,17 @@
94
94
  },
95
95
  "dependencies": {
96
96
  "@monaco-editor/react": "^4.7.0",
97
- "@tutti-os/agent-activity-core": "0.0.62",
98
- "@tutti-os/ui-i18n-runtime": "0.0.62",
99
- "@tutti-os/ui-rich-text": "0.0.62",
100
- "@tutti-os/ui-react-hooks": "0.0.62",
101
- "@tutti-os/ui-system": "0.0.62",
102
- "@tutti-os/workbench-surface": "0.0.62",
103
- "@tutti-os/workspace-external-core": "0.0.62",
104
- "@tutti-os/workspace-file-manager": "0.0.62",
105
- "@tutti-os/workspace-file-reference": "0.0.62",
106
- "@tutti-os/workspace-issue-manager": "0.0.62",
107
- "@tutti-os/workspace-user-project": "0.0.62",
97
+ "@tutti-os/agent-activity-core": "0.0.64",
98
+ "@tutti-os/ui-i18n-runtime": "0.0.64",
99
+ "@tutti-os/ui-rich-text": "0.0.64",
100
+ "@tutti-os/ui-react-hooks": "0.0.64",
101
+ "@tutti-os/ui-system": "0.0.64",
102
+ "@tutti-os/workbench-surface": "0.0.64",
103
+ "@tutti-os/workspace-external-core": "0.0.64",
104
+ "@tutti-os/workspace-file-manager": "0.0.64",
105
+ "@tutti-os/workspace-file-reference": "0.0.64",
106
+ "@tutti-os/workspace-issue-manager": "0.0.64",
107
+ "@tutti-os/workspace-user-project": "0.0.64",
108
108
  "@tanstack/react-virtual": "^3.13.12",
109
109
  "@tiptap/core": "^3.11.1",
110
110
  "@tiptap/pm": "^3.23.6",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../workbench/providerCatalog.ts"],"sourcesContent":["import type { AgentGuiWorkbenchProvider } from \"./types.ts\";\n\nexport const agentGuiWorkbenchProviders = [\n \"claude-code\",\n \"codex\",\n \"nexight\",\n \"hermes\",\n \"gemini\",\n \"openclaw\"\n] as const satisfies readonly AgentGuiWorkbenchProvider[];\n\nexport const agentGuiWorkbenchDefaultDockProviders = [\n \"codex\",\n \"claude-code\"\n] as const satisfies readonly AgentGuiWorkbenchProvider[];\n\nexport const agentGuiWorkbenchDockSuppressedProviders = [\n \"hermes\",\n \"gemini\"\n] as const satisfies readonly AgentGuiWorkbenchProvider[];\n\nexport const agentGuiWorkbenchComingSoonProviders = [\n \"nexight\"\n] as const satisfies readonly AgentGuiWorkbenchProvider[];\n\nconst defaultDockProviderSet = new Set<AgentGuiWorkbenchProvider>(\n agentGuiWorkbenchDefaultDockProviders\n);\nconst dockSuppressedProviderSet = new Set<AgentGuiWorkbenchProvider>(\n agentGuiWorkbenchDockSuppressedProviders\n);\nconst comingSoonProviderSet = new Set<AgentGuiWorkbenchProvider>(\n agentGuiWorkbenchComingSoonProviders\n);\n\n// i18n-check-ignore: provider brand names.\nexport const agentGuiWorkbenchProviderLabels: Record<\n AgentGuiWorkbenchProvider,\n string\n> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n gemini: \"Gemini CLI\",\n hermes: \"Hermes Agent\",\n nexight: \"Nexight\",\n openclaw: \"OpenClaw\"\n};\n\nexport function resolveAgentGuiWorkbenchProviderLabel(\n provider: AgentGuiWorkbenchProvider\n): string {\n return agentGuiWorkbenchProviderLabels[provider];\n}\n\nexport function isAgentGuiWorkbenchDefaultDockProvider(\n provider: AgentGuiWorkbenchProvider\n): boolean {\n return defaultDockProviderSet.has(provider);\n}\n\nexport function isAgentGuiWorkbenchDockSuppressedProvider(\n provider: AgentGuiWorkbenchProvider\n): boolean {\n return dockSuppressedProviderSet.has(provider);\n}\n\nexport function isAgentGuiWorkbenchComingSoonProvider(\n provider: AgentGuiWorkbenchProvider\n): boolean {\n return comingSoonProviderSet.has(provider);\n}\n\nexport function isAgentGuiWorkbenchProvider(\n value: unknown\n): value is AgentGuiWorkbenchProvider {\n return (\n typeof value === \"string\" &&\n agentGuiWorkbenchProviders.includes(value as AgentGuiWorkbenchProvider)\n );\n}\n\nexport function normalizeAgentGuiWorkbenchProvider(\n value: unknown,\n fallbackProvider: AgentGuiWorkbenchProvider = \"codex\"\n): AgentGuiWorkbenchProvider {\n return isAgentGuiWorkbenchProvider(value) ? value : fallbackProvider;\n}\n"],"mappings":";AAEO,IAAM,6BAA6B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,wCAAwC;AAAA,EACnD;AAAA,EACA;AACF;AAEO,IAAM,2CAA2C;AAAA,EACtD;AAAA,EACA;AACF;AAEO,IAAM,uCAAuC;AAAA,EAClD;AACF;AAEA,IAAM,yBAAyB,IAAI;AAAA,EACjC;AACF;AACA,IAAM,4BAA4B,IAAI;AAAA,EACpC;AACF;AACA,IAAM,wBAAwB,IAAI;AAAA,EAChC;AACF;AAGO,IAAM,kCAGT;AAAA,EACF,eAAe;AAAA,EACf,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AACZ;AAEO,SAAS,sCACd,UACQ;AACR,SAAO,gCAAgC,QAAQ;AACjD;AAEO,SAAS,uCACd,UACS;AACT,SAAO,uBAAuB,IAAI,QAAQ;AAC5C;AAEO,SAAS,0CACd,UACS;AACT,SAAO,0BAA0B,IAAI,QAAQ;AAC/C;AAEO,SAAS,sCACd,UACS;AACT,SAAO,sBAAsB,IAAI,QAAQ;AAC3C;AAEO,SAAS,4BACd,OACoC;AACpC,SACE,OAAO,UAAU,YACjB,2BAA2B,SAAS,KAAkC;AAE1E;AAEO,SAAS,mCACd,OACA,mBAA8C,SACnB;AAC3B,SAAO,4BAA4B,KAAK,IAAI,QAAQ;AACtD;","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../providerTargets.ts"],"sourcesContent":["import type {\n AgentGUIProvider,\n AgentGUIProviderTarget,\n AgentGUIProviderTargetRef\n} from \"./types.ts\";\n\nconst agentGUIProviderTargetStaticLabels: Record<AgentGUIProvider, string> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n gemini: \"Gemini\",\n hermes: \"Hermes\",\n nexight: \"Tutti Agent\",\n openclaw: \"OpenClaw\"\n};\n\nexport const agentGUIDefaultTargetProviders = [\n \"codex\",\n \"claude-code\",\n \"nexight\",\n \"hermes\",\n \"openclaw\"\n] as const satisfies readonly AgentGUIProvider[];\n\nconst agentGUIDisabledPlaceholderProviders = [\n \"nexight\",\n \"hermes\",\n \"openclaw\"\n] as const satisfies readonly AgentGUIProvider[];\n\nexport function createLocalAgentGUIProviderTarget(\n provider: AgentGUIProvider\n): AgentGUIProviderTarget {\n const targetId = localAgentGUIProviderTargetId(provider);\n const agentTargetId = localAgentGUIAgentTargetId(provider);\n return {\n targetId,\n ...(agentTargetId ? { agentTargetId } : {}),\n provider,\n ref: {\n kind: \"local\",\n provider\n },\n label: agentGUIProviderTargetStaticLabels[provider] ?? provider\n };\n}\n\nexport function createDisabledPlaceholderAgentGUIProviderTarget(\n provider: AgentGUIProvider\n): AgentGUIProviderTarget {\n return {\n ...createLocalAgentGUIProviderTarget(provider),\n disabled: true\n };\n}\n\nexport function createLocalAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders\n): AgentGUIProviderTarget[] {\n return providers.map((provider) =>\n createLocalAgentGUIProviderTarget(provider)\n );\n}\n\nfunction createStaticAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders,\n options?: { includeDisabledPlaceholders?: boolean }\n): AgentGUIProviderTarget[] {\n const disabledProviders = new Set<AgentGUIProvider>(\n options?.includeDisabledPlaceholders === true\n ? agentGUIDisabledPlaceholderProviders\n : []\n );\n return providers.map((provider) =>\n disabledProviders.has(provider)\n ? createDisabledPlaceholderAgentGUIProviderTarget(provider)\n : createLocalAgentGUIProviderTarget(provider)\n );\n}\n\nexport function localAgentGUIProviderTargetId(\n provider: AgentGUIProvider\n): string {\n return `local:${provider}`;\n}\n\nexport function localAgentGUIAgentTargetId(\n provider: AgentGUIProvider\n): string | null {\n switch (provider) {\n case \"codex\":\n return \"local:codex\";\n case \"claude-code\":\n return \"local:claude-code\";\n case \"hermes\":\n return \"local:hermes\";\n case \"nexight\":\n return \"local:nexight\";\n case \"openclaw\":\n return \"local:openclaw\";\n default:\n return null;\n }\n}\n\nexport function normalizeAgentGUIProviderTargets(\n targets: readonly AgentGUIProviderTarget[] | null | undefined,\n options?: {\n includeDisabledPlaceholders?: boolean;\n useStaticCatalog?: boolean;\n }\n): AgentGUIProviderTarget[] {\n const includeDisabledPlaceholders =\n options?.includeDisabledPlaceholders === true;\n const useStaticCatalog = options?.useStaticCatalog !== false;\n const source = targets && targets.length > 0 ? targets : [];\n const normalizedTargets: AgentGUIProviderTarget[] = [];\n const seenTargetKeys = new Set<string>();\n const seenProviders = new Set<AgentGUIProvider>();\n for (const target of source) {\n const normalized = normalizeAgentGUIProviderTarget(target);\n if (!normalized) {\n continue;\n }\n const dedupeKey = `${normalized.provider}\\u0000${normalized.targetId}`;\n if (seenTargetKeys.has(dedupeKey)) {\n continue;\n }\n seenTargetKeys.add(dedupeKey);\n seenProviders.add(normalized.provider);\n normalizedTargets.push(normalized);\n }\n if (includeDisabledPlaceholders && normalizedTargets.length > 0) {\n for (const provider of agentGUIDisabledPlaceholderProviders) {\n if (seenProviders.has(provider)) {\n continue;\n }\n normalizedTargets.push(\n createDisabledPlaceholderAgentGUIProviderTarget(provider)\n );\n }\n }\n return normalizedTargets.length > 0 || !useStaticCatalog\n ? normalizedTargets\n : createStaticAgentGUIProviderTargets(undefined, {\n includeDisabledPlaceholders\n });\n}\n\nexport function resolveAgentGUIProviderTarget(input: {\n agentTargetId?: string | null;\n defaultProviderTargetId?: string | null;\n provider: AgentGUIProvider;\n providerTargetId?: string | null;\n providerTargets: readonly AgentGUIProviderTarget[];\n useStaticCatalog?: boolean;\n}): AgentGUIProviderTarget | null {\n const targetByAgentTargetId = new Map(\n input.providerTargets.flatMap((target) =>\n target.agentTargetId ? [[target.agentTargetId, target] as const] : []\n )\n );\n const agentTarget = targetByAgentTargetId.get(\n input.agentTargetId?.trim() ?? \"\"\n );\n if (agentTarget) {\n return agentTarget;\n }\n const providerTargets = input.providerTargets.filter(\n (target) => target.provider === input.provider\n );\n const targetById = new Map(\n providerTargets.map((target) => [target.targetId, target])\n );\n return (\n targetById.get(input.providerTargetId?.trim() ?? \"\") ??\n targetById.get(input.defaultProviderTargetId?.trim() ?? \"\") ??\n targetById.get(localAgentGUIProviderTargetId(input.provider)) ??\n providerTargets.find((target) => target.disabled !== true) ??\n providerTargets[0] ??\n (input.useStaticCatalog === false\n ? null\n : createLocalAgentGUIProviderTarget(input.provider))\n );\n}\n\nexport function agentGUIProviderTargetRefsEqual(\n left: AgentGUIProviderTargetRef | null | undefined,\n right: AgentGUIProviderTargetRef | null | undefined\n): boolean {\n if (left === right) {\n return true;\n }\n if (!left && !right) {\n return true;\n }\n if (!left || !right) {\n return false;\n }\n return stableProviderTargetRefKey(left) === stableProviderTargetRefKey(right);\n}\n\nfunction normalizeAgentGUIProviderTarget(\n target: AgentGUIProviderTarget\n): AgentGUIProviderTarget | null {\n const targetId = target.targetId.trim();\n const agentTargetId = target.agentTargetId?.trim();\n const label = target.label.trim();\n const kind =\n typeof target.ref.kind === \"string\" ? target.ref.kind.trim() : \"\";\n if (!targetId || !label || !kind || target.ref.provider !== target.provider) {\n return null;\n }\n return {\n ...target,\n targetId,\n ...(agentTargetId ? { agentTargetId } : {}),\n provider: target.provider,\n ref: {\n ...target.ref,\n kind,\n provider: target.provider\n },\n label,\n ...(target.description?.trim()\n ? { description: target.description.trim() }\n : {}),\n ...(target.ownerLabel?.trim()\n ? { ownerLabel: target.ownerLabel.trim() }\n : {}),\n ...(target.unavailableReason?.trim()\n ? { unavailableReason: target.unavailableReason.trim() }\n : {})\n };\n}\n\nfunction stableProviderTargetRefKey(ref: AgentGUIProviderTargetRef): string {\n return JSON.stringify(sortProviderTargetRefValue(ref));\n}\n\nfunction sortProviderTargetRefValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(sortProviderTargetRefValue);\n }\n if (!value || typeof value !== \"object\") {\n return value;\n }\n return Object.fromEntries(\n Object.entries(value)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entryValue]) => [key, sortProviderTargetRefValue(entryValue)])\n );\n}\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../agent-gui/agentGuiNode/model/agentGuiRailLayout.ts","../dockIcons.ts"],"sourcesContent":["function clamp(value: number, min: number, max: number): number {\n return Math.min(max, Math.max(min, value));\n}\n\n// Keep aligned with the issue manager task-list rail dimensions.\nexport const AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX = 280;\nexport const AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX = 248;\nexport const AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX = 520;\nexport const AGENT_GUI_DETAIL_MIN_WIDTH_PX = 220;\nexport const AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX = 10;\nexport const AGENT_GUI_COLLAPSED_MIN_WIDTH_PX = 460;\nexport const AGENT_GUI_EXPANDED_MIN_WIDTH_PX =\n AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX;\nexport const AGENT_GUI_AUTO_COLLAPSE_WIDTH_PX = 610;\nexport const AGENT_GUI_EXPANDED_TARGET_WIDTH_PX = 800;\n\nexport interface AgentGUIExpandedWindowFrameInput {\n position: { x: number; y: number };\n width: number;\n height: number;\n desktopSize: { width: number; height: number };\n conversationRailWidthPx: number | null | undefined;\n}\n\nexport function shouldAutoCollapseAgentGUIConversationRail(\n containerWidthPx: number\n): boolean {\n return (\n Number.isFinite(containerWidthPx) &&\n containerWidthPx > 0 &&\n containerWidthPx <= AGENT_GUI_AUTO_COLLAPSE_WIDTH_PX\n );\n}\n\nexport function resolveAgentGUIConversationRailMaxWidthPx(\n containerWidthPx: number\n): number {\n const safeContainerWidth =\n Number.isFinite(containerWidthPx) && containerWidthPx > 0\n ? containerWidthPx\n : AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX;\n\n return Math.max(\n AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,\n Math.min(\n AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX,\n safeContainerWidth -\n AGENT_GUI_DETAIL_MIN_WIDTH_PX -\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX\n )\n );\n}\n\nexport function clampAgentGUIConversationRailWidthPx(\n widthPx: number | null | undefined,\n containerWidthPx: number\n): number {\n const preferredWidthPx =\n typeof widthPx === \"number\" && Number.isFinite(widthPx)\n ? Math.round(widthPx)\n : null;\n\n return clamp(\n preferredWidthPx ?? AGENT_GUI_CONVERSATION_RAIL_DEFAULT_WIDTH_PX,\n AGENT_GUI_CONVERSATION_RAIL_MIN_WIDTH_PX,\n resolveAgentGUIConversationRailMaxWidthPx(containerWidthPx)\n );\n}\n\nexport function resolveNextAgentGUIConversationRailWidthPx(input: {\n currentWidthPx: number | null | undefined;\n requestedWidthPx: number;\n containerWidthPx: number;\n}): number | null {\n const nextWidthPx = clampAgentGUIConversationRailWidthPx(\n input.requestedWidthPx,\n input.containerWidthPx\n );\n if (input.currentWidthPx === nextWidthPx) {\n return input.currentWidthPx;\n }\n\n if (input.currentWidthPx === null || input.currentWidthPx === undefined) {\n const defaultWidthPx = clampAgentGUIConversationRailWidthPx(\n null,\n input.containerWidthPx\n );\n if (nextWidthPx === defaultWidthPx) {\n return null;\n }\n }\n\n return nextWidthPx;\n}\n\nexport function resolveAgentGUIExpandedWindowFrame(\n input: AgentGUIExpandedWindowFrameInput\n): {\n position: { x: number; y: number };\n size: { width: number; height: number };\n} {\n const desiredRailWidthPx = clampAgentGUIConversationRailWidthPx(\n input.conversationRailWidthPx,\n AGENT_GUI_CONVERSATION_RAIL_MAX_WIDTH_PX +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX\n );\n const desiredWidthPx = Math.max(\n Math.round(input.width),\n desiredRailWidthPx +\n AGENT_GUI_DETAIL_MIN_WIDTH_PX +\n AGENT_GUI_RAIL_RESIZE_HANDLE_WIDTH_PX,\n AGENT_GUI_EXPANDED_MIN_WIDTH_PX,\n AGENT_GUI_EXPANDED_TARGET_WIDTH_PX\n );\n const desktopWidthPx =\n Number.isFinite(input.desktopSize.width) && input.desktopSize.width > 0\n ? Math.round(input.desktopSize.width)\n : desiredWidthPx;\n const nextWidthPx = Math.min(desiredWidthPx, desktopWidthPx);\n const maxX = Math.max(0, desktopWidthPx - nextWidthPx);\n const nextX = clamp(Math.round(input.position.x), 0, maxX);\n\n return {\n position: {\n x: nextX,\n y: input.position.y\n },\n size: {\n width: nextWidthPx,\n height: input.height\n }\n };\n}\n","import {\n codexRoundedUrl,\n geminiRoundedUrl,\n hermesRoundedUrl,\n manageAgentClaudeCodeUrl,\n manageAgentTuttiUrl,\n openclawRoundedUrl\n} from \"./managedAgentIconAssets.ts\";\n\nexport const agentGuiDockIconUrl = codexRoundedUrl;\n\nexport const agentGuiDockIconUrls = {\n \"claude-code\": manageAgentClaudeCodeUrl,\n codex: codexRoundedUrl,\n gemini: geminiRoundedUrl,\n hermes: hermesRoundedUrl,\n nexight: manageAgentTuttiUrl,\n openclaw: openclawRoundedUrl\n} as const;\n"],"mappings":";;;;;;;;;;AAAA,SAAS,MAAM,OAAe,KAAa,KAAqB;AAC9D,SAAO,KAAK,IAAI,KAAK,KAAK,IAAI,KAAK,KAAK,CAAC;AAC3C;AAGO,IAAM,+CAA+C;AACrD,IAAM,2CAA2C;AACjD,IAAM,2CAA2C;AACjD,IAAM,gCAAgC;AACtC,IAAM,wCAAwC;AAC9C,IAAM,mCAAmC;AACzC,IAAM,kCACX,2CACA,gCACA;AACK,IAAM,mCAAmC;AACzC,IAAM,qCAAqC;AAU3C,SAAS,2CACd,kBACS;AACT,SACE,OAAO,SAAS,gBAAgB,KAChC,mBAAmB,KACnB,oBAAoB;AAExB;AAEO,SAAS,0CACd,kBACQ;AACR,QAAM,qBACJ,OAAO,SAAS,gBAAgB,KAAK,mBAAmB,IACpD,mBACA,+CACA,gCACA;AAEN,SAAO,KAAK;AAAA,IACV;AAAA,IACA,KAAK;AAAA,MACH;AAAA,MACA,qBACE,gCACA;AAAA,IACJ;AAAA,EACF;AACF;AAEO,SAAS,qCACd,SACA,kBACQ;AACR,QAAM,mBACJ,OAAO,YAAY,YAAY,OAAO,SAAS,OAAO,IAClD,KAAK,MAAM,OAAO,IAClB;AAEN,SAAO;AAAA,IACL,oBAAoB;AAAA,IACpB;AAAA,IACA,0CAA0C,gBAAgB;AAAA,EAC5D;AACF;AAEO,SAAS,2CAA2C,OAIzC;AAChB,QAAM,cAAc;AAAA,IAClB,MAAM;AAAA,IACN,MAAM;AAAA,EACR;AACA,MAAI,MAAM,mBAAmB,aAAa;AACxC,WAAO,MAAM;AAAA,EACf;AAEA,MAAI,MAAM,mBAAmB,QAAQ,MAAM,mBAAmB,QAAW;AACvE,UAAM,iBAAiB;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,IACR;AACA,QAAI,gBAAgB,gBAAgB;AAClC,aAAO;AAAA,IACT;AAAA,EACF;AAEA,SAAO;AACT;AAEO,SAAS,mCACd,OAIA;AACA,QAAM,qBAAqB;AAAA,IACzB,MAAM;AAAA,IACN,2CACE,gCACA;AAAA,EACJ;AACA,QAAM,iBAAiB,KAAK;AAAA,IAC1B,KAAK,MAAM,MAAM,KAAK;AAAA,IACtB,qBACE,gCACA;AAAA,IACF;AAAA,IACA;AAAA,EACF;AACA,QAAM,iBACJ,OAAO,SAAS,MAAM,YAAY,KAAK,KAAK,MAAM,YAAY,QAAQ,IAClE,KAAK,MAAM,MAAM,YAAY,KAAK,IAClC;AACN,QAAM,cAAc,KAAK,IAAI,gBAAgB,cAAc;AAC3D,QAAM,OAAO,KAAK,IAAI,GAAG,iBAAiB,WAAW;AACrD,QAAM,QAAQ,MAAM,KAAK,MAAM,MAAM,SAAS,CAAC,GAAG,GAAG,IAAI;AAEzD,SAAO;AAAA,IACL,UAAU;AAAA,MACR,GAAG;AAAA,MACH,GAAG,MAAM,SAAS;AAAA,IACpB;AAAA,IACA,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,QAAQ,MAAM;AAAA,IAChB;AAAA,EACF;AACF;;;AChIO,IAAM,sBAAsB;AAE5B,IAAM,uBAAuB;AAAA,EAClC,eAAe;AAAA,EACf,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AACZ;","names":[]}