idun-agent-engine 0.3.9__py3-none-any.whl → 0.4.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 (45) hide show
  1. idun_agent_engine/_version.py +1 -1
  2. idun_agent_engine/agent/adk/adk.py +5 -2
  3. idun_agent_engine/agent/langgraph/langgraph.py +1 -1
  4. idun_agent_engine/core/app_factory.py +1 -1
  5. idun_agent_engine/core/config_builder.py +11 -5
  6. idun_agent_engine/guardrails/guardrails_hub/__init__.py +2 -2
  7. idun_agent_engine/mcp/__init__.py +18 -2
  8. idun_agent_engine/mcp/helpers.py +135 -43
  9. idun_agent_engine/mcp/registry.py +7 -1
  10. idun_agent_engine/server/lifespan.py +22 -0
  11. idun_agent_engine/telemetry/__init__.py +19 -0
  12. idun_agent_engine/telemetry/config.py +29 -0
  13. idun_agent_engine/telemetry/telemetry.py +248 -0
  14. {idun_agent_engine-0.3.9.dist-info → idun_agent_engine-0.4.1.dist-info}/METADATA +12 -8
  15. {idun_agent_engine-0.3.9.dist-info → idun_agent_engine-0.4.1.dist-info}/RECORD +45 -17
  16. idun_platform_cli/groups/agent/package.py +3 -0
  17. idun_platform_cli/groups/agent/serve.py +2 -0
  18. idun_platform_cli/groups/init.py +25 -0
  19. idun_platform_cli/main.py +3 -0
  20. idun_platform_cli/telemetry.py +54 -0
  21. idun_platform_cli/tui/__init__.py +0 -0
  22. idun_platform_cli/tui/css/__init__.py +0 -0
  23. idun_platform_cli/tui/css/create_agent.py +912 -0
  24. idun_platform_cli/tui/css/main.py +89 -0
  25. idun_platform_cli/tui/main.py +87 -0
  26. idun_platform_cli/tui/schemas/__init__.py +0 -0
  27. idun_platform_cli/tui/schemas/create_agent.py +60 -0
  28. idun_platform_cli/tui/screens/__init__.py +0 -0
  29. idun_platform_cli/tui/screens/create_agent.py +622 -0
  30. idun_platform_cli/tui/utils/__init__.py +0 -0
  31. idun_platform_cli/tui/utils/config.py +182 -0
  32. idun_platform_cli/tui/validators/__init__.py +0 -0
  33. idun_platform_cli/tui/validators/guardrails.py +88 -0
  34. idun_platform_cli/tui/validators/mcps.py +84 -0
  35. idun_platform_cli/tui/validators/observability.py +65 -0
  36. idun_platform_cli/tui/widgets/__init__.py +19 -0
  37. idun_platform_cli/tui/widgets/chat_widget.py +153 -0
  38. idun_platform_cli/tui/widgets/guardrails_widget.py +356 -0
  39. idun_platform_cli/tui/widgets/identity_widget.py +252 -0
  40. idun_platform_cli/tui/widgets/mcps_widget.py +230 -0
  41. idun_platform_cli/tui/widgets/memory_widget.py +195 -0
  42. idun_platform_cli/tui/widgets/observability_widget.py +382 -0
  43. idun_platform_cli/tui/widgets/serve_widget.py +82 -0
  44. {idun_agent_engine-0.3.9.dist-info → idun_agent_engine-0.4.1.dist-info}/WHEEL +0 -0
  45. {idun_agent_engine-0.3.9.dist-info → idun_agent_engine-0.4.1.dist-info}/entry_points.txt +0 -0
