@tutti-os/agent-gui 0.0.68 → 0.0.70

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 (67) hide show
  1. package/README.md +4 -5
  2. package/dist/agent-conversation/index.d.ts +2 -2
  3. package/dist/agent-conversation/index.js +6 -6
  4. package/dist/agent-message-center/index.js +8 -8
  5. package/dist/{agentGuiNodeTypes-BTHu_g4m.d.ts → agentGuiNodeTypes-CmLUy5Jt.d.ts} +8 -6
  6. package/dist/app/renderer/agentactivity.css +209 -4
  7. package/dist/app/renderer/assets/icons/agents/opencode-flat-filled.svg +4 -0
  8. package/dist/{chunk-3QPN2Y7R.js → chunk-DGNKXT3Q.js} +23 -129
  9. package/dist/chunk-DGNKXT3Q.js.map +1 -0
  10. package/dist/{chunk-GXHZNIWT.js → chunk-DXENDZEF.js} +2 -2
  11. package/dist/{chunk-GOEL3BO7.js → chunk-FTSEVC6O.js} +2 -2
  12. package/dist/{chunk-J335PQ5H.js → chunk-ISQCYEUJ.js} +12 -27
  13. package/dist/chunk-ISQCYEUJ.js.map +1 -0
  14. package/dist/{chunk-C2M2ELXF.js → chunk-IZX2YQXY.js} +3 -3
  15. package/dist/{chunk-ZZBLWZJR.js → chunk-KS35VKHM.js} +1 -2
  16. package/dist/chunk-KS35VKHM.js.map +1 -0
  17. package/dist/{chunk-LQRD4X6R.js → chunk-KTIHLBCN.js} +2 -2
  18. package/dist/{chunk-A2KZVRUO.js → chunk-MVPSFOJZ.js} +2 -2
  19. package/dist/{chunk-YE5JSME7.js → chunk-N37A62BK.js} +17 -1
  20. package/dist/chunk-N37A62BK.js.map +1 -0
  21. package/dist/{chunk-VRV6GBF5.js → chunk-NROZAN34.js} +8 -1
  22. package/dist/chunk-NROZAN34.js.map +1 -0
  23. package/dist/{chunk-QGKK6FHC.js → chunk-QDWV5VTD.js} +5 -5
  24. package/dist/{chunk-DYX6466P.js → chunk-QJ42HQ24.js} +4 -4
  25. package/dist/{chunk-AIR6A4NP.js → chunk-SC3PS7AT.js} +2 -2
  26. package/dist/{chunk-D22A3KGQ.js → chunk-SG6A35BU.js} +2 -2
  27. package/dist/{chunk-KJLSZETD.js → chunk-WWY6MYMU.js} +3 -3
  28. package/dist/{chunk-TB7PKP6F.js → chunk-Y3C5EHSW.js} +61 -17
  29. package/dist/chunk-Y3C5EHSW.js.map +1 -0
  30. package/dist/context-mention-palette/index.js +7 -7
  31. package/dist/i18n/index.d.ts +22 -128
  32. package/dist/i18n/index.js +2 -2
  33. package/dist/index.d.ts +114 -109
  34. package/dist/index.js +599 -213
  35. package/dist/index.js.map +1 -1
  36. package/dist/opencode-flat-filled-CYAJPX45.svg +4 -0
  37. package/dist/queued-prompt-runtime.d.ts +2 -2
  38. package/dist/{types-BwDrG654.d.ts → types-DZ79b8Zn.d.ts} +6 -1
  39. package/dist/workbench/contribution.d.ts +9 -1
  40. package/dist/workbench/contribution.js +4 -4
  41. package/dist/workbench/index.d.ts +5 -2
  42. package/dist/workbench/index.js +7 -7
  43. package/dist/workbench/launch.d.ts +1 -1
  44. package/dist/workbench/providerCatalog.d.ts +1 -1
  45. package/dist/workbench/sessionTitle.d.ts +1 -1
  46. package/dist/workbench/sessionTitle.js +3 -3
  47. package/dist/workbench/state.d.ts +1 -1
  48. package/dist/workbench/state.js +2 -2
  49. package/dist/workbench/types.d.ts +1 -1
  50. package/dist/workspace-agent-generated-files.js +3 -3
  51. package/package.json +12 -12
  52. package/dist/chunk-3QPN2Y7R.js.map +0 -1
  53. package/dist/chunk-J335PQ5H.js.map +0 -1
  54. package/dist/chunk-TB7PKP6F.js.map +0 -1
  55. package/dist/chunk-VRV6GBF5.js.map +0 -1
  56. package/dist/chunk-YE5JSME7.js.map +0 -1
  57. package/dist/chunk-ZZBLWZJR.js.map +0 -1
  58. /package/dist/{chunk-GXHZNIWT.js.map → chunk-DXENDZEF.js.map} +0 -0
  59. /package/dist/{chunk-GOEL3BO7.js.map → chunk-FTSEVC6O.js.map} +0 -0
  60. /package/dist/{chunk-C2M2ELXF.js.map → chunk-IZX2YQXY.js.map} +0 -0
  61. /package/dist/{chunk-LQRD4X6R.js.map → chunk-KTIHLBCN.js.map} +0 -0
  62. /package/dist/{chunk-A2KZVRUO.js.map → chunk-MVPSFOJZ.js.map} +0 -0
  63. /package/dist/{chunk-QGKK6FHC.js.map → chunk-QDWV5VTD.js.map} +0 -0
  64. /package/dist/{chunk-DYX6466P.js.map → chunk-QJ42HQ24.js.map} +0 -0
  65. /package/dist/{chunk-AIR6A4NP.js.map → chunk-SC3PS7AT.js.map} +0 -0
  66. /package/dist/{chunk-D22A3KGQ.js.map → chunk-SG6A35BU.js.map} +0 -0
  67. /package/dist/{chunk-KJLSZETD.js.map → chunk-WWY6MYMU.js.map} +0 -0
