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