shipwright-cli 2.2.2 → 2.3.1
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.
- package/README.md +12 -11
- package/dashboard/public/index.html +224 -8
- package/dashboard/public/styles.css +1078 -4
- package/dashboard/server.ts +1100 -15
- package/dashboard/src/canvas/interactions.ts +74 -0
- package/dashboard/src/canvas/layout.ts +85 -0
- package/dashboard/src/canvas/overlays.ts +117 -0
- package/dashboard/src/canvas/particles.ts +105 -0
- package/dashboard/src/canvas/renderer.ts +191 -0
- package/dashboard/src/components/charts/bar.ts +54 -0
- package/dashboard/src/components/charts/donut.ts +25 -0
- package/dashboard/src/components/charts/pipeline-rail.ts +105 -0
- package/dashboard/src/components/charts/sparkline.ts +82 -0
- package/dashboard/src/components/header.ts +616 -0
- package/dashboard/src/components/modal.ts +413 -0
- package/dashboard/src/components/terminal.ts +144 -0
- package/dashboard/src/core/api.test.ts +362 -0
- package/dashboard/src/core/api.ts +381 -0
- package/dashboard/src/core/helpers.ts +118 -0
- package/dashboard/src/core/router.test.ts +266 -0
- package/dashboard/src/core/router.ts +190 -0
- package/dashboard/src/core/sse.ts +38 -0
- package/dashboard/src/core/state.test.ts +235 -0
- package/dashboard/src/core/state.ts +150 -0
- package/dashboard/src/core/ws.test.ts +216 -0
- package/dashboard/src/core/ws.ts +143 -0
- package/dashboard/src/design/icons.test.ts +105 -0
- package/dashboard/src/design/icons.ts +131 -0
- package/dashboard/src/design/tokens.test.ts +204 -0
- package/dashboard/src/design/tokens.ts +160 -0
- package/dashboard/src/main.ts +68 -0
- package/dashboard/src/types/api.ts +337 -0
- package/dashboard/src/views/activity.ts +185 -0
- package/dashboard/src/views/agent-cockpit.ts +236 -0
- package/dashboard/src/views/agents.ts +72 -0
- package/dashboard/src/views/fleet-map.ts +299 -0
- package/dashboard/src/views/insights.ts +298 -0
- package/dashboard/src/views/machines.ts +162 -0
- package/dashboard/src/views/metrics.ts +420 -0
- package/dashboard/src/views/overview.ts +409 -0
- package/dashboard/src/views/pipeline-theater.ts +219 -0
- package/dashboard/src/views/pipelines.ts +595 -0
- package/dashboard/src/views/team.ts +362 -0
- package/dashboard/src/views/timeline.ts +389 -0
- package/dashboard/tsconfig.json +21 -0
- package/dashboard/vitest.config.ts +27 -0
- package/docs/AGI-WHATS-NEXT.md +15 -15
- package/package.json +16 -2
- package/scripts/lib/helpers.sh +30 -0
- package/scripts/lib/pipeline-quality-checks.sh +1 -1
- package/scripts/lib/pipeline-stages.sh +59 -0
- package/scripts/sw +86 -167
- package/scripts/sw-activity.sh +1 -1
- package/scripts/sw-adaptive.sh +1 -1
- package/scripts/sw-adversarial.sh +1 -1
- package/scripts/sw-architecture-enforcer.sh +1 -1
- package/scripts/sw-auth.sh +14 -6
- package/scripts/sw-autonomous.sh +230 -13
- package/scripts/sw-changelog.sh +2 -2
- package/scripts/sw-checkpoint.sh +1 -1
- package/scripts/sw-ci.sh +1 -1
- package/scripts/sw-cleanup.sh +1 -1
- package/scripts/sw-code-review.sh +1 -1
- package/scripts/sw-connect.sh +1 -1
- package/scripts/sw-context.sh +1 -1
- package/scripts/sw-cost.sh +1 -1
- package/scripts/sw-daemon.sh +2 -2
- package/scripts/sw-dashboard.sh +1 -1
- package/scripts/sw-db.sh +1 -1
- package/scripts/sw-decompose.sh +1 -1
- package/scripts/sw-deps.sh +1 -1
- package/scripts/sw-developer-simulation.sh +1 -1
- package/scripts/sw-discovery.sh +1 -1
- package/scripts/sw-doc-fleet.sh +1 -1
- package/scripts/sw-docs-agent.sh +1 -1
- package/scripts/sw-docs.sh +1 -1
- package/scripts/sw-doctor.sh +8 -1
- package/scripts/sw-dora.sh +1 -1
- package/scripts/sw-durable.sh +1 -1
- package/scripts/sw-e2e-orchestrator.sh +1 -1
- package/scripts/sw-eventbus.sh +1 -1
- package/scripts/sw-feedback.sh +1 -1
- package/scripts/sw-fix.sh +6 -5
- package/scripts/sw-fleet-discover.sh +1 -1
- package/scripts/sw-fleet-viz.sh +1 -1
- package/scripts/sw-fleet.sh +1 -1
- package/scripts/sw-github-app.sh +5 -2
- package/scripts/sw-github-checks.sh +1 -1
- package/scripts/sw-github-deploy.sh +1 -1
- package/scripts/sw-github-graphql.sh +1 -1
- package/scripts/sw-guild.sh +1 -1
- package/scripts/sw-heartbeat.sh +1 -1
- package/scripts/sw-hygiene.sh +1 -1
- package/scripts/sw-incident.sh +1 -1
- package/scripts/sw-init.sh +112 -9
- package/scripts/sw-instrument.sh +6 -1
- package/scripts/sw-intelligence.sh +5 -1
- package/scripts/sw-jira.sh +1 -1
- package/scripts/sw-launchd.sh +1 -1
- package/scripts/sw-linear.sh +20 -9
- package/scripts/sw-logs.sh +1 -1
- package/scripts/sw-loop.sh +2 -1
- package/scripts/sw-memory.sh +10 -1
- package/scripts/sw-mission-control.sh +1 -1
- package/scripts/sw-model-router.sh +4 -1
- package/scripts/sw-otel.sh +1 -1
- package/scripts/sw-oversight.sh +1 -1
- package/scripts/sw-pipeline-composer.sh +3 -1
- package/scripts/sw-pipeline-vitals.sh +4 -6
- package/scripts/sw-pipeline.sh +4 -1
- package/scripts/sw-pm.sh +5 -2
- package/scripts/sw-pr-lifecycle.sh +1 -1
- package/scripts/sw-predictive.sh +4 -1
- package/scripts/sw-prep.sh +3 -2
- package/scripts/sw-ps.sh +1 -1
- package/scripts/sw-public-dashboard.sh +10 -4
- package/scripts/sw-quality.sh +1 -1
- package/scripts/sw-reaper.sh +1 -1
- package/scripts/sw-recruit.sh +16 -0
- package/scripts/sw-regression.sh +2 -1
- package/scripts/sw-release-manager.sh +1 -1
- package/scripts/sw-release.sh +7 -5
- package/scripts/sw-remote.sh +1 -1
- package/scripts/sw-replay.sh +1 -1
- package/scripts/sw-retro.sh +4 -1
- package/scripts/sw-scale.sh +4 -1
- package/scripts/sw-security-audit.sh +1 -1
- package/scripts/sw-self-optimize.sh +113 -1
- package/scripts/sw-session.sh +1 -1
- package/scripts/sw-setup.sh +1 -1
- package/scripts/sw-standup.sh +2 -1
- package/scripts/sw-status.sh +1 -1
- package/scripts/sw-strategic.sh +2 -1
- package/scripts/sw-stream.sh +1 -1
- package/scripts/sw-swarm.sh +6 -1
- package/scripts/sw-team-stages.sh +1 -1
- package/scripts/sw-templates.sh +1 -1
- package/scripts/sw-testgen.sh +3 -2
- package/scripts/sw-tmux-pipeline.sh +2 -1
- package/scripts/sw-tmux.sh +1 -1
- package/scripts/sw-trace.sh +1 -1
- package/scripts/sw-tracker-jira.sh +1 -0
- package/scripts/sw-tracker-linear.sh +1 -0
- package/scripts/sw-tracker.sh +1 -1
- package/scripts/sw-triage.sh +198 -11
- package/scripts/sw-upgrade.sh +1 -1
- package/scripts/sw-ux.sh +1 -1
- package/scripts/sw-webhook.sh +1 -1
- package/scripts/sw-widgets.sh +2 -2
- package/scripts/sw-worktree.sh +1 -1
- package/dashboard/public/app.js +0 -4422
|
@@ -40,6 +40,84 @@
|
|
|
40
40
|
|
|
41
41
|
--transition-fast: 0.15s ease;
|
|
42
42
|
--transition-base: 0.3s ease;
|
|
43
|
+
--transition-slow: 0.5s ease;
|
|
44
|
+
|
|
45
|
+
/* Spacing scale */
|
|
46
|
+
--space-1: 4px;
|
|
47
|
+
--space-2: 8px;
|
|
48
|
+
--space-3: 12px;
|
|
49
|
+
--space-4: 16px;
|
|
50
|
+
--space-5: 20px;
|
|
51
|
+
--space-6: 24px;
|
|
52
|
+
--space-8: 32px;
|
|
53
|
+
--space-10: 40px;
|
|
54
|
+
--space-12: 48px;
|
|
55
|
+
--space-16: 64px;
|
|
56
|
+
|
|
57
|
+
/* Border radius */
|
|
58
|
+
--radius-sm: 4px;
|
|
59
|
+
--radius-md: 8px;
|
|
60
|
+
--radius-lg: 12px;
|
|
61
|
+
--radius-xl: 16px;
|
|
62
|
+
--radius-full: 9999px;
|
|
63
|
+
|
|
64
|
+
/* Shadows */
|
|
65
|
+
--shadow-glow-cyan: 0 0 20px rgba(0, 212, 255, 0.15);
|
|
66
|
+
--shadow-glow-purple: 0 0 20px rgba(124, 58, 237, 0.15);
|
|
67
|
+
--shadow-glow-success: 0 0 12px rgba(74, 222, 128, 0.2);
|
|
68
|
+
--shadow-glow-error: 0 0 12px rgba(244, 63, 94, 0.2);
|
|
69
|
+
--shadow-elevated: 0 8px 32px rgba(0, 0, 0, 0.4);
|
|
70
|
+
|
|
71
|
+
/* Z-index */
|
|
72
|
+
--z-base: 1;
|
|
73
|
+
--z-dropdown: 10;
|
|
74
|
+
--z-sticky: 20;
|
|
75
|
+
--z-overlay: 30;
|
|
76
|
+
--z-modal: 40;
|
|
77
|
+
--z-toast: 50;
|
|
78
|
+
|
|
79
|
+
/* Easing */
|
|
80
|
+
--ease-smooth: cubic-bezier(0.4, 0, 0.2, 1);
|
|
81
|
+
--ease-spring: cubic-bezier(0.34, 1.56, 0.64, 1);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* ── Light Mode ───────────────────────────────── */
|
|
85
|
+
:root[data-theme="light"] {
|
|
86
|
+
--abyss: #f5f7fa;
|
|
87
|
+
--deep: #ebeef3;
|
|
88
|
+
--ocean: #dde2ea;
|
|
89
|
+
--surface: #cdd4de;
|
|
90
|
+
--foam: #bcc5d3;
|
|
91
|
+
|
|
92
|
+
--cyan: #0077b6;
|
|
93
|
+
--cyan-glow: rgba(0, 119, 182, 0.1);
|
|
94
|
+
--cyan-dim: rgba(0, 119, 182, 0.3);
|
|
95
|
+
--purple: #6d28d9;
|
|
96
|
+
--purple-glow: rgba(109, 40, 217, 0.1);
|
|
97
|
+
--blue: #0055cc;
|
|
98
|
+
|
|
99
|
+
--green: #16a34a;
|
|
100
|
+
--amber: #d97706;
|
|
101
|
+
--rose: #dc2626;
|
|
102
|
+
|
|
103
|
+
--text-primary: #1a1a2e;
|
|
104
|
+
--text-secondary: #475569;
|
|
105
|
+
--text-muted: #94a3b8;
|
|
106
|
+
|
|
107
|
+
--card-bg: rgba(255, 255, 255, 0.9);
|
|
108
|
+
--card-border: rgba(0, 119, 182, 0.12);
|
|
109
|
+
--card-hover-border: rgba(0, 119, 182, 0.25);
|
|
110
|
+
|
|
111
|
+
--shadow-elevated: 0 4px 16px rgba(0, 0, 0, 0.08);
|
|
112
|
+
--shadow-glow-cyan: 0 0 12px rgba(0, 119, 182, 0.1);
|
|
113
|
+
--shadow-glow-purple: 0 0 12px rgba(109, 40, 217, 0.1);
|
|
114
|
+
--shadow-glow-success: 0 0 8px rgba(22, 163, 74, 0.15);
|
|
115
|
+
--shadow-glow-error: 0 0 8px rgba(220, 38, 38, 0.15);
|
|
116
|
+
|
|
117
|
+
--bg-abyss: #f5f7fa;
|
|
118
|
+
--bg-deep: #ebeef3;
|
|
119
|
+
--bg-foam: #dde2ea;
|
|
120
|
+
--border: rgba(0, 0, 0, 0.1);
|
|
43
121
|
}
|
|
44
122
|
|
|
45
123
|
::selection {
|
|
@@ -4355,6 +4433,38 @@ select.form-input {
|
|
|
4355
4433
|
}
|
|
4356
4434
|
}
|
|
4357
4435
|
|
|
4436
|
+
@media (max-width: 768px) {
|
|
4437
|
+
.tab-bar-inner {
|
|
4438
|
+
overflow-x: auto;
|
|
4439
|
+
-webkit-overflow-scrolling: touch;
|
|
4440
|
+
scrollbar-width: none;
|
|
4441
|
+
padding: 0 8px;
|
|
4442
|
+
}
|
|
4443
|
+
.tab-bar-inner::-webkit-scrollbar {
|
|
4444
|
+
display: none;
|
|
4445
|
+
}
|
|
4446
|
+
.tab-btn {
|
|
4447
|
+
padding: 0 10px;
|
|
4448
|
+
font-size: 0.75rem;
|
|
4449
|
+
white-space: nowrap;
|
|
4450
|
+
flex-shrink: 0;
|
|
4451
|
+
}
|
|
4452
|
+
.header {
|
|
4453
|
+
padding: 0 12px;
|
|
4454
|
+
height: 48px;
|
|
4455
|
+
}
|
|
4456
|
+
.header-left .dashboard-title {
|
|
4457
|
+
font-size: 0.9rem;
|
|
4458
|
+
}
|
|
4459
|
+
.daemon-control-bar {
|
|
4460
|
+
flex-wrap: wrap;
|
|
4461
|
+
gap: 0.25rem;
|
|
4462
|
+
}
|
|
4463
|
+
.daemon-control-info {
|
|
4464
|
+
display: none;
|
|
4465
|
+
}
|
|
4466
|
+
}
|
|
4467
|
+
|
|
4358
4468
|
@media (max-width: 640px) {
|
|
4359
4469
|
.stats-row {
|
|
4360
4470
|
grid-template-columns: 1fr;
|
|
@@ -4365,13 +4475,13 @@ select.form-input {
|
|
|
4365
4475
|
}
|
|
4366
4476
|
|
|
4367
4477
|
.tab-btn {
|
|
4368
|
-
padding: 0
|
|
4369
|
-
font-size: 0.
|
|
4478
|
+
padding: 0 8px;
|
|
4479
|
+
font-size: 0.7rem;
|
|
4370
4480
|
}
|
|
4371
4481
|
|
|
4372
4482
|
.main {
|
|
4373
|
-
padding-left:
|
|
4374
|
-
padding-right:
|
|
4483
|
+
padding-left: 8px;
|
|
4484
|
+
padding-right: 8px;
|
|
4375
4485
|
}
|
|
4376
4486
|
|
|
4377
4487
|
.agents-grid {
|
|
@@ -4384,6 +4494,18 @@ select.form-input {
|
|
|
4384
4494
|
font-size: 1.1rem;
|
|
4385
4495
|
}
|
|
4386
4496
|
|
|
4497
|
+
.header-actions {
|
|
4498
|
+
gap: 4px;
|
|
4499
|
+
}
|
|
4500
|
+
.sound-toggle,
|
|
4501
|
+
.theme-toggle {
|
|
4502
|
+
font-size: 0.65rem;
|
|
4503
|
+
padding: 3px 6px;
|
|
4504
|
+
}
|
|
4505
|
+
.cost-ticker {
|
|
4506
|
+
display: none;
|
|
4507
|
+
}
|
|
4508
|
+
|
|
4387
4509
|
.dora-grades-row {
|
|
4388
4510
|
grid-template-columns: repeat(2, 1fr);
|
|
4389
4511
|
}
|
|
@@ -4753,3 +4875,955 @@ select.form-input {
|
|
|
4753
4875
|
}
|
|
4754
4876
|
|
|
4755
4877
|
/* presence-pulse: used by pulse-dot keyframes on .presence-dot.online */
|
|
4878
|
+
|
|
4879
|
+
/* ═══════════════════════════════════════════════════════════════════
|
|
4880
|
+
NEW VISUALIZATION VIEWS
|
|
4881
|
+
═══════════════════════════════════════════════════════════════════ */
|
|
4882
|
+
|
|
4883
|
+
/* ── Fleet Map ──────────────────────────────────── */
|
|
4884
|
+
.fleet-map-canvas {
|
|
4885
|
+
border-radius: var(--card-radius);
|
|
4886
|
+
overflow: hidden;
|
|
4887
|
+
background: var(--abyss);
|
|
4888
|
+
}
|
|
4889
|
+
|
|
4890
|
+
.fleet-map-canvas canvas {
|
|
4891
|
+
border-radius: var(--card-radius);
|
|
4892
|
+
}
|
|
4893
|
+
|
|
4894
|
+
/* ── Pipeline Theater ───────────────────────────── */
|
|
4895
|
+
.theater-layout {
|
|
4896
|
+
display: grid;
|
|
4897
|
+
grid-template-columns: 240px 1fr;
|
|
4898
|
+
gap: 16px;
|
|
4899
|
+
height: calc(100vh - 160px);
|
|
4900
|
+
}
|
|
4901
|
+
|
|
4902
|
+
.theater-sidebar {
|
|
4903
|
+
background: var(--card-bg);
|
|
4904
|
+
border: 1px solid var(--card-border);
|
|
4905
|
+
border-radius: var(--card-radius);
|
|
4906
|
+
overflow-y: auto;
|
|
4907
|
+
padding: 16px;
|
|
4908
|
+
}
|
|
4909
|
+
|
|
4910
|
+
.theater-sidebar-header {
|
|
4911
|
+
font-family: var(--font-body);
|
|
4912
|
+
font-weight: 600;
|
|
4913
|
+
font-size: 0.85rem;
|
|
4914
|
+
color: var(--text-secondary);
|
|
4915
|
+
text-transform: uppercase;
|
|
4916
|
+
letter-spacing: 0.05em;
|
|
4917
|
+
margin-bottom: 12px;
|
|
4918
|
+
}
|
|
4919
|
+
|
|
4920
|
+
.theater-pipeline-item {
|
|
4921
|
+
display: flex;
|
|
4922
|
+
align-items: center;
|
|
4923
|
+
gap: 8px;
|
|
4924
|
+
padding: 10px 12px;
|
|
4925
|
+
border-radius: 8px;
|
|
4926
|
+
cursor: pointer;
|
|
4927
|
+
transition: background var(--transition-fast);
|
|
4928
|
+
margin-bottom: 4px;
|
|
4929
|
+
}
|
|
4930
|
+
|
|
4931
|
+
.theater-pipeline-item:hover {
|
|
4932
|
+
background: var(--surface);
|
|
4933
|
+
}
|
|
4934
|
+
|
|
4935
|
+
.theater-pipeline-item.selected {
|
|
4936
|
+
background: var(--surface);
|
|
4937
|
+
border: 1px solid var(--cyan-dim);
|
|
4938
|
+
}
|
|
4939
|
+
|
|
4940
|
+
.theater-issue {
|
|
4941
|
+
font-family: var(--font-mono);
|
|
4942
|
+
font-size: 0.8rem;
|
|
4943
|
+
color: var(--cyan);
|
|
4944
|
+
font-weight: 600;
|
|
4945
|
+
min-width: 40px;
|
|
4946
|
+
}
|
|
4947
|
+
|
|
4948
|
+
.theater-stage {
|
|
4949
|
+
font-family: var(--font-mono);
|
|
4950
|
+
font-size: 0.7rem;
|
|
4951
|
+
color: var(--text-secondary);
|
|
4952
|
+
flex: 1;
|
|
4953
|
+
}
|
|
4954
|
+
|
|
4955
|
+
.theater-elapsed {
|
|
4956
|
+
font-family: var(--font-mono);
|
|
4957
|
+
font-size: 0.7rem;
|
|
4958
|
+
color: var(--text-muted);
|
|
4959
|
+
}
|
|
4960
|
+
|
|
4961
|
+
.theater-main {
|
|
4962
|
+
display: flex;
|
|
4963
|
+
flex-direction: column;
|
|
4964
|
+
gap: 12px;
|
|
4965
|
+
overflow: hidden;
|
|
4966
|
+
}
|
|
4967
|
+
|
|
4968
|
+
.theater-stage-rail {
|
|
4969
|
+
padding: 8px 16px;
|
|
4970
|
+
background: var(--card-bg);
|
|
4971
|
+
border: 1px solid var(--card-border);
|
|
4972
|
+
border-radius: var(--card-radius);
|
|
4973
|
+
}
|
|
4974
|
+
|
|
4975
|
+
.theater-metrics-bar {
|
|
4976
|
+
display: flex;
|
|
4977
|
+
gap: 16px;
|
|
4978
|
+
padding: 12px 16px;
|
|
4979
|
+
background: var(--card-bg);
|
|
4980
|
+
border: 1px solid var(--card-border);
|
|
4981
|
+
border-radius: var(--card-radius);
|
|
4982
|
+
}
|
|
4983
|
+
|
|
4984
|
+
.theater-metric {
|
|
4985
|
+
display: flex;
|
|
4986
|
+
align-items: center;
|
|
4987
|
+
gap: 8px;
|
|
4988
|
+
}
|
|
4989
|
+
|
|
4990
|
+
.theater-metric-label {
|
|
4991
|
+
font-family: var(--font-mono);
|
|
4992
|
+
font-size: 0.7rem;
|
|
4993
|
+
color: var(--text-muted);
|
|
4994
|
+
display: flex;
|
|
4995
|
+
align-items: center;
|
|
4996
|
+
gap: 4px;
|
|
4997
|
+
}
|
|
4998
|
+
|
|
4999
|
+
.theater-metric-value {
|
|
5000
|
+
font-family: var(--font-mono);
|
|
5001
|
+
font-size: 0.85rem;
|
|
5002
|
+
color: var(--text-primary);
|
|
5003
|
+
font-weight: 600;
|
|
5004
|
+
}
|
|
5005
|
+
|
|
5006
|
+
.theater-terminal {
|
|
5007
|
+
flex: 1;
|
|
5008
|
+
background: var(--abyss);
|
|
5009
|
+
border: 1px solid var(--card-border);
|
|
5010
|
+
border-radius: var(--card-radius);
|
|
5011
|
+
overflow: hidden;
|
|
5012
|
+
min-height: 300px;
|
|
5013
|
+
}
|
|
5014
|
+
|
|
5015
|
+
/* ── Live Terminal ──────────────────────────────── */
|
|
5016
|
+
.live-terminal {
|
|
5017
|
+
font-family: var(--font-mono);
|
|
5018
|
+
font-size: 12px;
|
|
5019
|
+
line-height: 1.5;
|
|
5020
|
+
color: var(--text-primary);
|
|
5021
|
+
padding: 12px;
|
|
5022
|
+
overflow-y: auto;
|
|
5023
|
+
height: 100%;
|
|
5024
|
+
background: var(--abyss);
|
|
5025
|
+
}
|
|
5026
|
+
|
|
5027
|
+
.terminal-line {
|
|
5028
|
+
display: flex;
|
|
5029
|
+
gap: 12px;
|
|
5030
|
+
white-space: pre-wrap;
|
|
5031
|
+
word-break: break-all;
|
|
5032
|
+
}
|
|
5033
|
+
|
|
5034
|
+
.terminal-line-num {
|
|
5035
|
+
color: var(--text-muted);
|
|
5036
|
+
min-width: 40px;
|
|
5037
|
+
text-align: right;
|
|
5038
|
+
user-select: none;
|
|
5039
|
+
flex-shrink: 0;
|
|
5040
|
+
}
|
|
5041
|
+
|
|
5042
|
+
.terminal-line-text {
|
|
5043
|
+
flex: 1;
|
|
5044
|
+
}
|
|
5045
|
+
|
|
5046
|
+
/* ── Agent Cockpit ──────────────────────────────── */
|
|
5047
|
+
.cockpit-layout {
|
|
5048
|
+
display: flex;
|
|
5049
|
+
flex-direction: column;
|
|
5050
|
+
height: calc(100vh - 160px);
|
|
5051
|
+
gap: 12px;
|
|
5052
|
+
}
|
|
5053
|
+
|
|
5054
|
+
.cockpit-agent-bar {
|
|
5055
|
+
display: flex;
|
|
5056
|
+
gap: 8px;
|
|
5057
|
+
padding: 8px 16px;
|
|
5058
|
+
background: var(--card-bg);
|
|
5059
|
+
border: 1px solid var(--card-border);
|
|
5060
|
+
border-radius: var(--card-radius);
|
|
5061
|
+
overflow-x: auto;
|
|
5062
|
+
flex-shrink: 0;
|
|
5063
|
+
}
|
|
5064
|
+
|
|
5065
|
+
.cockpit-agent-btn {
|
|
5066
|
+
display: flex;
|
|
5067
|
+
align-items: center;
|
|
5068
|
+
gap: 6px;
|
|
5069
|
+
padding: 8px 16px;
|
|
5070
|
+
background: transparent;
|
|
5071
|
+
border: 1px solid var(--card-border);
|
|
5072
|
+
border-radius: 8px;
|
|
5073
|
+
color: var(--text-secondary);
|
|
5074
|
+
font-family: var(--font-mono);
|
|
5075
|
+
font-size: 0.8rem;
|
|
5076
|
+
cursor: pointer;
|
|
5077
|
+
transition: all var(--transition-fast);
|
|
5078
|
+
white-space: nowrap;
|
|
5079
|
+
}
|
|
5080
|
+
|
|
5081
|
+
.cockpit-agent-btn:hover {
|
|
5082
|
+
background: var(--surface);
|
|
5083
|
+
border-color: var(--cyan-dim);
|
|
5084
|
+
}
|
|
5085
|
+
|
|
5086
|
+
.cockpit-agent-btn.selected {
|
|
5087
|
+
background: var(--surface);
|
|
5088
|
+
border-color: var(--cyan);
|
|
5089
|
+
color: var(--cyan);
|
|
5090
|
+
}
|
|
5091
|
+
|
|
5092
|
+
.cockpit-main {
|
|
5093
|
+
flex: 1;
|
|
5094
|
+
display: flex;
|
|
5095
|
+
flex-direction: column;
|
|
5096
|
+
gap: 12px;
|
|
5097
|
+
overflow: hidden;
|
|
5098
|
+
}
|
|
5099
|
+
|
|
5100
|
+
.cockpit-metrics {
|
|
5101
|
+
display: grid;
|
|
5102
|
+
grid-template-columns: repeat(4, 1fr);
|
|
5103
|
+
gap: 12px;
|
|
5104
|
+
flex-shrink: 0;
|
|
5105
|
+
}
|
|
5106
|
+
|
|
5107
|
+
.cockpit-metric-card {
|
|
5108
|
+
background: var(--card-bg);
|
|
5109
|
+
border: 1px solid var(--card-border);
|
|
5110
|
+
border-radius: var(--card-radius);
|
|
5111
|
+
padding: 16px;
|
|
5112
|
+
}
|
|
5113
|
+
|
|
5114
|
+
.cockpit-metric-header {
|
|
5115
|
+
font-family: var(--font-body);
|
|
5116
|
+
font-size: 0.75rem;
|
|
5117
|
+
font-weight: 600;
|
|
5118
|
+
color: var(--text-muted);
|
|
5119
|
+
text-transform: uppercase;
|
|
5120
|
+
letter-spacing: 0.05em;
|
|
5121
|
+
margin-bottom: 8px;
|
|
5122
|
+
display: flex;
|
|
5123
|
+
align-items: center;
|
|
5124
|
+
gap: 6px;
|
|
5125
|
+
}
|
|
5126
|
+
|
|
5127
|
+
.cockpit-metric-chart {
|
|
5128
|
+
display: flex;
|
|
5129
|
+
align-items: center;
|
|
5130
|
+
justify-content: center;
|
|
5131
|
+
}
|
|
5132
|
+
|
|
5133
|
+
.cockpit-status-info {
|
|
5134
|
+
font-family: var(--font-mono);
|
|
5135
|
+
font-size: 0.8rem;
|
|
5136
|
+
color: var(--text-secondary);
|
|
5137
|
+
line-height: 1.8;
|
|
5138
|
+
}
|
|
5139
|
+
|
|
5140
|
+
.cockpit-status-info strong {
|
|
5141
|
+
color: var(--cyan);
|
|
5142
|
+
}
|
|
5143
|
+
|
|
5144
|
+
.cockpit-terminal {
|
|
5145
|
+
flex: 1;
|
|
5146
|
+
background: var(--abyss);
|
|
5147
|
+
border: 1px solid var(--card-border);
|
|
5148
|
+
border-radius: var(--card-radius);
|
|
5149
|
+
overflow: hidden;
|
|
5150
|
+
min-height: 200px;
|
|
5151
|
+
}
|
|
5152
|
+
|
|
5153
|
+
/* ── Cost Burn Animation ────────────────────────── */
|
|
5154
|
+
@keyframes cost-burn {
|
|
5155
|
+
0% {
|
|
5156
|
+
background-position: 0% 50%;
|
|
5157
|
+
}
|
|
5158
|
+
100% {
|
|
5159
|
+
background-position: 200% 50%;
|
|
5160
|
+
}
|
|
5161
|
+
}
|
|
5162
|
+
|
|
5163
|
+
.cost-ticker-animated {
|
|
5164
|
+
background: linear-gradient(
|
|
5165
|
+
90deg,
|
|
5166
|
+
var(--cyan) 0%,
|
|
5167
|
+
var(--purple) 25%,
|
|
5168
|
+
var(--cyan) 50%,
|
|
5169
|
+
var(--purple) 75%,
|
|
5170
|
+
var(--cyan) 100%
|
|
5171
|
+
);
|
|
5172
|
+
background-size: 200% 100%;
|
|
5173
|
+
-webkit-background-clip: text;
|
|
5174
|
+
background-clip: text;
|
|
5175
|
+
-webkit-text-fill-color: transparent;
|
|
5176
|
+
animation: cost-burn 3s linear infinite;
|
|
5177
|
+
}
|
|
5178
|
+
|
|
5179
|
+
/* ── Sound Toggle ───────────────────────────────── */
|
|
5180
|
+
.sound-toggle {
|
|
5181
|
+
display: flex;
|
|
5182
|
+
align-items: center;
|
|
5183
|
+
gap: 6px;
|
|
5184
|
+
padding: 4px 10px;
|
|
5185
|
+
background: transparent;
|
|
5186
|
+
border: 1px solid var(--card-border);
|
|
5187
|
+
border-radius: var(--radius-full);
|
|
5188
|
+
color: var(--text-muted);
|
|
5189
|
+
font-family: var(--font-mono);
|
|
5190
|
+
font-size: 0.7rem;
|
|
5191
|
+
cursor: pointer;
|
|
5192
|
+
transition: all var(--transition-fast);
|
|
5193
|
+
}
|
|
5194
|
+
|
|
5195
|
+
.sound-toggle:hover {
|
|
5196
|
+
border-color: var(--cyan-dim);
|
|
5197
|
+
color: var(--text-secondary);
|
|
5198
|
+
}
|
|
5199
|
+
|
|
5200
|
+
.sound-toggle.active {
|
|
5201
|
+
border-color: var(--cyan);
|
|
5202
|
+
color: var(--cyan);
|
|
5203
|
+
}
|
|
5204
|
+
|
|
5205
|
+
/* ── Pipeline Completion Flash ──────────────────── */
|
|
5206
|
+
@keyframes completion-flash {
|
|
5207
|
+
0% {
|
|
5208
|
+
box-shadow: 0 0 0 0 rgba(74, 222, 128, 0.6);
|
|
5209
|
+
transform: scale(1);
|
|
5210
|
+
}
|
|
5211
|
+
50% {
|
|
5212
|
+
box-shadow: 0 0 30px 10px rgba(74, 222, 128, 0.3);
|
|
5213
|
+
transform: scale(1.02);
|
|
5214
|
+
}
|
|
5215
|
+
100% {
|
|
5216
|
+
box-shadow: 0 0 0 0 rgba(74, 222, 128, 0);
|
|
5217
|
+
transform: scale(1);
|
|
5218
|
+
}
|
|
5219
|
+
}
|
|
5220
|
+
|
|
5221
|
+
@keyframes failure-flash {
|
|
5222
|
+
0% {
|
|
5223
|
+
box-shadow: 0 0 0 0 rgba(244, 63, 94, 0.6);
|
|
5224
|
+
transform: scale(1);
|
|
5225
|
+
}
|
|
5226
|
+
50% {
|
|
5227
|
+
box-shadow: 0 0 30px 10px rgba(244, 63, 94, 0.3);
|
|
5228
|
+
transform: scale(1.02);
|
|
5229
|
+
}
|
|
5230
|
+
100% {
|
|
5231
|
+
box-shadow: 0 0 0 0 rgba(244, 63, 94, 0);
|
|
5232
|
+
transform: scale(1);
|
|
5233
|
+
}
|
|
5234
|
+
}
|
|
5235
|
+
|
|
5236
|
+
.pipeline-card.completing {
|
|
5237
|
+
animation: completion-flash 1s var(--ease-smooth);
|
|
5238
|
+
}
|
|
5239
|
+
|
|
5240
|
+
.pipeline-card.failing {
|
|
5241
|
+
animation: failure-flash 1s var(--ease-smooth);
|
|
5242
|
+
}
|
|
5243
|
+
|
|
5244
|
+
/* ── Ambient Activity Pulse ─────────────────────── */
|
|
5245
|
+
@keyframes ambient-pulse {
|
|
5246
|
+
0%,
|
|
5247
|
+
100% {
|
|
5248
|
+
opacity: 0.3;
|
|
5249
|
+
}
|
|
5250
|
+
50% {
|
|
5251
|
+
opacity: 0.6;
|
|
5252
|
+
}
|
|
5253
|
+
}
|
|
5254
|
+
|
|
5255
|
+
.ambient-indicator {
|
|
5256
|
+
position: fixed;
|
|
5257
|
+
bottom: 16px;
|
|
5258
|
+
right: 16px;
|
|
5259
|
+
width: 8px;
|
|
5260
|
+
height: 8px;
|
|
5261
|
+
border-radius: var(--radius-full);
|
|
5262
|
+
background: var(--cyan);
|
|
5263
|
+
animation: ambient-pulse 3s ease-in-out infinite;
|
|
5264
|
+
z-index: var(--z-base);
|
|
5265
|
+
pointer-events: none;
|
|
5266
|
+
}
|
|
5267
|
+
|
|
5268
|
+
.ambient-indicator.busy {
|
|
5269
|
+
background: var(--amber);
|
|
5270
|
+
animation-duration: 1s;
|
|
5271
|
+
}
|
|
5272
|
+
|
|
5273
|
+
.ambient-indicator.critical {
|
|
5274
|
+
background: var(--rose);
|
|
5275
|
+
animation-duration: 0.5s;
|
|
5276
|
+
}
|
|
5277
|
+
|
|
5278
|
+
/* ── Responsive: New Views ──────────────────────── */
|
|
5279
|
+
@media (max-width: 768px) {
|
|
5280
|
+
.theater-layout {
|
|
5281
|
+
grid-template-columns: 1fr;
|
|
5282
|
+
height: auto;
|
|
5283
|
+
}
|
|
5284
|
+
|
|
5285
|
+
.theater-sidebar {
|
|
5286
|
+
max-height: 200px;
|
|
5287
|
+
}
|
|
5288
|
+
|
|
5289
|
+
.cockpit-metrics {
|
|
5290
|
+
grid-template-columns: repeat(2, 1fr);
|
|
5291
|
+
}
|
|
5292
|
+
|
|
5293
|
+
.cockpit-layout {
|
|
5294
|
+
height: auto;
|
|
5295
|
+
}
|
|
5296
|
+
}
|
|
5297
|
+
|
|
5298
|
+
/* ── Global Learnings ─────────────────────────── */
|
|
5299
|
+
.learnings-list {
|
|
5300
|
+
display: flex;
|
|
5301
|
+
flex-direction: column;
|
|
5302
|
+
gap: 0.5rem;
|
|
5303
|
+
}
|
|
5304
|
+
.learning-card {
|
|
5305
|
+
background: var(--bg-foam);
|
|
5306
|
+
border: 1px solid var(--border);
|
|
5307
|
+
border-radius: var(--radius-md);
|
|
5308
|
+
padding: 0.75rem 1rem;
|
|
5309
|
+
}
|
|
5310
|
+
.learning-header {
|
|
5311
|
+
display: flex;
|
|
5312
|
+
align-items: center;
|
|
5313
|
+
gap: 0.5rem;
|
|
5314
|
+
margin-bottom: 0.25rem;
|
|
5315
|
+
font-size: 0.75rem;
|
|
5316
|
+
}
|
|
5317
|
+
.learning-category {
|
|
5318
|
+
background: var(--cyan);
|
|
5319
|
+
color: var(--bg-abyss);
|
|
5320
|
+
padding: 0.125rem 0.5rem;
|
|
5321
|
+
border-radius: var(--radius-sm);
|
|
5322
|
+
font-weight: 600;
|
|
5323
|
+
text-transform: uppercase;
|
|
5324
|
+
font-size: 0.65rem;
|
|
5325
|
+
}
|
|
5326
|
+
.learning-source {
|
|
5327
|
+
color: var(--text-muted);
|
|
5328
|
+
}
|
|
5329
|
+
.learning-time {
|
|
5330
|
+
color: var(--text-muted);
|
|
5331
|
+
margin-left: auto;
|
|
5332
|
+
}
|
|
5333
|
+
.learning-content {
|
|
5334
|
+
font-size: 0.85rem;
|
|
5335
|
+
color: var(--text-primary);
|
|
5336
|
+
line-height: 1.4;
|
|
5337
|
+
}
|
|
5338
|
+
|
|
5339
|
+
/* ── Triage Reasoning ─────────────────────────── */
|
|
5340
|
+
.queue-triage-reasoning {
|
|
5341
|
+
padding: 0.5rem 0.75rem;
|
|
5342
|
+
}
|
|
5343
|
+
.triage-reason {
|
|
5344
|
+
color: var(--text-primary);
|
|
5345
|
+
margin-bottom: 0.25rem;
|
|
5346
|
+
font-size: 0.85rem;
|
|
5347
|
+
}
|
|
5348
|
+
.triage-detail {
|
|
5349
|
+
color: var(--text-muted);
|
|
5350
|
+
font-size: 0.8rem;
|
|
5351
|
+
}
|
|
5352
|
+
|
|
5353
|
+
/* ── Team Invite ──────────────────────────────── */
|
|
5354
|
+
.invite-result {
|
|
5355
|
+
margin-bottom: 1rem;
|
|
5356
|
+
}
|
|
5357
|
+
.invite-link-box {
|
|
5358
|
+
display: flex;
|
|
5359
|
+
align-items: center;
|
|
5360
|
+
gap: 0.5rem;
|
|
5361
|
+
background: var(--bg-foam);
|
|
5362
|
+
border: 1px solid var(--border);
|
|
5363
|
+
border-radius: var(--radius-md);
|
|
5364
|
+
padding: 0.75rem 1rem;
|
|
5365
|
+
}
|
|
5366
|
+
.invite-label {
|
|
5367
|
+
font-size: 0.8rem;
|
|
5368
|
+
color: var(--text-muted);
|
|
5369
|
+
white-space: nowrap;
|
|
5370
|
+
}
|
|
5371
|
+
.invite-url {
|
|
5372
|
+
background: var(--bg-deep);
|
|
5373
|
+
padding: 0.25rem 0.5rem;
|
|
5374
|
+
border-radius: var(--radius-sm);
|
|
5375
|
+
font-size: 0.8rem;
|
|
5376
|
+
overflow: hidden;
|
|
5377
|
+
text-overflow: ellipsis;
|
|
5378
|
+
flex: 1;
|
|
5379
|
+
}
|
|
5380
|
+
.invite-error {
|
|
5381
|
+
color: var(--rose);
|
|
5382
|
+
font-size: 0.85rem;
|
|
5383
|
+
}
|
|
5384
|
+
|
|
5385
|
+
/* ── Live Changes Panel ───────────────────────── */
|
|
5386
|
+
.theater-changes,
|
|
5387
|
+
.cockpit-changes {
|
|
5388
|
+
border: 1px solid var(--border);
|
|
5389
|
+
border-radius: var(--radius-md);
|
|
5390
|
+
overflow: hidden;
|
|
5391
|
+
margin-bottom: 0.5rem;
|
|
5392
|
+
}
|
|
5393
|
+
.theater-changes-header,
|
|
5394
|
+
.cockpit-changes-header {
|
|
5395
|
+
display: flex;
|
|
5396
|
+
align-items: center;
|
|
5397
|
+
gap: 0.5rem;
|
|
5398
|
+
padding: 0.5rem 0.75rem;
|
|
5399
|
+
background: var(--bg-foam);
|
|
5400
|
+
border-bottom: 1px solid var(--border);
|
|
5401
|
+
font-size: 0.85rem;
|
|
5402
|
+
font-weight: 600;
|
|
5403
|
+
}
|
|
5404
|
+
.theater-changes-body,
|
|
5405
|
+
.cockpit-changes-body {
|
|
5406
|
+
padding: 0.5rem 0.75rem;
|
|
5407
|
+
max-height: 200px;
|
|
5408
|
+
overflow-y: auto;
|
|
5409
|
+
}
|
|
5410
|
+
.changes-stats {
|
|
5411
|
+
display: flex;
|
|
5412
|
+
gap: 0.75rem;
|
|
5413
|
+
margin-bottom: 0.5rem;
|
|
5414
|
+
font-size: 0.8rem;
|
|
5415
|
+
}
|
|
5416
|
+
.stat-add {
|
|
5417
|
+
color: var(--green);
|
|
5418
|
+
}
|
|
5419
|
+
.stat-del {
|
|
5420
|
+
color: var(--rose);
|
|
5421
|
+
}
|
|
5422
|
+
.stat-files {
|
|
5423
|
+
color: var(--text-muted);
|
|
5424
|
+
}
|
|
5425
|
+
.changes-file-list {
|
|
5426
|
+
display: flex;
|
|
5427
|
+
flex-direction: column;
|
|
5428
|
+
gap: 0.125rem;
|
|
5429
|
+
}
|
|
5430
|
+
.changes-file-item {
|
|
5431
|
+
display: flex;
|
|
5432
|
+
align-items: center;
|
|
5433
|
+
gap: 0.5rem;
|
|
5434
|
+
font-size: 0.8rem;
|
|
5435
|
+
font-family: var(--font-mono);
|
|
5436
|
+
padding: 0.125rem 0;
|
|
5437
|
+
}
|
|
5438
|
+
.file-status {
|
|
5439
|
+
width: 1.25rem;
|
|
5440
|
+
text-align: center;
|
|
5441
|
+
font-weight: 700;
|
|
5442
|
+
}
|
|
5443
|
+
.file-added .file-status {
|
|
5444
|
+
color: var(--green);
|
|
5445
|
+
}
|
|
5446
|
+
.file-deleted .file-status {
|
|
5447
|
+
color: var(--rose);
|
|
5448
|
+
}
|
|
5449
|
+
.file-modified .file-status {
|
|
5450
|
+
color: var(--amber);
|
|
5451
|
+
}
|
|
5452
|
+
.file-path {
|
|
5453
|
+
overflow: hidden;
|
|
5454
|
+
text-overflow: ellipsis;
|
|
5455
|
+
white-space: nowrap;
|
|
5456
|
+
}
|
|
5457
|
+
.changes-diff-details {
|
|
5458
|
+
margin-top: 0.5rem;
|
|
5459
|
+
}
|
|
5460
|
+
.changes-diff-details summary {
|
|
5461
|
+
cursor: pointer;
|
|
5462
|
+
font-size: 0.8rem;
|
|
5463
|
+
color: var(--cyan);
|
|
5464
|
+
}
|
|
5465
|
+
.changes-diff {
|
|
5466
|
+
margin-top: 0.25rem;
|
|
5467
|
+
padding: 0.5rem;
|
|
5468
|
+
background: var(--bg-abyss);
|
|
5469
|
+
border-radius: var(--radius-sm);
|
|
5470
|
+
font-size: 0.75rem;
|
|
5471
|
+
max-height: 300px;
|
|
5472
|
+
overflow: auto;
|
|
5473
|
+
white-space: pre-wrap;
|
|
5474
|
+
}
|
|
5475
|
+
|
|
5476
|
+
/* ── Reasoning & Failure ──────────────────────── */
|
|
5477
|
+
.reasoning-list,
|
|
5478
|
+
.failure-analysis-list {
|
|
5479
|
+
display: flex;
|
|
5480
|
+
flex-direction: column;
|
|
5481
|
+
gap: 0.75rem;
|
|
5482
|
+
}
|
|
5483
|
+
.reasoning-entry,
|
|
5484
|
+
.failure-entry {
|
|
5485
|
+
background: var(--bg-foam);
|
|
5486
|
+
border: 1px solid var(--border);
|
|
5487
|
+
border-radius: var(--radius-md);
|
|
5488
|
+
padding: 0.75rem 1rem;
|
|
5489
|
+
}
|
|
5490
|
+
.reasoning-stage,
|
|
5491
|
+
.failure-type {
|
|
5492
|
+
font-weight: 700;
|
|
5493
|
+
font-size: 0.8rem;
|
|
5494
|
+
text-transform: uppercase;
|
|
5495
|
+
color: var(--cyan);
|
|
5496
|
+
margin-bottom: 0.25rem;
|
|
5497
|
+
}
|
|
5498
|
+
.reasoning-content {
|
|
5499
|
+
font-size: 0.85rem;
|
|
5500
|
+
line-height: 1.5;
|
|
5501
|
+
color: var(--text-primary);
|
|
5502
|
+
}
|
|
5503
|
+
.failure-desc {
|
|
5504
|
+
font-size: 0.85rem;
|
|
5505
|
+
color: var(--text-primary);
|
|
5506
|
+
margin-bottom: 0.25rem;
|
|
5507
|
+
}
|
|
5508
|
+
.failure-root-cause,
|
|
5509
|
+
.failure-fix {
|
|
5510
|
+
font-size: 0.8rem;
|
|
5511
|
+
color: var(--text-muted);
|
|
5512
|
+
margin-top: 0.25rem;
|
|
5513
|
+
}
|
|
5514
|
+
|
|
5515
|
+
/* ── Quality Gates ────────────────────────────── */
|
|
5516
|
+
.quality-gate-panel {
|
|
5517
|
+
margin-bottom: 0.75rem;
|
|
5518
|
+
border: 1px solid var(--border);
|
|
5519
|
+
border-radius: var(--radius-md);
|
|
5520
|
+
padding: 0.75rem 1rem;
|
|
5521
|
+
}
|
|
5522
|
+
.quality-gate-header {
|
|
5523
|
+
display: flex;
|
|
5524
|
+
align-items: center;
|
|
5525
|
+
gap: 0.5rem;
|
|
5526
|
+
margin-bottom: 0.5rem;
|
|
5527
|
+
font-weight: 600;
|
|
5528
|
+
}
|
|
5529
|
+
.quality-gate-rules {
|
|
5530
|
+
display: flex;
|
|
5531
|
+
flex-direction: column;
|
|
5532
|
+
gap: 0.25rem;
|
|
5533
|
+
}
|
|
5534
|
+
.quality-gate-rule {
|
|
5535
|
+
display: flex;
|
|
5536
|
+
align-items: center;
|
|
5537
|
+
gap: 0.5rem;
|
|
5538
|
+
font-size: 0.85rem;
|
|
5539
|
+
padding: 0.25rem 0.5rem;
|
|
5540
|
+
border-radius: var(--radius-sm);
|
|
5541
|
+
}
|
|
5542
|
+
.quality-gate-rule.gate-pass {
|
|
5543
|
+
background: rgba(74, 222, 128, 0.08);
|
|
5544
|
+
}
|
|
5545
|
+
.quality-gate-rule.gate-fail {
|
|
5546
|
+
background: rgba(244, 63, 94, 0.1);
|
|
5547
|
+
}
|
|
5548
|
+
.gate-status {
|
|
5549
|
+
width: 1rem;
|
|
5550
|
+
text-align: center;
|
|
5551
|
+
font-weight: 700;
|
|
5552
|
+
}
|
|
5553
|
+
.gate-pass .gate-status {
|
|
5554
|
+
color: var(--green);
|
|
5555
|
+
}
|
|
5556
|
+
.gate-fail .gate-status {
|
|
5557
|
+
color: var(--rose);
|
|
5558
|
+
}
|
|
5559
|
+
.gate-name {
|
|
5560
|
+
flex: 1;
|
|
5561
|
+
}
|
|
5562
|
+
.gate-threshold {
|
|
5563
|
+
color: var(--text-muted);
|
|
5564
|
+
font-size: 0.8rem;
|
|
5565
|
+
}
|
|
5566
|
+
.gate-value {
|
|
5567
|
+
color: var(--text-muted);
|
|
5568
|
+
font-size: 0.8rem;
|
|
5569
|
+
}
|
|
5570
|
+
|
|
5571
|
+
/* ── Approval Gates ───────────────────────────── */
|
|
5572
|
+
.approval-gate-banner {
|
|
5573
|
+
margin-bottom: 0.75rem;
|
|
5574
|
+
}
|
|
5575
|
+
.approval-gate-waiting {
|
|
5576
|
+
display: flex;
|
|
5577
|
+
align-items: center;
|
|
5578
|
+
gap: 0.75rem;
|
|
5579
|
+
background: rgba(251, 191, 36, 0.12);
|
|
5580
|
+
border: 1px solid var(--amber);
|
|
5581
|
+
border-radius: var(--radius-md);
|
|
5582
|
+
padding: 0.75rem 1rem;
|
|
5583
|
+
font-size: 0.9rem;
|
|
5584
|
+
}
|
|
5585
|
+
.approval-icon {
|
|
5586
|
+
font-size: 1.25rem;
|
|
5587
|
+
}
|
|
5588
|
+
.approval-actions {
|
|
5589
|
+
margin-left: auto;
|
|
5590
|
+
display: flex;
|
|
5591
|
+
gap: 0.5rem;
|
|
5592
|
+
}
|
|
5593
|
+
.approval-approved {
|
|
5594
|
+
background: rgba(74, 222, 128, 0.1);
|
|
5595
|
+
border: 1px solid var(--green);
|
|
5596
|
+
border-radius: var(--radius-md);
|
|
5597
|
+
padding: 0.75rem 1rem;
|
|
5598
|
+
color: var(--green);
|
|
5599
|
+
}
|
|
5600
|
+
.approval-rejected {
|
|
5601
|
+
background: rgba(244, 63, 94, 0.1);
|
|
5602
|
+
border: 1px solid var(--rose);
|
|
5603
|
+
border-radius: var(--radius-md);
|
|
5604
|
+
padding: 0.75rem 1rem;
|
|
5605
|
+
color: var(--rose);
|
|
5606
|
+
}
|
|
5607
|
+
.approval-gate-info {
|
|
5608
|
+
display: flex;
|
|
5609
|
+
align-items: center;
|
|
5610
|
+
gap: 0.5rem;
|
|
5611
|
+
background: var(--bg-foam);
|
|
5612
|
+
border: 1px solid var(--border);
|
|
5613
|
+
border-radius: var(--radius-md);
|
|
5614
|
+
padding: 0.5rem 0.75rem;
|
|
5615
|
+
font-size: 0.85rem;
|
|
5616
|
+
color: var(--text-muted);
|
|
5617
|
+
}
|
|
5618
|
+
|
|
5619
|
+
/* ── Audit Log ────────────────────────────────── */
|
|
5620
|
+
.audit-list {
|
|
5621
|
+
display: flex;
|
|
5622
|
+
flex-direction: column;
|
|
5623
|
+
gap: 0.25rem;
|
|
5624
|
+
}
|
|
5625
|
+
.audit-entry {
|
|
5626
|
+
display: flex;
|
|
5627
|
+
align-items: center;
|
|
5628
|
+
gap: 0.75rem;
|
|
5629
|
+
padding: 0.375rem 0.5rem;
|
|
5630
|
+
border-radius: var(--radius-sm);
|
|
5631
|
+
font-size: 0.85rem;
|
|
5632
|
+
border-bottom: 1px solid var(--border);
|
|
5633
|
+
}
|
|
5634
|
+
.audit-ts {
|
|
5635
|
+
color: var(--text-muted);
|
|
5636
|
+
font-size: 0.75rem;
|
|
5637
|
+
white-space: nowrap;
|
|
5638
|
+
min-width: 120px;
|
|
5639
|
+
}
|
|
5640
|
+
.audit-action {
|
|
5641
|
+
font-weight: 600;
|
|
5642
|
+
color: var(--cyan);
|
|
5643
|
+
min-width: 150px;
|
|
5644
|
+
}
|
|
5645
|
+
.audit-details {
|
|
5646
|
+
color: var(--text-muted);
|
|
5647
|
+
font-size: 0.8rem;
|
|
5648
|
+
overflow: hidden;
|
|
5649
|
+
text-overflow: ellipsis;
|
|
5650
|
+
white-space: nowrap;
|
|
5651
|
+
}
|
|
5652
|
+
|
|
5653
|
+
/* ── Webhook Config ───────────────────────────── */
|
|
5654
|
+
.webhook-item {
|
|
5655
|
+
display: flex;
|
|
5656
|
+
align-items: center;
|
|
5657
|
+
gap: 0.75rem;
|
|
5658
|
+
padding: 0.5rem 0.75rem;
|
|
5659
|
+
border: 1px solid var(--border);
|
|
5660
|
+
border-radius: var(--radius-sm);
|
|
5661
|
+
margin-bottom: 0.25rem;
|
|
5662
|
+
font-size: 0.85rem;
|
|
5663
|
+
}
|
|
5664
|
+
.webhook-label {
|
|
5665
|
+
font-weight: 600;
|
|
5666
|
+
min-width: 80px;
|
|
5667
|
+
}
|
|
5668
|
+
.webhook-url {
|
|
5669
|
+
flex: 1;
|
|
5670
|
+
color: var(--text-muted);
|
|
5671
|
+
overflow: hidden;
|
|
5672
|
+
text-overflow: ellipsis;
|
|
5673
|
+
white-space: nowrap;
|
|
5674
|
+
font-family: var(--font-mono);
|
|
5675
|
+
font-size: 0.75rem;
|
|
5676
|
+
}
|
|
5677
|
+
.webhook-events {
|
|
5678
|
+
color: var(--text-muted);
|
|
5679
|
+
font-size: 0.75rem;
|
|
5680
|
+
}
|
|
5681
|
+
.btn-danger {
|
|
5682
|
+
background: var(--rose);
|
|
5683
|
+
color: white;
|
|
5684
|
+
border: none;
|
|
5685
|
+
padding: 0.25rem 0.5rem;
|
|
5686
|
+
border-radius: var(--radius-sm);
|
|
5687
|
+
cursor: pointer;
|
|
5688
|
+
font-size: 0.75rem;
|
|
5689
|
+
}
|
|
5690
|
+
|
|
5691
|
+
/* ── Theme Toggle ─────────────────────────────── */
|
|
5692
|
+
.theme-toggle {
|
|
5693
|
+
background: transparent;
|
|
5694
|
+
border: 1px solid var(--card-border);
|
|
5695
|
+
color: var(--text-secondary);
|
|
5696
|
+
padding: 4px 10px;
|
|
5697
|
+
border-radius: var(--radius-full);
|
|
5698
|
+
cursor: pointer;
|
|
5699
|
+
font-size: 0.75rem;
|
|
5700
|
+
font-family: var(--font-body);
|
|
5701
|
+
transition: all var(--transition-fast);
|
|
5702
|
+
white-space: nowrap;
|
|
5703
|
+
}
|
|
5704
|
+
.theme-toggle:hover {
|
|
5705
|
+
color: var(--cyan);
|
|
5706
|
+
border-color: var(--cyan);
|
|
5707
|
+
}
|
|
5708
|
+
|
|
5709
|
+
/* ── Integrations ─────────────────────────────── */
|
|
5710
|
+
.integrations-grid {
|
|
5711
|
+
display: grid;
|
|
5712
|
+
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
|
5713
|
+
gap: 0.75rem;
|
|
5714
|
+
}
|
|
5715
|
+
.integration-card {
|
|
5716
|
+
background: var(--card-bg);
|
|
5717
|
+
border: 1px solid var(--card-border);
|
|
5718
|
+
border-radius: var(--radius-md);
|
|
5719
|
+
padding: 1rem;
|
|
5720
|
+
}
|
|
5721
|
+
.integration-card.integration-active {
|
|
5722
|
+
border-color: var(--green);
|
|
5723
|
+
}
|
|
5724
|
+
.integration-card.integration-inactive {
|
|
5725
|
+
border-color: var(--text-muted);
|
|
5726
|
+
opacity: 0.7;
|
|
5727
|
+
}
|
|
5728
|
+
.integration-name {
|
|
5729
|
+
display: flex;
|
|
5730
|
+
align-items: center;
|
|
5731
|
+
gap: 0.5rem;
|
|
5732
|
+
font-weight: 600;
|
|
5733
|
+
font-size: 0.9rem;
|
|
5734
|
+
margin-bottom: 0.25rem;
|
|
5735
|
+
}
|
|
5736
|
+
.integration-status {
|
|
5737
|
+
font-size: 0.8rem;
|
|
5738
|
+
color: var(--text-muted);
|
|
5739
|
+
}
|
|
5740
|
+
.integration-detail {
|
|
5741
|
+
font-size: 0.75rem;
|
|
5742
|
+
color: var(--text-muted);
|
|
5743
|
+
margin-top: 0.25rem;
|
|
5744
|
+
}
|
|
5745
|
+
|
|
5746
|
+
/* ── Admin Debug Panel ────────────────────────── */
|
|
5747
|
+
.admin-debug-output {
|
|
5748
|
+
max-height: 400px;
|
|
5749
|
+
overflow: auto;
|
|
5750
|
+
}
|
|
5751
|
+
.admin-debug-pre {
|
|
5752
|
+
background: var(--bg-deep);
|
|
5753
|
+
border: 1px solid var(--card-border);
|
|
5754
|
+
border-radius: var(--radius-md);
|
|
5755
|
+
padding: 1rem;
|
|
5756
|
+
font-family: var(--font-mono);
|
|
5757
|
+
font-size: 0.75rem;
|
|
5758
|
+
white-space: pre-wrap;
|
|
5759
|
+
word-break: break-all;
|
|
5760
|
+
max-height: 380px;
|
|
5761
|
+
overflow: auto;
|
|
5762
|
+
}
|
|
5763
|
+
|
|
5764
|
+
/* ── Claim Panel ──────────────────────────────── */
|
|
5765
|
+
.claim-panel {
|
|
5766
|
+
margin-bottom: 2rem;
|
|
5767
|
+
}
|
|
5768
|
+
|
|
5769
|
+
/* ── Error Boundary ───────────────────────────── */
|
|
5770
|
+
.tab-error-boundary {
|
|
5771
|
+
margin-bottom: 1rem;
|
|
5772
|
+
}
|
|
5773
|
+
.error-boundary-content {
|
|
5774
|
+
display: flex;
|
|
5775
|
+
align-items: flex-start;
|
|
5776
|
+
gap: 0.75rem;
|
|
5777
|
+
background: rgba(244, 63, 94, 0.08);
|
|
5778
|
+
border: 1px solid var(--rose);
|
|
5779
|
+
border-radius: var(--radius-md);
|
|
5780
|
+
padding: 1rem;
|
|
5781
|
+
}
|
|
5782
|
+
.error-boundary-icon {
|
|
5783
|
+
font-size: 1.5rem;
|
|
5784
|
+
flex-shrink: 0;
|
|
5785
|
+
}
|
|
5786
|
+
.error-boundary-msg {
|
|
5787
|
+
margin-top: 0.25rem;
|
|
5788
|
+
font-family: var(--font-mono);
|
|
5789
|
+
font-size: 0.75rem;
|
|
5790
|
+
color: var(--rose);
|
|
5791
|
+
white-space: pre-wrap;
|
|
5792
|
+
word-break: break-all;
|
|
5793
|
+
}
|
|
5794
|
+
.error-boundary-retry {
|
|
5795
|
+
margin-left: auto;
|
|
5796
|
+
flex-shrink: 0;
|
|
5797
|
+
}
|
|
5798
|
+
|
|
5799
|
+
/* ── Offline / Stale Data Banners ─────────────── */
|
|
5800
|
+
.offline-banner {
|
|
5801
|
+
display: flex;
|
|
5802
|
+
align-items: center;
|
|
5803
|
+
gap: 0.75rem;
|
|
5804
|
+
background: rgba(244, 63, 94, 0.1);
|
|
5805
|
+
border: 1px solid var(--rose);
|
|
5806
|
+
border-radius: var(--radius-md);
|
|
5807
|
+
padding: 0.75rem 1rem;
|
|
5808
|
+
margin-bottom: 1rem;
|
|
5809
|
+
font-size: 0.9rem;
|
|
5810
|
+
color: var(--rose);
|
|
5811
|
+
}
|
|
5812
|
+
.offline-icon {
|
|
5813
|
+
font-size: 1.25rem;
|
|
5814
|
+
}
|
|
5815
|
+
.stale-data-banner {
|
|
5816
|
+
display: flex;
|
|
5817
|
+
align-items: center;
|
|
5818
|
+
gap: 0.5rem;
|
|
5819
|
+
background: rgba(251, 191, 36, 0.08);
|
|
5820
|
+
border: 1px solid var(--amber);
|
|
5821
|
+
border-radius: var(--radius-md);
|
|
5822
|
+
padding: 0.5rem 1rem;
|
|
5823
|
+
margin-bottom: 0.75rem;
|
|
5824
|
+
font-size: 0.8rem;
|
|
5825
|
+
color: var(--amber);
|
|
5826
|
+
}
|
|
5827
|
+
.stale-icon {
|
|
5828
|
+
font-size: 1rem;
|
|
5829
|
+
}
|