codex-agent-view 0.2.0

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,821 @@
1
+ :root {
2
+ color-scheme: light dark;
3
+ --font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
4
+ --font-mono: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
5
+ --text-xs: 0.75rem;
6
+ --text-sm: 0.875rem;
7
+ --text-base: 1rem;
8
+ --text-lg: 1.125rem;
9
+ --text-xl: clamp(1.5rem, 3vw, 2.25rem);
10
+ --surface-canvas: #f3f5f7;
11
+ --surface-raised: #ffffff;
12
+ --surface-subtle: #f8fafb;
13
+ --surface-inset: #eef1f4;
14
+ --text-primary: #15201c;
15
+ --text-secondary: #58635e;
16
+ --text-muted: #77817c;
17
+ --border-default: #dce2df;
18
+ --border-strong: #c6cfca;
19
+ --accent: #12694f;
20
+ --accent-strong: #0b4d3a;
21
+ --accent-soft: #dcefe8;
22
+ --running: #087c56;
23
+ --running-soft: #d9f3e8;
24
+ --waiting: #9a5b00;
25
+ --waiting-soft: #fff0ce;
26
+ --completed: #45605f;
27
+ --completed-soft: #e5eceb;
28
+ --unknown: #6b6678;
29
+ --unknown-soft: #ece9f2;
30
+ --danger: #a13838;
31
+ --danger-soft: #fae6e6;
32
+ --shadow-card: 0 16px 48px rgb(20 38 31 / 8%);
33
+ --radius-sm: 0.5rem;
34
+ --radius-md: 0.875rem;
35
+ --radius-lg: 1.25rem;
36
+ --space-1: 0.25rem;
37
+ --space-2: 0.5rem;
38
+ --space-3: 0.75rem;
39
+ --space-4: 1rem;
40
+ --space-5: 1.5rem;
41
+ --space-6: 2rem;
42
+ --space-7: 3rem;
43
+ }
44
+
45
+ * {
46
+ box-sizing: border-box;
47
+ }
48
+
49
+ html {
50
+ background: var(--surface-canvas);
51
+ scroll-behavior: smooth;
52
+ }
53
+
54
+ body {
55
+ min-width: 20rem;
56
+ margin: 0;
57
+ color: var(--text-primary);
58
+ background:
59
+ radial-gradient(circle at 8% 0%, rgb(18 105 79 / 9%), transparent 30rem),
60
+ var(--surface-canvas);
61
+ font-family: var(--font-sans);
62
+ font-size: var(--text-base);
63
+ line-height: 1.5;
64
+ -webkit-font-smoothing: antialiased;
65
+ }
66
+
67
+ button,
68
+ input,
69
+ select {
70
+ font: inherit;
71
+ }
72
+
73
+ button,
74
+ select {
75
+ cursor: pointer;
76
+ }
77
+
78
+ code {
79
+ font-family: var(--font-mono);
80
+ overflow-wrap: anywhere;
81
+ }
82
+
83
+ .skip-link {
84
+ position: fixed;
85
+ z-index: 100;
86
+ top: var(--space-3);
87
+ left: var(--space-3);
88
+ padding: var(--space-3) var(--space-4);
89
+ color: #ffffff;
90
+ background: var(--accent-strong);
91
+ border-radius: var(--radius-sm);
92
+ transform: translateY(-200%);
93
+ }
94
+
95
+ .skip-link:focus {
96
+ transform: translateY(0);
97
+ }
98
+
99
+ .app-shell {
100
+ width: min(90rem, 100%);
101
+ min-height: 100vh;
102
+ margin: 0 auto;
103
+ padding: 0 clamp(1rem, 4vw, 3rem);
104
+ }
105
+
106
+ .topbar {
107
+ display: flex;
108
+ min-height: 5rem;
109
+ align-items: center;
110
+ justify-content: space-between;
111
+ gap: var(--space-4);
112
+ border-bottom: 1px solid var(--border-default);
113
+ }
114
+
115
+ .brand {
116
+ display: inline-flex;
117
+ align-items: center;
118
+ gap: var(--space-3);
119
+ color: inherit;
120
+ text-decoration: none;
121
+ }
122
+
123
+ .brand-mark {
124
+ display: grid;
125
+ width: 2.5rem;
126
+ height: 2.5rem;
127
+ place-items: center;
128
+ color: #ffffff;
129
+ background: var(--accent-strong);
130
+ border-radius: 0.75rem;
131
+ font-size: var(--text-xs);
132
+ font-weight: 800;
133
+ letter-spacing: 0.08em;
134
+ }
135
+
136
+ .brand strong,
137
+ .brand small {
138
+ display: block;
139
+ }
140
+
141
+ .brand strong {
142
+ line-height: 1.2;
143
+ }
144
+
145
+ .brand small {
146
+ margin-top: 0.125rem;
147
+ color: var(--text-muted);
148
+ font-size: var(--text-xs);
149
+ }
150
+
151
+ .connection-pill,
152
+ .status-badge {
153
+ display: inline-flex;
154
+ align-items: center;
155
+ gap: var(--space-2);
156
+ white-space: nowrap;
157
+ }
158
+
159
+ .connection-pill {
160
+ min-height: 2.5rem;
161
+ padding: var(--space-2) var(--space-3);
162
+ color: var(--text-secondary);
163
+ background: var(--surface-raised);
164
+ border: 1px solid var(--border-default);
165
+ border-radius: 999px;
166
+ font-size: var(--text-sm);
167
+ box-shadow: 0 4px 18px rgb(20 38 31 / 5%);
168
+ }
169
+
170
+ .connection-dot,
171
+ .status-dot {
172
+ flex: 0 0 auto;
173
+ width: 0.5rem;
174
+ height: 0.5rem;
175
+ background: var(--unknown);
176
+ border-radius: 50%;
177
+ }
178
+
179
+ .connection-pill[data-status="connected"] .connection-dot {
180
+ background: var(--running);
181
+ box-shadow: 0 0 0 0.2rem var(--running-soft);
182
+ }
183
+
184
+ .connection-pill[data-status="connecting"] .connection-dot {
185
+ background: var(--waiting);
186
+ }
187
+
188
+ .connection-pill[data-status="error"] {
189
+ color: var(--danger);
190
+ border-color: color-mix(in srgb, var(--danger) 35%, var(--border-default));
191
+ }
192
+
193
+ .connection-pill[data-status="error"] .connection-dot {
194
+ background: var(--danger);
195
+ }
196
+
197
+ main {
198
+ padding: var(--space-7) 0;
199
+ }
200
+
201
+ .hero {
202
+ display: flex;
203
+ align-items: end;
204
+ justify-content: space-between;
205
+ gap: var(--space-6);
206
+ padding-bottom: var(--space-6);
207
+ }
208
+
209
+ .eyebrow,
210
+ .session-kind {
211
+ margin: 0 0 var(--space-2);
212
+ color: var(--accent);
213
+ font-size: var(--text-xs);
214
+ font-weight: 800;
215
+ letter-spacing: 0.12em;
216
+ }
217
+
218
+ h1,
219
+ h2,
220
+ h3,
221
+ h4,
222
+ p {
223
+ margin-top: 0;
224
+ }
225
+
226
+ h1 {
227
+ max-width: 18ch;
228
+ margin-bottom: var(--space-3);
229
+ font-size: var(--text-xl);
230
+ line-height: 1.12;
231
+ letter-spacing: -0.035em;
232
+ }
233
+
234
+ .hero-copy {
235
+ max-width: 42rem;
236
+ margin-bottom: 0;
237
+ color: var(--text-secondary);
238
+ font-size: var(--text-lg);
239
+ }
240
+
241
+ .freshness {
242
+ display: grid;
243
+ min-width: 16rem;
244
+ margin: 0;
245
+ padding: var(--space-4);
246
+ grid-template-columns: 1fr auto;
247
+ gap: var(--space-5);
248
+ background: rgb(255 255 255 / 55%);
249
+ border: 1px solid var(--border-default);
250
+ border-radius: var(--radius-md);
251
+ backdrop-filter: blur(0.75rem);
252
+ }
253
+
254
+ .freshness div {
255
+ min-width: 0;
256
+ }
257
+
258
+ .freshness dt {
259
+ color: var(--text-muted);
260
+ font-size: var(--text-xs);
261
+ }
262
+
263
+ .freshness dd {
264
+ margin: var(--space-1) 0 0;
265
+ font-size: var(--text-sm);
266
+ font-weight: 700;
267
+ }
268
+
269
+ .metrics {
270
+ display: grid;
271
+ margin-bottom: var(--space-6);
272
+ grid-template-columns: repeat(4, minmax(0, 1fr));
273
+ gap: var(--space-3);
274
+ }
275
+
276
+ .metric-card {
277
+ position: relative;
278
+ overflow: hidden;
279
+ min-height: 8.75rem;
280
+ padding: var(--space-4);
281
+ background: var(--surface-raised);
282
+ border: 1px solid var(--border-default);
283
+ border-radius: var(--radius-md);
284
+ box-shadow: var(--shadow-card);
285
+ }
286
+
287
+ .metric-card::before {
288
+ position: absolute;
289
+ top: 0;
290
+ right: 0;
291
+ bottom: 0;
292
+ width: 0.25rem;
293
+ background: var(--accent);
294
+ content: "";
295
+ }
296
+
297
+ .metric-card.metric-running::before {
298
+ background: var(--running);
299
+ }
300
+
301
+ .metric-card.metric-waiting::before {
302
+ background: var(--waiting);
303
+ }
304
+
305
+ .metric-card.metric-completed::before {
306
+ background: var(--completed);
307
+ }
308
+
309
+ .metric-card p {
310
+ margin-bottom: var(--space-2);
311
+ color: var(--text-secondary);
312
+ font-size: var(--text-sm);
313
+ font-weight: 700;
314
+ }
315
+
316
+ .metric-card strong {
317
+ display: block;
318
+ margin-bottom: var(--space-1);
319
+ font-size: 2rem;
320
+ line-height: 1;
321
+ letter-spacing: -0.04em;
322
+ }
323
+
324
+ .metric-card span {
325
+ color: var(--text-muted);
326
+ font-size: var(--text-xs);
327
+ }
328
+
329
+ .workspace {
330
+ padding: clamp(1rem, 3vw, 2rem);
331
+ background: rgb(255 255 255 / 68%);
332
+ border: 1px solid var(--border-default);
333
+ border-radius: var(--radius-lg);
334
+ box-shadow: var(--shadow-card);
335
+ backdrop-filter: blur(0.75rem);
336
+ }
337
+
338
+ .section-heading {
339
+ display: flex;
340
+ align-items: end;
341
+ justify-content: space-between;
342
+ gap: var(--space-4);
343
+ margin-bottom: var(--space-5);
344
+ }
345
+
346
+ .section-heading h2 {
347
+ margin-bottom: 0;
348
+ font-size: 1.35rem;
349
+ letter-spacing: -0.02em;
350
+ }
351
+
352
+ .results-summary {
353
+ margin-bottom: 0;
354
+ color: var(--text-secondary);
355
+ font-size: var(--text-sm);
356
+ }
357
+
358
+ .toolbar {
359
+ display: grid;
360
+ margin-bottom: var(--space-5);
361
+ grid-template-columns: minmax(16rem, 1fr) minmax(10rem, 14rem);
362
+ gap: var(--space-3);
363
+ }
364
+
365
+ .field {
366
+ display: grid;
367
+ gap: var(--space-2);
368
+ }
369
+
370
+ .field label {
371
+ color: var(--text-secondary);
372
+ font-size: var(--text-sm);
373
+ font-weight: 700;
374
+ }
375
+
376
+ .field input,
377
+ .field select {
378
+ width: 100%;
379
+ min-height: 2.75rem;
380
+ padding: 0 var(--space-3);
381
+ color: var(--text-primary);
382
+ background: var(--surface-raised);
383
+ border: 1px solid var(--border-strong);
384
+ border-radius: var(--radius-sm);
385
+ }
386
+
387
+ .field input::placeholder {
388
+ color: var(--text-muted);
389
+ opacity: 1;
390
+ }
391
+
392
+ .field input:hover,
393
+ .field select:hover {
394
+ border-color: var(--accent);
395
+ }
396
+
397
+ :focus-visible {
398
+ outline: 0.2rem solid color-mix(in srgb, var(--accent) 55%, transparent);
399
+ outline-offset: 0.15rem;
400
+ }
401
+
402
+ .state-message {
403
+ display: grid;
404
+ min-height: 10rem;
405
+ place-content: center;
406
+ justify-items: center;
407
+ padding: var(--space-6);
408
+ text-align: center;
409
+ background: var(--surface-subtle);
410
+ border: 1px dashed var(--border-strong);
411
+ border-radius: var(--radius-md);
412
+ }
413
+
414
+ .state-message[hidden] {
415
+ display: none;
416
+ }
417
+
418
+ .state-message strong {
419
+ margin-bottom: var(--space-2);
420
+ font-size: var(--text-lg);
421
+ }
422
+
423
+ .state-message span {
424
+ max-width: 34rem;
425
+ color: var(--text-secondary);
426
+ }
427
+
428
+ .state-message.state-error {
429
+ background: var(--danger-soft);
430
+ border-color: color-mix(in srgb, var(--danger) 40%, transparent);
431
+ }
432
+
433
+ .retry-button {
434
+ min-height: 2.75rem;
435
+ margin-top: var(--space-4);
436
+ padding: 0 var(--space-4);
437
+ color: #ffffff;
438
+ background: var(--accent-strong);
439
+ border: 0;
440
+ border-radius: var(--radius-sm);
441
+ font-weight: 700;
442
+ }
443
+
444
+ .retry-button:hover {
445
+ background: var(--accent);
446
+ }
447
+
448
+ .session-list,
449
+ .agent-list,
450
+ .activity-list {
451
+ margin: 0;
452
+ padding: 0;
453
+ list-style: none;
454
+ }
455
+
456
+ .session-list {
457
+ display: grid;
458
+ gap: var(--space-4);
459
+ }
460
+
461
+ .session-card {
462
+ overflow: hidden;
463
+ background: var(--surface-raised);
464
+ border: 1px solid var(--border-default);
465
+ border-radius: var(--radius-md);
466
+ }
467
+
468
+ .session-header {
469
+ display: flex;
470
+ align-items: center;
471
+ justify-content: space-between;
472
+ gap: var(--space-5);
473
+ padding: var(--space-4) var(--space-5);
474
+ background: linear-gradient(110deg, var(--surface-subtle), var(--surface-raised));
475
+ border-bottom: 1px solid var(--border-default);
476
+ }
477
+
478
+ .session-identity {
479
+ min-width: 0;
480
+ }
481
+
482
+ .session-kind {
483
+ display: block;
484
+ margin-bottom: var(--space-1);
485
+ }
486
+
487
+ .session-identity h3 {
488
+ margin-bottom: 0;
489
+ font-size: var(--text-base);
490
+ font-weight: 700;
491
+ }
492
+
493
+ .session-state {
494
+ display: flex;
495
+ flex: 0 0 auto;
496
+ align-items: end;
497
+ flex-direction: column;
498
+ gap: var(--space-2);
499
+ }
500
+
501
+ .status-badge {
502
+ width: fit-content;
503
+ padding: 0.2rem var(--space-2);
504
+ color: var(--unknown);
505
+ background: var(--unknown-soft);
506
+ border-radius: 999px;
507
+ font-size: var(--text-xs);
508
+ font-weight: 800;
509
+ }
510
+
511
+ .status-badge[data-status="running"] {
512
+ color: var(--running);
513
+ background: var(--running-soft);
514
+ }
515
+
516
+ .status-badge[data-status="waiting"] {
517
+ color: var(--waiting);
518
+ background: var(--waiting-soft);
519
+ }
520
+
521
+ .status-badge[data-status="completed"] {
522
+ color: var(--completed);
523
+ background: var(--completed-soft);
524
+ }
525
+
526
+ .status-badge[data-status="running"] .status-dot,
527
+ .activity-marker[data-status="running"] {
528
+ background: var(--running);
529
+ }
530
+
531
+ .status-badge[data-status="waiting"] .status-dot,
532
+ .activity-marker[data-status="waiting"] {
533
+ background: var(--waiting);
534
+ }
535
+
536
+ .status-badge[data-status="completed"] .status-dot,
537
+ .activity-marker[data-status="completed"] {
538
+ background: var(--completed);
539
+ }
540
+
541
+ .time-label,
542
+ .agent-metadata,
543
+ .activity-metadata {
544
+ color: var(--text-muted);
545
+ font-size: var(--text-xs);
546
+ }
547
+
548
+ .session-panels {
549
+ display: grid;
550
+ grid-template-columns: minmax(0, 1.15fr) minmax(18rem, 0.85fr);
551
+ }
552
+
553
+ .session-panel {
554
+ min-width: 0;
555
+ padding: var(--space-5);
556
+ }
557
+
558
+ .session-panel + .session-panel {
559
+ border-left: 1px solid var(--border-default);
560
+ }
561
+
562
+ .session-panel h4 {
563
+ margin-bottom: var(--space-3);
564
+ color: var(--text-secondary);
565
+ font-size: var(--text-sm);
566
+ }
567
+
568
+ .agent-list,
569
+ .activity-list {
570
+ display: grid;
571
+ gap: var(--space-2);
572
+ }
573
+
574
+ .agent-item {
575
+ padding: var(--space-3);
576
+ background: var(--surface-subtle);
577
+ border: 1px solid var(--border-default);
578
+ border-radius: var(--radius-sm);
579
+ }
580
+
581
+ .agent-heading {
582
+ display: flex;
583
+ align-items: center;
584
+ justify-content: space-between;
585
+ gap: var(--space-3);
586
+ }
587
+
588
+ .agent-identity {
589
+ display: grid;
590
+ min-width: 0;
591
+ gap: 0.15rem;
592
+ }
593
+
594
+ .agent-type {
595
+ color: var(--text-secondary);
596
+ font-size: var(--text-xs);
597
+ font-weight: 800;
598
+ text-transform: uppercase;
599
+ }
600
+
601
+ .agent-identity code {
602
+ color: var(--text-primary);
603
+ font-size: var(--text-sm);
604
+ }
605
+
606
+ .agent-metadata {
607
+ margin-top: var(--space-2);
608
+ }
609
+
610
+ .activity-item {
611
+ display: grid;
612
+ grid-template-columns: auto minmax(0, 1fr);
613
+ gap: var(--space-3);
614
+ padding: var(--space-2) 0;
615
+ }
616
+
617
+ .activity-marker {
618
+ width: 0.55rem;
619
+ height: 0.55rem;
620
+ margin-top: 0.45rem;
621
+ background: var(--unknown);
622
+ border-radius: 50%;
623
+ box-shadow: 0 0 0 0.2rem var(--surface-inset);
624
+ }
625
+
626
+ .activity-title {
627
+ display: flex;
628
+ min-width: 0;
629
+ align-items: baseline;
630
+ gap: var(--space-2);
631
+ }
632
+
633
+ .activity-title strong {
634
+ min-width: 0;
635
+ overflow: hidden;
636
+ font-size: var(--text-sm);
637
+ text-overflow: ellipsis;
638
+ white-space: nowrap;
639
+ }
640
+
641
+ .activity-title code {
642
+ min-width: 0;
643
+ overflow: hidden;
644
+ color: var(--text-secondary);
645
+ font-size: var(--text-xs);
646
+ text-overflow: ellipsis;
647
+ white-space: nowrap;
648
+ }
649
+
650
+ .activity-metadata {
651
+ display: flex;
652
+ align-items: center;
653
+ gap: var(--space-2);
654
+ margin-top: var(--space-1);
655
+ }
656
+
657
+ .activity-metadata .status-badge {
658
+ padding: 0;
659
+ background: transparent;
660
+ }
661
+
662
+ .activity-metadata .status-dot {
663
+ width: 0.4rem;
664
+ height: 0.4rem;
665
+ }
666
+
667
+ .panel-empty {
668
+ margin-bottom: 0;
669
+ padding: var(--space-4);
670
+ color: var(--text-muted);
671
+ background: var(--surface-subtle);
672
+ border-radius: var(--radius-sm);
673
+ font-size: var(--text-sm);
674
+ }
675
+
676
+ footer {
677
+ display: flex;
678
+ justify-content: space-between;
679
+ gap: var(--space-4);
680
+ padding: var(--space-5) 0;
681
+ color: var(--text-muted);
682
+ border-top: 1px solid var(--border-default);
683
+ font-size: var(--text-xs);
684
+ }
685
+
686
+ footer p {
687
+ margin-bottom: 0;
688
+ }
689
+
690
+ @media (max-width: 62rem) {
691
+ .metrics {
692
+ grid-template-columns: repeat(2, minmax(0, 1fr));
693
+ }
694
+
695
+ .session-panels {
696
+ grid-template-columns: 1fr;
697
+ }
698
+
699
+ .session-panel + .session-panel {
700
+ border-top: 1px solid var(--border-default);
701
+ border-left: 0;
702
+ }
703
+ }
704
+
705
+ @media (max-width: 44rem) {
706
+ .app-shell {
707
+ padding: 0 var(--space-4);
708
+ }
709
+
710
+ .topbar,
711
+ .hero,
712
+ .section-heading,
713
+ .session-header,
714
+ footer {
715
+ align-items: stretch;
716
+ flex-direction: column;
717
+ }
718
+
719
+ .topbar {
720
+ padding: var(--space-3) 0;
721
+ }
722
+
723
+ .connection-pill {
724
+ width: fit-content;
725
+ }
726
+
727
+ main {
728
+ padding: var(--space-6) 0;
729
+ }
730
+
731
+ .hero {
732
+ gap: var(--space-4);
733
+ }
734
+
735
+ .freshness {
736
+ width: 100%;
737
+ }
738
+
739
+ .toolbar {
740
+ grid-template-columns: 1fr;
741
+ }
742
+
743
+ .section-heading,
744
+ .session-state {
745
+ align-items: flex-start;
746
+ }
747
+
748
+ .session-header {
749
+ gap: var(--space-3);
750
+ padding: var(--space-4);
751
+ }
752
+
753
+ .session-panel {
754
+ padding: var(--space-4);
755
+ }
756
+ }
757
+
758
+ @media (max-width: 28rem) {
759
+ .metrics {
760
+ grid-template-columns: 1fr;
761
+ }
762
+
763
+ .metric-card {
764
+ min-height: 7rem;
765
+ }
766
+
767
+ .agent-heading,
768
+ .activity-title,
769
+ .activity-metadata {
770
+ align-items: flex-start;
771
+ flex-direction: column;
772
+ }
773
+ }
774
+
775
+ @media (prefers-color-scheme: dark) {
776
+ :root {
777
+ --surface-canvas: #111815;
778
+ --surface-raised: #19221e;
779
+ --surface-subtle: #1e2924;
780
+ --surface-inset: #2b3631;
781
+ --text-primary: #edf4f0;
782
+ --text-secondary: #b8c4be;
783
+ --text-muted: #8f9c96;
784
+ --border-default: #2d3934;
785
+ --border-strong: #44534c;
786
+ --accent: #6fd0ae;
787
+ --accent-strong: #205d49;
788
+ --accent-soft: #193e31;
789
+ --running: #62d5a9;
790
+ --running-soft: #183f31;
791
+ --waiting: #f0b95e;
792
+ --waiting-soft: #493819;
793
+ --completed: #a9bfbb;
794
+ --completed-soft: #34433f;
795
+ --unknown: #bbb3ca;
796
+ --unknown-soft: #3c3746;
797
+ --danger: #f19a9a;
798
+ --danger-soft: #4b2929;
799
+ --shadow-card: 0 16px 48px rgb(0 0 0 / 18%);
800
+ }
801
+
802
+ .freshness,
803
+ .workspace {
804
+ background: rgb(25 34 30 / 78%);
805
+ }
806
+ }
807
+
808
+ @media (prefers-reduced-motion: reduce) {
809
+ html {
810
+ scroll-behavior: auto;
811
+ }
812
+
813
+ *,
814
+ *::before,
815
+ *::after {
816
+ scroll-behavior: auto !important;
817
+ animation-duration: 0.01ms !important;
818
+ animation-iteration-count: 1 !important;
819
+ transition-duration: 0.01ms !important;
820
+ }
821
+ }