@tutti-os/agent-gui 0.0.46 → 0.0.47

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 (60) 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 +4 -3
  4. package/dist/agent-conversation/index.js +8 -8
  5. package/dist/agent-message-center/index.d.ts +1 -1
  6. package/dist/agent-message-center/index.js +9 -9
  7. package/dist/{agentConversationVM-1QgRwvwZ.d.ts → agentConversationVM-BTMtRteS.d.ts} +14 -0
  8. package/dist/{AgentMessageMarkdown-Cts0dAIm.d.ts → agentGuiNodeTypes-B5Y6yDKy.d.ts} +43 -9
  9. package/dist/app/renderer/agentactivity.css +92 -9
  10. package/dist/{chunk-FRG36S6N.js → chunk-2FOBSURO.js} +5 -5
  11. package/dist/chunk-2FOBSURO.js.map +1 -0
  12. package/dist/{chunk-AMNXH4DJ.js → chunk-2RYZ4EBF.js} +2 -2
  13. package/dist/{chunk-EIC7XS3C.js → chunk-5QTC2L52.js} +2 -2
  14. package/dist/{chunk-ZJ7OSY4T.js → chunk-7NCWSH7U.js} +9 -9
  15. package/dist/{chunk-ZJ7OSY4T.js.map → chunk-7NCWSH7U.js.map} +1 -1
  16. package/dist/{chunk-62QOR3TC.js → chunk-HCS3HUUX.js} +5 -5
  17. package/dist/{chunk-OL54R6OL.js → chunk-J3SJZMI5.js} +2 -2
  18. package/dist/{chunk-VFQR7AZI.js → chunk-KACBTC7Y.js} +25 -3
  19. package/dist/chunk-KACBTC7Y.js.map +1 -0
  20. package/dist/{chunk-FJG2EH4V.js → chunk-KUCWRSXU.js} +2 -2
  21. package/dist/{chunk-D6IYEVDT.js → chunk-MCH35MAX.js} +2 -2
  22. package/dist/{chunk-NZ2BGOJU.js → chunk-Q4X6Q4E6.js} +2 -2
  23. package/dist/{chunk-EU7RWKHE.js → chunk-R6GOICRO.js} +5 -5
  24. package/dist/chunk-SD56WDSC.js +359 -0
  25. package/dist/chunk-SD56WDSC.js.map +1 -0
  26. package/dist/{chunk-TXXWUG2J.js → chunk-VE6JY2TH.js} +2 -1
  27. package/dist/{chunk-TXXWUG2J.js.map → chunk-VE6JY2TH.js.map} +1 -1
  28. package/dist/{chunk-QT45WUPQ.js → chunk-XJXSR5XI.js} +244 -21
  29. package/dist/chunk-XJXSR5XI.js.map +1 -0
  30. package/dist/{chunk-BAQTM6VS.js → chunk-ZAF4IVUT.js} +848 -102
  31. package/dist/chunk-ZAF4IVUT.js.map +1 -0
  32. package/dist/context-mention-palette/index.d.ts +3 -3
  33. package/dist/context-mention-palette/index.js +9 -9
  34. package/dist/i18n/index.d.ts +24 -2
  35. package/dist/i18n/index.js +2 -2
  36. package/dist/index.d.ts +22 -6
  37. package/dist/index.js +847 -812
  38. package/dist/index.js.map +1 -1
  39. package/dist/plan-decision-ops.d.ts +1 -1
  40. package/dist/queued-prompt-runtime.d.ts +97 -0
  41. package/dist/queued-prompt-runtime.js +9 -0
  42. package/dist/queued-prompt-runtime.js.map +1 -0
  43. package/dist/workbench/contribution.js +3 -3
  44. package/dist/workbench/index.js +9 -9
  45. package/dist/workbench/launch.js +2 -2
  46. package/dist/workbench/sessionTitle.js +3 -3
  47. package/dist/workspace-agent-generated-files.js +3 -3
  48. package/package.json +21 -14
  49. package/dist/chunk-BAQTM6VS.js.map +0 -1
  50. package/dist/chunk-FRG36S6N.js.map +0 -1
  51. package/dist/chunk-QT45WUPQ.js.map +0 -1
  52. package/dist/chunk-VFQR7AZI.js.map +0 -1
  53. /package/dist/{chunk-AMNXH4DJ.js.map → chunk-2RYZ4EBF.js.map} +0 -0
  54. /package/dist/{chunk-EIC7XS3C.js.map → chunk-5QTC2L52.js.map} +0 -0
  55. /package/dist/{chunk-62QOR3TC.js.map → chunk-HCS3HUUX.js.map} +0 -0
  56. /package/dist/{chunk-OL54R6OL.js.map → chunk-J3SJZMI5.js.map} +0 -0
  57. /package/dist/{chunk-FJG2EH4V.js.map → chunk-KUCWRSXU.js.map} +0 -0
  58. /package/dist/{chunk-D6IYEVDT.js.map → chunk-MCH35MAX.js.map} +0 -0
  59. /package/dist/{chunk-NZ2BGOJU.js.map → chunk-Q4X6Q4E6.js.map} +0 -0
  60. /package/dist/{chunk-EU7RWKHE.js.map → chunk-R6GOICRO.js.map} +0 -0