package/README.md CHANGED
@@ -90,12 +90,11 @@ export interface AgentGUIProviderTarget {
90
90
 
91
91
  AgentGUI does not interpret `ref.kind` and does not treat `targetId` or `ref`
92
92
  as authority. It displays `target.label`, keeps provider logic keyed by the
93
- real `target.provider`, and passes `providerTargetRef` through activation.
94
- Trusted host code must re-authenticate the current user/workspace and resolve
95
- any invocation plan before launching.
93
+ real `target.provider`, and starts new sessions with the selected
94
+ `agentTargetId`. Trusted host code must re-authenticate the current
95
+ user/workspace and resolve any invocation plan before launching.
96
96
 
97
97
  If `providerTargets` is omitted or empty, AgentGUI creates local targets such as
98
98
  `local:codex` and `local:claude-code` from the static provider catalog for
99
99
  display/backward compatibility. Those static catalog targets are not persisted
100
- or sent as `providerTargetRef`; legacy hosts continue to receive only the real
101
- `provider`.
100
+ or sent as session creation authority.
@@ -4,11 +4,11 @@ import { W as WorkspaceLinkAction } from '../workspaceLinkActions-Bjy_XfBm.js';
4
4
  import { A as AgentMessageMarkdownWorkspaceAppIcon } from '../AgentMessageMarkdown-DeYPURtF.js';
5
5
  import { c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-DPAgUJlR.js';
6
6
  export { B as BuildWorkspaceAgentSessionDetailInput, d as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-DPAgUJlR.js';
7
- import { c as AgentGUIProviderSkillOption } from '../agentGuiNodeTypes-BTHu_g4m.js';
7
+ import { c as AgentGUIProviderSkillOption } from '../agentGuiNodeTypes-CmLUy5Jt.js';
8
8
  export { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, q as WorkspaceAgentActivityTimelineItem } from '../workspaceAgentActivityListViewModel-DJvAqZso.js';
9
9
  import '@tutti-os/workspace-issue-manager/core';
10
10
  import '@tutti-os/agent-activity-core';
11
- import '../types-BwDrG654.js';
11
+ import '../types-DZ79b8Zn.js';
12
12
  import '@tutti-os/workspace-user-project/contracts';
13
13
 
14
14
  interface AgentConversationFlowProps {
@@ -6,20 +6,20 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-J335PQ5H.js";
10
- import "../chunk-KJLSZETD.js";
9
+ } from "../chunk-ISQCYEUJ.js";
10
+ import "../chunk-WWY6MYMU.js";
11
11
  import "../chunk-PSLAWU25.js";
12
- import "../chunk-C2M2ELXF.js";
12
+ import "../chunk-IZX2YQXY.js";
13
13
  import "../chunk-Y35GDLP2.js";
14
14
  import "../chunk-LUGELG5V.js";
15
- import "../chunk-ZZBLWZJR.js";
15
+ import "../chunk-KS35VKHM.js";
16
16
  import "../chunk-4US2YHBY.js";
17
17
  import {
18
18
  translate
19
- } from "../chunk-AIR6A4NP.js";
19
+ } from "../chunk-SC3PS7AT.js";
20
20
  import "../chunk-PJP5BUU6.js";
21
21
  import "../chunk-4I2VCAMW.js";
22
- import "../chunk-3QPN2Y7R.js";
22
+ import "../chunk-DGNKXT3Q.js";
23
23
 
24
24
  // shared/WorkspaceAgentSessionDetail.tsx
25
25
  import { useMemo } from "react";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  formatAgentGuiConversationPlainTitle
3
- } from "../chunk-GOEL3BO7.js";
3
+ } from "../chunk-FTSEVC6O.js";
4
4
  import {
5
5
  AgentInteractivePromptSurface,
6
6
  approvalOptionDisplayLabel,
7
7
  getPromptToolDetails,
8
8
  isPromptRequestIdTitle
9
- } from "../chunk-DYX6466P.js";
9
+ } from "../chunk-QJ42HQ24.js";
10
10
  import {
11
11
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
12
12
  PLAN_IMPLEMENTATION_PROMPT,
@@ -15,7 +15,7 @@ import {
15
15
  } from "../chunk-MKHDRIGN.js";
16
16
  import {
17
17
  formatAgentSessionMentionText
18
- } from "../chunk-D22A3KGQ.js";
18
+ } from "../chunk-SG6A35BU.js";
19
19
  import {
20
20
  AgentMessageMarkdown,
21
21
  CustomScrollArea,
@@ -25,17 +25,17 @@ import {
25
25
  extractExitPlanModeOptions,
26
26
  isExitPlanSwitchModeInput,
27
27
  normalizeAskUserQuestions
28
- } from "../chunk-KJLSZETD.js";
28
+ } from "../chunk-WWY6MYMU.js";
29
29
  import {
30
30
  userAvatarPlaceholderUrl,
31
31
  workspaceAgentActivityStatusLabel
32
- } from "../chunk-A2KZVRUO.js";
32
+ } from "../chunk-MVPSFOJZ.js";
33
33
  import {
34
34
  resolveWorkspaceAgentSessionSortTimeUnixMs
35
35
  } from "../chunk-IBIMGLCD.js";
