Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
1866 lines (1740 loc) · 150 KB
/
Copy pathindex.html
File metadata and controls
1866 lines (1740 loc) · 150 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<style>
@font-face {
font-family: 'Space Grotesk';
font-style: normal;
font-weight: 300 700;
font-display: swap;
src: url(data:font/woff2;base64,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) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(data:font/woff2;base64,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) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(data:font/woff2;base64,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) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'IBM Plex Mono';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url(data:font/woff2;base64,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) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
</style>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CoBot 控制台 · Dispatch Console</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' shape-rendering='crispEdges'%3E%3Crect width='24' height='24' rx='4' fill='%230A0E14'/%3E%3Crect x='11' y='1' width='2' height='2' fill='%235FD38A'/%3E%3Crect x='11' y='3' width='2' height='2' fill='%238C530D'/%3E%3Crect x='2' y='10' width='2' height='5' fill='%238C530D'/%3E%3Crect x='2' y='11' width='1' height='3' fill='%23F5BC4C'/%3E%3Crect x='20' y='10' width='2' height='5' fill='%238C530D'/%3E%3Crect x='21' y='11' width='1' height='3' fill='%23F5BC4C'/%3E%3Crect x='6' y='5' width='12' height='2' fill='%23F5BC4C'/%3E%3Crect x='4' y='7' width='2' height='13' fill='%23F5BC4C'/%3E%3Crect x='6' y='7' width='12' height='1' fill='%23E8A33D'/%3E%3Crect x='18' y='7' width='2' height='13' fill='%238C530D'/%3E%3Crect x='4' y='20' width='16' height='1' fill='%238C530D'/%3E%3Crect x='5' y='6' width='1' height='1' fill='%23F5BC4C'/%3E%3Crect x='18' y='6' width='1' height='1' fill='%238C530D'/%3E%3Crect x='6' y='8' width='12' height='9' fill='%23070A10'/%3E%3Crect x='8' y='10' width='2' height='3' fill='%235FD38A'/%3E%3Crect x='8' y='10' width='1' height='1' fill='%23E6EDF3'/%3E%3Crect x='14' y='10' width='2' height='3' fill='%235FD38A'/%3E%3Crect x='14' y='10' width='1' height='1' fill='%23E6EDF3'/%3E%3Crect x='10' y='14' width='4' height='1' fill='%23E8A33D'/%3E%3Crect x='7' y='18' width='10' height='2' fill='%23E8A33D'/%3E%3Crect x='8' y='21' width='8' height='2' fill='%231E2A3A'/%3E%3C/svg%3E">
<style>
:root {
/* Ink + instrument surfaces */
--bg-color: #0A0E14;
--bg-2: #0F141E;
--panel-bg: #111A26;
--elev: #17222F;
--border-color: #1E2A3A;
--border-strong: #2B3B4F;
--text-main: #E6EDF3;
--text-muted: #8391A6;
--text-faint: #5A6A80;
/* Signals — kept under the same names the JS-injected markup uses */
--primary: #E8A33D; /* amber: the machine is working */
--primary-hover: #F5BC4C;
--success: #5FD38A; /* mint: healthy / done */
--danger: #E4574D;
--warning: #A78BFA; /* violet: flagged for operator attention */
--info: #7FB4E8; /* steel: neutral telemetry */
--terminal-bg: #070A10;
--terminal-text: #D9A441;
--font-display: "Space Grotesk", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
--sidebar-width: 232px;
--radius: 10px;
--radius-sm: 6px;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
background-color: var(--bg-color);
color: var(--text-main);
font-family: var(--font-display);
display: flex;
height: 100vh;
overflow: hidden;
-webkit-font-smoothing: antialiased;
}
::selection { background: rgba(232, 163, 61, 0.28); }
/* Scrollbars as thin instrument rails */
*::-webkit-scrollbar { width: 10px; height: 10px; }
*::-webkit-scrollbar-track { background: transparent; }
*::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 6px; border: 2px solid transparent; background-clip: content-box; }
*::-webkit-scrollbar-thumb:hover { background: var(--text-faint); background-clip: content-box; }
:focus-visible { outline: 2px solid var(--primary); outline-offset: 2px; border-radius: 4px; }
/* ============ Sidebar: instrument rail ============ */
aside {
width: var(--sidebar-width);
background: linear-gradient(180deg, var(--bg-2), var(--bg-color));
border-right: 1px solid var(--border-color);
display: flex;
flex-direction: column;
padding: 1.1rem 0.85rem;
flex-shrink: 0;
}
.brand {
display: flex;
align-items: center;
gap: 0.7rem;
font-size: 1.05rem;
font-weight: 700;
letter-spacing: 0.02em;
color: var(--text-main);
margin-bottom: 1.6rem;
padding: 0.35rem 0.55rem;
}
.brand svg { width: 28px; height: 28px; flex-shrink: 0; image-rendering: pixelated; shape-rendering: crispEdges; }
.brand .brand-sub { font-family: var(--font-mono); font-size: 0.62rem; font-weight: 500; letter-spacing: 0.14em; color: var(--text-faint); text-transform: uppercase; display: block; margin-top: 2px; }
nav { display: flex; flex-direction: column; gap: 0.15rem; flex: 1; }
.nav-item {
display: flex;
align-items: center;
gap: 0.7rem;
padding: 0.6rem 0.7rem;
border-radius: 8px;
color: var(--text-muted);
cursor: pointer;
font-weight: 500;
font-size: 0.9rem;
border: 1px solid transparent;
transition: color 0.16s ease, background-color 0.16s ease, border-color 0.16s ease;
user-select: none;
}
.nav-item:hover { background-color: rgba(255, 255, 255, 0.04); color: var(--text-main); }
.nav-item.active {
background: linear-gradient(180deg, rgba(232,163,61,0.14), rgba(232,163,61,0.06));
color: var(--primary-strong);
border-color: rgba(232, 163, 61, 0.28);
font-weight: 600;
}
.nav-item.active::before {
content: "";
width: 3px; height: 16px; border-radius: 2px;
background: var(--primary);
margin-left: -0.7rem; margin-right: -0.35rem;
box-shadow: 0 0 8px rgba(232, 163, 61, 0.6);
}
.nav-item svg { width: 19px; height: 19px; stroke: currentColor; fill: none; stroke-width: 2; flex-shrink: 0; }
.api-key-box {
margin-top: auto;
padding: 0.9rem 0.55rem 0.2rem;
border-top: 1px solid var(--border-color);
}
.api-key-box .key-label {
font-family: var(--font-mono);
font-size: 0.62rem;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--text-faint);
display: block;
margin-bottom: 0.4rem;
}
.api-key-box input {
width: 100%;
padding: 0.5rem 0.6rem;
border-radius: var(--radius-sm);
border: 1px solid var(--border-color);
background-color: var(--bg-color);
color: var(--text-main);
font-family: var(--font-mono);
font-size: 0.78rem;
}
.api-key-box input:focus { border-color: var(--primary); }
/* ============ Main ============ */
main {
flex: 1;
display: flex;
flex-direction: column;
overflow-y: auto;
background: var(--bg-color);
}
header {
padding: 0.9rem 1.8rem;
border-bottom: 1px solid var(--border-color);
display: flex;
justify-content: space-between;
align-items: center;
background: var(--bg-2);
position: sticky;
top: 0;
z-index: 20;
backdrop-filter: saturate(1.2);
}
header h1 {
font-size: 0.95rem;
font-weight: 600;
letter-spacing: 0.01em;
display: flex; align-items: center; gap: 0.6rem;
}
header h1 .crumb { font-family: var(--font-mono); color: var(--text-faint); font-weight: 400; font-size: 0.8rem; }
.status-badge {
display: flex;
align-items: center;
gap: 0.5rem;
padding: 0.3rem 0.8rem;
border-radius: 20px;
font-family: var(--font-mono);
font-size: 0.72rem;
letter-spacing: 0.03em;
background: rgba(95, 211, 138, 0.08);
color: var(--success);
border: 1px solid rgba(95, 211, 138, 0.28);
}
.status-dot {
width: 7px; height: 7px; border-radius: 50%;
background: var(--success);
box-shadow: 0 0 8px rgba(95, 211, 138, 0.8);
animation: pulse 2.4s ease-in-out infinite;
}
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.35; } }
.content-section { padding: 1.6rem 1.8rem 2.4rem; display: none; }
.content-section.active { display: block; }
/* ============ Instrument readout cards ============ */
.grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1.1rem; margin-bottom: 1.6rem; }
.card {
background: linear-gradient(180deg, var(--panel-bg), var(--bg-2));
border: 1px solid var(--border-color);
border-radius: var(--radius);
padding: 1.1rem 1.2rem;
display: flex;
flex-direction: column;
position: relative;
overflow: hidden;
}
.card::before {
content: "";
position: absolute;
top: 0; left: 0; right: 0;
height: 2px;
background: linear-gradient(90deg, var(--primary), transparent 70%);
opacity: 0.55;
}
.card-title {
font-family: var(--font-mono);
font-size: 0.66rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--text-faint);
margin-bottom: 0.55rem;
}
.card-value {
font-family: var(--font-mono);
font-size: 1.7rem;
font-weight: 600;
color: var(--text-main);
letter-spacing: -0.01em;
line-height: 1.1;
}
.card-sub {
font-family: var(--font-mono);
font-size: 0.72rem;
color: var(--info);
margin-top: 0.5rem;
letter-spacing: 0.01em;
}
/* ============ Panels & tables ============ */
.panel-container {
background: var(--panel-bg);
border: 1px solid var(--border-color);
border-radius: var(--radius);
overflow: hidden;
margin-bottom: 1.6rem;
}
.panel-header {
padding: 0.85rem 1.3rem;
border-bottom: 1px solid var(--border-color);
font-weight: 600;
font-size: 0.92rem;
display: flex;
justify-content: space-between;
align-items: center;
background: var(--bg-2);
}
.panel-header .panel-tag {
font-family: var(--font-mono);
font-size: 0.62rem;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--text-faint);
}
table { width: 100%; border-collapse: collapse; text-align: left; font-size: 0.86rem; }
/* Tables scroll horizontally instead of squeezing fields: every column
is allowed its natural content width (white-space:nowrap), and the
viewport scrolls when the table is wider than the panel. Long-text
columns (.col-wrap) wrap inside a generous band so they neither
starve neighbours nor stretch the table absurdly. */
.table-scroll { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.table-scroll table { min-width: 100%; }
.table-scroll td, .table-scroll th { white-space: nowrap; }
.table-scroll .col-wrap { white-space: normal; word-break: break-word; max-width: 360px; min-width: 180px; }
/* Sticky right-most action column: stays pinned while the table is
scrolled sideways so the 操作 buttons are always reachable. Opaque
backgrounds are mandatory — otherwise scrolled content bleeds
through the pinned cell. */
.table-scroll th.col-action,
.table-scroll td.col-action {
position: sticky;
right: 0;
background: var(--panel-bg);
border-left: 1px solid var(--border-strong);
white-space: nowrap;
z-index: 2;
}
.table-scroll th.col-action { background: var(--bg-2); }
.table-scroll td.col-action { box-shadow: -6px 0 10px -6px rgba(0, 0, 0, 0.45); }
tbody tr:hover td.col-action { background: #16202C; }
th {
padding: 0.7rem 1.3rem;
background: transparent;
color: var(--text-faint);
font-family: var(--font-mono);
font-weight: 500;
font-size: 0.66rem;
letter-spacing: 0.08em;
text-transform: uppercase;
border-bottom: 1px solid var(--border-strong);
}
td { padding: 0.75rem 1.3rem; border-bottom: 1px solid var(--border-color); vertical-align: top; }
tr:last-child td { border-bottom: none; }
tbody tr { transition: background-color 0.12s ease; }
tbody tr:hover { background-color: rgba(255, 255, 255, 0.025); }
code {
font-family: var(--font-mono);
font-size: 0.78em;
background: rgba(127, 180, 232, 0.08);
border: 1px solid var(--border-color);
padding: 0.08em 0.4em;
border-radius: 5px;
color: var(--info);
}
.badge {
display: inline-block;
padding: 0.18rem 0.55rem;
border-radius: 20px;
font-family: var(--font-mono);
font-size: 0.72rem;
font-weight: 500;
letter-spacing: 0.02em;
border: 1px solid transparent;
}
.badge-done { background: rgba(95, 211, 138, 0.10); color: var(--success); border-color: rgba(95, 211, 138, 0.28); }
.badge-running { background: rgba(232, 163, 61, 0.12); color: var(--primary-strong); border-color: rgba(232, 163, 61, 0.3); }
.badge-error { background: rgba(228, 87, 77, 0.10); color: var(--danger); border-color: rgba(228, 87, 77, 0.3); }
.badge-aborted { background: rgba(167, 139, 250, 0.10); color: var(--warning); border-color: rgba(167, 139, 250, 0.3); }
/* ============ Forms ============ */
.form-group { margin-bottom: 1.1rem; }
.form-group label {
display: block;
font-size: 0.78rem;
color: var(--text-muted);
margin-bottom: 0.4rem;
font-weight: 500;
}
.form-group label .hint { font-family: var(--font-mono); color: var(--text-faint); font-size: 0.7rem; font-weight: 400; }
.form-group input, .form-group select, .form-group textarea {
width: 100%;
padding: 0.55rem 0.7rem;
border-radius: var(--radius-sm);
border: 1px solid var(--border-color);
background-color: var(--bg-color);
color: var(--text-main);
font-size: 0.88rem;
font-family: var(--font-display);
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
border-color: var(--primary);
box-shadow: 0 0 0 3px rgba(232, 163, 61, 0.12);
outline: none;
}
.form-group input::placeholder, .form-group textarea::placeholder { color: var(--text-faint); }
.form-row { display: flex; gap: 1rem; }
.form-row .form-group { flex: 1; }
/* Boolean setting rows: label on the left, switch on the right, one per line. */
.setting-row {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
padding: 0.68rem 0;
border-bottom: 1px solid var(--border-color);
margin-bottom: 0.2rem;
}
.setting-row .setting-label {
font-size: 0.82rem;
color: var(--text-main);
font-weight: 500;
display: flex;
flex-direction: column;
gap: 0.15rem;
}
.setting-row .setting-label .hint { font-family: var(--font-mono); color: var(--text-faint); font-size: 0.7rem; font-weight: 400; }
/* Switch (checkbox-driven) */
.switch { position: relative; display: inline-block; width: 42px; height: 24px; flex-shrink: 0; }
.switch input { opacity: 0; width: 0; height: 0; }
.switch .slider {
position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0;
background: var(--border-strong); transition: 0.2s; border-radius: 24px;
}
.switch .slider:before {
position: absolute; content: ""; height: 18px; width: 18px;
left: 3px; bottom: 3px; background: #fff; transition: 0.2s; border-radius: 50%;
}
.switch input:checked + .slider { background: var(--primary); }
.switch input:checked + .slider:before { transform: translateX(18px); }
/* ============ Progress ============ */
.progress-bar-bg { background: rgba(255, 255, 255, 0.06); border-radius: 3px; height: 6px; width: 100%; overflow: hidden; }
.progress-bar-fill { background: linear-gradient(90deg, var(--primary), var(--primary-hover)); height: 100%; border-radius: 3px; transition: width 0.3s ease; }
/* ============ Buttons ============ */
.btn {
padding: 0.42rem 0.85rem;
border-radius: var(--radius-sm);
border: 1px solid transparent;
cursor: pointer;
font-size: 0.8rem;
font-weight: 600;
font-family: var(--font-display);
display: inline-flex;
align-items: center;
gap: 0.4rem;
transition: transform 0.06s ease, opacity 0.15s ease, background-color 0.15s ease, border-color 0.15s ease;
white-space: nowrap;
}
.btn:active { transform: translateY(1px); }
.btn-danger { background: var(--danger); color: #fff; }
.btn-danger:hover { background: #f06a61; opacity: 1; }
.btn-primary { background: var(--primary); color: #14100A; }
.btn-primary:hover { background: var(--primary-hover); opacity: 1; }
.btn-secondary { background: transparent; color: var(--text-muted); border-color: var(--border-strong); }
.btn-secondary:hover { color: var(--text-main); border-color: var(--text-faint); background: rgba(255,255,255,0.03); }
/* ============ Modal ============ */
.modal-overlay {
position: fixed;
top: 0; left: 0; right: 0; bottom: 0;
background: rgba(5, 8, 12, 0.78);
backdrop-filter: blur(3px);
display: flex;
align-items: center;
justify-content: center;
z-index: 1000;
opacity: 0;
pointer-events: none;
transition: opacity 0.18s ease;
}
.modal-overlay.active { opacity: 1; pointer-events: auto; }
.modal-content {
background: var(--panel-bg);
border: 1px solid var(--border-strong);
border-radius: 12px;
width: 90%;
max-width: 720px;
max-height: 85vh;
display: flex;
flex-direction: column;
overflow: hidden; /* the single scrollbar lives in .modal-body */
padding: 1.4rem;
box-shadow: 0 24px 60px rgba(0, 0, 0, 0.5);
}
/* Pinned title bar — never scrolls. */
.modal-content > .modal-head { flex: 0 0 auto; }
/* The ONE scroll container for the whole dialog body. All inner content
(metadata, prompt, trace timeline) flows here; no nested scrollbars. */
.modal-content > .modal-body {
flex: 1 1 auto;
min-height: 0; /* allow the flex child to shrink so its own overflow engages */
overflow-y: auto;
padding-right: 0.35rem;
}
.modal-content pre {
background: var(--terminal-bg);
border: 1px solid var(--border-color);
border-radius: var(--radius-sm);
padding: 0.75rem;
white-space: pre-wrap;
word-break: break-all;
font-family: var(--font-mono);
font-size: 0.78rem;
color: var(--terminal-text);
margin-top: 0.3rem;
}
/* ============ The teleprinter: live log hero ============ */
.teleprinter-head {
display: flex;
flex-wrap: wrap;
gap: 0.6rem;
align-items: center;
justify-content: space-between;
padding: 0.7rem 1.1rem;
background: var(--bg-2);
border-bottom: 1px solid var(--border-color);
}
.teleprinter-head .live {
display: inline-flex; align-items: center; gap: 0.45rem;
font-family: var(--font-mono);
font-size: 0.66rem;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--danger);
}
.teleprinter-head .live .rec {
width: 8px; height: 8px; border-radius: 50%;
background: var(--danger);
animation: blinker 1.4s steps(2, start) infinite;
}
.teleprinter-head .ctx { font-family: var(--font-mono); font-size: 0.7rem; color: var(--text-faint); }
.teleprinter-toolbar { display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center; }
.terminal {
background: var(--terminal-bg);
color: var(--terminal-text);
font-family: var(--font-mono);
font-size: 0.82rem;
line-height: 1.55;
height: 560px;
overflow-y: auto;
padding: 1rem 1.1rem;
white-space: pre-wrap;
word-break: break-all;
border-top: 1px solid transparent;
position: relative;
}
/* blinking block cursor — the signature */
.terminal::after {
content: "▊";
color: var(--terminal-text);
animation: cursor 1.1s steps(2, start) infinite;
}
@keyframes cursor { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }
@keyframes blinker { 0%, 100% { opacity: 1; } 50% { opacity: 0.15; } }
/* ============ Config raw yaml ============ */
.raw-yaml {
width: 100%;
font-family: var(--font-mono);
background: var(--terminal-bg);
color: var(--terminal-text);
border: 1px solid var(--border-color);
border-radius: var(--radius-sm);
padding: 0.8rem;
font-size: 0.8rem;
line-height: 1.5;
}
/* ============ Responsive: sidebar collapses to a top rail ============ */
@media (max-width: 860px) {
body { flex-direction: column; }
aside {
width: 100%;
flex-direction: row;
align-items: center;
gap: 0.6rem;
padding: 0.6rem 0.8rem;
border-right: none;
border-bottom: 1px solid var(--border-color);
}
.brand { margin-bottom: 0; padding: 0; }
.brand .brand-sub { display: none; }
nav { flex-direction: row; overflow-x: auto; gap: 0.2rem; }
.nav-item { white-space: nowrap; padding: 0.45rem 0.6rem; }
.nav-item.active::before { display: none; }
.api-key-box { margin-top: 0; padding: 0; border-top: none; flex-shrink: 0; max-width: 180px; }
.api-key-box .key-label { display: none; }
.content-section { padding: 1.1rem 1rem 2rem; }
header { padding: 0.7rem 1rem; }
.form-row { flex-direction: column; gap: 0; }
}
@media (max-width: 480px) {
header h1 .crumb { display: none; }
.status-badge { font-size: 0.64rem; }
.card-value { font-size: 1.4rem; }
}
/* Respect reduced motion */
@media (prefers-reduced-motion: reduce) {
.status-dot, .teleprinter-head .live .rec, .terminal::after { animation: none; }
* { transition-duration: 0.01ms !important; }
}
</style>
</head>
<body>
<aside>
<div class="brand">
<svg viewBox="0 0 24 24" aria-hidden="true" shape-rendering="crispEdges">
<rect x="11" y="1" width="2" height="2" fill="#5FD38A"/>
<rect x="11" y="3" width="2" height="2" fill="#8C530D"/>
<rect x="2" y="10" width="2" height="5" fill="#8C530D"/>
<rect x="2" y="11" width="1" height="3" fill="#F5BC4C"/>
<rect x="20" y="10" width="2" height="5" fill="#8C530D"/>
<rect x="21" y="11" width="1" height="3" fill="#F5BC4C"/>
<rect x="6" y="5" width="12" height="2" fill="#F5BC4C"/>
<rect x="4" y="7" width="2" height="13" fill="#F5BC4C"/>
<rect x="6" y="7" width="12" height="1" fill="#E8A33D"/>
<rect x="18" y="7" width="2" height="13" fill="#8C530D"/>
<rect x="4" y="20" width="16" height="1" fill="#8C530D"/>
<rect x="5" y="6" width="1" height="1" fill="#F5BC4C"/>
<rect x="18" y="6" width="1" height="1" fill="#8C530D"/>
<rect x="6" y="8" width="12" height="9" fill="#070A10"/>
<rect x="8" y="10" width="2" height="3" fill="#5FD38A"/>
<rect x="8" y="10" width="1" height="1" fill="#E6EDF3"/>
<rect x="14" y="10" width="2" height="3" fill="#5FD38A"/>
<rect x="14" y="10" width="1" height="1" fill="#E6EDF3"/>
<rect x="10" y="14" width="4" height="1" fill="#E8A33D"/>
<rect x="7" y="13" width="1" height="1" fill="#F5BC4C" fill-opacity="0.6"/>
<rect x="16" y="13" width="1" height="1" fill="#F5BC4C" fill-opacity="0.6"/>
<rect x="7" y="18" width="10" height="2" fill="#E8A33D"/>
<rect x="8" y="21" width="8" height="2" fill="#1E2A3A"/>
<rect x="10" y="21" width="4" height="1" fill="#8391A6"/>
</svg>
<div>
CoBot Admin
<span class="brand-sub">Dispatch Console</span>
</div>
</div>
<nav aria-label="主导航">
<div class="nav-item active" role="button" tabindex="0" aria-current="page" onclick="switchTab('dashboard', this)" onkeydown="if(event.key==='Enter'||event.key===' ')this.click()">
<svg viewBox="0 0 24 24" aria-hidden="true"><rect x="3" y="3" width="7" height="7"></rect><rect x="14" y="3" width="7" height="7"></rect><rect x="14" y="14" width="7" height="7"></rect><rect x="3" y="14" width="7" height="7"></rect></svg>
概览大盘
</div>
<div class="nav-item" role="button" tabindex="0" onclick="switchTab('tasks', this)" onkeydown="if(event.key==='Enter'||event.key===' ')this.click()">
<svg viewBox="0 0 24 24" aria-hidden="true"><polyline points="22 12 18 12 15 21 9 3 6 12 2 12"></polyline></svg>
任务与审计
</div>
<div class="nav-item" role="button" tabindex="0" onclick="switchTab('cron', this)" onkeydown="if(event.key==='Enter'||event.key===' ')this.click()">
<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="10"></circle><polyline points="12 6 12 16 14"></polyline></svg>
定时任务
</div>
<div class="nav-item" role="button" tabindex="0" onclick="switchTab('bindings', this)" onkeydown="if(event.key==='Enter'||event.key===' ')this.click()">
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"></path><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"></path></svg>
绑定与授权
</div>
<div class="nav-item" role="button" tabindex="0" onclick="switchTab('configTab', this)" onkeydown="if(event.key==='Enter'||event.key===' ')this.click()">
<svg viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="3"></circle><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1 0 2.83 2 2 0 0 1-2.83 0l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-2 2 2 2 0 0 1-2-2v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83 0 2 2 0 0 1 0-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1-2-2 2 2 0 0 1 2-2h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 0-2.83 2 2 0 0 1 2.83 0l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 2-2 2 2 0 0 1 2 2v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 0 2 2 0 0 1 0 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 2 2 2 2 0 0 1-2 2h-.09a1.65 1.65 0 0 0-1.51 1z"></path></svg>
系统配置
</div>
<div class="nav-item" role="button" tabindex="0" onclick="switchTab('logs', this)" onkeydown="if(event.key==='Enter'||event.key===' ')this.click()">
<svg viewBox="0 0 24 24" aria-hidden="true"><polyline points="4 17 10 11 4 5"></polyline><line x1="12" y1="19" x2="20" y2="19"></line></svg>
实时日志
</div>
</nav>
<div class="api-key-box" id="apiKeyContainer" style="display: none;">
<label class="key-label" for="apiKeyInput">Admin API Key</label>
<input type="password" id="apiKeyInput" placeholder="Enter API Key" autocomplete="off" oninput="saveApiKey(this.value)">
</div>
</aside>
<main>
<header>
<h1><span class="crumb">CoBot</span> / <span id="pageTitle">概览大盘</span></h1>
<div class="status-badge">
<div class="status-dot"></div>
系统运行正常
</div>
</header>
<!-- Dashboard Tab -->
<div id="dashboard" class="content-section active">
<div class="grid">
<div class="card">
<div class="card-title">系统在线运行时间</div>
<div class="card-value" id="valUptime">--</div>
<div class="card-sub" id="valPid">PID: --</div>
</div>
<div class="card">
<div class="card-title">当前活跃并发任务</div>
<div class="card-value" id="valActiveTasks">0</div>
<div class="card-sub">单 Chat FIFO 队列管理</div>
</div>
<div class="card">
<div class="card-title">累计任务数 / 成功率</div>
<div class="card-value" id="valTotalTasks">0</div>
<div class="card-sub" id="valSuccessRate">成功率: --%</div>
</div>
<div class="card">
<div class="card-title">累计成本与 Token 消耗</div>
<div class="card-value" id="valTotalCost">$0.00</div>
<div class="card-sub" id="valTotalTokens">Tokens: 0</div>
</div>
</div>
<!-- Phase 2: Analytics Charts Section -->
<div class="grid" style="grid-template-columns: 2fr 1fr;">
<div class="panel-container" style="padding:1.3rem;">
<div class="panel-header" style="padding:0 0 0.8rem 0; margin-bottom:0.9rem;">
<span>近 7 天任务分布与消耗走势</span>
<span class="panel-tag">Tasks & Cost</span>
</div>
<div id="dailySvgChartContainer" style="height: 200px; display:flex; align-items:flex-end; gap:1.2rem; padding-top:1rem; border-bottom:1px solid var(--border-color);">
<div style="color:var(--text-faint); font-family:var(--font-mono); font-size:0.78rem;">暂无近 7 天柱状统计数据</div>
</div>
</div>
<div class="panel-container" style="padding:1.3rem;">
<div class="panel-header" style="padding:0 0 0.8rem 0; margin-bottom:0.9rem;">
<span>工具使用分布榜</span>
<span class="panel-tag">Tools</span>
</div>
<div id="toolsBreakdownContainer" style="display:flex; flex-direction:column; gap:0.9rem;">
<div style="color:var(--text-faint); font-family:var(--font-mono); font-size:0.78rem;">暂无工具调用统计</div>
</div>
</div>
</div>
<!-- Engine / Model usage breakdown (multi-engine stats) -->
<div class="grid" style="grid-template-columns: 1fr 1fr;">
<div class="panel-container" style="padding:1.3rem;">
<div class="panel-header" style="padding:0 0 0.8rem 0; margin-bottom:0.9rem;">
<span>引擎使用分布</span>
<span class="panel-tag">Engines</span>
</div>
<div id="engineBreakdownContainer" style="display:flex; flex-direction:column; gap:0.9rem;">
<div style="color:var(--text-faint); font-family:var(--font-mono); font-size:0.78rem;">暂无引擎统计</div>
</div>
</div>
<div class="panel-container" style="padding:1.3rem;">
<div class="panel-header" style="padding:0 0 0.8rem 0; margin-bottom:0.9rem;">
<span>模型使用分布</span>
<span class="panel-tag">Models</span>
</div>
<div id="modelBreakdownContainer" style="display:flex; flex-direction:column; gap:0.9rem;">
<div style="color:var(--text-faint); font-family:var(--font-mono); font-size:0.78rem;">暂无模型统计</div>
</div>
</div>
</div>
<div class="panel-container">
<div class="panel-header">
<span>当前正在运行的任务</span>
<span class="panel-tag">Active Runs</span>
</div>
<div class="table-scroll">
<table>
<thead>
<tr>
<th>Task ID</th>
<th>Chat ID</th>
<th class="col-wrap">工程路径</th>
<th class="col-wrap">Prompt 内容</th>
<th class="col-wrap">引擎 / 模型</th>
<th>耗时</th>
<th class="col-wrap">当前动作</th>
<th class="col-action">操作</th>
</tr>
</thead>
<tbody id="activeTasksBody">
<tr><td colspan="8" style="text-align:center; color:var(--text-faint); font-family:var(--font-mono); padding:1.6rem;">暂无运行中的任务</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- Tasks & Audit Tab -->
<div id="tasks" class="content-section">
<div class="panel-container">
<div class="panel-header">
<span>历史任务审计日志</span>
<span class="panel-tag">Audit Logs</span>
</div>
<div class="table-scroll">
<table>
<thead>
<tr>
<th>时间</th>
<th>Chat ID</th>
<th>Status</th>
<th class="col-wrap">Prompt 摘要</th>
<th class="col-wrap">引擎 / 模型</th>
<th class="col-wrap">工具使用</th>
<th>Tokens</th>
<th>Cost ($USD)</th>
<th class="col-action">操作</th>
</tr>
</thead>
<tbody id="auditLogsBody">
<tr><td colspan="9" style="text-align:center; color:var(--text-faint); font-family:var(--font-mono); padding:1.6rem;">加载中...</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- Cron Tab -->
<div id="cron" class="content-section">
<div class="panel-container">
<div class="panel-header">
<span>定时任务列表</span>
<span class="panel-tag">Cron Jobs</span>
</div>
<div class="table-scroll">
<table>
<thead>
<tr>
<th>Cron ID</th>
<th>Chat ID</th>
<th>Schedule</th>
<th class="col-wrap">Prompt</th>
<th>启用状态</th>
<th>最后执行时间</th>
<th class="col-action">操作</th>
</tr>
</thead>
<tbody id="cronBody">
<tr><td colspan="7" style="text-align:center; color:var(--text-faint); font-family:var(--font-mono); padding:1.6rem;">加载中...</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- Bindings Tab -->
<div id="bindings" class="content-section">
<div class="panel-container">
<div class="panel-header">
<span>Chat 绑定的本地工程目录</span>
<button class="btn btn-primary" onclick="toggleAddBindingForm()">在线新增/修改绑定</button>
</div>
<div id="addBindingForm" style="display:none; padding:1.3rem; border-bottom:1px solid var(--border-color); background: rgba(0,0,0,0.18);">
<div class="form-row">
<div class="form-group">
<label for="bindChatId">Telegram Chat ID</label>
<input type="number" id="bindChatId" placeholder="如 12345678">
</div>
<div class="form-group">
<label for="bindProjectSelect">选择或输入本地工程路径</label>
<select id="bindProjectSelect" onchange="document.getElementById('bindProjectPath').value = this.value">
<option value="">-- 选择扫描到的 Dev Project --</option>
</select>
</div>
</div>
<div class="form-group">
<label for="bindProjectPath">完整绝对路径</label>
<input type="text" id="bindProjectPath" placeholder="/Users/username/Develop/my-project" autocomplete="off">
</div>
<div style="display:flex; gap:0.5rem; justify-content:flex-end;">
<button class="btn btn-secondary" onclick="toggleAddBindingForm()">取消</button>
<button class="btn btn-primary" onclick="submitNewBinding()">保存绑定</button>
</div>
</div>
<div class="table-scroll">
<table>
<thead>
<tr>
<th>Chat ID</th>
<th class="col-wrap">Project Path</th>
<th class="col-wrap">Session ID</th>
<th class="col-wrap">引擎 / 模型覆盖</th>
<th>授权模式</th>
<th>更新时间</th>
<th class="col-action">操作</th>
</tr>
</thead>
<tbody id="bindingsBody">
<tr><td colspan="7" style="text-align:center; color:var(--text-faint); font-family:var(--font-mono); padding:1.6rem;">加载中...</td></tr>
</tbody>
</table>
</div>
</div>
<div class="panel-container">
<div class="panel-header">
<span>免审批工具授权规则</span>
<span class="panel-tag">Approval Rules</span>
</div>
<div class="table-scroll">
<table>
<thead>
<tr>
<th>Chat ID</th>
<th class="col-wrap">信任工具名称</th>
<th>添加时间</th>
<th class="col-action">操作</th>
</tr>
</thead>
<tbody id="rulesBody">
<tr><td colspan="4" style="text-align:center; color:var(--text-faint); font-family:var(--font-mono); padding:1.6rem;">加载中...</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- System Config Tab -->
<div id="configTab" class="content-section">
<div class="panel-container" style="padding:1.3rem;">
<div class="panel-header" style="padding:0 0 0.8rem 0; margin-bottom:1.2rem;">
<span>系统配置在线编辑</span>
<span class="panel-tag">Visual Config & Hot Reload</span>
</div>
<form id="configForm" onsubmit="submitConfig(event)">
<div class="form-group">
<label for="cfgBotToken">Telegram Bot Token <span class="hint">(botToken)</span></label>
<input type="password" id="cfgBotToken" placeholder="例如: 8803132305:AAGImXngzK10pEoICKLkFnrEWpo67OMvJkk" autocomplete="off">
</div>
<div class="form-group">
<label for="cfgAllowedUsers">允许访问的用户 ID 列表 <span class="hint">(allowedUsers, 逗号或换行分隔)</span></label>
<textarea id="cfgAllowedUsers" rows="2" placeholder="例如: 6713836144"></textarea>
</div>
<div class="form-group">
<label for="cfgMaxTurns">单次任务最大轮数 <span class="hint">(maxTurns)</span></label>
<input type="number" id="cfgMaxTurns" placeholder="默认 50">
</div>
<div class="form-group">
<label for="cfgTaskTimeout">单次任务超时 <span class="hint">(分钟, taskTimeoutMs)</span></label>
<input type="number" step="1" min="1" id="cfgTaskTimeout" placeholder="默认 10">
</div>
<div class="form-group">
<label for="cfgDailyCost">每日消费上限 <span class="hint">($USD)</span></label>
<input type="number" step="0.1" id="cfgDailyCost" placeholder="例如 5.0">
</div>
<div class="form-group">
<label for="cfgDailyTokenCap">每日 Token 上限 <span class="hint">(dailyTokenCap)</span></label>
<input type="number" step="1000" id="cfgDailyTokenCap" placeholder="例如 200000">
</div>
<div class="form-group">
<label for="cfgFlushMs">流式推送节流时间 <span class="hint">(flushMs)</span></label>
<input type="number" id="cfgFlushMs" placeholder="默认 900">
</div>
<div class="setting-row">
<div class="setting-label">
<span>回复中展示执行过程 <span class="hint">(showTraceText)</span></span>
<span style="font-weight:400; color:var(--text-muted); font-size:0.72rem;">开启后,最终回复会附带执行轨迹中的中间叙述块,用分割线间隔</span>
</div>
<label class="switch">
<input type="checkbox" id="cfgShowTraceText">
<span class="slider"></span>
</label>
</div>
<div class="setting-row">
<div class="setting-label">
<span>API 鉴权保护 <span class="hint">(authEnabled - 刷新页面生效)</span></span>
<span style="font-weight:400; color:var(--text-muted); font-size:0.72rem;">关闭为高风险,局域网裸奔</span>
</div>
<label class="switch">
<input type="checkbox" id="cfgAuthEnabled">
<span class="slider"></span>
</label>
</div>
<div class="form-group">
<label for="cfgDevRoots">开发根目录 <span class="hint">(devRoots, 每行一个绝对路径)</span></label>
<textarea id="cfgDevRoots" rows="3" placeholder="/Users/username/Develop"></textarea>
</div>
<div class="form-group">
<label for="cfgProjects">显示白名单项目 <span class="hint">(projects, 每行一个绝对路径)</span></label>
<textarea id="cfgProjects" rows="3" placeholder="/Users/username/Develop/CoBot"></textarea>
</div>
<div style="display:flex; justify-content:flex-end; gap:0.8rem; margin-top:1.2rem;">
<button type="button" class="btn btn-secondary" onclick="loadConfigData()">重置并刷新</button>
<button type="submit" class="btn btn-primary">保存配置并热生效</button>
</div>
</form>
</div>