@@ -55,7 +55,7 @@ interface AgentMentionWorkspaceAppItem {
55
55
  name: string;
56
56
  description?: string;
57
57
  iconUrl?: string;
58
- /** 应用是否能够提供产物文件(reference),决定 @ 面板行末尾是否展示「查看产物文件」入口。 */
58
+ /** 应用是否能够提供产物文件(reference),决定 @ 面板行末尾是否展示「查看产物」入口。 */
59
59
  referencesListSupported?: boolean;
60
60
  }
61
61
  interface AgentMentionWorkspaceReferenceItem {
@@ -0,0 +1,7 @@
1
+ interface AgentMessageMarkdownWorkspaceAppIcon {
2
+ appId: string;
3
+ iconUrl: string | null;
4
+ workspaceId?: string | null;
5
+ }
6
+
7
+ export type { AgentMessageMarkdownWorkspaceAppIcon as A };
@@ -1,9 +1,10 @@
1
1
  import * as react from 'react';
2
2
  import { ReactNode, JSX } from 'react';
3
3
  import { W as WorkspaceLinkAction } from '../workspaceLinkActions-C6POH38D.js';
4
- import { a as AgentGUIProviderSkillOption, f as AgentMessageMarkdownWorkspaceAppIcon } from '../AgentMessageMarkdown-Cts0dAIm.js';
5
- import { c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-1QgRwvwZ.js';
6
- export { B as BuildWorkspaceAgentSessionDetailInput, d as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-1QgRwvwZ.js';
4
+ import { A as AgentMessageMarkdownWorkspaceAppIcon } from '../AgentMessageMarkdown-DeYPURtF.js';
5
+ import { c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BTMtRteS.js';
6
+ export { B as BuildWorkspaceAgentSessionDetailInput, d as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BTMtRteS.js';
7
+ import { a as AgentGUIProviderSkillOption } from '../agentGuiNodeTypes-B5Y6yDKy.js';
7
8
  export { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, q as WorkspaceAgentActivityTimelineItem } from '../workspaceAgentActivityListViewModel-DLnMBMoh.js';
8
9
  import '@tutti-os/workspace-issue-manager/core';
9
10
  import '@tutti-os/agent-activity-core';
@@ -6,18 +6,18 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-BAQTM6VS.js";
10
- import "../chunk-QT45WUPQ.js";
11
- import "../chunk-FRG36S6N.js";
9
+ } from "../chunk-ZAF4IVUT.js";
10
+ import "../chunk-XJXSR5XI.js";
11
+ import "../chunk-2FOBSURO.js";
12
12
  import "../chunk-Y35GDLP2.js";
13
- import "../chunk-TXXWUG2J.js";
13
+ import "../chunk-LUGELG5V.js";
14
+ import "../chunk-VE6JY2TH.js";
14
15
  import "../chunk-TYGL25EL.js";
16
+ import "../chunk-PJP5BUU6.js";
15
17
  import {
16
18
  translate
17
- } from "../chunk-EIC7XS3C.js";
18
- import "../chunk-VFQR7AZI.js";
19
- import "../chunk-LUGELG5V.js";
20
- import "../chunk-PJP5BUU6.js";
19
+ } from "../chunk-5QTC2L52.js";
20
+ import "../chunk-KACBTC7Y.js";
21
21
 
22
22
  // shared/WorkspaceAgentSessionDetail.tsx
23
23
  import { useMemo } from "react";
@@ -4,7 +4,7 @@ import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
4
  import { useTranslation, AgentGuiI18nLocale, TranslateFn } from '../i18n/index.js';
5
5
  import { W as WorkspaceLinkAction } from '../workspaceLinkActions-C6POH38D.js';
6
6
  import { AgentActivityNeedsAttentionItem, AgentActivitySnapshot } from '@tutti-os/agent-activity-core';
7
- import { b as AgentConversationPromptVM } from '../agentConversationVM-1QgRwvwZ.js';
7
+ import { b as AgentConversationPromptVM } from '../agentConversationVM-BTMtRteS.js';
8
8
  import { o as WorkspaceAgentActivityStatus } from '../workspaceAgentActivityListViewModel-DLnMBMoh.js';
9
9
  export { PLAN_IMPLEMENTATION_ACTION_IMPLEMENT, PLAN_IMPLEMENTATION_PROMPT } from '../plan-decision-ops.js';
10
10
  import '@tutti-os/workspace-issue-manager/core';
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  formatAgentGuiConversationPlainTitle
3
- } from "../chunk-OL54R6OL.js";
3
+ } from "../chunk-J3SJZMI5.js";
4
4
  import {
5
5
  AgentInteractivePromptSurface,
6
6
  approvalOptionDisplayLabel,
7
7
  getPromptToolDetails,
8
8
  isPromptRequestIdTitle
9
- } from "../chunk-62QOR3TC.js";
9
+ } from "../chunk-HCS3HUUX.js";
10
10
  import {
11
11
  PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
12
12
  PLAN_IMPLEMENTATION_PROMPT,
@@ -15,35 +15,35 @@ import {
15
15
  } from "../chunk-MKHDRIGN.js";
16
16
  import {
17
17
  formatAgentSessionMentionText
18
- } from "../chunk-FJG2EH4V.js";
18
+ } from "../chunk-KUCWRSXU.js";
19
19
  import {
20
20
  AgentMessageMarkdown,
21
21
  CustomScrollArea,
22
22
  cn,
23
23
  extractAgentMcpToolTarget,
24
24
  normalizeAskUserQuestions
25
- } from "../chunk-QT45WUPQ.js";
25
+ } from "../chunk-XJXSR5XI.js";
26
26
  import {
27
27
  managedAgentRoundedIconUrl,
28
28
  userAvatarPlaceholderUrl,
29
29
  workspaceAgentActivityStatusLabel
30
- } from "../chunk-NZ2BGOJU.js";
30
+ } from "../chunk-Q4X6Q4E6.js";
31
31
  import {
32
32
  resolveWorkspaceAgentSessionSortTimeUnixMs
33
33
  } from "../chunk-IBIMGLCD.js";