36
36
  import {
37
37
  managedAgentRoundedIconUrl
38
- } from "../chunk-ZZBLWZJR.js";
38
+ } from "../chunk-KS35VKHM.js";
39
39
  import {
40
40
  workspaceAgentProviderLabel
41
41
  } from "../chunk-4US2YHBY.js";
@@ -43,10 +43,10 @@ import {
43
43
  AgentGuiI18nProvider,
44
44
  getActiveUiLanguage,
45
45
  useTranslation
46
- } from "../chunk-AIR6A4NP.js";
46
+ } from "../chunk-SC3PS7AT.js";
47
47
  import "../chunk-PJP5BUU6.js";
48
48
  import "../chunk-4I2VCAMW.js";
49
- import "../chunk-3QPN2Y7R.js";
49
+ import "../chunk-DGNKXT3Q.js";
50
50
  import "../chunk-GCBDIQDX.js";
51
51
 
52
52
  // agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
@@ -1,5 +1,5 @@
1
1
  import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
2
- import { i as AgentHostAgentSessionCommand, j as AgentHostAgentSessionComposerSettings, l as AgentHostAgentSessionReasoningEffort, m as AgentHostAgentSessionSpeed, k as AgentHostAgentSessionPermissionConfig, n as AgentHostAgentSessionState, a as AgentGUIProvider, q as AgentPromptContentBlock, A as AgentGUINodeData, f as AgentGUIProviderTarget, b as AgentGUIProviderRailMode, c as AgentGUIProviderReadinessGate } from './types-BwDrG654.js';
2
+ import { j as AgentHostAgentSessionCommand, k as AgentHostAgentSessionComposerSettings, m as AgentHostAgentSessionReasoningEffort, n as AgentHostAgentSessionSpeed, l as AgentHostAgentSessionPermissionConfig, o as AgentHostAgentSessionState, a as AgentGUIProvider, r as AgentPromptContentBlock, A as AgentGUINodeData, f as AgentGUIProviderTarget, b as AgentGUIProviderRailMode, c as AgentGUIProviderReadinessGate } from './types-DZ79b8Zn.js';
3
3
  import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-DJvAqZso.js';
