agentcrew-ai 0.8.13__py3-none-any.whl → 0.9.1__py3-none-any.whl

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 (55) hide show
  1. AgentCrew/__init__.py +1 -1
  2. AgentCrew/app.py +46 -634
  3. AgentCrew/main_docker.py +1 -30
  4. AgentCrew/modules/a2a/common/client/card_resolver.py +27 -8
  5. AgentCrew/modules/a2a/server.py +5 -0
  6. AgentCrew/modules/a2a/task_manager.py +1 -0
  7. AgentCrew/modules/agents/local_agent.py +2 -2
  8. AgentCrew/modules/chat/message/command_processor.py +33 -8
  9. AgentCrew/modules/chat/message/conversation.py +18 -1
  10. AgentCrew/modules/chat/message/handler.py +5 -1
  11. AgentCrew/modules/code_analysis/service.py +50 -7
  12. AgentCrew/modules/code_analysis/tool.py +9 -8
  13. AgentCrew/modules/console/completers.py +5 -1
  14. AgentCrew/modules/console/console_ui.py +23 -11
  15. AgentCrew/modules/console/conversation_browser/__init__.py +9 -0
  16. AgentCrew/modules/console/conversation_browser/browser.py +84 -0
  17. AgentCrew/modules/console/conversation_browser/browser_input_handler.py +279 -0
  18. AgentCrew/modules/console/{conversation_browser.py → conversation_browser/browser_ui.py} +249 -163
  19. AgentCrew/modules/console/conversation_handler.py +34 -1
  20. AgentCrew/modules/console/display_handlers.py +127 -7
  21. AgentCrew/modules/console/visual_mode/__init__.py +5 -0
  22. AgentCrew/modules/console/visual_mode/viewer.py +41 -0
  23. AgentCrew/modules/console/visual_mode/viewer_input_handler.py +315 -0
  24. AgentCrew/modules/console/visual_mode/viewer_ui.py +608 -0
  25. AgentCrew/modules/gui/components/command_handler.py +137 -29
  26. AgentCrew/modules/gui/components/menu_components.py +8 -7
  27. AgentCrew/modules/gui/themes/README.md +30 -14
  28. AgentCrew/modules/gui/themes/__init__.py +2 -1
  29. AgentCrew/modules/gui/themes/atom_light.yaml +1287 -0
  30. AgentCrew/modules/gui/themes/catppuccin.yaml +1276 -0
  31. AgentCrew/modules/gui/themes/dracula.yaml +1262 -0
  32. AgentCrew/modules/gui/themes/nord.yaml +1267 -0
  33. AgentCrew/modules/gui/themes/saigontech.yaml +1268 -0
  34. AgentCrew/modules/gui/themes/style_provider.py +78 -264
  35. AgentCrew/modules/gui/themes/theme_loader.py +379 -0
  36. AgentCrew/modules/gui/themes/unicorn.yaml +1276 -0
  37. AgentCrew/modules/gui/widgets/configs/global_settings.py +4 -4
  38. AgentCrew/modules/gui/widgets/history_sidebar.py +6 -1
  39. AgentCrew/modules/llm/constants.py +28 -9
  40. AgentCrew/modules/mcpclient/service.py +0 -1
  41. AgentCrew/modules/memory/base_service.py +13 -0
  42. AgentCrew/modules/memory/chroma_service.py +50 -0
  43. AgentCrew/setup.py +470 -0
  44. {agentcrew_ai-0.8.13.dist-info → agentcrew_ai-0.9.1.dist-info}/METADATA +1 -1
  45. {agentcrew_ai-0.8.13.dist-info → agentcrew_ai-0.9.1.dist-info}/RECORD +49 -40
  46. {agentcrew_ai-0.8.13.dist-info → agentcrew_ai-0.9.1.dist-info}/WHEEL +1 -1
  47. AgentCrew/modules/gui/themes/atom_light.py +0 -1365
  48. AgentCrew/modules/gui/themes/catppuccin.py +0 -1404
  49. AgentCrew/modules/gui/themes/dracula.py +0 -1372
  50. AgentCrew/modules/gui/themes/nord.py +0 -1365
  51. AgentCrew/modules/gui/themes/saigontech.py +0 -1359
  52. AgentCrew/modules/gui/themes/unicorn.py +0 -1372
  53. {agentcrew_ai-0.8.13.dist-info → agentcrew_ai-0.9.1.dist-info}/entry_points.txt +0 -0
  54. {agentcrew_ai-0.8.13.dist-info → agentcrew_ai-0.9.1.dist-info}/licenses/LICENSE +0 -0
  55. {agentcrew_ai-0.8.13.dist-info → agentcrew_ai-0.9.1.dist-info}/top_level.txt +0 -0
