@tutti-os/agent-gui 0.0.46 → 0.0.48

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 (66) hide show
  1. package/dist/{AgentMentionSearchController-D5ks45fN.d.ts → AgentMentionSearchController-CExFPobz.d.ts} +1 -1
  2. package/dist/AgentMessageMarkdown-DeYPURtF.d.ts +7 -0
  3. package/dist/agent-conversation/index.d.ts +5 -4
  4. package/dist/agent-conversation/index.js +8 -8
  5. package/dist/agent-message-center/index.d.ts +2 -2
  6. package/dist/agent-message-center/index.js +36 -14
  7. package/dist/agent-message-center/index.js.map +1 -1
  8. package/dist/{agentConversationVM-1QgRwvwZ.d.ts → agentConversationVM-DSXrFL9v.d.ts} +19 -1
  9. package/dist/{AgentMessageMarkdown-Cts0dAIm.d.ts → agentGuiNodeTypes-Bp1G8pOj.d.ts} +45 -11
  10. package/dist/app/renderer/agentactivity.css +145 -12
  11. package/dist/{chunk-AMNXH4DJ.js → chunk-2RYZ4EBF.js} +2 -2
  12. package/dist/{chunk-QT45WUPQ.js → chunk-6YN7HQL5.js} +366 -52
  13. package/dist/chunk-6YN7HQL5.js.map +1 -0
  14. package/dist/{chunk-D6IYEVDT.js → chunk-7W3VWU5R.js} +10 -6
  15. package/dist/chunk-7W3VWU5R.js.map +1 -0
  16. package/dist/{chunk-NZ2BGOJU.js → chunk-EUOGIKT7.js} +2 -2
  17. package/dist/{chunk-BAQTM6VS.js → chunk-LWMC2YA3.js} +1260 -442
  18. package/dist/chunk-LWMC2YA3.js.map +1 -0
  19. package/dist/{chunk-EIC7XS3C.js → chunk-N6HRVMIS.js} +2 -2
  20. package/dist/{chunk-VFQR7AZI.js → chunk-NETHPCSA.js} +35 -5
  21. package/dist/chunk-NETHPCSA.js.map +1 -0
  22. package/dist/{chunk-OL54R6OL.js → chunk-OB43QOMC.js} +2 -2
  23. package/dist/{chunk-FRG36S6N.js → chunk-OYQZRLJQ.js} +5 -5
  24. package/dist/chunk-OYQZRLJQ.js.map +1 -0
  25. package/dist/{chunk-EU7RWKHE.js → chunk-R6GOICRO.js} +5 -5
  26. package/dist/{chunk-ZJ7OSY4T.js → chunk-RNIY43TA.js} +9 -9
  27. package/dist/{chunk-ZJ7OSY4T.js.map → chunk-RNIY43TA.js.map} +1 -1
  28. package/dist/chunk-SD56WDSC.js +359 -0
  29. package/dist/chunk-SD56WDSC.js.map +1 -0
  30. package/dist/{chunk-TXXWUG2J.js → chunk-U6JWW45G.js} +2 -1
  31. package/dist/chunk-U6JWW45G.js.map +1 -0
  32. package/dist/{chunk-62QOR3TC.js → chunk-VGDPBC6W.js} +37 -7
  33. package/dist/chunk-VGDPBC6W.js.map +1 -0
  34. package/dist/{chunk-FJG2EH4V.js → chunk-ZVKRNEOF.js} +2 -2
  35. package/dist/context-mention-palette/index.d.ts +3 -3
  36. package/dist/context-mention-palette/index.js +9 -9
  37. package/dist/i18n/index.d.ts +34 -4
  38. package/dist/i18n/index.js +2 -2
  39. package/dist/index.d.ts +308 -10
  40. package/dist/index.js +1023 -843
  41. package/dist/index.js.map +1 -1
  42. package/dist/plan-decision-ops.d.ts +2 -2
  43. package/dist/queued-prompt-runtime.d.ts +97 -0
  44. package/dist/queued-prompt-runtime.js +9 -0
  45. package/dist/queued-prompt-runtime.js.map +1 -0
  46. package/dist/workbench/contribution.js +3 -3
  47. package/dist/workbench/index.js +9 -9
  48. package/dist/workbench/launch.js +2 -2
  49. package/dist/workbench/sessionTitle.js +3 -3
  50. package/dist/workspace-agent-generated-files.d.ts +1 -1
  51. package/dist/workspace-agent-generated-files.js +3 -3
  52. package/dist/{workspaceAgentActivityListViewModel-DLnMBMoh.d.ts → workspaceAgentActivityListViewModel-B5viw5Da.d.ts} +1 -1
  53. package/package.json +21 -14
  54. package/dist/chunk-62QOR3TC.js.map +0 -1
  55. package/dist/chunk-BAQTM6VS.js.map +0 -1
  56. package/dist/chunk-D6IYEVDT.js.map +0 -1
  57. package/dist/chunk-FRG36S6N.js.map +0 -1
  58. package/dist/chunk-QT45WUPQ.js.map +0 -1
  59. package/dist/chunk-TXXWUG2J.js.map +0 -1
  60. package/dist/chunk-VFQR7AZI.js.map +0 -1
  61. /package/dist/{chunk-AMNXH4DJ.js.map → chunk-2RYZ4EBF.js.map} +0 -0
  62. /package/dist/{chunk-NZ2BGOJU.js.map → chunk-EUOGIKT7.js.map} +0 -0
  63. /package/dist/{chunk-EIC7XS3C.js.map → chunk-N6HRVMIS.js.map} +0 -0
  64. /package/dist/{chunk-OL54R6OL.js.map → chunk-OB43QOMC.js.map} +0 -0
  65. /package/dist/{chunk-EU7RWKHE.js.map → chunk-R6GOICRO.js.map} +0 -0
  66. /package/dist/{chunk-FJG2EH4V.js.map → chunk-ZVKRNEOF.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, T as ToolCallStatusKind, q as WorkspaceAgentActivityTimelineItem } from './workspaceAgentActivityListViewModel-DLnMBMoh.js';