4
4
  import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-DPAgUJlR.js';
5
5
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
@@ -231,7 +231,6 @@ type AgentHostWorkspaceApi = AgentHostRecord & {
231
231
  };
232
232
  interface AgentHostInputApi {
233
233
  account?: AgentHostAccountApi;
234
- agentGuiBatch?: AgentHostAgentGuiBatchApi;
235
234
  agentSessions?: AgentHostAgentSessionsApi;
236
235
  clipboard: AgentHostClipboardApi;
237
236
  debug?: AgentHostDebugApi;
@@ -251,9 +250,6 @@ type AgentHostAccountApi = AgentHostRecord & {
251
250
  batchGetUserInfo: (input: AgentHostBatchUserInfoInput) => AgentHostAsyncResult<AgentHostBatchUserInfoResult>;
252
251
  ensureProfiles?: (input: any) => AgentHostAsyncResult<any>;
253
252
  };
254
- type AgentHostAgentGuiBatchApi = AgentHostRecord & {
255
- exportRun: (input: any) => AgentHostAsyncResult<any>;
256
- };
257
253
  type AgentHostWorkspaceAgentProbesApi = AgentHostRecord & {
258
254
  list: (input: AgentHostListWorkspaceAgentProbesInput) => AgentHostAsyncResult<AgentHostWorkspaceAgentProbesResult>;
259
255
  };
@@ -380,7 +376,6 @@ type AgentHostWorkspaceAgentsApi = AgentHostRecord & {
380
376
  };
381
377
  interface AgentHostRuntimeApi {
382
378
  account?: AgentHostAccountApi;
383
- agentGuiBatch: AgentHostAgentGuiBatchApi;
384
379
  clipboard: AgentHostClipboardApi;
385
380
  debug?: AgentHostDebugApi;
386
381
  filesystem: AgentHostFilesystemApi;
@@ -520,10 +515,17 @@ interface AgentComposerDraftFile {
520
515
  uploading?: boolean;
521
516
  uploadError?: string;
522
517
  }
518
+ interface AgentComposerDraftLargeText {
519
+ id: string;
520
+ name: string;
521
+ text: string;
522
+ sizeBytes?: number;
523
+ }
523
524
  interface AgentComposerDraft {
524
525
  prompt: string;
525
526
  images: AgentComposerDraftImage[];
526
527
  files?: AgentComposerDraftFile[];
528
+ largeTexts?: AgentComposerDraftLargeText[];
527
529
  }
528
530
  interface AgentGUIComposerSettingsVM {
529
531
  sessionSettings: AgentSessionComposerSettings | null;
@@ -4306,19 +4306,104 @@ aside.workspace-agents-status-panel
4306
4306
  user-select: auto;
4307
4307
  }
4308
4308
 
4309
+ .workbench-window:has(
4310
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4311
+ )
4312
+ .workbench-window__header {
4313
+ cursor: grab !important;
4314
+ }
4315
+
4316
+ .workbench-window:has(
4317
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4318
+ )
4319
+ .workbench-window__header:active {
4320
+ cursor: grabbing !important;
4321
+ }
4322
+
4309
4323
  .workbench-window:has([data-agent-gui-workbench-header="true"])
4310
4324
  .workbench-window__body {
4311
4325
  grid-row: 1;
4312
4326
  overflow: hidden;
4313
4327
  }
4314
4328
 
4315
- .workbench-window:has([data-agent-gui-workbench-header="true"])
4316
- .agent-gui-node__rail-toolbar,
4329
+ .workbench-window:has(
4330
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4331
+ )
4332
+ .workbench-window__body {
4333
+ display: flex;
4334
+ width: 100%;
4335
+ height: 100%;
4336
+ min-width: 0;
4337
+ min-height: 0;
4338
+ }
4339
+
4340
+ .workbench-window[data-agent-gui-standalone-window="true"] {
4341
+ width: 100vw;
4342
+ height: 100vh;
4343
+ max-width: 100vw;
4344
+ max-height: 100vh;
4345
+ overflow: hidden;
4346
+ }
4347
+
4348
+ .workbench-window[data-agent-gui-standalone-window="true"]
4349
+ .workspace-node-window,
4350
+ .workbench-window[data-agent-gui-standalone-window="true"]
4351
+ [data-workspace-node-window-root="true"],
4352
+ .workbench-window[data-agent-gui-standalone-window="true"]
4353
+ [data-workspace-node-window-body="true"],
4354
+ .workbench-window[data-agent-gui-standalone-window="true"]
4355
+ .agent-gui-node__shell,
4356
+ .workbench-window[data-agent-gui-standalone-window="true"]
4357
+ .agent-gui-node__body,
4358
+ .workbench-window[data-agent-gui-standalone-window="true"]
4359
+ .agent-gui-node__layout {
4360
+ width: 100%;
4361
+ height: 100%;
4362
+ min-width: 0;
4363
+ min-height: 0;
4364
+ overflow: hidden;
4365
+ }
4366
+
4367
+ .workbench-window[data-agent-gui-standalone-window="true"]
4368
+ .agent-gui-node__provider-rail-panel,
4369
+ .workbench-window[data-agent-gui-standalone-window="true"]
4370
+ .agent-gui-node__rail,
4371
+ .workbench-window[data-agent-gui-standalone-window="true"]
4372
+ .agent-gui-node__detail-panel,
4373
+ .workbench-window[data-agent-gui-standalone-window="true"]
4374
+ .agent-gui-node__detail {
4375
+ min-height: 0;
4376
+ overflow: hidden;
4377
+ }
4378
+
4379
+ .workbench-window[data-agent-gui-standalone-window="true"]
4380
+ .agent-gui-node__rail-toolbar {
4381
+ flex: 0 0 auto;
4382
+ }
4383
+
4384
+ .workbench-window[data-agent-gui-standalone-window="true"]
4385
+ .agent-gui-node__conversation-list,
4386
+ .workbench-window[data-agent-gui-standalone-window="true"]
4387
+ .agent-gui-node__timeline {
4388
+ min-height: 0;
4389
+ overflow-y: auto;
4390
+ overscroll-behavior: contain;
4391
+ }
4392
+
4317
4393
  .workbench-window:has([data-agent-gui-workbench-header="true"])
4318
4394
  .agent-gui-node__provider-rail-panel {
4319
4395
  padding-top: var(--agent-gui-workbench-header-height);
4320
4396
  }
4321
4397
 
4398
+ /* The provider rail nests the workbench-header offset on the panel and the 2px
4399
+ breathing room on the inner rail, so the "All" tile sits at header + 2px. The
4400
+ toolbar has no such wrapper, so fold the same 2px into its offset to keep the
4401
+ search field top aligned with the provider tiles. */
4402
+ .workbench-window:has([data-agent-gui-workbench-header="true"])
4403
+ .agent-gui-node__rail-toolbar {
4404
+ padding-top: calc(var(--agent-gui-workbench-header-height) + 2px);
4405
+ }
4406
+
4322
4407
  .workbench-window:has([data-agent-gui-workbench-header="true"])
4323
4408
  .agent-gui-node__detail-panel {
4324
4409
  position: relative;
@@ -4470,6 +4555,26 @@ aside.workspace-agents-status-panel
4470
4555
  margin-right: 0;
4471
4556
  }
4472
4557
 
4558
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"] {
4559
+ cursor: grab !important;
4560
+ -webkit-app-region: drag;
4561
+ }
4562
+
4563
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]:active {
4564
+ cursor: grabbing !important;
4565
+ }
4566
+
4567
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4568
+ .agent-gui-workbench-header__primary {
4569
+ cursor: grab !important;
4570
+ -webkit-app-region: drag;
4571
+ }
4572
+
4573
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4574
+ .agent-gui-workbench-header__primary:active {
4575
+ cursor: grabbing !important;
4576
+ }
4577
+
4473
4578
  .agent-gui-workbench-header__traffic-light {
4474
4579
  position: relative;
4475
4580
  display: inline-flex;
@@ -4631,6 +4736,25 @@ aside.workspace-agents-status-panel
4631
4736
  pointer-events: none;
4632
4737
  }