@@ -1,1372 +0,0 @@
1
- """Unicorn theme styles for AgentCrew GUI."""
2
-
3
-
4
- class UnicornTheme:
5
- """Static class containing Unicorn theme styles.
6
-
7
- Based on the Unicorn Candy color palette: https://www.color-hex.com/color-palette/79054
8
-
9
- Unicorn Candy Palette:
10
- - Light Cyan: #d0f4f4 (Cool cyan - primary backgrounds)
11
- - Lavender: #eed5ff (Light purple - secondary backgrounds)
12
- - Pink: #ffc0d7 (Soft pink - accent elements)
13
- - Cream: #fff9c1 (Light yellow - highlights)
14
- - Mint: #cfebd2 (Light green - success states)
15
-
16
- Extended palette for dark elements:
17
- - Deep Purple: #6b46c1 (Primary actions)
18
- - Dark Slate: #374151 (Text and borders)
19
- - Midnight: #1f2937 (Dark backgrounds)
20
- - Charcoal: #111827 (Deepest backgrounds)
21
- """
22
-
23
- # Main application styles
24
- MAIN_STYLE = """
25
- QMainWindow {
26
- background-color: #f8fafc; /* Very light background */
27
- }
28
- QScrollArea {
29
- border: none;
30
- background-color: #f1f5f9; /* Light slate background */
31
- }
32
- QWidget#chatContainer { /* Specific ID for chat_container */
33
- background-color: #f8fafc; /* Very light background */
34
- }
35
- QSplitter::handle {
36
- background-color: #e2e8f0; /* Light slate border */
37
- }
38
- QSplitter::handle:hover {
39
- background-color: #cbd5e1; /* Darker slate on hover */
40
- }
41
- QSplitter::handle:pressed {
42
- background-color: #6b46c1; /* Deep purple when pressed */
43
- }
44
- QStatusBar {
45
- background-color: #f1f5f9; /* Light slate background */
46
- color: #374151; /* Dark slate text */
47
- }
48
- QToolTip {
49
- background-color: #eed5ff; /* Lavender background */
50
- color: #374151; /* Dark slate text */
51
- border: 1px solid #6b46c1; /* Deep purple border */
52
- padding: 4px;
53
- }
54
- QMessageBox {
55
- background-color: #f1f5f9; /* Light slate background */
56
- }
57
- QMessageBox QLabel { /* For message text in QMessageBox */
58
- color: #374151; /* Dark slate text */
59
- background-color: transparent;
60
- }
61
- /* QCompleter's popup is often a QListView */
62
- QListView { /* General style for QListView, affects completer */
63
- background-color: #eed5ff; /* Lavender background */
64
- color: #374151; /* Dark slate text */
65
- border: 1px solid #6b46c1; /* Deep purple border */
66
- padding: 2px;
67
- outline: 0px;
68
- }
69
- QListView::item {
70
- padding: 4px 8px;
71
- border-radius: 2px;
72
- }
73
- QListView::item:selected {
74
- background-color: #6b46c1; /* Deep purple selection */
75
- color: #ffffff; /* White text on selection */
76
- }
77
- QListView::item:hover {
78
- background-color: #ffc0d7; /* Pink hover */
79
- }
80
-
81
- /* Modern Scrollbar Styles */
82
- QScrollBar:vertical {
83
- border: none;
84
- background: #f1f5f9; /* Light slate track */
85
- width: 10px;
86
- margin: 0px 0px 0px 0px;
87
- }
88
- QScrollBar::handle:vertical {
89
- background: #cbd5e1; /* Slate handle */
90
- min-height: 20px;
91
- border-radius: 5px;
92
- }
93
- QScrollBar::handle:vertical:hover {
94
- background: #6b46c1; /* Deep purple hover */
95
- }
96
- QScrollBar::handle:vertical:pressed {
97
- background: #553c9a; /* Darker purple pressed */
98
- }
99
- QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
100
- border: none;
101
- background: none;
102
- height: 0px;
103
- subcontrol-position: top;
104
- subcontrol-origin: margin;
105
- }
106
- QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
107
- background: none;
108
- }
109
-
110
- QScrollBar:horizontal {
111
- border: none;
112
- background: #f1f5f9; /* Light slate track */
113
- height: 10px;
114
- margin: 0px 0px 0px 0px;
115
- }
116
- QScrollBar::handle:horizontal {
117
- background: #cbd5e1; /* Slate handle */
118
- min-width: 20px;
119
- border-radius: 5px;
120
- }
121
- QScrollBar::handle:horizontal:hover {
122
- background: #6b46c1; /* Deep purple hover */
123
- }
124
- QScrollBar::handle:horizontal:pressed {
125
- background: #553c9a; /* Darker purple pressed */
126
- }
127
- QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
128
- border: none;
129
- background: none;
130
- width: 0px;
131
- subcontrol-position: left;
132
- subcontrol-origin: margin;
133
- }
134
- QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
135
- background: none;
136
- }
137
-
138
- /* Context menu styling for QLabel widgets */
139
- QLabel QMenu {
140
- background-color: #f1f5f9; /* Light slate background */
141
- border: 1px solid #6b46c1; /* Deep purple border */
142
- padding: 4px;
143
- border-radius: 6px;
144
- }
145
- QLabel QMenu::item {
146
- color: #374151; /* Dark slate text */
147
- padding: 8px 24px 8px 12px;
148
- border-radius: 4px;
149
- margin: 2px;
150
- }
151
- QLabel QMenu::item:selected {
152
- background-color: #6b46c1; /* Deep purple selection */
153
- color: #ffffff; /* White text */
154
- }
155
- QLabel QMenu::item:pressed {
156
- background-color: #553c9a; /* Darker purple */
157
- }
158
- QLabel QMenu::separator {
159
- height: 1px;
160
- background: #cbd5e1; /* Light slate separator */
161
- margin: 4px 8px;
162
- }
163
- """
164
-
165
- # Button styles
166
- PRIMARY_BUTTON = """
167
- QPushButton {
168
- background-color: #6b46c1; /* Deep purple */
169
- color: #ffffff; /* White text */
170
- border: none;
171
- border-radius: 4px;
172
- padding: 8px;
173
- font-weight: bold;
174
- }
175
- QPushButton:hover {
176
- background-color: #553c9a; /* Darker purple hover */
177
- }
178
- QPushButton:pressed {
179
- background-color: #4c1d95; /* Even darker purple pressed */
180
- }
181
- QPushButton:disabled {
182
- background-color: #cbd5e1; /* Light slate disabled */
183
- color: #6b7280; /* Gray text */
184
- }
185
- """
186
-
187
- SECONDARY_BUTTON = """
188
- QPushButton {
189
- background-color: #eed5ff; /* Lavender background */
190
- color: #374151; /* Dark slate text */
191
- border: none;
192
- border-radius: 4px;
193
- padding: 8px;
194
- font-weight: bold;
195
- }
196
- QPushButton:hover {
197
- background-color: #e4d4fd; /* Darker lavender hover */
198
- }
199
- QPushButton:pressed {
200
- background-color: #6b46c1; /* Deep purple pressed */
201
- color: #ffffff; /* White text when pressed */
202
- }
203
- QPushButton:disabled {
204
- background-color: #f1f5f9; /* Light slate disabled */
205
- color: #9ca3af; /* Light gray text */
206
- }
207
- """
208
-
209
- STOP_BUTTON = """
210
- QPushButton {
211
- background-color: #ef4444; /* Red */
212
- color: #ffffff; /* White text */
213
- border: none;
214
- border-radius: 4px;
215
- padding: 8px;
216
- font-weight: bold;
217
- }
218
- QPushButton:hover {
219
- background-color: #dc2626; /* Darker red hover */
220
- }
221
- QPushButton:pressed {
222
- background-color: #b91c1c; /* Even darker red pressed */
223
- }
224
- """
225
-
226
- RED_BUTTON = """
227
- QPushButton {
228
- background-color: #ef4444; /* Red */
229
- color: #ffffff; /* White text */
230
- border: none;
231
- border-radius: 4px;
232
- padding: 8px;
233
- font-weight: bold;
234
- }
235
- QPushButton:hover {
236
- background-color: #dc2626; /* Darker red hover */
237
- }
238
- QPushButton:pressed {
239
- background-color: #b91c1c; /* Even darker red pressed */
240
- }
241
- QPushButton:disabled {
242
- background-color: #cbd5e1; /* Light slate disabled */
243
- color: #6b7280; /* Gray text */
244
- }
245
- """
246
-
247
- GREEN_BUTTON = """
248
- QPushButton {
249
- background-color: #10b981; /* Green (similar to mint #cfebd2 but darker) */
250
- color: #ffffff; /* White text */
251
- border: none;
252
- border-radius: 4px;
253
- padding: 8px;
254
- font-weight: bold;
255
- }
256
- QPushButton:hover {
257
- background-color: #059669; /* Darker green hover */
258
- }
259
- QPushButton:pressed {
260
- background-color: #047857; /* Even darker green pressed */
261
- }
262
- QPushButton:disabled {
263
- background-color: #cbd5e1; /* Light slate disabled */
264
- color: #6b7280; /* Gray text */
265
- }
266
- """
267
-
268
- API_KEYS_GROUP = """
269
- QGroupBox {
270
- background-color: #f1f5f9; /* Light slate background */
271
- }
272
- QLabel {
273
- background-color: #f1f5f9;
274
- }
275
- """
276
-
277
- EDITOR_CONTAINER_WIDGET = """
278
- QWidget {
279
- background-color: #f1f5f9; /* Light slate background */
280
- }
281
- """
282
-
283
- MENU_BUTTON = """
284
- QPushButton {
285
- background-color: #6b46c1; /* Deep purple */
286
- color: #ffffff; /* White text */
287
- border: none;
288
- border-radius: 4px;
289
- padding: 8px;
290
- font-weight: bold;
291
- padding-left: 12px;
292
- }
293
- QPushButton:hover {
294
- background-color: #553c9a; /* Darker purple hover */
295
- }
296
- QPushButton:pressed {
297
- background-color: #4c1d95; /* Even darker purple pressed */
298
- }
299
- QPushButton:disabled {
300
- background-color: #cbd5e1; /* Light slate disabled */
301
- color: #6b7280; /* Gray text */
302
- }
303
- QPushButton::menu-indicator {
304
- subcontrol-origin: padding;
305
- subcontrol-position: right center;
306
- right: 5px;
307
- width: 16px;
308
- }
309
- """
310
-
311
- DISABLED_BUTTON = """
312
- QPushButton {
313
- background-color: #cbd5e1; /* Light slate disabled */
314
- color: #6b7280; /* Gray text */
315
- border: none;
316
- border-radius: 4px;
317
- padding: 8px;
318
- font-weight: bold;
319
- }
320
- """
321
-
322
- STOP_BUTTON_STOPPING = """
323
- QPushButton {
324
- background-color: #e2e8f0; /* Light slate */
325
- color: #6b7280; /* Gray text */
326
- border: none;
327
- border-radius: 4px;
328
- padding: 8px;
329
- font-weight: bold;
330
- }
331
- """
332
-
333
- COMBO_BOX = """
334
- QComboBox {
335
- background-color: #ffffff; /* White background */
336
- color: #374151; /* Dark slate text */
337
- border: 1px solid #d1d5db; /* Light gray border */
338
- border-radius: 4px;
339
- padding: 6px 8px;
340
- min-width: 120px;
341
- }
342
- QComboBox:hover {
343
- border: 1px solid #6b46c1; /* Deep purple hover border */
344
- }
345
- QComboBox:focus {
346
- border: 1px solid #6b46c1; /* Deep purple focus border */
347
- }
348
- QComboBox::drop-down {
349
- subcontrol-origin: padding;
350
- subcontrol-position: top right;
351
- width: 20px;
352
- border-left-width: 1px;
353
- border-left-color: #d1d5db; /* Light gray */
354
- border-left-style: solid;
355
- border-top-right-radius: 4px;
356
- border-bottom-right-radius: 4px;
357
- background-color: #f9fafb; /* Very light gray */
358
- }
359
- QComboBox::down-arrow {
360
- width: 0;
361
- height: 0;
362
- border-left: 4px solid transparent;
363
- border-right: 4px solid transparent;
364
- border-top: 6px solid #374151; /* Dark slate arrow */
365
- }
366
- QComboBox QAbstractItemView {
367
- background-color: #ffffff; /* White dropdown */
368
- color: #374151; /* Dark slate text */
369
- border: 1px solid #d1d5db; /* Light gray border */
370
- border-radius: 4px;
371
- selection-background-color: #6b46c1; /* Deep purple selection */
372
- selection-color: #ffffff; /* White selected text */
373
- outline: 0px;
374
- }
375
- """
376
-
377
- # Input styles
378
- TEXT_INPUT = """
379
- QTextEdit {
380
- background-color: #ffffff; /* White background */
381
- color: #374151; /* Dark slate text */
382
- border: 1px solid #d1d5db; /* Light gray border */
383
- border-radius: 4px;
384
- padding: 8px;
385
- }
386
- QTextEdit:focus {
387
- border: 1px solid #6b46c1; /* Deep purple focus border */
388
- }
389
- """
390
-
391
- LINE_EDIT = """
392
- QLineEdit {
393
- background-color: #ffffff; /* White background */
394
- color: #374151; /* Dark slate text */
395
- border: 1px solid #d1d5db; /* Light gray border */
396
- border-radius: 4px;
397
- padding: 8px;
398
- }
399
- QLineEdit:focus {
400
- border: 1px solid #6b46c1; /* Deep purple focus border */
401
- }
402
- """
403
-
404
- # Menu styles
405
- MENU_BAR = """
406
- QMenuBar {
407
- background-color: #f1f5f9; /* Light slate background */
408
- color: #374151; /* Dark slate text */
409
- padding: 2px;
410
- }
411
- QMenuBar::item {
412
- background-color: transparent;
413
- color: #374151; /* Dark slate text */
414
- padding: 4px 12px;
415
- border-radius: 4px;
416
- }
417
- QMenuBar::item:selected {
418
- background-color: #eed5ff; /* Lavender selection */
419
- }
420
- QMenuBar::item:pressed {
421
- background-color: #e4d4fd; /* Darker lavender pressed */
422
- }
423
- QMenu {
424
- background-color: #ffffff; /* White menu background */
425
- color: #374151; /* Dark slate text */
426
- border: 1px solid #d1d5db; /* Light gray border */
427
- padding: 4px;
428
- }
429
- QMenu::item {
430
- padding: 6px 24px 6px 12px;
431
- border-radius: 4px;
432
- }
433
- QMenu::item:selected {
434
- background-color: #6b46c1; /* Deep purple selection */
435
- color: #ffffff; /* White selected text */
436
- }
437
- QMenu::separator {
438
- height: 1px;
439
- background: #e5e7eb; /* Light gray separator */
440
- margin-left: 10px;
441
- margin-right: 5px;
442
- }
443
- """
444
-
445
- CONTEXT_MENU = """
446
- QMenu {
447
- background-color: #ffffff; /* White background */
448
- color: #374151; /* Dark slate text */
449
- border: 1px solid #d1d5db; /* Light gray border */
450
- padding: 4px;
451
- border-radius: 6px;
452
- }
453
- QMenu::item {
454
- padding: 8px 24px 8px 12px;
455
- border-radius: 4px;
456
- margin: 2px;
457
- color: #374151; /* Dark slate text */
458
- }
459
- QMenu::item:selected {
460
- background-color: #6b46c1; /* Deep purple selection */
461
- color: #ffffff; /* White selected text */
462
- }
463
- QMenu::item:pressed {
464
- background-color: #553c9a; /* Darker purple pressed */
465
- }
466
- QMenu::item:disabled {
467
- background-color: transparent;
468
- color: #9ca3af; /* Light gray disabled text */
469
- }
470
- QMenu::separator {
471
- height: 1px;
472
- background: #e5e7eb; /* Light gray separator */
473
- margin: 4px 8px;
474
- }
475
- """
476
-
477
- AGENT_MENU = """
478
- QMenu {
479
- background-color: #ffffff; /* White background */
480
- color: #374151; /* Dark slate text */
481
- border: 1px solid #eed5ff; /* Lavender border */
482
- border-radius: 4px;
483
- padding: 4px;
484
- }
485
- QMenu::item {
486
- padding: 6px 20px;
487
- background-color: transparent;
488
- }
489
- QMenu::item:selected {
490
- background-color: #6b46c1; /* Deep purple selection */
491
- color: #ffffff; /* White selected text */
492
- border-radius: 3px;
493
- }
494
- QMenu::separator {
495
- height: 1px;
496
- background-color: #eed5ff; /* Lavender separator */
497
- margin-left: 5px;
498
- margin-right: 5px;
499
- }
500
- """
501
-
502
- # Label styles
503
- STATUS_INDICATOR = """
504
- QLabel {
505
- background-color: #eed5ff; /* Lavender background */
506
- color: #374151; /* Dark slate text */
507
- padding: 8px;
508
- border-radius: 5px;
509
- font-weight: bold;
510
- }
511
- """
512
-
513
- VERSION_LABEL = """
514
- QLabel {
515
- color: #6b7280; /* Gray text */
516
- padding: 2px 8px;
517
- font-size: 11px;
518
- }
519
- """
520
-
521
- SYSTEM_MESSAGE_TOGGLE_BUTTON = """
522
- QPushButton {
523
- background-color: transparent;
524
- color: #6b46c1; /* Deep purple */
525
- border: none;
526
- text-align: left;
527
- padding: 2px;
528
- }
529
- QPushButton:hover {
530
- color: #553c9a; /* Darker purple hover */
531
- }
532
- """
533
-
534
- # Widget-specific styles
535
- SIDEBAR = """
536
- background-color: #f1f5f9; /* Light slate background */
537
- """
538
-
539
- CONVERSATION_LIST = """
540
- QListWidget {
541
- background-color: #f8fafc; /* Very light background */
542
- border: 1px solid #e2e8f0; /* Light slate border */
543
- border-radius: 4px;
544
- }
545
- QListWidget::item {
546
- color: #374151; /* Dark slate text */
547
- background-color: #f8fafc; /* Very light background */
548
- border: none;
549
- border-bottom: 1px solid #e2e8f0; /* Light slate border */
550
- margin: 0px;
551
- padding: 8px;
552
- }
553
- QListWidget::item:selected {
554
- background-color: #6b46c1; /* Deep purple selection */
555
- color: #ffffff; /* White selected text */
556
- }
557
- QListWidget::item:hover:!selected {
558
- background-color: #eed5ff; /* Lavender hover */
559
- }
560
- """
561
-
562
- SEARCH_BOX = """
563
- QLineEdit {
564
- background-color: #ffffff; /* White background */
565
- color: #374151; /* Dark slate text */
566
- border: 1px solid #d1d5db; /* Light gray border */
567
- border-radius: 4px;
568
- padding: 8px;
569
- }
570
- QLineEdit:focus {
571
- border: 1px solid #6b46c1; /* Deep purple focus border */
572
- }
573
- """
574
-
575
- TOKEN_USAGE = """
576
- QLabel {
577
- color: #374151; /* Dark slate text */
578
- font-weight: bold;
579
- padding: 8px;
580
- background-color: #f8fafc; /* Very light background */
581
- border-top: 1px solid #e2e8f0; /* Light slate border */
582
- }
583
- """
584
-
585
- TOKEN_USAGE_WIDGET = """
586
- background-color: #f8fafc; /* Very light background */
587
- """
588
-
589
- # Message bubble styles
590
- USER_BUBBLE = """
591
- QFrame {
592
- border-radius: 5px;
593
- background-color: #6b46c1; /* Deep purple */
594
- border: none;
595
- padding: 2px;
596
- }
597
- """
598
-
599
- ASSISTANT_BUBBLE = """
600
- QFrame {
601
- border-radius: 5px;
602
- background-color: #eed5ff; /* Lavender */
603
- border: none;
604
- padding: 2px;
605
- }
606
- """
607
-
608
- THINKING_BUBBLE = """
609
- QFrame {
610
- border-radius: 5px;
611
- background-color: #f1f5f9; /* Light slate */
612
- border: none;
613
- padding: 2px;
614
- }
615
- """
616
-
617
- CONSOLIDATED_BUBBLE = """
618
- QFrame {
619
- border-radius: 5px;
620
- background-color: #eed5ff; /* Lavender */
621
- border: 1px solid #d1d5db; /* Light gray border */
622
- padding: 2px;
623
- }
624
- """
625
-
626
- ROLLBACK_BUTTON = """
627
- QPushButton {
628
- background-color: #ffc0d7; /* Pink */
629
- color: #374151; /* Dark slate text */
630
- border: none;
631
- border-radius: 15px;
632
- padding: 8px;
633
- font-size: 24px;
634
- font-weight: bold;
635
- width: 30px;
636
- height: 30px;
637
- }
638
- QPushButton:hover {
639
- background-color: #ffadd0; /* Darker pink hover */
640
- }
641
- QPushButton:pressed {
642
- background-color: #ff9ac5; /* Even darker pink pressed */
643
- }
644
- """
645
-
646
- CONSOLIDATED_BUTTON = """
647
- QPushButton {
648
- background-color: #ffc0d7; /* Pink */
649
- color: #374151; /* Dark slate text */
650
- border: none;
651
- border-radius: 15px;
652
- padding: 8px;
653
- font-size: 16px;
654
- font-weight: bold;
655
- width: 30px;
656
- height: 30px;
657
- }
658
- QPushButton:hover {
659
- background-color: #ffadd0; /* Darker pink hover */
660
- }
661
- QPushButton:pressed {
662
- background-color: #ff9ac5; /* Even darker pink pressed */
663
- }
664
- """
665
-
666
- UNCONSOLIDATE_BUTTON = """
667
- QPushButton {
668
- background-color: #d1d5db; /* Light gray */
669
- color: #374151; /* Dark slate text */
670
- border: none;
671
- border-radius: 15px;
672
- padding: 8px;
673
- font-size: 16px;
674
- font-weight: bold;
675
- width: 30px;
676
- height: 30px;
677
- }
678
- QPushButton:hover {
679
- background-color: #fecaca; /* Light red for undo action */
680
- }
681
- QPushButton:pressed {
682
- background-color: #fca5a5; /* Darker light red */
683
- }
684
- """
685
-
686
- # Tool dialog styles
687
- TOOL_DIALOG_TEXT_EDIT = """
688
- QTextEdit {
689
- background-color: #ffffff; /* White background */
690
- color: #374151; /* Dark slate text */
691
- border: 1px solid #d1d5db; /* Light gray border */
692
- border-radius: 4px;
693
- padding: 8px;
694
- font-family: monospace;
695
- }
696
- QTextEdit:focus {
697
- border: 1px solid #6b46c1; /* Deep purple focus border */
698
- }
699
- """
700
-
701
- TOOL_DIALOG_YES_BUTTON = """
702
- QPushButton {
703
- background-color: #10b981; /* Green */
704
- color: #ffffff; /* White text */
705
- font-weight: bold;
706
- padding: 6px 14px;
707
- border: none;
708
- border-radius: 4px;
709
- }
710
- QPushButton:hover {
711
- background-color: #059669; /* Darker green hover */
712
- }
713
- """
714
-
715
- TOOL_DIALOG_ALL_BUTTON = """
716
- QPushButton {
717
- background-color: #6b46c1; /* Deep purple */
718
- color: #ffffff; /* White text */
719
- font-weight: bold;
720
- padding: 6px 14px;
721
- border: none;
722
- border-radius: 4px;
723
- }
724
- QPushButton:hover {
725
- background-color: #553c9a; /* Darker purple hover */
726
- }
727
- """
728
-
729
- TOOL_DIALOG_NO_BUTTON = """
730
- QPushButton {
731
- background-color: #ef4444; /* Red */
732
- color: #ffffff; /* White text */
733
- font-weight: bold;
734
- padding: 6px 14px;
735
- border: none;
736
- border-radius: 4px;
737
- }
738
- QPushButton:hover {
739
- background-color: #dc2626; /* Darker red hover */
740
- }
741
- """
742
-
743
- AGENT_MENU_BUTTON = """
744
- QPushButton {
745
- background-color: #6b46c1; /* Deep purple */
746
- color: #ffffff; /* White text */
747
- border: none;
748
- border-radius: 4px;
749
- padding: 8px;
750
- font-weight: bold;
751
- padding-left: 12px;
752
- }
753
- QPushButton:hover {
754
- background-color: #553c9a; /* Darker purple hover */
755
- }
756
- QPushButton:pressed {
757
- background-color: #4c1d95; /* Even darker purple pressed */
758
- }
759
- QPushButton:disabled {
760
- background-color: #cbd5e1; /* Light slate disabled */
761
- color: #6b7280; /* Gray text */
762
- }
763
- QPushButton::menu-indicator {
764
- subcontrol-origin: padding;
765
- subcontrol-position: right center;
766
- right: 5px;
767
- width: 16px;
768
- }
769
- """
770
-
771
- # Widget-specific styles
772
- SYSTEM_MESSAGE_LABEL = """
773
- color: #6b7280; /* Gray text */
774
- padding: 2px;
775
- """
776
-
777
- SYSTEM_MESSAGE_TOGGLE = """
778
- QPushButton {
779
- background-color: transparent;
780
- color: #6b46c1; /* Deep purple */
781
- border: none;
782
- text-align: left;
783
- padding: 2px;
784
- }
785
- QPushButton:hover {
786
- color: #553c9a; /* Darker purple hover */
787
- }
788
- """
789
-
790
- # Config window styles
791
- CONFIG_DIALOG = """
792
- QDialog {
793
- background-color: #f8fafc; /* Very light background */
794
- color: #374151; /* Dark slate text */
795
- }
796
- QTabWidget::pane {
797
- border: 1px solid #e2e8f0; /* Light slate border */
798
- background-color: #ffffff; /* White pane background */
799
- border-radius: 4px;
800
- }
801
- QTabBar::tab {
802
- background-color: #f1f5f9; /* Light slate tab background */
803
- color: #374151; /* Dark slate text */
804
- padding: 8px;
805
- border-top-left-radius: 4px;
806
- border-top-right-radius: 4px;
807
- border: 1px solid #d1d5db; /* Light gray border */
808
- border-bottom: none;
809
- margin-right: 2px;
810
- }
811
- QTabBar::tab:selected {
812
- background-color: #ffffff; /* White selected tab */
813
- border-bottom-color: #ffffff; /* White */
814
- color: #6b46c1; /* Deep purple selected text */
815
- }
816
- QTabBar::tab:hover:!selected {
817
- background-color: #eed5ff; /* Lavender hover */
818
- }
819
- QPushButton {
820
- background-color: #6b46c1; /* Deep purple */
821
- color: #ffffff; /* White text */
822
- border: none;
823
- border-radius: 4px;
824
- padding: 8px;
825
- font-weight: bold;
826
- }
827
- QPushButton:hover {
828
- background-color: #553c9a; /* Darker purple hover */
829
- }
830
- QPushButton:pressed {
831
- background-color: #4c1d95; /* Even darker purple pressed */
832
- }
833
- QPushButton:disabled {
834
- background-color: #cbd5e1; /* Light slate disabled */
835
- color: #6b7280; /* Gray text */
836
- }
837
- QListWidget {
838
- background-color: #ffffff; /* White background */
839
- border: 1px solid #e2e8f0; /* Light slate border */
840
- border-radius: 4px;
841
- padding: 4px;
842
- color: #374151; /* Dark slate text */
843
- }
844
- QListWidget::item {
845
- padding: 6px;
846
- border-radius: 2px;
847
- color: #374151; /* Dark slate text */
848
- background-color: #ffffff; /* White background */
849
- }
850
- QListWidget::item:selected {
851
- background-color: #6b46c1; /* Deep purple selection */
852
- color: #ffffff; /* White selected text */
853
- }
854
- QListWidget::item:hover:!selected {
855
- background-color: #eed5ff; /* Lavender hover */
856
- }
857
- QLineEdit, QTextEdit {
858
- border: 1px solid #d1d5db; /* Light gray border */
859
- border-radius: 4px;
860
- padding: 6px;
861
- background-color: #ffffff; /* White background */
862
- color: #374151; /* Dark slate text */
863
- }
864
- QLineEdit:focus, QTextEdit:focus {
865
- border: 1px solid #6b46c1; /* Deep purple focus border */
866
- }
867
- QCheckBox {
868
- spacing: 8px;
869
- color: #374151; /* Dark slate text */
870
- }
871
- QCheckBox::indicator {
872
- width: 18px;
873
- height: 18px;
874
- border-radius: 3px;
875
- background-color: #ffffff; /* White background */
876
- border: 2px solid #d1d5db; /* Light gray border */
877
- }
878
- QCheckBox::indicator:checked {
879
- background-color: #6b46c1; /* Deep purple checked */
880
- border: 2px solid #6b46c1; /* Deep purple border */
881
- }
882
- QCheckBox::indicator:indeterminate {
883
- background-color: #fbbf24; /* Golden yellow - for partial state */
884
- border: 2px solid #fbbf24; /* Golden yellow */
885
- border-radius: 9px;
886
- }
887
- QCheckBox::indicator:hover {
888
- border: 2px solid #553c9a; /* Darker purple hover border */
889
- }
890
- QCheckBox::indicator:hover:checked {
891
- background-color: #553c9a; /* Darker purple hover */
892
- border: 2px solid #553c9a;
893
- }
894
- QCheckBox::indicator:hover:indeterminate {
895
- background-color: #f59e0b; /* Darker amber on hover */
896
- border: 2px solid #f59e0b;
897
- }
898
- QCheckBox::indicator:disabled {
899
- background-color: #f9fafb; /* Very light gray */
900
- border: 2px solid #e5e7eb; /* Light gray */
901
- }
902
- QGroupBox {
903
- font-weight: bold;
904
- border: 1px solid #d1d5db; /* Light gray border */
905
- border-radius: 4px;
906
- margin-top: 12px;
907
- padding-top: 12px;
908
- background-color: #ffffff; /* White groupbox background */
909
- }
910
- QGroupBox::title {
911
- subcontrol-origin: margin;
912
- subcontrol-position: top left;
913
- padding: 0 4px 4px 4px;
914
- color: #6b46c1; /* Deep purple title */
915
- left: 10px;
916
- }
917
- QScrollArea {
918
- background-color: #ffffff; /* White background */
919
- border: none;
920
- }
921
- QScrollArea > QWidget > QWidget {
922
- background-color: #ffffff; /* White background */
923
- }
924
- QLabel {
925
- color: #374151; /* Dark slate text */
926
- padding: 2px;
927
- }
928
- QSplitter::handle {
929
- background-color: #e2e8f0; /* Light slate */
930
- }
931
- QSplitter::handle:hover {
932
- background-color: #cbd5e1; /* Darker slate hover */
933
- }
934
- QSplitter::handle:pressed {
935
- background-color: #6b46c1; /* Deep purple pressed */
936
- }
937
- """
938
-
939
- PANEL = """
940
- background-color: #f1f5f9; /* Light slate background */
941
- """
942
-
943
- SCROLL_AREA = """
944
- background-color: #f1f5f9; /* Light slate background */
945
- border: none;
946
- """
947
-
948
- EDITOR_WIDGET = """
949
- background-color: #f1f5f9; /* Light slate background */
950
- """
951
-
952
- GROUP_BOX = """
953
- background-color: #f8fafc; /* Very light background */
954
- """
955
-
956
- SPLITTER_COLOR = """
957
- QSplitter::handle {
958
- background-color: #e2e8f0; /* Light slate */
959
- }
960
- QSplitter::handle:hover {
961
- background-color: #cbd5e1; /* Darker slate hover */
962
- }
963
- QSplitter::handle:pressed {
964
- background-color: #6b46c1; /* Deep purple pressed */
965
- }
966
- """
967
-
968
- METADATA_HEADER_LABEL = """
969
- QLabel {
970
- color: #6b7280; /* Gray text */
971
- font-style: italic;
972
- padding-bottom: 5px;
973
- }
974
- """
975
-
976
- # Message label styles
977
- USER_MESSAGE_LABEL = """
978
- QLabel {
979
- color: #ffffff; /* White text on purple bubble */
980
- }
981
- """
982
-
983
- ASSISTANT_MESSAGE_LABEL = """
984
- QLabel {
985
- color: #374151; /* Dark slate text on lavender bubble */
986
- }
987
- """
988
-
989
- THINKING_MESSAGE_LABEL = """
990
- QLabel {
991
- color: #374151; /* Dark slate text */
992
- }
993
- """
994
-
995
- # Sender label styles
996
- USER_SENDER_LABEL = """
997
- QLabel {
998
- font-weight: bold;
999
- color: #ffffff; /* White text */
1000
- padding: 2px;
1001
- }
1002
- """
1003
-
1004
- ASSISTANT_SENDER_LABEL = """
1005
- QLabel {
1006
- font-weight: bold;
1007
- color: #374151; /* Dark slate text */
1008
- padding: 2px;
1009
- }
1010
- """
1011
-
1012
- THINKING_SENDER_LABEL = """
1013
- QLabel {
1014
- font-weight: bold;
1015
- color: #374151; /* Dark slate text */
1016
- padding: 2px;
1017
- }
1018
- """
1019
-
1020
- # File display label styles
1021
- USER_FILE_NAME_LABEL = """
1022
- QLabel {
1023
- font-weight: bold;
1024
- color: #ffffff; /* White text */
1025
- padding-left: 10px;
1026
- }
1027
- """
1028
-
1029
- ASSISTANT_FILE_NAME_LABEL = """
1030
- QLabel {
1031
- font-weight: bold;
1032
- color: #374151; /* Dark slate text */
1033
- padding-left: 10px;
1034
- }
1035
- """
1036
-
1037
- USER_FILE_INFO_LABEL = """
1038
- QLabel {
1039
- color: #e2e8f0; /* Light slate - good contrast on purple bubble */
1040
- }
1041
- """
1042
-
1043
- ASSISTANT_FILE_INFO_LABEL = """
1044
- QLabel {
1045
- color: #6b7280; /* Gray text on lavender bubble */
1046
- }
1047
- """
1048
-
1049
- CODE_CSS = """
1050
- table td {border: 1px solid #374151; padding: 5px;}
1051
- table { border-collapse: collapse; }
1052
- pre { line-height: 1; background-color: #ffffff; border-radius: 8px; padding: 12px; color: #374151; white-space: pre-wrap; word-wrap: break-word; border: 1px solid #e5e7eb; } /* White background, dark slate text */
1053
- td.linenos .normal { color: #9ca3af; background-color: transparent; padding-left: 5px; padding-right: 5px; } /* Light gray line numbers */
1054
- span.linenos { color: #9ca3af; background-color: transparent; padding-left: 5px; padding-right: 5px; } /* Light gray line numbers */
1055
- td.linenos .special { color: #374151; background-color: #f9fafb; padding-left: 5px; padding-right: 5px; } /* Dark slate special line numbers */
1056
- span.linenos.special { color: #374151; background-color: #f9fafb; padding-left: 5px; padding-right: 5px; } /* Dark slate special line numbers */
1057
- .codehilite .hll { background-color: #fff9c1 } /* Cream highlight */
1058
- .codehilite { background: #ffffff; border-radius: 8px; padding: 10px; color: #374151; border: 1px solid #e5e7eb; } /* White background, dark slate text */
1059
- .codehilite .c { color: #9ca3af; font-style: italic } /* Comment -> Light gray */
1060
- .codehilite .err { border: 1px solid #ef4444; color: #ef4444; } /* Error -> Red */
1061
- .codehilite .k { color: #6b46c1; font-weight: bold } /* Keyword -> Deep purple */
1062
- .codehilite .o { color: #059669 } /* Operator -> Green */
1063
- .codehilite .ch { color: #9ca3af; font-style: italic } /* Comment.Hashbang -> Light gray */
1064
- .codehilite .cm { color: #9ca3af; font-style: italic } /* Comment.Multiline -> Light gray */
1065
- .codehilite .cp { color: #d97706 } /* Comment.Preproc -> Orange */
1066
- .codehilite .cpf { color: #9ca3af; font-style: italic } /* Comment.PreprocFile -> Light gray */
1067
- .codehilite .c1 { color: #9ca3af; font-style: italic } /* Comment.Single -> Light gray */
1068
- .codehilite .cs { color: #9ca3af; font-style: italic } /* Comment.Special -> Light gray */
1069
- .codehilite .gd { color: #ef4444 } /* Generic.Deleted -> Red */
1070
- .codehilite .ge { font-style: italic } /* Generic.Emph */
1071
- .codehilite .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
1072
- .codehilite .gr { color: #ef4444 } /* Generic.Error -> Red */
1073
- .codehilite .gh { color: #6b46c1; font-weight: bold } /* Generic.Heading -> Deep purple */
1074
- .codehilite .gi { color: #10b981 } /* Generic.Inserted -> Green */
1075
- .codehilite .go { color: #374151 } /* Generic.Output -> Dark slate */
1076
- .codehilite .gp { color: #6b46c1; font-weight: bold } /* Generic.Prompt -> Deep purple */
1077
- .codehilite .gs { font-weight: bold } /* Generic.Strong */
1078
- .codehilite .gu { color: #6b46c1; font-weight: bold } /* Generic.Subheading -> Deep purple */
1079
- .codehilite .gt { color: #ef4444 } /* Generic.Traceback -> Red */
1080
- .codehilite .kc { color: #6b46c1; font-weight: bold } /* Keyword.Constant -> Deep purple */
1081
- .codehilite .kd { color: #6b46c1; font-weight: bold } /* Keyword.Declaration -> Deep purple */
1082
- .codehilite .kn { color: #6b46c1; font-weight: bold } /* Keyword.Namespace -> Deep purple */
1083
- .codehilite .kp { color: #6b46c1 } /* Keyword.Pseudo -> Deep purple */
1084
- .codehilite .kr { color: #6b46c1; font-weight: bold } /* Keyword.Reserved -> Deep purple */
1085
- .codehilite .kt { color: #dc2626; font-weight: bold } /* Keyword.Type -> Dark red */
1086
- .codehilite .m { color: #7c3aed } /* Literal.Number -> Purple */
1087
- .codehilite .s { color: #10b981 } /* Literal.String -> Green */
1088
- .codehilite .na { color: #0ea5e9 } /* Name.Attribute -> Sky blue */
1089
- .codehilite .nb { color: #6b46c1 } /* Name.Builtin -> Deep purple */
1090
- .codehilite .nc { color: #d97706; font-weight: bold } /* Name.Class -> Orange */
1091
- .codehilite .no { color: #dc2626 } /* Name.Constant -> Dark red */
1092
- .codehilite .nd { color: #6b46c1 } /* Name.Decorator -> Deep purple */
1093
- .codehilite .ni { color: #374151; font-weight: bold } /* Name.Entity -> Dark slate */
1094
- .codehilite .ne { color: #ef4444; font-weight: bold } /* Name.Exception -> Red */
1095
- .codehilite .nf { color: #6b46c1; font-weight: bold } /* Name.Function -> Deep purple */
1096
- .codehilite .nl { color: #374151 } /* Name.Label -> Dark slate */
1097
- .codehilite .nn { color: #d97706; font-weight: bold } /* Name.Namespace -> Orange */
1098
- .codehilite .nt { color: #6b46c1; font-weight: bold } /* Name.Tag -> Deep purple */
1099
- .codehilite .nv { color: #374151 } /* Name.Variable -> Dark slate */
1100
- .codehilite .ow { color: #059669; font-weight: bold } /* Operator.Word -> Green */
1101
- .codehilite .w { color: #9ca3af } /* Text.Whitespace -> Light gray */
1102
- .codehilite .mb { color: #7c3aed } /* Literal.Number.Bin -> Purple */
1103
- .codehilite .mf { color: #7c3aed } /* Literal.Number.Float -> Purple */
1104
- .codehilite .mh { color: #7c3aed } /* Literal.Number.Hex -> Purple */
1105
- .codehilite .mi { color: #7c3aed } /* Literal.Number.Integer -> Purple */
1106
- .codehilite .mo { color: #7c3aed } /* Literal.Number.Oct -> Purple */
1107
- .codehilite .sa { color: #10b981 } /* Literal.String.Affix -> Green */
1108
- .codehilite .sb { color: #10b981 } /* Literal.String.Backtick -> Green */
1109
- .codehilite .sc { color: #10b981 } /* Literal.String.Char -> Green */
1110
- .codehilite .dl { color: #10b981 } /* Literal.String.Delimiter -> Green */
1111
- .codehilite .sd { color: #9ca3af; font-style: italic } /* Literal.String.Doc -> Light gray */
1112
- .codehilite .s2 { color: #10b981 } /* Literal.String.Double -> Green */
1113
- .codehilite .se { color: #dc2626; font-weight: bold } /* Literal.String.Escape -> Dark red */
1114
- .codehilite .sh { color: #10b981 } /* Literal.String.Heredoc -> Green */
1115
- .codehilite .si { color: #10b981; font-weight: bold } /* Literal.String.Interpol -> Green */
1116
- .codehilite .sx { color: #10b981 } /* Literal.String.Other -> Green */
1117
- .codehilite .sr { color: #10b981 } /* Literal.String.Regex -> Green */
1118
- .codehilite .s1 { color: #10b981 } /* Literal.String.Single -> Green */
1119
- .codehilite .ss { color: #10b981 } /* Literal.String.Symbol -> Green */
1120
- .codehilite .bp { color: #6b46c1 } /* Name.Builtin.Pseudo -> Deep purple */
1121
- .codehilite .fm { color: #6b46c1; font-weight: bold } /* Name.Function.Magic -> Deep purple */
1122
- .codehilite .vc { color: #374151 } /* Name.Variable.Class -> Dark slate */
1123
- .codehilite .vg { color: #374151 } /* Name.Variable.Global -> Dark slate */
1124
- .codehilite .vi { color: #374151 } /* Name.Variable.Instance -> Dark slate */
1125
- .codehilite .vm { color: #374151 } /* Name.Variable.Magic -> Dark slate */
1126
- .codehilite .il { color: #7c3aed } /* Literal.Number.Integer.Long -> Purple */
1127
- """
1128
-
1129
- # Enhanced checkbox styles with tristate support
1130
- CHECKBOX_STYLE = """
1131
- QCheckBox {
1132
- spacing: 8px;
1133
- color: #374151; /* Dark slate text */
1134
- }
1135
- QCheckBox::indicator {
1136
- width: 18px;
1137
- height: 18px;
1138
- border-radius: 3px;
1139
- background-color: #ffffff; /* White background */
1140
- border: 2px solid #d1d5db; /* Light gray border */
1141
- }
1142
- QCheckBox::indicator:checked {
1143
- background-color: #6b46c1; /* Deep purple checked */
1144
- border: 2px solid #6b46c1; /* Deep purple border */
1145
- }
1146
- QCheckBox::indicator:indeterminate {
1147
- background-color: #fbbf24; /* Golden yellow - for partial state */
1148
- border: 2px solid #fbbf24; /* Golden yellow */
1149
- border-radius: 9px;
1150
- }
1151
- QCheckBox::indicator:hover {
1152
- border: 2px solid #553c9a; /* Darker purple hover border */
1153
- }
1154
- QCheckBox::indicator:hover:checked {
1155
- background-color: #553c9a; /* Darker purple hover */
1156
- border: 2px solid #553c9a;
1157
- }
1158
- QCheckBox::indicator:hover:indeterminate {
1159
- background-color: #f59e0b; /* Darker amber on hover */
1160
- border: 2px solid #f59e0b;
1161
- }
1162
- QCheckBox::indicator:disabled {
1163
- background-color: #f9fafb; /* Very light gray */
1164
- border: 2px solid #e5e7eb; /* Light gray */
1165
- }
1166
- """
1167
-
1168
- # Tool widget styles
1169
- TOOL_WIDGET = """
1170
- QWidget {
1171
- background-color: transparent;
1172
- }
1173
- """
1174
-
1175
- TOOL_CARD = """
1176
- QFrame#toolCard {
1177
- border-radius: 6px;
1178
- background-color: rgba(107, 70, 193, 0.08); /* Subtle deep purple transparency */
1179
- border: 1px solid rgba(107, 70, 193, 0.4); /* Softer purple border */
1180
- padding: 1px;
1181
- }
1182
- """
1183
-
1184
- TOOL_CARD_ERROR = """
1185
- QFrame#toolCard {
1186
- border-radius: 6px;
1187
- background-color: rgba(239, 68, 68, 0.08); /* Subtle red transparency */
1188
- border: 1px solid rgba(239, 68, 68, 0.4); /* Softer red border */
1189
- padding: 1px;
1190
- }
1191
- """
1192
-
1193
- TOOL_HEADER = """
1194
- QLabel {
1195
- font-weight: 500;
1196
- color: #374151; /* Dark slate */
1197
- }
1198
- """
1199
-
1200
- TOOL_TOGGLE_BUTTON = """
1201
- QPushButton {
1202
- background-color: transparent;
1203
- border: none;
1204
- color: #6b7280; /* Gray */
1205
- font-weight: normal;
1206
- font-size: 11px;
1207
- }
1208
- QPushButton:hover {
1209
- color: #6b46c1; /* Deep purple */
1210
- }
1211
- """
1212
-
1213
- TOOL_STATUS = """
1214
- QLabel {
1215
- font-weight: 500;
1216
- padding: 2px;
1217
- font-size: 11px;
1218
- }
1219
- QLabel[status="running"] {
1220
- color: #d97706; /* Orange */
1221
- }
1222
- QLabel[status="complete"] {
1223
- color: #10b981; /* Green */
1224
- }
1225
- QLabel[status="error"] {
1226
- color: #ef4444; /* Red */
1227
- }
1228
- """
1229
-
1230
- TOOL_CONTENT = """
1231
- QLabel {
1232
- color: #374151; /* Dark slate */
1233
- padding: 1px;
1234
- font-size: 11px;
1235
- }
1236
- QLabel[role="title"] {
1237
- font-weight: 500;
1238
- color: #374151;
1239
- font-size: 12px;
1240
- }
1241
- QLabel[role="key"] {
1242
- color: #6b46c1; /* Deep purple */
1243
- font-weight: 500;
1244
- font-size: 11px;
1245
- }
1246
- QLabel[role="value"] {
1247
- color: #6b7280; /* Gray */
1248
- font-size: 11px;
1249
- }
1250
- QLabel[role="error"] {
1251
- color: #ef4444; /* Red */
1252
- font-size: 11px;
1253
- }
1254
- """
1255
-
1256
- TOOL_PROGRESS = """
1257
- QProgressBar {
1258
- border: none;
1259
- background-color: rgba(203, 213, 225, 0.4); /* Light slate with transparency */
1260
- border-radius: 5px;
1261
- text-align: center;
1262
- }
1263
- QProgressBar::chunk {
1264
- background-color: #6b46c1; /* Deep purple */
1265
- border-radius: 5px;
1266
- }
1267
- """
1268
-
1269
- TOOL_SEPARATOR = """
1270
- QFrame {
1271
- background-color: rgba(107, 70, 193, 0.3); /* Deep purple with transparency */
1272
- border: none;
1273
- }
1274
- """
1275
-
1276
- # Tool icons (consistent across all themes)
1277
- TOOL_ICONS = {
1278
- "web_search": "🔍",
1279
- "fetch_webpage": "🌐",
1280
- "transfer": "↗️",
1281
- "adapt": "🧠",
1282
- "retrieve_memory": "💭",
1283
- "forget_memory_topic": "🗑️",
1284
- "read_repo": "📂",
1285
- "get_file": "📄",
1286
- "default": "🔧", # Default icon for unspecified tools
1287
- }
1288
-
1289
- # Diff Widget colors
1290
- DIFF_COLORS = {
1291
- "background": "#f8fafc", # Very light background
1292
- "panel_bg": "#ffffff", # White
1293
- "header_bg": "#f1f5f9", # Light slate
1294
- "header_text": "#374151", # Dark text
1295
- "line_number_bg": "#f8fafc", # Very light
1296
- "line_number_text": "#9ca3af", # Gray
1297
- "removed_bg": "#fef2f2", # Light red
1298
- "removed_text": "#ef4444", # Red
1299
- "removed_highlight": "#ef4444", # Red
1300
- "added_bg": "#ecfdf5", # Light green
1301
- "added_text": "#10b981", # Green
1302
- "added_highlight": "#10b981", # Green
1303
- "unchanged_text": "#9ca3af", # Gray
1304
- "border": "#d1d5db", # Border
1305
- "block_header_bg": "#e0e7ff", # Light purple
1306
- "block_header_text": "#6b46c1", # Purple
1307
- }
1308
-
1309
- # JSON Editor styles
1310
- JSON_EDITOR_COLORS = {
1311
- "background": "#ffffff",
1312
- "text": "#374151",
1313
- "border": "#d1d5db",
1314
- "string": "#10b981", # Green
1315
- "number": "#d97706", # Orange
1316
- "keyword": "#6b46c1", # Deep purple
1317
- "punctuation": "#374151", # Dark slate
1318
- "error": "#ef4444", # Red
1319
- }
1320
-
1321
- JSON_EDITOR_STYLE = """
1322
- QPlainTextEdit {
1323
- background-color: #ffffff; /* White background */
1324
- color: #374151; /* Dark slate text */
1325
- border: 1px solid #d1d5db; /* Light gray border */
1326
- border-radius: 4px;
1327
- padding: 8px;
1328
- font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
1329
- font-size: 12px;
1330
- line-height: 1.4;
1331
- }
1332
- QPlainTextEdit:focus {
1333
- border: 1px solid #6b46c1; /* Deep purple focus border */
1334
- }
1335
- """
1336
-
1337
- # Markdown Editor styles
1338
- MARKDOWN_EDITOR_COLORS = {
1339
- "background": "#ffffff", # White background
1340
- "text": "#374151", # Dark slate text
1341
- "border": "#d1d5db", # Light gray border
1342
- "header": "#6b46c1", # Deep purple for headers
1343
- "bold": "#dc2626", # Dark red for bold text
1344
- "italic": "#10b981", # Green for italic text
1345
- "code": "#7c3aed", # Purple for code blocks
1346
- "code_background": "#f9fafb", # Very light gray code background
1347
- "link": "#0ea5e9", # Sky blue for links
1348
- "image": "#06b6d4", # Cyan for images
1349
- "list": "#d97706", # Orange for list markers
1350
- "blockquote": "#059669", # Green for blockquotes
1351
- "hr": "#d1d5db", # Light gray for horizontal rules
1352
- "strikethrough": "#ef4444", # Red for strikethrough text
1353
- "error": "#ef4444", # Red for errors
1354
- }
1355
-
1356
- MARKDOWN_EDITOR_STYLE = """
1357
- QPlainTextEdit {
1358
- background-color: #ffffff; /* White background */
1359
- color: #374151; /* Dark slate text */
1360
- border: 1px solid #d1d5db; /* Light gray border */
1361
- border-radius: 4px;
1362
- padding: 8px;
1363
- font-family: 'Inter', 'Segoe UI', 'Roboto', sans-serif;
1364
- font-size: 13px;
1365
- line-height: 1.6;
1366
- selection-background-color: #eed5ff; /* Lavender selection */
1367
- selection-color: #374151; /* Dark slate selected text */
1368
- }
1369
- QPlainTextEdit:focus {
1370
- border: 1px solid #6b46c1; /* Deep purple focus border */
1371
- }
1372
- """