ddapm-test-agent 1.36.0__py3-none-any.whl → 1.38.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.
@@ -0,0 +1,1679 @@
1
+ /* Reset and base styles */
2
+ * {
3
+ margin: 0;
4
+ padding: 0;
5
+ box-sizing: border-box;
6
+ }
7
+
8
+ body {
9
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
10
+ line-height: 1.6;
11
+ color: #333;
12
+ background-color: #f5f5f5;
13
+ }
14
+
15
+ /* Navigation */
16
+ .navbar {
17
+ background-color: #632CA6;
18
+ color: white;
19
+ padding: 0;
20
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
21
+ }
22
+
23
+ .nav-container {
24
+ max-width: 1200px;
25
+ margin: 0 auto;
26
+ display: flex;
27
+ justify-content: space-between;
28
+ align-items: center;
29
+ padding: 0 20px;
30
+ }
31
+
32
+ .nav-brand h1 {
33
+ font-size: 1.5rem;
34
+ font-weight: 600;
35
+ margin: 16px 0;
36
+ }
37
+
38
+ .nav-links {
39
+ display: flex;
40
+ list-style: none;
41
+ gap: 0;
42
+ }
43
+
44
+ .nav-link {
45
+ display: block;
46
+ color: white;
47
+ text-decoration: none;
48
+ padding: 20px 16px;
49
+ transition: background-color 0.2s;
50
+ }
51
+
52
+ .nav-link:hover {
53
+ background-color: rgba(255, 255, 255, 0.1);
54
+ }
55
+
56
+ /* Main content */
57
+ .main-content {
58
+ max-width: 1200px;
59
+ margin: 0 auto;
60
+ padding: 32px 20px;
61
+ min-height: calc(100vh - 140px);
62
+ }
63
+
64
+ /* Dashboard */
65
+ .dashboard-header {
66
+ display: flex;
67
+ justify-content: space-between;
68
+ align-items: center;
69
+ margin-bottom: 32px;
70
+ }
71
+
72
+ .dashboard-header h2 {
73
+ font-size: 2rem;
74
+ font-weight: 600;
75
+ }
76
+
77
+ .status-indicator {
78
+ padding: 8px 16px;
79
+ border-radius: 20px;
80
+ font-weight: 500;
81
+ font-size: 0.875rem;
82
+ }
83
+
84
+ .status-running {
85
+ background-color: #d1fae5;
86
+ color: #065f46;
87
+ }
88
+
89
+ .status-stopped {
90
+ background-color: #fee2e2;
91
+ color: #991b1b;
92
+ }
93
+
94
+ .dashboard-grid {
95
+ display: grid;
96
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
97
+ gap: 24px;
98
+ }
99
+
100
+ .dashboard-card {
101
+ background: white;
102
+ border-radius: 8px;
103
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
104
+ overflow: hidden;
105
+ }
106
+
107
+ .card-header {
108
+ background-color: #f8fafc;
109
+ padding: 16px 20px;
110
+ border-bottom: 1px solid #e5e7eb;
111
+ }
112
+
113
+ .card-header h3 {
114
+ font-size: 1.125rem;
115
+ font-weight: 600;
116
+ }
117
+
118
+ .card-content {
119
+ padding: 20px;
120
+ }
121
+
122
+ .stat-item {
123
+ display: flex;
124
+ justify-content: space-between;
125
+ padding: 8px 0;
126
+ }
127
+
128
+ .stat-label {
129
+ color: #6b7280;
130
+ }
131
+
132
+ .stat-value {
133
+ font-weight: 500;
134
+ }
135
+
136
+ .action-buttons {
137
+ display: flex;
138
+ flex-direction: column;
139
+ gap: 8px;
140
+ }
141
+
142
+ .action-button {
143
+ display: inline-block;
144
+ background-color: #632CA6;
145
+ color: white;
146
+ padding: 8px 16px;
147
+ text-decoration: none;
148
+ border-radius: 6px;
149
+ text-align: center;
150
+ transition: background-color 0.2s;
151
+ font-size: 0.875rem;
152
+ }
153
+
154
+ .action-button:hover {
155
+ background-color: #5a259a;
156
+ }
157
+
158
+ /* Tooltip styles */
159
+ .tooltip-wrapper {
160
+ position: relative;
161
+ display: inline-block;
162
+ margin: 0 4px;
163
+ }
164
+
165
+ .tooltip-wrapper .tooltip-text {
166
+ visibility: hidden;
167
+ background-color: #333;
168
+ color: #fff;
169
+ text-align: center;
170
+ border-radius: 6px;
171
+ padding: 8px 12px;
172
+ position: absolute;
173
+ z-index: 1000;
174
+ bottom: 125%;
175
+ left: 50%;
176
+ transform: translateX(-50%);
177
+ white-space: nowrap;
178
+ font-size: 0.875rem;
179
+ opacity: 0;
180
+ transition: opacity 0.3s;
181
+ pointer-events: none;
182
+ max-width: 250px;
183
+ }
184
+
185
+ .tooltip-wrapper .tooltip-text::after {
186
+ content: "";
187
+ position: absolute;
188
+ top: 100%;
189
+ left: 50%;
190
+ transform: translateX(-50%);
191
+ border: 5px solid transparent;
192
+ border-top-color: #333;
193
+ }
194
+
195
+ .tooltip-wrapper:hover .tooltip-text {
196
+ visibility: visible;
197
+ opacity: 1;
198
+ }
199
+
200
+ .activity-feed {
201
+ max-height: 200px;
202
+ overflow-y: auto;
203
+ }
204
+
205
+ .activity-item {
206
+ display: flex;
207
+ gap: 12px;
208
+ padding: 8px 0;
209
+ border-bottom: 1px solid #f3f4f6;
210
+ }
211
+
212
+ .activity-time {
213
+ color: #6b7280;
214
+ font-size: 0.875rem;
215
+ min-width: 80px;
216
+ }
217
+
218
+ .activity-text {
219
+ font-size: 0.875rem;
220
+ }
221
+
222
+ /* Page headers */
223
+ .page-header {
224
+ margin-bottom: 32px;
225
+ }
226
+
227
+ .page-header h2 {
228
+ font-size: 2rem;
229
+ font-weight: 600;
230
+ }
231
+
232
+ /* Lists and items */
233
+ .traces-list,
234
+ .sessions-list,
235
+ .snapshots-list {
236
+ display: flex;
237
+ flex-direction: column;
238
+ gap: 16px;
239
+ }
240
+
241
+ .trace-item,
242
+ .session-item,
243
+ .snapshot-item {
244
+ background: white;
245
+ padding: 20px;
246
+ border-radius: 8px;
247
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
248
+ display: flex;
249
+ justify-content: space-between;
250
+ align-items: center;
251
+ }
252
+
253
+ .trace-header,
254
+ .session-header,
255
+ .snapshot-header {
256
+ display: flex;
257
+ align-items: center;
258
+ gap: 16px;
259
+ }
260
+
261
+ .trace-header h3,
262
+ .session-header h3,
263
+ .snapshot-header h3 {
264
+ font-size: 1.25rem;
265
+ font-weight: 600;
266
+ }
267
+
268
+ .span-count {
269
+ background-color: #f3f4f6;
270
+ padding: 4px 8px;
271
+ border-radius: 12px;
272
+ font-size: 0.75rem;
273
+ color: #6b7280;
274
+ }
275
+
276
+ .trace-actions,
277
+ .session-actions,
278
+ .snapshot-actions {
279
+ display: flex;
280
+ gap: 8px;
281
+ }
282
+
283
+ /* Trace details */
284
+ .spans-list {
285
+ display: flex;
286
+ flex-direction: column;
287
+ gap: 16px;
288
+ }
289
+
290
+ .span-item {
291
+ background: white;
292
+ padding: 16px;
293
+ border-radius: 8px;
294
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
295
+ border-left: 4px solid #632CA6;
296
+ }
297
+
298
+ .span-header {
299
+ display: flex;
300
+ justify-content: space-between;
301
+ align-items: center;
302
+ margin-bottom: 12px;
303
+ }
304
+
305
+ .span-header h4 {
306
+ font-size: 1.125rem;
307
+ font-weight: 600;
308
+ }
309
+
310
+ .span-id {
311
+ font-size: 0.875rem;
312
+ color: #6b7280;
313
+ font-family: monospace;
314
+ }
315
+
316
+ .span-details p {
317
+ margin-bottom: 4px;
318
+ font-size: 0.875rem;
319
+ }
320
+
321
+ /* Session details */
322
+ .session-info {
323
+ background: white;
324
+ padding: 20px;
325
+ border-radius: 8px;
326
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
327
+ margin-bottom: 24px;
328
+ }
329
+
330
+ .session-info h3 {
331
+ margin-bottom: 16px;
332
+ font-size: 1.25rem;
333
+ font-weight: 600;
334
+ }
335
+
336
+ .session-traces {
337
+ background: white;
338
+ padding: 20px;
339
+ border-radius: 8px;
340
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
341
+ }
342
+
343
+ .session-traces h3 {
344
+ margin-bottom: 16px;
345
+ font-size: 1.25rem;
346
+ font-weight: 600;
347
+ }
348
+
349
+ .trace-summary {
350
+ padding: 12px;
351
+ border: 1px solid #e5e7eb;
352
+ border-radius: 6px;
353
+ margin-bottom: 8px;
354
+ }
355
+
356
+ .trace-summary p {
357
+ margin-bottom: 4px;
358
+ font-size: 0.875rem;
359
+ }
360
+
361
+ /* Config page */
362
+ .config-editor {
363
+ background: white;
364
+ padding: 20px;
365
+ border-radius: 8px;
366
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
367
+ }
368
+
369
+ .config-editor h3 {
370
+ margin-bottom: 16px;
371
+ font-size: 1.25rem;
372
+ font-weight: 600;
373
+ }
374
+
375
+ .config-textarea {
376
+ width: 100%;
377
+ height: 400px;
378
+ padding: 12px;
379
+ border: 1px solid #d1d5db;
380
+ border-radius: 6px;
381
+ font-family: monospace;
382
+ font-size: 0.875rem;
383
+ resize: vertical;
384
+ }
385
+
386
+ /* Empty states and messages */
387
+ .empty-state {
388
+ text-align: center;
389
+ padding: 60px 20px;
390
+ color: #6b7280;
391
+ }
392
+
393
+ .error-message {
394
+ background-color: #fee2e2;
395
+ color: #991b1b;
396
+ padding: 16px;
397
+ border-radius: 8px;
398
+ margin-bottom: 24px;
399
+ }
400
+
401
+ /* Footer */
402
+ .footer {
403
+ background-color: #f8fafc;
404
+ border-top: 1px solid #e5e7eb;
405
+ padding: 20px;
406
+ text-align: center;
407
+ color: #6b7280;
408
+ font-size: 0.875rem;
409
+ }
410
+
411
+ /* Responsive design */
412
+ @media (max-width: 768px) {
413
+ .nav-container {
414
+ flex-direction: column;
415
+ padding: 16px;
416
+ }
417
+
418
+ .nav-links {
419
+ margin-top: 16px;
420
+ flex-wrap: wrap;
421
+ justify-content: center;
422
+ }
423
+
424
+ .main-content {
425
+ padding: 20px 16px;
426
+ }
427
+
428
+ .dashboard-grid {
429
+ grid-template-columns: 1fr;
430
+ }
431
+
432
+ .trace-item,
433
+ .session-item,
434
+ .snapshot-item {
435
+ flex-direction: column;
436
+ align-items: flex-start;
437
+ gap: 16px;
438
+ }
439
+
440
+ .span-header {
441
+ flex-direction: column;
442
+ align-items: flex-start;
443
+ }
444
+
445
+ .snapshots-table {
446
+ overflow-x: auto;
447
+ }
448
+
449
+ .snapshots-controls {
450
+ flex-direction: column;
451
+ align-items: stretch;
452
+ gap: 12px;
453
+ }
454
+
455
+ .snapshots-stats {
456
+ min-width: auto;
457
+ }
458
+
459
+ .filter-input {
460
+ min-width: auto;
461
+ width: 100%;
462
+ }
463
+
464
+ .content-header {
465
+ flex-direction: column;
466
+ align-items: flex-start;
467
+ gap: 12px;
468
+ }
469
+
470
+ .meta-details {
471
+ grid-template-columns: 1fr;
472
+ gap: 12px;
473
+ }
474
+
475
+ .meta-item {
476
+ flex-direction: column;
477
+ align-items: flex-start;
478
+ gap: 4px;
479
+ padding: 8px 0;
480
+ }
481
+
482
+ .meta-label {
483
+ margin-right: 0;
484
+ margin-bottom: 2px;
485
+ }
486
+
487
+ .meta-value {
488
+ text-align: left;
489
+ }
490
+ }
491
+
492
+ /* Snapshot viewer styles */
493
+ .snapshot-info {
494
+ margin-top: 8px;
495
+ font-size: 0.875rem;
496
+ color: #6b7280;
497
+ }
498
+
499
+ .snapshots-controls {
500
+ margin-bottom: 16px;
501
+ display: flex;
502
+ justify-content: space-between;
503
+ align-items: center;
504
+ gap: 16px;
505
+ flex-wrap: wrap;
506
+ }
507
+
508
+ .snapshots-stats {
509
+ padding: 12px 16px;
510
+ background-color: #f8fafc;
511
+ border-radius: 6px;
512
+ border-left: 4px solid #632CA6;
513
+ margin: 0;
514
+ flex-grow: 1;
515
+ min-width: 200px;
516
+ }
517
+
518
+ .filter-controls {
519
+ display: flex;
520
+ align-items: center;
521
+ gap: 8px;
522
+ }
523
+
524
+ .filter-input {
525
+ padding: 8px 12px;
526
+ border: 1px solid #d1d5db;
527
+ border-radius: 6px;
528
+ font-size: 0.875rem;
529
+ min-width: 200px;
530
+ background-color: white;
531
+ transition: border-color 0.2s;
532
+ }
533
+
534
+ .filter-input:focus {
535
+ outline: none;
536
+ border-color: #632CA6;
537
+ box-shadow: 0 0 0 3px rgba(99, 44, 166, 0.1);
538
+ }
539
+
540
+ .filter-query-input {
541
+ padding: 8px 12px;
542
+ border: 1px solid #d1d5db;
543
+ border-radius: 6px;
544
+ font-size: 0.875rem;
545
+ flex-grow: 1;
546
+ background-color: white;
547
+ transition: border-color 0.2s;
548
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
549
+ }
550
+
551
+ .filter-query-input:focus {
552
+ outline: none;
553
+ border-color: #632CA6;
554
+ box-shadow: 0 0 0 3px rgba(99, 44, 166, 0.1);
555
+ }
556
+
557
+ .snapshots-table table {
558
+ width: 100%;
559
+ border-collapse: collapse;
560
+ background: white;
561
+ border-radius: 8px;
562
+ overflow: hidden;
563
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
564
+ }
565
+
566
+ .snapshots-table th {
567
+ background-color: #f8fafc;
568
+ padding: 12px 16px;
569
+ text-align: left;
570
+ font-weight: 600;
571
+ border-bottom: 1px solid #e5e7eb;
572
+ font-size: 0.875rem;
573
+ }
574
+
575
+ .snapshots-table td {
576
+ padding: 12px 16px;
577
+ border-bottom: 1px solid #f3f4f6;
578
+ font-size: 0.875rem;
579
+ }
580
+
581
+ .snapshot-row:hover {
582
+ background-color: #f9fafb;
583
+ }
584
+
585
+ .filename-link {
586
+ color: #632CA6;
587
+ text-decoration: none;
588
+ font-weight: 500;
589
+ }
590
+
591
+ .filename-link:hover {
592
+ text-decoration: underline;
593
+ }
594
+
595
+ .size-cell, .modified-cell {
596
+ color: #6b7280;
597
+ }
598
+
599
+ .actions-cell .action-button {
600
+ padding: 4px 12px;
601
+ font-size: 0.75rem;
602
+ }
603
+
604
+ /* Snapshot detail page */
605
+ .breadcrumb {
606
+ margin-top: 8px;
607
+ font-size: 0.875rem;
608
+ }
609
+
610
+ .breadcrumb-link {
611
+ color: #632CA6;
612
+ text-decoration: none;
613
+ }
614
+
615
+ .breadcrumb-link:hover {
616
+ text-decoration: underline;
617
+ }
618
+
619
+ .breadcrumb-separator {
620
+ margin: 0 8px;
621
+ color: #9ca3af;
622
+ }
623
+
624
+ .breadcrumb-current {
625
+ color: #6b7280;
626
+ }
627
+
628
+ .snapshot-meta {
629
+ margin-bottom: 24px;
630
+ }
631
+
632
+ .meta-card {
633
+ background: white;
634
+ padding: 20px;
635
+ border-radius: 8px;
636
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
637
+ }
638
+
639
+ .meta-card h3 {
640
+ margin-bottom: 16px;
641
+ font-size: 1.125rem;
642
+ font-weight: 600;
643
+ }
644
+
645
+ .meta-details {
646
+ display: flex;
647
+ flex-direction: column;
648
+ gap: 8px;
649
+ }
650
+
651
+ .meta-item {
652
+ display: flex;
653
+ align-items: center;
654
+ padding: 6px 0;
655
+ min-height: 24px;
656
+ }
657
+
658
+ .meta-label {
659
+ font-weight: 500;
660
+ color: #374151;
661
+ flex-shrink: 0;
662
+ margin-right: 12px;
663
+ }
664
+
665
+ .meta-value {
666
+ color: #6b7280;
667
+ text-align: left;
668
+ word-break: break-word;
669
+ }
670
+
671
+ .meta-value.valid {
672
+ color: #059669;
673
+ }
674
+
675
+ .meta-value.invalid {
676
+ color: #dc2626;
677
+ }
678
+
679
+ /* Loading states and payload handling */
680
+ .loading-state {
681
+ display: flex;
682
+ align-items: center;
683
+ gap: 12px;
684
+ padding: 16px;
685
+ background-color: #f9fafb;
686
+ border-radius: 4px;
687
+ color: #6b7280;
688
+ }
689
+
690
+ .loading-spinner {
691
+ width: 16px;
692
+ height: 16px;
693
+ border: 2px solid #e5e7eb;
694
+ border-top: 2px solid #6366f1;
695
+ border-radius: 50%;
696
+ animation: spin 1s linear infinite;
697
+ }
698
+
699
+ @keyframes spin {
700
+ 0% { transform: rotate(0deg); }
701
+ 100% { transform: rotate(360deg); }
702
+ }
703
+
704
+ .large-payload-notice {
705
+ background-color: #fef3c7;
706
+ border: 1px solid #f59e0b;
707
+ border-radius: 6px;
708
+ padding: 16px;
709
+ margin: 8px 0;
710
+ }
711
+
712
+ .payload-info {
713
+ margin-bottom: 12px;
714
+ }
715
+
716
+ .payload-info strong {
717
+ color: #92400e;
718
+ font-size: 0.95rem;
719
+ }
720
+
721
+ .payload-info p {
722
+ margin: 4px 0;
723
+ color: #78350f;
724
+ font-size: 0.875rem;
725
+ }
726
+
727
+ .decode-button {
728
+ background-color: #f59e0b;
729
+ color: white;
730
+ border: none;
731
+ padding: 8px 16px;
732
+ border-radius: 4px;
733
+ cursor: pointer;
734
+ font-size: 0.875rem;
735
+ font-weight: 500;
736
+ transition: background-color 0.2s;
737
+ }
738
+
739
+ .decode-button:hover {
740
+ background-color: #d97706;
741
+ }
742
+
743
+ .decoding-error {
744
+ background-color: #fef2f2;
745
+ border: 1px solid #fca5a5;
746
+ border-radius: 6px;
747
+ padding: 12px;
748
+ margin: 8px 0;
749
+ }
750
+
751
+ .decoding-error strong {
752
+ color: #dc2626;
753
+ }
754
+
755
+ .decoding-error pre {
756
+ margin: 8px 0 0 0;
757
+ color: #7f1d1d;
758
+ font-size: 0.875rem;
759
+ white-space: pre-wrap;
760
+ }
761
+
762
+ .snapshot-content {
763
+ background: white;
764
+ border-radius: 8px;
765
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
766
+ overflow: hidden;
767
+ }
768
+
769
+ .content-header {
770
+ display: flex;
771
+ justify-content: space-between;
772
+ align-items: center;
773
+ padding: 16px 20px;
774
+ background-color: #f8fafc;
775
+ border-bottom: 1px solid #e5e7eb;
776
+ }
777
+
778
+ .content-header h3 {
779
+ margin: 0;
780
+ font-size: 1.125rem;
781
+ font-weight: 600;
782
+ }
783
+
784
+ .content-actions {
785
+ display: flex;
786
+ gap: 8px;
787
+ }
788
+
789
+ .content-actions .action-button {
790
+ padding: 6px 12px;
791
+ font-size: 0.75rem;
792
+ }
793
+
794
+ .code-container {
795
+ overflow: auto;
796
+ max-height: 80vh;
797
+ max-width: 100%;
798
+ }
799
+
800
+ .code-block {
801
+ margin: 0;
802
+ padding: 20px;
803
+ background-color: #1f2937;
804
+ color: #f9fafb;
805
+ font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
806
+ font-size: 0.875rem;
807
+ line-height: 1.5;
808
+ overflow-x: auto;
809
+ white-space: pre;
810
+ max-width: 100%;
811
+ box-sizing: border-box;
812
+ }
813
+
814
+ .code-block code {
815
+ background: none;
816
+ padding: 0;
817
+ border-radius: 0;
818
+ color: inherit;
819
+ }
820
+
821
+ /* Waterfall visualization styles */
822
+ .waterfall-container {
823
+ background: white;
824
+ border-radius: 8px;
825
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
826
+ overflow: hidden;
827
+ }
828
+
829
+ .waterfall-traces {
830
+ padding: 16px;
831
+ }
832
+
833
+ .waterfall-trace {
834
+ margin-bottom: 24px;
835
+ border: 1px solid #e5e7eb;
836
+ border-radius: 6px;
837
+ overflow: hidden;
838
+ }
839
+
840
+ .waterfall-trace:last-child {
841
+ margin-bottom: 0;
842
+ }
843
+
844
+ .trace-header {
845
+ display: flex;
846
+ justify-content: space-between;
847
+ align-items: center;
848
+ padding: 12px 16px;
849
+ background-color: #f8fafc;
850
+ border-bottom: 1px solid #e5e7eb;
851
+ cursor: pointer;
852
+ transition: background-color 0.2s;
853
+ }
854
+
855
+ .trace-header:hover {
856
+ background-color: #f1f5f9;
857
+ }
858
+
859
+ .trace-header-left {
860
+ display: flex;
861
+ align-items: center;
862
+ gap: 8px;
863
+ }
864
+
865
+ .trace-toggle {
866
+ font-size: 0.75rem;
867
+ color: #6b7280;
868
+ font-family: monospace;
869
+ user-select: none;
870
+ transition: color 0.2s;
871
+ }
872
+
873
+ .trace-toggle:hover {
874
+ color: #374151;
875
+ }
876
+
877
+ .trace-header h4 {
878
+ margin: 0;
879
+ font-size: 1rem;
880
+ font-weight: 600;
881
+ color: #374151;
882
+ }
883
+
884
+ .trace-duration {
885
+ font-size: 0.875rem;
886
+ color: #6b7280;
887
+ font-weight: 500;
888
+ }
889
+
890
+ .spans-timeline {
891
+ padding: 8px;
892
+ background-color: #ffffff;
893
+ }
894
+
895
+ .waterfall-span {
896
+ display: flex;
897
+ flex-direction: column;
898
+ padding: 4px 0;
899
+ min-height: 28px;
900
+ position: relative;
901
+ }
902
+
903
+ .span-row {
904
+ display: flex;
905
+ align-items: center;
906
+ width: 100%;
907
+ }
908
+
909
+ .span-info {
910
+ display: flex;
911
+ justify-content: space-between;
912
+ align-items: center;
913
+ width: 200px;
914
+ flex-shrink: 0;
915
+ padding-right: 12px;
916
+ font-size: 0.875rem;
917
+ cursor: pointer;
918
+ transition: background-color 0.2s;
919
+ }
920
+
921
+ .span-info:hover {
922
+ background-color: #f9fafb;
923
+ border-radius: 4px;
924
+ }
925
+
926
+ .span-label {
927
+ display: flex;
928
+ align-items: center;
929
+ gap: 6px;
930
+ overflow: hidden;
931
+ flex-grow: 1;
932
+ }
933
+
934
+ .span-toggle {
935
+ font-size: 0.75rem;
936
+ color: #6b7280;
937
+ font-family: monospace;
938
+ user-select: none;
939
+ flex-shrink: 0;
940
+ }
941
+
942
+ .span-names {
943
+ display: flex;
944
+ flex-direction: column;
945
+ overflow: hidden;
946
+ }
947
+
948
+ .service-name {
949
+ font-weight: 600;
950
+ color: #374151;
951
+ white-space: nowrap;
952
+ overflow: hidden;
953
+ text-overflow: ellipsis;
954
+ }
955
+
956
+ .operation-name {
957
+ font-size: 0.75rem;
958
+ color: #6b7280;
959
+ white-space: nowrap;
960
+ overflow: hidden;
961
+ text-overflow: ellipsis;
962
+ }
963
+
964
+ .span-timing {
965
+ font-size: 0.75rem;
966
+ color: #6b7280;
967
+ text-align: right;
968
+ }
969
+
970
+ .span-bar-container {
971
+ flex-grow: 1;
972
+ height: 20px;
973
+ background-color: #f3f4f6;
974
+ border-radius: 2px;
975
+ position: relative;
976
+ margin-left: 8px;
977
+ }
978
+
979
+ .span-bar {
980
+ height: 100%;
981
+ border-radius: 2px;
982
+ position: absolute;
983
+ top: 0;
984
+ cursor: pointer;
985
+ transition: opacity 0.2s;
986
+ }
987
+
988
+ .span-bar.span-normal {
989
+ background-color: #632CA6;
990
+ }
991
+
992
+ /* Red outline for any span with error, regardless of service color */
993
+ .waterfall-span.span-error .span-bar {
994
+ border: 2px dashed #dc2626;
995
+ box-sizing: border-box;
996
+ }
997
+
998
+ .span-bar:hover {
999
+ opacity: 0.8;
1000
+ }
1001
+
1002
+ /* Service-based color variations - applied via JavaScript */
1003
+ .span-bar.service-color-0 { background-color: #632CA6; }
1004
+ .span-bar.service-color-1 { background-color: #3b82f6; }
1005
+ .span-bar.service-color-2 { background-color: #10b981; }
1006
+ .span-bar.service-color-3 { background-color: #f59e0b; }
1007
+ .span-bar.service-color-4 { background-color: #8b5cf6; }
1008
+ .span-bar.service-color-5 { background-color: #ec4899; }
1009
+ .span-bar.service-color-6 { background-color: #06b6d4; }
1010
+ .span-bar.service-color-7 { background-color: #84cc16; }
1011
+
1012
+ /* Hover effects for spans */
1013
+ .waterfall-span:hover {
1014
+ background-color: #f9fafb;
1015
+ }
1016
+
1017
+ .waterfall-span:hover .service-name {
1018
+ color: #632CA6;
1019
+ }
1020
+
1021
+ /* Mobile responsive adjustments for waterfall */
1022
+ @media (max-width: 768px) {
1023
+ .span-info {
1024
+ width: 150px;
1025
+ }
1026
+
1027
+ .service-name,
1028
+ .operation-name {
1029
+ max-width: 120px;
1030
+ }
1031
+
1032
+ .waterfall-span {
1033
+ min-height: 32px;
1034
+ }
1035
+
1036
+ .span-bar-container {
1037
+ margin-left: 4px;
1038
+ }
1039
+ }
1040
+
1041
+ /* Requests page styles */
1042
+ .requests-page {
1043
+ padding: 20px;
1044
+ }
1045
+
1046
+ .request-stats {
1047
+ display: flex;
1048
+ align-items: center;
1049
+ justify-content: space-between;
1050
+ gap: 12px;
1051
+ }
1052
+
1053
+ .request-actions {
1054
+ display: flex;
1055
+ gap: 8px;
1056
+ }
1057
+
1058
+ /* Removed clickable filter styles - now using search-based filtering */
1059
+
1060
+ .filter-hint {
1061
+ font-size: 0.8rem;
1062
+ color: #666;
1063
+ font-style: italic;
1064
+ }
1065
+
1066
+ .stat-badge {
1067
+ background-color: #632CA6;
1068
+ color: white;
1069
+ padding: 4px 8px;
1070
+ border-radius: 4px;
1071
+ font-size: 0.875rem;
1072
+ font-weight: 500;
1073
+ }
1074
+
1075
+ .requests-controls {
1076
+ display: flex;
1077
+ flex-direction: column;
1078
+ gap: 12px;
1079
+ margin-bottom: 20px;
1080
+ padding: 16px;
1081
+ background-color: white;
1082
+ border-radius: 8px;
1083
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1084
+ }
1085
+
1086
+ .filter-row {
1087
+ display: flex;
1088
+ gap: 8px;
1089
+ align-items: center;
1090
+ }
1091
+
1092
+ .stats-row {
1093
+ display: flex;
1094
+ justify-content: space-between;
1095
+ align-items: center;
1096
+ }
1097
+
1098
+ .request-stats {
1099
+ display: flex;
1100
+ gap: 16px;
1101
+ align-items: center;
1102
+ }
1103
+
1104
+ .stat-item {
1105
+ font-size: 0.875rem;
1106
+ color: #6b7280;
1107
+ }
1108
+
1109
+ .filter-input, .filter-select {
1110
+ padding: 8px 12px;
1111
+ border: 1px solid #d1d5db;
1112
+ border-radius: 4px;
1113
+ font-size: 0.875rem;
1114
+ min-width: 150px;
1115
+ }
1116
+
1117
+ .filter-input:focus, .filter-select:focus {
1118
+ outline: none;
1119
+ border-color: #632CA6;
1120
+ box-shadow: 0 0 0 2px rgba(99, 44, 166, 0.1);
1121
+ }
1122
+
1123
+ .view-count {
1124
+ font-size: 0.875rem;
1125
+ color: #6b7280;
1126
+ }
1127
+
1128
+ .requests-table-container {
1129
+ background: white;
1130
+ border-radius: 8px;
1131
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
1132
+ overflow-x: auto;
1133
+ max-width: 100%;
1134
+ }
1135
+
1136
+ .requests-table {
1137
+ width: 100%;
1138
+ border-collapse: collapse;
1139
+ }
1140
+
1141
+ .requests-table th {
1142
+ background-color: #f9fafb;
1143
+ padding: 12px;
1144
+ text-align: left;
1145
+ font-weight: 600;
1146
+ color: #374151;
1147
+ border-bottom: 1px solid #e5e7eb;
1148
+ font-size: 0.875rem;
1149
+ }
1150
+
1151
+
1152
+ .requests-table td {
1153
+ padding: 12px;
1154
+ border-bottom: 1px solid #f3f4f6;
1155
+ font-size: 0.875rem;
1156
+ vertical-align: top;
1157
+ }
1158
+
1159
+ .request-row:hover,
1160
+ .snapshot-row:hover {
1161
+ background-color: #f0f9ff;
1162
+ cursor: pointer;
1163
+ }
1164
+
1165
+ .method-badge {
1166
+ padding: 2px 6px;
1167
+ border-radius: 3px;
1168
+ font-size: 0.75rem;
1169
+ font-weight: 600;
1170
+ text-transform: uppercase;
1171
+ color: white;
1172
+ }
1173
+
1174
+ .method-get { background-color: #10b981; }
1175
+ .method-post { background-color: #3b82f6; }
1176
+ .method-put { background-color: #f59e0b; }
1177
+ .method-delete { background-color: #dc2626; }
1178
+ .method-patch { background-color: #8b5cf6; }
1179
+
1180
+ .path-info {
1181
+ display: flex;
1182
+ flex-direction: column;
1183
+ gap: 2px;
1184
+ }
1185
+
1186
+ .path {
1187
+ font-weight: 500;
1188
+ color: #374151;
1189
+ }
1190
+
1191
+ .query-string {
1192
+ font-size: 0.75rem;
1193
+ color: #6b7280;
1194
+ word-break: break-all;
1195
+ }
1196
+
1197
+ .handler-name {
1198
+ background-color: #f3f4f6;
1199
+ padding: 2px 4px;
1200
+ border-radius: 3px;
1201
+ font-size: 0.75rem;
1202
+ color: #632CA6;
1203
+ }
1204
+
1205
+ .session-token {
1206
+ background-color: #f3f4f6;
1207
+ padding: 2px 4px;
1208
+ border-radius: 3px;
1209
+ font-size: 0.75rem;
1210
+ color: #6b7280;
1211
+ font-style: italic;
1212
+ }
1213
+
1214
+ .no-session {
1215
+ color: #9ca3af;
1216
+ font-style: italic;
1217
+ }
1218
+
1219
+ .action-button.small {
1220
+ padding: 4px 8px;
1221
+ font-size: 0.75rem;
1222
+ }
1223
+
1224
+ .request-details {
1225
+ background-color: #f8fafc;
1226
+ }
1227
+
1228
+ .request-details-content {
1229
+ padding: 16px;
1230
+ max-width: 100%;
1231
+ overflow-x: auto;
1232
+ }
1233
+
1234
+ .request-details-content pre {
1235
+ max-width: 100%;
1236
+ overflow-x: auto;
1237
+ white-space: pre-wrap;
1238
+ word-break: break-word;
1239
+ }
1240
+
1241
+ .details-section {
1242
+ margin-bottom: 16px;
1243
+ }
1244
+
1245
+ .details-section:last-child {
1246
+ margin-bottom: 0;
1247
+ }
1248
+
1249
+ .details-section h4 {
1250
+ margin: 0 0 8px 0;
1251
+ font-size: 0.875rem;
1252
+ font-weight: 600;
1253
+ color: #374151;
1254
+ }
1255
+
1256
+ .headers-list {
1257
+ display: flex;
1258
+ flex-direction: column;
1259
+ gap: 4px;
1260
+ }
1261
+
1262
+ .header-item {
1263
+ display: flex;
1264
+ gap: 8px;
1265
+ font-size: 0.8125rem;
1266
+ }
1267
+
1268
+ .header-name {
1269
+ font-weight: 500;
1270
+ color: #6b7280;
1271
+ min-width: 120px;
1272
+ }
1273
+
1274
+ .header-value {
1275
+ color: #374151;
1276
+ word-break: break-all;
1277
+ }
1278
+
1279
+ .query-params code {
1280
+ background-color: #f3f4f6;
1281
+ padding: 4px 8px;
1282
+ border-radius: 4px;
1283
+ font-size: 0.8125rem;
1284
+ word-break: break-all;
1285
+ }
1286
+
1287
+ /* Mobile responsive for requests */
1288
+ @media (max-width: 768px) {
1289
+ .requests-controls {
1290
+ flex-direction: column;
1291
+ gap: 12px;
1292
+ align-items: stretch;
1293
+ }
1294
+
1295
+ .filter-controls {
1296
+ flex-wrap: wrap;
1297
+ }
1298
+
1299
+ .filter-input, .filter-select {
1300
+ min-width: 120px;
1301
+ }
1302
+
1303
+ .requests-table-container {
1304
+ overflow-x: auto;
1305
+ }
1306
+
1307
+ .requests-table {
1308
+ min-width: 800px;
1309
+ }
1310
+ }
1311
+
1312
+ /* Span metadata styles */
1313
+ .span-details {
1314
+ margin-top: 8px;
1315
+ margin-left: 20px;
1316
+ padding: 12px;
1317
+ background-color: #f8fafc;
1318
+ border: 1px solid #e5e7eb;
1319
+ border-radius: 6px;
1320
+ font-size: 0.875rem;
1321
+ max-height: 300px;
1322
+ overflow-y: auto;
1323
+ }
1324
+
1325
+ .span-metadata h5 {
1326
+ margin: 0 0 12px 0;
1327
+ font-size: 1rem;
1328
+ font-weight: 600;
1329
+ color: #374151;
1330
+ }
1331
+
1332
+ .metadata-grid {
1333
+ display: flex;
1334
+ flex-direction: column;
1335
+ gap: 6px;
1336
+ margin-bottom: 12px;
1337
+ }
1338
+
1339
+ .metadata-item {
1340
+ display: flex;
1341
+ justify-content: flex-start;
1342
+ align-items: flex-start;
1343
+ padding: 4px 0;
1344
+ border-bottom: 1px solid #f3f4f6;
1345
+ gap: 8px;
1346
+ }
1347
+
1348
+ .metadata-item:last-child {
1349
+ border-bottom: none;
1350
+ }
1351
+
1352
+ .metadata-label {
1353
+ font-weight: 600;
1354
+ color: #374151;
1355
+ flex-shrink: 0;
1356
+ min-width: 300px;
1357
+ background-color: #f3f4f6;
1358
+ padding: 2px 6px;
1359
+ border-radius: 3px;
1360
+ font-size: 0.75rem;
1361
+ }
1362
+
1363
+ .metadata-value {
1364
+ color: #374151;
1365
+ text-align: left;
1366
+ word-break: break-word;
1367
+ font-family: monospace;
1368
+ font-size: 0.8125rem;
1369
+ flex-grow: 1;
1370
+ }
1371
+
1372
+ .metadata-section {
1373
+ margin-top: 16px;
1374
+ }
1375
+
1376
+ .metadata-section h6 {
1377
+ margin: 0 0 8px 0;
1378
+ font-size: 0.875rem;
1379
+ font-weight: 600;
1380
+ color: #4b5563;
1381
+ text-transform: uppercase;
1382
+ letter-spacing: 0.05em;
1383
+ }
1384
+
1385
+ /* Mobile responsive adjustments for metadata */
1386
+ @media (max-width: 768px) {
1387
+ .metadata-grid {
1388
+ grid-template-columns: 1fr;
1389
+ }
1390
+
1391
+ .metadata-item {
1392
+ flex-direction: column;
1393
+ align-items: flex-start;
1394
+ gap: 2px;
1395
+ }
1396
+
1397
+ .metadata-value {
1398
+ text-align: left;
1399
+ }
1400
+
1401
+ .span-details {
1402
+ margin-left: 10px;
1403
+ }
1404
+ }
1405
+
1406
+ /* Tab styling for request/response details */
1407
+ .details-tabs {
1408
+ display: flex;
1409
+ margin-bottom: 16px;
1410
+ border-bottom: 1px solid #e5e7eb;
1411
+ }
1412
+
1413
+ .tab-button {
1414
+ background: none;
1415
+ border: none;
1416
+ padding: 8px 16px;
1417
+ cursor: pointer;
1418
+ font-size: 0.875rem;
1419
+ font-weight: 500;
1420
+ color: #6b7280;
1421
+ border-bottom: 2px solid transparent;
1422
+ transition: all 0.2s ease;
1423
+ }
1424
+
1425
+ .tab-button:hover {
1426
+ color: #632CA6;
1427
+ }
1428
+
1429
+ .tab-button.active {
1430
+ color: #632CA6;
1431
+ border-bottom-color: #632CA6;
1432
+ }
1433
+
1434
+ .tab-content {
1435
+ display: block;
1436
+ }
1437
+
1438
+ .body-container {
1439
+ display: flex;
1440
+ flex-direction: column;
1441
+ gap: 16px;
1442
+ }
1443
+
1444
+ .body-section h5 {
1445
+ margin: 0 0 8px 0;
1446
+ font-size: 0.875rem;
1447
+ font-weight: 600;
1448
+ color: #374151;
1449
+ }
1450
+
1451
+ .request-body,
1452
+ .response-body {
1453
+ background-color: #1f2937;
1454
+ color: #f9fafb;
1455
+ border-radius: 6px;
1456
+ padding: 12px;
1457
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
1458
+ font-size: 0.75rem;
1459
+ line-height: 1.4;
1460
+ overflow-x: auto;
1461
+ max-height: 300px;
1462
+ overflow-y: auto;
1463
+ max-width: 100%;
1464
+ box-sizing: border-box;
1465
+ word-wrap: break-word;
1466
+ }
1467
+
1468
+ .request-body pre,
1469
+ .response-body pre {
1470
+ margin: 0;
1471
+ white-space: pre-wrap;
1472
+ word-break: break-word;
1473
+ max-width: 100%;
1474
+ overflow-x: auto;
1475
+ }
1476
+
1477
+ .decoded-body {
1478
+ margin-top: 8px;
1479
+ }
1480
+
1481
+ .decoded-body h5 {
1482
+ margin: 0 0 8px 0;
1483
+ font-size: 0.875rem;
1484
+ font-weight: 600;
1485
+ color: #374151;
1486
+ }
1487
+
1488
+ .decoded-body .json-body {
1489
+ background-color: #0f172a;
1490
+ color: #e2e8f0;
1491
+ border-radius: 6px;
1492
+ border-left: 4px solid #3b82f6; /* Blue for JSON */
1493
+ padding: 12px;
1494
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
1495
+ font-size: 0.75rem;
1496
+ line-height: 1.4;
1497
+ overflow-x: auto;
1498
+ max-height: 400px;
1499
+ overflow-y: auto;
1500
+ max-width: 100%;
1501
+ box-sizing: border-box;
1502
+ word-wrap: break-word;
1503
+ }
1504
+
1505
+ .decoded-body .msgpack-body {
1506
+ background-color: #1e1b4b;
1507
+ color: #ddd6fe;
1508
+ border-radius: 6px;
1509
+ border-left: 4px solid #8b5cf6; /* Purple for MessagePack */
1510
+ padding: 12px;
1511
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
1512
+ font-size: 0.75rem;
1513
+ line-height: 1.4;
1514
+ overflow-x: auto;
1515
+ max-height: 400px;
1516
+ overflow-y: auto;
1517
+ max-width: 100%;
1518
+ box-sizing: border-box;
1519
+ word-wrap: break-word;
1520
+ }
1521
+
1522
+ .decoded-body .text-body {
1523
+ background-color: #374151;
1524
+ color: #f9fafb;
1525
+ border-radius: 6px;
1526
+ border-left: 4px solid #6b7280; /* Gray for plain text */
1527
+ padding: 12px;
1528
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
1529
+ font-size: 0.75rem;
1530
+ line-height: 1.4;
1531
+ overflow-x: auto;
1532
+ max-height: 400px;
1533
+ overflow-y: auto;
1534
+ max-width: 100%;
1535
+ box-sizing: border-box;
1536
+ word-wrap: break-word;
1537
+ }
1538
+
1539
+ .decoded-body .error-body {
1540
+ background-color: #7f1d1d;
1541
+ color: #fecaca;
1542
+ border-radius: 6px;
1543
+ border-left: 4px solid #dc2626; /* Red for errors */
1544
+ padding: 12px;
1545
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
1546
+ font-size: 0.75rem;
1547
+ line-height: 1.4;
1548
+ overflow-x: auto;
1549
+ max-height: 400px;
1550
+ overflow-y: auto;
1551
+ max-width: 100%;
1552
+ box-sizing: border-box;
1553
+ word-wrap: break-word;
1554
+ }
1555
+
1556
+ .decoded-body .empty-body {
1557
+ background-color: #374151;
1558
+ color: #9ca3af;
1559
+ border-radius: 6px;
1560
+ border-left: 4px solid #6b7280; /* Gray for empty */
1561
+ padding: 12px;
1562
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
1563
+ font-size: 0.75rem;
1564
+ line-height: 1.4;
1565
+ font-style: italic;
1566
+ }
1567
+
1568
+ .query-params {
1569
+ background-color: #f3f4f6;
1570
+ padding: 8px 12px;
1571
+ border-radius: 6px;
1572
+ font-family: 'SF Mono', Monaco, Consolas, monospace;
1573
+ font-size: 0.75rem;
1574
+ color: #374151;
1575
+ word-break: break-all;
1576
+ }
1577
+
1578
+ /* Action controls styling */
1579
+ .action-controls {
1580
+ display: flex;
1581
+ flex-wrap: wrap;
1582
+ gap: 8px;
1583
+ align-items: center;
1584
+ }
1585
+
1586
+ .action-controls .action-button {
1587
+ margin: 0;
1588
+ }
1589
+
1590
+ /* SSE Pause button styling */
1591
+ #pause-sse-btn {
1592
+ background-color: #28a745;
1593
+ color: white;
1594
+ border: 1px solid #28a745;
1595
+ }
1596
+
1597
+ #pause-sse-btn:hover {
1598
+ background-color: #218838;
1599
+ border-color: #1e7e34;
1600
+ }
1601
+
1602
+ #pause-sse-btn.paused {
1603
+ background-color: #ffc107;
1604
+ color: #212529;
1605
+ border-color: #ffc107;
1606
+ }
1607
+
1608
+ #pause-sse-btn.paused:hover {
1609
+ background-color: #e0a800;
1610
+ border-color: #d39e00;
1611
+ }
1612
+
1613
+ /* Proxy status styling */
1614
+ .proxy-enabled {
1615
+ color: #10b981 !important;
1616
+ font-weight: 600;
1617
+ }
1618
+
1619
+ .proxy-disabled {
1620
+ color: #6b7280;
1621
+ }
1622
+
1623
+ /* Multipart form data styling */
1624
+ .multipart-data {
1625
+ display: flex;
1626
+ flex-direction: column;
1627
+ gap: 16px;
1628
+ }
1629
+
1630
+ .multipart-field {
1631
+ border: 1px solid #e5e7eb;
1632
+ border-radius: 6px;
1633
+ background: #f9fafb;
1634
+ padding: 12px;
1635
+ }
1636
+
1637
+ .field-header {
1638
+ display: flex;
1639
+ justify-content: space-between;
1640
+ align-items: center;
1641
+ margin-bottom: 8px;
1642
+ }
1643
+
1644
+ .field-header strong {
1645
+ color: #374151;
1646
+ font-weight: 600;
1647
+ }
1648
+
1649
+ .field-type {
1650
+ font-size: 0.875rem;
1651
+ color: #6b7280;
1652
+ font-style: italic;
1653
+ }
1654
+
1655
+ .field-value {
1656
+ margin-top: 8px;
1657
+ }
1658
+
1659
+ .field-value pre {
1660
+ margin: 0;
1661
+ background: white;
1662
+ border: 1px solid #e5e7eb;
1663
+ border-radius: 4px;
1664
+ padding: 8px;
1665
+ max-height: 200px;
1666
+ overflow-y: auto;
1667
+ overflow-x: auto;
1668
+ white-space: pre-wrap;
1669
+ word-wrap: break-word;
1670
+ }
1671
+
1672
+ .field-value code {
1673
+ font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Roboto Mono', monospace;
1674
+ font-size: 0.875rem;
1675
+ line-height: 1.4;
1676
+ word-break: break-all;
1677
+ white-space: pre-wrap;
1678
+ word-wrap: break-word;
1679
+ }