1
+ import { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, T as ToolCallStatusKind, q as WorkspaceAgentActivityTimelineItem } from './workspaceAgentActivityListViewModel-B5viw5Da.js';
2
2
 
3
3
  interface WorkspaceAgentSessionDetailMessage {
4
4
  id: string;
@@ -214,6 +214,8 @@ interface AgentPlanModeItemVM {
214
214
  plan?: string | null;
215
215
  status: string | null;
216
216
  filePath?: string | null;
217
+ options?: AgentApprovalOptionVM[];
218
+ keepPlanningOptionId?: string;
217
219
  occurredAtUnixMs: number | null;
218
220
  }
219
221
 
@@ -305,11 +307,25 @@ interface AgentTurnSummaryFileVM {
305
307
  content?: string | null;
306
308
  occurredAtUnixMs: number | null;
307
309
  }
310
+ interface AgentTurnSummaryPatchChangeVM {
311
+ path: string;
312
+ changeType: "modified" | "created" | "deleted";
313
+ unifiedDiff?: string | null;
314
+ oldString?: string | null;
315
+ newString?: string | null;
316
+ content?: string | null;
317
+ }
318
+ interface AgentTurnSummaryPatchBatchVM {
319
+ cwd: string | null;
320
+ toolCallId: string;
321
+ changes: AgentTurnSummaryPatchChangeVM[];
322
+ }
308
323
  interface AgentTurnSummaryRowVM {
309
324
  kind: "turn-summary";
310
325
  id: string;
311
326
  turnId: string;
312
327
  files: AgentTurnSummaryFileVM[];
328
+ patchBatches?: AgentTurnSummaryPatchBatchVM[];
313
329
  fileCount: number;
314
330
  modifiedCount: number;
315
331
  createdCount: number;
@@ -327,6 +343,8 @@ type AgentConversationPromptVM = AgentApprovalItemVM | {
327
343
  kind: "exit-plan";
328
344
  requestId: string;
329
345
  title: string;
346
+ options: AgentApprovalOptionVM[];
347
+ keepPlanningOptionId?: string;
330
348
  } | {
331
349
  kind: "plan-implementation";
332
350
  requestId: string;
@@ -1,7 +1,7 @@
1
1
  import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
2
- import { e as AgentHostAgentSessionCommand, f as AgentHostAgentSessionComposerSettings, h as AgentHostAgentSessionReasoningEffort, i as AgentHostAgentSessionSpeed, g as AgentHostAgentSessionPermissionConfig, j as AgentHostAgentSessionState, a as AgentGUIProvider, A as AgentGUINodeData, b as AgentGUIProviderTarget, m as AgentPromptContentBlock } from './types-xMz0lJWt.js';
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-DLnMBMoh.js';
4
- import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-1QgRwvwZ.js';
2
+ import { e as AgentHostAgentSessionCommand, f as AgentHostAgentSessionComposerSettings, h as AgentHostAgentSessionReasoningEffort, i as AgentHostAgentSessionSpeed, g as AgentHostAgentSessionPermissionConfig, j as AgentHostAgentSessionState, a as AgentGUIProvider, m as AgentPromptContentBlock, A as AgentGUINodeData, b as AgentGUIProviderTarget } from './types-xMz0lJWt.js';
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-B5viw5Da.js';
4
+ import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-DSXrFL9v.js';
5
5
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
6
6
 
7
7
  declare const APP_ERROR_CODES: readonly ["common.invalid_input", "common.approved_path_required", "common.unavailable", "common.unexpected", "session.not_found", "control_surface.unauthorized", "workspace.select_directory_failed", "workspace.select_files_failed", "workspace.ensure_directory_failed", "workspace.import_files_failed", "workspace.read_file_failed", "workspace.write_file_failed", "workspace.export_file_failed", "workspace.copy_path_failed", "workspace.host_unsupported", "workspace.runtime_artifact_unavailable", "runtime.guest_agent_lane_unavailable", "workspace.room_full", "workspace.room_delete_forbidden", "workspace.room_delete_not_found", "filesystem.create_directory_failed", "filesystem.read_file_bytes_failed", "filesystem.read_file_text_failed", "filesystem.write_file_text_failed", "filesystem.copy_entry_failed", "filesystem.move_entry_failed", "filesystem.rename_entry_failed", "filesystem.delete_entry_failed", "filesystem.read_directory_failed", "filesystem.stat_failed", "terminal.spawn_failed", "terminal.write_failed", "terminal.resize_failed", "terminal.close_failed", "terminal.attach_failed", "terminal.detach_failed", "terminal.snapshot_failed", "agent.list_models_failed", "agent.launch_failed", "agent.read_last_message_failed", "agent.provider_session_not_found", "agent.resume_session_not_local", "agent.resume_session_resolve_failed", "agent.settings_require_new_session", "task.suggest_title_failed", "persistence.unavailable", "persistence.quota_exceeded", "persistence.payload_too_large", "persistence.io_failed", "persistence.invalid_state", "persistence.invalid_node_id", "update.get_state_failed", "update.configure_failed", "update.check_failed", "update.download_failed", "update.install_failed", "PACKAGE_DOWNLOAD_INTERRUPTED", "PACKAGE_DOWNLOAD_HTTP_STATUS", "PACKAGE_DOWNLOAD_INVALID", "PACKAGE_DOWNLOAD_DISK_ERROR"];
@@ -161,6 +161,11 @@ type AgentHostPersistenceApi = AgentHostRecord & {
161
161
  readWorkspaceAgentReadState: (input: ReadWorkspaceAgentReadStateInput) => AgentHostAsyncResult<WorkspaceAgentReadStateSnapshot>;
162
162
  writeWorkspaceAgentReadState: (input: WriteWorkspaceAgentReadStateInput) => AgentHostAsyncResult<PersistWriteResult>;
163
163
  };
164
+ type AgentHostToastApi = AgentHostRecord & {
165
+ error: (title: string, description?: string) => void;
166
+ info?: (title: string, description?: string) => void;
167
+ success?: (title: string, description?: string) => void;
168
+ };
164
169
  interface AgentHostSelectedFile {
165
170
  name?: string;
166
171
  path: string;
@@ -168,14 +173,47 @@ interface AgentHostSelectedFile {
168
173
  interface AgentHostSelectFilesInput {
169
174
  allowDirectories?: boolean;
170
175
  }
176
+ interface AgentHostApplyWorkspaceGitPatchInput {
177
+ allowBinary?: boolean;
178
+ atomic?: boolean;
179
+ cwd: string;
180
+ diff: string;
181
+ revert?: boolean;
182
+ target?: "unstaged" | "staged" | "staged-and-unstaged";
183
+ }
184
+ interface AgentHostApplyWorkspaceGitPatchResult {
185
+ status: "success" | "partial-success" | "error";
186
+ appliedPaths: string[];
187
+ skippedPaths: string[];
188
+ conflictedPaths: string[];
189
+ errorCode?: "not-git-repo" | string;
190
+ execOutput?: {
191
+ command: string;
192
+ stdout: string;
193
+ stderr: string;
194
+ };
195
+ }
196
+ interface AgentHostResolveWorkspaceGitPatchSupportInput {
197
+ cwd: string;
198
+ }
199
+ interface AgentHostResolveWorkspaceGitPatchSupportResult {
200
+ supported: boolean;
201
+ root?: string;
202
+ errorCode?: "not-git-repo" | string;
203
+ }
171
204
  type AgentHostWorkspaceApi = AgentHostRecord & {
205
+ applyGitPatch?: (input: AgentHostApplyWorkspaceGitPatchInput) => AgentHostAsyncResult<AgentHostApplyWorkspaceGitPatchResult>;
206
+ resolveGitPatchSupport?: (input: AgentHostResolveWorkspaceGitPatchSupportInput) => AgentHostAsyncResult<AgentHostResolveWorkspaceGitPatchSupportResult>;
172
207
  copyPath?: (input: {
173
208
  path: string;
174
209
  }) => AgentHostAsyncResult<void>;
175
210
  ensureDirectory: (input: {
176
211
  path: string;
177
212
  }) => AgentHostAsyncResult<void>;
178
- getPathForFile: (file: File) => string;
213
+ getReferenceForFile?: (file: File) => {
214
+ kind: "file" | "folder";
215
+ path: string;
216
+ };
179
217
  readFile: (input: {
180
218
  path: string;
181
219
  }) => AgentHostAsyncResult<ReadWorkspaceFileResult>;
@@ -202,6 +240,7 @@ interface AgentHostInputApi {
202
240
  onHostEvent?: (listener: (event: any) => void) => AgentHostUnsubscribe;
203
241
  persistence?: AgentHostPersistenceApi;
204
242
  runtime?: AgentHostEnvironmentApi;
243
+ toast?: AgentHostToastApi;
205
244
  userProjects?: AgentHostUserProjectsApi;
206
245
  workspace: AgentHostWorkspaceApi;
207
246
  workspaceAgentProbes?: AgentHostWorkspaceAgentProbesApi;
@@ -349,6 +388,7 @@ interface AgentHostRuntimeApi {
349
388
  onHostEvent?: (listener: (event: any) => void) => AgentHostUnsubscribe;
350
389
  persistence?: AgentHostPersistenceApi;
351
390
  runtime?: AgentHostEnvironmentApi;
391
+ toast?: AgentHostToastApi;
352
392
  userProjects?: AgentHostUserProjectsApi;
353
393
  workspace: AgentHostWorkspaceApi;
354
394
  workspaceAgentProbes?: AgentHostWorkspaceAgentProbesApi;
@@ -571,10 +611,4 @@ interface AgentGUINodeViewModel {
571
611
  inlineNotice: AgentGUIInlineNotice | null;
572
612
  }
573
613
 
574
- interface AgentMessageMarkdownWorkspaceAppIcon {
575
- appId: string;
576
- iconUrl: string | null;
577
- workspaceId?: string | null;
578
- }
579
-
580
- export type { AgentGUINodeViewModel as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUIProviderSkillOption as a, AgentHostApi as b, AgentHostInputApi as c, AgentHostRuntimeApi as d, AgentHostSelectFilesInput as e, AgentMessageMarkdownWorkspaceAppIcon as f, AgentProbeProvider as g, AgentProbeSnapshot as h, AgentProviderProbeListInput as i, AgentProviderProbeListResult as j, AgentUsageQuota as k, AgentUsageSnapshot as l, WriteWorkspaceAgentReadStateInput as m };
614
+ export type { AgentComposerDraft as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUIComposerSettingsVM as a, AgentGUINodeViewModel as b, AgentGUIProviderSkillOption as c, AgentGUIQueuedPromptVM as d, AgentHostApi as e, AgentHostApplyWorkspaceGitPatchInput as f, AgentHostInputApi as g, AgentHostRuntimeApi as h, AgentHostSelectFilesInput as i, AgentProbeProvider as j, AgentProbeSnapshot as k, AgentProviderProbeListInput as l, AgentProviderProbeListResult as m, AgentSessionCommand as n, AgentUsageQuota as o, AgentUsageSnapshot as p, WriteWorkspaceAgentReadStateInput as q };
@@ -112,6 +112,30 @@
112
112
  gap: 6px;
113
113
  }
114
114
 
115
+ .tsh-zoom-dialog__zoom-controls {
116
+ position: fixed;
117
+ top: max(20px, calc(var(--cove-titlebar-reserve, 0px) + 10px));
118
+ right: 168px;
119
+ z-index: 100301;
120
+ display: flex;
121
+ align-items: center;
122
+ gap: 2px;
123
+ height: 32px;
124
+ padding: 0 2px;
125
+ border-radius: 999px;
126
+ background: var(--background-fronted);
127
+ box-shadow:
128
+ 0 18px 40px color-mix(in srgb, black 26%, transparent),
129
+ 0 0 0 1px color-mix(in srgb, white 12%, transparent);
130
+ color: var(--text-primary);
131
+ -webkit-app-region: no-drag;
132
+ }
133
+
134
+ .tsh-zoom-dialog:not(:has(.tsh-zoom-dialog__image-actions))
135
+ .tsh-zoom-dialog__zoom-controls {
136
+ right: 72px;
137
+ }
138
+
115
139
  .tsh-image-context-menu {
116
140
  position: fixed;
117
141
  z-index: 100302;
@@ -126,6 +150,8 @@
126
150
  -webkit-app-region: no-drag;
127
151
  }
128
152
 
153
+ .tsh-zoom-dialog__image-actions button,
154
+ .tsh-zoom-dialog__zoom-controls button,
129
155
  .tsh-image-context-menu button {
130
156
  display: flex;
131
157
  align-items: center;
@@ -140,6 +166,29 @@
140
166
  line-height: 20px;
141
167
  }
142
168
 
169
+ .tsh-zoom-dialog__zoom-controls button {
170
+ justify-content: center;
171
+ width: 28px;
172
+ height: 28px;
173
+ padding: 0;
174
+ border-radius: 999px;
175
+ }
176
+
177
+ .tsh-zoom-dialog__zoom-controls button:disabled {
178
+ cursor: default;
179
+ opacity: 0.45;
180
+ }
181
+
182
+ .tsh-zoom-dialog__zoom-controls span {
183
+ min-width: 44px;
184
+ padding: 0 4px;
185
+ text-align: center;
186
+ font-size: 12px;
187
+ line-height: 28px;
188
+ color: var(--text-primary);
189
+ font-variant-numeric: tabular-nums;
190
+ }
191
+
143
192
  .tsh-zoom-dialog__icon-button,
144
193
  .tsh-zoom-dialog__image-actions button {
145
194
  justify-content: center;
@@ -164,6 +213,10 @@
164
213
  background: color-mix(in srgb, var(--background-panel) 82%, white 12%);
165
214
  }
166
215
 
216
+ .tsh-zoom-dialog__zoom-controls button:not(:disabled):hover {
217
+ background: color-mix(in srgb, var(--background-panel) 86%, black 8%);
218
+ }
219
+
167
220
  .workspace-agents-status-panel {
168
221
  --workspace-agents-status-panel-chrome-gap: 8px;
169
222
  --workspace-room-top-bar-safe-area: 52px;
@@ -1448,6 +1501,46 @@ aside.workspace-agents-status-panel
1448
1501
  color: var(--agent-turn-summary-path);
1449
1502
  }
1450
1503
 
1504
+ .agent-turn-summary-card__path-directory,
1505
+ .agent-turn-summary-card__path-file {
1506
+ min-width: 0;
1507
+ overflow: hidden;
1508
+ text-overflow: ellipsis;
1509
+ }
1510
+
1511
+ .agent-turn-summary-card__path-directory {
1512
+ flex: 0 1 auto;
1513
+ }
1514
+
1515
+ .agent-turn-summary-card__path-file {
1516
+ flex: 0 0 auto;
1517
+ max-width: 100%;
1518
+ }
1519
+
1520
+ .agent-path-tail-label {
1521
+ display: flex;
1522
+ min-width: 0;
1523
+ max-width: 100%;
1524
+ overflow: hidden;
1525
+ white-space: nowrap;
1526
+ }
1527
+
1528
+ .agent-path-tail-label__directory,
1529
+ .agent-path-tail-label__file {
1530
+ min-width: 0;
1531
+ overflow: hidden;
1532
+ text-overflow: ellipsis;
1533
+ }
1534
+
1535
+ .agent-path-tail-label__directory {
1536
+ flex: 0 1 auto;
1537
+ }
1538
+
1539
+ .agent-path-tail-label__file {
1540
+ flex: 0 0 auto;
1541
+ max-width: 100%;
1542
+ }
1543
+
1451
1544
  .workspace-agents-status-panel__detail-turn-summary
1452
1545
  .workspace-agents-status-panel__detail-tool-diff-added {
1453
1546
  color: var(--state-success);
@@ -2191,6 +2284,8 @@ aside.workspace-agents-status-panel
2191
2284
  display: inline-flex;
2192
2285
  align-items: center;
2193
2286
  gap: 5px;
2287
+ font-size: 13px;
2288
+ line-height: 20px;
2194
2289
  white-space: nowrap;
2195
2290
  }
2196
2291
 
@@ -2199,6 +2294,7 @@ aside.workspace-agents-status-panel
2199
2294
  appearance: none;
2200
2295
  border: 0;
2201
2296
  font: inherit;
2297
+ font-size: 13px;
2202
2298
  cursor: pointer;
2203
2299
  }
2204
2300
 
@@ -2580,7 +2676,7 @@ aside.workspace-agents-status-panel
2580
2676
  .agent-gui-chrome__card--danger {
2581
2677
  border-color: color-mix(
2582
2678
  in srgb,
2583
- var(--status-danger, var(--state-danger)) 16%,
2679
+ var(--status-danger, var(--state-danger)) 28%,
2584
2680
  transparent
2585
2681
  );
2586
2682
  border-bottom: 0;
@@ -2588,7 +2684,11 @@ aside.workspace-agents-status-panel
2588
2684
  border-top-right-radius: 8px;
2589
2685
  border-bottom-right-radius: 0;
2590
2686
  border-bottom-left-radius: 0;
2591
- background: var(--on-danger);
2687
+ background: color-mix(
2688
+ in srgb,
2689
+ var(--status-danger, var(--state-danger)) 10%,
2690
+ var(--background-fronted)
2691
+ );
2592
2692
  grid-template-columns: minmax(0, 1fr) auto;
2593
2693
  align-items: center;
2594
2694
  min-height: 36px;
@@ -3208,15 +3308,38 @@ aside.workspace-agents-status-panel
3208
3308
  }
3209
3309
 
3210
3310
  .agent-gui-conversation__message-group:has(
3211
- > .agent-gui-conversation__message-copy-button
3311
+ > .agent-gui-conversation__message-footer
3212
3312
  ) {
3213
3313
  margin-bottom: 26px;
3214
3314
  }
3215
3315
 
3216
- .agent-gui-conversation__message-copy-button {
3316
+ .agent-gui-conversation__message-footer {
3217
3317
  position: absolute;
3218
3318
  top: calc(100% + 4px);
3219
3319
  z-index: 1;
3320
+ display: flex;
3321
+ gap: 10px;
3322
+ align-items: center;
3323
+ opacity: 0;
3324
+ pointer-events: none;
3325
+ transform: translateY(-2px);
3326
+ transition:
3327
+ opacity 120ms ease,
3328
+ transform 120ms ease;
3329
+ }
3330
+
3331
+ .agent-gui-conversation__message-timestamp {
3332
+ font-size: 11px;
3333
+ line-height: 22px;
3334
+ color: var(
3335
+ --text-secondary,
3336
+ color-mix(in srgb, var(--text-primary) 60%, transparent)
3337
+ );
3338
+ white-space: nowrap;
3339
+ }
3340
+
3341
+ .agent-gui-conversation__message-copy-button {
3342
+ position: static;
3220
3343
  width: 22px;
3221
3344
  min-width: 22px;
3222
3345
  height: 22px;
@@ -3231,18 +3354,29 @@ aside.workspace-agents-status-panel
3231
3354
  }
3232
3355
 
3233
3356
  .agent-gui-conversation__message-group[data-agent-message-speaker="user"]
3234
- > .agent-gui-conversation__message-copy-button {
3357
+ > .agent-gui-conversation__message-footer {
3235
3358
  right: 0;
3236
3359
  }
3237
3360
 
3238
3361
  .agent-gui-conversation__message-group[data-agent-message-speaker="assistant"]
3239
- > .agent-gui-conversation__message-copy-button {
3362
+ > .agent-gui-conversation__message-footer {
3240
3363
  left: 0;
3241
3364
  }
3242
3365
 
3243
3366
  .agent-gui-conversation__message-group:hover
3367
+ > .agent-gui-conversation__message-footer,
3368
+ .agent-gui-conversation__message-group:focus-within
3369
+ > .agent-gui-conversation__message-footer {
3370
+ opacity: 1;
3371
+ pointer-events: auto;
3372
+ transform: translateY(0);
3373
+ }
3374
+
3375
+ .agent-gui-conversation__message-group:hover
3376
+ > .agent-gui-conversation__message-footer
3244
3377
  > .agent-gui-conversation__message-copy-button,
3245
3378
  .agent-gui-conversation__message-group:focus-within
3379
+ > .agent-gui-conversation__message-footer
3246
3380
  > .agent-gui-conversation__message-copy-button {
3247
3381
  opacity: 1;
3248
3382
  pointer-events: auto;
@@ -4190,8 +4324,7 @@ aside.workspace-agents-status-panel
4190
4324
 
4191
4325
  .agent-gui-workbench-header__agent-brand {
4192
4326
  display: inline-flex;
4193
- min-width: 0;
4194
- flex: 0 1 auto;
4327
+ flex: 0 0 auto;
4195
4328
  align-items: center;
4196
4329
  gap: 8px;
4197
4330
  }
@@ -4216,7 +4349,6 @@ aside.workspace-agents-status-panel
4216
4349
  white-space: nowrap;
4217
4350
  }
4218
4351
 
4219
- .agent-gui-workbench-header__agent-name,
4220
4352
  .agent-gui-workbench-header__title-text {
4221
4353
  min-width: 0;
4222
4354
  max-width: 100%;
@@ -4226,8 +4358,7 @@ aside.workspace-agents-status-panel
4226
4358
  }
4227
4359
 
4228
4360
  .agent-gui-workbench-header__agent-name {
4229
- flex: 0 1 auto;
4230
- max-width: 160px;
4361
+ flex: 0 0 auto;
4231
4362
  }
4232
4363
 
4233
4364
  .agent-gui-workbench-header__session-title {
@@ -5007,6 +5138,7 @@ button.agent-gui-node__conversation-section-toggle:hover
5007
5138
  gap: 6px;
5008
5139
  align-items: center;
5009
5140
  min-width: 0;
5141
+ margin-bottom: 12px;
5010
5142
  padding: 2px 6px 0 22px;
5011
5143
  }
5012
5144
 
@@ -5922,7 +6054,7 @@ button.agent-gui-node__conversation-section-toggle:hover
5922
6054
  margin-left:auto has no free space to absorb and the message text would butt
5923
6055
  directly against "Set up". Space the message and action explicitly. */
5924
6056
  column-gap: 6px;
5925
- pointer-events: auto;
6057
+ pointer-events: none;
5926
6058
  }
5927
6059
 
5928
6060
  .agent-gui-node__detail-header + .agent-gui-node__provider-setup-notice {
@@ -5939,6 +6071,7 @@ button.agent-gui-node__conversation-section-toggle:hover
5939
6071
  font: inherit;
5940
6072
  text-decoration: underline;
5941
6073
  cursor: pointer;
6074
+ pointer-events: auto;
5942
6075
  -webkit-app-region: no-drag;
5943
6076
  }
5944
6077
 
@@ -3,7 +3,7 @@ import {
3
3
  agentGuiWorkbenchProviderFromIdentifier,
4
4
  agentGuiWorkbenchTypeId,
5
5
  createAgentGuiWorkbenchLaunchDescriptor
6
- } from "./chunk-EU7RWKHE.js";
6
+ } from "./chunk-R6GOICRO.js";
7
7
  import {
8
8
  agentGuiWorkbenchProviderFromInstanceId,
9
9
  createAgentGuiWorkbenchNodeStateSource,
@@ -635,4 +635,4 @@ export {
635
635
  resolveAgentGuiWorkbenchDefaultLaunchFrame,
636
636
  resolveAgentGuiWorkbenchContributionCopy
637
637
  };
638
- //# sourceMappingURL=chunk-AMNXH4DJ.js.map
638
+ //# sourceMappingURL=chunk-2RYZ4EBF.js.map