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
@@ -0,0 +1,1268 @@
1
+ name: SaigonTech
2
+ description: SaigonTech dark theme with brand green accents
3
+
4
+ colors:
5
+ primary_bg: "#0f172a"
6
+ card_bg: "#1e293b"
7
+ secondary_bg: "#334155"
8
+ borders: "#475569"
9
+ accent: "#64748b"
10
+ primary_green: "#7fb239"
11
+ secondary_green: "#638b2c"
12
+ primary_text: "#f8fafc"
13
+ secondary_text: "#94a3b8"
14
+ red: "#ef4444"
15
+ dark_red: "#dc2626"
16
+ darker_red: "#b91c1c"
17
+ white: "#ffffff"
18
+ transparent: "transparent"
19
+
20
+ icons:
21
+ web_search: "\U0001F50D"
22
+ fetch_webpage: "\U0001F310"
23
+ transfer: "\u2197\ufe0f"
24
+ adapt: "\U0001F9E0"
25
+ retrieve_memory: "\U0001F4AD"
26
+ forget_memory_topic: "\U0001F5D1\ufe0f"
27
+ read_repo: "\U0001F4C2"
28
+ get_file: "\U0001F4C4"
29
+ default: "\U0001F527"
30
+
31
+ styles:
32
+ main: |
33
+ QMainWindow {
34
+ background-color: ${primary_bg};
35
+ }
36
+ QScrollArea {
37
+ border: none;
38
+ background-color: ${card_bg};
39
+ }
40
+ QWidget#chatContainer {
41
+ background-color: ${primary_bg};
42
+ }
43
+ QSplitter::handle {
44
+ background-color: ${secondary_bg};
45
+ }
46
+ QSplitter::handle:hover {
47
+ background-color: ${borders};
48
+ }
49
+ QSplitter::handle:pressed {
50
+ background-color: ${accent};
51
+ }
52
+ QStatusBar {
53
+ background-color: ${card_bg};
54
+ color: ${primary_text};
55
+ }
56
+ QToolTip {
57
+ background-color: ${secondary_bg};
58
+ color: ${primary_text};
59
+ border: 1px solid ${borders};
60
+ padding: 4px;
61
+ }
62
+ QMessageBox {
63
+ background-color: ${card_bg};
64
+ }
65
+ QMessageBox QLabel {
66
+ color: ${primary_text};
67
+ background-color: ${transparent};
68
+ }
69
+ QListView {
70
+ background-color: ${secondary_bg};
71
+ color: ${primary_text};
72
+ border: 1px solid ${borders};
73
+ padding: 2px;
74
+ outline: 0px;
75
+ }
76
+ QListView::item {
77
+ padding: 4px 8px;
78
+ border-radius: 2px;
79
+ }
80
+ QListView::item:selected {
81
+ background-color: ${accent};
82
+ color: ${primary_text};
83
+ }
84
+ QListView::item:hover {
85
+ background-color: ${borders};
86
+ }
87
+ QScrollBar:vertical {
88
+ border: none;
89
+ background: ${card_bg};
90
+ width: 10px;
91
+ margin: 0px;
92
+ }
93
+ QScrollBar::handle:vertical {
94
+ background: ${borders};
95
+ min-height: 20px;
96
+ border-radius: 5px;
97
+ }
98
+ QScrollBar::handle:vertical:hover {
99
+ background: ${accent};
100
+ }
101
+ QScrollBar::handle:vertical:pressed {
102
+ background: ${primary_green};
103
+ }
104
+ QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical {
105
+ border: none;
106
+ background: none;
107
+ height: 0px;
108
+ }
109
+ QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical {
110
+ background: none;
111
+ }
112
+ QScrollBar:horizontal {
113
+ border: none;
114
+ background: ${card_bg};
115
+ height: 10px;
116
+ margin: 0px;
117
+ }
118
+ QScrollBar::handle:horizontal {
119
+ background: ${borders};
120
+ min-width: 20px;
121
+ border-radius: 5px;
122
+ }
123
+ QScrollBar::handle:horizontal:hover {
124
+ background: ${accent};
125
+ }
126
+ QScrollBar::handle:horizontal:pressed {
127
+ background: ${primary_green};
128
+ }
129
+ QScrollBar::add-line:horizontal, QScrollBar::sub-line:horizontal {
130
+ border: none;
131
+ background: none;
132
+ width: 0px;
133
+ }
134
+ QScrollBar::add-page:horizontal, QScrollBar::sub-page:horizontal {
135
+ background: none;
136
+ }
137
+ QLabel QMenu {
138
+ background-color: ${card_bg};
139
+ border: 1px solid ${borders};
140
+ padding: 4px;
141
+ border-radius: 6px;
142
+ }
143
+ QLabel QMenu::item {
144
+ color: ${primary_text};
145
+ padding: 8px 24px 8px 12px;
146
+ border-radius: 4px;
147
+ margin: 2px;
148
+ }
149
+ QLabel QMenu::item:selected {
150
+ background-color: ${primary_green};
151
+ color: ${white};
152
+ }
153
+ QLabel QMenu::item:pressed {
154
+ background-color: ${secondary_green};
155
+ color: ${white};
156
+ }
157
+ QLabel QMenu::separator {
158
+ height: 1px;
159
+ background: ${borders};
160
+ margin: 4px 8px;
161
+ }
162
+
163
+ button_primary: |
164
+ QPushButton {
165
+ background-color: ${primary_green};
166
+ color: ${white};
167
+ border: none;
168
+ border-radius: 4px;
169
+ padding: 8px;
170
+ font-weight: bold;
171
+ }
172
+ QPushButton:hover {
173
+ background-color: ${secondary_green};
174
+ }
175
+ QPushButton:pressed {
176
+ background-color: ${secondary_green};
177
+ }
178
+ QPushButton:disabled {
179
+ background-color: ${borders};
180
+ color: ${secondary_text};
181
+ }
182
+
183
+ button_secondary: |
184
+ QPushButton {
185
+ background-color: ${accent};
186
+ color: ${primary_text};
187
+ border: none;
188
+ border-radius: 4px;
189
+ padding: 8px;
190
+ font-weight: bold;
191
+ }
192
+ QPushButton:hover {
193
+ background-color: ${primary_green};
194
+ color: ${white};
195
+ }
196
+ QPushButton:pressed {
197
+ background-color: ${secondary_green};
198
+ color: ${white};
199
+ }
200
+ QPushButton:disabled {
201
+ background-color: ${borders};
202
+ color: ${secondary_text};
203
+ }
204
+
205
+ button_stop: |
206
+ QPushButton {
207
+ background-color: ${red};
208
+ color: ${white};
209
+ border: none;
210
+ border-radius: 4px;
211
+ padding: 8px;
212
+ font-weight: bold;
213
+ }
214
+ QPushButton:hover {
215
+ background-color: ${dark_red};
216
+ }
217
+ QPushButton:pressed {
218
+ background-color: ${darker_red};
219
+ }
220
+
221
+ button_stop_stopping: |
222
+ QPushButton {
223
+ background-color: ${accent};
224
+ color: ${secondary_text};
225
+ border: none;
226
+ border-radius: 4px;
227
+ padding: 8px;
228
+ font-weight: bold;
229
+ }
230
+
231
+ button_red: |
232
+ QPushButton {
233
+ background-color: ${red};
234
+ color: ${white};
235
+ border: none;
236
+ border-radius: 4px;
237
+ padding: 8px;
238
+ font-weight: bold;
239
+ }
240
+ QPushButton:hover {
241
+ background-color: ${dark_red};
242
+ }
243
+ QPushButton:pressed {
244
+ background-color: ${darker_red};
245
+ }
246
+ QPushButton:disabled {
247
+ background-color: ${borders};
248
+ color: ${secondary_text};
249
+ }
250
+
251
+ button_green: |
252
+ QPushButton {
253
+ background-color: ${primary_green};
254
+ color: ${white};
255
+ border: none;
256
+ border-radius: 4px;
257
+ padding: 8px;
258
+ font-weight: bold;
259
+ }
260
+ QPushButton:hover {
261
+ background-color: ${secondary_green};
262
+ }
263
+ QPushButton:pressed {
264
+ background-color: ${secondary_green};
265
+ }
266
+ QPushButton:disabled {
267
+ background-color: ${borders};
268
+ color: ${secondary_text};
269
+ }
270
+
271
+ button_disabled: |
272
+ QPushButton {
273
+ background-color: ${borders};
274
+ color: ${secondary_text};
275
+ border: none;
276
+ border-radius: 4px;
277
+ padding: 8px;
278
+ font-weight: bold;
279
+ }
280
+
281
+ button_menu: |
282
+ QPushButton {
283
+ background-color: ${primary_green};
284
+ color: ${white};
285
+ border: none;
286
+ border-radius: 4px;
287
+ padding: 8px;
288
+ font-weight: bold;
289
+ padding-left: 12px;
290
+ }
291
+ QPushButton:hover {
292
+ background-color: ${secondary_green};
293
+ }
294
+ QPushButton:pressed {
295
+ background-color: ${secondary_green};
296
+ }
297
+ QPushButton:disabled {
298
+ background-color: ${borders};
299
+ color: ${secondary_text};
300
+ }
301
+ QPushButton::menu-indicator {
302
+ subcontrol-origin: padding;
303
+ subcontrol-position: right center;
304
+ right: 5px;
305
+ width: 16px;
306
+ }
307
+
308
+ button_agent_menu: |
309
+ QPushButton {
310
+ background-color: ${primary_green};
311
+ color: ${white};
312
+ border: none;
313
+ border-radius: 4px;
314
+ padding: 8px;
315
+ font-weight: bold;
316
+ padding-left: 12px;
317
+ }
318
+ QPushButton:hover {
319
+ background-color: ${secondary_green};
320
+ }
321
+ QPushButton:pressed {
322
+ background-color: ${secondary_green};
323
+ }
324
+ QPushButton:disabled {
325
+ background-color: ${borders};
326
+ color: ${secondary_text};
327
+ }
328
+ QPushButton::menu-indicator {
329
+ subcontrol-origin: padding;
330
+ subcontrol-position: right center;
331
+ right: 5px;
332
+ width: 16px;
333
+ }
334
+
335
+ button_rollback: |
336
+ QPushButton {
337
+ background-color: ${primary_green};
338
+ color: ${white};
339
+ border: none;
340
+ border-radius: 15px;
341
+ padding: 8px;
342
+ font-size: 24px;
343
+ font-weight: bold;
344
+ width: 30px;
345
+ height: 30px;
346
+ }
347
+ QPushButton:hover {
348
+ background-color: ${secondary_green};
349
+ }
350
+ QPushButton:pressed {
351
+ background-color: ${secondary_green};
352
+ }
353
+
354
+ button_consolidated: |
355
+ QPushButton {
356
+ background-color: ${primary_green};
357
+ color: ${white};
358
+ border: none;
359
+ border-radius: 15px;
360
+ padding: 8px;
361
+ font-size: 16px;
362
+ font-weight: bold;
363
+ width: 30px;
364
+ height: 30px;
365
+ }
366
+ QPushButton:hover {
367
+ background-color: ${secondary_green};
368
+ }
369
+ QPushButton:pressed {
370
+ background-color: ${secondary_green};
371
+ }
372
+
373
+ button_unconsolidate: |
374
+ QPushButton {
375
+ background-color: ${accent};
376
+ color: ${white};
377
+ border: none;
378
+ border-radius: 15px;
379
+ padding: 8px;
380
+ font-size: 16px;
381
+ font-weight: bold;
382
+ width: 30px;
383
+ height: 30px;
384
+ }
385
+ QPushButton:hover {
386
+ background-color: ${red};
387
+ }
388
+ QPushButton:pressed {
389
+ background-color: ${dark_red};
390
+ }
391
+
392
+ api_keys_group: |
393
+ QGroupBox {
394
+ background-color: ${primary_bg};
395
+ }
396
+ QLabel {
397
+ background-color: ${primary_bg};
398
+ }
399
+
400
+ editor_container_widget: |
401
+ QWidget {
402
+ background-color: ${card_bg};
403
+ }
404
+
405
+ combo_box: |
406
+ QComboBox {
407
+ background-color: ${secondary_bg};
408
+ color: ${primary_text};
409
+ border: 1px solid ${borders};
410
+ border-radius: 4px;
411
+ padding: 6px 8px;
412
+ min-width: 120px;
413
+ }
414
+ QComboBox:hover {
415
+ border: 1px solid ${accent};
416
+ }
417
+ QComboBox:focus {
418
+ border: 1px solid ${primary_green};
419
+ }
420
+ QComboBox::drop-down {
421
+ subcontrol-origin: padding;
422
+ subcontrol-position: top right;
423
+ width: 20px;
424
+ border-left-width: 1px;
425
+ border-left-color: ${borders};
426
+ border-left-style: solid;
427
+ border-top-right-radius: 4px;
428
+ border-bottom-right-radius: 4px;
429
+ background-color: ${borders};
430
+ }
431
+ QComboBox::down-arrow {
432
+ width: 0;
433
+ height: 0;
434
+ border-left: 4px solid ${transparent};
435
+ border-right: 4px solid ${transparent};
436
+ border-top: 6px solid ${primary_text};
437
+ }
438
+ QComboBox QAbstractItemView {
439
+ background-color: ${secondary_bg};
440
+ color: ${primary_text};
441
+ border: 1px solid ${borders};
442
+ border-radius: 4px;
443
+ selection-background-color: ${primary_green};
444
+ selection-color: ${white};
445
+ outline: 0px;
446
+ }
447
+
448
+ text_input: |
449
+ QTextEdit {
450
+ background-color: ${borders};
451
+ color: ${primary_text};
452
+ border: 1px solid ${borders};
453
+ border-radius: 4px;
454
+ padding: 8px;
455
+ }
456
+ QTextEdit:focus {
457
+ border: 1px solid ${primary_green};
458
+ }
459
+
460
+ line_edit: |
461
+ QLineEdit {
462
+ background-color: ${borders};
463
+ color: ${primary_text};
464
+ border: 1px solid ${borders};
465
+ border-radius: 4px;
466
+ padding: 8px;
467
+ }
468
+ QLineEdit:focus {
469
+ border: 1px solid ${primary_green};
470
+ }
471
+
472
+ menu_bar: |
473
+ QMenuBar {
474
+ background-color: ${card_bg};
475
+ color: ${primary_text};
476
+ padding: 2px;
477
+ }
478
+ QMenuBar::item {
479
+ background-color: ${transparent};
480
+ color: ${primary_text};
481
+ padding: 4px 12px;
482
+ border-radius: 4px;
483
+ }
484
+ QMenuBar::item:selected {
485
+ background-color: ${secondary_bg};
486
+ }
487
+ QMenuBar::item:pressed {
488
+ background-color: ${primary_green};
489
+ color: ${white};
490
+ }
491
+ QMenu {
492
+ background-color: ${card_bg};
493
+ color: ${primary_text};
494
+ border: 1px solid ${borders};
495
+ padding: 4px;
496
+ }
497
+ QMenu::item {
498
+ padding: 6px 24px 6px 12px;
499
+ border-radius: 4px;
500
+ }
501
+ QMenu::item:selected {
502
+ background-color: ${primary_green};
503
+ color: ${white};
504
+ }
505
+ QMenu::separator {
506
+ height: 1px;
507
+ background: ${borders};
508
+ margin-left: 10px;
509
+ margin-right: 5px;
510
+ }
511
+
512
+ context_menu: |
513
+ QMenu {
514
+ background-color: ${card_bg};
515
+ color: ${primary_text};
516
+ border: 1px solid ${borders};
517
+ padding: 4px;
518
+ border-radius: 6px;
519
+ }
520
+ QMenu::item {
521
+ padding: 8px 24px 8px 12px;
522
+ border-radius: 4px;
523
+ margin: 2px;
524
+ color: ${primary_text};
525
+ }
526
+ QMenu::item:selected {
527
+ background-color: ${primary_green};
528
+ color: ${white};
529
+ }
530
+ QMenu::item:pressed {
531
+ background-color: ${secondary_green};
532
+ color: ${white};
533
+ }
534
+ QMenu::item:disabled {
535
+ background-color: ${transparent};
536
+ color: ${secondary_text};
537
+ }
538
+ QMenu::separator {
539
+ height: 1px;
540
+ background: ${borders};
541
+ margin: 4px 8px;
542
+ }
543
+
544
+ agent_menu: |
545
+ QMenu {
546
+ background-color: ${card_bg};
547
+ color: ${primary_text};
548
+ border: 1px solid ${secondary_bg};
549
+ border-radius: 4px;
550
+ padding: 4px;
551
+ }
552
+ QMenu::item {
553
+ padding: 6px 20px;
554
+ background-color: ${transparent};
555
+ }
556
+ QMenu::item:selected {
557
+ background-color: ${primary_green};
558
+ color: ${white};
559
+ border-radius: 3px;
560
+ }
561
+ QMenu::separator {
562
+ height: 1px;
563
+ background-color: ${secondary_bg};
564
+ margin-left: 5px;
565
+ margin-right: 5px;
566
+ }
567
+
568
+ status_indicator: |
569
+ QLabel {
570
+ background-color: ${secondary_bg};
571
+ color: ${primary_text};
572
+ padding: 8px;
573
+ border-radius: 5px;
574
+ font-weight: bold;
575
+ }
576
+
577
+ version_label: |
578
+ QLabel {
579
+ color: ${secondary_text};
580
+ padding: 2px 8px;
581
+ font-size: 11px;
582
+ }
583
+
584
+ system_message_toggle_button: |
585
+ QPushButton {
586
+ background-color: ${transparent};
587
+ color: ${primary_green};
588
+ border: none;
589
+ text-align: left;
590
+ padding: 2px;
591
+ }
592
+ QPushButton:hover {
593
+ color: ${secondary_green};
594
+ }
595
+
596
+ sidebar: "background-color: ${card_bg};"
597
+
598
+ conversation_list: |
599
+ QListWidget {
600
+ background-color: ${primary_bg};
601
+ border: 1px solid ${secondary_bg};
602
+ border-radius: 4px;
603
+ }
604
+ QListWidget::item {
605
+ color: ${primary_text};
606
+ background-color: ${primary_bg};
607
+ border: none;
608
+ border-bottom: 1px solid ${secondary_bg};
609
+ margin: 0px;
610
+ padding: 8px;
611
+ }
612
+ QListWidget::item:selected {
613
+ background-color: ${primary_green};
614
+ color: ${white};
615
+ }
616
+ QListWidget::item:hover:!selected {
617
+ background-color: ${secondary_bg};
618
+ }
619
+
620
+ search_box: |
621
+ QLineEdit {
622
+ background-color: ${borders};
623
+ color: ${primary_text};
624
+ border: 1px solid ${borders};
625
+ border-radius: 4px;
626
+ padding: 8px;
627
+ }
628
+ QLineEdit:focus {
629
+ border: 1px solid ${primary_green};
630
+ }
631
+
632
+ token_usage: |
633
+ QLabel {
634
+ color: ${primary_text};
635
+ font-weight: bold;
636
+ padding: 8px;
637
+ background-color: ${card_bg};
638
+ border-top: 1px solid ${secondary_bg};
639
+ }
640
+
641
+ token_usage_widget: "background-color: ${card_bg};"
642
+
643
+ user_bubble: |
644
+ QFrame {
645
+ border-radius: 5px;
646
+ background-color: ${primary_green};
647
+ border: none;
648
+ padding: 2px;
649
+ }
650
+
651
+ assistant_bubble: |
652
+ QFrame {
653
+ border-radius: 5px;
654
+ background-color: ${secondary_bg};
655
+ border: none;
656
+ padding: 2px;
657
+ }
658
+
659
+ thinking_bubble: |
660
+ QFrame {
661
+ border-radius: 5px;
662
+ background-color: ${borders};
663
+ border: none;
664
+ padding: 2px;
665
+ }
666
+
667
+ consolidated_bubble: |
668
+ QFrame {
669
+ border-radius: 5px;
670
+ background-color: ${secondary_bg};
671
+ border: 1px solid ${borders};
672
+ padding: 2px;
673
+ }
674
+
675
+ tool_dialog_text_edit: |
676
+ QTextEdit {
677
+ background-color: ${borders};
678
+ color: ${primary_text};
679
+ border: 1px solid ${borders};
680
+ border-radius: 4px;
681
+ padding: 8px;
682
+ font-family: monospace;
683
+ }
684
+ QTextEdit:focus {
685
+ border: 1px solid ${primary_green};
686
+ }
687
+
688
+ tool_dialog_yes_button: |
689
+ QPushButton {
690
+ background-color: ${primary_green};
691
+ color: ${white};
692
+ font-weight: bold;
693
+ padding: 6px 14px;
694
+ border: none;
695
+ border-radius: 4px;
696
+ }
697
+ QPushButton:hover {
698
+ background-color: ${secondary_green};
699
+ }
700
+
701
+ tool_dialog_all_button: |
702
+ QPushButton {
703
+ background-color: ${primary_green};
704
+ color: ${white};
705
+ font-weight: bold;
706
+ padding: 6px 14px;
707
+ border: none;
708
+ border-radius: 4px;
709
+ }
710
+ QPushButton:hover {
711
+ background-color: ${secondary_green};
712
+ }
713
+
714
+ tool_dialog_no_button: |
715
+ QPushButton {
716
+ background-color: ${red};
717
+ color: ${white};
718
+ font-weight: bold;
719
+ padding: 6px 14px;
720
+ border: none;
721
+ border-radius: 4px;
722
+ }
723
+ QPushButton:hover {
724
+ background-color: ${dark_red};
725
+ }
726
+
727
+ system_message_label: |
728
+ color: ${secondary_text};
729
+ padding: 2px;
730
+
731
+ system_message_toggle: |
732
+ QPushButton {
733
+ background-color: ${transparent};
734
+ color: ${primary_green};
735
+ border: none;
736
+ text-align: left;
737
+ padding: 2px;
738
+ }
739
+ QPushButton:hover {
740
+ color: ${secondary_green};
741
+ }
742
+
743
+ config_dialog: |
744
+ QDialog {
745
+ background-color: ${primary_bg};
746
+ color: ${primary_text};
747
+ }
748
+ QTabWidget::pane {
749
+ border: 1px solid ${secondary_bg};
750
+ background-color: ${card_bg};
751
+ border-radius: 4px;
752
+ }
753
+ QTabBar::tab {
754
+ background-color: ${secondary_bg};
755
+ color: ${primary_text};
756
+ padding: 8px;
757
+ border-top-left-radius: 4px;
758
+ border-top-right-radius: 4px;
759
+ border: 1px solid ${borders};
760
+ border-bottom: none;
761
+ margin-right: 2px;
762
+ }
763
+ QTabBar::tab:selected {
764
+ background-color: ${card_bg};
765
+ border-bottom-color: ${card_bg};
766
+ color: ${primary_green};
767
+ }
768
+ QTabBar::tab:hover:!selected {
769
+ background-color: ${borders};
770
+ }
771
+ QPushButton {
772
+ background-color: ${primary_green};
773
+ color: ${white};
774
+ border: none;
775
+ border-radius: 4px;
776
+ padding: 8px;
777
+ font-weight: bold;
778
+ }
779
+ QPushButton:hover {
780
+ background-color: ${secondary_green};
781
+ }
782
+ QPushButton:pressed {
783
+ background-color: ${secondary_green};
784
+ }
785
+ QPushButton:disabled {
786
+ background-color: ${borders};
787
+ color: ${secondary_text};
788
+ }
789
+ QListWidget {
790
+ background-color: ${primary_bg};
791
+ border: 1px solid ${secondary_bg};
792
+ border-radius: 4px;
793
+ padding: 4px;
794
+ color: ${primary_text};
795
+ }
796
+ QListWidget::item {
797
+ padding: 6px;
798
+ border-radius: 2px;
799
+ color: ${primary_text};
800
+ background-color: ${primary_bg};
801
+ }
802
+ QListWidget::item:selected {
803
+ background-color: ${primary_green};
804
+ color: ${white};
805
+ }
806
+ QListWidget::item:hover:!selected {
807
+ background-color: ${secondary_bg};
808
+ }
809
+ QLineEdit, QTextEdit {
810
+ border: 1px solid ${borders};
811
+ border-radius: 4px;
812
+ padding: 6px;
813
+ background-color: ${borders};
814
+ color: ${primary_text};
815
+ }
816
+ QLineEdit:focus, QTextEdit:focus {
817
+ border: 1px solid ${primary_green};
818
+ }
819
+ QCheckBox {
820
+ spacing: 8px;
821
+ color: ${primary_text};
822
+ }
823
+ QCheckBox::indicator {
824
+ width: 18px;
825
+ height: 18px;
826
+ border-radius: 3px;
827
+ background-color: ${borders};
828
+ border: 2px solid ${accent};
829
+ }
830
+ QCheckBox::indicator:checked {
831
+ background-color: ${primary_green};
832
+ border: 2px solid ${primary_green};
833
+ }
834
+ QCheckBox::indicator:indeterminate {
835
+ background-color: #f59e0b;
836
+ border: 2px solid #f59e0b;
837
+ border-radius: 9px;
838
+ }
839
+ QCheckBox::indicator:hover {
840
+ border: 2px solid ${secondary_green};
841
+ }
842
+ QCheckBox::indicator:hover:checked {
843
+ background-color: ${secondary_green};
844
+ border: 2px solid ${secondary_green};
845
+ }
846
+ QCheckBox::indicator:hover:indeterminate {
847
+ background-color: #d97706;
848
+ border: 2px solid #d97706;
849
+ }
850
+ QCheckBox::indicator:disabled {
851
+ background-color: ${secondary_bg};
852
+ border: 2px solid ${borders};
853
+ }
854
+ QGroupBox {
855
+ font-weight: bold;
856
+ border: 1px solid ${borders};
857
+ border-radius: 4px;
858
+ margin-top: 12px;
859
+ padding-top: 12px;
860
+ background-color: ${card_bg};
861
+ }
862
+ QGroupBox::title {
863
+ subcontrol-origin: margin;
864
+ subcontrol-position: top left;
865
+ padding: 0 4px 4px 4px;
866
+ color: ${primary_green};
867
+ background-color: ${card_bg};
868
+ left: 10px;
869
+ }
870
+ QScrollArea {
871
+ background-color: ${card_bg};
872
+ border: none;
873
+ }
874
+ QScrollArea > QWidget > QWidget {
875
+ background-color: ${card_bg};
876
+ }
877
+ QLabel {
878
+ color: ${primary_text};
879
+ padding: 2px;
880
+ }
881
+ QSplitter::handle {
882
+ background-color: ${secondary_bg};
883
+ }
884
+ QSplitter::handle:hover {
885
+ background-color: ${borders};
886
+ }
887
+ QSplitter::handle:pressed {
888
+ background-color: ${accent};
889
+ }
890
+
891
+ panel: "background-color: ${card_bg};"
892
+
893
+ scroll_area: |
894
+ background-color: ${card_bg};
895
+ border: none;
896
+
897
+ editor_widget: "background-color: ${card_bg};"
898
+
899
+ group_box: "background-color: ${primary_bg};"
900
+
901
+ splitter_color: |
902
+ QSplitter::handle {
903
+ background-color: ${card_bg};
904
+ }
905
+ QSplitter::handle:hover {
906
+ background-color: ${secondary_bg};
907
+ }
908
+ QSplitter::handle:pressed {
909
+ background-color: ${borders};
910
+ }
911
+
912
+ metadata_header_label: |
913
+ QLabel {
914
+ color: ${secondary_text};
915
+ font-style: italic;
916
+ padding-bottom: 5px;
917
+ }
918
+
919
+ user_message_label: |
920
+ QLabel {
921
+ color: ${white};
922
+ }
923
+
924
+ assistant_message_label: |
925
+ QLabel {
926
+ color: ${primary_text};
927
+ }
928
+
929
+ thinking_message_label: |
930
+ QLabel {
931
+ color: ${secondary_text};
932
+ }
933
+
934
+ user_sender_label: |
935
+ QLabel {
936
+ font-weight: bold;
937
+ color: ${white};
938
+ padding: 2px;
939
+ }
940
+
941
+ assistant_sender_label: |
942
+ QLabel {
943
+ font-weight: bold;
944
+ color: ${primary_text};
945
+ padding: 2px;
946
+ }
947
+
948
+ thinking_sender_label: |
949
+ QLabel {
950
+ font-weight: bold;
951
+ color: ${secondary_text};
952
+ padding: 2px;
953
+ }
954
+
955
+ user_file_name_label: |
956
+ QLabel {
957
+ font-weight: bold;
958
+ color: ${white};
959
+ padding-left: 10px;
960
+ }
961
+
962
+ assistant_file_name_label: |
963
+ QLabel {
964
+ font-weight: bold;
965
+ color: ${primary_text};
966
+ padding-left: 10px;
967
+ }
968
+
969
+ user_file_info_label: |
970
+ QLabel {
971
+ color: ${white};
972
+ }
973
+
974
+ assistant_file_info_label: |
975
+ QLabel {
976
+ color: ${secondary_text};
977
+ }
978
+
979
+ code_css: |
980
+ table td {border: 1px solid ${primary_text}; padding: 5px;}
981
+ table { border-collapse: collapse; }
982
+ pre { line-height: 1; background-color: ${card_bg}; border-radius: 8px; padding: 12px; color: ${primary_text}; white-space: pre-wrap; word-wrap: break-word; }
983
+ td.linenos .normal { color: ${secondary_text}; background-color: transparent; padding-left: 5px; padding-right: 5px; }
984
+ span.linenos { color: ${secondary_text}; background-color: transparent; padding-left: 5px; padding-right: 5px; }
985
+ td.linenos .special { color: ${primary_text}; background-color: ${secondary_bg}; padding-left: 5px; padding-right: 5px; }
986
+ span.linenos.special { color: ${primary_text}; background-color: ${secondary_bg}; padding-left: 5px; padding-right: 5px; }
987
+ .codehilite .hll { background-color: ${secondary_bg} }
988
+ .codehilite { background: ${card_bg}; border-radius: 8px; padding: 10px; color: ${primary_text}; }
989
+ .codehilite .c { color: ${secondary_text}; font-style: italic }
990
+ .codehilite .err { border: 1px solid ${red}; color: ${red}; }
991
+ .codehilite .k { color: ${primary_green}; font-weight: bold }
992
+ .codehilite .o { color: ${secondary_green} }
993
+ .codehilite .ch { color: ${secondary_text}; font-style: italic }
994
+ .codehilite .cm { color: ${secondary_text}; font-style: italic }
995
+ .codehilite .cp { color: ${primary_green} }
996
+ .codehilite .cpf { color: ${secondary_text}; font-style: italic }
997
+ .codehilite .c1 { color: ${secondary_text}; font-style: italic }
998
+ .codehilite .cs { color: ${secondary_text}; font-style: italic }
999
+ .codehilite .gd { color: ${red} }
1000
+ .codehilite .ge { font-style: italic }
1001
+ .codehilite .ges { font-weight: bold; font-style: italic }
1002
+ .codehilite .gr { color: ${red} }
1003
+ .codehilite .gh { color: ${primary_green}; font-weight: bold }
1004
+ .codehilite .gi { color: ${secondary_green} }
1005
+ .codehilite .go { color: ${primary_text} }
1006
+ .codehilite .gp { color: ${primary_green}; font-weight: bold }
1007
+ .codehilite .gs { font-weight: bold }
1008
+ .codehilite .gu { color: ${primary_green}; font-weight: bold }
1009
+ .codehilite .gt { color: ${red} }
1010
+ .codehilite .kc { color: ${primary_green}; font-weight: bold }
1011
+ .codehilite .kd { color: ${primary_green}; font-weight: bold }
1012
+ .codehilite .kn { color: ${primary_green}; font-weight: bold }
1013
+ .codehilite .kp { color: ${primary_green} }
1014
+ .codehilite .kr { color: ${primary_green}; font-weight: bold }
1015
+ .codehilite .kt { color: ${accent}; font-weight: bold }
1016
+ .codehilite .m { color: ${accent} }
1017
+ .codehilite .s { color: ${secondary_green} }
1018
+ .codehilite .na { color: ${accent} }
1019
+ .codehilite .nb { color: ${primary_green} }
1020
+ .codehilite .nc { color: ${primary_green}; font-weight: bold }
1021
+ .codehilite .no { color: ${accent} }
1022
+ .codehilite .nd { color: ${primary_green} }
1023
+ .codehilite .ni { color: ${primary_text}; font-weight: bold }
1024
+ .codehilite .ne { color: ${red}; font-weight: bold }
1025
+ .codehilite .nf { color: ${primary_green}; font-weight: bold }
1026
+ .codehilite .nl { color: ${primary_text} }
1027
+ .codehilite .nn { color: ${primary_green}; font-weight: bold }
1028
+ .codehilite .nt { color: ${primary_green}; font-weight: bold }
1029
+ .codehilite .nv { color: ${accent} }
1030
+ .codehilite .ow { color: ${secondary_green}; font-weight: bold }
1031
+ .codehilite .w { color: ${borders} }
1032
+ .codehilite .mb { color: ${accent} }
1033
+ .codehilite .mf { color: ${accent} }
1034
+ .codehilite .mh { color: ${accent} }
1035
+ .codehilite .mi { color: ${accent} }
1036
+ .codehilite .mo { color: ${accent} }
1037
+ .codehilite .sa { color: ${secondary_green} }
1038
+ .codehilite .sb { color: ${secondary_green} }
1039
+ .codehilite .sc { color: ${secondary_green} }
1040
+ .codehilite .dl { color: ${secondary_green} }
1041
+ .codehilite .sd { color: ${secondary_text}; font-style: italic }
1042
+ .codehilite .s2 { color: ${secondary_green} }
1043
+ .codehilite .se { color: ${accent}; font-weight: bold }
1044
+ .codehilite .sh { color: ${secondary_green} }
1045
+ .codehilite .si { color: ${secondary_green}; font-weight: bold }
1046
+ .codehilite .sx { color: ${secondary_green} }
1047
+ .codehilite .sr { color: ${secondary_green} }
1048
+ .codehilite .s1 { color: ${secondary_green} }
1049
+ .codehilite .ss { color: ${secondary_green} }
1050
+ .codehilite .bp { color: ${primary_green} }
1051
+ .codehilite .fm { color: ${primary_green}; font-weight: bold }
1052
+ .codehilite .vc { color: ${accent} }
1053
+ .codehilite .vg { color: ${accent} }
1054
+ .codehilite .vi { color: ${accent} }
1055
+ .codehilite .vm { color: ${accent} }
1056
+ .codehilite .il { color: ${accent} }
1057
+
1058
+ checkbox: |
1059
+ QCheckBox {
1060
+ spacing: 8px;
1061
+ color: ${primary_text};
1062
+ }
1063
+ QCheckBox::indicator {
1064
+ width: 18px;
1065
+ height: 18px;
1066
+ border-radius: 3px;
1067
+ background-color: ${borders};
1068
+ border: 2px solid ${accent};
1069
+ }
1070
+ QCheckBox::indicator:checked {
1071
+ background-color: ${primary_green};
1072
+ border: 2px solid ${primary_green};
1073
+ }
1074
+ QCheckBox::indicator:indeterminate {
1075
+ background-color: #f59e0b;
1076
+ border: 2px solid #f59e0b;
1077
+ border-radius: 9px;
1078
+ }
1079
+ QCheckBox::indicator:hover {
1080
+ border: 2px solid ${secondary_green};
1081
+ }
1082
+ QCheckBox::indicator:hover:checked {
1083
+ background-color: ${secondary_green};
1084
+ border: 2px solid ${secondary_green};
1085
+ }
1086
+ QCheckBox::indicator:hover:indeterminate {
1087
+ background-color: #d97706;
1088
+ border: 2px solid #d97706;
1089
+ }
1090
+ QCheckBox::indicator:disabled {
1091
+ background-color: ${secondary_bg};
1092
+ border: 2px solid ${borders};
1093
+ }
1094
+
1095
+ tool_widget: |
1096
+ QWidget {
1097
+ background-color: ${transparent};
1098
+ }
1099
+
1100
+ tool_card: |
1101
+ QFrame#toolCard {
1102
+ border-radius: 6px;
1103
+ background-color: rgba(127, 178, 57, 0.08);
1104
+ border: 1px solid rgba(127, 178, 57, 0.4);
1105
+ padding: 1px;
1106
+ }
1107
+
1108
+ tool_card_error: |
1109
+ QFrame#toolCard {
1110
+ border-radius: 6px;
1111
+ background-color: rgba(239, 68, 68, 0.08);
1112
+ border: 1px solid rgba(239, 68, 68, 0.4);
1113
+ padding: 1px;
1114
+ }
1115
+
1116
+ tool_header: |
1117
+ QLabel {
1118
+ font-weight: 500;
1119
+ color: ${secondary_text};
1120
+ }
1121
+
1122
+ tool_toggle_button: |
1123
+ QPushButton {
1124
+ background-color: ${transparent};
1125
+ border: none;
1126
+ color: ${secondary_text};
1127
+ font-weight: normal;
1128
+ font-size: 11px;
1129
+ }
1130
+ QPushButton:hover {
1131
+ color: ${primary_green};
1132
+ }
1133
+
1134
+ tool_status: |
1135
+ QLabel {
1136
+ font-weight: 500;
1137
+ padding: 2px;
1138
+ font-size: 11px;
1139
+ }
1140
+ QLabel[status="running"] {
1141
+ color: ${primary_green};
1142
+ }
1143
+ QLabel[status="complete"] {
1144
+ color: ${secondary_green};
1145
+ }
1146
+ QLabel[status="error"] {
1147
+ color: ${red};
1148
+ }
1149
+
1150
+ tool_content: |
1151
+ QLabel {
1152
+ color: ${secondary_text};
1153
+ padding: 1px;
1154
+ font-size: 11px;
1155
+ }
1156
+ QLabel[role="title"] {
1157
+ font-weight: 500;
1158
+ color: ${primary_text};
1159
+ font-size: 12px;
1160
+ }
1161
+ QLabel[role="key"] {
1162
+ color: ${primary_green};
1163
+ font-weight: 500;
1164
+ font-size: 11px;
1165
+ }
1166
+ QLabel[role="value"] {
1167
+ color: ${secondary_text};
1168
+ font-size: 11px;
1169
+ }
1170
+ QLabel[role="error"] {
1171
+ color: ${red};
1172
+ font-size: 11px;
1173
+ }
1174
+
1175
+ tool_progress: |
1176
+ QProgressBar {
1177
+ border: none;
1178
+ background-color: rgba(71, 85, 105, 0.4);
1179
+ border-radius: 5px;
1180
+ text-align: center;
1181
+ }
1182
+ QProgressBar::chunk {
1183
+ background-color: ${primary_green};
1184
+ border-radius: 5px;
1185
+ }
1186
+
1187
+ tool_separator: |
1188
+ QFrame {
1189
+ background-color: rgba(127, 178, 57, 0.3);
1190
+ border: none;
1191
+ }
1192
+
1193
+ diff_colors:
1194
+ background: ${secondary_bg}
1195
+ panel_bg: ${borders}
1196
+ header_bg: ${card_bg}
1197
+ header_text: ${primary_text}
1198
+ line_number_bg: ${card_bg}
1199
+ line_number_text: ${accent}
1200
+ removed_bg: "#4c2c3a"
1201
+ removed_text: "#fca5a5"
1202
+ removed_highlight: "#fca5a5"
1203
+ added_bg: "#2c4c3a"
1204
+ added_text: ${primary_green}
1205
+ added_highlight: ${primary_green}
1206
+ unchanged_text: ${accent}
1207
+ border: ${borders}
1208
+ block_header_bg: ${secondary_green}
1209
+ block_header_text: ${primary_text}
1210
+
1211
+ json_editor_colors:
1212
+ background: ${borders}
1213
+ text: ${primary_text}
1214
+ border: ${borders}
1215
+ string: ${secondary_green}
1216
+ number: ${accent}
1217
+ keyword: ${primary_green}
1218
+ punctuation: ${primary_text}
1219
+ error: ${red}
1220
+
1221
+ json_editor: |
1222
+ QPlainTextEdit {
1223
+ background-color: ${borders};
1224
+ color: ${primary_text};
1225
+ border: 1px solid ${borders};
1226
+ border-radius: 4px;
1227
+ padding: 8px;
1228
+ font-family: 'Consolas', 'Monaco', 'Courier New', monospace;
1229
+ font-size: 12px;
1230
+ line-height: 1.4;
1231
+ }
1232
+ QPlainTextEdit:focus {
1233
+ border: 1px solid ${primary_green};
1234
+ }
1235
+
1236
+ markdown_editor_colors:
1237
+ background: ${borders}
1238
+ text: ${primary_text}
1239
+ border: ${borders}
1240
+ header: ${primary_green}
1241
+ bold: ${accent}
1242
+ italic: ${secondary_green}
1243
+ code: ${primary_green}
1244
+ code_background: ${secondary_bg}
1245
+ link: ${primary_green}
1246
+ image: ${secondary_green}
1247
+ list: ${accent}
1248
+ blockquote: ${secondary_green}
1249
+ hr: ${secondary_text}
1250
+ strikethrough: ${red}
1251
+ error: ${red}
1252
+
1253
+ markdown_editor: |
1254
+ QPlainTextEdit {
1255
+ background-color: ${borders};
1256
+ color: ${primary_text};
1257
+ border: 1px solid ${borders};
1258
+ border-radius: 4px;
1259
+ padding: 8px;
1260
+ font-family: 'Inter', 'Segoe UI', 'Roboto', sans-serif;
1261
+ font-size: 13px;
1262
+ line-height: 1.6;
1263
+ selection-background-color: ${accent};
1264
+ selection-color: ${primary_text};
1265
+ }
1266
+ QPlainTextEdit:focus {
1267
+ border: 1px solid ${primary_green};
1268
+ }