@@ -0,0 +1,912 @@
1
+ CREATE_AGENT_CSS = """
2
+ Screen {
3
+ layout: vertical;
4
+ align: center middle;
5
+ }
6
+
7
+ .app-container {
8
+ width: 98%;
9
+ max-width: 200;
10
+ height: 90%;
11
+ max-height: 55;
12
+ border: round white;
13
+ border-title-color: yellow;
14
+ border-title-background: $surface;
15
+ border-title-style: bold;
16
+ border-title-align: center;
17
+ }
18
+
19
+ .main-layout {
20
+ width: 100%;
21
+ height: 100%;
22
+ }
23
+
24
+ .nav-container {
25
+ width: 28;
26
+ height: 100%;
27
+ border: round white;
28
+ border-title-color: yellow;
29
+ border-title-background: $surface;
30
+ border-title-style: bold;
31
+ border-title-align: center;
32
+ margin-right: 1;
33
+ padding: 1;
34
+ padding-bottom: 0;
35
+ }
36
+
37
+ .nav-container-active {
38
+ border: round cyan;
39
+ border-title-color: cyan;
40
+ }
41
+
42
+ .nav-pane {
43
+ width: 100%;
44
+ height: auto;
45
+ min-height: 3;
46
+ margin-bottom: 1;
47
+ padding: 0 1 1 1;
48
+ border: round white;
49
+ border-title-color: yellow;
50
+ border-title-background: $surface;
51
+ border-title-style: bold;
52
+ border-title-align: left;
53
+ color: gray;
54
+ }
55
+
56
+ .nav-pane Label {
57
+ margin: 0;
58
+ padding: 0;
59
+ width: 100%;
60
+ }
61
+
62
+ .nav-pane-active {
63
+ border: round cyan;
64
+ color: white;
65
+ border-title-color: cyan;
66
+ background: $surface;
67
+ }
68
+
69
+ .nav-pane-validated {
70
+ border: round green;
71
+ border-title-color: green;
72
+ }
73
+
74
+ .nav-pane:last-child {
75
+ margin-bottom: 0;
76
+ }
77
+
78
+ .content-area {
79
+ width: 1fr;
80
+ height: 100%;
81
+ padding: 0 1;
82
+ overflow-y: auto;
83
+ }
84
+
85
+ #widget-identity, #widget-observability, #widget-guardrails, #widget-mcps, #widget-serve {
86
+ width: 100%;
87
+ height: auto;
88
+ }
89
+
90
+ .header {
91
+ width: 100%;
92
+ height: 3;
93
+ text-align: center;
94
+ color: yellow;
95
+ text-style: bold;
96
+ background: $surface;
97
+ border-bottom: solid white;
98
+ margin-bottom: 1;
99
+ }
100
+
101
+ .section {
102
+ width: 100%;
103
+ height: auto;
104
+ border: none;
105
+ padding: 0;
106
+ margin-bottom: 0;
107
+ }
108
+
109
+ .section-split {
110
+ height: auto;
111
+ }
112
+
113
+ .agent-info-section {
114
+ width: 100%;
115
+ height: auto;
116
+ border: round white;
117
+ padding: 1;
118
+ margin-bottom: 1;
119
+ border-title-color: yellow;
120
+ border-title-background: $surface;
121
+ border-title-style: bold;
122
+ border-title-align: center;
123
+ }
124
+
125
+ .form-fields-container {
126
+ width: 1fr;
127
+ height: auto;
128
+ border: round white;
129
+ border-title-color: yellow;
130
+ border-title-background: $surface;
131
+ border-title-style: bold;
132
+ border-title-align: left;
133
+ padding: 1;
134
+ margin-right: 1;
135
+ }
136
+
137
+ .info-panel {
138
+ width: 1fr;
139
+ height: 100%;
140
+ padding: 0 1;
141
+ margin-left: 1;
142
+ border: round cyan;
143
+ border-title-color: cyan;
144
+ border-title-align: left;
145
+ background: transparent;
146
+ overflow-y: auto;
147
+ }
148
+
149
+ .help-markdown {
150
+ color: white;
151
+ margin: 0;
152
+ }
153
+
154
+ .section-title {
155
+ display: none;
156
+ }
157
+
158
+ .help-section {
159
+ width: 100%;
160
+ border: round gray;
161
+ padding: 0 1;
162
+ height: auto;
163
+ background: $panel;
164
+ border-title-color: gray;
165
+ }
166
+
167
+ .section-description {
168
+ color: gray;
169
+ text-style: dim;
170
+ margin-bottom: 0;
171
+ }
172
+
173
+ .field-row {
174
+ width: 100%;
175
+ height: 3;
176
+ margin: 0;
177
+ align: left middle;
178
+ }
179
+
180
+ .framework-row {
181
+ height: auto;
182
+ margin-bottom: 1;
183
+ }
184
+
185
+ .framework-row .field-label {
186
+ height: auto;
187
+ padding-top: 1;
188
+ }
189
+
190
+ .field-label {
191
+ width: 11;
192
+ color: gray;
193
+ content-align: left middle;
194
+ height: 3;
195
+ }
196
+
197
+ Input {
198
+ height: 3;
199
+ color: white;
200
+ background: transparent;
201
+ margin: 0;
202
+ padding: 0 1;
203
+ border: round white;
204
+ }
205
+
206
+ Input:focus {
207
+ border: round cyan;
208
+ }
209
+
210
+ #name_input {
211
+ width: 18;
212
+ }
213
+
214
+ #port_input {
215
+ width: 12;
216
+ }
217
+
218
+ OptionList {
219
+ height: 5;
220
+ background: transparent;
221
+ border: round white;
222
+ margin: 0;
223
+ padding: 0;
224
+ }
225
+
226
+ OptionList:focus {
227
+ border: round cyan;
228
+ }
229
+
230
+ OptionList > .option-list--option {
231
+ background: transparent;
232
+ color: white;
233
+ }
234
+
235
+ OptionList > .option-list--option-highlighted {
236
+ background: transparent;
237
+ color: cyan;
238
+ text-style: bold;
239
+ }
240
+
241
+ #framework_select {
242
+ width: 20;
243
+ }
244
+
245
+ .graph-definition-section {
246
+ width: 100%;
247
+ height: 1fr;
248
+ margin: 0;
249
+ margin-bottom: 0;
250
+ padding: 1;
251
+ border: round white;
252
+ background: transparent;
253
+ border-title-color: yellow;
254
+ border-title-background: $surface;
255
+ border-title-style: bold;
256
+ border-title-align: center;
257
+ }
258
+
259
+ .field-label-standalone {
260
+ display: none;
261
+ }
262
+
263
+ .graph-def-row {
264
+ width: 100%;
265
+ height: 12;
266
+ margin-top: 0;
267
+ }
268
+
269
+ .tree-container {
270
+ width: 2fr;
271
+ height: 100%;
272
+ margin-right: 1;
273
+ border: round white;
274
+ border-title-color: yellow;
275
+ border-title-background: $surface;
276
+ border-title-style: bold;
277
+ border-title-align: left;
278
+ padding: 1;
279
+ }
280
+
281
+ .var-container {
282
+ width: 1fr;
283
+ height: 100%;
284
+ border: round white;
285
+ border-title-color: yellow;
286
+ border-title-background: $surface;
287
+ border-title-style: bold;
288
+ border-title-align: left;
289
+ padding: 1;
290
+ }
291
+
292
+ .tree-label, .var-label {
293
+ display: none;
294
+ }
295
+
296
+ .var-list {
297
+ width: 100%;
298
+ height: 100%;
299
+ background: transparent;
300
+ border: none;
301
+ }
302
+
303
+ .var-list:focus {
304
+ border: none;
305
+ }
306
+
307
+ .path-display-container {
308
+ width: 100%;
309
+ height: 4;
310
+ border: round white;
311
+ border-title-color: yellow;
312
+ border-title-background: $surface;
313
+ border-title-style: bold;
314
+ border-title-align: center;
315
+ padding: 0 1;
316
+ margin-top: 1;
317
+ }
318
+
319
+ .full-definition-display {
320
+ color: yellow;
321
+ text-style: bold;
322
+ padding: 0;
323
+ width: 100%;
324
+ height: 100%;
325
+ content-align: left middle;
326
+ }
327
+
328
+ DirectoryTree {
329
+ height: 100%;
330
+ border: none;
331
+ background: transparent;
332
+ scrollbar-size: 1 1;
333
+ }
334
+
335
+ .error-message {
336
+ color: red;
337
+ text-style: bold;
338
+ margin: 0;
339
+ }
340
+
341
+ .button-row {
342
+ width: 100%;
343
+ margin-top: 1;
344
+ align: center middle;
345
+ height: 3;
346
+ }
347
+
348
+ Button {
349
+ background: transparent;
350
+ border: round white;
351
+ padding: 0 2;
352
+ margin: 0 2;
353
+ min-width: 12;
354
+ height: 3;
355
+ }
356
+
357
+ Button:hover {
358
+ background: transparent;
359
+ text-style: bold;
360
+ }
361
+
362
+ Button:focus {
363
+ background: transparent;
364
+ border: round cyan;
365
+ }
366
+
367
+ .action-buttons {
368
+ width: 100%;
369
+ height: 3;
370
+ dock: bottom;
371
+ padding: 0 1;
372
+ border-top: none;
373
+ align: left middle;
374
+ }
375
+
376
+ .action-btn {
377
+ background: transparent;
378
+ border: none;
379
+ color: yellow;
380
+ text-style: bold;
381
+ height: 3;
382
+ }
383
+
384
+ #back_button {
385
+ width: auto;
386
+ min-width: 8;
387
+ padding-left: 0;
388
+ }
389
+
390
+ #next_button {
391
+ width: 1fr;
392
+ content-align: right middle;
393
+ }
394
+
395
+ .action-btn:hover {
396
+ color: cyan;
397
+ text-style: bold;
398
+ }
399
+
400
+ .action-btn:focus {
401
+ color: cyan;
402
+ text-style: bold;
403
+ }
404
+
405
+ .back-btn {
406
+ width: 100%;
407
+ height: 3;
408
+ background: transparent;
409
+ border: none;
410
+ border-top: solid white;
411
+ padding: 0;
412
+ margin-top: 1;
413
+ text-align: center;
414
+ }
415
+
416
+ .back-btn:focus {
417
+ text-style: bold;
418
+ color: cyan;
419
+ }
420
+
421
+ .next-btn {
422
+ background: transparent;
423
+ border: none;
424
+ padding: 0;
425
+ margin-left: 4;
426
+ }
427
+
428
+ Markdown {
429
+ background: transparent;
430
+ color: white;
431
+ padding: 0;
432
+ margin: 0;
433
+ }
434
+
435
+ Footer {
436
+ height: 3;
437
+ background: $surface;
438
+ dock: bottom;
439
+ width: 100%;
440
+ align-horizontal: center;
441
+ }
442
+
443
+ Footer > .footer--highlight {
444
+ background: transparent;
445
+ align-horizontal: center;
446
+ }
447
+
448
+ Footer > .footer--highlight-key {
449
+ background: cyan;
450
+ color: black;
451
+ text-style: bold;
452
+ }
453
+
454
+ Footer > .footer--key {
455
+ background: yellow;
456
+ color: black;
457
+ text-style: bold;
458
+ padding: 0 1;
459
+ }
460
+
461
+ Footer > .footer--description {
462
+ color: white;
463
+ padding: 0 1;
464
+ }
465
+
466
+ #widget-serve {
467
+ padding: 2;
468
+ }
469
+
470
+ .serve-yaml-display {
471
+ width: 100%;
472
+ height: auto;
473
+ max-height: 15;
474
+ border: round white;
475
+ border-title-color: yellow;
476
+ border-title-style: bold;
477
+ padding: 1;
478
+ margin-bottom: 2;
479
+ overflow-y: auto;
480
+ }
481
+
482
+ #yaml_content {
483
+ width: 100%;
484
+ height: auto;
485
+ color: white;
486
+ }
487
+
488
+ .serve-button-container {
489
+ width: 100%;
490
+ height: auto;
491
+ align: center middle;
492
+ }
493
+
494
+ .validate-run-btn {
495
+ width: 1fr;
496
+ height: 3;
497
+ background: green;
498
+ color: white;
499
+ text-style: bold;
500
+ border: round white;
501
+ margin: 0 1;
502
+ }
503
+
504
+ .validate-run-btn:hover {
505
+ background: cyan;
506
+ color: black;
507
+ }
508
+
509
+ .validate-run-btn:focus {
510
+ background: cyan;
511
+ color: black;
512
+ border: round yellow;
513
+ }
514
+
515
+ Button#save_run_button.kill-mode {
516
+ background: red;
517
+ }
518
+
519
+ Button#save_run_button.kill-mode:hover {
520
+ background: darkred;
521
+ color: white;
522
+ }
523
+
524
+ Button#save_run_button.kill-mode:focus {
525
+ background: darkred;
526
+ color: white;
527
+ border: round yellow;
528
+ }
529
+
530
+ .serve-logs {
531
+ width: 100%;
532
+ height: 1fr;
533
+ border: round white;
534
+ border-title-color: yellow;
535
+ border-title-style: bold;
536
+ padding: 1;
537
+ margin-top: 2;
538
+ }
539
+
540
+ #server_logs {
541
+ width: 100%;
542
+ height: 100%;
543
+ background: black;
544
+ color: white;
545
+ }
546
+
547
+ .global-api-key-section {
548
+ width: 100%;
549
+ height: auto;
550
+ border: round yellow;
551
+ border-title-color: yellow;
552
+ border-title-style: bold;
553
+ padding: 1;
554
+ margin-bottom: 1;
555
+ }
556
+
557
+ .guardrails-grid {
558
+ layout: grid;
559
+ grid-size: 2 3;
560
+ grid-gutter: 1 2;
561
+ padding: 1;
562
+ width: 100%;
563
+ height: auto;
564
+ }
565
+
566
+ .guardrail-card {
567
+ border: round cyan;
568
+ border-title-color: cyan;
569
+ border-title-style: bold;
570
+ padding: 0 1;
571
+ height: auto;
572
+ max-height: 14;
573
+ overflow-y: auto;
574
+ }
575
+
576
+ .guardrail-card-enabled {
577
+ border: round green;
578
+ border-title-color: green;
579
+ max-height: 30;
580
+ }
581
+
582
+ .guardrail-header {
583
+ width: 100%;
584
+ height: auto;
585
+ margin-bottom: 0;
586
+ }
587
+
588
+ .gr-label {
589
+ width: auto;
590
+ padding-right: 1;
591
+ }
592
+
593
+ .gr-label-small {
594
+ width: 100%;
595
+ margin-top: 0;
596
+ margin-bottom: 0;
597
+ color: gray;
598
+ }
599
+
600
+ .applies-to-section {
601
+ width: 100%;
602
+ margin-bottom: 0;
603
+ border-top: solid white;
604
+ padding-top: 0;
605
+ padding-bottom: 0;
606
+ margin-top: 1;
607
+ }
608
+
609
+ .config-section {
610
+ width: 100%;
611
+ border-top: solid yellow;
612
+ padding-top: 0;
613
+ margin-top: 0;
614
+ }
615
+
616
+ TextArea.gr-textarea {
617
+ width: 100%;
618
+ height: 3;
619
+ margin: 0;
620
+ background: transparent;
621
+ border: round white;
622
+ padding: 0 1;
623
+ color: white;
624
+ }
625
+
626
+ TextArea.gr-textarea > .text-area--cursor-line {
627
+ background: transparent;
628
+ }
629
+
630
+ TextArea.gr-textarea:focus {
631
+ border: round cyan;
632
+ }
633
+
634
+ RadioSet {
635
+ background: transparent;
636
+ padding: 0;
637
+ border: none;
638
+ height: auto;
639
+ margin: 0;
640
+ }
641
+
642
+ RadioSet:focus {
643
+ background: transparent;
644
+ }
645
+
646
+ RadioButton {
647
+ background: transparent;
648
+ padding: 0 1;
649
+ height: 1;
650
+ margin: 0;
651
+ }
652
+
653
+ Switch {
654
+ width: 10;
655
+ }
656
+
657
+ .mcps-templates-section {
658
+ width: 100%;
659
+ height: auto;
660
+ border: round yellow;
661
+ padding: 1;
662
+ margin-bottom: 1;
663
+ }
664
+
665
+ .templates-row {
666
+ width: 100%;
667
+ height: auto;
668
+ }
669
+
670
+ .template-selector {
671
+ width: 1fr;
672
+ height: 6;
673
+ margin-right: 1;
674
+ }
675
+
676
+ .add-template-btn {
677
+ width: 20;
678
+ height: 3;
679
+ background: transparent;
680
+ border: round cyan;
681
+ color: cyan;
682
+ }
683
+
684
+ .add-template-btn:hover {
685
+ background: cyan;
686
+ color: black;
687
+ }
688
+
689
+ .add-custom-btn {
690
+ width: 100%;
691
+ height: 3;
692
+ background: transparent;
693
+ border: round green;
694
+ color: green;
695
+ margin-bottom: 1;
696
+ }
697
+
698
+ .add-custom-btn:hover {
699
+ background: green;
700
+ color: white;
701
+ }
702
+
703
+ .mcps-container {
704
+ width: 100%;
705
+ height: auto;
706
+ }
707
+
708
+ .mcp-card {
709
+ width: 100%;
710
+ height: auto;
711
+ border: round cyan;
712
+ padding: 1;
713
+ margin-bottom: 1;
714
+ }
715
+
716
+ .mcp-header {
717
+ width: 100%;
718
+ height: auto;
719
+ margin-bottom: 1;
720
+ }
721
+
722
+ .mcp-name-display {
723
+ width: 1fr;
724
+ color: yellow;
725
+ text-style: bold;
726
+ }
727
+
728
+ .remove-mcp-btn {
729
+ width: 15;
730
+ height: 3;
731
+ background: transparent;
732
+ border: round red;
733
+ color: red;
734
+ }
735
+
736
+ .remove-mcp-btn:hover {
737
+ background: red;
738
+ color: white;
739
+ }
740
+
741
+ .mcp-field-row {
742
+ width: 100%;
743
+ height: auto;
744
+ margin-bottom: 1;
745
+ }
746
+
747
+ .mcp-label {
748
+ width: 15;
749
+ color: gray;
750
+ }
751
+
752
+ .mcp-input {
753
+ width: 1fr;
754
+ height: 3;
755
+ border: round white;
756
+ background: transparent;
757
+ }
758
+
759
+ .mcp-input:focus {
760
+ border: round cyan;
761
+ }
762
+
763
+ .mcp-textarea {
764
+ width: 1fr;
765
+ height: 4;
766
+ border: round white;
767
+ background: transparent;
768
+ padding: 0 1;
769
+ }
770
+
771
+ .mcp-textarea:focus {
772
+ border: round cyan;
773
+ }
774
+
775
+ .http-fields-container, .stdio-fields-container {
776
+ width: 100%;
777
+ height: auto;
778
+ padding: 1;
779
+ border: round yellow;
780
+ margin-top: 1;
781
+ }
782
+
783
+ .custom-footer {
784
+ dock: bottom;
785
+ width: 100%;
786
+ height: 1;
787
+ background: $surface;
788
+ color: yellow;
789
+ text-align: center;
790
+ text-style: bold;
791
+ }
792
+
793
+ #widget-chat {
794
+ padding: 2;
795
+ }
796
+
797
+ .chat-history-container {
798
+ width: 100%;
799
+ height: 1fr;
800
+ border: round white;
801
+ border-title-color: yellow;
802
+ border-title-style: bold;
803
+ padding: 1;
804
+ margin-bottom: 2;
805
+ }
806
+
807
+ #chat_history {
808
+ width: 100%;
809
+ height: 100%;
810
+ background: black;
811
+ color: white;
812
+ }
813
+
814
+ .chat-thinking-container {
815
+ width: 100%;
816
+ height: 2;
817
+ align: left middle;
818
+ padding: 0 1;
819
+ }
820
+
821
+ #chat_spinner {
822
+ width: auto;
823
+ height: auto;
824
+ color: yellow;
825
+ }
826
+
827
+ #thinking_label {
828
+ width: auto;
829
+ height: auto;
830
+ color: yellow;
831
+ margin-left: 1;
832
+ text-style: italic;
833
+ }
834
+
835
+ .chat-input-container {
836
+ width: 100%;
837
+ height: 5;
838
+ align: left middle;
839
+ }
840
+
841
+ .chat-input {
842
+ width: 1fr;
843
+ height: 3;
844
+ color: white;
845
+ background: transparent;
846
+ border: round white;
847
+ padding: 0 1;
848
+ margin-right: 1;
849
+ }
850
+
851
+ .chat-input:focus {
852
+ border: round cyan;
853
+ }
854
+
855
+ .chat-input:disabled {
856
+ opacity: 0.5;
857
+ }
858
+
859
+ .send-btn {
860
+ width: 12;
861
+ height: 3;
862
+ background: green;
863
+ color: white;
864
+ text-style: bold;
865
+ border: round white;
866
+ }
867
+
868
+ .send-btn:hover {
869
+ background: cyan;
870
+ color: black;
871
+ }
872
+
873
+ .send-btn:focus {
874
+ background: cyan;
875
+ color: black;
876
+ border: round yellow;
877
+ }
878
+
879
+ .send-btn:disabled {
880
+ background: gray;
881
+ opacity: 0.5;
882
+ }
883
+
884
+ #widget-memory {
885
+ padding: 2;
886
+ }
887
+
888
+ .memory-main {
889
+ width: 100%;
890
+ height: auto;
891
+ border: round white;
892
+ border-title-color: yellow;
893
+ border-title-style: bold;
894
+ padding: 1;
895
+ margin-bottom: 1;
896
+ }
897
+
898
+ .checkpoint-config-container {
899
+ width: 100%;
900
+ height: auto;
901
+ margin-top: 1;
902
+ }
903
+
904
+ .checkpoint-fields-section {
905
+ width: 100%;
906
+ height: auto;
907
+ border: round white;
908
+ border-title-color: yellow;
909
+ border-title-style: bold;
910
+ padding: 1;
911
+ }
912
+ """