4633
4738
 
4739
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4740
+ .agent-gui-workbench-header__agent-brand,
4741
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4742
+ .agent-gui-workbench-header__session-title,
4743
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4744
+ .agent-gui-workbench-header__detail-title {
4745
+ cursor: grab !important;
4746
+ -webkit-app-region: drag;
4747
+ }
4748
+
4749
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4750
+ .agent-gui-workbench-header__agent-brand:active,
4751
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4752
+ .agent-gui-workbench-header__session-title:active,
4753
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4754
+ .agent-gui-workbench-header__detail-title:active {
4755
+ cursor: grabbing !important;
4756
+ }
4757
+
4634
4758
  .agent-gui-workbench-header__icon-button {
4635
4759
  display: inline-flex !important;
4636
4760
  width: 28px !important;
@@ -4648,6 +4772,16 @@ aside.workspace-agents-status-panel
4648
4772
  cursor: pointer;
4649
4773
  }
4650
4774
 
4775
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4776
+ .agent-gui-workbench-header__traffic-lights,
4777
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4778
+ .agent-gui-workbench-header__traffic-light,
4779
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4780
+ .agent-gui-workbench-header__icon-button {
4781
+ cursor: pointer !important;
4782
+ -webkit-app-region: no-drag;
4783
+ }
4784
+
4651
4785
  .agent-gui-workbench-header__icon-button:hover,
