@mseep/obsidian-agent-client 0.10.6

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 (146) hide show
  1. package/.claude/hooks/gh-setup.sh +49 -0
  2. package/.claude/settings.json +15 -0
  3. package/.claude/skills/release-notes/SKILL.md +331 -0
  4. package/.editorconfig +10 -0
  5. package/.github/FUNDING.yml +2 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.yml +90 -0
  7. package/.github/ISSUE_TEMPLATE/config.yml +11 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.yml +59 -0
  9. package/.github/copilot-instructions.md +45 -0
  10. package/.github/pull_request_template.md +32 -0
  11. package/.github/workflows/ci.yaml +25 -0
  12. package/.github/workflows/docs.yml +58 -0
  13. package/.github/workflows/relay_to_openclaw.yml +59 -0
  14. package/.github/workflows/release.yaml +45 -0
  15. package/.prettierignore +10 -0
  16. package/.prettierrc +13 -0
  17. package/.vscode/extensions.json +7 -0
  18. package/.vscode/settings.json +37 -0
  19. package/.zed/settings.json +42 -0
  20. package/AGENTS.md +330 -0
  21. package/ARCHITECTURE.md +390 -0
  22. package/CONTRIBUTING.md +216 -0
  23. package/LICENSE +202 -0
  24. package/NOTICE +2 -0
  25. package/README.ja.md +121 -0
  26. package/README.md +125 -0
  27. package/docs/.vitepress/config.mts +124 -0
  28. package/docs/.vitepress/theme/custom.css +111 -0
  29. package/docs/.vitepress/theme/index.ts +4 -0
  30. package/docs/agent-setup/claude-code.md +84 -0
  31. package/docs/agent-setup/codex.md +76 -0
  32. package/docs/agent-setup/custom-agents.md +67 -0
  33. package/docs/agent-setup/gemini-cli.md +99 -0
  34. package/docs/agent-setup/index.md +34 -0
  35. package/docs/announcements/gemini-cli-deprecation.md +73 -0
  36. package/docs/getting-started/index.md +78 -0
  37. package/docs/getting-started/quick-start.md +38 -0
  38. package/docs/help/faq.md +181 -0
  39. package/docs/help/troubleshooting.md +221 -0
  40. package/docs/index.md +63 -0
  41. package/docs/public/apple-touch-icon.png +0 -0
  42. package/docs/public/demo.mp4 +0 -0
  43. package/docs/public/favicon-16x16.png +0 -0
  44. package/docs/public/favicon-32x32.png +0 -0
  45. package/docs/public/favicon.ico +0 -0
  46. package/docs/public/images/editing.webp +0 -0
  47. package/docs/public/images/export.webp +0 -0
  48. package/docs/public/images/floating-chat-button.webp +0 -0
  49. package/docs/public/images/floating-chat-instance-menu.webp +0 -0
  50. package/docs/public/images/floating-chat-view.webp +0 -0
  51. package/docs/public/images/mode-selection.webp +0 -0
  52. package/docs/public/images/model-selection.webp +0 -0
  53. package/docs/public/images/multi-session.webp +0 -0
  54. package/docs/public/images/remove-image.webp +0 -0
  55. package/docs/public/images/ribbon-icon.webp +0 -0
  56. package/docs/public/images/selection-context.gif +0 -0
  57. package/docs/public/images/sending-images.webp +0 -0
  58. package/docs/public/images/sending-messages.webp +0 -0
  59. package/docs/public/images/session-history-button.webp +0 -0
  60. package/docs/public/images/slash-commands-1.webp +0 -0
  61. package/docs/public/images/slash-commands-2.webp +0 -0
  62. package/docs/public/images/switch-agent.webp +0 -0
  63. package/docs/public/images/switch-default-agent.webp +0 -0
  64. package/docs/public/images/temporary-disable.gif +0 -0
  65. package/docs/reference/acp-support.md +110 -0
  66. package/docs/usage/chat-export.md +80 -0
  67. package/docs/usage/commands.md +51 -0
  68. package/docs/usage/context-files.md +57 -0
  69. package/docs/usage/editing.md +69 -0
  70. package/docs/usage/floating-chat.md +84 -0
  71. package/docs/usage/index.md +97 -0
  72. package/docs/usage/mcp-tools.md +33 -0
  73. package/docs/usage/mentions.md +70 -0
  74. package/docs/usage/mode-selection.md +28 -0
  75. package/docs/usage/model-selection.md +32 -0
  76. package/docs/usage/multi-session.md +68 -0
  77. package/docs/usage/sending-images.md +64 -0
  78. package/docs/usage/session-history.md +91 -0
  79. package/docs/usage/slash-commands.md +44 -0
  80. package/esbuild.config.mjs +49 -0
  81. package/eslint.config.mjs +25 -0
  82. package/main.js +228 -0
  83. package/manifest.json +11 -0
  84. package/package.json +52 -0
  85. package/src/acp/acp-client.ts +921 -0
  86. package/src/acp/acp-handler.ts +252 -0
  87. package/src/acp/permission-handler.ts +282 -0
  88. package/src/acp/terminal-handler.ts +264 -0
  89. package/src/acp/type-converter.ts +272 -0
  90. package/src/hooks/useAgent.ts +250 -0
  91. package/src/hooks/useAgentMessages.ts +470 -0
  92. package/src/hooks/useAgentSession.ts +544 -0
  93. package/src/hooks/useChatActions.ts +400 -0
  94. package/src/hooks/useHistoryModal.ts +219 -0
  95. package/src/hooks/useSessionHistory.ts +863 -0
  96. package/src/hooks/useSettings.ts +19 -0
  97. package/src/hooks/useSuggestions.ts +342 -0
  98. package/src/main.ts +9 -0
  99. package/src/plugin.ts +1126 -0
  100. package/src/services/chat-exporter.ts +552 -0
  101. package/src/services/message-sender.ts +755 -0
  102. package/src/services/message-state.ts +375 -0
  103. package/src/services/session-helpers.ts +211 -0
  104. package/src/services/session-state.ts +130 -0
  105. package/src/services/session-storage.ts +267 -0
  106. package/src/services/settings-normalizer.ts +255 -0
  107. package/src/services/settings-service.ts +285 -0
  108. package/src/services/update-checker.ts +128 -0
  109. package/src/services/vault-service.ts +558 -0
  110. package/src/services/view-registry.ts +345 -0
  111. package/src/types/agent.ts +92 -0
  112. package/src/types/chat.ts +351 -0
  113. package/src/types/errors.ts +136 -0
  114. package/src/types/obsidian-internals.d.ts +14 -0
  115. package/src/types/session.ts +731 -0
  116. package/src/ui/ChangeDirectoryModal.ts +137 -0
  117. package/src/ui/ChatContext.ts +25 -0
  118. package/src/ui/ChatHeader.tsx +295 -0
  119. package/src/ui/ChatPanel.tsx +1162 -0
  120. package/src/ui/ChatView.tsx +348 -0
  121. package/src/ui/ErrorBanner.tsx +104 -0
  122. package/src/ui/FloatingButton.tsx +351 -0
  123. package/src/ui/FloatingChatView.tsx +531 -0
  124. package/src/ui/InputArea.tsx +1107 -0
  125. package/src/ui/InputToolbar.tsx +371 -0
  126. package/src/ui/MessageBubble.tsx +442 -0
  127. package/src/ui/MessageList.tsx +265 -0
  128. package/src/ui/PermissionBanner.tsx +61 -0
  129. package/src/ui/SessionHistoryModal.tsx +821 -0
  130. package/src/ui/SettingsTab.ts +1337 -0
  131. package/src/ui/SuggestionPopup.tsx +138 -0
  132. package/src/ui/TerminalBlock.tsx +107 -0
  133. package/src/ui/ToolCallBlock.tsx +456 -0
  134. package/src/ui/shared/AttachmentStrip.tsx +57 -0
  135. package/src/ui/shared/IconButton.tsx +55 -0
  136. package/src/ui/shared/MarkdownRenderer.tsx +103 -0
  137. package/src/ui/view-host.ts +56 -0
  138. package/src/utils/error-utils.ts +274 -0
  139. package/src/utils/logger.ts +44 -0
  140. package/src/utils/mention-parser.ts +129 -0
  141. package/src/utils/paths.ts +246 -0
  142. package/src/utils/platform.ts +425 -0
  143. package/styles.css +2322 -0
  144. package/tsconfig.json +18 -0
  145. package/version-bump.mjs +18 -0
  146. package/versions.json +3 -0
