@tutti-os/agent-gui 0.0.58 → 0.0.60

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 (102) hide show
  1. package/README.md +1 -1
  2. package/dist/@-bold-lined-BLLFKBFI.svg +10 -0
  3. package/dist/add-lined-bold-5QPUDZCU.svg +3 -0
  4. package/dist/agent-conversation/index.d.ts +5 -5
  5. package/dist/agent-conversation/index.js +7 -7
  6. package/dist/agent-message-center/index.d.ts +2 -2
  7. package/dist/agent-message-center/index.js +17 -11
  8. package/dist/agent-message-center/index.js.map +1 -1
  9. package/dist/{agentConversationVM-Qbz9GBwR.d.ts → agentConversationVM-DPAgUJlR.d.ts} +1 -1
  10. package/dist/{agentGuiNodeTypes-BRU6P22B.d.ts → agentGuiNodeTypes-CC52zXAV.d.ts} +9 -6
  11. package/dist/app/renderer/agentactivity.css +533 -56
  12. package/dist/app/renderer/assets/icons/@-bold-lined.svg +10 -0
  13. package/dist/app/renderer/assets/icons/@-lined.svg +10 -0
  14. package/dist/app/renderer/assets/icons/add-lined-bold.svg +3 -0
  15. package/dist/app/renderer/assets/icons/add-lined-icon.svg +3 -0
  16. package/dist/app/renderer/assets/icons/add-lined.svg +3 -0
  17. package/dist/app/renderer/assets/icons/agents/claudecode-flat-filled.svg +10 -0
  18. package/dist/app/renderer/assets/icons/agents/codex-flat-filled.svg +10 -0
  19. package/dist/app/renderer/assets/icons/agents/provider-rail-claude-code-colorful.png +0 -0
  20. package/dist/app/renderer/assets/icons/agents/provider-rail-codex-colorful.png +0 -0
  21. package/dist/app/renderer/assets/icons/agents/provider-rail-hermes-colorful.png +0 -0
  22. package/dist/app/renderer/assets/icons/agents/provider-rail-tutti.png +0 -0
  23. package/dist/app/renderer/assets/icons/handoff-lined.png +0 -0
  24. package/dist/app/renderer/assets/icons/handoff-lined.svg +11 -0
  25. package/dist/{chunk-5SRRKWE4.js → chunk-24CUBQKJ.js} +2 -2
  26. package/dist/{chunk-NX6T3DDS.js → chunk-2LGUBUEJ.js} +3 -3
  27. package/dist/{chunk-UCCUIUGK.js → chunk-4OPTXOOZ.js} +2 -2
  28. package/dist/{chunk-Q75AK47T.js → chunk-5WB3NGIN.js} +2 -2
  29. package/dist/{chunk-2WUDORCV.js → chunk-6TEPDMX6.js} +2 -2
  30. package/dist/{chunk-IS6JUDDY.js → chunk-6VVBG4BF.js} +44 -20
  31. package/dist/chunk-6VVBG4BF.js.map +1 -0
  32. package/dist/{chunk-OLI2A3EM.js → chunk-74TIEA6X.js} +2 -2
  33. package/dist/{chunk-N756UO52.js → chunk-AWIZJQXW.js} +68 -65
  34. package/dist/chunk-AWIZJQXW.js.map +1 -0
  35. package/dist/{chunk-SLT5Q37C.js → chunk-B6YDXIZW.js} +5 -3
  36. package/dist/{chunk-SLT5Q37C.js.map → chunk-B6YDXIZW.js.map} +1 -1
  37. package/dist/{chunk-7GM7UQXD.js → chunk-BB2SVMEV.js} +46 -8
  38. package/dist/chunk-BB2SVMEV.js.map +1 -0
  39. package/dist/{chunk-BT5WEZO5.js → chunk-CUMZV32B.js} +5 -5
  40. package/dist/chunk-CUMZV32B.js.map +1 -0
  41. package/dist/{chunk-OFMORNBO.js → chunk-CZSMZRAV.js} +23 -6
  42. package/dist/chunk-CZSMZRAV.js.map +1 -0
  43. package/dist/{chunk-HVU46DDA.js → chunk-FRCIPTUD.js} +13 -2
  44. package/dist/chunk-FRCIPTUD.js.map +1 -0
  45. package/dist/{chunk-CEMXB7LA.js → chunk-I5ZIKJVN.js} +2 -2
  46. package/dist/{chunk-4PSDYKZQ.js → chunk-K3UBSTJ5.js} +12 -9
  47. package/dist/chunk-K3UBSTJ5.js.map +1 -0
  48. package/dist/{chunk-Z2BTIAOC.js → chunk-MPZ3CW5C.js} +1 -1
  49. package/dist/chunk-MPZ3CW5C.js.map +1 -0
  50. package/dist/{chunk-MTFSQWZ6.js → chunk-V4JGVBUN.js} +22 -2
  51. package/dist/chunk-V4JGVBUN.js.map +1 -0
  52. package/dist/{chunk-OQJSZSYB.js → chunk-WNVIKTJK.js} +2 -2
  53. package/dist/{chunk-BEFNWUOZ.js → chunk-YZ3POK7G.js} +374 -316
  54. package/dist/chunk-YZ3POK7G.js.map +1 -0
  55. package/dist/claudecode-flat-filled-NHO4JCVK.svg +10 -0
  56. package/dist/codex-flat-filled-WYHCF5VR.svg +10 -0
  57. package/dist/context-mention-palette/index.js +8 -8
  58. package/dist/handoff-lined-4WQUBVG3.svg +11 -0
  59. package/dist/i18n/index.d.ts +43 -19
  60. package/dist/i18n/index.js +2 -2
  61. package/dist/index.d.ts +42 -18
  62. package/dist/index.js +1512 -494
  63. package/dist/index.js.map +1 -1
  64. package/dist/plan-decision-ops.d.ts +2 -2
  65. package/dist/queued-prompt-runtime.d.ts +4 -4
  66. package/dist/{types-BsHvTjIZ.d.ts → types-DSc2ta3s.d.ts} +1 -1
  67. package/dist/workbench/contribution.d.ts +4 -8
  68. package/dist/workbench/contribution.js +9 -7
  69. package/dist/workbench/index.d.ts +4 -4
  70. package/dist/workbench/index.js +10 -12
  71. package/dist/workbench/launch.d.ts +6 -7
  72. package/dist/workbench/launch.js +2 -4
  73. package/dist/workbench/providerCatalog.d.ts +1 -1
  74. package/dist/workbench/sessionTitle.d.ts +1 -1
  75. package/dist/workbench/sessionTitle.js +3 -3
  76. package/dist/workbench/state.d.ts +1 -1
  77. package/dist/workbench/state.js +2 -2
  78. package/dist/workbench/types.d.ts +3 -1
  79. package/dist/workbench/types.js +1 -1
  80. package/dist/workspace-agent-generated-files.d.ts +1 -1
  81. package/dist/workspace-agent-generated-files.js +3 -3
  82. package/dist/{workspaceAgentActivityListViewModel-B5viw5Da.d.ts → workspaceAgentActivityListViewModel-DJvAqZso.d.ts} +1 -0
  83. package/package.json +12 -12
  84. package/dist/@-lined-14px-64O2KKB4.svg +0 -3
  85. package/dist/chunk-4PSDYKZQ.js.map +0 -1
  86. package/dist/chunk-7GM7UQXD.js.map +0 -1
  87. package/dist/chunk-BEFNWUOZ.js.map +0 -1
  88. package/dist/chunk-BT5WEZO5.js.map +0 -1
  89. package/dist/chunk-HVU46DDA.js.map +0 -1
  90. package/dist/chunk-IS6JUDDY.js.map +0 -1
  91. package/dist/chunk-MTFSQWZ6.js.map +0 -1
  92. package/dist/chunk-N756UO52.js.map +0 -1
  93. package/dist/chunk-OFMORNBO.js.map +0 -1
  94. package/dist/chunk-Z2BTIAOC.js.map +0 -1
  95. /package/dist/{chunk-5SRRKWE4.js.map → chunk-24CUBQKJ.js.map} +0 -0
  96. /package/dist/{chunk-NX6T3DDS.js.map → chunk-2LGUBUEJ.js.map} +0 -0
  97. /package/dist/{chunk-UCCUIUGK.js.map → chunk-4OPTXOOZ.js.map} +0 -0
  98. /package/dist/{chunk-Q75AK47T.js.map → chunk-5WB3NGIN.js.map} +0 -0
  99. /package/dist/{chunk-2WUDORCV.js.map → chunk-6TEPDMX6.js.map} +0 -0
  100. /package/dist/{chunk-OLI2A3EM.js.map → chunk-74TIEA6X.js.map} +0 -0
  101. /package/dist/{chunk-CEMXB7LA.js.map → chunk-I5ZIKJVN.js.map} +0 -0
  102. /package/dist/{chunk-OQJSZSYB.js.map → chunk-WNVIKTJK.js.map} +0 -0