4652
4786
  .agent-gui-workbench-header__icon-button:focus-visible {
4653
4787
  background: color-mix(
@@ -4662,6 +4796,15 @@ aside.workspace-agents-status-panel
4662
4796
  margin-left: auto;
4663
4797
  }
4664
4798
 
4799
+ .agent-gui-workbench-header__detached-window {
4800
+ margin-left: auto;
4801
+ }
4802
+
4803
+ .agent-gui-workbench-header__detached-window
4804
+ + .agent-gui-workbench-header__rail-toggle {
4805
+ margin-left: 0;
4806
+ }
4807
+
4665
4808
  .workbench-window:has([data-workbench-node-render-error="true"])
4666
4809
  .agent-gui-workbench-header__rail-toggle {
4667
4810
  display: none !important;
@@ -4744,6 +4887,7 @@ aside.workspace-agents-status-panel
4744
4887
  }
4745
4888
 
4746
4889
  .agent-gui-node__detail-panel {
4890
+ position: relative;
4747
4891
  display: flex;
4748
4892
  height: 100%;
4749
4893
  min-width: 0;
@@ -4760,6 +4904,37 @@ aside.workspace-agents-status-panel
4760
4904
  overflow: hidden;
4761
4905
  }
4762
4906
 
4907
+ .agent-gui-node__composer-file-drop-overlay {
4908
+ position: absolute;
4909
+ inset: 0;
4910
+ z-index: 40;
4911
+ display: grid;
4912
+ place-items: center;
4913
+ padding: 24px;
4914
+ border-radius: inherit;
4915
+ border: 2px dashed color-mix(in srgb, var(--tutti-purple) 70%, transparent);
4916
+ background: color-mix(
4917
+ in srgb,
4918
+ var(--tutti-purple) 12%,
4919
+ var(--agent-gui-session-flow-background)
4920
+ );
4921
+ opacity: 0;
4922
+ pointer-events: none;
4923
+ transition: opacity 150ms ease-out;
4924
+ }
4925
+
4926
+ .agent-gui-node__composer-file-drop-overlay--active {
4927
+ opacity: 1;
4928
+ }
4929
+
4930
+ .agent-gui-node__composer-file-drop-overlay-card {
4931
+ color: var(--text-primary);
4932
+ font-size: 15px;
4933
+ font-weight: 500;
4934
+ line-height: 1.4;
4935
+ text-align: center;
4936
+ }
4937
+
4763
4938
  .agent-gui-node__rail {
4764
4939
  position: relative;
4765
4940
  display: flex;
@@ -4876,7 +5051,7 @@ aside.workspace-agents-status-panel
4876
5051
  align-items: center;
4877
5052
  gap: 10px;
4878
5053
  min-width: 0;
4879
- padding: 0 16px 16px;
5054
+ padding: 2px 16px 16px;
4880
5055
  }
4881
5056
 
4882
5057
  .agent-gui-node__project-rail-header {
@@ -8424,7 +8599,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8424
8599
  flex: 1 1 auto;
8425
8600
  flex-direction: column;
8426
8601
  align-items: center;
8427
- padding: 0 0 12px;
8602
+ padding: 2px 0 12px;
8428
8603
  overflow-x: hidden;
8429
8604
  overflow-y: auto;
8430
8605
  mask-image: linear-gradient(
@@ -8591,6 +8766,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8591
8766
  }
8592
8767
 
8593
8768
  .agent-gui-node__provider-rail-avatar {
8769
+ position: relative;
8594
8770
  box-sizing: border-box;
8595
8771
  display: grid;
8596
8772
  width: 32px;
@@ -8666,6 +8842,28 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8666
8842
  object-fit: contain;
8667
8843
  }
8668
8844
 
8845
+ .agent-gui-node__provider-rail-badge {
8846
+ position: absolute;
8847
+ right: -4px;
8848
+ bottom: -4px;
8849
+ box-sizing: border-box;
8850
+ display: grid;
8851
+ width: 16px;
8852
+ height: 16px;
8853
+ place-items: center;
8854
+ overflow: hidden;
8855
+ border: 1px solid #fff;
8856
+ border-radius: 999px;
8857
+ background: #fff;
8858
+ pointer-events: none;
8859
+ }
8860
+
8861
+ .agent-gui-node__provider-rail-badge-image {
8862
+ width: 100%;
8863
+ height: 100%;
8864
+ object-fit: cover;
8865
+ }
8866
+
8669
8867
  .agent-gui-node__provider-rail-launchpad-icon {
8670
8868
  box-sizing: border-box;
8671
8869
  display: grid;
@@ -8767,6 +8965,13 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8767
8965
  justify-items: center;
8768
8966
  }
8769
8967
 
8968
+ .agent-gui-node__empty-hero-icon-slot {
8969
+ display: grid;
8970
+ width: 54px;
8971
+ height: 54px;
8972
+ place-items: center;
8973
+ }
8974
+
8770
8975
  .agent-gui-node__empty-hero-icon-effect {
8771
8976
  display: block;
8772
8977
  width: 48px;
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M3.41382 0.991348C3.8204 1.02608 4.73175 1.00009 5.1687 1.00014H8.70679L20.2244 1.00209L20.2205 22.9904L9.71069 22.9757H5.87476C5.06579 22.9757 4.22438 22.9637 3.4187 22.9913C3.38439 22.0528 3.40898 20.9887 3.40894 20.0402V14.632L3.41382 0.991348ZM7.29272 4.87807C7.28438 6.53493 7.27638 8.21526 7.29272 9.87123L7.29663 19.0988C8.53026 19.1177 9.7903 19.1055 11.0261 19.1056L16.3337 19.0997L16.3347 14.004C16.3345 12.4565 16.3505 10.8828 16.3337 9.33803C16.3388 7.86364 16.3492 6.34738 16.3337 4.87416L7.29272 4.87807Z" fill="black"/>
3
+ <rect opacity="0.3" x="7.28322" y="10.0502" width="9.05882" height="9.05882" fill="black"/>
4
+ </svg>