package/styles.css ADDED
@@ -0,0 +1,2322 @@
1
+ /*
2
+
3
+ This CSS file will be included with your plugin, and
4
+ available in the app when your plugin is enabled.
5
+
6
+ If your plugin does not need CSS, delete this file.
7
+
8
+ */
9
+
10
+ /* ===== Settings Tab Documentation Link ===== */
11
+ .agent-client-doc-link {
12
+ padding: 12px 16px;
13
+ margin-bottom: 16px;
14
+ background-color: var(--background-secondary);
15
+ border: 1px solid var(--background-modifier-border);
16
+ border-radius: 8px;
17
+ font-size: 14px;
18
+ color: var(--text-muted);
19
+ }
20
+
21
+ .agent-client-doc-link a {
22
+ color: var(--text-accent);
23
+ text-decoration: none;
24
+ }
25
+
26
+ .agent-client-doc-link a:hover {
27
+ text-decoration: underline;
28
+ }
29
+
30
+ /* ===== Settings Tab Custom Agent Block ===== */
31
+ .agent-client-custom-agent {
32
+ padding: 16px;
33
+ margin-bottom: 24px;
34
+ background-color: var(--background-secondary);
35
+ border: 1px solid var(--background-modifier-border);
36
+ border-radius: 8px;
37
+ }
38
+
39
+ /* ===== Loading Indicator ===== */
40
+ .agent-client-loading-indicator {
41
+ display: flex;
42
+ align-items: center;
43
+ padding: 16px;
44
+ margin: 4px 0;
45
+ }
46
+
47
+ .agent-client-loading-indicator.agent-client-hidden {
48
+ visibility: hidden;
49
+ }
50
+
51
+ .agent-client-loading-status {
52
+ color: var(--text-muted);
53
+ font-size: var(--font-ui-small);
54
+ font-style: italic;
55
+ margin-left: 8px;
56
+ white-space: nowrap;
57
+ overflow: hidden;
58
+ text-overflow: ellipsis;
59
+ min-width: 0;
60
+ }
61
+
62
+ /* ===== Scroll to Bottom Button ===== */
63
+ .agent-client-scroll-to-bottom {
64
+ position: sticky;
65
+ bottom: 4px;
66
+ left: 50%;
67
+ transform: translateX(-50%);
68
+ padding: 6px !important;
69
+ margin: 0 !important;
70
+ border: none !important;
71
+ border-radius: 50%;
72
+ background-color: var(--background-primary) !important;
73
+ color: var(--text-muted);
74
+ cursor: pointer;
75
+ display: flex;
76
+ align-items: center;
77
+ justify-content: center;
78
+ outline: none !important;
79
+ appearance: none;
80
+ box-shadow: none !important;
81
+ min-width: unset !important;
82
+ min-height: unset !important;
83
+ z-index: 10;
84
+ }
85
+
86
+ .agent-client-scroll-to-bottom svg {
87
+ color: var(--text-muted);
88
+ transition: color 0.2s ease;
89
+ }
90
+
91
+ .agent-client-scroll-to-bottom:hover {
92
+ background-color: var(--background-primary) !important;
93
+ }
94
+
95
+ .agent-client-scroll-to-bottom:hover svg {
96
+ color: var(--interactive-accent);
97
+ }
98
+
99
+ .agent-client-loading-dots {
100
+ display: grid;
101
+ grid-template-columns: repeat(3, 4px);
102
+ grid-template-rows: repeat(3, 5px);
103
+ gap: 3px;
104
+ width: 18px;
105
+ height: 21px;
106
+ will-change: transform;
107
+ }
108
+
109
+ .agent-client-loading-dot {
110
+ width: 4px;
111
+ height: 5px;
112
+ background-color: var(--background-modifier-border);
113
+ border-radius: 50%;
114
+ animation: dotPulse 1.2s ease-in-out infinite;
115
+ }
116
+
117
+ .agent-client-loading-dot:nth-child(1) {
118
+ animation-delay: 0s;
119
+ }
120
+
121
+ .agent-client-loading-dot:nth-child(2) {
122
+ animation-delay: 0.15s;
123
+ }
124
+
125
+ .agent-client-loading-dot:nth-child(3) {
126
+ animation-delay: 0.3s;
127
+ }
128
+
129
+ .agent-client-loading-dot:nth-child(4) {
130
+ animation-delay: 0.9s;
131
+ }
132
+
133
+ .agent-client-loading-dot:nth-child(5) {
134
+ animation-delay: 0s;
135
+ }
136
+
137
+ .agent-client-loading-dot:nth-child(6) {
138
+ animation-delay: 0.15s;
139
+ }
140
+
141
+ .agent-client-loading-dot:nth-child(7) {
142
+ animation-delay: 0.6s;
143
+ }
144
+
145
+ .agent-client-loading-dot:nth-child(8) {
146
+ animation-delay: 0.45s;
147
+ }
148
+
149
+ .agent-client-loading-dot:nth-child(9) {
150
+ animation-delay: 0.3s;
151
+ }
152
+
153
+ @keyframes dotPulse {
154
+ 0%,
155
+ 100% {
156
+ background-color: var(--background-modifier-border);
157
+ }
158
+ 25% {
159
+ background-color: var(--interactive-accent);
160
+ }
161
+ }
162
+
163
+ /* ===== Inline Lucide Icons (replace emojis) ===== */
164
+ .agent-client-message-tool-call-icon svg,
165
+ .agent-client-collapsible-thought-label-icon svg,
166
+ .agent-client-terminal-renderer-label-icon svg,
167
+ .agent-client-error-overlay-suggestion-icon svg,
168
+ .agent-client-message-plan-label-icon svg {
169
+ width: 14px;
170
+ height: 14px;
171
+ vertical-align: -2px;
172
+ margin-right: 4px;
173
+ color: var(--text-muted);
174
+ }
175
+
176
+ .agent-client-message-plan-entry-icon svg {
177
+ width: 12px;
178
+ height: 12px;
179
+ vertical-align: -2px;
180
+ }
181
+
182
+ /* ===== Message Content Components ===== */
183
+
184
+ /* Tool Call */
185
+ .agent-client-message-tool-call {
186
+ padding: 8px;
187
+ margin-bottom: 12px;
188
+ background-color: transparent;
189
+ border: 1px solid var(--background-modifier-border);
190
+ border-radius: 4px;
191
+ font-size: 0.85em;
192
+ user-select: text;
193
+ overflow-wrap: break-word;
194
+ word-wrap: break-word;
195
+ word-break: break-word;
196
+ max-width: 100%;
197
+ }
198
+
199
+ .agent-client-message-tool-call-title {
200
+ display: flex;
201
+ align-items: center;
202
+ gap: 4px;
203
+ font-weight: bold;
204
+ margin-bottom: 4px;
205
+ user-select: text;
206
+ white-space: nowrap;
207
+ }
208
+
209
+ .agent-client-message-tool-call-title-text {
210
+ flex: 1;
211
+ min-width: 0;
212
+ overflow: hidden;
213
+ text-overflow: ellipsis;
214
+ }
215
+
216
+ .agent-client-message-tool-call-status-icon {
217
+ flex-shrink: 0;
218
+ }
219
+
220
+ .agent-client-message-tool-call-status-icon svg {
221
+ width: 14px;
222
+ height: 14px;
223
+ color: var(--text-muted);
224
+ }
225
+
226
+ .agent-client-message-tool-call-status-icon.agent-client-status-failed svg {
227
+ color: var(--color-red);
228
+ }
229
+
230
+ .agent-client-message-tool-call-locations {
231
+ color: var(--text-muted);
232
+ user-select: text;
233
+ overflow-wrap: break-word;
234
+ word-wrap: break-word;
235
+ word-break: break-word;
236
+ }
237
+
238
+ .agent-client-message-tool-call-location {
239
+ display: block;
240
+ font-family: var(--font-monospace);
241
+ font-size: 0.9em;
242
+ }
243
+
244
+ .agent-client-message-tool-call-command {
245
+ color: var(--text-muted);
246
+ margin: 4px 0;
247
+ }
248
+
249
+ .agent-client-message-tool-call-command code {
250
+ font-family: var(--font-monospace);
251
+ font-size: 0.9em;
252
+ }
253
+
254
+ /* Plan */
255
+ .agent-client-message-plan {
256
+ padding: 8px;
257
+ margin: 4px 0;
258
+ border: 1px solid var(--background-modifier-border);
259
+ border-radius: 4px;
260
+ font-size: 12px;
261
+ user-select: text;
262
+ overflow-wrap: break-word;
263
+ word-wrap: break-word;
264
+ word-break: break-word;
265
+ max-width: 100%;
266
+ }
267
+
268
+ .agent-client-message-plan-title {
269
+ font-weight: bold;
270
+ margin-bottom: 4px;
271
+ user-select: text;
272
+ overflow-wrap: break-word;
273
+ word-wrap: break-word;
274
+ word-break: break-word;
275
+ }
276
+
277
+ .agent-client-message-plan-entry {
278
+ margin: 2px 0;
279
+ padding: 2px 4px;
280
+ border-left: 2px solid var(--text-muted);
281
+ user-select: text;
282
+ overflow-wrap: break-word;
283
+ word-wrap: break-word;
284
+ word-break: break-word;
285
+ }
286
+
287
+ .agent-client-message-plan-entry-icon.agent-client-status-completed {
288
+ user-select: text;
289
+ }
290
+
291
+ .agent-client-message-plan-entry-icon.agent-client-status-in_progress {
292
+ user-select: text;
293
+ }
294
+
295
+ .agent-client-message-plan-entry-icon.agent-client-status-pending {
296
+ user-select: text;
297
+ }
298
+
299
+ /* Plan entry status text styles (for emoji-off mode) */
300
+ .agent-client-message-plan-entry.agent-client-plan-status-completed {
301
+ text-decoration: line-through;
302
+ color: var(--text-muted);
303
+ }
304
+
305
+ .agent-client-message-plan-entry.agent-client-plan-status-in_progress {
306
+ font-weight: bold;
307
+ }
308
+
309
+ /* Permission Request */
310
+ .agent-client-message-permission-request {
311
+ display: flex;
312
+ flex-wrap: wrap;
313
+ gap: 8px;
314
+ justify-content: flex-end;
315
+ padding: 6px 0;
316
+ margin-top: 4px;
317
+ }
318
+
319
+ /* ===== Permission Request Buttons ===== */
320
+ .agent-client-permission-option {
321
+ padding: 8px 16px !important;
322
+ border: 1px solid var(--background-modifier-border) !important;
323
+ border-radius: 6px !important;
324
+ background-color: var(--background-primary) !important;
325
+ color: var(--text-normal) !important;
326
+ cursor: pointer;
327
+ font-size: 13px;
328
+ font-weight: 500;
329
+ transition: all 0.2s ease;
330
+ min-width: 80px;
331
+ text-align: center;
332
+ opacity: 1;
333
+ }
334
+
335
+ .agent-client-permission-option.agent-client-selected {
336
+ background-color: var(--interactive-accent) !important;
337
+ color: white !important;
338
+ font-weight: 600;
339
+ }
340
+
341
+ .agent-client-permission-option.agent-client-disabled {
342
+ background-color: var(--background-modifier-border) !important;
343
+ color: var(--text-muted) !important;
344
+ cursor: not-allowed !important;
345
+ }
346
+
347
+ .agent-client-permission-option.agent-client-disabled:not(
348
+ .agent-client-selected
349
+ ) {
350
+ opacity: 0.5;
351
+ }
352
+
353
+ /* Special kinds */
354
+ .agent-client-permission-option.agent-client-permission-kind-allow_always:not(
355
+ .agent-client-selected
356
+ ):not(.agent-client-disabled) {
357
+ background-color: var(--color-green) !important;
358
+ color: white !important;
359
+ border-color: var(--color-green) !important;
360
+ }
361
+
362
+ .agent-client-permission-option.agent-client-permission-kind-reject_once:not(
363
+ .agent-client-selected
364
+ ):not(.agent-client-disabled) {
365
+ background-color: var(--color-red) !important;
366
+ color: white !important;
367
+ border-color: var(--color-red) !important;
368
+ }
369
+
370
+ .agent-client-permission-option.agent-client-permission-kind-allow_once:not(
371
+ .agent-client-selected
372
+ ):not(.agent-client-disabled) {
373
+ background-color: var(--color-orange) !important;
374
+ color: white !important;
375
+ border-color: var(--color-orange) !important;
376
+ }
377
+
378
+ /* Normal option button hover (no kind specified) */
379
+ .agent-client-permission-option:not(
380
+ .agent-client-permission-kind-allow_always
381
+ ):not(.agent-client-permission-kind-reject_once):not(
382
+ .agent-client-permission-kind-allow_once
383
+ ):not(.agent-client-disabled):not(.agent-client-selected):hover {
384
+ background-color: var(--background-modifier-hover) !important;
385
+ }
386
+
387
+ /* ===== Chat View Components ===== */
388
+
389
+ /* Remove top padding on view-content so nav-header aligns with other sidebar panes */
390
+ .workspace-leaf-content[data-type="agent-client-chat-view"] > .view-content {
391
+ padding-top: 0;
392
+ padding-left: 0;
393
+ padding-right: 0;
394
+ overflow: hidden;
395
+ }
396
+
397
+ /* Main container */
398
+ .agent-client-chat-view-container {
399
+ --ac-chat-font-size: var(--font-text-size);
400
+ height: 100%;
401
+ display: flex;
402
+ flex-direction: column;
403
+ padding: 0;
404
+ }
405
+
406
+ /* Header — uses Obsidian's .nav-header + .nav-buttons-container pattern */
407
+ .agent-client-chat-view-header .nav-buttons-container {
408
+ display: flex;
409
+ align-items: center;
410
+ flex-wrap: nowrap;
411
+ }
412
+
413
+ .agent-client-chat-view-header-title {
414
+ flex: 1 1 0;
415
+ min-width: 0;
416
+ padding-left: var(--size-4-1);
417
+ color: var(--nav-item-color);
418
+ font-size: var(--font-ui-small);
419
+ overflow: hidden;
420
+ text-overflow: ellipsis;
421
+ white-space: nowrap;
422
+ }
423
+
424
+ .agent-client-chat-view-header-update {
425
+ flex: 0 1 auto;
426
+ padding: 2px 8px;
427
+ font-size: 11px;
428
+ color: var(--text-muted);
429
+ background-color: var(--background-modifier-hover);
430
+ border-radius: 4px;
431
+ font-weight: 500;
432
+ overflow: hidden;
433
+ text-overflow: ellipsis;
434
+ white-space: nowrap;
435
+ min-width: 0;
436
+ }
437
+
438
+ /* ===== Inline Header (Floating/CodeBlock) ===== */
439
+ .agent-client-inline-header {
440
+ display: flex;
441
+ align-items: center;
442
+ justify-content: space-between;
443
+ padding: 8px 12px;
444
+ border-bottom: none;
445
+ background-color: var(--background-primary);
446
+ flex-shrink: 0;
447
+ flex-wrap: nowrap;
448
+ min-height: 36px;
449
+ }
450
+
451
+ .agent-client-inline-header-main {
452
+ display: flex;
453
+ align-items: center;
454
+ gap: 8px;
455
+ }
456
+
457
+ .agent-client-inline-header-actions {
458
+ display: flex;
459
+ gap: 4px;
460
+ justify-content: flex-end;
461
+ flex-shrink: 0;
462
+ }
463
+
464
+ /* Messages container */
465
+ .agent-client-chat-view-messages {
466
+ flex: 1;
467
+ padding: 16px 8px;
468
+ overflow-y: auto;
469
+ overflow-x: hidden;
470
+ font-size: var(--ac-chat-font-size);
471
+ min-height: 0;
472
+ position: relative;
473
+ }
474
+
475
+ /* Virtual item spacing (replaces flex gap: 2px) */
476
+ .agent-client-virtual-item {
477
+ padding-bottom: 2px;
478
+ }
479
+
480
+ /* Allow horizontal scroll for wide tables within messages */
481
+ .agent-client-chat-view-messages table {
482
+ display: block;
483
+ overflow-x: auto;
484
+ max-width: 100%;
485
+ }
486
+
487
+ /* Error display */
488
+ .agent-client-chat-error-container {
489
+ display: flex;
490
+ flex-direction: column;
491
+ gap: 12px;
492
+ padding: 20px;
493
+ background-color: var(--background-secondary);
494
+ border-radius: 8px;
495
+ border: 1px solid var(--color-red);
496
+ max-width: 100%;
497
+ overflow: hidden;
498
+ }
499
+
500
+ .agent-client-chat-error-title {
501
+ margin: 0 0 8px 0 !important;
502
+ color: var(--color-red) !important;
503
+ }
504
+
505
+ .agent-client-chat-error-message {
506
+ margin: 0 !important;
507
+ color: var(--text-normal);
508
+ font-size: 14px;
509
+ line-height: 1.4;
510
+ word-wrap: break-word;
511
+ word-break: break-all;
512
+ overflow-wrap: anywhere;
513
+ }
514
+
515
+ .agent-client-chat-error-suggestion {
516
+ margin: 8px 0 0 0 !important;
517
+ color: var(--text-muted);
518
+ font-size: 13px;
519
+ font-style: italic;
520
+ line-height: 1.4;
521
+ word-wrap: break-word;
522
+ word-break: break-all;
523
+ overflow-wrap: anywhere;
524
+ }
525
+
526
+ .agent-client-chat-error-button {
527
+ padding: 8px 16px !important;
528
+ border: 1px solid var(--background-modifier-border) !important;
529
+ border-radius: 6px !important;
530
+ background-color: transparent !important;
531
+ color: var(--text-muted) !important;
532
+ cursor: pointer;
533
+ font-size: 14px;
534
+ }
535
+
536
+ /* ============================================================
537
+ Notification Overlay (displayed above input field)
538
+ Supports variants: --error (default), --info
539
+ ============================================================ */
540
+
541
+ .agent-client-error-overlay {
542
+ position: absolute;
543
+ bottom: 100%;
544
+ left: 8px;
545
+ right: 8px;
546
+ margin-bottom: 8px;
547
+ padding: 12px 16px;
548
+ background-color: var(--background-secondary);
549
+ border: 1px solid var(--color-red);
550
+ border-radius: 8px;
551
+ z-index: 10;
552
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
553
+ }
554
+
555
+ /* Variant border colors */
556
+ .agent-client-error-overlay--error {
557
+ border-color: var(--color-red);
558
+ }
559
+
560
+ .agent-client-error-overlay--info {
561
+ border-color: var(--background-modifier-border);
562
+ }
563
+
564
+ .agent-client-error-overlay-header {
565
+ display: flex;
566
+ justify-content: space-between;
567
+ align-items: center;
568
+ margin-bottom: 8px;
569
+ }
570
+
571
+ .agent-client-error-overlay-title {
572
+ margin: 0 !important;
573
+ color: var(--color-red) !important;
574
+ font-size: 14px;
575
+ font-weight: 600;
576
+ }
577
+
578
+ /* Variant title colors */
579
+ .agent-client-error-overlay--error .agent-client-error-overlay-title {
580
+ color: var(--color-red) !important;
581
+ }
582
+
583
+ .agent-client-error-overlay--info .agent-client-error-overlay-title {
584
+ color: var(--text-normal) !important;
585
+ }
586
+
587
+ .agent-client-error-overlay-close {
588
+ display: flex;
589
+ align-items: center;
590
+ justify-content: center;
591
+ width: 14px;
592
+ height: 14px;
593
+ background: none !important;
594
+ background-color: transparent !important;
595
+ border: none !important;
596
+ box-shadow: none !important;
597
+ color: var(--text-muted);
598
+ cursor: pointer;
599
+ padding: 0 !important;
600
+ margin: 0;
601
+ outline: none !important;
602
+ }
603
+
604
+ .agent-client-error-overlay-close svg {
605
+ width: 14px;
606
+ height: 14px;
607
+ color: inherit;
608
+ }
609
+
610
+ .agent-client-error-overlay-close:hover {
611
+ background: none !important;
612
+ box-shadow: none !important;
613
+ color: var(--interactive-accent);
614
+ }
615
+
616
+ .agent-client-error-overlay-close:active,
617
+ .agent-client-error-overlay-close:focus {
618
+ background: none !important;
619
+ box-shadow: none !important;
620
+ outline: none !important;
621
+ }
622
+
623
+ .agent-client-error-overlay-message {
624
+ margin: 0 !important;
625
+ color: var(--text-normal);
626
+ font-size: 13px;
627
+ line-height: 1.4;
628
+ white-space: pre-line;
629
+ word-wrap: break-word;
630
+ word-break: break-word;
631
+ }
632
+
633
+ .agent-client-error-overlay-suggestion {
634
+ margin: 8px 0 0 0 !important;
635
+ color: var(--text-muted);
636
+ font-size: 12px;
637
+ font-style: italic;
638
+ line-height: 1.4;
639
+ }
640
+
641
+ .agent-client-error-overlay-code {
642
+ display: block;
643
+ margin-top: 4px;
644
+ padding: 6px 8px;
645
+ background-color: var(--background-primary);
646
+ border-radius: 4px;
647
+ font-family: var(--font-monospace);
648
+ font-size: 12px;
649
+ font-style: normal;
650
+ line-height: 1.4;
651
+ color: var(--text-normal);
652
+ word-break: break-all;
653
+ user-select: all;
654
+ cursor: text;
655
+ }
656
+
657
+ .agent-client-error-overlay-link {
658
+ display: inline-block;
659
+ margin-top: 8px;
660
+ font-size: 12px;
661
+ color: var(--text-accent);
662
+ text-decoration: none;
663
+ }
664
+
665
+ .agent-client-error-overlay-link:hover {
666
+ text-decoration: underline;
667
+ }
668
+
669
+ /* Empty state */
670
+ .agent-client-chat-empty-state {
671
+ color: var(--text-muted);
672
+ text-align: center;
673
+ margin-top: 20px;
674
+ }
675
+
676
+ /* Input area */
677
+ .agent-client-chat-input-container {
678
+ flex-shrink: 0;
679
+ padding: 0 8px;
680
+ position: relative;
681
+ }
682
+
683
+ /* Input box - outer container with border and background */
684
+ .agent-client-chat-input-box {
685
+ display: flex;
686
+ flex-direction: column;
687
+ border: 1px solid var(--background-modifier-border);
688
+ border-radius: 8px;
689
+ background-color: var(--background-primary);
690
+ overflow: hidden;
691
+ transition: box-shadow 0.15s ease;
692
+ }
693
+
694
+ .agent-client-chat-input-box:focus-within {
695
+ box-shadow: 0 0 0 1.5px var(--background-modifier-border);
696
+ }
697
+
698
+ .agent-client-chat-input-box.agent-client-dragging-over {
699
+ background-color: var(--background-secondary);
700
+ }
701
+
702
+ /* Auto-mention inline display */
703
+ .agent-client-auto-mention-inline {
704
+ display: flex;
705
+ align-items: center;
706
+ justify-content: space-between;
707
+ gap: 4px;
708
+ padding: 6px 12px !important;
709
+ width: 100%;
710
+ cursor: pointer;
711
+ background: none !important;
712
+ background-color: transparent !important;
713
+ border: none !important;
714
+ outline: none !important;
715
+ appearance: none;
716
+ box-shadow: none !important;
717
+ text-align: left;
718
+ font: inherit;
719
+ color: inherit;
720
+ min-width: unset !important;
721
+ min-height: unset !important;
722
+ }
723
+
724
+ .agent-client-mention-badge {
725
+ background-color: transparent;
726
+ color: var(--interactive-accent-hover);
727
+ border-radius: 3px;
728
+ font-size: var(--font-text-size);
729
+ font-weight: 500;
730
+ line-height: var(--line-height-normal);
731
+ cursor: pointer;
732
+ user-select: none;
733
+ white-space: nowrap;
734
+ overflow: hidden;
735
+ text-overflow: ellipsis;
736
+ max-width: calc(100% - 24px);
737
+ }
738
+
739
+ .agent-client-mention-badge.agent-client-disabled {
740
+ color: var(--text-faint);
741
+ text-decoration: line-through;
742
+ }
743
+
744
+ .agent-client-auto-mention-toggle-icon {
745
+ color: var(--text-muted);
746
+ transition: color 0.2s;
747
+ width: 16px;
748
+ height: 16px;
749
+ display: flex;
750
+ align-items: center;
751
+ justify-content: center;
752
+ flex-shrink: 0;
753
+ }
754
+
755
+ .agent-client-auto-mention-toggle-icon svg {
756
+ width: 14px;
757
+ height: 14px;
758
+ color: inherit;
759
+ }
760
+
761
+ .agent-client-auto-mention-inline:hover .agent-client-auto-mention-toggle-icon {
762
+ color: var(--interactive-accent);
763
+ }
764
+
765
+ .agent-client-chat-input-textarea {
766
+ width: 100%;
767
+ padding: 12px;
768
+ border: none;
769
+ background-color: transparent;
770
+ color: var(--text-normal);
771
+ resize: none;
772
+ min-height: 80px;
773
+ max-height: 300px;
774
+ font-family: inherit;
775
+ font-size: var(--ac-chat-font-size);
776
+ line-height: var(--line-height-normal);
777
+ box-sizing: border-box;
778
+ outline: none;
779
+ overflow-y: auto;
780
+ scrollbar-width: none;
781
+ -ms-overflow-style: none;
782
+ }
783
+
784
+ .agent-client-chat-input-textarea::-webkit-scrollbar {
785
+ display: none;
786
+ }
787
+
788
+ .agent-client-chat-input-textarea:hover {
789
+ border: none !important;
790
+ background-color: transparent !important;
791
+ }
792
+
793
+ .agent-client-chat-input-textarea:focus {
794
+ border: none !important;
795
+ outline: none !important;
796
+ box-shadow: none !important;
797
+ }
798
+
799
+ /* Dynamic textarea height management */
800
+ .agent-client-chat-input-textarea.agent-client-textarea-auto-height {
801
+ height: auto;
802
+ }
803
+
804
+ .agent-client-chat-input-textarea.agent-client-textarea-expanded {
805
+ height: var(--textarea-height, auto);
806
+ }
807
+
808
+ /* Textarea wrapper for hint overlay */
809
+ .agent-client-textarea-wrapper {
810
+ position: relative;
811
+ flex: 1;
812
+ min-height: 80px;
813
+ }
814
+
815
+ /* Hint overlay for slash commands */
816
+ .agent-client-hint-overlay {
817
+ /* Positioning - exact overlay on textarea */
818
+ position: absolute;
819
+ top: 0;
820
+ left: 0;
821
+ right: 0;
822
+ bottom: 0;
823
+ pointer-events: none;
824
+ /* Match textarea properties exactly */
825
+ padding: 12px;
826
+ box-sizing: border-box;
827
+ font-family: inherit;
828
+ font-size: var(--ac-chat-font-size);
829
+ line-height: var(--line-height-normal);
830
+ /* Text wrapping */
831
+ white-space: pre-wrap;
832
+ word-wrap: break-word;
833
+ overflow: hidden;
834
+ }
835
+
836
+ .agent-client-hint-overlay .agent-client-invisible {
837
+ visibility: hidden;
838
+ }
839
+
840
+ .agent-client-hint-overlay .agent-client-hint-text {
841
+ color: var(--text-faint);
842
+ }
843
+
844
+ /* Input Actions Container */
845
+ .agent-client-chat-input-actions {
846
+ display: flex;
847
+ align-items: center;
848
+ justify-content: flex-end;
849
+ flex-wrap: nowrap;
850
+ gap: 8px;
851
+ padding: 4px 12px 8px 12px;
852
+ min-width: 0;
853
+ }
854
+
855
+ /* Mode Selector */
856
+ .agent-client-mode-selector {
857
+ display: inline-flex;
858
+ align-items: center;
859
+ padding: 0 4px;
860
+ border-radius: 4px;
861
+ cursor: pointer;
862
+ transition: background-color 0.1s ease;
863
+ height: 20px;
864
+ max-width: 120px;
865
+ min-width: 0;
866
+ flex-shrink: 1;
867
+ overflow: hidden;
868
+ }
869
+
870
+ .agent-client-mode-selector:hover {
871
+ background-color: var(--background-modifier-hover);
872
+ }
873
+
874
+ .agent-client-mode-selector-icon {
875
+ display: flex;
876
+ align-items: center;
877
+ pointer-events: none;
878
+ color: var(--text-faint);
879
+ margin-left: 2px;
880
+ order: 2;
881
+ }
882
+
883
+ .agent-client-mode-selector-icon svg {
884
+ width: 12px;
885
+ height: 12px;
886
+ }
887
+
888
+ .agent-client-mode-selector select.dropdown {
889
+ padding: 0 !important;
890
+ margin: 0 !important;
891
+ border: none !important;
892
+ border-radius: 0 !important;
893
+ background: none !important;
894
+ background-color: transparent !important;
895
+ background-image: none !important;
896
+ box-shadow: none !important;
897
+ color: var(--text-faint) !important;
898
+ font-size: 11px !important;
899
+ cursor: pointer !important;
900
+ outline: none !important;
901
+ appearance: none !important;
902
+ -webkit-appearance: none !important;
903
+ -moz-appearance: none !important;
904
+ order: 1;
905
+ max-width: 100px;
906
+ overflow: hidden;
907
+ text-overflow: ellipsis;
908
+ white-space: nowrap;
909
+ }
910
+
911
+ .agent-client-mode-selector select.dropdown:hover,
912
+ .agent-client-mode-selector select.dropdown:focus {
913
+ color: var(--text-faint) !important;
914
+ background-color: transparent !important;
915
+ box-shadow: none !important;
916
+ }
917
+
918
+ /* Model Selector (experimental) */
919
+ .agent-client-model-selector {
920
+ display: inline-flex;
921
+ align-items: center;
922
+ padding: 0 4px;
923
+ border-radius: 4px;
924
+ cursor: pointer;
925
+ transition: background-color 0.1s ease;
926
+ height: 20px;
927
+ max-width: 120px;
928
+ min-width: 0;
929
+ flex-shrink: 1;
930
+ overflow: hidden;
931
+ }
932
+
933
+ .agent-client-model-selector:hover {
934
+ background-color: var(--background-modifier-hover);
935
+ }
936
+
937
+ .agent-client-model-selector-icon {
938
+ display: flex;
939
+ align-items: center;
940
+ pointer-events: none;
941
+ color: var(--text-faint);
942
+ margin-left: 2px;
943
+ order: 2;
944
+ }
945
+
946
+ .agent-client-model-selector-icon svg {
947
+ width: 12px;
948
+ height: 12px;
949
+ }
950
+
951
+ .agent-client-model-selector select.dropdown {
952
+ padding: 0 !important;
953
+ margin: 0 !important;
954
+ border: none !important;
955
+ border-radius: 0 !important;
956
+ background: none !important;
957
+ background-color: transparent !important;
958
+ background-image: none !important;
959
+ box-shadow: none !important;
960
+ color: var(--text-faint) !important;
961
+ font-size: 11px !important;
962
+ cursor: pointer !important;
963
+ outline: none !important;
964
+ appearance: none !important;
965
+ -webkit-appearance: none !important;
966
+ -moz-appearance: none !important;
967
+ order: 1;
968
+ max-width: 100px;
969
+ overflow: hidden;
970
+ text-overflow: ellipsis;
971
+ white-space: nowrap;
972
+ }
973
+
974
+ .agent-client-model-selector select.dropdown:hover,
975
+ .agent-client-model-selector select.dropdown:focus {
976
+ color: var(--text-faint) !important;
977
+ background-color: transparent !important;
978
+ box-shadow: none !important;
979
+ }
980
+
981
+ /* Config option selector (configOptions API - supersedes mode/model selectors) */
982
+
983
+ .agent-client-config-options-container {
984
+ display: contents;
985
+ }
986
+
987
+ .agent-client-config-selector {
988
+ display: inline-flex;
989
+ align-items: center;
990
+ padding: 0 4px;
991
+ border-radius: 4px;
992
+ cursor: pointer;
993
+ transition: background-color 0.1s ease;
994
+ height: 20px;
995
+ max-width: 120px;
996
+ min-width: 0;
997
+ flex-shrink: 1;
998
+ overflow: hidden;
999
+ }
1000
+
1001
+ .agent-client-config-selector:hover {
1002
+ background-color: var(--background-modifier-hover);
1003
+ }
1004
+
1005
+ .agent-client-config-selector-icon {
1006
+ display: flex;
1007
+ align-items: center;
1008
+ pointer-events: none;
1009
+ color: var(--text-faint);
1010
+ margin-left: 2px;
1011
+ order: 2;
1012
+ }
1013
+
1014
+ .agent-client-config-selector-icon svg {
1015
+ width: 12px;
1016
+ height: 12px;
1017
+ }
1018
+
1019
+ .agent-client-config-selector select.dropdown {
1020
+ padding: 0 !important;
1021
+ margin: 0 !important;
1022
+ border: none !important;
1023
+ border-radius: 0 !important;
1024
+ background: none !important;
1025
+ background-color: transparent !important;
1026
+ background-image: none !important;
1027
+ box-shadow: none !important;
1028
+ color: var(--text-faint) !important;
1029
+ font-size: 11px !important;
1030
+ cursor: pointer !important;
1031
+ outline: none !important;
1032
+ appearance: none !important;
1033
+ -webkit-appearance: none !important;
1034
+ -moz-appearance: none !important;
1035
+ order: 1;
1036
+ max-width: 100px;
1037
+ overflow: hidden;
1038
+ text-overflow: ellipsis;
1039
+ white-space: nowrap;
1040
+ }
1041
+
1042
+ .agent-client-config-selector select.dropdown:hover,
1043
+ .agent-client-config-selector select.dropdown:focus {
1044
+ color: var(--text-faint) !important;
1045
+ background-color: transparent !important;
1046
+ box-shadow: none !important;
1047
+ }
1048
+
1049
+ /* Context Usage Indicator */
1050
+ .agent-client-usage-indicator {
1051
+ font-size: var(--font-smallest);
1052
+ margin-right: auto;
1053
+ flex-shrink: 0;
1054
+ cursor: default;
1055
+ user-select: none;
1056
+ white-space: nowrap;
1057
+ }
1058
+
1059
+ .agent-client-usage-normal {
1060
+ color: var(--text-faint);
1061
+ }
1062
+
1063
+ .agent-client-usage-caution {
1064
+ color: var(--color-yellow);
1065
+ }
1066
+
1067
+ .agent-client-usage-warning {
1068
+ color: var(--color-orange);
1069
+ }
1070
+
1071
+ .agent-client-usage-danger {
1072
+ color: var(--color-red);
1073
+ font-weight: var(--font-semibold);
1074
+ }
1075
+
1076
+ /* Send button */
1077
+ .agent-client-chat-send-button {
1078
+ width: 20px;
1079
+ height: 20px;
1080
+ padding: 0 !important;
1081
+ margin: 0 !important;
1082
+ border: none !important;
1083
+ border-radius: 0 !important;
1084
+ background-color: transparent !important;
1085
+ cursor: pointer;
1086
+ display: flex;
1087
+ align-items: center;
1088
+ justify-content: center;
1089
+ font-size: 16px;
1090
+ outline: none !important;
1091
+ appearance: none;
1092
+ box-shadow: none !important;
1093
+ transition: all 0.2s ease;
1094
+ }
1095
+
1096
+ .agent-client-chat-send-button.agent-client-disabled {
1097
+ cursor: not-allowed !important;
1098
+ }
1099
+
1100
+ /* Send button icon states */
1101
+ .agent-client-chat-send-button svg {
1102
+ transition: color 0.2s ease;
1103
+ }
1104
+
1105
+ .agent-client-chat-send-button svg.agent-client-icon-sending {
1106
+ color: var(--color-red);
1107
+ }
1108
+
1109
+ .agent-client-chat-send-button svg.agent-client-icon-active {
1110
+ color: var(--interactive-accent);
1111
+ }
1112
+
1113
+ .agent-client-chat-send-button svg.agent-client-icon-inactive {
1114
+ color: var(--text-muted);
1115
+ }
1116
+
1117
+ /* ===== Other Chat Components ===== */
1118
+
1119
+ /* Collapsible Thought */
1120
+ .agent-client-collapsible-thought {
1121
+ font-style: italic;
1122
+ color: var(--text-muted);
1123
+ background-color: transparent;
1124
+ font-size: 0.9em;
1125
+ cursor: pointer;
1126
+ overflow-wrap: break-word;
1127
+ word-wrap: break-word;
1128
+ word-break: break-word;
1129
+ max-width: 100%;
1130
+ margin-top: 8px;
1131
+ margin-bottom: 12px;
1132
+ }
1133
+
1134
+ .agent-client-collapsible-thought-header {
1135
+ display: flex;
1136
+ align-items: center;
1137
+ gap: 4px;
1138
+ }
1139
+
1140
+ .agent-client-collapsible-thought-icon {
1141
+ opacity: 0.7;
1142
+ margin-left: auto;
1143
+ }
1144
+
1145
+ .agent-client-collapsible-thought-icon svg {
1146
+ width: 14px;
1147
+ height: 14px;
1148
+ }
1149
+
1150
+ .agent-client-collapsible-thought-content {
1151
+ margin-top: 8px;
1152
+ padding-left: 16px;
1153
+ user-select: text;
1154
+ overflow-wrap: break-word;
1155
+ word-wrap: break-word;
1156
+ word-break: break-word;
1157
+ }
1158
+
1159
+ /* Mention Dropdown */
1160
+ .agent-client-mention-dropdown {
1161
+ position: absolute;
1162
+ bottom: 100%;
1163
+ left: 8px;
1164
+ right: 8px;
1165
+ max-height: 250px;
1166
+ background-color: var(--background-secondary);
1167
+ border: 2px solid var(--background-modifier-border);
1168
+ border-radius: 8px;
1169
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1170
+ overflow-y: auto;
1171
+ font-size: 14px;
1172
+ margin-bottom: 8px;
1173
+ z-index: 1000;
1174
+ }
1175
+
1176
+ .agent-client-mention-dropdown-item {
1177
+ padding: 4px 16px;
1178
+ cursor: pointer;
1179
+ background-color: transparent;
1180
+ user-select: none;
1181
+ transition: background-color 0.1s ease;
1182
+ }
1183
+
1184
+ .agent-client-mention-dropdown-item.agent-client-selected {
1185
+ background-color: var(--background-modifier-hover);
1186
+ }
1187
+
1188
+ .agent-client-mention-dropdown-item.agent-client-has-border {
1189
+ border-bottom: 1px solid var(--background-modifier-border);
1190
+ }
1191
+
1192
+ .agent-client-mention-dropdown-item-name {
1193
+ font-weight: 500;
1194
+ color: var(--text-normal);
1195
+ margin-bottom: 2px;
1196
+ }
1197
+
1198
+ .agent-client-mention-dropdown-item-path {
1199
+ font-size: 12px;
1200
+ color: var(--text-muted);
1201
+ opacity: 0.8;
1202
+ }
1203
+
1204
+ /* Terminal Renderer */
1205
+ .agent-client-terminal-renderer {
1206
+ padding: 8px;
1207
+ margin-top: 4px;
1208
+ background-color: var(--background-secondary);
1209
+ border: 1px solid var(--background-modifier-border);
1210
+ border-radius: 4px;
1211
+ font-size: 12px;
1212
+ font-family: var(--font-monospace);
1213
+ white-space: pre-wrap;
1214
+ word-break: break-word;
1215
+ max-height: 400px;
1216
+ overflow: auto;
1217
+ user-select: text;
1218
+ }
1219
+
1220
+ .agent-client-terminal-renderer-exit {
1221
+ margin-top: 8px;
1222
+ padding: 4px 8px;
1223
+ color: white;
1224
+ border-radius: 4px;
1225
+ font-size: 11px;
1226
+ font-family: var(--font-interface);
1227
+ user-select: text;
1228
+ }
1229
+
1230
+ .agent-client-terminal-renderer-exit.agent-client-success {
1231
+ background-color: var(--color-green);
1232
+ }
1233
+
1234
+ .agent-client-terminal-renderer-exit.agent-client-error {
1235
+ background-color: var(--color-red);
1236
+ }
1237
+
1238
+ /* Message Renderer */
1239
+ .agent-client-message-renderer {
1240
+ position: relative;
1241
+ padding: 0 16px;
1242
+ width: 100%;
1243
+ margin: 4px 0;
1244
+ /* Prevent long strings from overflowing */
1245
+ overflow-wrap: break-word;
1246
+ word-wrap: break-word;
1247
+ word-break: break-word;
1248
+ max-width: 100%;
1249
+ box-sizing: border-box;
1250
+ }
1251
+
1252
+ .agent-client-message-renderer.agent-client-message-user {
1253
+ width: auto;
1254
+ margin-left: 8px;
1255
+ margin-right: 8px;
1256
+ background-color: var(--background-primary);
1257
+ border: 1px solid var(--background-modifier-border);
1258
+ border-radius: 8px;
1259
+ }
1260
+
1261
+ .agent-client-message-renderer.agent-client-message-assistant {
1262
+ background-color: transparent;
1263
+ border: none;
1264
+ border-radius: 0;
1265
+ }
1266
+
1267
+ .agent-client-message-renderer.agent-client-message-assistant
1268
+ .agent-client-message-actions {
1269
+ bottom: -8px;
1270
+ }
1271
+
1272
+ .agent-client-message-actions {
1273
+ position: absolute;
1274
+ bottom: 4px;
1275
+ right: 8px;
1276
+ display: flex;
1277
+ gap: 2px;
1278
+ opacity: 0;
1279
+ pointer-events: none;
1280
+ transition: opacity 0.15s ease;
1281
+ }
1282
+
1283
+ .agent-client-message-renderer:hover .agent-client-message-actions {
1284
+ opacity: 1;
1285
+ pointer-events: auto;
1286
+ }
1287
+
1288
+ .agent-client-message-action-button {
1289
+ color: var(--text-muted);
1290
+ }
1291
+
1292
+ .agent-client-message-action-button:hover {
1293
+ background-color: transparent;
1294
+ }
1295
+
1296
+ .agent-client-message-action-button svg {
1297
+ width: 14px;
1298
+ height: 14px;
1299
+ }
1300
+
1301
+ /* Text with Mentions */
1302
+ .agent-client-text-with-mentions {
1303
+ user-select: text;
1304
+ white-space: pre-wrap;
1305
+ word-wrap: break-word;
1306
+ word-break: break-word;
1307
+ overflow-wrap: break-word;
1308
+ margin: 1em 0;
1309
+ font-size: var(--ac-chat-font-size);
1310
+ max-width: 100%;
1311
+ }
1312
+
1313
+ .agent-client-text-mention {
1314
+ background-color: transparent;
1315
+ color: var(--interactive-accent-hover);
1316
+ border-radius: 3px;
1317
+ font-size: 0.9em;
1318
+ font-weight: 500;
1319
+ cursor: pointer;
1320
+ }
1321
+
1322
+ /* Markdown Text Renderer */
1323
+ .agent-client-markdown-text-renderer {
1324
+ user-select: text;
1325
+ font-size: var(--ac-chat-font-size);
1326
+ overflow-wrap: break-word;
1327
+ word-wrap: break-word;
1328
+ word-break: break-word;
1329
+ max-width: 100%;
1330
+ }
1331
+
1332
+ .agent-client-markdown-text-renderer.markdown-rendered pre,
1333
+ .agent-client-markdown-text-renderer.markdown-rendered table,
1334
+ .agent-client-markdown-text-renderer.markdown-rendered .mermaid,
1335
+ .agent-client-markdown-text-renderer.markdown-rendered svg {
1336
+ overflow-x: auto;
1337
+ display: block;
1338
+ }
1339
+
1340
+ /* Tool Call Diff Renderer */
1341
+ .agent-client-tool-call-diff {
1342
+ margin-top: 8px;
1343
+ border: 1px solid var(--background-modifier-border);
1344
+ border-radius: 4px;
1345
+ overflow: hidden;
1346
+ font-family: var(--font-monospace);
1347
+ font-size: 12px;
1348
+ }
1349
+
1350
+ .agent-client-tool-call-diff-content {
1351
+ background-color: var(--background-primary);
1352
+ overflow: auto;
1353
+ }
1354
+
1355
+ .agent-client-diff-line-info {
1356
+ padding: 4px 12px;
1357
+ background-color: var(--background-secondary);
1358
+ color: var(--text-muted);
1359
+ font-size: 11px;
1360
+ font-style: italic;
1361
+ }
1362
+
1363
+ .agent-client-diff-line {
1364
+ display: flex;
1365
+ align-items: flex-start;
1366
+ line-height: 1.5;
1367
+ user-select: text;
1368
+ }
1369
+
1370
+ .agent-client-diff-line-content {
1371
+ flex: 1;
1372
+ padding: 2px 12px;
1373
+ white-space: pre-wrap;
1374
+ word-break: break-all;
1375
+ }
1376
+
1377
+ .agent-client-diff-line-added {
1378
+ background-color: rgba(46, 160, 67, 0.15);
1379
+ }
1380
+
1381
+ .agent-client-diff-line-removed {
1382
+ background-color: rgba(248, 81, 73, 0.15);
1383
+ }
1384
+
1385
+ .agent-client-diff-line-context {
1386
+ background-color: transparent;
1387
+ }
1388
+
1389
+ .agent-client-diff-line-context .agent-client-diff-line-marker {
1390
+ color: var(--text-faint);
1391
+ }
1392
+
1393
+ /* Hunk header styling */
1394
+ .agent-client-diff-hunk-header {
1395
+ padding: 4px 12px;
1396
+ background-color: var(--background-secondary-alt);
1397
+ color: var(--text-muted);
1398
+ font-size: 11px;
1399
+ border-top: 1px solid var(--background-modifier-border);
1400
+ border-bottom: 1px solid var(--background-modifier-border);
1401
+ font-weight: 500;
1402
+ }
1403
+
1404
+ /* Word-level diff highlighting */
1405
+ .agent-client-diff-word-added {
1406
+ background-color: rgba(46, 160, 67, 0.4);
1407
+ font-weight: 600;
1408
+ }
1409
+
1410
+ .agent-client-diff-word-removed {
1411
+ background-color: rgba(248, 81, 73, 0.4);
1412
+ font-weight: 600;
1413
+ text-decoration: line-through;
1414
+ }
1415
+
1416
+ /* Diff Expand/Collapse Bar */
1417
+ .agent-client-diff-expand-bar {
1418
+ display: flex;
1419
+ align-items: center;
1420
+ justify-content: center;
1421
+ padding: 3px 12px;
1422
+ background-color: var(--background-secondary-alt);
1423
+ border-top: 1px solid var(--background-modifier-border);
1424
+ cursor: pointer;
1425
+ user-select: none;
1426
+ transition: background-color 0.1s ease;
1427
+ }
1428
+
1429
+ .agent-client-diff-expand-bar:hover {
1430
+ background-color: var(--background-modifier-hover);
1431
+ }
1432
+
1433
+ .agent-client-diff-expand-text {
1434
+ font-size: 11px;
1435
+ color: var(--text-muted);
1436
+ font-family: var(--font-monospace);
1437
+ }
1438
+
1439
+ .agent-client-diff-expand-icon {
1440
+ display: flex;
1441
+ align-items: center;
1442
+ color: var(--text-muted);
1443
+ margin-left: 8px;
1444
+ }
1445
+
1446
+ .agent-client-diff-expand-icon svg {
1447
+ width: 14px;
1448
+ height: 14px;
1449
+ }
1450
+
1451
+ /* Tool Call Details */
1452
+ .agent-client-tool-call-read-details,
1453
+ .agent-client-tool-call-edit-details,
1454
+ .agent-client-tool-call-delete-details,
1455
+ .agent-client-tool-call-move-details,
1456
+ .agent-client-tool-call-search-details,
1457
+ .agent-client-tool-call-execute-details,
1458
+ .agent-client-tool-call-fetch-details {
1459
+ padding: 4px 0;
1460
+ font-size: 12px;
1461
+ color: var(--text-muted);
1462
+ overflow-wrap: break-word;
1463
+ word-wrap: break-word;
1464
+ word-break: break-word;
1465
+ max-width: 100%;
1466
+ }
1467
+
1468
+ .agent-client-tool-call-location {
1469
+ padding: 2px 0;
1470
+ overflow-wrap: break-word;
1471
+ word-wrap: break-word;
1472
+ word-break: break-word;
1473
+ }
1474
+
1475
+ .agent-client-tool-call-line {
1476
+ color: var(--text-accent);
1477
+ font-weight: 500;
1478
+ overflow-wrap: break-word;
1479
+ word-wrap: break-word;
1480
+ word-break: break-word;
1481
+ }
1482
+
1483
+ .agent-client-tool-call-content {
1484
+ padding: 8px 0;
1485
+ overflow-wrap: break-word;
1486
+ word-wrap: break-word;
1487
+ word-break: break-word;
1488
+ }
1489
+
1490
+ /* ===== Attachment Preview Strip ===== */
1491
+ .agent-client-attachment-preview-strip {
1492
+ display: flex;
1493
+ gap: 8px;
1494
+ padding: 8px 12px;
1495
+ background-color: transparent;
1496
+ overflow-x: auto;
1497
+ scrollbar-width: thin;
1498
+ -ms-overflow-style: none;
1499
+ }
1500
+
1501
+ .agent-client-attachment-preview-strip::-webkit-scrollbar {
1502
+ height: 4px;
1503
+ }
1504
+
1505
+ .agent-client-attachment-preview-strip::-webkit-scrollbar-track {
1506
+ background: transparent;
1507
+ }
1508
+
1509
+ .agent-client-attachment-preview-strip::-webkit-scrollbar-thumb {
1510
+ background-color: var(--background-modifier-border);
1511
+ border-radius: 2px;
1512
+ }
1513
+
1514
+ .agent-client-attachment-preview-item {
1515
+ position: relative;
1516
+ flex-shrink: 0;
1517
+ width: 64px;
1518
+ height: 64px;
1519
+ }
1520
+
1521
+ .agent-client-attachment-preview-thumbnail {
1522
+ width: 100%;
1523
+ height: 100%;
1524
+ object-fit: cover;
1525
+ object-position: center;
1526
+ border-radius: 8px;
1527
+ border: 1px solid var(--background-modifier-border);
1528
+ }
1529
+
1530
+ /* Non-image file preview: icon + filename */
1531
+ .agent-client-attachment-preview-file {
1532
+ width: 100%;
1533
+ height: 100%;
1534
+ display: flex;
1535
+ flex-direction: column;
1536
+ align-items: center;
1537
+ justify-content: center;
1538
+ gap: 2px;
1539
+ border-radius: 8px;
1540
+ border: 1px solid var(--background-modifier-border);
1541
+ background-color: var(--background-primary);
1542
+ overflow: hidden;
1543
+ }
1544
+
1545
+ .agent-client-attachment-preview-file-icon {
1546
+ color: var(--text-muted);
1547
+ }
1548
+
1549
+ .agent-client-attachment-preview-file-icon svg {
1550
+ width: 24px;
1551
+ height: 24px;
1552
+ }
1553
+
1554
+ .agent-client-attachment-preview-file-name {
1555
+ font-size: 9px;
1556
+ color: var(--text-muted);
1557
+ text-align: center;
1558
+ max-width: 100%;
1559
+ overflow: hidden;
1560
+ text-overflow: ellipsis;
1561
+ white-space: nowrap;
1562
+ padding: 0 4px;
1563
+ }
1564
+
1565
+ .agent-client-attachment-preview-remove {
1566
+ position: absolute;
1567
+ top: -6px;
1568
+ right: -6px;
1569
+ width: 18px;
1570
+ height: 18px;
1571
+ padding: 0;
1572
+ border: none;
1573
+ border-radius: 50%;
1574
+ background-color: var(--background-secondary);
1575
+ color: var(--text-muted);
1576
+ cursor: pointer;
1577
+ display: flex;
1578
+ align-items: center;
1579
+ justify-content: center;
1580
+ opacity: 0;
1581
+ transition: opacity 0.15s ease;
1582
+ box-shadow: none !important;
1583
+ }
1584
+
1585
+ .agent-client-attachment-preview-remove svg {
1586
+ width: 12px;
1587
+ height: 12px;
1588
+ }
1589
+
1590
+ .agent-client-attachment-preview-item:hover
1591
+ .agent-client-attachment-preview-remove {
1592
+ opacity: 1;
1593
+ }
1594
+
1595
+ /* ===== Message Resource Link (in chat history) ===== */
1596
+ .agent-client-message-resource-link {
1597
+ display: inline-flex;
1598
+ flex-direction: column;
1599
+ align-items: center;
1600
+ justify-content: center;
1601
+ gap: 4px;
1602
+ width: 120px;
1603
+ height: 120px;
1604
+ margin: 4px 4px 4px 0;
1605
+ border-radius: 8px;
1606
+ border: 1px solid var(--background-modifier-border);
1607
+ background-color: var(--background-primary);
1608
+ overflow: hidden;
1609
+ }
1610
+
1611
+ .agent-client-message-resource-link-icon {
1612
+ color: var(--text-muted);
1613
+ display: flex;
1614
+ }
1615
+
1616
+ .agent-client-message-resource-link-icon svg {
1617
+ width: 32px;
1618
+ height: 32px;
1619
+ }
1620
+
1621
+ .agent-client-message-resource-link-name {
1622
+ font-size: 10px;
1623
+ color: var(--text-muted);
1624
+ text-align: center;
1625
+ max-width: 100%;
1626
+ overflow: hidden;
1627
+ text-overflow: ellipsis;
1628
+ white-space: nowrap;
1629
+ padding: 0 8px;
1630
+ }
1631
+
1632
+ /* ===== Message Image (in chat history) ===== */
1633
+ .agent-client-message-image {
1634
+ display: inline-block;
1635
+ margin: 4px 4px 4px 0;
1636
+ }
1637
+
1638
+ .agent-client-message-image-thumbnail {
1639
+ width: 120px;
1640
+ height: 120px;
1641
+ object-fit: cover;
1642
+ object-position: center;
1643
+ border-radius: 8px;
1644
+ border: 1px solid var(--background-modifier-border);
1645
+ }
1646
+
1647
+ /* ===== Message Images Strip (horizontal scroll in chat history) ===== */
1648
+ .agent-client-message-images-strip {
1649
+ display: flex;
1650
+ gap: 8px;
1651
+ padding: 8px 0;
1652
+ overflow-x: auto;
1653
+ scrollbar-width: thin;
1654
+ -ms-overflow-style: none;
1655
+ }
1656
+
1657
+ .agent-client-message-images-strip::-webkit-scrollbar {
1658
+ height: 4px;
1659
+ }
1660
+
1661
+ .agent-client-message-images-strip::-webkit-scrollbar-track {
1662
+ background: transparent;
1663
+ }
1664
+
1665
+ .agent-client-message-images-strip::-webkit-scrollbar-thumb {
1666
+ background-color: var(--background-modifier-border);
1667
+ border-radius: 2px;
1668
+ }
1669
+
1670
+ .agent-client-message-images-strip .agent-client-message-image {
1671
+ flex-shrink: 0;
1672
+ margin: 0;
1673
+ }
1674
+
1675
+ .agent-client-message-images-strip .agent-client-message-resource-link {
1676
+ flex-shrink: 0;
1677
+ margin: 0;
1678
+ }
1679
+
1680
+ /* ===== Session History Modal ===== */
1681
+ .agent-client-session-history-filter {
1682
+ margin-bottom: 16px;
1683
+ padding-bottom: 12px;
1684
+ border-bottom: 1px solid var(--background-modifier-border);
1685
+ }
1686
+
1687
+ .agent-client-session-history-filter-label {
1688
+ display: flex;
1689
+ align-items: center;
1690
+ gap: 8px;
1691
+ cursor: pointer;
1692
+ font-size: 14px;
1693
+ color: var(--text-normal);
1694
+ }
1695
+
1696
+ .agent-client-session-history-filter-label input[type="checkbox"] {
1697
+ cursor: pointer;
1698
+ }
1699
+
1700
+ .agent-client-session-history-list {
1701
+ display: flex;
1702
+ flex-direction: column;
1703
+ gap: 8px;
1704
+ }
1705
+
1706
+ .agent-client-session-history-item {
1707
+ display: flex;
1708
+ align-items: center;
1709
+ justify-content: space-between;
1710
+ padding: 12px;
1711
+ background: var(--background-secondary);
1712
+ border-radius: 6px;
1713
+ border: 1px solid var(--background-modifier-border);
1714
+ }
1715
+
1716
+ .agent-client-session-history-item-content {
1717
+ flex: 1;
1718
+ min-width: 0;
1719
+ }
1720
+
1721
+ .agent-client-session-history-item-title {
1722
+ font-weight: 500;
1723
+ font-size: 14px;
1724
+ color: var(--text-normal);
1725
+ margin-bottom: 4px;
1726
+ overflow: hidden;
1727
+ text-overflow: ellipsis;
1728
+ white-space: nowrap;
1729
+ }
1730
+
1731
+ .agent-client-session-history-item-metadata {
1732
+ display: flex;
1733
+ align-items: center;
1734
+ gap: 8px;
1735
+ }
1736
+
1737
+ .agent-client-session-history-item-timestamp {
1738
+ font-size: 12px;
1739
+ color: var(--text-muted);
1740
+ }
1741
+
1742
+ .agent-client-session-history-item-cwd {
1743
+ font-size: 12px;
1744
+ color: var(--text-muted);
1745
+ overflow: hidden;
1746
+ text-overflow: ellipsis;
1747
+ white-space: nowrap;
1748
+ min-width: 0;
1749
+ flex: 1;
1750
+ }
1751
+
1752
+ .agent-client-session-history-item-actions {
1753
+ display: flex;
1754
+ align-items: center;
1755
+ gap: 6px;
1756
+ flex-shrink: 0;
1757
+ margin-left: 12px;
1758
+ }
1759
+
1760
+ .agent-client-session-history-action-icon {
1761
+ width: 24px;
1762
+ height: 24px;
1763
+ display: flex;
1764
+ align-items: center;
1765
+ justify-content: center;
1766
+ border-radius: 4px;
1767
+ cursor: pointer;
1768
+ color: var(--text-muted);
1769
+ transition: all 0.2s;
1770
+ }
1771
+
1772
+ .agent-client-session-history-action-icon:hover {
1773
+ background: var(--background-modifier-hover);
1774
+ color: var(--text-normal);
1775
+ }
1776
+
1777
+ .agent-client-session-history-action-icon svg {
1778
+ width: 16px;
1779
+ height: 16px;
1780
+ }
1781
+
1782
+ .agent-client-session-history-restore-icon:hover {
1783
+ color: var(--text-accent);
1784
+ }
1785
+
1786
+ .agent-client-session-history-fork-icon:hover {
1787
+ color: var(--text-accent);
1788
+ }
1789
+
1790
+ .agent-client-session-history-edit-icon:hover {
1791
+ color: var(--text-accent);
1792
+ }
1793
+
1794
+ .agent-client-session-history-loading,
1795
+ .agent-client-session-history-empty,
1796
+ .agent-client-session-history-error {
1797
+ padding: 32px;
1798
+ text-align: center;
1799
+ color: var(--text-muted);
1800
+ }
1801
+
1802
+ .agent-client-session-history-error-text {
1803
+ color: var(--text-error);
1804
+ margin-bottom: 12px;
1805
+ }
1806
+
1807
+ .agent-client-session-history-retry-button {
1808
+ padding: 6px 12px;
1809
+ background: var(--interactive-accent);
1810
+ color: var(--text-on-accent);
1811
+ border: none;
1812
+ border-radius: 4px;
1813
+ cursor: pointer;
1814
+ }
1815
+
1816
+ .agent-client-session-history-load-more {
1817
+ margin-top: 16px;
1818
+ text-align: center;
1819
+ }
1820
+
1821
+ .agent-client-session-history-load-more-button {
1822
+ padding: 8px 16px;
1823
+ background: var(--background-secondary);
1824
+ border: 1px solid var(--background-modifier-border);
1825
+ border-radius: 4px;
1826
+ cursor: pointer;
1827
+ font-size: 14px;
1828
+ color: var(--text-normal);
1829
+ }
1830
+
1831
+ .agent-client-session-history-load-more-button:hover {
1832
+ background: var(--background-modifier-hover);
1833
+ }
1834
+
1835
+ .agent-client-session-history-load-more-button:disabled {
1836
+ opacity: 0.5;
1837
+ cursor: not-allowed;
1838
+ }
1839
+
1840
+ /* Debug mode manual input form */
1841
+ .agent-client-session-history-debug {
1842
+ margin-bottom: 16px;
1843
+ padding: 12px;
1844
+ background: var(--background-secondary);
1845
+ border-radius: 6px;
1846
+ border: 1px dashed var(--text-muted);
1847
+ }
1848
+
1849
+ .agent-client-session-history-debug h3 {
1850
+ margin: 0 0 12px 0;
1851
+ font-size: 14px;
1852
+ color: var(--text-muted);
1853
+ }
1854
+
1855
+ .agent-client-session-history-debug-group {
1856
+ margin-bottom: 10px;
1857
+ }
1858
+
1859
+ .agent-client-session-history-debug-group label {
1860
+ display: block;
1861
+ margin-bottom: 4px;
1862
+ font-size: 12px;
1863
+ color: var(--text-muted);
1864
+ }
1865
+
1866
+ .agent-client-session-history-debug-input {
1867
+ width: 100%;
1868
+ padding: 6px 8px;
1869
+ font-size: 13px;
1870
+ font-family: var(--font-monospace);
1871
+ border: 1px solid var(--background-modifier-border);
1872
+ border-radius: 4px;
1873
+ background: var(--background-primary);
1874
+ }
1875
+
1876
+ .agent-client-session-history-debug-actions {
1877
+ display: flex;
1878
+ gap: 8px;
1879
+ margin-top: 12px;
1880
+ }
1881
+
1882
+ .agent-client-session-history-debug-button {
1883
+ padding: 6px 12px;
1884
+ font-size: 13px;
1885
+ border-radius: 4px;
1886
+ cursor: pointer;
1887
+ background: var(--interactive-accent);
1888
+ color: var(--text-on-accent);
1889
+ border: none;
1890
+ }
1891
+
1892
+ .agent-client-session-history-debug-button:hover {
1893
+ background: var(--interactive-accent-hover);
1894
+ }
1895
+
1896
+ .agent-client-session-history-debug-separator {
1897
+ margin: 16px 0;
1898
+ border: none;
1899
+ border-top: 1px solid var(--background-modifier-border);
1900
+ }
1901
+
1902
+ /* Local sessions banner */
1903
+ .agent-client-session-history-local-banner {
1904
+ padding: 8px 12px;
1905
+ margin-bottom: 12px;
1906
+ background: var(--background-secondary);
1907
+ border-radius: 4px;
1908
+ font-size: 12px;
1909
+ color: var(--text-muted);
1910
+ border-left: 3px solid var(--interactive-accent);
1911
+ }
1912
+
1913
+ /* Warning banner for agents that don't support restoration */
1914
+ .agent-client-session-history-warning-banner {
1915
+ padding: 8px 12px;
1916
+ margin-bottom: 12px;
1917
+ background: var(--background-secondary);
1918
+ border-radius: 4px;
1919
+ border-left: 3px solid var(--text-warning);
1920
+ }
1921
+
1922
+ .agent-client-session-history-warning-banner p {
1923
+ margin: 0;
1924
+ color: var(--text-muted);
1925
+ font-size: 12px;
1926
+ }
1927
+
1928
+ /* Delete button */
1929
+ .agent-client-session-history-delete-icon {
1930
+ color: var(--text-muted);
1931
+ }
1932
+
1933
+ .agent-client-session-history-delete-icon:hover {
1934
+ color: var(--text-error);
1935
+ }
1936
+
1937
+ /* Confirm delete modal */
1938
+ .agent-client-confirm-delete-message {
1939
+ margin-bottom: 8px;
1940
+ }
1941
+
1942
+ .agent-client-confirm-delete-warning {
1943
+ color: var(--text-muted);
1944
+ font-size: var(--font-ui-small);
1945
+ margin-bottom: 16px;
1946
+ }
1947
+
1948
+ .agent-client-confirm-delete-buttons {
1949
+ display: flex;
1950
+ justify-content: flex-end;
1951
+ gap: 8px;
1952
+ }
1953
+
1954
+ /* Edit title modal */
1955
+ .agent-client-edit-title-input {
1956
+ width: 100%;
1957
+ margin-bottom: 16px;
1958
+ }
1959
+
1960
+ .agent-client-edit-title-buttons {
1961
+ display: flex;
1962
+ justify-content: flex-end;
1963
+ gap: 8px;
1964
+ }
1965
+
1966
+ /* Change directory modal */
1967
+ .agent-client-change-dir-description {
1968
+ color: var(--text-muted);
1969
+ font-size: var(--font-ui-small);
1970
+ margin-bottom: 12px;
1971
+ }
1972
+
1973
+ .agent-client-change-dir-input-row {
1974
+ display: flex;
1975
+ gap: 8px;
1976
+ margin-bottom: 16px;
1977
+ }
1978
+
1979
+ .agent-client-change-dir-input {
1980
+ flex: 1;
1981
+ }
1982
+
1983
+ /* Agent cwd banner (shown when working outside vault) */
1984
+ .agent-client-cwd-banner {
1985
+ display: flex;
1986
+ align-items: center;
1987
+ gap: 6px;
1988
+ padding: 6px 12px;
1989
+ font-size: var(--font-ui-smaller);
1990
+ color: var(--text-muted);
1991
+ }
1992
+
1993
+ .agent-client-cwd-banner-icon {
1994
+ flex-shrink: 0;
1995
+ }
1996
+
1997
+ .agent-client-cwd-banner-icon svg {
1998
+ width: 14px;
1999
+ height: 14px;
2000
+ }
2001
+
2002
+ .agent-client-cwd-banner-path {
2003
+ white-space: nowrap;
2004
+ overflow: hidden;
2005
+ text-overflow: ellipsis;
2006
+ }
2007
+
2008
+ .agent-client-change-dir-buttons {
2009
+ display: flex;
2010
+ justify-content: flex-end;
2011
+ gap: 8px;
2012
+ }
2013
+
2014
+ /* ===== Floating Chat Button ===== */
2015
+ /* Floating button & menu root — higher z-index, always above windows */
2016
+ .agent-client-floating-button-root {
2017
+ position: fixed;
2018
+ z-index: 30;
2019
+ pointer-events: none;
2020
+ }
2021
+
2022
+ .agent-client-floating-button-root > * {
2023
+ pointer-events: auto;
2024
+ }
2025
+
2026
+ /* Floating chat window root — lower z-index */
2027
+ .agent-client-floating-view-root {
2028
+ position: fixed;
2029
+ z-index: 20;
2030
+ pointer-events: none;
2031
+ }
2032
+
2033
+ .agent-client-floating-view-root.is-focused {
2034
+ z-index: 21;
2035
+ }
2036
+
2037
+ .agent-client-floating-view-root > * {
2038
+ pointer-events: auto;
2039
+ }
2040
+
2041
+ .agent-client-floating-button {
2042
+ position: fixed;
2043
+ bottom: 30px;
2044
+ right: 40px;
2045
+ width: 48px;
2046
+ height: 48px;
2047
+ min-width: 48px;
2048
+ min-height: 48px;
2049
+ border-radius: 50%;
2050
+ background: var(--interactive-accent);
2051
+ cursor: pointer;
2052
+ display: flex;
2053
+ align-items: center;
2054
+ justify-content: center;
2055
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
2056
+ transition:
2057
+ transform 0.2s,
2058
+ box-shadow 0.2s;
2059
+ overflow: hidden;
2060
+ padding: 0;
2061
+ }
2062
+
2063
+ .agent-client-floating-button.has-custom-image {
2064
+ background: transparent;
2065
+ }
2066
+
2067
+ .agent-client-floating-button:hover {
2068
+ transform: scale(1.05);
2069
+ box-shadow: 0 6px 16px rgba(0, 0, 0, 0.4);
2070
+ }
2071
+
2072
+ .agent-client-floating-button.is-dragging {
2073
+ cursor: grabbing;
2074
+ transition: none;
2075
+ user-select: none;
2076
+ }
2077
+
2078
+ .agent-client-floating-button img {
2079
+ width: 48px;
2080
+ height: 48px;
2081
+ min-width: 48px;
2082
+ min-height: 48px;
2083
+ object-fit: cover;
2084
+ object-position: center;
2085
+ border-radius: 50%;
2086
+ display: block;
2087
+ }
2088
+
2089
+ .agent-client-floating-button-fallback {
2090
+ display: flex;
2091
+ align-items: center;
2092
+ justify-content: center;
2093
+ color: var(--text-on-accent);
2094
+ }
2095
+
2096
+ .agent-client-floating-button-fallback svg {
2097
+ width: 24px;
2098
+ height: 24px;
2099
+ }
2100
+
2101
+ /* ===== Floating Chat Window ===== */
2102
+ .agent-client-floating-window {
2103
+ position: fixed;
2104
+ background: var(--background-primary);
2105
+ border: 1px solid var(--background-modifier-border);
2106
+ border-radius: 12px;
2107
+ box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
2108
+ display: flex;
2109
+ flex-direction: column;
2110
+ overflow: hidden;
2111
+ resize: both;
2112
+ min-width: 330px;
2113
+ min-height: 460px;
2114
+ }
2115
+
2116
+ .agent-client-floating-header {
2117
+ cursor: grab;
2118
+ user-select: none;
2119
+ border-radius: 11px 11px 0 0;
2120
+ overflow: hidden;
2121
+ }
2122
+
2123
+ .agent-client-floating-header:active {
2124
+ cursor: grabbing;
2125
+ }
2126
+
2127
+ .agent-client-floating-header .agent-client-inline-header {
2128
+ border-radius: 11px 11px 0 0;
2129
+ }
2130
+
2131
+ .agent-client-floating-content {
2132
+ flex: 1;
2133
+ display: flex;
2134
+ flex-direction: column;
2135
+ overflow: hidden;
2136
+ min-height: 0;
2137
+ }
2138
+
2139
+ .agent-client-floating-window .agent-client-chat-input-container {
2140
+ padding-bottom: 8px;
2141
+ }
2142
+
2143
+ .agent-client-floating-messages-container {
2144
+ flex: 1;
2145
+ display: flex;
2146
+ flex-direction: column;
2147
+ overflow: hidden; /* Let inner .agent-client-chat-view-messages handle scrolling */
2148
+ margin-bottom: 8px;
2149
+ min-height: 0;
2150
+ }
2151
+
2152
+ /* Floating chat instance selector menu */
2153
+ .agent-client-floating-instance-menu {
2154
+ position: fixed;
2155
+ bottom: 100px;
2156
+ right: 20px;
2157
+ min-width: 220px;
2158
+ background: var(--background-primary);
2159
+ border: 1px solid var(--background-modifier-border);
2160
+ border-radius: 6px;
2161
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
2162
+ overflow: hidden;
2163
+ }
2164
+
2165
+ .agent-client-floating-instance-menu-header {
2166
+ padding: 12px 16px;
2167
+ font-weight: 600;
2168
+ font-size: 13px;
2169
+ color: var(--text-muted);
2170
+ background: var(--background-secondary);
2171
+ border-bottom: 1px solid var(--background-modifier-border);
2172
+ }
2173
+
2174
+ .agent-client-floating-instance-menu-item {
2175
+ padding: 10px 16px;
2176
+ cursor: pointer;
2177
+ font-size: 13px;
2178
+ color: var(--text-normal);
2179
+ transition: background-color 0.1s;
2180
+ display: flex;
2181
+ align-items: center;
2182
+ gap: 8px;
2183
+ }
2184
+
2185
+ .agent-client-floating-instance-menu-label {
2186
+ flex: 1;
2187
+ }
2188
+
2189
+ .agent-client-floating-instance-menu-item:hover {
2190
+ background: var(--background-modifier-hover);
2191
+ }
2192
+
2193
+ .agent-client-floating-instance-menu-close {
2194
+ width: 20px;
2195
+ height: 20px;
2196
+ padding: 0 !important;
2197
+ margin: 0 !important;
2198
+ border: none !important;
2199
+ border-radius: 0 !important;
2200
+ background-color: transparent !important;
2201
+ box-shadow: none !important;
2202
+ color: var(--text-muted);
2203
+ cursor: pointer;
2204
+ display: flex;
2205
+ align-items: center;
2206
+ justify-content: center;
2207
+ font-size: 16px;
2208
+ outline: none !important;
2209
+ appearance: none;
2210
+ }
2211
+
2212
+ .agent-client-floating-instance-menu-close:hover {
2213
+ background-color: var(--background-modifier-hover) !important;
2214
+ color: var(--interactive-accent);
2215
+ }
2216
+
2217
+ /* ===== Code Block Chat View ===== */
2218
+ /* TODO(code-block): Styles for future code block chat view */
2219
+ .agent-client-code-block-container {
2220
+ display: flex;
2221
+ flex-direction: column;
2222
+ border: 1px solid var(--background-modifier-border);
2223
+ border-radius: 8px;
2224
+ background: var(--background-primary);
2225
+ overflow: hidden;
2226
+ }
2227
+
2228
+ .agent-client-code-block-content {
2229
+ display: flex;
2230
+ flex-direction: column;
2231
+ padding: 8px;
2232
+ }
2233
+
2234
+ .agent-client-code-block-status {
2235
+ display: flex;
2236
+ align-items: center;
2237
+ justify-content: space-between;
2238
+ padding: 4px 8px;
2239
+ background: var(--background-secondary);
2240
+ border-radius: 4px;
2241
+ margin-bottom: 4px;
2242
+ flex-wrap: wrap;
2243
+ gap: 8px;
2244
+ }
2245
+
2246
+ .agent-client-code-block-status-actions {
2247
+ display: flex;
2248
+ align-items: center;
2249
+ gap: 4px;
2250
+ flex-wrap: wrap;
2251
+ }
2252
+
2253
+ .agent-client-code-block-messages {
2254
+ max-height: 400px;
2255
+ overflow-y: auto;
2256
+ margin-bottom: 8px;
2257
+ }
2258
+
2259
+ /* ===== Agent Selector (InlineHeader) ===== */
2260
+ .agent-client-agent-selector {
2261
+ display: inline-flex;
2262
+ align-items: center;
2263
+ padding: 0 4px;
2264
+ border-radius: 4px;
2265
+ cursor: pointer;
2266
+ transition: background-color 0.1s ease;
2267
+ height: 20px;
2268
+ max-width: 160px;
2269
+ }
2270
+
2271
+ .agent-client-agent-selector:hover {
2272
+ background-color: var(--background-modifier-hover);
2273
+ }
2274
+
2275
+ .agent-client-agent-selector-icon {
2276
+ display: flex;
2277
+ align-items: center;
2278
+ pointer-events: none;
2279
+ color: var(--text-faint);
2280
+ margin-left: 2px;
2281
+ order: 2;
2282
+ }
2283
+
2284
+ .agent-client-agent-selector-icon svg {
2285
+ width: 12px;
2286
+ height: 12px;
2287
+ }
2288
+
2289
+ .agent-client-agent-selector select.dropdown {
2290
+ padding: 0 !important;
2291
+ margin: 0 !important;
2292
+ border: none !important;
2293
+ border-radius: 0 !important;
2294
+ background: none !important;
2295
+ background-color: transparent !important;
2296
+ background-image: none !important;
2297
+ box-shadow: none !important;
2298
+ color: var(--text-normal) !important;
2299
+ font-size: 12px !important;
2300
+ cursor: pointer !important;
2301
+ outline: none !important;
2302
+ appearance: none !important;
2303
+ -webkit-appearance: none !important;
2304
+ -moz-appearance: none !important;
2305
+ max-width: 140px;
2306
+ text-overflow: ellipsis;
2307
+ white-space: nowrap;
2308
+ overflow: hidden;
2309
+ }
2310
+
2311
+ .agent-client-agent-selector select.dropdown:hover,
2312
+ .agent-client-agent-selector select.dropdown:focus {
2313
+ color: var(--text-normal) !important;
2314
+ background-color: transparent !important;
2315
+ box-shadow: none !important;
2316
+ }
2317
+
2318
+ /* Agent label (single agent) */
2319
+ .agent-client-agent-label {
2320
+ color: var(--text-normal);
2321
+ font-size: 12px;
2322
+ }