@@ -1,5 +1,5 @@
1
- import { b as AgentConversationPromptVM } from './agentConversationVM-Qbz9GBwR.js';
2
- import './workspaceAgentActivityListViewModel-B5viw5Da.js';
1
+ import { b as AgentConversationPromptVM } from './agentConversationVM-DPAgUJlR.js';
2
+ import './workspaceAgentActivityListViewModel-DJvAqZso.js';
3
3
  import '@tutti-os/agent-activity-core';
4
4
 
5
5
  /**
@@ -1,8 +1,8 @@
1
- import { e as AgentGUIQueuedPromptVM } from './agentGuiNodeTypes-BRU6P22B.js';
1
+ import { d as AgentGUIQueuedPromptVM } from './agentGuiNodeTypes-CC52zXAV.js';
2
2
  import '@tutti-os/agent-activity-core';
3
- import './types-BsHvTjIZ.js';
4
- import './workspaceAgentActivityListViewModel-B5viw5Da.js';
5
- import './agentConversationVM-Qbz9GBwR.js';
3
+ import './types-DSc2ta3s.js';
4
+ import './workspaceAgentActivityListViewModel-DJvAqZso.js';
5
+ import './agentConversationVM-DPAgUJlR.js';
6
6
  import '@tutti-os/workspace-user-project/contracts';
7
7
 
8
8
  interface AgentQueuedPromptRetryBlock {
@@ -165,7 +165,7 @@ interface AgentGUIProviderTarget {
165
165
  disabled?: boolean;
166
166
  unavailableReason?: string;
167
167
  }
168
- type AgentGUIProviderReadinessGateStatus = "checking" | "not_installed" | "auth_required" | "unavailable";
168
+ type AgentGUIProviderReadinessGateStatus = "checking" | "coming_soon" | "not_installed" | "auth_required" | "unavailable";
169
169
  type AgentGUIProviderReadinessGateAction = "install" | "login" | "refresh";
170
170
  interface AgentGUIProviderReadinessGate {
171
171
  status: AgentGUIProviderReadinessGateStatus;
@@ -1,8 +1,7 @@
1
1
  import { ReactNode } from 'react';
2
- import { WorkbenchFrame, WorkbenchHostNodeBodyContext, WorkbenchHostDockEntry, WorkbenchHostLaunchRequest, WorkbenchContribution } from '@tutti-os/workbench-surface';
3
- import { AgentGuiWorkbenchDockLayout } from './launch.js';
2
+ import { WorkbenchFrame, WorkbenchHostNodeBodyContext, WorkbenchHostLaunchRequest, WorkbenchHostDockEntry, WorkbenchContribution } from '@tutti-os/workbench-surface';
4
3
  import { AgentGuiWorkbenchProvider, AgentGuiWorkbenchState } from './types.js';
5
- import { e as AgentGUIProviderTarget, f as AgentGUIProviderTargetRef } from '../types-BsHvTjIZ.js';
4
+ import { e as AgentGUIProviderTarget, f as AgentGUIProviderTargetRef } from '../types-DSc2ta3s.js';
6
5
 
7
6
  declare const agentGuiWorkbenchDefaultNodeFrame: WorkbenchFrame;
8
7
  declare const agentGuiWorkbenchDefaultUsableHeightRatio = 0.7;
@@ -11,6 +10,7 @@ declare const agentGuiWorkbenchNewWindowCascadeOffset: {
11
10
  x: number;
12
11
  y: number;
13
12
  };
13
+ declare const agentGuiWorkbenchProviderRailWidthPx = 52;
14
14
  declare const AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT = "tutti:agent-gui-workbench-conversation-rail-toggle";
15
15
  declare const AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT = "tutti:agent-gui-workbench-new-conversation";
16
16
  interface AgentGuiWorkbenchConversationRailToggleDetail {
@@ -42,7 +42,6 @@ interface CreateAgentGuiWorkbenchContributionInput {
42
42
  copy?: AgentGuiWorkbenchContributionCopyOverrides;
43
43
  defaultProvider?: AgentGuiWorkbenchProvider | null;
44
44
  defaultProviderTargetId?: string | null;
45
- dockLayout?: AgentGuiWorkbenchDockLayout;
46
45
  dockIconUrls?: Partial<Record<AgentGuiWorkbenchProvider, string>>;
47
46
  dockSectionId?: string;
48
47
  frame?: WorkbenchFrame;
@@ -54,7 +53,6 @@ interface CreateAgentGuiWorkbenchContributionInput {
54
53
  renderPreview?(context: WorkbenchHostNodeBodyContext<AgentGuiWorkbenchState | null, unknown>, helpers: AgentGuiWorkbenchRenderBodyHelpers): ReactNode;
55
54
  renderMinimizedPreview(context: WorkbenchHostNodeBodyContext<AgentGuiWorkbenchState | null, unknown>, helpers: AgentGuiWorkbenchRenderBodyHelpers): ReactNode;
56
55
  resolveDockPopupTitle?: (state: AgentGuiWorkbenchState | null) => string | null;
57
- resolveDockEntryVisibility?: (provider: AgentGuiWorkbenchProvider) => WorkbenchHostDockEntry["visibility"];
58
56
  resolveDockLaunchPayload?: (input: {
59
57
  dockEntryId?: string | null;
60
58
  payload: unknown;
@@ -73,11 +71,9 @@ interface BuildAgentGuiDockEntriesInput {
73
71
  defaultProviderTargetId?: string | null;
74
72
  dockIconUrls?: Partial<Record<AgentGuiWorkbenchProvider, string>>;
75
73
  label?: string;
76
- layout: AgentGuiWorkbenchDockLayout;
77
74
  providerAvailability?: AgentGuiWorkbenchProviderAvailability;
78
75
  providerTargetsLoading?: boolean;
79
76
  renderPreview?: CreateAgentGuiWorkbenchContributionInput["renderPreview"];
80
- resolveDockEntryVisibility?: CreateAgentGuiWorkbenchContributionInput["resolveDockEntryVisibility"];
81
77
  resolveDockPopupTitle?: CreateAgentGuiWorkbenchContributionInput["resolveDockPopupTitle"];
82
78
  sectionId?: string;
83
79
  targets?: readonly AgentGUIProviderTarget[] | null;
@@ -96,4 +92,4 @@ declare function resolveAgentGuiWorkbenchDefaultLaunchFrame(input: {
96
92
  }): WorkbenchFrame;
97
93
  declare function resolveAgentGuiWorkbenchContributionCopy(copy?: AgentGuiWorkbenchContributionCopyOverrides): AgentGuiWorkbenchContributionCopy;
98
94
 
99
- 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, buildAgentGuiDockEntries, createAgentGuiWorkbenchContribution, resolveAgentGuiUnifiedDockLaunchPayload, resolveAgentGuiWorkbenchContributionCopy, resolveAgentGuiWorkbenchDefaultLaunchFrame };
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 };
@@ -6,19 +6,20 @@ import {
6
6
  agentGuiWorkbenchDefaultNodeFrame,
7
7
  agentGuiWorkbenchDefaultUsableHeightRatio,
8
8
  agentGuiWorkbenchNewWindowCascadeOffset,
9
+ agentGuiWorkbenchProviderRailWidthPx,
9
10
  buildAgentGuiDockEntries,
10
11
  createAgentGuiWorkbenchContribution,
11
12
  resolveAgentGuiUnifiedDockLaunchPayload,
12
13
  resolveAgentGuiWorkbenchContributionCopy,
13
14
  resolveAgentGuiWorkbenchDefaultLaunchFrame
14
- } from "../chunk-N756UO52.js";
15
- import "../chunk-OQJSZSYB.js";
16
- import "../chunk-4PSDYKZQ.js";
17
- import "../chunk-Z2BTIAOC.js";
15
+ } from "../chunk-AWIZJQXW.js";
16
+ import "../chunk-WNVIKTJK.js";
17
+ import "../chunk-K3UBSTJ5.js";
18
+ import "../chunk-MPZ3CW5C.js";
18
19
  import "../chunk-22L4VWUR.js";
19
- import "../chunk-Q75AK47T.js";
20
- import "../chunk-7GM7UQXD.js";
21
- import "../chunk-MTFSQWZ6.js";
20
+ import "../chunk-5WB3NGIN.js";
21
+ import "../chunk-BB2SVMEV.js";
22
+ import "../chunk-V4JGVBUN.js";
22
23
  export {
23
24
  AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT,
24
25
  AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT,
@@ -27,6 +28,7 @@ export {
27
28
  agentGuiWorkbenchDefaultNodeFrame,
28
29
  agentGuiWorkbenchDefaultUsableHeightRatio,
29
30
  agentGuiWorkbenchNewWindowCascadeOffset,
31
+ agentGuiWorkbenchProviderRailWidthPx,
30
32
  buildAgentGuiDockEntries,
31
33
  createAgentGuiWorkbenchContribution,
32
34
  resolveAgentGuiUnifiedDockLaunchPayload,
@@ -1,12 +1,12 @@
1
1
  export { AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT, AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT, AgentGuiWorkbenchContributionCopy, AgentGuiWorkbenchContributionCopyOverrides, AgentGuiWorkbenchConversationRailToggleDetail, AgentGuiWorkbenchNewConversationDetail, AgentGuiWorkbenchProviderAvailability, AgentGuiWorkbenchRenderBodyHelpers, BuildAgentGuiDockEntriesInput, CreateAgentGuiWorkbenchContributionInput, agentGuiWorkbenchDefaultCopy, agentGuiWorkbenchDefaultNodeFrame, buildAgentGuiDockEntries, createAgentGuiWorkbenchContribution, resolveAgentGuiUnifiedDockLaunchPayload, resolveAgentGuiWorkbenchContributionCopy } from './contribution.js';
2
2
  export { agentGuiWorkbenchComingSoonProviders, agentGuiWorkbenchDefaultDockProviders, agentGuiWorkbenchDockSuppressedProviders, agentGuiWorkbenchProviderLabels, agentGuiWorkbenchProviders, isAgentGuiWorkbenchComingSoonProvider, isAgentGuiWorkbenchDefaultDockProvider, isAgentGuiWorkbenchDockSuppressedProvider, isAgentGuiWorkbenchProvider, normalizeAgentGuiWorkbenchProvider, resolveAgentGuiWorkbenchProviderLabel } from './providerCatalog.js';
3
- export { AgentGuiWorkbenchLaunchDescriptor, agentGuiWorkbenchDockEntryId, agentGuiWorkbenchDockEntryIdForLayout, agentGuiWorkbenchDockIdentityFromIdentifier, agentGuiWorkbenchInstanceId, agentGuiWorkbenchProviderFromIdentifier, agentGuiWorkbenchProviderFromLaunchRequest, agentGuiWorkbenchTypeId, agentGuiWorkbenchUnifiedDockEntryId, createAgentGuiWorkbenchDraftLaunchRequest, createAgentGuiWorkbenchInstanceId, createAgentGuiWorkbenchLaunchDescriptor, createAgentGuiWorkbenchSessionLaunchRequest } from './launch.js';
3
+ export { AgentGuiWorkbenchLaunchDescriptor, agentGuiWorkbenchDockEntryId, agentGuiWorkbenchDockIdentityFromIdentifier, agentGuiWorkbenchInstanceId, agentGuiWorkbenchProviderFromIdentifier, agentGuiWorkbenchProviderFromLaunchRequest, agentGuiWorkbenchTypeId, agentGuiWorkbenchUnifiedDockEntryId, createAgentGuiWorkbenchDraftLaunchRequest, createAgentGuiWorkbenchInstanceId, createAgentGuiWorkbenchLaunchDescriptor, createAgentGuiWorkbenchSessionLaunchRequest } from './launch.js';
4
4
  export { agentGuiWorkbenchProviderFromInstanceId, areAgentGuiWorkbenchNodeStatesEqual, areAgentGuiWorkbenchStatesEqual, createAgentGuiWorkbenchNodeStateSource, createDefaultAgentGuiWorkbenchNodeState, normalizeAgentGuiWorkbenchNodeState, normalizeAgentGuiWorkbenchState, projectAgentGuiWorkbenchState } from './state.js';
5
5
  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-BsHvTjIZ.js';
9
+ import '../types-DSc2ta3s.js';
10
10
  import '@tutti-os/agent-activity-core';
11
11
  import '../uiSettings-BQS9r2eo.js';
12
12
 
@@ -24,16 +24,16 @@ interface AgentGuiWorkbenchHeaderProps extends HTMLAttributes<HTMLElement> {
24
24
  copy: AgentGuiWorkbenchHeaderCopy;
25
25
  defaultActions?: ReactNode;
26
26
  displayMode?: WorkbenchDisplayMode;
27
- iconUrl?: string;
28
27
  isConversationRailAutoCollapsed: boolean;
29
28
  isConversationRailCollapsed: boolean;
30
29
  conversationRailWidthPx?: number | null;
30
+ providerRailWidthPx?: number | null;
31
31
  conversationTitle?: string | null;
32
32
  onCreateConversation?: () => void;
33
33
  onToggleConversationRail: (nextCollapsed: boolean) => void;
34
34
  title?: string;
35
35
  windowActions?: Pick<WorkbenchHostNodeHeaderWindowActions, "close" | "minimize" | "toggleDisplayMode">;
36
36
  }
37
- declare function AgentGuiWorkbenchHeader({ className, copy, defaultActions: _defaultActions, displayMode, iconUrl, isConversationRailAutoCollapsed, isConversationRailCollapsed, conversationRailWidthPx, conversationTitle, onCreateConversation, onToggleConversationRail, title, windowActions, ...headerProps }: AgentGuiWorkbenchHeaderProps): ReactNode;
37
+ declare function AgentGuiWorkbenchHeader({ className, copy, defaultActions: _defaultActions, displayMode, isConversationRailAutoCollapsed, isConversationRailCollapsed, conversationRailWidthPx, providerRailWidthPx, conversationTitle, onCreateConversation, onToggleConversationRail, title, windowActions, ...headerProps }: AgentGuiWorkbenchHeaderProps): ReactNode;
38
38
 
39
39
  export { AgentGuiWorkbenchHeader, type AgentGuiWorkbenchHeaderCopy, type AgentGuiWorkbenchHeaderProps };
@@ -8,7 +8,7 @@ import {
8
8
  createAgentGuiWorkbenchContribution,
9
9
  resolveAgentGuiUnifiedDockLaunchPayload,
10
10
  resolveAgentGuiWorkbenchContributionCopy
11
- } from "../chunk-N756UO52.js";
11
+ } from "../chunk-AWIZJQXW.js";
12
12
  import {
13
13
  agentGuiWorkbenchProviderFromInstanceId,
14
14
  areAgentGuiWorkbenchNodeStatesEqual,
@@ -18,10 +18,9 @@ import {
18
18
  normalizeAgentGuiWorkbenchNodeState,
19
19
  normalizeAgentGuiWorkbenchState,
20
20
  projectAgentGuiWorkbenchState
21
- } from "../chunk-OQJSZSYB.js";
21
+ } from "../chunk-WNVIKTJK.js";
22
22
  import {
23
23
  agentGuiWorkbenchDockEntryId,
24
- agentGuiWorkbenchDockEntryIdForLayout,
25
24
  agentGuiWorkbenchDockIdentityFromIdentifier,
26
25
  agentGuiWorkbenchInstanceId,
27
26
  agentGuiWorkbenchProviderFromIdentifier,
@@ -32,11 +31,11 @@ import {
32
31
  createAgentGuiWorkbenchInstanceId,
33
32
  createAgentGuiWorkbenchLaunchDescriptor,
34
33
  createAgentGuiWorkbenchSessionLaunchRequest
35
- } from "../chunk-4PSDYKZQ.js";
34
+ } from "../chunk-K3UBSTJ5.js";
36
35
  import {
37
36
  agentGuiWorkbenchOpenSessionActivationType,
38
37
  agentGuiWorkbenchPrefillPromptActivationType
39
- } from "../chunk-Z2BTIAOC.js";
38
+ } from "../chunk-MPZ3CW5C.js";
40
39
  import {
41
40
  agentGuiWorkbenchComingSoonProviders,
42
41
  agentGuiWorkbenchDefaultDockProviders,
@@ -50,16 +49,16 @@ import {
50
49
  normalizeAgentGuiWorkbenchProvider,
51
50
  resolveAgentGuiWorkbenchProviderLabel
52
51
  } from "../chunk-22L4VWUR.js";
53
- import "../chunk-Q75AK47T.js";
54
- import "../chunk-7GM7UQXD.js";
52
+ import "../chunk-5WB3NGIN.js";
53
+ import "../chunk-BB2SVMEV.js";
55
54
  import {
56
55
  formatAgentGuiConversationPlainTitle,
57
56
  formatAgentGuiSessionPlainTitle,
58
57
  resolveAgentGuiWorkbenchSessionTitle
59
- } from "../chunk-2WUDORCV.js";
60
- import "../chunk-UCCUIUGK.js";
61
- import "../chunk-MTFSQWZ6.js";
62
- import "../chunk-IS6JUDDY.js";
58
+ } from "../chunk-6TEPDMX6.js";
59
+ import "../chunk-4OPTXOOZ.js";
60
+ import "../chunk-V4JGVBUN.js";
61
+ import "../chunk-6VVBG4BF.js";
63
62
  import "../chunk-GCBDIQDX.js";
64
63
  export {
65
64
  AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT,
@@ -70,7 +69,6 @@ export {
70
69
  agentGuiWorkbenchDefaultDockProviders,
71
70
  agentGuiWorkbenchDefaultNodeFrame,
72
71
  agentGuiWorkbenchDockEntryId,
73
- agentGuiWorkbenchDockEntryIdForLayout,
74
72
  agentGuiWorkbenchDockIdentityFromIdentifier,
75
73
  agentGuiWorkbenchDockSuppressedProviders,
76
74
  agentGuiWorkbenchInstanceId,
@@ -1,12 +1,11 @@
1
1
  import { WorkbenchHostLaunchRequest } from '@tutti-os/workbench-surface';
2
2
  import { agentGuiWorkbenchOpenSessionActivationType, AgentGuiWorkbenchPrefillPromptPayload, agentGuiWorkbenchPrefillPromptActivationType, AgentGuiWorkbenchProvider } from './types.js';
3
- import '../types-BsHvTjIZ.js';
3
+ import '../types-DSc2ta3s.js';
4
4
 
5
5
  type AgentGuiWorkbenchLaunchRequestInput = Pick<WorkbenchHostLaunchRequest, "payload" | "typeId"> & {
6
6
  dockEntryId?: string | null;
7
7
  };
8
8
  declare const agentGuiWorkbenchTypeId = "agent-gui";
9
- type AgentGuiWorkbenchDockLayout = "legacySplit" | "unified";
10
9
  type AgentGuiWorkbenchDockIdentity = {
11
10
  kind: "legacyProvider";
12
11
  provider: AgentGuiWorkbenchProvider;
@@ -15,10 +14,6 @@ type AgentGuiWorkbenchDockIdentity = {
15
14
  };
16
15
  declare function agentGuiWorkbenchDockEntryId(provider: AgentGuiWorkbenchProvider): string;
17
16
  declare function agentGuiWorkbenchUnifiedDockEntryId(): string;
18
- declare function agentGuiWorkbenchDockEntryIdForLayout(input: {
19
- dockLayout: AgentGuiWorkbenchDockLayout;
20
- provider: AgentGuiWorkbenchProvider;
21
- }): string;
22
17
  declare function agentGuiWorkbenchInstanceId(provider: AgentGuiWorkbenchProvider): string;
23
18
  declare function createAgentGuiWorkbenchInstanceId(input: {
24
19
  agentSessionId?: string | null;
@@ -43,15 +38,19 @@ declare function createAgentGuiWorkbenchSessionLaunchRequest(input: {
43
38
  typeId: string;
44
39
  };
45
40
  declare function createAgentGuiWorkbenchDraftLaunchRequest(input: {
41
+ agentTargetId?: string | null;
46
42
  autoSubmit?: boolean;
47
43
  draftPrompt: string;
44
+ openInNewWindow?: boolean;
48
45
  provider: unknown;
49
46
  userProjectPath?: string | null;
50
47
  }): {
51
48
  dockEntryId: string;
52
49
  payload: {
53
50
  userProjectPath?: string | undefined;
51
+ openInNewWindow?: boolean | undefined;
54
52
  autoSubmit?: boolean | undefined;
53
+ agentTargetId?: string | undefined;
55
54
  draftPrompt: string;
56
55
  provider: AgentGuiWorkbenchProvider;
57
56
  };
@@ -86,4 +85,4 @@ declare function shouldReuseAgentGuiWorkbenchDockEntryNode(input: {
86
85
  launchKind: "empty" | "prefill" | "session";
87
86
  }): boolean;
88
87
 
89
- export { type AgentGuiWorkbenchDockIdentity, type AgentGuiWorkbenchDockLayout, type AgentGuiWorkbenchLaunchDescriptor, agentGuiWorkbenchDockEntryId, agentGuiWorkbenchDockEntryIdForLayout, agentGuiWorkbenchDockIdentityFromIdentifier, agentGuiWorkbenchInstanceId, agentGuiWorkbenchPrefillPromptActivationType, agentGuiWorkbenchProviderFromIdentifier, agentGuiWorkbenchProviderFromLaunchRequest, agentGuiWorkbenchTypeId, agentGuiWorkbenchUnifiedDockEntryId, createAgentGuiWorkbenchDraftLaunchRequest, createAgentGuiWorkbenchInstanceId, createAgentGuiWorkbenchLaunchDescriptor, createAgentGuiWorkbenchSessionLaunchRequest, resolveAgentGuiWorkbenchLaunchDockEntryId, shouldReuseAgentGuiWorkbenchDockEntryNode };
88
+ export { type AgentGuiWorkbenchDockIdentity, type AgentGuiWorkbenchLaunchDescriptor, agentGuiWorkbenchDockEntryId, agentGuiWorkbenchDockIdentityFromIdentifier, agentGuiWorkbenchInstanceId, agentGuiWorkbenchPrefillPromptActivationType, agentGuiWorkbenchProviderFromIdentifier, agentGuiWorkbenchProviderFromLaunchRequest, agentGuiWorkbenchTypeId, agentGuiWorkbenchUnifiedDockEntryId, createAgentGuiWorkbenchDraftLaunchRequest, createAgentGuiWorkbenchInstanceId, createAgentGuiWorkbenchLaunchDescriptor, createAgentGuiWorkbenchSessionLaunchRequest, resolveAgentGuiWorkbenchLaunchDockEntryId, shouldReuseAgentGuiWorkbenchDockEntryNode };
@@ -1,6 +1,5 @@
1
1
  import {
2
2
  agentGuiWorkbenchDockEntryId,
3
- agentGuiWorkbenchDockEntryIdForLayout,
4
3
  agentGuiWorkbenchDockIdentityFromIdentifier,
5
4
  agentGuiWorkbenchInstanceId,
6
5
  agentGuiWorkbenchProviderFromIdentifier,
@@ -13,14 +12,13 @@ import {
13
12
  createAgentGuiWorkbenchSessionLaunchRequest,
14
13
  resolveAgentGuiWorkbenchLaunchDockEntryId,
15
14
  shouldReuseAgentGuiWorkbenchDockEntryNode
16
- } from "../chunk-4PSDYKZQ.js";
15
+ } from "../chunk-K3UBSTJ5.js";
17
16
  import {
18
17
  agentGuiWorkbenchPrefillPromptActivationType
19
- } from "../chunk-Z2BTIAOC.js";
18
+ } from "../chunk-MPZ3CW5C.js";
20
19
  import "../chunk-22L4VWUR.js";
21
20
  export {
22
21
  agentGuiWorkbenchDockEntryId,
23
- agentGuiWorkbenchDockEntryIdForLayout,
24
22
  agentGuiWorkbenchDockIdentityFromIdentifier,
25
23
  agentGuiWorkbenchInstanceId,
26
24
  agentGuiWorkbenchPrefillPromptActivationType,
@@ -1,5 +1,5 @@
1
1
  import { AgentGuiWorkbenchProvider } from './types.js';
2
- import '../types-BsHvTjIZ.js';
2
+ import '../types-DSc2ta3s.js';
3
3
 
4
4
  declare const agentGuiWorkbenchProviders: readonly ["claude-code", "codex", "nexight", "hermes", "gemini", "openclaw"];
5
5
  declare const agentGuiWorkbenchDefaultDockProviders: readonly ["codex", "claude-code"];
@@ -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-BsHvTjIZ.js';
4
+ import '../types-DSc2ta3s.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-2WUDORCV.js";
6
- import "../chunk-UCCUIUGK.js";
7
- import "../chunk-IS6JUDDY.js";
5
+ } from "../chunk-6TEPDMX6.js";
6
+ import "../chunk-4OPTXOOZ.js";
7
+ import "../chunk-6VVBG4BF.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-BsHvTjIZ.js';
3
+ import '../types-DSc2ta3s.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-OQJSZSYB.js";
10
+ } from "../chunk-WNVIKTJK.js";
11
11
  import "../chunk-22L4VWUR.js";
12
- import "../chunk-7GM7UQXD.js";
12
+ import "../chunk-BB2SVMEV.js";
13
13
  export {
14
14
  agentGuiWorkbenchProviderFromInstanceId,
15
15
  areAgentGuiWorkbenchNodeStatesEqual,
@@ -1,11 +1,13 @@
1
- import { f as AgentGUIProviderTargetRef } from '../types-BsHvTjIZ.js';
1
+ import { f as AgentGUIProviderTargetRef } from '../types-DSc2ta3s.js';
2
2
 
3
3
  type AgentGuiWorkbenchProvider = "claude-code" | "codex" | "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 {
7
+ agentTargetId?: string | null;
7
8
  autoSubmit?: boolean;
8
9
  draftPrompt: string;
10
+ provider?: AgentGuiWorkbenchProvider;
9
11
  userProjectPath?: string | null;
10
12
  }
11
13
  interface AgentGuiWorkbenchComposerOverrides {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  agentGuiWorkbenchOpenSessionActivationType,
3
3
  agentGuiWorkbenchPrefillPromptActivationType
4
- } from "../chunk-Z2BTIAOC.js";
4
+ } from "../chunk-MPZ3CW5C.js";
5
5
  export {
6
6
  agentGuiWorkbenchOpenSessionActivationType,
7
7
  agentGuiWorkbenchPrefillPromptActivationType
@@ -1,2 +1,2 @@
1
- export { B as BuildWorkspaceAgentActivityListOptions, C as CollectWorkspaceAgentGeneratedFilesOptions, W as WorkspaceAgentActivityCard, m as WorkspaceAgentActivityListViewModel, o as WorkspaceAgentActivityStatus, r as WorkspaceAgentChangedFile, s as buildWorkspaceAgentActivityListViewModel, t as collectWorkspaceAgentGeneratedFiles, u as resolveWorkspaceAgentActivityStatus, v as resolveWorkspaceAgentActivityTitle, w as reuseWorkspaceAgentActivityListViewModelIfUnchanged, x as workspaceAgentProviderLabel } from './workspaceAgentActivityListViewModel-B5viw5Da.js';
1
+ export { B as BuildWorkspaceAgentActivityListOptions, C as CollectWorkspaceAgentGeneratedFilesOptions, W as WorkspaceAgentActivityCard, m as WorkspaceAgentActivityListViewModel, o as WorkspaceAgentActivityStatus, r as WorkspaceAgentChangedFile, s as buildWorkspaceAgentActivityListViewModel, t as collectWorkspaceAgentGeneratedFiles, u as resolveWorkspaceAgentActivityStatus, v as resolveWorkspaceAgentActivityTitle, w as reuseWorkspaceAgentActivityListViewModelIfUnchanged, x as workspaceAgentProviderLabel } from './workspaceAgentActivityListViewModel-DJvAqZso.js';
2
2
  import '@tutti-os/agent-activity-core';
@@ -4,14 +4,14 @@ import {
4
4
  resolveWorkspaceAgentActivityStatus,
5
5
  resolveWorkspaceAgentActivityTitle,
6
6
  reuseWorkspaceAgentActivityListViewModelIfUnchanged
7
- } from "./chunk-CEMXB7LA.js";
7
+ } from "./chunk-I5ZIKJVN.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-5SRRKWE4.js";
14
- import "./chunk-IS6JUDDY.js";
13
+ import "./chunk-24CUBQKJ.js";
14
+ import "./chunk-6VVBG4BF.js";
15
15
  import "./chunk-GCBDIQDX.js";
16
16
  export {
17
17
  buildWorkspaceAgentActivityListViewModel,
@@ -63,6 +63,7 @@ interface AgentHostWorkspaceAgentSession {
63
63
  id: number;
64
64
  workspaceId?: string;
65
65
  agentSessionId: string;
66
+ agentTargetId?: string | null;
66
67
  presenceId: number;
67
68
  userId?: string;
68
69
  provider?: AgentHostWorkspaceAgentProvider;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tutti-os/agent-gui",
3
- "version": "0.0.58",
3
+ "version": "0.0.60",
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.58",
98
- "@tutti-os/ui-i18n-runtime": "0.0.58",
99
- "@tutti-os/ui-rich-text": "0.0.58",
100
- "@tutti-os/ui-react-hooks": "0.0.58",
101
- "@tutti-os/ui-system": "0.0.58",
102
- "@tutti-os/workbench-surface": "0.0.58",
103
- "@tutti-os/workspace-external-core": "0.0.58",
104
- "@tutti-os/workspace-file-manager": "0.0.58",
105
- "@tutti-os/workspace-file-reference": "0.0.58",
106
- "@tutti-os/workspace-issue-manager": "0.0.58",
107
- "@tutti-os/workspace-user-project": "0.0.58",
97
+ "@tutti-os/agent-activity-core": "0.0.60",
98
+ "@tutti-os/ui-i18n-runtime": "0.0.60",
99
+ "@tutti-os/ui-rich-text": "0.0.60",
100
+ "@tutti-os/ui-react-hooks": "0.0.60",
101
+ "@tutti-os/ui-system": "0.0.60",
102
+ "@tutti-os/workbench-surface": "0.0.60",
103
+ "@tutti-os/workspace-external-core": "0.0.60",
104
+ "@tutti-os/workspace-file-manager": "0.0.60",
105
+ "@tutti-os/workspace-file-reference": "0.0.60",
106
+ "@tutti-os/workspace-issue-manager": "0.0.60",
107
+ "@tutti-os/workspace-user-project": "0.0.60",
108
108
  "@tanstack/react-virtual": "^3.13.12",
109
109
  "@tiptap/core": "^3.11.1",
110
110
  "@tiptap/pm": "^3.23.6",
@@ -1,3 +0,0 @@
1
- <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <path d="M4.15672 0.923957C5.52544 0.283494 7.07068 0.123903 8.54141 0.471076C10.012 0.818299 11.3224 1.652 12.2602 2.83688C13.198 4.02185 13.7082 5.48879 13.7082 6.99996V7.5833C13.7082 8.27949 13.4315 8.94697 12.9392 9.43925C12.4469 9.93152 11.7794 10.2083 11.0832 10.2083C10.3871 10.2083 9.71954 9.93152 9.22728 9.43925C9.20473 9.4167 9.18341 9.39303 9.16177 9.36976C8.59144 9.89033 7.83294 10.2083 6.9999 10.2083C5.22803 10.2082 3.79157 8.77185 3.79157 6.99996C3.79159 5.2281 5.22805 3.79168 6.9999 3.79163C7.57711 3.79163 8.11847 3.94468 8.58641 4.21147C8.74008 3.95987 9.01686 3.79166 9.33324 3.79163C9.81648 3.79163 10.2082 4.1834 10.2082 4.66663V7.5833C10.2082 7.81533 10.3005 8.03786 10.4646 8.20195C10.6287 8.36602 10.8512 8.45827 11.0832 8.4583C11.3153 8.4583 11.5378 8.36603 11.7019 8.20195C11.866 8.03786 11.9582 7.81536 11.9582 7.5833V6.99996C11.9582 5.88302 11.581 4.7985 10.8878 3.92265C10.1947 3.04698 9.22614 2.43098 8.13923 2.17436C7.05219 1.91777 5.91006 2.0354 4.89842 2.50875C3.88684 2.98212 3.06461 3.78336 2.56509 4.78227C2.06558 5.7813 1.91811 6.92003 2.14639 8.01339C2.37468 9.10674 2.96539 10.0913 3.8229 10.807C4.68041 11.5226 5.75467 11.9276 6.87116 11.9566C7.98766 11.9856 9.08115 11.6366 9.97468 10.9665C10.3612 10.6766 10.91 10.7549 11.2 11.1414C11.4899 11.528 11.4117 12.0768 11.0251 12.3667C9.81619 13.2734 8.33625 13.7453 6.82559 13.706C5.31501 13.6667 3.86197 13.1185 2.70181 12.1503C1.54166 11.182 0.742296 9.85035 0.433417 8.37114C0.12458 6.89196 0.32394 5.3517 0.99966 4.00013C1.67547 2.64852 2.78802 1.56444 4.15672 0.923957ZM6.9999 5.54163C6.19454 5.54168 5.54159 6.1946 5.54157 6.99996C5.54157 7.80535 6.19453 8.45825 6.9999 8.4583C7.80532 8.4583 8.45824 7.80538 8.45824 6.99996C8.45822 6.19457 7.80531 5.54163 6.9999 5.54163Z" fill="black"/>
3
- </svg>
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../workbench/launch.ts"],"sourcesContent":["import type { WorkbenchHostLaunchRequest } from \"@tutti-os/workbench-surface\";\nimport {\n isAgentGuiWorkbenchProvider,\n normalizeAgentGuiWorkbenchProvider\n} from \"./providerCatalog.ts\";\nimport {\n agentGuiWorkbenchOpenSessionActivationType,\n agentGuiWorkbenchPrefillPromptActivationType,\n type AgentGuiWorkbenchPrefillPromptPayload,\n type AgentGuiWorkbenchProvider\n} from \"./types.ts\";\n\nexport { agentGuiWorkbenchPrefillPromptActivationType } from \"./types.ts\";\n\ntype AgentGuiWorkbenchLaunchRequestInput = Pick<\n WorkbenchHostLaunchRequest,\n \"payload\" | \"typeId\"\n> & {\n dockEntryId?: string | null;\n};\n\nexport const agentGuiWorkbenchTypeId = \"agent-gui\";\n\nconst agentGuiWorkbenchDockEntryPrefix = \"agent-gui:\";\nconst agentGuiWorkbenchUnifiedDockEntryIdValue = \"agent-gui:unified\";\nlet agentGuiWorkbenchInstanceSequence = 0;\n\nexport type AgentGuiWorkbenchDockLayout = \"legacySplit\" | \"unified\";\n\nexport type AgentGuiWorkbenchDockIdentity =\n | {\n kind: \"legacyProvider\";\n provider: AgentGuiWorkbenchProvider;\n }\n | {\n kind: \"unifiedAggregate\";\n };\n\nexport function agentGuiWorkbenchDockEntryId(\n provider: AgentGuiWorkbenchProvider\n): string {\n return provider === \"codex\"\n ? agentGuiWorkbenchTypeId\n : `${agentGuiWorkbenchDockEntryPrefix}${provider}`;\n}\n\nexport function agentGuiWorkbenchUnifiedDockEntryId(): string {\n return agentGuiWorkbenchUnifiedDockEntryIdValue;\n}\n\nexport function agentGuiWorkbenchDockEntryIdForLayout(input: {\n dockLayout: AgentGuiWorkbenchDockLayout;\n provider: AgentGuiWorkbenchProvider;\n}): string {\n return input.dockLayout === \"unified\"\n ? agentGuiWorkbenchUnifiedDockEntryId()\n : agentGuiWorkbenchDockEntryId(input.provider);\n}\n\nexport function agentGuiWorkbenchInstanceId(\n provider: AgentGuiWorkbenchProvider\n): string {\n return `${agentGuiWorkbenchDockEntryPrefix}${provider}`;\n}\n\nexport function createAgentGuiWorkbenchInstanceId(input: {\n agentSessionId?: string | null;\n agentTargetId?: string | null;\n provider: AgentGuiWorkbenchProvider;\n}): string {\n const prefix = agentGuiWorkbenchInstanceId(input.provider);\n const agentSessionId = input.agentSessionId?.trim();\n if (agentSessionId) {\n return `${prefix}:session:${encodeAgentGuiWorkbenchInstanceSegment(\n agentSessionId\n )}`;\n }\n const agentTargetId = input.agentTargetId?.trim();\n if (agentTargetId) {\n return `${prefix}:target:${encodeAgentGuiWorkbenchInstanceSegment(\n agentTargetId\n )}`;\n }\n\n agentGuiWorkbenchInstanceSequence += 1;\n return [\n prefix,\n \"panel\",\n `${Date.now().toString(36)}-${agentGuiWorkbenchInstanceSequence.toString(36)}`\n ].join(\":\");\n}\n\nexport function agentGuiWorkbenchProviderFromIdentifier(\n value: string | null | undefined\n): AgentGuiWorkbenchProvider | null {\n const identity = agentGuiWorkbenchDockIdentityFromIdentifier(value);\n return identity?.kind === \"legacyProvider\" ? identity.provider : null;\n}\n\nexport function agentGuiWorkbenchDockIdentityFromIdentifier(\n value: string | null | undefined\n): AgentGuiWorkbenchDockIdentity | null {\n const normalized = value?.trim();\n if (!normalized) {\n return null;\n }\n if (normalized === agentGuiWorkbenchUnifiedDockEntryId()) {\n return { kind: \"unifiedAggregate\" };\n }\n if (normalized === agentGuiWorkbenchTypeId) {\n return { kind: \"legacyProvider\", provider: \"codex\" };\n }\n if (!normalized.startsWith(agentGuiWorkbenchDockEntryPrefix)) {\n return null;\n }\n const provider = normalized\n .slice(agentGuiWorkbenchDockEntryPrefix.length)\n .split(\":\", 1)[0];\n return isAgentGuiWorkbenchProvider(provider)\n ? { kind: \"legacyProvider\", provider }\n : null;\n}\n\nexport function agentGuiWorkbenchProviderFromLaunchRequest(\n request: AgentGuiWorkbenchLaunchRequestInput\n): AgentGuiWorkbenchProvider {\n const payloadProvider =\n request.payload &&\n typeof request.payload === \"object\" &&\n !Array.isArray(request.payload)\n ? (request.payload as { provider?: unknown }).provider\n : null;\n if (isAgentGuiWorkbenchProvider(payloadProvider)) {\n return payloadProvider;\n }\n return (\n agentGuiWorkbenchProviderFromIdentifier(request.dockEntryId) ??\n agentGuiWorkbenchProviderFromIdentifier(request.typeId) ??\n \"codex\"\n );\n}\n\nexport function createAgentGuiWorkbenchSessionLaunchRequest(input: {\n agentSessionId?: string;\n openInNewWindow?: boolean;\n provider: unknown;\n}) {\n const provider = normalizeAgentGuiWorkbenchProvider(input.provider);\n return {\n dockEntryId: agentGuiWorkbenchDockEntryId(provider),\n payload: {\n ...(input.agentSessionId ? { agentSessionId: input.agentSessionId } : {}),\n ...(input.openInNewWindow ? { openInNewWindow: true } : {}),\n provider\n },\n reason: \"host\" as const,\n typeId: agentGuiWorkbenchTypeId\n };\n}\n\nexport function createAgentGuiWorkbenchDraftLaunchRequest(input: {\n autoSubmit?: boolean;\n draftPrompt: string;\n provider: unknown;\n userProjectPath?: string | null;\n}) {\n const provider = normalizeAgentGuiWorkbenchProvider(input.provider);\n const userProjectPath = normalizeAgentGuiWorkbenchUserProjectPath(\n input.userProjectPath\n );\n return {\n dockEntryId: agentGuiWorkbenchDockEntryId(provider),\n payload: {\n draftPrompt: input.draftPrompt,\n provider,\n ...(input.autoSubmit ? { autoSubmit: true } : {}),\n ...(userProjectPath ? { userProjectPath } : {})\n },\n reason: \"host\" as const,\n typeId: agentGuiWorkbenchTypeId\n };\n}\n\nexport interface AgentGuiWorkbenchLaunchDescriptor {\n activation:\n | {\n payload: {\n agentSessionId: string;\n };\n type: typeof agentGuiWorkbenchOpenSessionActivationType;\n }\n | {\n payload: AgentGuiWorkbenchPrefillPromptPayload;\n type: typeof agentGuiWorkbenchPrefillPromptActivationType;\n }\n | null;\n dockEntryId: string;\n instanceId: string;\n openInNewWindow: boolean;\n provider: AgentGuiWorkbenchProvider;\n reuseDockEntryNode: boolean;\n reuseExistingSessionNode: boolean;\n targetAgentSessionId: string | null;\n}\n\nexport function createAgentGuiWorkbenchLaunchDescriptor(\n request: AgentGuiWorkbenchLaunchRequestInput\n): AgentGuiWorkbenchLaunchDescriptor {\n const provider = agentGuiWorkbenchProviderFromLaunchRequest(request);\n const dockEntryId = resolveAgentGuiWorkbenchLaunchDockEntryId({\n provider,\n requestedDockEntryId: request.dockEntryId\n });\n const prefillPrompt = prefillPromptFromLaunchPayload(request.payload);\n if (prefillPrompt) {\n return {\n activation: {\n payload: prefillPrompt,\n type: agentGuiWorkbenchPrefillPromptActivationType\n },\n dockEntryId,\n instanceId: createAgentGuiWorkbenchInstanceId({\n agentTargetId: agentTargetIdFromLaunchPayload(request.payload),\n provider\n }),\n openInNewWindow: false,\n provider,\n reuseDockEntryNode: shouldReuseAgentGuiWorkbenchDockEntryNode({\n dockEntryId,\n launchKind: \"prefill\"\n }),\n reuseExistingSessionNode: true,\n targetAgentSessionId: null\n };\n }\n\n const targetAgentSessionId = agentSessionIdFromLaunchPayload(request.payload);\n const openInNewWindow = openInNewWindowFromLaunchPayload(request.payload);\n const instanceId = createAgentGuiWorkbenchInstanceId({\n agentSessionId: openInNewWindow ? null : targetAgentSessionId,\n agentTargetId: openInNewWindow\n ? null\n : agentTargetIdFromLaunchPayload(request.payload),\n provider\n });\n\n return {\n activation: targetAgentSessionId\n ? {\n payload: {\n agentSessionId: targetAgentSessionId\n },\n type: agentGuiWorkbenchOpenSessionActivationType\n }\n : null,\n dockEntryId,\n instanceId,\n openInNewWindow,\n provider,\n reuseDockEntryNode: shouldReuseAgentGuiWorkbenchDockEntryNode({\n dockEntryId,\n launchKind: targetAgentSessionId ? \"session\" : \"empty\"\n }),\n reuseExistingSessionNode: !openInNewWindow,\n targetAgentSessionId\n };\n}\n\nexport function resolveAgentGuiWorkbenchLaunchDockEntryId(input: {\n provider: AgentGuiWorkbenchProvider;\n requestedDockEntryId?: string | null;\n}): string {\n const requestedIdentity = agentGuiWorkbenchDockIdentityFromIdentifier(\n input.requestedDockEntryId\n );\n if (requestedIdentity?.kind === \"unifiedAggregate\") {\n return agentGuiWorkbenchUnifiedDockEntryId();\n }\n return agentGuiWorkbenchDockEntryId(input.provider);\n}\n\nexport function shouldReuseAgentGuiWorkbenchDockEntryNode(input: {\n dockEntryId: string;\n launchKind: \"empty\" | \"prefill\" | \"session\";\n}): boolean {\n if (input.launchKind !== \"prefill\") {\n return false;\n }\n return (\n agentGuiWorkbenchDockIdentityFromIdentifier(input.dockEntryId)?.kind !==\n \"unifiedAggregate\"\n );\n}\n\nfunction encodeAgentGuiWorkbenchInstanceSegment(value: string): string {\n return encodeURIComponent(value.trim());\n}\n\nfunction prefillPromptFromLaunchPayload(\n payload: unknown\n): AgentGuiWorkbenchPrefillPromptPayload | null {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n return null;\n }\n const draftPrompt = (payload as { draftPrompt?: unknown }).draftPrompt;\n if (typeof draftPrompt !== \"string\" || !draftPrompt.trim()) {\n return null;\n }\n const autoSubmit = (payload as { autoSubmit?: unknown }).autoSubmit === true;\n const userProjectPath = (payload as { userProjectPath?: unknown })\n .userProjectPath;\n const normalizedUserProjectPath =\n typeof userProjectPath === \"string\"\n ? normalizeAgentGuiWorkbenchUserProjectPath(userProjectPath)\n : null;\n return {\n draftPrompt,\n ...(autoSubmit ? { autoSubmit: true } : {}),\n ...(normalizedUserProjectPath\n ? { userProjectPath: normalizedUserProjectPath }\n : {})\n };\n}\n\nfunction normalizeAgentGuiWorkbenchUserProjectPath(\n value: string | null | undefined\n): string | null {\n const normalized = value?.trim().replaceAll(\"\\\\\", \"/\").replace(/\\/+$/, \"\");\n return normalized ? normalized : null;\n}\n\nfunction agentSessionIdFromLaunchPayload(payload: unknown): string | null {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n return null;\n }\n const agentSessionId = (payload as { agentSessionId?: unknown })\n .agentSessionId;\n return typeof agentSessionId === \"string\" && agentSessionId.trim()\n ? agentSessionId.trim()\n : null;\n}\n\nfunction agentTargetIdFromLaunchPayload(payload: unknown): string | null {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n return null;\n }\n const agentTargetId = (payload as { agentTargetId?: unknown }).agentTargetId;\n return typeof agentTargetId === \"string\" && agentTargetId.trim()\n ? agentTargetId.trim()\n : null;\n}\n\nfunction openInNewWindowFromLaunchPayload(payload: unknown): boolean {\n if (!payload || typeof payload !== \"object\" || Array.isArray(payload)) {\n return false;\n }\n return (payload as { openInNewWindow?: unknown }).openInNewWindow === true;\n}\n"],"mappings":"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","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 agentGUIProviderTargetFallbackLabels: Record<AgentGUIProvider, string> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n gemini: \"Gemini\",\n hermes: \"Hermes\",\n nexight: \"Nexight\",\n openclaw: \"OpenClaw\"\n};\n\nexport const agentGUIDefaultTargetProviders = [\n \"codex\",\n \"claude-code\",\n \"nexight\",\n \"hermes\",\n \"gemini\",\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: agentGUIProviderTargetFallbackLabels[provider] ?? provider\n };\n}\n\nexport function createLocalAgentGUIProviderTargets(\n providers: readonly AgentGUIProvider[] = agentGUIDefaultTargetProviders\n): AgentGUIProviderTarget[] {\n return providers.map((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 default:\n return null;\n }\n}\n\nexport function normalizeAgentGUIProviderTargets(\n targets: readonly AgentGUIProviderTarget[] | null | undefined,\n options?: { fallbackToLocal?: boolean }\n): AgentGUIProviderTarget[] {\n const fallbackToLocal = options?.fallbackToLocal !== false;\n const source = targets && targets.length > 0 ? targets : [];\n const normalizedTargets: AgentGUIProviderTarget[] = [];\n const seenTargetKeys = new Set<string>();\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 normalizedTargets.push(normalized);\n }\n return normalizedTargets.length > 0 || !fallbackToLocal\n ? normalizedTargets\n : createLocalAgentGUIProviderTargets();\n}\n\nexport function resolveAgentGUIProviderTarget(input: {\n agentTargetId?: string | null;\n defaultProviderTargetId?: string | null;\n fallbackToLocal?: boolean;\n provider: AgentGUIProvider;\n providerTargetId?: string | null;\n providerTargets: readonly AgentGUIProviderTarget[];\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.fallbackToLocal === 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":[]}