34
34
  import "../chunk-MTFSQWZ6.js";
35
- import "../chunk-TXXWUG2J.js";
35
+ import "../chunk-VE6JY2TH.js";
36
36
  import {
37
37
  workspaceAgentProviderLabel
38
38
  } from "../chunk-TYGL25EL.js";
39
+ import "../chunk-PJP5BUU6.js";
39
40
  import "../chunk-GCBDIQDX.js";
40
41
  import {
41
42
  AgentGuiI18nProvider,
42
43
  getActiveUiLanguage,
43
44
  useTranslation
44
- } from "../chunk-EIC7XS3C.js";
45
- import "../chunk-VFQR7AZI.js";
46
- import "../chunk-PJP5BUU6.js";
45
+ } from "../chunk-5QTC2L52.js";
46
+ import "../chunk-KACBTC7Y.js";
47
47
 
48
48
  // agent-message-center/WorkspaceAgentMessageCenterPanel.tsx
49
49
  import {
@@ -305,11 +305,25 @@ interface AgentTurnSummaryFileVM {
305
305
  content?: string | null;
306
306
  occurredAtUnixMs: number | null;
307
307
  }
308
+ interface AgentTurnSummaryPatchChangeVM {
309
+ path: string;
310
+ changeType: "modified" | "created" | "deleted";
311
+ unifiedDiff?: string | null;
312
+ oldString?: string | null;
313
+ newString?: string | null;
314
+ content?: string | null;
315
+ }
316
+ interface AgentTurnSummaryPatchBatchVM {
317
+ cwd: string | null;
318
+ toolCallId: string;
319
+ changes: AgentTurnSummaryPatchChangeVM[];
320
+ }
308
321
  interface AgentTurnSummaryRowVM {
309
322
  kind: "turn-summary";
310
323
  id: string;
311
324
  turnId: string;
312
325
  files: AgentTurnSummaryFileVM[];
326
+ patchBatches?: AgentTurnSummaryPatchBatchVM[];
313
327
  fileCount: number;
314
328
  modifiedCount: number;
315
329
  createdCount: number;
@@ -1,7 +1,7 @@
1
1
  import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
2
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
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';
4
+ import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-BTMtRteS.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 { AgentGUINodeViewModel as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUIProviderSkillOption as a, AgentGUIQueuedPromptVM as b, AgentHostApi as c, AgentHostApplyWorkspaceGitPatchInput as d, AgentHostInputApi as e, AgentHostRuntimeApi as f, AgentHostSelectFilesInput as g, AgentProbeProvider as h, AgentProbeSnapshot as i, AgentProviderProbeListInput as j, AgentProviderProbeListResult as k, AgentUsageQuota as l, AgentUsageSnapshot as m, WriteWorkspaceAgentReadStateInput as n };
@@ -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: 4px;
123
+ height: 40px;
124
+ padding: 0 6px;
125
+ border-radius: 999px;
126
+ background: color-mix(in srgb, var(--background-panel) 78%, black 22%);
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,28 @@
140
166
  line-height: 20px;
141
167
  }
142
168
 
169
+ .tsh-zoom-dialog__zoom-controls button {
170
+ justify-content: center;
171
+ width: 30px;
172
+ height: 30px;
173
+ padding: 0;
174
+ }
175
+
176
+ .tsh-zoom-dialog__zoom-controls button:disabled {
177
+ cursor: default;
178
+ opacity: 0.45;
179
+ }
180
+
181
+ .tsh-zoom-dialog__zoom-controls span {
182
+ min-width: 44px;
183
+ padding: 0 4px;
184
+ text-align: center;
185
+ font-size: 12px;
186
+ line-height: 30px;
187
+ color: var(--text-secondary);
188
+ font-variant-numeric: tabular-nums;
189
+ }
190
+
143
191
  .tsh-zoom-dialog__icon-button,
144
192
  .tsh-zoom-dialog__image-actions button {
145
193
  justify-content: center;
@@ -160,6 +208,7 @@
160
208
 
161
209
  .tsh-zoom-dialog__icon-button:hover,
162
210
  .tsh-zoom-dialog__image-actions button:hover,
211
+ .tsh-zoom-dialog__zoom-controls button:not(:disabled):hover,
163
212
  .tsh-image-context-menu button:hover {
164
213
  background: color-mix(in srgb, var(--background-panel) 82%, white 12%);
165
214
  }
@@ -2191,6 +2240,8 @@ aside.workspace-agents-status-panel
2191
2240
  display: inline-flex;
2192
2241
  align-items: center;
2193
2242
  gap: 5px;
2243
+ font-size: 13px;
2244
+ line-height: 20px;
2194
2245
  white-space: nowrap;
2195
2246
  }
2196
2247
 
@@ -2199,6 +2250,7 @@ aside.workspace-agents-status-panel
2199
2250
  appearance: none;
2200
2251
  border: 0;
2201
2252
  font: inherit;
2253
+ font-size: 13px;
2202
2254
  cursor: pointer;
2203
2255
  }
2204
2256
 
@@ -3208,15 +3260,38 @@ aside.workspace-agents-status-panel
3208
3260
  }
3209
3261
 
3210
3262
  .agent-gui-conversation__message-group:has(
3211
- > .agent-gui-conversation__message-copy-button
3263
+ > .agent-gui-conversation__message-footer
3212
3264
  ) {
3213
3265
  margin-bottom: 26px;
3214
3266
  }
3215
3267
 
3216
- .agent-gui-conversation__message-copy-button {
3268
+ .agent-gui-conversation__message-footer {
3217
3269
  position: absolute;
3218
3270
  top: calc(100% + 4px);
3219
3271
  z-index: 1;
3272
+ display: flex;
3273
+ gap: 10px;
3274
+ align-items: center;
3275
+ opacity: 0;
3276
+ pointer-events: none;
3277
+ transform: translateY(-2px);
3278
+ transition:
3279
+ opacity 120ms ease,
3280
+ transform 120ms ease;
3281
+ }
3282
+
3283
+ .agent-gui-conversation__message-timestamp {
3284
+ font-size: 11px;
3285
+ line-height: 22px;
3286
+ color: var(
3287
+ --text-secondary,
3288
+ color-mix(in srgb, var(--text-primary) 60%, transparent)
3289
+ );
3290
+ white-space: nowrap;
3291
+ }
3292
+
3293
+ .agent-gui-conversation__message-copy-button {
3294
+ position: static;
3220
3295
  width: 22px;
3221
3296
  min-width: 22px;
3222
3297
  height: 22px;
@@ -3231,18 +3306,29 @@ aside.workspace-agents-status-panel
3231
3306
  }
3232
3307
 
3233
3308
  .agent-gui-conversation__message-group[data-agent-message-speaker="user"]
3234
- > .agent-gui-conversation__message-copy-button {
3309
+ > .agent-gui-conversation__message-footer {
3235
3310
  right: 0;
3236
3311
  }
3237
3312
 
3238
3313
  .agent-gui-conversation__message-group[data-agent-message-speaker="assistant"]
3239
- > .agent-gui-conversation__message-copy-button {
3314
+ > .agent-gui-conversation__message-footer {
3240
3315
  left: 0;
3241
3316
  }
3242
3317
 
3243
3318
  .agent-gui-conversation__message-group:hover
3319
+ > .agent-gui-conversation__message-footer,
3320
+ .agent-gui-conversation__message-group:focus-within
3321
+ > .agent-gui-conversation__message-footer {
3322
+ opacity: 1;
3323
+ pointer-events: auto;
3324
+ transform: translateY(0);
3325
+ }
3326
+
3327
+ .agent-gui-conversation__message-group:hover
3328
+ > .agent-gui-conversation__message-footer
3244
3329
  > .agent-gui-conversation__message-copy-button,
3245
3330
  .agent-gui-conversation__message-group:focus-within
3331
+ > .agent-gui-conversation__message-footer
3246
3332
  > .agent-gui-conversation__message-copy-button {
3247
3333
  opacity: 1;
3248
3334
  pointer-events: auto;
@@ -4190,8 +4276,7 @@ aside.workspace-agents-status-panel
4190
4276
 
4191
4277
  .agent-gui-workbench-header__agent-brand {
4192
4278
  display: inline-flex;
4193
- min-width: 0;
4194
- flex: 0 1 auto;
4279
+ flex: 0 0 auto;
4195
4280
  align-items: center;
4196
4281
  gap: 8px;
4197
4282
  }
@@ -4216,7 +4301,6 @@ aside.workspace-agents-status-panel
4216
4301
  white-space: nowrap;
4217
4302
  }
4218
4303
 
4219
- .agent-gui-workbench-header__agent-name,
4220
4304
  .agent-gui-workbench-header__title-text {
4221
4305
  min-width: 0;
4222
4306
  max-width: 100%;
@@ -4226,8 +4310,7 @@ aside.workspace-agents-status-panel
4226
4310
  }
4227
4311
 
4228
4312
  .agent-gui-workbench-header__agent-name {
4229
- flex: 0 1 auto;
4230
- max-width: 160px;
4313
+ flex: 0 0 auto;
4231
4314
  }
4232
4315
 
4233
4316
  .agent-gui-workbench-header__session-title {
@@ -1,11 +1,11 @@
1
- import {
2
- translate,
3
- useTranslation
4
- } from "./chunk-EIC7XS3C.js";
5
1
  import {
6
2
  resolveAgentMentionFileThumbnailUrl,
7
3
  resolveAgentMentionFileVisualKind
8
4
  } from "./chunk-LUGELG5V.js";
5
+ import {
6
+ translate,
7
+ useTranslation
8
+ } from "./chunk-5QTC2L52.js";
9
9
 
10
10
  // agent-gui/agentGuiNode/agentRichText/agentFileMentionExtension.ts
11
11
  import { mergeAttributes, Node } from "@tiptap/core";
@@ -1224,4 +1224,4 @@ export {
1224
1224
  mentionItemToAttrs,
1225
1225
  attrsToMentionItem
1226
1226
  };
1227
- //# sourceMappingURL=chunk-FRG36S6N.js.map
1227
+ //# sourceMappingURL=chunk-2FOBSURO.js.map